12855 lines
606 KiB
Plaintext
12855 lines
606 KiB
Plaintext
###############################################################################
|
|
#
|
|
# IAR C/C++ Compiler V10.30.1.6000 for 8051 21/May/2019 08:36:52
|
|
# Copyright 2004-2018 IAR Systems AB.
|
|
# PC-locked license - IAR Embedded Workbench for 8051
|
|
#
|
|
# Core = plain
|
|
# Code model = banked
|
|
# Data model = large
|
|
# Calling convention = xdata reentrant
|
|
# Constant location = data_rom
|
|
# Dptr setup = 1,16
|
|
#
|
|
# Source file =
|
|
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\stack\zdo\ZDObject.c
|
|
# Command line =
|
|
# -f C:\Users\97110\AppData\Local\Temp\EW9532.tmp
|
|
# (C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\stack\zdo\ZDObject.c
|
|
# -D NWK_AUTO_POLL -D ZTOOL_P1 -D MT_TASK -D xMT_SYS_FUNC -D MT_ZDO_FUNC
|
|
# -D SAPP_ZSTACK_DEMO -lC
|
|
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\Demo\List
|
|
# -lA
|
|
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\Demo\List
|
|
# --diag_suppress Pe001,Pa010 -o
|
|
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\Demo\Obj
|
|
# -e --debug --core=plain --dptr=16,1 --data_model=large
|
|
# --code_model=banked --calling_convention=xdata_reentrant
|
|
# --place_constants=data_rom --nr_virtual_regs 8 -f
|
|
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wEndev.cfg
|
|
# (-DCPU32MHZ -DROOT=__near_func -DMAC_CFG_TX_DATA_MAX=3
|
|
# -DMAC_CFG_TX_MAX=6 -DMAC_CFG_RX_MAX=3) -f
|
|
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wConfig.cfg
|
|
# (-DZIGBEEPRO -DSECURE=0 -DZG_SECURE_DYNAMIC=0 -DREFLECTOR
|
|
# -DDEFAULT_CHANLIST=0x00000800 -DZDAPP_CONFIG_PAN_ID=0x0031
|
|
# -DNWK_START_DELAY=100 -DEXTENDED_JOINING_RANDOM_MASK=0x007F
|
|
# -DBEACON_REQUEST_DELAY=100 -DBEACON_REQ_DELAY_MASK=0x00FF
|
|
# -DLINK_STATUS_JITTER_MASK=0x007F -DROUTE_EXPIRY_TIME=30
|
|
# -DAPSC_ACK_WAIT_DURATION_POLLED=3000 -DNWK_INDIRECT_MSG_TIMEOUT=7
|
|
# -DMAX_RREQ_ENTRIES=8 -DAPSC_MAX_FRAME_RETRIES=3
|
|
# -DNWK_MAX_DATA_RETRIES=2 -DMAX_POLL_FAILURE_RETRIES=2 -DMAX_BCAST=9
|
|
# -DAPS_MAX_GROUPS=16 -DMAX_RTG_ENTRIES=40 -DNWK_MAX_BINDING_ENTRIES=4
|
|
# -DMAX_BINDING_CLUSTER_IDS=4 "-DDEFAULT_KEY={0x01, 0x03, 0x05, 0x07,
|
|
# 0x09, 0x0B, 0x0D, 0x0F, 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C,
|
|
# 0x0D}" -DMAC_MAX_FRAME_SIZE=116 -DZDNWKMGR_MIN_TRANSMISSIONS=20
|
|
# "-DCONST=const __code" -DGENERIC=__generic -DRFD_RCVC_ALWAYS_ON=FALSE
|
|
# -DPOLL_RATE=1000 -DQUEUED_POLL_RATE=100 -DRESPONSE_POLL_RATE=100
|
|
# -DREJOIN_POLL_RATE=440) -I
|
|
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\
|
|
# -I
|
|
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\Source\
|
|
# -I
|
|
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\ZMain\TI2530DB\
|
|
# -I
|
|
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\include\
|
|
# -I
|
|
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\target\CC2530EB\
|
|
# -I
|
|
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\include\
|
|
# -I
|
|
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\high_level\
|
|
# -I
|
|
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\
|
|
# -I
|
|
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\single_chip\
|
|
# -I
|
|
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mt\
|
|
# -I
|
|
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\osal\include\
|
|
# -I
|
|
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\saddr\
|
|
# -I
|
|
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\sdata\
|
|
# -I
|
|
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\af\
|
|
# -I
|
|
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\nwk\
|
|
# -I
|
|
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sapi\
|
|
# -I
|
|
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sec\
|
|
# -I
|
|
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sys\
|
|
# -I
|
|
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\zdo\
|
|
# -I
|
|
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\
|
|
# -I
|
|
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\f8w\
|
|
# -Ohz --require_prototypes --no_code_motion)
|
|
# Locale = Chinese (Simplified)_CHN.936
|
|
# List file =
|
|
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\Demo\List\ZDObject.lst
|
|
# Object file =
|
|
# C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\Demo\Obj\ZDObject.r51
|
|
#
|
|
###############################################################################
|
|
|
|
C:\Users\97110\Desktop\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\stack\zdo\ZDObject.c
|
|
1 /**************************************************************************************************
|
|
2 Filename: ZDObject.c
|
|
3 Revised: $Date: 2011-07-13 10:55:53 -0700 (Wed, 13 Jul 2011) $
|
|
4 Revision: $Revision: 26766 $
|
|
5
|
|
6 Description: This is the Zigbee Device Object.
|
|
7
|
|
8
|
|
9 Copyright 2004-2011 Texas Instruments Incorporated. All rights reserved.
|
|
10
|
|
11 IMPORTANT: Your use of this Software is limited to those specific rights
|
|
12 granted under the terms of a software license agreement between the user
|
|
13 who downloaded the software, his/her employer (which must be your employer)
|
|
14 and Texas Instruments Incorporated (the "License"). You may not use this
|
|
15 Software unless you agree to abide by the terms of the License. The License
|
|
16 limits your use, and you acknowledge, that the Software may not be modified,
|
|
17 copied or distributed unless embedded on a Texas Instruments microcontroller
|
|
18 or used solely and exclusively in conjunction with a Texas Instruments radio
|
|
19 frequency transceiver, which is integrated into your product. Other than for
|
|
20 the foregoing purpose, you may not use, reproduce, copy, prepare derivative
|
|
21 works of, modify, distribute, perform, display or sell this Software and/or
|
|
22 its documentation for any purpose.
|
|
23
|
|
24 YOU FURTHER ACKNOWLEDGE AND AGREE THAT THE SOFTWARE AND DOCUMENTATION ARE
|
|
25 PROVIDED “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
|
|
26 INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, TITLE,
|
|
27 NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL
|
|
28 TEXAS INSTRUMENTS OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER CONTRACT,
|
|
29 NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR OTHER
|
|
30 LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES
|
|
31 INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE
|
|
32 OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT
|
|
33 OF SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES
|
|
34 (INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.
|
|
35
|
|
36 Should you have any questions regarding your right to use this Software,
|
|
37 contact Texas Instruments Incorporated at www.TI.com.
|
|
38 **************************************************************************************************/
|
|
39
|
|
40 /*********************************************************************
|
|
41 * INCLUDES
|
|
42 */
|
|
43 #include "ZComdef.h"
|
|
44 #include "OSAL.h"
|
|
45 #include "OSAL_Nv.h"
|
|
46 #include "rtg.h"
|
|
47 #include "NLMEDE.h"
|
|
48 #include "nwk_globals.h"
|
|
49 #include "APS.h"
|
|
50 #include "APSMEDE.h"
|
|
51 #include "AssocList.h"
|
|
52 #include "BindingTable.h"
|
|
53 #include "AddrMgr.h"
|
|
54 #include "AF.h"
|
|
55 #include "ZDObject.h"
|
|
56 #include "ZDProfile.h"
|
|
57 #include "ZDConfig.h"
|
|
58 #include "ZDSecMgr.h"
|
|
59 #include "ZDApp.h"
|
|
60 #include "nwk_util.h" // NLME_IsAddressBroadcast()
|
|
61 #include "ZGlobals.h"
|
|
62 #if defined MT_ZDO_CB_FUNC
|
|
63 #include "MT.h"
|
|
64 #endif
|
|
65
|
|
66 #if defined( LCD_SUPPORTED )
|
|
67 #include "OnBoard.h"
|
|
68 #endif
|
|
69
|
|
70 /* HAL */
|
|
71 #include "hal_lcd.h"
|
|
72
|
|
73 /*********************************************************************
|
|
74 * MACROS
|
|
75 */
|
|
76
|
|
77 /*********************************************************************
|
|
78 * CONSTANTS
|
|
79 */
|
|
80 // NLME Stub Implementations
|
|
81 #define ZDO_ProcessMgmtPermitJoinTimeout NLME_PermitJoiningTimeout
|
|
82
|
|
83 // Status fields used by ZDO_ProcessMgmtRtgReq
|
|
84 #define ZDO_MGMT_RTG_ENTRY_ACTIVE 0x00
|
|
85 #define ZDO_MGMT_RTG_ENTRY_DISCOVERY_UNDERWAY 0x01
|
|
86 #define ZDO_MGMT_RTG_ENTRY_DISCOVERY_FAILED 0x02
|
|
87 #define ZDO_MGMT_RTG_ENTRY_INACTIVE 0x03
|
|
88
|
|
89 /*********************************************************************
|
|
90 * TYPEDEFS
|
|
91 */
|
|
92 #if defined ( REFLECTOR )
|
|
93 typedef struct
|
|
94 {
|
|
95 byte SrcTransSeq;
|
|
96 zAddrType_t SrcAddr;
|
|
97 uint16 LocalCoordinator;
|
|
98 byte epIntf;
|
|
99 uint16 ProfileID;
|
|
100 byte numInClusters;
|
|
101 uint16 *inClusters;
|
|
102 byte numOutClusters;
|
|
103 uint16 *outClusters;
|
|
104 byte SecurityUse;
|
|
105 byte status;
|
|
106 } ZDO_EDBind_t;
|
|
107 #endif // defined ( REFLECTOR )
|
|
108
|
|
109 enum
|
|
110 {
|
|
111 ZDMATCH_INIT, // Initialized
|
|
112 ZDMATCH_WAIT_REQ, // Received first request, waiting for second
|
|
113 ZDMATCH_SENDING_BINDS // Received both requests, sending unbind/binds
|
|
114 };
|
|
115
|
|
116 enum
|
|
117 {
|
|
118 ZDMATCH_SENDING_NOT,
|
|
119 ZDMATCH_SENDING_UNBIND,
|
|
120 ZDMATCH_SENDING_BIND
|
|
121 };
|
|
122
|
|
123 /*********************************************************************
|
|
124 * GLOBAL VARIABLES
|
|
125 */
|
|
126
|
|
127 /*********************************************************************
|
|
128 * EXTERNAL VARIABLES
|
|
129 */
|
|
130
|
|
131 /*********************************************************************
|
|
132 * EXTERNAL FUNCTIONS
|
|
133 */
|
|
134
|
|
135 /*********************************************************************
|
|
136 * LOCAL VARIABLES
|
|
137 */
|
|
|
|
\ In segment XDATA_Z, align 1, keep-with-next
|
|
138 static uint16 ZDOBuildBuf[26]; // temp area to build data without allocation
|
|
\ ZDOBuildBuf:
|
|
\ 000000 DS 52
|
|
\ 000034 REQUIRE __INIT_XDATA_Z
|
|
139
|
|
140 #if defined ( REFLECTOR )
|
|
|
|
\ In segment XDATA_Z, align 1, keep-with-next
|
|
141 static ZDO_EDBind_t *ZDO_EDBind; // Null when not used
|
|
\ ZDO_EDBind:
|
|
\ 000000 DS 2
|
|
\ 000002 REQUIRE __INIT_XDATA_Z
|
|
142 #endif
|
|
143
|
|
144 #if defined ( MANAGED_SCAN )
|
|
145 uint32 managedScanNextChannel = 0;
|
|
146 uint32 managedScanChannelMask = 0;
|
|
147 uint8 managedScanTimesPerChannel = 0;
|
|
148 #endif
|
|
149
|
|
|
|
\ In segment XDATA_Z, align 1, keep-with-next
|
|
150 ZDMatchEndDeviceBind_t *matchED = (ZDMatchEndDeviceBind_t *)NULL;
|
|
\ matchED:
|
|
\ 000000 DS 2
|
|
\ 000002 REQUIRE __INIT_XDATA_Z
|
|
151
|
|
|
|
\ In segment XDATA_Z, align 1, keep-with-next
|
|
152 uint32 apsChannelMask = 0;
|
|
\ apsChannelMask:
|
|
\ 000000 DS 4
|
|
\ 000004 REQUIRE __INIT_XDATA_Z
|
|
153
|
|
154 /*********************************************************************
|
|
155 * LOCAL FUNCTIONS
|
|
156 */
|
|
157 static void ZDODeviceSetup( void );
|
|
158 #if defined ( MANAGED_SCAN )
|
|
159 static void ZDOManagedScan_Next( void );
|
|
160 #endif
|
|
161 #if defined ( REFLECTOR )
|
|
162 static void ZDO_RemoveEndDeviceBind( void );
|
|
163 static void ZDO_SendEDBindRsp( byte TransSeq, zAddrType_t *dstAddr, byte Status, byte secUse );
|
|
164 #endif
|
|
165 static byte ZDO_CompareClusterLists( byte numList1, uint16 *list1,
|
|
166 byte numList2, uint16 *list2, uint16 *pMatches );
|
|
167 static void ZDO_RemoveMatchMemory( void );
|
|
168 static uint8 ZDO_CopyMatchInfo( ZDEndDeviceBind_t *destReq, ZDEndDeviceBind_t *srcReq );
|
|
169 static void ZDO_EndDeviceBindMatchTimeoutCB( void );
|
|
170 uint8 *ZDO_ConvertOTAClusters( uint8 cnt, uint8 *inBuf, uint16 *outList );
|
|
171 static void zdoSendStateChangeMsg(uint8 state, uint8 taskId);
|
|
172
|
|
173 /*********************************************************************
|
|
174 * @fn ZDO_Init
|
|
175 *
|
|
176 * @brief ZDObject and ZDProfile initialization.
|
|
177 *
|
|
178 * @param none
|
|
179 *
|
|
180 * @return none
|
|
181 */
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
182 void ZDO_Init( void )
|
|
\ ZDO_Init:
|
|
183 {
|
|
\ 000000 C082 PUSH DPL
|
|
\ 000002 C083 PUSH DPH
|
|
\ 000004 ; Saved register size: 2
|
|
\ 000004 ; Auto size: 0
|
|
184 // Initialize ZD items
|
|
185 #if defined ( REFLECTOR )
|
|
186 ZDO_EDBind = NULL;
|
|
\ 000004 90.... MOV DPTR,#ZDO_EDBind
|
|
\ 000007 E4 CLR A
|
|
\ 000008 F0 MOVX @DPTR,A
|
|
\ 000009 A3 INC DPTR
|
|
\ 00000A F0 MOVX @DPTR,A
|
|
187 #endif
|
|
188
|
|
189 // Initialize default ZDO_UseExtendedPANID to the APS one.
|
|
190 osal_cpyExtAddr( ZDO_UseExtendedPANID, AIB_apsUseExtendedPANID );
|
|
\ 00000B ; Setup parameters for call to function sAddrExtCpy
|
|
\ 00000B 7C.. MOV R4,#AIB_apsUseExtendedPANID & 0xff
|
|
\ 00000D 7D.. MOV R5,#(AIB_apsUseExtendedPANID >> 8) & 0xff
|
|
\ 00000F 7A.. MOV R2,#ZDO_UseExtendedPANID & 0xff
|
|
\ 000011 7B.. MOV R3,#(ZDO_UseExtendedPANID >> 8) & 0xff
|
|
\ 000013 12.... LCALL `??sAddrExtCpy::?relay`; Banked call to: sAddrExtCpy
|
|
191
|
|
192 // Setup the device - type of device to create.
|
|
193 ZDODeviceSetup();
|
|
\ 000016 90.... MOV DPTR,#zgDeviceLogicalType
|
|
\ 000019 E0 MOVX A,@DPTR
|
|
\ 00001A 7004 JNZ ??ZDO_Init_0
|
|
\ 00001C 7900 MOV R1,#0x0
|
|
\ 00001E 8002 SJMP ??ZDO_Init_1
|
|
\ ??ZDO_Init_0:
|
|
\ 000020 7901 MOV R1,#0x1
|
|
\ ??ZDO_Init_1:
|
|
\ 000022 ; Setup parameters for call to function APS_ReflectorInit
|
|
\ 000022 12.... LCALL `??APS_ReflectorInit::?relay`; Banked call to: APS_ReflectorInit
|
|
\ 000025 ; Setup parameters for call to function NLME_DeviceJoiningInit
|
|
\ 000025 12.... LCALL `??NLME_DeviceJoiningInit::?relay`; Banked call to: NLME_DeviceJoiningInit
|
|
194 }
|
|
\ 000028 02.... LJMP ?Subroutine0 & 0xFFFF
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine0:
|
|
\ 000000 D083 POP DPH
|
|
\ 000002 D082 POP DPL
|
|
\ 000004 02.... LJMP ?BRET
|
|
195
|
|
196 #if defined ( MANAGED_SCAN )
|
|
197 /*********************************************************************
|
|
198 * @fn ZDOManagedScan_Next()
|
|
199 *
|
|
200 * @brief Setup a managed scan.
|
|
201 *
|
|
202 * @param none
|
|
203 *
|
|
204 * @return none
|
|
205 */
|
|
206 static void ZDOManagedScan_Next( void )
|
|
207 {
|
|
208 // Is it the first time
|
|
209 if ( managedScanNextChannel == 0 && managedScanTimesPerChannel == 0 )
|
|
210 {
|
|
211 // Setup the defaults
|
|
212 managedScanNextChannel = 1;
|
|
213
|
|
214 while( managedScanNextChannel && (zgDefaultChannelList & managedScanNextChannel) == 0 )
|
|
215 managedScanNextChannel <<= 1;
|
|
216
|
|
217 managedScanChannelMask = managedScanNextChannel;
|
|
218 managedScanTimesPerChannel = MANAGEDSCAN_TIMES_PRE_CHANNEL;
|
|
219 }
|
|
220 else
|
|
221 {
|
|
222 // Do we need to go to the next channel
|
|
223 if ( managedScanTimesPerChannel == 0 )
|
|
224 {
|
|
225 // Find next active channel
|
|
226 managedScanChannelMask = managedScanNextChannel;
|
|
227 managedScanTimesPerChannel = MANAGEDSCAN_TIMES_PRE_CHANNEL;
|
|
228 }
|
|
229 else
|
|
230 {
|
|
231 managedScanTimesPerChannel--;
|
|
232
|
|
233 if ( managedScanTimesPerChannel == 0 )
|
|
234 {
|
|
235 managedScanNextChannel <<= 1;
|
|
236 while( managedScanNextChannel && (zgDefaultChannelList & managedScanNextChannel) == 0 )
|
|
237 managedScanNextChannel <<= 1;
|
|
238
|
|
239 if ( managedScanNextChannel == 0 )
|
|
240 zdoDiscCounter = NUM_DISC_ATTEMPTS + 1; // Stop
|
|
241 }
|
|
242 }
|
|
243 }
|
|
244 }
|
|
245 #endif // MANAGED_SCAN
|
|
246
|
|
247 /*********************************************************************
|
|
248 * @fn ZDODeviceSetup()
|
|
249 *
|
|
250 * @brief Call set functions depending on the type of device compiled.
|
|
251 *
|
|
252 * @param none
|
|
253 *
|
|
254 * @return none
|
|
255 */
|
|
256 static void ZDODeviceSetup( void )
|
|
257 {
|
|
258 if ( ZG_BUILD_COORDINATOR_TYPE )
|
|
259 {
|
|
260 NLME_CoordinatorInit();
|
|
261 }
|
|
262
|
|
263 #if defined ( REFLECTOR )
|
|
264 APS_ReflectorInit( (ZG_DEVICE_COORDINATOR_TYPE) ? APS_REFLECTOR_PUBLIC : APS_REFLECTOR_PRIVATE );
|
|
265 #endif
|
|
266
|
|
267 if ( ZG_BUILD_JOINING_TYPE )
|
|
268 {
|
|
269 NLME_DeviceJoiningInit();
|
|
270 }
|
|
271 }
|
|
272
|
|
273 /*********************************************************************
|
|
274 * @fn ZDO_StartDevice
|
|
275 *
|
|
276 * @brief This function starts a device in a network.
|
|
277 *
|
|
278 * @param logicalType - Device type to start
|
|
279 * startMode - indicates mode of device startup
|
|
280 * beaconOrder - indicates time betwen beacons
|
|
281 * superframeOrder - indicates length of active superframe
|
|
282 *
|
|
283 * @return none
|
|
284 */
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
285 void ZDO_StartDevice( byte logicalType, devStartModes_t startMode, byte beaconOrder, byte superframeOrder )
|
|
\ ZDO_StartDevice:
|
|
286 {
|
|
\ 000000 74F7 MOV A,#-0x9
|
|
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
|
\ 000005 ; Saved register size: 9
|
|
\ 000005 ; Auto size: 11
|
|
\ 000005 74F5 MOV A,#-0xb
|
|
\ 000007 12.... LCALL ?ALLOC_XSTACK8
|
|
\ 00000A E9 MOV A,R1
|
|
\ 00000B FF MOV R7,A
|
|
\ 00000C EA MOV A,R2
|
|
\ 00000D FE MOV R6,A
|
|
287 ZStatus_t ret;
|
|
288 #if defined ( ZIGBEE_FREQ_AGILITY )
|
|
289 static uint8 discRetries = 0;
|
|
290 #endif
|
|
291 #if defined ( ZIGBEE_COMMISSIONING )
|
|
292 static uint8 scanCnt = 0;
|
|
293 #endif
|
|
294
|
|
295 ret = ZUnsupportedMode;
|
|
296
|
|
297 if ( ZG_BUILD_COORDINATOR_TYPE && logicalType == NODETYPE_COORDINATOR )
|
|
298 {
|
|
299 if ( startMode == MODE_HARD )
|
|
300 {
|
|
301 devState = DEV_COORD_STARTING;
|
|
302 ret = NLME_NetworkFormationRequest( zgConfigPANID, zgApsUseExtendedPANID, zgDefaultChannelList,
|
|
303 zgDefaultStartingScanDuration, beaconOrder,
|
|
304 superframeOrder, false );
|
|
305 }
|
|
306 else if ( startMode == MODE_RESUME )
|
|
307 {
|
|
308 // Just start the coordinator
|
|
309 devState = DEV_COORD_STARTING;
|
|
310 ret = NLME_StartRouterRequest( beaconOrder, beaconOrder, false );
|
|
311 }
|
|
312 else
|
|
313 {
|
|
314 #if defined( LCD_SUPPORTED )
|
|
315 HalLcdWriteScreen( "StartDevice ERR", "MODE unknown" );
|
|
316 #endif
|
|
317 }
|
|
318 }
|
|
319
|
|
320 if ( ZG_BUILD_JOINING_TYPE && (logicalType == NODETYPE_ROUTER || logicalType == NODETYPE_DEVICE) )
|
|
\ 00000E 7401 MOV A,#0x1
|
|
\ 000010 6F XRL A,R7
|
|
\ 000011 6008 JZ ??ZDO_StartDevice_0
|
|
\ 000013 7402 MOV A,#0x2
|
|
\ 000015 6F XRL A,R7
|
|
\ 000016 6003 JZ $+5
|
|
\ 000018 02.... LJMP ??ZDO_StartDevice_1 & 0xFFFF
|
|
321 {
|
|
322 if ( (startMode == MODE_JOIN) || (startMode == MODE_REJOIN) )
|
|
\ ??ZDO_StartDevice_0:
|
|
\ 00001B EA MOV A,R2
|
|
\ 00001C 6005 JZ ??ZDO_StartDevice_2
|
|
\ 00001E 7403 MOV A,#0x3
|
|
\ 000020 6E XRL A,R6
|
|
\ 000021 7037 JNZ ??ZDO_StartDevice_3
|
|
323 {
|
|
324 devState = DEV_NWK_DISC;
|
|
\ ??ZDO_StartDevice_2:
|
|
\ 000023 90.... MOV DPTR,#devState
|
|
\ 000026 7402 MOV A,#0x2
|
|
\ 000028 12.... LCALL ?Subroutine42 & 0xFFFF
|
|
325
|
|
326 #if defined( MANAGED_SCAN )
|
|
327 ZDOManagedScan_Next();
|
|
328 ret = NLME_NetworkDiscoveryRequest( managedScanChannelMask, BEACON_ORDER_15_MSEC );
|
|
329 #else
|
|
330 ret = NLME_NetworkDiscoveryRequest( zgDefaultChannelList, zgDefaultStartingScanDuration );
|
|
\ ??CrossCallReturnLabel_58:
|
|
\ 00002B 12.... LCALL ?XLOAD_R2345
|
|
\ 00002E 12.... LCALL `??NLME_NetworkDiscoveryRequest::?relay`; Banked call to: NLME_NetworkDiscoveryRequest
|
|
\ 000031 E9 MOV A,R1
|
|
\ 000032 F8 MOV R0,A
|
|
331 #if defined ( ZIGBEE_FREQ_AGILITY )
|
|
332 if ( !( ZDO_Config_Node_Descriptor.CapabilityFlags & CAPINFO_RCVR_ON_IDLE ) &&
|
|
333 ( ret == ZSuccess ) && ( ++discRetries == 4 ) )
|
|
334 {
|
|
335 // For devices with RxOnWhenIdle equals to FALSE, any network channel
|
|
336 // change will not be recieved. On these devices or routers that have
|
|
337 // lost the network, an active scan shall be conducted on the Default
|
|
338 // Channel list using the extended PANID to find the network. If the
|
|
339 // extended PANID isn't found using the Default Channel list, an scan
|
|
340 // should be completed using all channels.
|
|
341 zgDefaultChannelList = MAX_CHANNELS_24GHZ;
|
|
342 }
|
|
343 #endif // ZIGBEE_FREQ_AGILITY
|
|
344 #if defined ( ZIGBEE_COMMISSIONING )
|
|
345 if (startMode == MODE_REJOIN && scanCnt++ >= 5 )
|
|
\ 000033 7403 MOV A,#0x3
|
|
\ 000035 6E XRL A,R6
|
|
\ 000036 706A JNZ ??ZDO_StartDevice_4
|
|
\ 000038 90.... MOV DPTR,#??scanCnt
|
|
\ 00003B E0 MOVX A,@DPTR
|
|
\ 00003C F9 MOV R1,A
|
|
\ 00003D 7401 MOV A,#0x1
|
|
\ 00003F 29 ADD A,R1
|
|
\ 000040 F0 MOVX @DPTR,A
|
|
\ 000041 E9 MOV A,R1
|
|
\ 000042 C3 CLR C
|
|
\ 000043 9405 SUBB A,#0x5
|
|
\ 000045 405B JC ??ZDO_StartDevice_4
|
|
346 {
|
|
347 // When ApsUseExtendedPanID is commissioned to a non zero value via
|
|
348 // application specific means, the device shall conduct an active scan
|
|
349 // on the Default Channel list and join the PAN with the same
|
|
350 // ExtendedPanID. If the PAN is not found, an scan should be completed
|
|
351 // on all channels.
|
|
352 // When devices rejoin the network and the PAN is not found from
|
|
353 zgDefaultChannelList = MAX_CHANNELS_24GHZ;
|
|
\ 000047 90.... MOV DPTR,#zgDefaultChannelList
|
|
\ 00004A E4 CLR A
|
|
\ 00004B F0 MOVX @DPTR,A
|
|
\ 00004C A3 INC DPTR
|
|
\ 00004D 74F8 MOV A,#-0x8
|
|
\ 00004F F0 MOVX @DPTR,A
|
|
\ 000050 A3 INC DPTR
|
|
\ 000051 74FF MOV A,#-0x1
|
|
\ 000053 F0 MOVX @DPTR,A
|
|
\ 000054 A3 INC DPTR
|
|
\ 000055 7407 MOV A,#0x7
|
|
\ 000057 F0 MOVX @DPTR,A
|
|
\ 000058 8048 SJMP ??ZDO_StartDevice_4
|
|
354 }
|
|
355 #endif // ZIGBEE_COMMISSIONING
|
|
356 #endif
|
|
357 }
|
|
358 else if ( startMode == MODE_RESUME )
|
|
\ ??ZDO_StartDevice_3:
|
|
\ 00005A 7401 MOV A,#0x1
|
|
\ 00005C 6E XRL A,R6
|
|
\ 00005D 7046 JNZ ??ZDO_StartDevice_1
|
|
359 {
|
|
360 if ( logicalType == NODETYPE_ROUTER )
|
|
\ 00005F 7401 MOV A,#0x1
|
|
\ 000061 6F XRL A,R7
|
|
\ 000062 90.... MOV DPTR,#devState
|
|
\ 000065 702E JNZ ??ZDO_StartDevice_5
|
|
361 {
|
|
362 ZMacScanCnf_t scanCnf;
|
|
363 devState = DEV_NWK_ORPHAN;
|
|
\ 000067 740A MOV A,#0xa
|
|
\ 000069 F0 MOVX @DPTR,A
|
|
364
|
|
365 /* if router and nvram is available, fake successful orphan scan */
|
|
366 scanCnf.hdr.Status = ZSUCCESS;
|
|
\ 00006A 7401 MOV A,#0x1
|
|
\ 00006C 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 00006F E4 CLR A
|
|
\ 000070 F0 MOVX @DPTR,A
|
|
367 scanCnf.ScanType = ZMAC_ORPHAN_SCAN;
|
|
\ 000071 7402 MOV A,#0x2
|
|
\ 000073 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000076 7403 MOV A,#0x3
|
|
\ 000078 F0 MOVX @DPTR,A
|
|
368 scanCnf.UnscannedChannels = 0;
|
|
\ 000079 04 INC A
|
|
\ 00007A 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 00007D E4 CLR A
|
|
\ 00007E F0 MOVX @DPTR,A
|
|
\ 00007F A3 INC DPTR
|
|
\ 000080 F0 MOVX @DPTR,A
|
|
\ 000081 A3 INC DPTR
|
|
\ 000082 F0 MOVX @DPTR,A
|
|
\ 000083 A3 INC DPTR
|
|
\ 000084 F0 MOVX @DPTR,A
|
|
369 scanCnf.ResultListSize = 0;
|
|
\ 000085 7408 MOV A,#0x8
|
|
\ 000087 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 00008A E4 CLR A
|
|
\ 00008B F0 MOVX @DPTR,A
|
|
370 nwk_ScanJoiningOrphan(&scanCnf);
|
|
\ 00008C ; Setup parameters for call to function nwk_ScanJoiningOrphan
|
|
\ 00008C AA.. MOV R2,?XSP + 0
|
|
\ 00008E AB.. MOV R3,?XSP + 1
|
|
\ 000090 12.... LCALL `??nwk_ScanJoiningOrphan::?relay`; Banked call to: nwk_ScanJoiningOrphan
|
|
371
|
|
372 ret = ZSuccess;
|
|
\ 000093 8020 SJMP ??ZDO_StartDevice_6
|
|
373 }
|
|
374 else
|
|
375 {
|
|
376 devState = DEV_NWK_ORPHAN;
|
|
\ ??ZDO_StartDevice_5:
|
|
\ 000095 740A MOV A,#0xa
|
|
\ 000097 12.... LCALL ?Subroutine42 & 0xFFFF
|
|
377 ret = NLME_OrphanJoinRequest( zgDefaultChannelList,
|
|
378 zgDefaultStartingScanDuration );
|
|
379 }
|
|
380 }
|
|
381 else
|
|
382 {
|
|
383 #if defined( LCD_SUPPORTED )
|
|
384 HalLcdWriteScreen( "StartDevice ERR", "MODE unknown" );
|
|
385 #endif
|
|
386 }
|
|
387 }
|
|
\ ??CrossCallReturnLabel_59:
|
|
\ 00009A 12.... LCALL ?XLOAD_R2345
|
|
\ 00009D 12.... LCALL `??NLME_OrphanJoinRequest::?relay`; Banked call to: NLME_OrphanJoinRequest
|
|
\ 0000A0 E9 MOV A,R1
|
|
\ 0000A1 F8 MOV R0,A
|
|
388
|
|
389 if ( ret != ZSuccess )
|
|
\ ??ZDO_StartDevice_4:
|
|
\ 0000A2 E8 MOV A,R0
|
|
\ 0000A3 6010 JZ ??ZDO_StartDevice_6
|
|
390 {
|
|
391 osal_start_timerEx(ZDAppTaskID, ZDO_NETWORK_INIT, NWK_RETRY_DELAY );
|
|
\ ??ZDO_StartDevice_1:
|
|
\ 0000A5 ; Setup parameters for call to function osal_start_timerEx
|
|
\ 0000A5 7CE8 MOV R4,#-0x18
|
|
\ 0000A7 7D03 MOV R5,#0x3
|
|
\ 0000A9 7A01 MOV R2,#0x1
|
|
\ 0000AB 7B00 MOV R3,#0x0
|
|
\ 0000AD 90.... MOV DPTR,#ZDAppTaskID
|
|
\ 0000B0 E0 MOVX A,@DPTR
|
|
\ 0000B1 F9 MOV R1,A
|
|
\ 0000B2 12.... LCALL `??osal_start_timerEx::?relay`; Banked call to: osal_start_timerEx
|
|
392 }
|
|
393 }
|
|
\ ??ZDO_StartDevice_6:
|
|
\ 0000B5 740B MOV A,#0xb
|
|
\ 0000B7 12.... LCALL ?DEALLOC_XSTACK8
|
|
\ 0000BA REQUIRE ?Subroutine1
|
|
\ 0000BA ; // Fall through to label ?Subroutine1
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine1:
|
|
\ 000000 7F01 MOV R7,#0x1
|
|
\ 000002 02.... LJMP ?BANKED_LEAVE_XDATA
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine42:
|
|
\ 000000 F0 MOVX @DPTR,A
|
|
\ 000001 ; Setup parameters for call to function NLME_NetworkDiscoveryRequest
|
|
\ 000001 ; Setup parameters for call to function NLME_OrphanJoinRequest
|
|
\ 000001 90.... MOV DPTR,#zgDefaultStartingScanDuration
|
|
\ 000004 E0 MOVX A,@DPTR
|
|
\ 000005 F9 MOV R1,A
|
|
\ 000006 90.... MOV DPTR,#zgDefaultChannelList
|
|
\ 000009 22 RET
|
|
|
|
\ In segment XDATA_Z, align 1, keep-with-next
|
|
\ ??scanCnt:
|
|
\ 000000 DS 1
|
|
\ 000001 REQUIRE __INIT_XDATA_Z
|
|
394
|
|
395 /**************************************************************************************************
|
|
396 * @fn zdoSendStateChangeMsg
|
|
397 *
|
|
398 * @brief Helper function for ZDO_UpdateNwkStatus.
|
|
399 *
|
|
400 * input parameters
|
|
401 *
|
|
402 * @param taskId - The OSAL task identifier to which to send the ZDO_STATE_CHANGE_EVT.
|
|
403 * @param state - The current device state.
|
|
404 *
|
|
405 * output parameters
|
|
406 *
|
|
407 * None.
|
|
408 *
|
|
409 * @return None.
|
|
410 **************************************************************************************************
|
|
411 */
|
|
412 static void zdoSendStateChangeMsg(uint8 state, uint8 taskId)
|
|
413 {
|
|
414 osal_event_hdr_t *pMsg = (osal_event_hdr_t *)osal_msg_find(taskId, ZDO_STATE_CHANGE);
|
|
415
|
|
416 if (NULL == pMsg)
|
|
417 {
|
|
418 if (NULL == (pMsg = (osal_event_hdr_t *)osal_msg_allocate(sizeof(osal_event_hdr_t))))
|
|
419 {
|
|
420 // Upon failure to notify any EndPoint of the state change, re-set the ZDO event to
|
|
421 // try again later when more Heap may be available.
|
|
422 osal_set_event(ZDAppTaskID, ZDO_STATE_CHANGE_EVT);
|
|
423 }
|
|
424 else
|
|
425 {
|
|
426 pMsg->event = ZDO_STATE_CHANGE;
|
|
427 pMsg->status = state;
|
|
428
|
|
429 (void)osal_msg_send(taskId, (uint8 *)pMsg);
|
|
430 }
|
|
431 }
|
|
432 else
|
|
433 {
|
|
434 // Modify in place the status of an existing ZDO_STATE_CHANGE message to the EndPoint.
|
|
435 pMsg->status = state;
|
|
436 }
|
|
437 }
|
|
438
|
|
439 /**************************************************************************************************
|
|
440 * @fn ZDO_UpdateNwkStatus
|
|
441 *
|
|
442 * @brief This function sends a ZDO_STATE_CHANGE message to the task of every EndPoint
|
|
443 * registered with AF (except, of course, the ZDO_EP). Even if a single task has more
|
|
444 * than one registered EndPoint, it will only receive one notification per state
|
|
445 * change. Although the device may go through a sequence of state changes, the
|
|
446 * Application task may only receive notification of the final, steady-state state
|
|
447 * because it has the lowest priority and never even runs to receive the intermediate
|
|
448 * state change notifications.
|
|
449 *
|
|
450 * input parameters
|
|
451 *
|
|
452 * @param state - The current device state.
|
|
453 *
|
|
454 * output parameters
|
|
455 *
|
|
456 * None.
|
|
457 *
|
|
458 * @return None.
|
|
459 **************************************************************************************************
|
|
460 */
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
461 void ZDO_UpdateNwkStatus(devStates_t state)
|
|
\ ZDO_UpdateNwkStatus:
|
|
462 {
|
|
\ 000000 REQUIRE ?V0
|
|
\ 000000 REQUIRE ?V1
|
|
\ 000000 REQUIRE ?V2
|
|
\ 000000 REQUIRE ?V3
|
|
\ 000000 74F4 MOV A,#-0xc
|
|
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
|
\ 000005 ; Saved register size: 12
|
|
\ 000005 ; Auto size: 0
|
|
\ 000005 89.. MOV ?V1,R1
|
|
463 epList_t *pItem = epList;
|
|
\ 000007 90.... MOV DPTR,#epList
|
|
\ 00000A 8008 SJMP ??ZDO_UpdateNwkStatus_0
|
|
464
|
|
465 while (pItem != NULL)
|
|
466 {
|
|
467 if (pItem->epDesc->endPoint != ZDO_EP)
|
|
468 {
|
|
469 zdoSendStateChangeMsg(state, *(pItem->epDesc->task_id));
|
|
\ ??ZDO_UpdateNwkStatus_1:
|
|
\ 00000C A3 INC DPTR
|
|
\ 00000D E5.. MOV A,?V1
|
|
\ 00000F F0 MOVX @DPTR,A
|
|
470 }
|
|
471
|
|
472 pItem = pItem->nextDesc;
|
|
\ ??ZDO_UpdateNwkStatus_2:
|
|
\ 000010 8E82 MOV DPL,R6
|
|
\ 000012 8F83 MOV DPH,R7
|
|
\ ??ZDO_UpdateNwkStatus_0:
|
|
\ 000014 12.... LCALL ??Subroutine231_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_378:
|
|
\ 000017 EE MOV A,R6
|
|
\ 000018 4F ORL A,R7
|
|
\ 000019 6052 JZ ??ZDO_UpdateNwkStatus_3
|
|
\ 00001B 8E82 MOV DPL,R6
|
|
\ 00001D 8F83 MOV DPH,R7
|
|
\ 00001F 12.... LCALL ??Subroutine232_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_389:
|
|
\ 000022 60EC JZ ??ZDO_UpdateNwkStatus_2
|
|
\ 000024 8E82 MOV DPL,R6
|
|
\ 000026 8F83 MOV DPH,R7
|
|
\ 000028 A3 INC DPTR
|
|
\ 000029 A3 INC DPTR
|
|
\ 00002A 12.... LCALL ?Subroutine108 & 0xFFFF
|
|
473 }
|
|
\ ??CrossCallReturnLabel_177:
|
|
\ 00002D 12.... LCALL ??Subroutine233_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_387:
|
|
\ 000030 F5.. MOV ?V0,A
|
|
\ 000032 ; Setup parameters for call to function osal_msg_find
|
|
\ 000032 7AD1 MOV R2,#-0x2f
|
|
\ 000034 F9 MOV R1,A
|
|
\ 000035 12.... LCALL `??osal_msg_find::?relay`; Banked call to: osal_msg_find
|
|
\ 000038 8A82 MOV DPL,R2
|
|
\ 00003A 8B83 MOV DPH,R3
|
|
\ 00003C E582 MOV A,DPL
|
|
\ 00003E 4583 ORL A,DPH
|
|
\ 000040 70CA JNZ ??ZDO_UpdateNwkStatus_1
|
|
\ 000042 ; Setup parameters for call to function osal_msg_allocate
|
|
\ 000042 7A02 MOV R2,#0x2
|
|
\ 000044 7B00 MOV R3,#0x0
|
|
\ 000046 12.... LCALL `??osal_msg_allocate::?relay`; Banked call to: osal_msg_allocate
|
|
\ 000049 EA MOV A,R2
|
|
\ 00004A 4B ORL A,R3
|
|
\ 00004B 700E JNZ ??ZDO_UpdateNwkStatus_4
|
|
\ 00004D ; Setup parameters for call to function osal_set_event
|
|
\ 00004D 7A10 MOV R2,#0x10
|
|
\ 00004F 7B00 MOV R3,#0x0
|
|
\ 000051 90.... MOV DPTR,#ZDAppTaskID
|
|
\ 000054 E0 MOVX A,@DPTR
|
|
\ 000055 F9 MOV R1,A
|
|
\ 000056 12.... LCALL `??osal_set_event::?relay`; Banked call to: osal_set_event
|
|
\ 000059 80B5 SJMP ??ZDO_UpdateNwkStatus_2
|
|
\ ??ZDO_UpdateNwkStatus_4:
|
|
\ 00005B 8A82 MOV DPL,R2
|
|
\ 00005D 8B83 MOV DPH,R3
|
|
\ 00005F 74D1 MOV A,#-0x2f
|
|
\ 000061 F0 MOVX @DPTR,A
|
|
\ 000062 A3 INC DPTR
|
|
\ 000063 E5.. MOV A,?V1
|
|
\ 000065 F0 MOVX @DPTR,A
|
|
\ 000066 ; Setup parameters for call to function osal_msg_send
|
|
\ 000066 A9.. MOV R1,?V0
|
|
\ 000068 12.... LCALL `??osal_msg_send::?relay`; Banked call to: osal_msg_send
|
|
\ 00006B 80A3 SJMP ??ZDO_UpdateNwkStatus_2
|
|
474 #if defined MT_ZDO_CB_FUNC
|
|
475 zdoSendStateChangeMsg(state, MT_TaskID);
|
|
476 #endif
|
|
477
|
|
478 ZDAppNwkAddr.addr.shortAddr = NLME_GetShortAddr();
|
|
\ ??ZDO_UpdateNwkStatus_3:
|
|
\ 00006D ; Setup parameters for call to function NLME_GetShortAddr
|
|
\ 00006D 12.... LCALL `??NLME_GetShortAddr::?relay`; Banked call to: NLME_GetShortAddr
|
|
\ 000070 90.... MOV DPTR,#ZDAppNwkAddr
|
|
\ 000073 12.... LCALL ??Subroutine238_0 & 0xFFFF
|
|
479 (void)NLME_GetExtAddr(); // Load the saveExtAddr pointer.
|
|
\ ??CrossCallReturnLabel_415:
|
|
\ 000076 ; Setup parameters for call to function NLME_GetExtAddr
|
|
\ 000076 12.... LCALL `??NLME_GetExtAddr::?relay`; Banked call to: NLME_GetExtAddr
|
|
480 }
|
|
\ 000079 80.. SJMP ??Subroutine219_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine219_0:
|
|
\ 000000 7F04 MOV R7,#0x4
|
|
\ 000002 02.... LJMP ?BANKED_LEAVE_XDATA
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine108:
|
|
\ 000000 12.... LCALL ?Subroutine189 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_734:
|
|
\ 000003 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine231_0:
|
|
\ 000000 12.... LCALL ??Subroutine288_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_702:
|
|
\ 000003 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine232_0:
|
|
\ 000000 A3 INC DPTR
|
|
\ 000001 REQUIRE ??Subroutine233_0
|
|
\ 000001 ; // Fall through to label ??Subroutine233_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine233_0:
|
|
\ 000000 A3 INC DPTR
|
|
\ 000001 REQUIRE ??Subroutine234_0
|
|
\ 000001 ; // Fall through to label ??Subroutine234_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine234_0:
|
|
\ 000000 E0 MOVX A,@DPTR
|
|
\ 000001 REQUIRE ??Subroutine235_0
|
|
\ 000001 ; // Fall through to label ??Subroutine235_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine235_0:
|
|
\ 000000 12.... LCALL ?Subroutine188 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_394:
|
|
\ 000003 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine188:
|
|
\ 000000 F8 MOV R0,A
|
|
\ 000001 A3 INC DPTR
|
|
\ 000002 E0 MOVX A,@DPTR
|
|
\ 000003 F583 MOV DPH,A
|
|
\ 000005 8882 MOV DPL,R0
|
|
\ 000007 E0 MOVX A,@DPTR
|
|
\ 000008 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine238_0:
|
|
\ 000000 EA MOV A,R2
|
|
\ 000001 REQUIRE ??Subroutine239_0
|
|
\ 000001 ; // Fall through to label ??Subroutine239_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine239_0:
|
|
\ 000000 F0 MOVX @DPTR,A
|
|
\ 000001 A3 INC DPTR
|
|
\ 000002 EB MOV A,R3
|
|
\ 000003 F0 MOVX @DPTR,A
|
|
\ 000004 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine288_0:
|
|
\ 000000 E0 MOVX A,@DPTR
|
|
\ 000001 FE MOV R6,A
|
|
\ 000002 A3 INC DPTR
|
|
\ 000003 E0 MOVX A,@DPTR
|
|
\ 000004 FF MOV R7,A
|
|
\ 000005 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine189:
|
|
\ 000000 A3 INC DPTR
|
|
\ 000001 E0 MOVX A,@DPTR
|
|
\ 000002 F583 MOV DPH,A
|
|
\ 000004 8882 MOV DPL,R0
|
|
\ 000006 22 RET
|
|
481
|
|
482 #if defined ( REFLECTOR )
|
|
483 /*********************************************************************
|
|
484 * @fn ZDO_RemoveEndDeviceBind
|
|
485 *
|
|
486 * @brief Remove the end device bind
|
|
487 *
|
|
488 * @param none
|
|
489 *
|
|
490 * @return none
|
|
491 */
|
|
492 static void ZDO_RemoveEndDeviceBind( void )
|
|
493 {
|
|
494 if ( ZDO_EDBind != NULL )
|
|
495 {
|
|
496 // Free the RAM
|
|
497 if ( ZDO_EDBind->inClusters != NULL )
|
|
498 {
|
|
499 osal_mem_free( ZDO_EDBind->inClusters );
|
|
500 }
|
|
501 if ( ZDO_EDBind->outClusters != NULL )
|
|
502 {
|
|
503 osal_mem_free( ZDO_EDBind->outClusters );
|
|
504 }
|
|
505 osal_mem_free( ZDO_EDBind );
|
|
506 ZDO_EDBind = NULL;
|
|
507 }
|
|
508 }
|
|
509 #endif // REFLECTOR
|
|
510
|
|
511 #if defined ( REFLECTOR )
|
|
512 /*********************************************************************
|
|
513 * @fn ZDO_RemoveEndDeviceBind
|
|
514 *
|
|
515 * @brief Remove the end device bind
|
|
516 *
|
|
517 * @param none
|
|
518 *
|
|
519 * @return none
|
|
520 */
|
|
521 static void ZDO_SendEDBindRsp( byte TransSeq, zAddrType_t *dstAddr, byte Status, byte secUse )
|
|
522 {
|
|
523 ZDP_EndDeviceBindRsp( TransSeq, dstAddr, Status, secUse );
|
|
524
|
|
525 #if defined( LCD_SUPPORTED )
|
|
526 HalLcdWriteString( "End Device Bind", HAL_LCD_LINE_1 );
|
|
527 if ( Status == ZDP_SUCCESS )
|
|
528 {
|
|
529 HalLcdWriteString( "Success Sent", HAL_LCD_LINE_2 );
|
|
530 }
|
|
531 else
|
|
532 {
|
|
533 HalLcdWriteString( "Timeout", HAL_LCD_LINE_2 );
|
|
534 }
|
|
535 #endif
|
|
536
|
|
537 }
|
|
538 #endif // REFLECTOR
|
|
539
|
|
540 /*********************************************************************
|
|
541 * @fn ZDO_CompareClusterLists
|
|
542 *
|
|
543 * @brief Compare one list to another list
|
|
544 *
|
|
545 * @param numList1 - number of items in list 1
|
|
546 * @param list1 - first list of cluster IDs
|
|
547 * @param numList2 - number of items in list 2
|
|
548 * @param list2 - second list of cluster IDs
|
|
549 * @param pMatches - buffer to put matches
|
|
550 *
|
|
551 * @return number of matches
|
|
552 */
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
553 static byte ZDO_CompareClusterLists( byte numList1, uint16 *list1,
|
|
\ ZDO_CompareClusterLists:
|
|
554 byte numList2, uint16 *list2, uint16 *pMatches )
|
|
555 {
|
|
\ 000000 REQUIRE ?V0
|
|
\ 000000 REQUIRE ?V1
|
|
\ 000000 REQUIRE ?V2
|
|
\ 000000 REQUIRE ?V3
|
|
\ 000000 REQUIRE ?V4
|
|
\ 000000 REQUIRE ?V6
|
|
\ 000000 REQUIRE ?V7
|
|
\ 000000 74F0 MOV A,#-0x10
|
|
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
|
\ 000005 ; Saved register size: 16
|
|
\ 000005 ; Auto size: 0
|
|
\ 000005 89.. MOV ?V0,R1
|
|
\ 000007 8A.. MOV ?V6,R2
|
|
\ 000009 8B.. MOV ?V7,R3
|
|
\ 00000B 8C.. MOV ?V4,R4
|
|
556 byte x, y;
|
|
557 uint16 z;
|
|
558 byte numMatches = 0;
|
|
\ 00000D 7A00 MOV R2,#0x0
|
|
559
|
|
560 // Check the first in against the seconds out
|
|
561 for ( x = 0; x < numList1; x++ )
|
|
\ 00000F 7B00 MOV R3,#0x0
|
|
\ 000011 7410 MOV A,#0x10
|
|
\ 000013 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000016 12.... LCALL ?Subroutine186 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_300:
|
|
\ 000019 7412 MOV A,#0x12
|
|
\ 00001B 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 00001E 12.... LCALL ??Subroutine231_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_379:
|
|
\ 000021 804B SJMP ??ZDO_CompareClusterLists_0
|
|
562 {
|
|
563 for ( y = 0; y < numList2; y++ )
|
|
564 {
|
|
565 z = list2[y];
|
|
\ ??ZDO_CompareClusterLists_1:
|
|
\ 000023 A8.. MOV R0,?V1
|
|
\ 000025 E8 MOV A,R0
|
|
\ 000026 28 ADD A,R0
|
|
\ 000027 F8 MOV R0,A
|
|
\ 000028 E4 CLR A
|
|
\ 000029 33 RLC A
|
|
\ 00002A F9 MOV R1,A
|
|
\ 00002B EC MOV A,R4
|
|
\ 00002C 28 ADD A,R0
|
|
\ 00002D F582 MOV DPL,A
|
|
\ 00002F ED MOV A,R5
|
|
\ 000030 39 ADDC A,R1
|
|
\ 000031 F583 MOV DPH,A
|
|
\ 000033 E0 MOVX A,@DPTR
|
|
\ 000034 F5.. MOV ?V2,A
|
|
\ 000036 A3 INC DPTR
|
|
\ 000037 E0 MOVX A,@DPTR
|
|
\ 000038 F5.. MOV ?V3,A
|
|
566 if ( list1[x] == z )
|
|
\ 00003A EB MOV A,R3
|
|
\ 00003B 12.... LCALL ?Subroutine131 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_214:
|
|
\ 00003E F582 MOV DPL,A
|
|
\ 000040 E5.. MOV A,?V7
|
|
\ 000042 39 ADDC A,R1
|
|
\ 000043 F583 MOV DPH,A
|
|
\ 000045 E0 MOVX A,@DPTR
|
|
\ 000046 65.. XRL A,?V2
|
|
\ 000048 7004 JNZ ??ZDO_CompareClusterLists_2
|
|
\ 00004A A3 INC DPTR
|
|
\ 00004B E0 MOVX A,@DPTR
|
|
\ 00004C 65.. XRL A,?V3
|
|
\ ??ZDO_CompareClusterLists_2:
|
|
\ 00004E 7014 JNZ ??ZDO_CompareClusterLists_3
|
|
567 {
|
|
568 pMatches[numMatches++] = z;
|
|
\ 000050 EA MOV A,R2
|
|
\ 000051 12.... LCALL ?Subroutine196 & 0xFFFF
|
|
569 }
|
|
570 }
|
|
\ ??CrossCallReturnLabel_313:
|
|
\ 000054 EE MOV A,R6
|
|
\ 000055 28 ADD A,R0
|
|
\ 000056 F582 MOV DPL,A
|
|
\ 000058 EF MOV A,R7
|
|
\ 000059 39 ADDC A,R1
|
|
\ 00005A F583 MOV DPH,A
|
|
\ 00005C E5.. MOV A,?V2
|
|
\ 00005E F0 MOVX @DPTR,A
|
|
\ 00005F A3 INC DPTR
|
|
\ 000060 E5.. MOV A,?V3
|
|
\ 000062 F0 MOVX @DPTR,A
|
|
\ 000063 0A INC R2
|
|
\ ??ZDO_CompareClusterLists_3:
|
|
\ 000064 05.. INC ?V1
|
|
\ ??ZDO_CompareClusterLists_4:
|
|
\ 000066 E5.. MOV A,?V1
|
|
\ 000068 C3 CLR C
|
|
\ 000069 95.. SUBB A,?V4
|
|
\ 00006B 40B6 JC ??ZDO_CompareClusterLists_1
|
|
\ 00006D 0B INC R3
|
|
\ ??ZDO_CompareClusterLists_0:
|
|
\ 00006E EB MOV A,R3
|
|
\ 00006F C3 CLR C
|
|
\ 000070 95.. SUBB A,?V0
|
|
\ 000072 5005 JNC ??ZDO_CompareClusterLists_5
|
|
\ 000074 75..00 MOV ?V1,#0x0
|
|
\ 000077 80ED SJMP ??ZDO_CompareClusterLists_4
|
|
571 }
|
|
572
|
|
573 return ( numMatches );
|
|
\ ??ZDO_CompareClusterLists_5:
|
|
\ 000079 EA MOV A,R2
|
|
\ 00007A F9 MOV R1,A
|
|
\ 00007B 02.... LJMP ??Subroutine226_0 & 0xFFFF
|
|
574 }
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine196:
|
|
\ 000000 25E0 ADD A,0xE0 /* A */
|
|
\ 000002 F8 MOV R0,A
|
|
\ 000003 E4 CLR A
|
|
\ 000004 33 RLC A
|
|
\ 000005 F9 MOV R1,A
|
|
\ 000006 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine131:
|
|
\ 000000 12.... LCALL ?Subroutine196 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_315:
|
|
\ 000003 E5.. MOV A,?V6
|
|
\ 000005 28 ADD A,R0
|
|
\ 000006 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine186:
|
|
\ 000000 E0 MOVX A,@DPTR
|
|
\ 000001 FC MOV R4,A
|
|
\ 000002 A3 INC DPTR
|
|
\ 000003 E0 MOVX A,@DPTR
|
|
\ 000004 FD MOV R5,A
|
|
\ 000005 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine226_0:
|
|
\ 000000 7F08 MOV R7,#0x8
|
|
\ 000002 02.... LJMP ?BANKED_LEAVE_XDATA
|
|
575
|
|
576 /*********************************************************************
|
|
577 * Utility functions
|
|
578 */
|
|
579
|
|
580 /*********************************************************************
|
|
581 * @fn ZDO_CompareByteLists
|
|
582 *
|
|
583 * @brief Compares two lists for matches.
|
|
584 *
|
|
585 * @param ACnt - number of entries in list A
|
|
586 * @param AList - List A
|
|
587 * @param BCnt - number of entries in list B
|
|
588 * @param BList - List B
|
|
589 *
|
|
590 * @return true if a match is found
|
|
591 */
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
592 byte ZDO_AnyClusterMatches( byte ACnt, uint16 *AList, byte BCnt, uint16 *BList )
|
|
\ ZDO_AnyClusterMatches:
|
|
593 {
|
|
\ 000000 REQUIRE ?V0
|
|
\ 000000 REQUIRE ?V1
|
|
\ 000000 REQUIRE ?V2
|
|
\ 000000 REQUIRE ?V3
|
|
\ 000000 74F4 MOV A,#-0xc
|
|
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
|
\ 000005 ; Saved register size: 12
|
|
\ 000005 ; Auto size: 0
|
|
\ 000005 E9 MOV A,R1
|
|
\ 000006 FE MOV R6,A
|
|
\ 000007 8C.. MOV ?V2,R4
|
|
594 byte x, y;
|
|
595
|
|
596 for ( x = 0; x < ACnt; x++ )
|
|
\ 000009 7F00 MOV R7,#0x0
|
|
\ 00000B 740C MOV A,#0xc
|
|
\ 00000D 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000010 12.... LCALL ??Subroutine248_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_453:
|
|
\ 000013 8001 SJMP ??ZDO_AnyClusterMatches_0
|
|
\ ??ZDO_AnyClusterMatches_1:
|
|
\ 000015 0F INC R7
|
|
\ ??ZDO_AnyClusterMatches_0:
|
|
\ 000016 EF MOV A,R7
|
|
\ 000017 C3 CLR C
|
|
\ 000018 9E SUBB A,R6
|
|
\ 000019 503A JNC ??ZDO_AnyClusterMatches_2
|
|
597 {
|
|
598 for ( y = 0; y < BCnt; y++ )
|
|
\ 00001B 75..00 MOV ?V3,#0x0
|
|
\ 00001E 8002 SJMP ??ZDO_AnyClusterMatches_3
|
|
\ ??ZDO_AnyClusterMatches_4:
|
|
\ 000020 05.. INC ?V3
|
|
\ ??ZDO_AnyClusterMatches_3:
|
|
\ 000022 E5.. MOV A,?V3
|
|
\ 000024 C3 CLR C
|
|
\ 000025 95.. SUBB A,?V2
|
|
\ 000027 50EC JNC ??ZDO_AnyClusterMatches_1
|
|
599 {
|
|
600 if ( AList[x] == BList[y] )
|
|
\ 000029 EF MOV A,R7
|
|
\ 00002A 12.... LCALL ??Subroutine224_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_358:
|
|
\ 00002D EA MOV A,R2
|
|
\ 00002E 2C ADD A,R4
|
|
\ 00002F F582 MOV DPL,A
|
|
\ 000031 EB MOV A,R3
|
|
\ 000032 3D ADDC A,R5
|
|
\ 000033 12.... LCALL ?Subroutine174 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_353:
|
|
\ 000036 AC.. MOV R4,?V3
|
|
\ 000038 EC MOV A,R4
|
|
\ 000039 2C ADD A,R4
|
|
\ 00003A FC MOV R4,A
|
|
\ 00003B E4 CLR A
|
|
\ 00003C 33 RLC A
|
|
\ 00003D FD MOV R5,A
|
|
\ 00003E E8 MOV A,R0
|
|
\ 00003F 2C ADD A,R4
|
|
\ 000040 F582 MOV DPL,A
|
|
\ 000042 E9 MOV A,R1
|
|
\ 000043 3D ADDC A,R5
|
|
\ 000044 F583 MOV DPH,A
|
|
\ 000046 E0 MOVX A,@DPTR
|
|
\ 000047 65.. XRL A,?V0
|
|
\ 000049 7004 JNZ ??ZDO_AnyClusterMatches_5
|
|
\ 00004B A3 INC DPTR
|
|
\ 00004C E0 MOVX A,@DPTR
|
|
\ 00004D 65.. XRL A,?V1
|
|
\ ??ZDO_AnyClusterMatches_5:
|
|
\ 00004F 70CF JNZ ??ZDO_AnyClusterMatches_4
|
|
601 {
|
|
602 return true;
|
|
\ 000051 7901 MOV R1,#0x1
|
|
\ 000053 8002 SJMP ??ZDO_AnyClusterMatches_6
|
|
603 }
|
|
604 }
|
|
605 }
|
|
606
|
|
607 return false;
|
|
\ ??ZDO_AnyClusterMatches_2:
|
|
\ 000055 7900 MOV R1,#0x0
|
|
\ ??ZDO_AnyClusterMatches_6:
|
|
\ 000057 02.... LJMP ??Subroutine219_0 & 0xFFFF
|
|
608 }
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine174:
|
|
\ 000000 F583 MOV DPH,A
|
|
\ 000002 REQUIRE ??Subroutine220_0
|
|
\ 000002 ; // Fall through to label ??Subroutine220_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine220_0:
|
|
\ 000000 E0 MOVX A,@DPTR
|
|
\ 000001 F5.. MOV ?V0,A
|
|
\ 000003 A3 INC DPTR
|
|
\ 000004 E0 MOVX A,@DPTR
|
|
\ 000005 F5.. MOV ?V1,A
|
|
\ 000007 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine224_0:
|
|
\ 000000 25E0 ADD A,0xE0 /* A */
|
|
\ 000002 FC MOV R4,A
|
|
\ 000003 E4 CLR A
|
|
\ 000004 33 RLC A
|
|
\ 000005 FD MOV R5,A
|
|
\ 000006 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine248_0:
|
|
\ 000000 12.... LCALL ??Subroutine278_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_638:
|
|
\ 000003 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine217:
|
|
\ 000000 E0 MOVX A,@DPTR
|
|
\ 000001 F8 MOV R0,A
|
|
\ 000002 A3 INC DPTR
|
|
\ 000003 E0 MOVX A,@DPTR
|
|
\ 000004 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine278_0:
|
|
\ 000000 12.... LCALL ?Subroutine217 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_645:
|
|
\ 000003 F9 MOV R1,A
|
|
\ 000004 22 RET
|
|
609
|
|
610 /*********************************************************************
|
|
611 * Callback functions from ZDProfile
|
|
612 */
|
|
613
|
|
614 /*********************************************************************
|
|
615 * @fn ZDO_ProcessNodeDescReq
|
|
616 *
|
|
617 * @brief This function processes and responds to the
|
|
618 * Node_Desc_req message.
|
|
619 *
|
|
620 * @param inMsg - incoming message
|
|
621 *
|
|
622 * @return none
|
|
623 */
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
624 void ZDO_ProcessNodeDescReq( zdoIncomingMsg_t *inMsg )
|
|
\ ZDO_ProcessNodeDescReq:
|
|
625 {
|
|
\ 000000 REQUIRE ?V0
|
|
\ 000000 REQUIRE ?V1
|
|
\ 000000 74F6 MOV A,#-0xa
|
|
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
|
\ 000005 ; Saved register size: 10
|
|
\ 000005 ; Auto size: 0
|
|
\ 000005 12.... LCALL ?Subroutine57 & 0xFFFF
|
|
626 uint16 aoi = BUILD_UINT16( inMsg->asdu[0], inMsg->asdu[1] );
|
|
627 NodeDescriptorFormat_t *desc = NULL;
|
|
628
|
|
629 if ( aoi == ZDAppNwkAddr.addr.shortAddr )
|
|
\ ??CrossCallReturnLabel_82:
|
|
\ 000008 7003 JNZ ??ZDO_ProcessNodeDescReq_0
|
|
\ 00000A A3 INC DPTR
|
|
\ 00000B E0 MOVX A,@DPTR
|
|
\ 00000C 6D XRL A,R5
|
|
\ ??ZDO_ProcessNodeDescReq_0:
|
|
\ 00000D 7017 JNZ ??ZDO_ProcessNodeDescReq_1
|
|
630 {
|
|
631 desc = &ZDO_Config_Node_Descriptor;
|
|
632 }
|
|
633
|
|
634 if ( desc != NULL )
|
|
635 {
|
|
636 ZDP_NodeDescMsg( inMsg, aoi, desc );
|
|
\ 00000F ; Setup parameters for call to function ZDP_NodeDescMsg
|
|
\ 00000F 75.... MOV ?V0,#ZDO_Config_Node_Descriptor & 0xff
|
|
\ 000012 75.... MOV ?V1,#(ZDO_Config_Node_Descriptor >> 8) & 0xff
|
|
\ 000015 78.. MOV R0,#?V0
|
|
\ 000017 12.... LCALL ?PUSH_XSTACK_I_TWO
|
|
\ 00001A EE MOV A,R6
|
|
\ 00001B FA MOV R2,A
|
|
\ 00001C 12.... LCALL `??ZDP_NodeDescMsg::?relay`; Banked call to: ZDP_NodeDescMsg
|
|
\ 00001F 7402 MOV A,#0x2
|
|
\ 000021 12.... LCALL ?DEALLOC_XSTACK8
|
|
\ 000024 801A SJMP ??ZDO_ProcessNodeDescReq_2
|
|
637 }
|
|
638 else
|
|
639 {
|
|
640 ZDP_GenericRsp( inMsg->TransSeq, &(inMsg->srcAddr),
|
|
641 ZDP_INVALID_REQTYPE, aoi, Node_Desc_rsp, inMsg->SecurityUse );
|
|
\ ??ZDO_ProcessNodeDescReq_1:
|
|
\ 000026 ; Setup parameters for call to function ZDP_GenericRsp
|
|
\ 000026 75..02 MOV ?V0,#0x2
|
|
\ 000029 75..80 MOV ?V1,#-0x80
|
|
\ 00002C 78.. MOV R0,#?V0
|
|
\ 00002E 12.... LCALL ?PUSH_XSTACK_I_TWO
|
|
\ 000031 8A.. MOV ?V0,R2
|
|
\ 000033 89.. MOV ?V1,R1
|
|
\ 000035 78.. MOV R0,#?V0
|
|
\ 000037 12.... LCALL ?PUSH_XSTACK_I_TWO
|
|
\ 00003A 12.... LCALL ?Subroutine58 & 0xFFFF
|
|
642 }
|
|
\ ??CrossCallReturnLabel_84:
|
|
\ 00003D 12.... LCALL ?DEALLOC_XSTACK8
|
|
643 }
|
|
\ ??ZDO_ProcessNodeDescReq_2:
|
|
\ 000040 80.. SJMP ??Subroutine222_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine58:
|
|
\ 000000 12.... LCALL ?Subroutine195 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_311:
|
|
\ 000003 7C80 MOV R4,#-0x80
|
|
\ 000005 12.... LCALL ?Subroutine193 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_309:
|
|
\ 000008 12.... LCALL `??ZDP_GenericRsp::?relay`; Banked call to: ZDP_GenericRsp
|
|
\ 00000B 7404 MOV A,#0x4
|
|
\ 00000D 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine57:
|
|
\ 000000 EA MOV A,R2
|
|
\ 000001 FE MOV R6,A
|
|
\ 000002 EB MOV A,R3
|
|
\ 000003 FF MOV R7,A
|
|
\ 000004 12.... LCALL ?Subroutine201 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_447:
|
|
\ 000007 3F ADDC A,R7
|
|
\ 000008 12.... LCALL ?Subroutine173 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_286:
|
|
\ 00000B FC MOV R4,A
|
|
\ 00000C E4 CLR A
|
|
\ 00000D 39 ADDC A,R1
|
|
\ 00000E FD MOV R5,A
|
|
\ 00000F 90.... MOV DPTR,#ZDAppNwkAddr
|
|
\ 000012 E0 MOVX A,@DPTR
|
|
\ 000013 6C XRL A,R4
|
|
\ 000014 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine222_0:
|
|
\ 000000 7F02 MOV R7,#0x2
|
|
\ 000002 02.... LJMP ?BANKED_LEAVE_XDATA
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine195:
|
|
\ 000000 EE MOV A,R6
|
|
\ 000001 240E ADD A,#0xe
|
|
\ 000003 F582 MOV DPL,A
|
|
\ 000005 E4 CLR A
|
|
\ 000006 3F ADDC A,R7
|
|
\ 000007 F583 MOV DPH,A
|
|
\ 000009 E0 MOVX A,@DPTR
|
|
\ 00000A FD MOV R5,A
|
|
\ 00000B 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine193:
|
|
\ 000000 EE MOV A,R6
|
|
\ 000001 2402 ADD A,#0x2
|
|
\ 000003 FA MOV R2,A
|
|
\ 000004 E4 CLR A
|
|
\ 000005 3F ADDC A,R7
|
|
\ 000006 FB MOV R3,A
|
|
\ 000007 EE MOV A,R6
|
|
\ 000008 240F ADD A,#0xf
|
|
\ 00000A F582 MOV DPL,A
|
|
\ 00000C E4 CLR A
|
|
\ 00000D 3F ADDC A,R7
|
|
\ 00000E F583 MOV DPH,A
|
|
\ 000010 E0 MOVX A,@DPTR
|
|
\ 000011 F9 MOV R1,A
|
|
\ 000012 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine173:
|
|
\ 000000 F583 MOV DPH,A
|
|
\ 000002 12.... LCALL ?Subroutine212 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_339:
|
|
\ 000005 12.... LCALL ??Subroutine276_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_682:
|
|
\ 000008 F8 MOV R0,A
|
|
\ 000009 E4 CLR A
|
|
\ 00000A C8 XCH A,R0
|
|
\ 00000B F9 MOV R1,A
|
|
\ 00000C EA MOV A,R2
|
|
\ 00000D 28 ADD A,R0
|
|
\ 00000E 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine212:
|
|
\ 000000 12.... LCALL ?Subroutine217 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_642:
|
|
\ 000003 8882 MOV DPL,R0
|
|
\ 000005 F583 MOV DPH,A
|
|
\ 000007 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine201:
|
|
\ 000000 EA MOV A,R2
|
|
\ 000001 REQUIRE ??Subroutine243_0
|
|
\ 000001 ; // Fall through to label ??Subroutine243_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine243_0:
|
|
\ 000000 12.... LCALL ?Subroutine214 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_700:
|
|
\ 000003 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine214:
|
|
\ 000000 2413 ADD A,#0x13
|
|
\ 000002 F582 MOV DPL,A
|
|
\ 000004 E4 CLR A
|
|
\ 000005 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine276_0:
|
|
\ 000000 E0 MOVX A,@DPTR
|
|
\ 000001 FA MOV R2,A
|
|
\ 000002 A3 INC DPTR
|
|
\ 000003 E0 MOVX A,@DPTR
|
|
\ 000004 22 RET
|
|
644
|
|
645 /*********************************************************************
|
|
646 * @fn ZDO_ProcessPowerDescReq
|
|
647 *
|
|
648 * @brief This function processes and responds to the
|
|
649 * Node_Power_req message.
|
|
650 *
|
|
651 * @param inMsg - incoming request
|
|
652 *
|
|
653 * @return none
|
|
654 */
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
655 void ZDO_ProcessPowerDescReq( zdoIncomingMsg_t *inMsg )
|
|
\ ZDO_ProcessPowerDescReq:
|
|
656 {
|
|
\ 000000 REQUIRE ?V0
|
|
\ 000000 REQUIRE ?V1
|
|
\ 000000 74F6 MOV A,#-0xa
|
|
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
|
\ 000005 ; Saved register size: 10
|
|
\ 000005 ; Auto size: 0
|
|
\ 000005 12.... LCALL ?Subroutine57 & 0xFFFF
|
|
657 uint16 aoi = BUILD_UINT16( inMsg->asdu[0], inMsg->asdu[1] );
|
|
658 NodePowerDescriptorFormat_t *desc = NULL;
|
|
659
|
|
660 if ( aoi == ZDAppNwkAddr.addr.shortAddr )
|
|
\ ??CrossCallReturnLabel_83:
|
|
\ 000008 7003 JNZ ??ZDO_ProcessPowerDescReq_0
|
|
\ 00000A A3 INC DPTR
|
|
\ 00000B E0 MOVX A,@DPTR
|
|
\ 00000C 6D XRL A,R5
|
|
\ ??ZDO_ProcessPowerDescReq_0:
|
|
\ 00000D 7017 JNZ ??ZDO_ProcessPowerDescReq_1
|
|
661 {
|
|
662 desc = &ZDO_Config_Power_Descriptor;
|
|
663 }
|
|
664
|
|
665 if ( desc != NULL )
|
|
666 {
|
|
667 ZDP_PowerDescMsg( inMsg, aoi, desc );
|
|
\ 00000F ; Setup parameters for call to function ZDP_PowerDescMsg
|
|
\ 00000F 75.... MOV ?V0,#ZDO_Config_Power_Descriptor & 0xff
|
|
\ 000012 75.... MOV ?V1,#(ZDO_Config_Power_Descriptor >> 8) & 0xff
|
|
\ 000015 78.. MOV R0,#?V0
|
|
\ 000017 12.... LCALL ?PUSH_XSTACK_I_TWO
|
|
\ 00001A EE MOV A,R6
|
|
\ 00001B FA MOV R2,A
|
|
\ 00001C 12.... LCALL `??ZDP_PowerDescMsg::?relay`; Banked call to: ZDP_PowerDescMsg
|
|
\ 00001F 7402 MOV A,#0x2
|
|
\ 000021 12.... LCALL ?DEALLOC_XSTACK8
|
|
\ 000024 801A SJMP ??ZDO_ProcessPowerDescReq_2
|
|
668 }
|
|
669 else
|
|
670 {
|
|
671 ZDP_GenericRsp( inMsg->TransSeq, &(inMsg->srcAddr),
|
|
672 ZDP_INVALID_REQTYPE, aoi, Power_Desc_rsp, inMsg->SecurityUse );
|
|
\ ??ZDO_ProcessPowerDescReq_1:
|
|
\ 000026 ; Setup parameters for call to function ZDP_GenericRsp
|
|
\ 000026 75..03 MOV ?V0,#0x3
|
|
\ 000029 75..80 MOV ?V1,#-0x80
|
|
\ 00002C 78.. MOV R0,#?V0
|
|
\ 00002E 12.... LCALL ?PUSH_XSTACK_I_TWO
|
|
\ 000031 8A.. MOV ?V0,R2
|
|
\ 000033 89.. MOV ?V1,R1
|
|
\ 000035 78.. MOV R0,#?V0
|
|
\ 000037 12.... LCALL ?PUSH_XSTACK_I_TWO
|
|
\ 00003A 12.... LCALL ?Subroutine58 & 0xFFFF
|
|
673 }
|
|
\ ??CrossCallReturnLabel_85:
|
|
\ 00003D 12.... LCALL ?DEALLOC_XSTACK8
|
|
674 }
|
|
\ ??ZDO_ProcessPowerDescReq_2:
|
|
\ 000040 80.. SJMP ??Subroutine222_0
|
|
675
|
|
676 /*********************************************************************
|
|
677 * @fn ZDO_ProcessSimpleDescReq
|
|
678 *
|
|
679 * @brief This function processes and responds to the
|
|
680 * Simple_Desc_req message.
|
|
681 *
|
|
682 * @param inMsg - incoming message (request)
|
|
683 *
|
|
684 * @return none
|
|
685 */
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine4:
|
|
\ 000000 7402 MOV A,#0x2
|
|
\ 000002 REQUIRE ??Subroutine221_0
|
|
\ 000002 ; // Fall through to label ??Subroutine221_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine221_0:
|
|
\ 000000 12.... LCALL ?DEALLOC_XSTACK8
|
|
\ 000003 REQUIRE ??Subroutine222_0
|
|
\ 000003 ; // Fall through to label ??Subroutine222_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
686 void ZDO_ProcessSimpleDescReq( zdoIncomingMsg_t *inMsg )
|
|
\ ZDO_ProcessSimpleDescReq:
|
|
687 {
|
|
\ 000000 REQUIRE ?V0
|
|
\ 000000 REQUIRE ?V1
|
|
\ 000000 74F6 MOV A,#-0xa
|
|
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
|
\ 000005 ; Saved register size: 10
|
|
\ 000005 ; Auto size: 2
|
|
\ 000005 74FE MOV A,#-0x2
|
|
\ 000007 12.... LCALL ?ALLOC_XSTACK8
|
|
\ 00000A EA MOV A,R2
|
|
\ 00000B FE MOV R6,A
|
|
\ 00000C EB MOV A,R3
|
|
\ 00000D FF MOV R7,A
|
|
688 SimpleDescriptionFormat_t *sDesc = NULL;
|
|
\ 00000E 85..82 MOV DPL,?XSP + 0
|
|
\ 000011 85..83 MOV DPH,?XSP + 1
|
|
\ 000014 E4 CLR A
|
|
\ 000015 F0 MOVX @DPTR,A
|
|
\ 000016 A3 INC DPTR
|
|
\ 000017 F0 MOVX @DPTR,A
|
|
689 uint16 aoi = BUILD_UINT16( inMsg->asdu[0], inMsg->asdu[1] );
|
|
\ 000018 12.... LCALL ?Subroutine133 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_356:
|
|
\ 00001B 12.... LCALL ?Subroutine82 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_130:
|
|
\ 00001E FB MOV R3,A
|
|
\ 00001F EC MOV A,R4
|
|
\ 000020 FA MOV R2,A
|
|
690 byte endPoint = inMsg->asdu[2];
|
|
\ 000021 8882 MOV DPL,R0
|
|
\ 000023 8983 MOV DPH,R1
|
|
\ 000025 A3 INC DPTR
|
|
\ 000026 A3 INC DPTR
|
|
\ 000027 E0 MOVX A,@DPTR
|
|
\ 000028 F9 MOV R1,A
|
|
691 byte free = false;
|
|
\ 000029 75..00 MOV ?V1,#0x0
|
|
692 byte stat = ZDP_SUCCESS;
|
|
\ 00002C 75..00 MOV ?V0,#0x0
|
|
693
|
|
694 if ( (endPoint == ZDO_EP) || (endPoint > MAX_ENDPOINTS) )
|
|
\ 00002F 6005 JZ ??ZDO_ProcessSimpleDescReq_0
|
|
\ 000031 C3 CLR C
|
|
\ 000032 94F1 SUBB A,#-0xf
|
|
\ 000034 4005 JC ??ZDO_ProcessSimpleDescReq_1
|
|
695 {
|
|
696 stat = ZDP_INVALID_EP;
|
|
\ ??ZDO_ProcessSimpleDescReq_0:
|
|
\ 000036 75..82 MOV ?V0,#-0x7e
|
|
\ 000039 802A SJMP ??ZDO_ProcessSimpleDescReq_2
|
|
697 }
|
|
698 else if ( aoi == ZDAppNwkAddr.addr.shortAddr )
|
|
\ ??ZDO_ProcessSimpleDescReq_1:
|
|
\ 00003B 90.... MOV DPTR,#ZDAppNwkAddr
|
|
\ 00003E E0 MOVX A,@DPTR
|
|
\ 00003F 6A XRL A,R2
|
|
\ 000040 7003 JNZ ??ZDO_ProcessSimpleDescReq_3
|
|
\ 000042 A3 INC DPTR
|
|
\ 000043 E0 MOVX A,@DPTR
|
|
\ 000044 6B XRL A,R3
|
|
\ ??ZDO_ProcessSimpleDescReq_3:
|
|
\ 000045 701B JNZ ??ZDO_ProcessSimpleDescReq_4
|
|
699 {
|
|
700 free = afFindSimpleDesc( &sDesc, endPoint );
|
|
\ 000047 ; Setup parameters for call to function afFindSimpleDesc
|
|
\ 000047 AA.. MOV R2,?XSP + 0
|
|
\ 000049 AB.. MOV R3,?XSP + 1
|
|
\ 00004B 12.... LCALL `??afFindSimpleDesc::?relay`; Banked call to: afFindSimpleDesc
|
|
\ 00004E E9 MOV A,R1
|
|
\ 00004F FA MOV R2,A
|
|
701 if ( sDesc == NULL )
|
|
\ 000050 85..82 MOV DPL,?XSP + 0
|
|
\ 000053 85..83 MOV DPH,?XSP + 1
|
|
\ 000056 12.... LCALL ??Subroutine255_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_489:
|
|
\ 000059 7003 JNZ ??ZDO_ProcessSimpleDescReq_5
|
|
702 {
|
|
703 stat = ZDP_NOT_ACTIVE;
|
|
\ 00005B 75..83 MOV ?V0,#-0x7d
|
|
\ ??ZDO_ProcessSimpleDescReq_5:
|
|
\ 00005E 8A.. MOV ?V1,R2
|
|
\ 000060 8003 SJMP ??ZDO_ProcessSimpleDescReq_2
|
|
704 }
|
|
705 }
|
|
706 else
|
|
707 {
|
|
708 if ( ZSTACK_ROUTER_BUILD )
|
|
709 {
|
|
710 stat = ZDP_DEVICE_NOT_FOUND;
|
|
711 }
|
|
712 else if ( ZSTACK_END_DEVICE_BUILD )
|
|
713 {
|
|
714 stat = ZDP_INVALID_REQTYPE;
|
|
\ ??ZDO_ProcessSimpleDescReq_4:
|
|
\ 000062 75..80 MOV ?V0,#-0x80
|
|
715 }
|
|
716 }
|
|
717
|
|
718 ZDP_SimpleDescMsg( inMsg, stat, sDesc );
|
|
\ ??ZDO_ProcessSimpleDescReq_2:
|
|
\ 000065 ; Setup parameters for call to function ZDP_SimpleDescMsg
|
|
\ 000065 85..82 MOV DPL,?XSP + 0
|
|
\ 000068 85..83 MOV DPH,?XSP + 1
|
|
\ 00006B 12.... LCALL ?Subroutine186 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_301:
|
|
\ 00006E A9.. MOV R1,?V0
|
|
\ 000070 EE MOV A,R6
|
|
\ 000071 FA MOV R2,A
|
|
\ 000072 EF MOV A,R7
|
|
\ 000073 FB MOV R3,A
|
|
\ 000074 12.... LCALL `??ZDP_SimpleDescMsg::?relay`; Banked call to: ZDP_SimpleDescMsg
|
|
719
|
|
720 if ( free && sDesc )
|
|
\ 000077 E5.. MOV A,?V1
|
|
\ 000079 6014 JZ ??CrossCallReturnLabel_404
|
|
\ 00007B 85..82 MOV DPL,?XSP + 0
|
|
\ 00007E 85..83 MOV DPH,?XSP + 1
|
|
\ 000081 12.... LCALL ??Subroutine255_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_490:
|
|
\ 000084 6009 JZ ??CrossCallReturnLabel_404
|
|
721 {
|
|
722 osal_mem_free( sDesc );
|
|
\ 000086 ; Setup parameters for call to function osal_mem_free
|
|
\ 000086 85..82 MOV DPL,?XSP + 0
|
|
\ 000089 85..83 MOV DPH,?XSP + 1
|
|
\ 00008C 12.... LCALL ??Subroutine237_0 & 0xFFFF
|
|
723 }
|
|
724 }
|
|
\ ??CrossCallReturnLabel_404:
|
|
\ 00008F 02.... LJMP ?Subroutine4 & 0xFFFF
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine133:
|
|
\ 000000 EA MOV A,R2
|
|
\ 000001 REQUIRE ??Subroutine223_0
|
|
\ 000001 ; // Fall through to label ??Subroutine223_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine223_0:
|
|
\ 000000 12.... LCALL ??Subroutine243_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_446:
|
|
\ 000003 3F ADDC A,R7
|
|
\ 000004 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine237_0:
|
|
\ 000000 12.... LCALL ?Subroutine176 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_543:
|
|
\ 000003 12.... LCALL `??osal_mem_free::?relay`; Banked call to: osal_mem_free
|
|
\ 000006 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine82:
|
|
\ 000000 12.... LCALL ?Subroutine183 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_637:
|
|
\ 000003 8882 MOV DPL,R0
|
|
\ 000005 F583 MOV DPH,A
|
|
\ 000007 E0 MOVX A,@DPTR
|
|
\ 000008 FC MOV R4,A
|
|
\ 000009 A3 INC DPTR
|
|
\ 00000A E0 MOVX A,@DPTR
|
|
\ 00000B 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine176:
|
|
\ 000000 12.... LCALL ??Subroutine276_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_685:
|
|
\ 000003 FB MOV R3,A
|
|
\ 000004 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine255_0:
|
|
\ 000000 12.... LCALL ??Subroutine278_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_639:
|
|
\ 000003 E8 MOV A,R0
|
|
\ 000004 49 ORL A,R1
|
|
\ 000005 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine183:
|
|
\ 000000 F583 MOV DPH,A
|
|
\ 000002 REQUIRE ??Subroutine278_0
|
|
\ 000002 ; // Fall through to label ??Subroutine278_0
|
|
725
|
|
726 /*********************************************************************
|
|
727 * @fn ZDO_ProcessActiveEPReq
|
|
728 *
|
|
729 * @brief This function processes and responds to the
|
|
730 * Active_EP_req message.
|
|
731 *
|
|
732 * @param inMsg - incoming message (request)
|
|
733 *
|
|
734 * @return none
|
|
735 */
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
736 void ZDO_ProcessActiveEPReq( zdoIncomingMsg_t *inMsg )
|
|
\ ZDO_ProcessActiveEPReq:
|
|
737 {
|
|
\ 000000 REQUIRE ?V0
|
|
\ 000000 REQUIRE ?V1
|
|
\ 000000 REQUIRE ?V2
|
|
\ 000000 REQUIRE ?V3
|
|
\ 000000 REQUIRE ?V4
|
|
\ 000000 REQUIRE ?V5
|
|
\ 000000 74F2 MOV A,#-0xe
|
|
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
|
\ 000005 ; Saved register size: 14
|
|
\ 000005 ; Auto size: 0
|
|
\ 000005 8A.. MOV ?V4,R2
|
|
\ 000007 8B.. MOV ?V5,R3
|
|
738 byte cnt = 0;
|
|
\ 000009 75..00 MOV ?V0,#0x0
|
|
739 uint16 aoi;
|
|
740 byte stat = ZDP_SUCCESS;
|
|
\ 00000C 75..00 MOV ?V1,#0x0
|
|
741
|
|
742 aoi = BUILD_UINT16( inMsg->asdu[0], inMsg->asdu[1] );
|
|
\ 00000F 12.... LCALL ??Subroutine242_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_441:
|
|
\ 000012 35.. ADDC A,?V5
|
|
\ 000014 12.... LCALL ?Subroutine69 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_106:
|
|
\ 000017 FE MOV R6,A
|
|
\ 000018 E4 CLR A
|
|
\ 000019 39 ADDC A,R1
|
|
\ 00001A FF MOV R7,A
|
|
743
|
|
744 if ( aoi == NLME_GetShortAddr() )
|
|
\ 00001B ; Setup parameters for call to function NLME_GetShortAddr
|
|
\ 00001B 12.... LCALL `??NLME_GetShortAddr::?relay`; Banked call to: NLME_GetShortAddr
|
|
\ 00001E EA MOV A,R2
|
|
\ 00001F 6E XRL A,R6
|
|
\ 000020 7002 JNZ ??ZDO_ProcessActiveEPReq_0
|
|
\ 000022 EB MOV A,R3
|
|
\ 000023 6F XRL A,R7
|
|
\ ??ZDO_ProcessActiveEPReq_0:
|
|
\ 000024 7012 JNZ ??ZDO_ProcessActiveEPReq_1
|
|
745 {
|
|
746 cnt = afNumEndPoints() - 1; // -1 for ZDO endpoint descriptor
|
|
\ 000026 ; Setup parameters for call to function afNumEndPoints
|
|
\ 000026 12.... LCALL `??afNumEndPoints::?relay`; Banked call to: afNumEndPoints
|
|
\ 000029 E9 MOV A,R1
|
|
\ 00002A 14 DEC A
|
|
\ 00002B F5.. MOV ?V0,A
|
|
747 afEndPoints( (uint8 *)ZDOBuildBuf, true );
|
|
\ 00002D ; Setup parameters for call to function afEndPoints
|
|
\ 00002D 7901 MOV R1,#0x1
|
|
\ 00002F 7A.. MOV R2,#ZDOBuildBuf & 0xff
|
|
\ 000031 7B.. MOV R3,#(ZDOBuildBuf >> 8) & 0xff
|
|
\ 000033 12.... LCALL `??afEndPoints::?relay`; Banked call to: afEndPoints
|
|
\ 000036 8003 SJMP ??ZDO_ProcessActiveEPReq_2
|
|
748 }
|
|
749 else
|
|
750 {
|
|
751 stat = ZDP_INVALID_REQTYPE;
|
|
\ ??ZDO_ProcessActiveEPReq_1:
|
|
\ 000038 75..80 MOV ?V1,#-0x80
|
|
752 }
|
|
753
|
|
754 ZDP_ActiveEPRsp( inMsg->TransSeq, &(inMsg->srcAddr), stat,
|
|
755 aoi, cnt, (uint8 *)ZDOBuildBuf, inMsg->SecurityUse );
|
|
\ ??ZDO_ProcessActiveEPReq_2:
|
|
\ 00003B ; Setup parameters for call to function ZDP_EPRsp
|
|
\ 00003B 12.... LCALL ?Subroutine145 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_614:
|
|
\ 00003E 35.. ADDC A,?V5
|
|
\ 000040 12.... LCALL ??Subroutine227_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_364:
|
|
\ 000043 12.... LCALL ?PUSH_XSTACK_I_ONE
|
|
\ 000046 75.... MOV ?V2,#ZDOBuildBuf & 0xff
|
|
\ 000049 75.... MOV ?V3,#(ZDOBuildBuf >> 8) & 0xff
|
|
\ 00004C 78.. MOV R0,#?V2
|
|
\ 00004E 12.... LCALL ?PUSH_XSTACK_I_TWO
|
|
\ 000051 78.. MOV R0,#?V0
|
|
\ 000053 12.... LCALL ?PUSH_XSTACK_I_ONE
|
|
\ 000056 8E.. MOV ?V2,R6
|
|
\ 000058 8F.. MOV ?V3,R7
|
|
\ 00005A 78.. MOV R0,#?V2
|
|
\ 00005C 12.... LCALL ?PUSH_XSTACK_I_TWO
|
|
\ 00005F E5.. MOV A,?V1
|
|
\ 000061 F5.. MOV ?V0,A
|
|
\ 000063 78.. MOV R0,#?V0
|
|
\ 000065 12.... LCALL ?PUSH_XSTACK_I_ONE
|
|
\ 000068 12.... LCALL ?Subroutine142 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_228:
|
|
\ 00006B 12.... LCALL ?Subroutine199 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_320:
|
|
\ 00006E F9 MOV R1,A
|
|
\ 00006F 7A05 MOV R2,#0x5
|
|
\ 000071 7B80 MOV R3,#-0x80
|
|
\ 000073 12.... LCALL `??ZDP_EPRsp::?relay`; Banked call to: ZDP_EPRsp
|
|
\ 000076 7407 MOV A,#0x7
|
|
\ 000078 02.... LJMP ?Subroutine5 & 0xFFFF
|
|
756 }
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine227_0:
|
|
\ 000000 F583 MOV DPH,A
|
|
\ 000002 E0 MOVX A,@DPTR
|
|
\ 000003 F5.. MOV ?V2,A
|
|
\ 000005 78.. MOV R0,#?V2
|
|
\ 000007 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine69:
|
|
\ 000000 12.... LCALL ?Subroutine173 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_287:
|
|
\ 000003 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine142:
|
|
\ 000000 E5.. MOV A,?V4
|
|
\ 000002 2402 ADD A,#0x2
|
|
\ 000004 FC MOV R4,A
|
|
\ 000005 E4 CLR A
|
|
\ 000006 35.. ADDC A,?V5
|
|
\ 000008 FD MOV R5,A
|
|
\ 000009 E5.. MOV A,?V4
|
|
\ 00000B 240F ADD A,#0xf
|
|
\ 00000D 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine242_0:
|
|
\ 000000 12.... LCALL ?Subroutine201 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_448:
|
|
\ 000003 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine199:
|
|
\ 000000 F582 MOV DPL,A
|
|
\ 000002 E4 CLR A
|
|
\ 000003 35.. ADDC A,?V5
|
|
\ 000005 F583 MOV DPH,A
|
|
\ 000007 E0 MOVX A,@DPTR
|
|
\ 000008 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine145:
|
|
\ 000000 E5.. MOV A,?V4
|
|
\ 000002 REQUIRE ??Subroutine271_0
|
|
\ 000002 ; // Fall through to label ??Subroutine271_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine271_0:
|
|
\ 000000 240E ADD A,#0xe
|
|
\ 000002 F582 MOV DPL,A
|
|
\ 000004 E4 CLR A
|
|
\ 000005 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine5:
|
|
\ 000000 12.... LCALL ?DEALLOC_XSTACK8
|
|
\ 000003 REQUIRE ??Subroutine292_0
|
|
\ 000003 ; // Fall through to label ??Subroutine292_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine292_0:
|
|
\ 000000 7F06 MOV R7,#0x6
|
|
\ 000002 02.... LJMP ?BANKED_LEAVE_XDATA
|
|
757
|
|
758 /*********************************************************************
|
|
759 * @fn ZDO_ConvertOTAClusters
|
|
760 *
|
|
761 * @brief This function will convert the over-the-air cluster list
|
|
762 * format to an internal format.
|
|
763 *
|
|
764 * @param inMsg - incoming message (request)
|
|
765 *
|
|
766 * @return pointer to incremented inBuf
|
|
767 */
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
768 uint8 *ZDO_ConvertOTAClusters( uint8 cnt, uint8 *inBuf, uint16 *outList )
|
|
\ ZDO_ConvertOTAClusters:
|
|
769 {
|
|
\ 000000 REQUIRE ?V0
|
|
\ 000000 REQUIRE ?V1
|
|
\ 000000 74F6 MOV A,#-0xa
|
|
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
|
\ 000005 ; Saved register size: 10
|
|
\ 000005 ; Auto size: 0
|
|
\ 000005 E9 MOV A,R1
|
|
\ 000006 FF MOV R7,A
|
|
770 uint8 x;
|
|
771
|
|
772 for ( x = 0; x < cnt; x++ )
|
|
\ 000007 7E00 MOV R6,#0x0
|
|
\ 000009 802F SJMP ??ZDO_ConvertOTAClusters_0
|
|
773 {
|
|
774 // convert ota format to internal
|
|
775 outList[x] = BUILD_UINT16( inBuf[0], inBuf[1] );
|
|
\ ??ZDO_ConvertOTAClusters_1:
|
|
\ 00000B 8A82 MOV DPL,R2
|
|
\ 00000D 8B83 MOV DPH,R3
|
|
\ 00000F E0 MOVX A,@DPTR
|
|
\ 000010 F5.. MOV ?V0,A
|
|
\ 000012 A3 INC DPTR
|
|
\ 000013 E0 MOVX A,@DPTR
|
|
\ 000014 F8 MOV R0,A
|
|
\ 000015 E4 CLR A
|
|
\ 000016 C8 XCH A,R0
|
|
\ 000017 F9 MOV R1,A
|
|
\ 000018 E5.. MOV A,?V0
|
|
\ 00001A 28 ADD A,R0
|
|
\ 00001B E4 CLR A
|
|
\ 00001C 39 ADDC A,R1
|
|
\ 00001D F5.. MOV ?V1,A
|
|
\ 00001F EE MOV A,R6
|
|
\ 000020 12.... LCALL ?Subroutine196 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_314:
|
|
\ 000023 EC MOV A,R4
|
|
\ 000024 28 ADD A,R0
|
|
\ 000025 F582 MOV DPL,A
|
|
\ 000027 ED MOV A,R5
|
|
\ 000028 39 ADDC A,R1
|
|
\ 000029 F583 MOV DPH,A
|
|
\ 00002B E5.. MOV A,?V0
|
|
\ 00002D F0 MOVX @DPTR,A
|
|
\ 00002E A3 INC DPTR
|
|
\ 00002F E5.. MOV A,?V1
|
|
\ 000031 F0 MOVX @DPTR,A
|
|
776 inBuf += sizeof( uint16 );
|
|
\ 000032 EA MOV A,R2
|
|
\ 000033 2402 ADD A,#0x2
|
|
\ 000035 FA MOV R2,A
|
|
\ 000036 5001 JNC ??ZDO_ConvertOTAClusters_2
|
|
\ 000038 0B INC R3
|
|
777 }
|
|
\ ??ZDO_ConvertOTAClusters_2:
|
|
\ 000039 0E INC R6
|
|
\ ??ZDO_ConvertOTAClusters_0:
|
|
\ 00003A EE MOV A,R6
|
|
\ 00003B C3 CLR C
|
|
\ 00003C 9F SUBB A,R7
|
|
\ 00003D 40CC JC ??ZDO_ConvertOTAClusters_1
|
|
778 return ( inBuf );
|
|
\ 00003F 02.... LJMP ??Subroutine222_0 & 0xFFFF
|
|
779 }
|
|
780
|
|
781 /*********************************************************************
|
|
782 * @fn ZDO_ProcessMatchDescReq
|
|
783 *
|
|
784 * @brief This function processes and responds to the
|
|
785 * Match_Desc_req message.
|
|
786 *
|
|
787 * @param inMsg - incoming message (request)
|
|
788 *
|
|
789 * @return none
|
|
790 */
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
791 void ZDO_ProcessMatchDescReq( zdoIncomingMsg_t *inMsg )
|
|
\ ZDO_ProcessMatchDescReq:
|
|
792 {
|
|
\ 000000 REQUIRE ?V0
|
|
\ 000000 REQUIRE ?V1
|
|
\ 000000 REQUIRE ?V2
|
|
\ 000000 REQUIRE ?V3
|
|
\ 000000 REQUIRE ?V4
|
|
\ 000000 REQUIRE ?V5
|
|
\ 000000 REQUIRE ?V6
|
|
\ 000000 REQUIRE ?V7
|
|
\ 000000 74F0 MOV A,#-0x10
|
|
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
|
\ 000005 ; Saved register size: 16
|
|
\ 000005 ; Auto size: 13
|
|
\ 000005 74F3 MOV A,#-0xd
|
|
\ 000007 12.... LCALL ?ALLOC_XSTACK8
|
|
\ 00000A 7402 MOV A,#0x2
|
|
\ 00000C 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 00000F 12.... LCALL ??Subroutine238_0 & 0xFFFF
|
|
793 uint8 epCnt = 0;
|
|
\ ??CrossCallReturnLabel_416:
|
|
\ 000012 7408 MOV A,#0x8
|
|
\ 000014 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000017 E4 CLR A
|
|
\ 000018 F0 MOVX @DPTR,A
|
|
794 uint8 numInClusters;
|
|
795 uint16 *inClusters = NULL;
|
|
\ 000019 740B MOV A,#0xb
|
|
\ 00001B 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 00001E E4 CLR A
|
|
\ 00001F F0 MOVX @DPTR,A
|
|
\ 000020 A3 INC DPTR
|
|
\ 000021 F0 MOVX @DPTR,A
|
|
796 uint8 numOutClusters;
|
|
797 uint16 *outClusters = NULL;
|
|
\ 000022 7409 MOV A,#0x9
|
|
\ 000024 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000027 E4 CLR A
|
|
\ 000028 F0 MOVX @DPTR,A
|
|
\ 000029 A3 INC DPTR
|
|
\ 00002A F0 MOVX @DPTR,A
|
|
798 epList_t *epDesc;
|
|
799 SimpleDescriptionFormat_t *sDesc = NULL;
|
|
800 uint8 allocated;
|
|
801 uint8 *msg;
|
|
802 uint16 aoi;
|
|
803 uint16 profileID;
|
|
804
|
|
805 // Parse the incoming message
|
|
806 msg = inMsg->asdu;
|
|
\ 00002B 7402 MOV A,#0x2
|
|
\ 00002D 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000030 12.... LCALL ?Subroutine84 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_131:
|
|
\ 000033 12.... LCALL ??Subroutine220_0 & 0xFFFF
|
|
807 aoi = BUILD_UINT16( msg[0], msg[1] );
|
|
\ ??CrossCallReturnLabel_351:
|
|
\ 000036 85..82 MOV DPL,?V0
|
|
\ 000039 F583 MOV DPH,A
|
|
\ 00003B 12.... LCALL ?Subroutine113 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_362:
|
|
\ 00003E 28 ADD A,R0
|
|
\ 00003F FE MOV R6,A
|
|
\ 000040 E4 CLR A
|
|
\ 000041 39 ADDC A,R1
|
|
\ 000042 FF MOV R7,A
|
|
808 profileID = BUILD_UINT16( msg[2], msg[3] );
|
|
\ 000043 85..82 MOV DPL,?V0
|
|
\ 000046 85..83 MOV DPH,?V1
|
|
\ 000049 A3 INC DPTR
|
|
\ 00004A A3 INC DPTR
|
|
\ 00004B E0 MOVX A,@DPTR
|
|
\ 00004C FA MOV R2,A
|
|
\ 00004D 85..82 MOV DPL,?V0
|
|
\ 000050 85..83 MOV DPH,?V1
|
|
\ 000053 A3 INC DPTR
|
|
\ 000054 A3 INC DPTR
|
|
\ 000055 A3 INC DPTR
|
|
\ 000056 E0 MOVX A,@DPTR
|
|
\ 000057 F9 MOV R1,A
|
|
\ 000058 EA MOV A,R2
|
|
\ 000059 F5.. MOV ?V4,A
|
|
\ 00005B E4 CLR A
|
|
\ 00005C 39 ADDC A,R1
|
|
\ 00005D F5.. MOV ?V5,A
|
|
809 msg += 4;
|
|
810
|
|
811 if ( ADDR_BCAST_NOT_ME == NLME_IsAddressBroadcast(aoi) )
|
|
\ 00005F ; Setup parameters for call to function NLME_IsAddressBroadcast
|
|
\ 00005F EE MOV A,R6
|
|
\ 000060 FA MOV R2,A
|
|
\ 000061 EF MOV A,R7
|
|
\ 000062 FB MOV R3,A
|
|
\ 000063 12.... LCALL `??NLME_IsAddressBroadcast::?relay`; Banked call to: NLME_IsAddressBroadcast
|
|
\ 000066 E9 MOV A,R1
|
|
\ 000067 6401 XRL A,#0x1
|
|
\ 000069 6016 JZ ??ZDO_ProcessMatchDescReq_0
|
|
812 {
|
|
813 ZDP_MatchDescRsp( inMsg->TransSeq, &(inMsg->srcAddr), ZDP_INVALID_REQTYPE,
|
|
814 ZDAppNwkAddr.addr.shortAddr, 0, NULL, inMsg->SecurityUse );
|
|
815 return;
|
|
816 }
|
|
817 else if ( (ADDR_NOT_BCAST == NLME_IsAddressBroadcast(aoi)) && (aoi != ZDAppNwkAddr.addr.shortAddr) )
|
|
\ 00006B ; Setup parameters for call to function NLME_IsAddressBroadcast
|
|
\ 00006B EE MOV A,R6
|
|
\ 00006C FA MOV R2,A
|
|
\ 00006D EF MOV A,R7
|
|
\ 00006E FB MOV R3,A
|
|
\ 00006F 12.... LCALL `??NLME_IsAddressBroadcast::?relay`; Banked call to: NLME_IsAddressBroadcast
|
|
\ 000072 E9 MOV A,R1
|
|
\ 000073 7048 JNZ ??ZDO_ProcessMatchDescReq_1
|
|
\ 000075 90.... MOV DPTR,#ZDAppNwkAddr
|
|
\ 000078 E0 MOVX A,@DPTR
|
|
\ 000079 6E XRL A,R6
|
|
\ 00007A 7003 JNZ ??ZDO_ProcessMatchDescReq_2
|
|
\ 00007C A3 INC DPTR
|
|
\ 00007D E0 MOVX A,@DPTR
|
|
\ 00007E 6F XRL A,R7
|
|
\ ??ZDO_ProcessMatchDescReq_2:
|
|
\ 00007F 603C JZ ??ZDO_ProcessMatchDescReq_1
|
|
818 {
|
|
819 ZDP_MatchDescRsp( inMsg->TransSeq, &(inMsg->srcAddr), ZDP_INVALID_REQTYPE,
|
|
820 ZDAppNwkAddr.addr.shortAddr, 0, NULL, inMsg->SecurityUse );
|
|
\ ??ZDO_ProcessMatchDescReq_0:
|
|
\ 000081 ; Setup parameters for call to function ZDP_EPRsp
|
|
\ 000081 7402 MOV A,#0x2
|
|
\ 000083 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000086 12.... LCALL ?Subroutine54 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_73:
|
|
\ 000089 12.... LCALL ?PUSH_XSTACK_I_ONE
|
|
\ 00008C E4 CLR A
|
|
\ 00008D F5.. MOV ?V0,A
|
|
\ 00008F F5.. MOV ?V1,A
|
|
\ 000091 78.. MOV R0,#?V0
|
|
\ 000093 12.... LCALL ?PUSH_XSTACK_I_TWO
|
|
\ 000096 78.. MOV R0,#?V0
|
|
\ 000098 12.... LCALL ?PUSH_XSTACK_I_ONE
|
|
\ 00009B 90.... MOV DPTR,#ZDAppNwkAddr
|
|
\ 00009E 12.... LCALL ?PUSH_XSTACK8_X_TWO
|
|
\ 0000A1 75..80 MOV ?V0,#-0x80
|
|
\ 0000A4 78.. MOV R0,#?V0
|
|
\ 0000A6 12.... LCALL ?PUSH_XSTACK_I_ONE
|
|
\ 0000A9 7409 MOV A,#0x9
|
|
\ 0000AB 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 0000AE 12.... LCALL ?Subroutine103 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_169:
|
|
\ 0000B1 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 0000B4 12.... LCALL ?Subroutine62 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_93:
|
|
\ 0000B7 12.... LCALL ?DEALLOC_XSTACK8
|
|
821 return;
|
|
\ 0000BA 02.... LJMP ??CrossCallReturnLabel_407 & 0xFFFF
|
|
822 }
|
|
823
|
|
824 if ((numInClusters = *msg++) &&
|
|
825 (inClusters = (uint16*)osal_mem_alloc( numInClusters * sizeof( uint16 ) )))
|
|
\ ??ZDO_ProcessMatchDescReq_1:
|
|
\ 0000BD 85..82 MOV DPL,?V0
|
|
\ 0000C0 85..83 MOV DPH,?V1
|
|
\ 0000C3 A3 INC DPTR
|
|
\ 0000C4 A3 INC DPTR
|
|
\ 0000C5 A3 INC DPTR
|
|
\ 0000C6 A3 INC DPTR
|
|
\ 0000C7 12.... LCALL ?Subroutine121 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_198:
|
|
\ 0000CA E5.. MOV A,?V0
|
|
\ 0000CC 2405 ADD A,#0x5
|
|
\ 0000CE F5.. MOV ?V0,A
|
|
\ 0000D0 5002 JNC ??ZDO_ProcessMatchDescReq_3
|
|
\ 0000D2 05.. INC ?V1
|
|
\ ??ZDO_ProcessMatchDescReq_3:
|
|
\ 0000D4 E0 MOVX A,@DPTR
|
|
\ 0000D5 602C JZ ??ZDO_ProcessMatchDescReq_4
|
|
\ 0000D7 ; Setup parameters for call to function osal_mem_alloc
|
|
\ 0000D7 12.... LCALL ?Subroutine129 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_211:
|
|
\ 0000DA 740B MOV A,#0xb
|
|
\ 0000DC 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 0000DF 12.... LCALL ??Subroutine238_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_417:
|
|
\ 0000E2 740B MOV A,#0xb
|
|
\ 0000E4 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 0000E7 12.... LCALL ??Subroutine255_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_491:
|
|
\ 0000EA 6017 JZ ??ZDO_ProcessMatchDescReq_4
|
|
826 {
|
|
827 msg = ZDO_ConvertOTAClusters( numInClusters, msg, inClusters );
|
|
\ 0000EC ; Setup parameters for call to function ZDO_ConvertOTAClusters
|
|
\ 0000EC 740B MOV A,#0xb
|
|
\ 0000EE 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 0000F1 12.... LCALL ?Subroutine109 & 0xFFFF
|
|
828 }
|
|
\ ??CrossCallReturnLabel_181:
|
|
\ 0000F4 85..82 MOV DPL,?XSP + 0
|
|
\ 0000F7 85..83 MOV DPH,?XSP + 1
|
|
\ 0000FA 12.... LCALL ??Subroutine265_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_560:
|
|
\ 0000FD 8A.. MOV ?V0,R2
|
|
\ 0000FF 8B.. MOV ?V1,R3
|
|
\ 000101 8008 SJMP ??ZDO_ProcessMatchDescReq_5
|
|
829 else
|
|
830 {
|
|
831 numInClusters = 0;
|
|
\ ??ZDO_ProcessMatchDescReq_4:
|
|
\ 000103 85..82 MOV DPL,?XSP + 0
|
|
\ 000106 85..83 MOV DPH,?XSP + 1
|
|
\ 000109 E4 CLR A
|
|
\ 00010A F0 MOVX @DPTR,A
|
|
832 }
|
|
833
|
|
834 if ((numOutClusters = *msg++) &&
|
|
835 (outClusters = (uint16 *)osal_mem_alloc( numOutClusters * sizeof( uint16 ) )))
|
|
\ ??ZDO_ProcessMatchDescReq_5:
|
|
\ 00010B 85..82 MOV DPL,?V0
|
|
\ 00010E 85..83 MOV DPH,?V1
|
|
\ 000111 E0 MOVX A,@DPTR
|
|
\ 000112 C0E0 PUSH A
|
|
\ 000114 7401 MOV A,#0x1
|
|
\ 000116 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000119 D0E0 POP A
|
|
\ 00011B 12.... LCALL ?Subroutine48 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_70:
|
|
\ 00011E 8582.. MOV ?V0,DPL
|
|
\ 000121 8583.. MOV ?V1,DPH
|
|
\ 000124 7401 MOV A,#0x1
|
|
\ 000126 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000129 E0 MOVX A,@DPTR
|
|
\ 00012A 6027 JZ ??ZDO_ProcessMatchDescReq_6
|
|
\ 00012C ; Setup parameters for call to function osal_mem_alloc
|
|
\ 00012C 12.... LCALL ?Subroutine129 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_212:
|
|
\ 00012F 7409 MOV A,#0x9
|
|
\ 000131 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000134 12.... LCALL ??Subroutine238_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_418:
|
|
\ 000137 7409 MOV A,#0x9
|
|
\ 000139 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 00013C 12.... LCALL ??Subroutine255_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_492:
|
|
\ 00013F 6012 JZ ??ZDO_ProcessMatchDescReq_6
|
|
836 {
|
|
837 msg = ZDO_ConvertOTAClusters( numOutClusters, msg, outClusters );
|
|
\ 000141 ; Setup parameters for call to function ZDO_ConvertOTAClusters
|
|
\ 000141 7409 MOV A,#0x9
|
|
\ 000143 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000146 12.... LCALL ?Subroutine109 & 0xFFFF
|
|
838 }
|
|
\ ??CrossCallReturnLabel_182:
|
|
\ 000149 7401 MOV A,#0x1
|
|
\ 00014B 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 00014E 12.... LCALL ??Subroutine265_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_561:
|
|
\ 000151 8007 SJMP ??ZDO_ProcessMatchDescReq_7
|
|
839 else
|
|
840 {
|
|
841 numOutClusters = 0;
|
|
\ ??ZDO_ProcessMatchDescReq_6:
|
|
\ 000153 7401 MOV A,#0x1
|
|
\ 000155 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000158 E4 CLR A
|
|
\ 000159 F0 MOVX @DPTR,A
|
|
842 }
|
|
843
|
|
844 // First count the number of endpoints that match.
|
|
845 epDesc = epList;
|
|
\ ??ZDO_ProcessMatchDescReq_7:
|
|
\ 00015A 90.... MOV DPTR,#epList
|
|
\ 00015D 805F SJMP ??CrossCallReturnLabel_133
|
|
846 while ( epDesc )
|
|
847 {
|
|
848 // Don't search endpoint 0 and check if response is allowed
|
|
849 if ( epDesc->epDesc->endPoint != ZDO_EP && (epDesc->flags&eEP_AllowMatch) )
|
|
850 {
|
|
851 if ( epDesc->pfnDescCB )
|
|
852 {
|
|
853 sDesc = (SimpleDescriptionFormat_t *)epDesc->pfnDescCB( AF_DESCRIPTOR_SIMPLE, epDesc->epDesc->endPoint );
|
|
854 allocated = TRUE;
|
|
855 }
|
|
856 else
|
|
857 {
|
|
858 sDesc = epDesc->epDesc->simpleDesc;
|
|
859 allocated = FALSE;
|
|
860 }
|
|
861
|
|
862 if ( sDesc && sDesc->AppProfId == profileID )
|
|
863 {
|
|
864 uint8 *uint8Buf = (uint8 *)ZDOBuildBuf;
|
|
865
|
|
866 // Are there matching input clusters?
|
|
867 if ((ZDO_AnyClusterMatches( numInClusters, inClusters,
|
|
868 sDesc->AppNumInClusters, sDesc->pAppInClusterList )) ||
|
|
869 // Are there matching output clusters?
|
|
870 (ZDO_AnyClusterMatches( numOutClusters, outClusters,
|
|
871 sDesc->AppNumOutClusters, sDesc->pAppOutClusterList )))
|
|
872 {
|
|
873 // Notify the endpoint of the match.
|
|
874 uint8 bufLen = sizeof( ZDO_MatchDescRspSent_t ) + (numOutClusters + numInClusters) * sizeof(uint16);
|
|
875 ZDO_MatchDescRspSent_t *pRspSent = (ZDO_MatchDescRspSent_t *) osal_msg_allocate( bufLen );
|
|
876
|
|
877 if (pRspSent)
|
|
878 {
|
|
879 pRspSent->hdr.event = ZDO_MATCH_DESC_RSP_SENT;
|
|
880 pRspSent->nwkAddr = inMsg->srcAddr.addr.shortAddr;
|
|
881 pRspSent->numInClusters = numInClusters;
|
|
882 pRspSent->numOutClusters = numOutClusters;
|
|
883
|
|
884 if (numInClusters)
|
|
885 {
|
|
886 pRspSent->pInClusters = (uint16*) (pRspSent + 1);
|
|
887 osal_memcpy(pRspSent->pInClusters, inClusters, numInClusters * sizeof(uint16));
|
|
888 }
|
|
889 else
|
|
890 {
|
|
891 pRspSent->pInClusters = NULL;
|
|
892 }
|
|
893
|
|
894 if (numOutClusters)
|
|
895 {
|
|
896 pRspSent->pOutClusters = (uint16*)(pRspSent + 1) + numInClusters;
|
|
897 osal_memcpy(pRspSent->pOutClusters, outClusters, numOutClusters * sizeof(uint16));
|
|
898 }
|
|
899 else
|
|
900 {
|
|
901 pRspSent->pOutClusters = NULL;
|
|
\ ??ZDO_ProcessMatchDescReq_8:
|
|
\ 00015F 85..82 MOV DPL,?V6
|
|
\ 000162 85..83 MOV DPH,?V7
|
|
\ 000165 A3 INC DPTR
|
|
\ 000166 A3 INC DPTR
|
|
\ 000167 A3 INC DPTR
|
|
\ 000168 A3 INC DPTR
|
|
\ 000169 A3 INC DPTR
|
|
\ 00016A A3 INC DPTR
|
|
\ 00016B A3 INC DPTR
|
|
\ 00016C A3 INC DPTR
|
|
\ 00016D E4 CLR A
|
|
\ 00016E F0 MOVX @DPTR,A
|
|
\ 00016F A3 INC DPTR
|
|
\ 000170 F0 MOVX @DPTR,A
|
|
902 }
|
|
903
|
|
904 osal_msg_send( *epDesc->epDesc->task_id, (uint8 *)pRspSent );
|
|
\ ??ZDO_ProcessMatchDescReq_9:
|
|
\ 000171 ; Setup parameters for call to function osal_msg_send
|
|
\ 000171 AA.. MOV R2,?V6
|
|
\ 000173 AB.. MOV R3,?V7
|
|
\ 000175 7404 MOV A,#0x4
|
|
\ 000177 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 00017A 12.... LCALL ?Subroutine70 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_108:
|
|
\ 00017D 12.... LCALL ??Subroutine233_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_388:
|
|
\ 000180 F9 MOV R1,A
|
|
\ 000181 12.... LCALL `??osal_msg_send::?relay`; Banked call to: osal_msg_send
|
|
905 }
|
|
906
|
|
907 uint8Buf[epCnt++] = sDesc->EndPoint;
|
|
\ ??ZDO_ProcessMatchDescReq_10:
|
|
\ 000184 7406 MOV A,#0x6
|
|
\ 000186 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000189 12.... LCALL ??Subroutine234_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_384:
|
|
\ 00018C C0E0 PUSH A
|
|
\ 00018E 7408 MOV A,#0x8
|
|
\ 000190 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000193 E0 MOVX A,@DPTR
|
|
\ 000194 F8 MOV R0,A
|
|
\ 000195 74.. MOV A,#ZDOBuildBuf & 0xff
|
|
\ 000197 28 ADD A,R0
|
|
\ 000198 F582 MOV DPL,A
|
|
\ 00019A E4 CLR A
|
|
\ 00019B 34.. ADDC A,#(ZDOBuildBuf >> 8) & 0xff
|
|
\ 00019D F583 MOV DPH,A
|
|
\ 00019F D0E0 POP A
|
|
\ 0001A1 F0 MOVX @DPTR,A
|
|
\ 0001A2 7408 MOV A,#0x8
|
|
\ 0001A4 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 0001A7 E0 MOVX A,@DPTR
|
|
\ 0001A8 04 INC A
|
|
\ 0001A9 F0 MOVX @DPTR,A
|
|
908 }
|
|
909 }
|
|
910
|
|
911 if ( allocated )
|
|
\ ??ZDO_ProcessMatchDescReq_11:
|
|
\ 0001AA A2.. MOV C,?VB.0
|
|
\ 0001AC 5008 JNC ??CrossCallReturnLabel_405
|
|
912 {
|
|
913 osal_mem_free( sDesc );
|
|
\ 0001AE ; Setup parameters for call to function osal_mem_free
|
|
\ 0001AE 7406 MOV A,#0x6
|
|
\ 0001B0 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 0001B3 12.... LCALL ??Subroutine237_0 & 0xFFFF
|
|
914 }
|
|
915 }
|
|
916 epDesc = epDesc->nextDesc;
|
|
\ ??CrossCallReturnLabel_405:
|
|
\ 0001B6 7404 MOV A,#0x4
|
|
\ 0001B8 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 0001BB 12.... LCALL ?Subroutine85 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_133:
|
|
\ 0001BE 12.... LCALL ??Subroutine248_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_454:
|
|
\ 0001C1 7404 MOV A,#0x4
|
|
\ 0001C3 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 0001C6 12.... LCALL ??Subroutine289_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_716:
|
|
\ 0001C9 7404 MOV A,#0x4
|
|
\ 0001CB 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 0001CE 12.... LCALL ??Subroutine255_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_493:
|
|
\ 0001D1 7003 JNZ $+5
|
|
\ 0001D3 02.... LJMP ??ZDO_ProcessMatchDescReq_12 & 0xFFFF
|
|
\ 0001D6 7404 MOV A,#0x4
|
|
\ 0001D8 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 0001DB 12.... LCALL ?Subroutine66 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_390:
|
|
\ 0001DE 60D6 JZ ??CrossCallReturnLabel_405
|
|
\ 0001E0 7404 MOV A,#0x4
|
|
\ 0001E2 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 0001E5 E0 MOVX A,@DPTR
|
|
\ 0001E6 F8 MOV R0,A
|
|
\ 0001E7 2408 ADD A,#0x8
|
|
\ 0001E9 F582 MOV DPL,A
|
|
\ 0001EB E4 CLR A
|
|
\ 0001EC 39 ADDC A,R1
|
|
\ 0001ED F583 MOV DPH,A
|
|
\ 0001EF E0 MOVX A,@DPTR
|
|
\ 0001F0 A2E0 MOV C,0xE0 /* A */.0
|
|
\ 0001F2 50C2 JNC ??CrossCallReturnLabel_405
|
|
\ 0001F4 7404 MOV A,#0x4
|
|
\ 0001F6 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 0001F9 12.... LCALL ??Subroutine293_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_728:
|
|
\ 0001FC 12.... LCALL ??Subroutine255_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_494:
|
|
\ 0001FF 6027 JZ ??ZDO_ProcessMatchDescReq_13
|
|
\ 000201 ; Setup parameters for indirect call
|
|
\ 000201 7404 MOV A,#0x4
|
|
\ 000203 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000206 E0 MOVX A,@DPTR
|
|
\ 000207 F8 MOV R0,A
|
|
\ 000208 12.... LCALL ?Subroutine66 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_391:
|
|
\ 00020B FA MOV R2,A
|
|
\ 00020C 7901 MOV R1,#0x1
|
|
\ 00020E 7404 MOV A,#0x4
|
|
\ 000210 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000213 12.... LCALL ?Subroutine78 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_729:
|
|
\ 000216 12.... LCALL ?Subroutine85 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_134:
|
|
\ 000219 12.... LCALL ?CALL_IND
|
|
\ 00021C 7406 MOV A,#0x6
|
|
\ 00021E 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000221 12.... LCALL ??Subroutine238_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_419:
|
|
\ 000224 D2.. SETB ?VB.0
|
|
\ 000226 8015 SJMP ??ZDO_ProcessMatchDescReq_14
|
|
\ ??ZDO_ProcessMatchDescReq_13:
|
|
\ 000228 7404 MOV A,#0x4
|
|
\ 00022A 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 00022D 12.... LCALL ?Subroutine70 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_109:
|
|
\ 000230 12.... LCALL ??Subroutine245_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_466:
|
|
\ 000233 7406 MOV A,#0x6
|
|
\ 000235 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000238 12.... LCALL ??Subroutine289_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_717:
|
|
\ 00023B C2.. CLR ?VB.0
|
|
\ ??ZDO_ProcessMatchDescReq_14:
|
|
\ 00023D 7406 MOV A,#0x6
|
|
\ 00023F 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000242 12.... LCALL ??Subroutine255_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_495:
|
|
\ 000245 7003 JNZ $+5
|
|
\ 000247 02.... LJMP ??ZDO_ProcessMatchDescReq_11 & 0xFFFF
|
|
\ 00024A 7406 MOV A,#0x6
|
|
\ 00024C 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 00024F 12.... LCALL ?Subroutine108 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_178:
|
|
\ 000252 A3 INC DPTR
|
|
\ 000253 E0 MOVX A,@DPTR
|
|
\ 000254 65.. XRL A,?V4
|
|
\ 000256 7004 JNZ ??ZDO_ProcessMatchDescReq_15
|
|
\ 000258 A3 INC DPTR
|
|
\ 000259 E0 MOVX A,@DPTR
|
|
\ 00025A 65.. XRL A,?V5
|
|
\ ??ZDO_ProcessMatchDescReq_15:
|
|
\ 00025C 6003 JZ $+5
|
|
\ 00025E 02.... LJMP ??ZDO_ProcessMatchDescReq_11 & 0xFFFF
|
|
\ 000261 ; Setup parameters for call to function ZDO_AnyClusterMatches
|
|
\ 000261 E8 MOV A,R0
|
|
\ 000262 2407 ADD A,#0x7
|
|
\ 000264 F582 MOV DPL,A
|
|
\ 000266 E4 CLR A
|
|
\ 000267 39 ADDC A,R1
|
|
\ 000268 F583 MOV DPH,A
|
|
\ 00026A 12.... LCALL ?PUSH_XSTACK8_X_TWO
|
|
\ 00026D 7408 MOV A,#0x8
|
|
\ 00026F 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000272 12.... LCALL ??Subroutine270_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_576:
|
|
\ 000275 2406 ADD A,#0x6
|
|
\ 000277 12.... LCALL ?Subroutine147 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_236:
|
|
\ 00027A FC MOV R4,A
|
|
\ 00027B 740D MOV A,#0xd
|
|
\ 00027D 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000280 12.... LCALL ??Subroutine251_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_474:
|
|
\ 000283 7402 MOV A,#0x2
|
|
\ 000285 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000288 E0 MOVX A,@DPTR
|
|
\ 000289 F9 MOV R1,A
|
|
\ 00028A 12.... LCALL `??ZDO_AnyClusterMatches::?relay`; Banked call to: ZDO_AnyClusterMatches
|
|
\ 00028D 7402 MOV A,#0x2
|
|
\ 00028F 12.... LCALL ?DEALLOC_XSTACK8
|
|
\ 000292 E9 MOV A,R1
|
|
\ 000293 703A JNZ ??ZDO_ProcessMatchDescReq_16
|
|
\ 000295 ; Setup parameters for call to function ZDO_AnyClusterMatches
|
|
\ 000295 7406 MOV A,#0x6
|
|
\ 000297 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 00029A 12.... LCALL ??Subroutine270_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_577:
|
|
\ 00029D 240A ADD A,#0xa
|
|
\ 00029F F582 MOV DPL,A
|
|
\ 0002A1 E4 CLR A
|
|
\ 0002A2 38 ADDC A,R0
|
|
\ 0002A3 F583 MOV DPH,A
|
|
\ 0002A5 12.... LCALL ?PUSH_XSTACK8_X_TWO
|
|
\ 0002A8 7408 MOV A,#0x8
|
|
\ 0002AA 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 0002AD 12.... LCALL ?Subroutine86 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_136:
|
|
\ 0002B0 E0 MOVX A,@DPTR
|
|
\ 0002B1 FC MOV R4,A
|
|
\ 0002B2 740B MOV A,#0xb
|
|
\ 0002B4 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 0002B7 12.... LCALL ??Subroutine251_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_475:
|
|
\ 0002BA 7403 MOV A,#0x3
|
|
\ 0002BC 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 0002BF E0 MOVX A,@DPTR
|
|
\ 0002C0 F9 MOV R1,A
|
|
\ 0002C1 12.... LCALL `??ZDO_AnyClusterMatches::?relay`; Banked call to: ZDO_AnyClusterMatches
|
|
\ 0002C4 7402 MOV A,#0x2
|
|
\ 0002C6 12.... LCALL ?DEALLOC_XSTACK8
|
|
\ 0002C9 E9 MOV A,R1
|
|
\ 0002CA 7003 JNZ $+5
|
|
\ 0002CC 02.... LJMP ??ZDO_ProcessMatchDescReq_11 & 0xFFFF
|
|
\ ??ZDO_ProcessMatchDescReq_16:
|
|
\ 0002CF ; Setup parameters for call to function osal_msg_allocate
|
|
\ 0002CF 85..82 MOV DPL,?XSP + 0
|
|
\ 0002D2 85..83 MOV DPH,?XSP + 1
|
|
\ 0002D5 E0 MOVX A,@DPTR
|
|
\ 0002D6 F8 MOV R0,A
|
|
\ 0002D7 7401 MOV A,#0x1
|
|
\ 0002D9 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 0002DC E0 MOVX A,@DPTR
|
|
\ 0002DD 28 ADD A,R0
|
|
\ 0002DE C3 CLR C
|
|
\ 0002DF 33 RLC A
|
|
\ 0002E0 240A ADD A,#0xa
|
|
\ 0002E2 FA MOV R2,A
|
|
\ 0002E3 7B00 MOV R3,#0x0
|
|
\ 0002E5 12.... LCALL `??osal_msg_allocate::?relay`; Banked call to: osal_msg_allocate
|
|
\ 0002E8 8A.. MOV ?V6,R2
|
|
\ 0002EA 8B.. MOV ?V7,R3
|
|
\ 0002EC EA MOV A,R2
|
|
\ 0002ED 4B ORL A,R3
|
|
\ 0002EE 7003 JNZ $+5
|
|
\ 0002F0 02.... LJMP ??ZDO_ProcessMatchDescReq_10 & 0xFFFF
|
|
\ 0002F3 8A82 MOV DPL,R2
|
|
\ 0002F5 8B83 MOV DPH,R3
|
|
\ 0002F7 74D2 MOV A,#-0x2e
|
|
\ 0002F9 F0 MOVX @DPTR,A
|
|
\ 0002FA 7402 MOV A,#0x2
|
|
\ 0002FC 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 0002FF 12.... LCALL ?Subroutine81 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_127:
|
|
\ 000302 8A82 MOV DPL,R2
|
|
\ 000304 8B83 MOV DPH,R3
|
|
\ 000306 A3 INC DPTR
|
|
\ 000307 A3 INC DPTR
|
|
\ 000308 12.... LCALL ?Subroutine29 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_28:
|
|
\ 00030B 8A82 MOV DPL,R2
|
|
\ 00030D 8B83 MOV DPH,R3
|
|
\ 00030F A3 INC DPTR
|
|
\ 000310 A3 INC DPTR
|
|
\ 000311 A3 INC DPTR
|
|
\ 000312 A3 INC DPTR
|
|
\ 000313 F0 MOVX @DPTR,A
|
|
\ 000314 7401 MOV A,#0x1
|
|
\ 000316 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000319 12.... LCALL ?Subroutine104 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_171:
|
|
\ 00031C A3 INC DPTR
|
|
\ 00031D 12.... LCALL ?Subroutine30 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_30:
|
|
\ 000320 6036 JZ ??ZDO_ProcessMatchDescReq_17
|
|
\ 000322 EA MOV A,R2
|
|
\ 000323 240A ADD A,#0xa
|
|
\ 000325 F8 MOV R0,A
|
|
\ 000326 E4 CLR A
|
|
\ 000327 35.. ADDC A,?V7
|
|
\ 000329 F9 MOV R1,A
|
|
\ 00032A 8A82 MOV DPL,R2
|
|
\ 00032C 8B83 MOV DPH,R3
|
|
\ 00032E A3 INC DPTR
|
|
\ 00032F A3 INC DPTR
|
|
\ 000330 A3 INC DPTR
|
|
\ 000331 A3 INC DPTR
|
|
\ 000332 A3 INC DPTR
|
|
\ 000333 12.... LCALL ?Subroutine40 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_55:
|
|
\ 000336 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000339 12.... LCALL ?Subroutine64 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_97:
|
|
\ 00033C 12.... LCALL ?PUSH_XSTACK_I_THREE
|
|
\ 00033F 7403 MOV A,#0x3
|
|
\ 000341 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000344 12.... LCALL ?Subroutine132 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_359:
|
|
\ 000347 8A82 MOV DPL,R2
|
|
\ 000349 8B83 MOV DPH,R3
|
|
\ 00034B A3 INC DPTR
|
|
\ 00034C A3 INC DPTR
|
|
\ 00034D A3 INC DPTR
|
|
\ 00034E A3 INC DPTR
|
|
\ 00034F A3 INC DPTR
|
|
\ 000350 12.... LCALL ??Subroutine261_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_537:
|
|
\ 000353 12.... LCALL ?DEALLOC_XSTACK8
|
|
\ 000356 800D SJMP ??ZDO_ProcessMatchDescReq_18
|
|
\ ??ZDO_ProcessMatchDescReq_17:
|
|
\ 000358 8A82 MOV DPL,R2
|
|
\ 00035A 8B83 MOV DPH,R3
|
|
\ 00035C A3 INC DPTR
|
|
\ 00035D A3 INC DPTR
|
|
\ 00035E A3 INC DPTR
|
|
\ 00035F A3 INC DPTR
|
|
\ 000360 A3 INC DPTR
|
|
\ 000361 E4 CLR A
|
|
\ 000362 F0 MOVX @DPTR,A
|
|
\ 000363 A3 INC DPTR
|
|
\ 000364 F0 MOVX @DPTR,A
|
|
\ ??ZDO_ProcessMatchDescReq_18:
|
|
\ 000365 7401 MOV A,#0x1
|
|
\ 000367 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 00036A E0 MOVX A,@DPTR
|
|
\ 00036B 7003 JNZ $+5
|
|
\ 00036D 02.... LJMP ??ZDO_ProcessMatchDescReq_8 & 0xFFFF
|
|
\ 000370 85..82 MOV DPL,?XSP + 0
|
|
\ 000373 85..83 MOV DPH,?XSP + 1
|
|
\ 000376 E0 MOVX A,@DPTR
|
|
\ 000377 12.... LCALL ?Subroutine131 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_215:
|
|
\ 00037A F8 MOV R0,A
|
|
\ 00037B E5.. MOV A,?V7
|
|
\ 00037D 39 ADDC A,R1
|
|
\ 00037E F9 MOV R1,A
|
|
\ 00037F E8 MOV A,R0
|
|
\ 000380 240A ADD A,#0xa
|
|
\ 000382 5001 JNC ??ZDO_ProcessMatchDescReq_19
|
|
\ 000384 09 INC R1
|
|
\ ??ZDO_ProcessMatchDescReq_19:
|
|
\ 000385 85..82 MOV DPL,?V6
|
|
\ 000388 85..83 MOV DPH,?V7
|
|
\ 00038B A3 INC DPTR
|
|
\ 00038C A3 INC DPTR
|
|
\ 00038D A3 INC DPTR
|
|
\ 00038E A3 INC DPTR
|
|
\ 00038F A3 INC DPTR
|
|
\ 000390 A3 INC DPTR
|
|
\ 000391 A3 INC DPTR
|
|
\ 000392 A3 INC DPTR
|
|
\ 000393 12.... LCALL ??Subroutine290_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_706:
|
|
\ 000396 ; Setup parameters for call to function osal_memcpy
|
|
\ 000396 7409 MOV A,#0x9
|
|
\ 000398 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 00039B 12.... LCALL ?Subroutine64 & 0xFFFF
|
|
917 }
|
|
\ ??CrossCallReturnLabel_98:
|
|
\ 00039E 12.... LCALL ?PUSH_XSTACK_I_THREE
|
|
\ 0003A1 7404 MOV A,#0x4
|
|
\ 0003A3 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 0003A6 12.... LCALL ?Subroutine132 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_360:
|
|
\ 0003A9 85..82 MOV DPL,?V6
|
|
\ 0003AC 85..83 MOV DPH,?V7
|
|
\ 0003AF A3 INC DPTR
|
|
\ 0003B0 A3 INC DPTR
|
|
\ 0003B1 A3 INC DPTR
|
|
\ 0003B2 A3 INC DPTR
|
|
\ 0003B3 A3 INC DPTR
|
|
\ 0003B4 A3 INC DPTR
|
|
\ 0003B5 A3 INC DPTR
|
|
\ 0003B6 A3 INC DPTR
|
|
\ 0003B7 12.... LCALL ??Subroutine261_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_538:
|
|
\ 0003BA 12.... LCALL ?DEALLOC_XSTACK8
|
|
\ 0003BD 02.... LJMP ??ZDO_ProcessMatchDescReq_9 & 0xFFFF
|
|
918
|
|
919 if ( epCnt )
|
|
\ ??ZDO_ProcessMatchDescReq_12:
|
|
\ 0003C0 7408 MOV A,#0x8
|
|
\ 0003C2 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 0003C5 E0 MOVX A,@DPTR
|
|
\ 0003C6 602C JZ ??ZDO_ProcessMatchDescReq_20
|
|
920 {
|
|
921 // Send the message if at least one match found.
|
|
922 if ( ZSuccess == ZDP_MatchDescRsp( inMsg->TransSeq, &(inMsg->srcAddr), ZDP_SUCCESS,
|
|
923 ZDAppNwkAddr.addr.shortAddr, epCnt, (uint8 *)ZDOBuildBuf, inMsg->SecurityUse ) )
|
|
\ 0003C8 ; Setup parameters for call to function ZDP_EPRsp
|
|
\ 0003C8 7402 MOV A,#0x2
|
|
\ 0003CA 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 0003CD 12.... LCALL ?Subroutine54 & 0xFFFF
|
|
924 {
|
|
925 #if defined( LCD_SUPPORTED )
|
|
926 HalLcdWriteScreen( "Match Desc Req", "Rsp Sent" );
|
|
927 #endif
|
|
928 }
|
|
929 }
|
|
\ ??CrossCallReturnLabel_74:
|
|
\ 0003D0 12.... LCALL ?PUSH_XSTACK_I_ONE
|
|
\ 0003D3 75.... MOV ?V0,#ZDOBuildBuf & 0xff
|
|
\ 0003D6 75.... MOV ?V1,#(ZDOBuildBuf >> 8) & 0xff
|
|
\ 0003D9 78.. MOV R0,#?V0
|
|
\ 0003DB 12.... LCALL ?PUSH_XSTACK_I_TWO
|
|
\ 0003DE 740B MOV A,#0xb
|
|
\ 0003E0 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 0003E3 12.... LCALL ??Subroutine244_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_449:
|
|
\ 0003E6 12.... LCALL ?PUSH_XSTACK_I_ONE
|
|
\ 0003E9 90.... MOV DPTR,#ZDAppNwkAddr
|
|
\ 0003EC 12.... LCALL ?PUSH_XSTACK8_X_TWO
|
|
\ 0003EF 75..00 MOV ?V0,#0x0
|
|
\ 0003F2 802E SJMP ??ZDO_ProcessMatchDescReq_21
|
|
930 else
|
|
931 {
|
|
932 // No match found
|
|
933 if (ADDR_NOT_BCAST == NLME_IsAddressBroadcast(aoi))
|
|
\ ??ZDO_ProcessMatchDescReq_20:
|
|
\ 0003F4 ; Setup parameters for call to function NLME_IsAddressBroadcast
|
|
\ 0003F4 EE MOV A,R6
|
|
\ 0003F5 FA MOV R2,A
|
|
\ 0003F6 EF MOV A,R7
|
|
\ 0003F7 FB MOV R3,A
|
|
\ 0003F8 12.... LCALL `??NLME_IsAddressBroadcast::?relay`; Banked call to: NLME_IsAddressBroadcast
|
|
\ 0003FB E9 MOV A,R1
|
|
\ 0003FC 703A JNZ ??ZDO_ProcessMatchDescReq_22
|
|
934 {
|
|
935 // send response message with match length = 0
|
|
936 ZDP_MatchDescRsp( inMsg->TransSeq, &(inMsg->srcAddr), ZDP_SUCCESS,
|
|
937 ZDAppNwkAddr.addr.shortAddr, 0, (uint8 *)ZDOBuildBuf, inMsg->SecurityUse );
|
|
\ 0003FE ; Setup parameters for call to function ZDP_EPRsp
|
|
\ 0003FE 7402 MOV A,#0x2
|
|
\ 000400 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000403 12.... LCALL ?Subroutine54 & 0xFFFF
|
|
938 #if defined( LCD_SUPPORTED )
|
|
939 HalLcdWriteScreen( "Match Desc Req", "Rsp Non Matched" );
|
|
940 #endif
|
|
941 }
|
|
942 else
|
|
943 {
|
|
944 // no response mesage for broadcast message
|
|
945 #if defined( LCD_SUPPORTED )
|
|
946 HalLcdWriteScreen( "Match Desc Req", "Non Matched" );
|
|
947 #endif
|
|
948 }
|
|
949 }
|
|
\ ??CrossCallReturnLabel_75:
|
|
\ 000406 12.... LCALL ?PUSH_XSTACK_I_ONE
|
|
\ 000409 75.... MOV ?V0,#ZDOBuildBuf & 0xff
|
|
\ 00040C 75.... MOV ?V1,#(ZDOBuildBuf >> 8) & 0xff
|
|
\ 00040F 78.. MOV R0,#?V0
|
|
\ 000411 12.... LCALL ?PUSH_XSTACK_I_TWO
|
|
\ 000414 75..00 MOV ?V0,#0x0
|
|
\ 000417 78.. MOV R0,#?V0
|
|
\ 000419 12.... LCALL ?PUSH_XSTACK_I_ONE
|
|
\ 00041C 90.... MOV DPTR,#ZDAppNwkAddr
|
|
\ 00041F 12.... LCALL ?PUSH_XSTACK8_X_TWO
|
|
\ ??ZDO_ProcessMatchDescReq_21:
|
|
\ 000422 78.. MOV R0,#?V0
|
|
\ 000424 12.... LCALL ?PUSH_XSTACK_I_ONE
|
|
\ 000427 7409 MOV A,#0x9
|
|
\ 000429 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 00042C 12.... LCALL ?Subroutine103 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_170:
|
|
\ 00042F 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000432 12.... LCALL ?Subroutine62 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_94:
|
|
\ 000435 12.... LCALL ?DEALLOC_XSTACK8
|
|
950
|
|
951 if ( inClusters != NULL )
|
|
\ ??ZDO_ProcessMatchDescReq_22:
|
|
\ 000438 740B MOV A,#0xb
|
|
\ 00043A 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 00043D 12.... LCALL ??Subroutine255_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_496:
|
|
\ 000440 6008 JZ ??CrossCallReturnLabel_406
|
|
952 {
|
|
953 osal_mem_free( inClusters );
|
|
\ 000442 ; Setup parameters for call to function osal_mem_free
|
|
\ 000442 740B MOV A,#0xb
|
|
\ 000444 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000447 12.... LCALL ??Subroutine237_0 & 0xFFFF
|
|
954 }
|
|
955
|
|
956 if ( outClusters != NULL )
|
|
\ ??CrossCallReturnLabel_406:
|
|
\ 00044A 7409 MOV A,#0x9
|
|
\ 00044C 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 00044F 12.... LCALL ??Subroutine255_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_497:
|
|
\ 000452 6008 JZ ??CrossCallReturnLabel_407
|
|
957 {
|
|
958 osal_mem_free( outClusters );
|
|
\ 000454 ; Setup parameters for call to function osal_mem_free
|
|
\ 000454 7409 MOV A,#0x9
|
|
\ 000456 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000459 12.... LCALL ??Subroutine237_0 & 0xFFFF
|
|
959 }
|
|
960 }
|
|
\ ??CrossCallReturnLabel_407:
|
|
\ 00045C 740D MOV A,#0xd
|
|
\ 00045E 02.... LJMP ?Subroutine7 & 0xFFFF
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine132:
|
|
\ 000000 E0 MOVX A,@DPTR
|
|
\ 000001 REQUIRE ??Subroutine224_0
|
|
\ 000001 ; // Fall through to label ??Subroutine224_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine113:
|
|
\ 000000 E0 MOVX A,@DPTR
|
|
\ 000001 FA MOV R2,A
|
|
\ 000002 REQUIRE ??Subroutine225_0
|
|
\ 000002 ; // Fall through to label ??Subroutine225_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine225_0:
|
|
\ 000000 A3 INC DPTR
|
|
\ 000001 E0 MOVX A,@DPTR
|
|
\ 000002 F8 MOV R0,A
|
|
\ 000003 E4 CLR A
|
|
\ 000004 C8 XCH A,R0
|
|
\ 000005 F9 MOV R1,A
|
|
\ 000006 EA MOV A,R2
|
|
\ 000007 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine109:
|
|
\ 000000 12.... LCALL ?Subroutine186 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_303:
|
|
\ 000003 AA.. MOV R2,?V0
|
|
\ 000005 AB.. MOV R3,?V1
|
|
\ 000007 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine103:
|
|
\ 000000 E0 MOVX A,@DPTR
|
|
\ 000001 2402 ADD A,#0x2
|
|
\ 000003 FC MOV R4,A
|
|
\ 000004 A3 INC DPTR
|
|
\ 000005 E0 MOVX A,@DPTR
|
|
\ 000006 3400 ADDC A,#0x0
|
|
\ 000008 FD MOV R5,A
|
|
\ 000009 7409 MOV A,#0x9
|
|
\ 00000B 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine70:
|
|
\ 000000 12.... LCALL ?Subroutine177 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_290:
|
|
\ 000003 F583 MOV DPH,A
|
|
\ 000005 8882 MOV DPL,R0
|
|
\ 000007 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine62:
|
|
\ 000000 12.... LCALL ?Subroutine175 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_288:
|
|
\ 000003 7A06 MOV R2,#0x6
|
|
\ 000005 7B80 MOV R3,#-0x80
|
|
\ 000007 12.... LCALL `??ZDP_EPRsp::?relay`; Banked call to: ZDP_EPRsp
|
|
\ 00000A 7407 MOV A,#0x7
|
|
\ 00000C 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine54:
|
|
\ 000000 12.... LCALL ??Subroutine253_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_593:
|
|
\ 000003 240E ADD A,#0xe
|
|
\ 000005 12.... LCALL ?Subroutine213 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_340:
|
|
\ 000008 F5.. MOV ?V0,A
|
|
\ 00000A 78.. MOV R0,#?V0
|
|
\ 00000C 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine121:
|
|
\ 000000 E0 MOVX A,@DPTR
|
|
\ 000001 85..82 MOV DPL,?XSP + 0
|
|
\ 000004 85..83 MOV DPH,?XSP + 1
|
|
\ 000007 F0 MOVX @DPTR,A
|
|
\ 000008 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine84:
|
|
\ 000000 12.... LCALL ??Subroutine253_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_594:
|
|
\ 000003 12.... LCALL ??Subroutine243_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_445:
|
|
\ 000006 38 ADDC A,R0
|
|
\ 000007 F583 MOV DPH,A
|
|
\ 000009 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine66:
|
|
\ 000000 12.... LCALL ?Subroutine189 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_732:
|
|
\ 000003 REQUIRE ??Subroutine232_0
|
|
\ 000003 ; // Fall through to label ??Subroutine232_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine48:
|
|
\ 000000 F0 MOVX @DPTR,A
|
|
\ 000001 85..82 MOV DPL,?V0
|
|
\ 000004 85..83 MOV DPH,?V1
|
|
\ 000007 A3 INC DPTR
|
|
\ 000008 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine7:
|
|
\ 000000 12.... LCALL ?DEALLOC_XSTACK8
|
|
\ 000003 02.... LJMP ??Subroutine226_0 & 0xFFFF
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine175:
|
|
\ 000000 12.... LCALL ?Subroutine210 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_605:
|
|
\ 000003 240F ADD A,#0xf
|
|
\ 000005 12.... LCALL ?Subroutine213 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_343:
|
|
\ 000008 F9 MOV R1,A
|
|
\ 000009 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine244_0:
|
|
\ 000000 E0 MOVX A,@DPTR
|
|
\ 000001 F5.. MOV ?V0,A
|
|
\ 000003 78.. MOV R0,#?V0
|
|
\ 000005 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine245_0:
|
|
\ 000000 A3 INC DPTR
|
|
\ 000001 REQUIRE ??Subroutine246_0
|
|
\ 000001 ; // Fall through to label ??Subroutine246_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine246_0:
|
|
\ 000000 A3 INC DPTR
|
|
\ 000001 REQUIRE ??Subroutine247_0
|
|
\ 000001 ; // Fall through to label ??Subroutine247_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine247_0:
|
|
\ 000000 A3 INC DPTR
|
|
\ 000001 REQUIRE ??Subroutine248_0
|
|
\ 000001 ; // Fall through to label ??Subroutine248_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine40:
|
|
\ 000000 E8 MOV A,R0
|
|
\ 000001 F0 MOVX @DPTR,A
|
|
\ 000002 A3 INC DPTR
|
|
\ 000003 E9 MOV A,R1
|
|
\ 000004 F0 MOVX @DPTR,A
|
|
\ 000005 ; Setup parameters for call to function osal_memcpy
|
|
\ 000005 ; Setup parameters for call to function AddrMgrEntryLookupNwk
|
|
\ 000005 ; Setup parameters for call to function AddrMgrEntryUpdate
|
|
\ 000005 740B MOV A,#0xb
|
|
\ 000007 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine30:
|
|
\ 000000 12.... LCALL ??Subroutine294_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_738:
|
|
\ 000003 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine249_0:
|
|
\ 000000 E0 MOVX A,@DPTR
|
|
\ 000001 8A82 MOV DPL,R2
|
|
\ 000003 8B83 MOV DPH,R3
|
|
\ 000005 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine104:
|
|
\ 000000 12.... LCALL ??Subroutine249_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_469:
|
|
\ 000003 A3 INC DPTR
|
|
\ 000004 A3 INC DPTR
|
|
\ 000005 A3 INC DPTR
|
|
\ 000006 A3 INC DPTR
|
|
\ 000007 A3 INC DPTR
|
|
\ 000008 A3 INC DPTR
|
|
\ 000009 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine251_0:
|
|
\ 000000 12.... LCALL ?Subroutine176 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_544:
|
|
\ 000003 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine253_0:
|
|
\ 000000 12.... LCALL ?Subroutine210 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_609:
|
|
\ 000003 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine210:
|
|
\ 000000 12.... LCALL ?Subroutine217 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_644:
|
|
\ 000003 C8 XCH A,R0
|
|
\ 000004 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine261_0:
|
|
\ 000000 12.... LCALL ?Subroutine176 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_545:
|
|
\ 000003 12.... LCALL `??osal_memcpy::?relay`; Banked call to: osal_memcpy
|
|
\ 000006 7403 MOV A,#0x3
|
|
\ 000008 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine147:
|
|
\ 000000 12.... LCALL ?Subroutine213 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_342:
|
|
\ 000003 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine81:
|
|
\ 000000 12.... LCALL ?Subroutine177 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_291:
|
|
\ 000003 F9 MOV R1,A
|
|
\ 000004 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine177:
|
|
\ 000000 12.... LCALL ?Subroutine217 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_640:
|
|
\ 000003 F583 MOV DPH,A
|
|
\ 000005 8882 MOV DPL,R0
|
|
\ 000007 A3 INC DPTR
|
|
\ 000008 A3 INC DPTR
|
|
\ 000009 12.... LCALL ?Subroutine217 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_641:
|
|
\ 00000C 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine213:
|
|
\ 000000 F582 MOV DPL,A
|
|
\ 000002 E4 CLR A
|
|
\ 000003 38 ADDC A,R0
|
|
\ 000004 F583 MOV DPH,A
|
|
\ 000006 E0 MOVX A,@DPTR
|
|
\ 000007 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine265_0:
|
|
\ 000000 E0 MOVX A,@DPTR
|
|
\ 000001 F9 MOV R1,A
|
|
\ 000002 12.... LCALL `??ZDO_ConvertOTAClusters::?relay`; Banked call to: ZDO_ConvertOTAClusters
|
|
\ 000005 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine270_0:
|
|
\ 000000 12.... LCALL ??Subroutine253_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_604:
|
|
\ 000003 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine289_0:
|
|
\ 000000 E8 MOV A,R0
|
|
\ 000001 REQUIRE ??Subroutine290_0
|
|
\ 000001 ; // Fall through to label ??Subroutine290_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine290_0:
|
|
\ 000000 F0 MOVX @DPTR,A
|
|
\ 000001 A3 INC DPTR
|
|
\ 000002 E9 MOV A,R1
|
|
\ 000003 F0 MOVX @DPTR,A
|
|
\ 000004 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine129:
|
|
\ 000000 12.... LCALL ?Subroutine194 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_557:
|
|
\ 000003 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine194:
|
|
\ 000000 25E0 ADD A,0xE0 /* A */
|
|
\ 000002 FA MOV R2,A
|
|
\ 000003 E4 CLR A
|
|
\ 000004 33 RLC A
|
|
\ 000005 FB MOV R3,A
|
|
\ 000006 12.... LCALL `??osal_mem_alloc::?relay`; Banked call to: osal_mem_alloc
|
|
\ 000009 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine86:
|
|
\ 000000 12.... LCALL ??Subroutine253_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_595:
|
|
\ 000003 2409 ADD A,#0x9
|
|
\ 000005 F582 MOV DPL,A
|
|
\ 000007 E4 CLR A
|
|
\ 000008 38 ADDC A,R0
|
|
\ 000009 F583 MOV DPH,A
|
|
\ 00000B 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine85:
|
|
\ 000000 E0 MOVX A,@DPTR
|
|
\ 000001 F8 MOV R0,A
|
|
\ 000002 12.... LCALL ?Subroutine189 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_733:
|
|
\ 000005 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine78:
|
|
\ 000000 E0 MOVX A,@DPTR
|
|
\ 000001 F8 MOV R0,A
|
|
\ 000002 REQUIRE ??Subroutine293_0
|
|
\ 000002 ; // Fall through to label ??Subroutine293_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine293_0:
|
|
\ 000000 12.... LCALL ?Subroutine189 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_735:
|
|
\ 000003 A3 INC DPTR
|
|
\ 000004 A3 INC DPTR
|
|
\ 000005 A3 INC DPTR
|
|
\ 000006 A3 INC DPTR
|
|
\ 000007 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine64:
|
|
\ 000000 12.... LCALL ??Subroutine220_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_352:
|
|
\ 000003 75..00 MOV ?V2,#0x0
|
|
\ 000006 78.. MOV R0,#?V0
|
|
\ 000008 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine29:
|
|
\ 000000 12.... LCALL ?Subroutine161 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_736:
|
|
\ 000003 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine161:
|
|
\ 000000 E8 MOV A,R0
|
|
\ 000001 F0 MOVX @DPTR,A
|
|
\ 000002 A3 INC DPTR
|
|
\ 000003 E9 MOV A,R1
|
|
\ 000004 REQUIRE ??Subroutine294_0
|
|
\ 000004 ; // Fall through to label ??Subroutine294_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine294_0:
|
|
\ 000000 F0 MOVX @DPTR,A
|
|
\ 000001 85..82 MOV DPL,?XSP + 0
|
|
\ 000004 85..83 MOV DPH,?XSP + 1
|
|
\ 000007 E0 MOVX A,@DPTR
|
|
\ 000008 22 RET
|
|
961
|
|
962 /*********************************************************************
|
|
963 * @fn ZDO_ProcessBindUnbindReq()
|
|
964 *
|
|
965 * @brief Called to process a Bind or Unbind Request message.
|
|
966 *
|
|
967 * @param inMsg - incoming message (request)
|
|
968 * @param pReq - place to put parsed information
|
|
969 *
|
|
970 * @return none
|
|
971 */
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine2:
|
|
\ 000000 12.... LCALL ?DEALLOC_XSTACK8
|
|
\ 000003 REQUIRE ??Subroutine219_0
|
|
\ 000003 ; // Fall through to label ??Subroutine219_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
972 void ZDO_ProcessBindUnbindReq( zdoIncomingMsg_t *inMsg, ZDO_BindUnbindReq_t *pReq )
|
|
\ ZDO_ProcessBindUnbindReq:
|
|
973 {
|
|
\ 000000 REQUIRE ?V0
|
|
\ 000000 REQUIRE ?V1
|
|
\ 000000 REQUIRE ?V2
|
|
\ 000000 REQUIRE ?V3
|
|
\ 000000 74F4 MOV A,#-0xc
|
|
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
|
\ 000005 ; Saved register size: 12
|
|
\ 000005 ; Auto size: 12
|
|
\ 000005 74F4 MOV A,#-0xc
|
|
\ 000007 12.... LCALL ?ALLOC_XSTACK8
|
|
\ 00000A 8A.. MOV ?V0,R2
|
|
\ 00000C 8B.. MOV ?V1,R3
|
|
\ 00000E EC MOV A,R4
|
|
\ 00000F FE MOV R6,A
|
|
\ 000010 ED MOV A,R5
|
|
\ 000011 FF MOV R7,A
|
|
974 zAddrType_t SourceAddr; // Binding Source addres
|
|
975 byte bindStat;
|
|
976
|
|
977 SourceAddr.addrMode = Addr64Bit;
|
|
\ 000012 740B MOV A,#0xb
|
|
\ 000014 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000017 7403 MOV A,#0x3
|
|
\ 000019 F0 MOVX @DPTR,A
|
|
978 osal_cpyExtAddr( SourceAddr.addr.extAddr, pReq->srcAddress );
|
|
\ 00001A ; Setup parameters for call to function sAddrExtCpy
|
|
\ 00001A 12.... LCALL ?XSTACK_DISP101_8
|
|
\ 00001D 12.... LCALL `??sAddrExtCpy::?relay`; Banked call to: sAddrExtCpy
|
|
979
|
|
980 // If the local device is not the primary binding cache
|
|
981 // check the src address of the bind request.
|
|
982 // If it is not the local device's extended address
|
|
983 // discard the request.
|
|
984 if ( !osal_ExtAddrEqual( SourceAddr.addr.extAddr, NLME_GetExtAddr()) ||
|
|
985 (pReq->dstAddress.addrMode != Addr64Bit &&
|
|
986 pReq->dstAddress.addrMode != AddrGroup) )
|
|
\ 000020 ; Setup parameters for call to function NLME_GetExtAddr
|
|
\ 000020 12.... LCALL ?Subroutine123 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_202:
|
|
\ 000023 ; Setup parameters for call to function sAddrExtCmp
|
|
\ 000023 7403 MOV A,#0x3
|
|
\ 000025 12.... LCALL ?XSTACK_DISP101_8
|
|
\ 000028 12.... LCALL `??sAddrExtCmp::?relay`; Banked call to: sAddrExtCmp
|
|
\ 00002B E9 MOV A,R1
|
|
\ 00002C 600A JZ ??ZDO_ProcessBindUnbindReq_0
|
|
\ 00002E 12.... LCALL ?Subroutine126 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_206:
|
|
\ 000031 6010 JZ ??ZDO_ProcessBindUnbindReq_1
|
|
\ 000033 E0 MOVX A,@DPTR
|
|
\ 000034 6401 XRL A,#0x1
|
|
\ 000036 600B JZ ??ZDO_ProcessBindUnbindReq_1
|
|
987 {
|
|
988 bindStat = ZDP_NOT_SUPPORTED;
|
|
\ ??ZDO_ProcessBindUnbindReq_0:
|
|
\ 000038 85..82 MOV DPL,?XSP + 0
|
|
\ 00003B 85..83 MOV DPH,?XSP + 1
|
|
\ 00003E 7484 MOV A,#-0x7c
|
|
\ 000040 02.... LJMP ??ZDO_ProcessBindUnbindReq_2 & 0xFFFF
|
|
989 }
|
|
990 else
|
|
991 {
|
|
992 // Check source & destination endpoints
|
|
993 if ( (pReq->srcEndpoint == 0 || pReq->srcEndpoint > MAX_ENDPOINTS)
|
|
994 || (( pReq->dstAddress.addrMode == Addr64Bit ) &&
|
|
995 (pReq->dstEndpoint == 0 || pReq->dstEndpoint > MAX_ENDPOINTS)) )
|
|
\ ??ZDO_ProcessBindUnbindReq_1:
|
|
\ 000043 8E82 MOV DPL,R6
|
|
\ 000045 8F83 MOV DPH,R7
|
|
\ 000047 A3 INC DPTR
|
|
\ 000048 A3 INC DPTR
|
|
\ 000049 A3 INC DPTR
|
|
\ 00004A A3 INC DPTR
|
|
\ 00004B A3 INC DPTR
|
|
\ 00004C A3 INC DPTR
|
|
\ 00004D A3 INC DPTR
|
|
\ 00004E A3 INC DPTR
|
|
\ 00004F E0 MOVX A,@DPTR
|
|
\ 000050 6016 JZ ??ZDO_ProcessBindUnbindReq_3
|
|
\ 000052 C3 CLR C
|
|
\ 000053 94F1 SUBB A,#-0xf
|
|
\ 000055 5011 JNC ??ZDO_ProcessBindUnbindReq_3
|
|
\ 000057 12.... LCALL ?Subroutine126 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_207:
|
|
\ 00005A 7017 JNZ ??ZDO_ProcessBindUnbindReq_4
|
|
\ 00005C EE MOV A,R6
|
|
\ 00005D 12.... LCALL ?Subroutine155 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_259:
|
|
\ 000060 E0 MOVX A,@DPTR
|
|
\ 000061 6005 JZ ??ZDO_ProcessBindUnbindReq_3
|
|
\ 000063 C3 CLR C
|
|
\ 000064 94F1 SUBB A,#-0xf
|
|
\ 000066 400B JC ??ZDO_ProcessBindUnbindReq_4
|
|
996 {
|
|
997 bindStat = ZDP_INVALID_EP;
|
|
\ ??ZDO_ProcessBindUnbindReq_3:
|
|
\ 000068 85..82 MOV DPL,?XSP + 0
|
|
\ 00006B 85..83 MOV DPH,?XSP + 1
|
|
\ 00006E 7482 MOV A,#-0x7e
|
|
\ 000070 02.... LJMP ??ZDO_ProcessBindUnbindReq_2 & 0xFFFF
|
|
998 }
|
|
999 else
|
|
1000 {
|
|
1001 if ( inMsg->clusterID == Bind_req )
|
|
\ ??ZDO_ProcessBindUnbindReq_4:
|
|
\ 000073 12.... LCALL ?Subroutine154 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_651:
|
|
\ 000076 E0 MOVX A,@DPTR
|
|
\ 000077 6421 XRL A,#0x21
|
|
\ 000079 7002 JNZ ??ZDO_ProcessBindUnbindReq_5
|
|
\ 00007B A3 INC DPTR
|
|
\ 00007C E0 MOVX A,@DPTR
|
|
\ ??ZDO_ProcessBindUnbindReq_5:
|
|
\ 00007D 7051 JNZ ??ZDO_ProcessBindUnbindReq_6
|
|
1002 {
|
|
1003 // Assume the table is full
|
|
1004 bindStat = ZDP_TABLE_FULL;
|
|
\ 00007F 85..82 MOV DPL,?XSP + 0
|
|
\ 000082 85..83 MOV DPH,?XSP + 1
|
|
\ 000085 748C MOV A,#-0x74
|
|
\ 000087 F0 MOVX @DPTR,A
|
|
1005
|
|
1006 #if defined( APP_TP ) || defined( APP_TP2 )
|
|
1007 // For ZigBee Conformance Testing
|
|
1008 if ( bindNumOfEntries() < gNWK_MAX_BINDING_ENTRIES )
|
|
1009 #endif
|
|
1010 {
|
|
1011 if ( APSME_BindRequest( pReq->srcEndpoint, pReq->clusterID,
|
|
1012 &(pReq->dstAddress), pReq->dstEndpoint ) == ZSuccess )
|
|
\ 000088 ; Setup parameters for call to function APSME_BindRequest
|
|
\ 000088 12.... LCALL ?Subroutine110 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_366:
|
|
\ 00008B 12.... LCALL ?PUSH_XSTACK_I_ONE
|
|
\ 00008E 12.... LCALL ?Subroutine67 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_102:
|
|
\ 000091 12.... LCALL `??APSME_BindRequest::?relay`; Banked call to: APSME_BindRequest
|
|
\ 000094 7401 MOV A,#0x1
|
|
\ 000096 12.... LCALL ?DEALLOC_XSTACK8
|
|
\ 000099 E9 MOV A,R1
|
|
\ 00009A 7058 JNZ ??ZDO_ProcessBindUnbindReq_7
|
|
1013 {
|
|
1014 uint16 nwkAddr;
|
|
1015
|
|
1016 // valid entry
|
|
1017 bindStat = ZDP_SUCCESS;
|
|
\ 00009C 85..82 MOV DPL,?XSP + 0
|
|
\ 00009F 85..83 MOV DPH,?XSP + 1
|
|
\ 0000A2 E4 CLR A
|
|
\ 0000A3 F0 MOVX @DPTR,A
|
|
1018
|
|
1019 // Notify to save info into NV
|
|
1020 ZDApp_NVUpdate();
|
|
\ 0000A4 ; Setup parameters for call to function ZDApp_NVUpdate
|
|
\ 0000A4 12.... LCALL `??ZDApp_NVUpdate::?relay`; Banked call to: ZDApp_NVUpdate
|
|
1021
|
|
1022 // Check for the destination address
|
|
1023 if ( pReq->dstAddress.addrMode == Addr64Bit )
|
|
\ 0000A7 12.... LCALL ?Subroutine126 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_208:
|
|
\ 0000AA 7048 JNZ ??ZDO_ProcessBindUnbindReq_7
|
|
1024 {
|
|
1025 if ( APSME_LookupNwkAddr( pReq->dstAddress.addr.extAddr, &nwkAddr ) == FALSE )
|
|
\ 0000AC ; Setup parameters for call to function APSME_LookupNwkAddr
|
|
\ 0000AC 7401 MOV A,#0x1
|
|
\ 0000AE 12.... LCALL ?XSTACK_DISP102_8
|
|
\ 0000B1 EE MOV A,R6
|
|
\ 0000B2 240B ADD A,#0xb
|
|
\ 0000B4 FA MOV R2,A
|
|
\ 0000B5 E4 CLR A
|
|
\ 0000B6 3F ADDC A,R7
|
|
\ 0000B7 FB MOV R3,A
|
|
\ 0000B8 12.... LCALL `??APSME_LookupNwkAddr::?relay`; Banked call to: APSME_LookupNwkAddr
|
|
\ 0000BB E9 MOV A,R1
|
|
\ 0000BC 7036 JNZ ??ZDO_ProcessBindUnbindReq_7
|
|
1026 {
|
|
1027 ZDP_NwkAddrReq( pReq->dstAddress.addr.extAddr, ZDP_ADDR_REQTYPE_SINGLE, 0, 0 );
|
|
\ 0000BE ; Setup parameters for call to function ZDP_NwkAddrReq
|
|
\ 0000BE 7D00 MOV R5,#0x0
|
|
\ 0000C0 7C00 MOV R4,#0x0
|
|
\ 0000C2 7900 MOV R1,#0x0
|
|
\ 0000C4 EE MOV A,R6
|
|
\ 0000C5 240B ADD A,#0xb
|
|
\ 0000C7 FA MOV R2,A
|
|
\ 0000C8 E4 CLR A
|
|
\ 0000C9 3F ADDC A,R7
|
|
\ 0000CA FB MOV R3,A
|
|
\ 0000CB 12.... LCALL `??ZDP_NwkAddrReq::?relay`; Banked call to: ZDP_NwkAddrReq
|
|
\ 0000CE 8024 SJMP ??ZDO_ProcessBindUnbindReq_7
|
|
1028 }
|
|
1029 }
|
|
1030 }
|
|
1031 }
|
|
1032 }
|
|
1033 else // Unbind_req
|
|
1034 {
|
|
1035 if ( APSME_UnBindRequest( pReq->srcEndpoint, pReq->clusterID,
|
|
1036 &(pReq->dstAddress), pReq->dstEndpoint ) == ZSuccess )
|
|
\ ??ZDO_ProcessBindUnbindReq_6:
|
|
\ 0000D0 ; Setup parameters for call to function APSME_UnBindRequest
|
|
\ 0000D0 12.... LCALL ?Subroutine110 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_367:
|
|
\ 0000D3 12.... LCALL ?PUSH_XSTACK_I_ONE
|
|
\ 0000D6 12.... LCALL ?Subroutine67 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_103:
|
|
\ 0000D9 12.... LCALL `??APSME_UnBindRequest::?relay`; Banked call to: APSME_UnBindRequest
|
|
\ 0000DC 7401 MOV A,#0x1
|
|
\ 0000DE 12.... LCALL ?DEALLOC_XSTACK8
|
|
\ 0000E1 E9 MOV A,R1
|
|
\ 0000E2 85..82 MOV DPL,?XSP + 0
|
|
\ 0000E5 85..83 MOV DPH,?XSP + 1
|
|
\ 0000E8 7007 JNZ ??ZDO_ProcessBindUnbindReq_8
|
|
1037 {
|
|
1038 bindStat = ZDP_SUCCESS;
|
|
\ 0000EA E4 CLR A
|
|
\ 0000EB F0 MOVX @DPTR,A
|
|
1039
|
|
1040 // Notify to save info into NV
|
|
1041 ZDApp_NVUpdate();
|
|
\ 0000EC ; Setup parameters for call to function ZDApp_NVUpdate
|
|
\ 0000EC 12.... LCALL `??ZDApp_NVUpdate::?relay`; Banked call to: ZDApp_NVUpdate
|
|
\ 0000EF 8003 SJMP ??ZDO_ProcessBindUnbindReq_7
|
|
1042 }
|
|
1043 else
|
|
1044 bindStat = ZDP_NO_ENTRY;
|
|
\ ??ZDO_ProcessBindUnbindReq_8:
|
|
\ 0000F1 7488 MOV A,#-0x78
|
|
\ ??ZDO_ProcessBindUnbindReq_2:
|
|
\ 0000F3 F0 MOVX @DPTR,A
|
|
1045 }
|
|
1046 }
|
|
1047 }
|
|
1048
|
|
1049 // Send back a response message
|
|
1050 ZDP_SendData( &(inMsg->TransSeq), &(inMsg->srcAddr),
|
|
1051 (inMsg->clusterID | ZDO_RESPONSE_BIT), 1, &bindStat,
|
|
1052 inMsg->SecurityUse );
|
|
\ ??ZDO_ProcessBindUnbindReq_7:
|
|
\ 0000F4 ; Setup parameters for call to function ZDP_SendData
|
|
\ 0000F4 E5.. MOV A,?V0
|
|
\ 0000F6 12.... LCALL ??Subroutine271_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_610:
|
|
\ 0000F9 35.. ADDC A,?V1
|
|
\ 0000FB 12.... LCALL ??Subroutine227_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_365:
|
|
\ 0000FE 12.... LCALL ?PUSH_XSTACK_I_ONE
|
|
\ 000101 7401 MOV A,#0x1
|
|
\ 000103 12.... LCALL ?XSTACK_DISP100_8
|
|
\ 000106 88.. MOV ?V2,R0
|
|
\ 000108 89.. MOV ?V3,R1
|
|
\ 00010A 78.. MOV R0,#?V2
|
|
\ 00010C 12.... LCALL ?PUSH_XSTACK_I_TWO
|
|
\ 00010F 12.... LCALL ?Subroutine154 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_652:
|
|
\ 000112 E0 MOVX A,@DPTR
|
|
\ 000113 F5.. MOV ?V2,A
|
|
\ 000115 A3 INC DPTR
|
|
\ 000116 E0 MOVX A,@DPTR
|
|
\ 000117 4480 ORL A,#0x80
|
|
\ 000119 F5.. MOV ?V3,A
|
|
\ 00011B 78.. MOV R0,#?V2
|
|
\ 00011D 12.... LCALL ?PUSH_XSTACK_I_TWO
|
|
\ 000120 12.... LCALL ?Subroutine140 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_223:
|
|
\ 000123 12.... LCALL ?DEALLOC_XSTACK8
|
|
1053 }
|
|
\ 000126 740C MOV A,#0xc
|
|
\ 000128 02.... LJMP ?Subroutine2 & 0xFFFF
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine126:
|
|
\ 000000 EE MOV A,R6
|
|
\ 000001 12.... LCALL ?Subroutine200 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_433:
|
|
\ 000004 E0 MOVX A,@DPTR
|
|
\ 000005 6403 XRL A,#0x3
|
|
\ 000007 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine110:
|
|
\ 000000 EE MOV A,R6
|
|
\ 000001 2414 ADD A,#0x14
|
|
\ 000003 F582 MOV DPL,A
|
|
\ 000005 E4 CLR A
|
|
\ 000006 3F ADDC A,R7
|
|
\ 000007 REQUIRE ??Subroutine227_0
|
|
\ 000007 ; // Fall through to label ??Subroutine227_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine67:
|
|
\ 000000 EE MOV A,R6
|
|
\ 000001 240B ADD A,#0xb
|
|
\ 000003 FC MOV R4,A
|
|
\ 000004 E4 CLR A
|
|
\ 000005 3F ADDC A,R7
|
|
\ 000006 FD MOV R5,A
|
|
\ 000007 8E82 MOV DPL,R6
|
|
\ 000009 8F83 MOV DPH,R7
|
|
\ 00000B A3 INC DPTR
|
|
\ 00000C A3 INC DPTR
|
|
\ 00000D A3 INC DPTR
|
|
\ 00000E A3 INC DPTR
|
|
\ 00000F A3 INC DPTR
|
|
\ 000010 A3 INC DPTR
|
|
\ 000011 A3 INC DPTR
|
|
\ 000012 A3 INC DPTR
|
|
\ 000013 A3 INC DPTR
|
|
\ 000014 12.... LCALL ?Subroutine176 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_539:
|
|
\ 000017 8E82 MOV DPL,R6
|
|
\ 000019 8F83 MOV DPH,R7
|
|
\ 00001B A3 INC DPTR
|
|
\ 00001C A3 INC DPTR
|
|
\ 00001D A3 INC DPTR
|
|
\ 00001E A3 INC DPTR
|
|
\ 00001F A3 INC DPTR
|
|
\ 000020 A3 INC DPTR
|
|
\ 000021 A3 INC DPTR
|
|
\ 000022 A3 INC DPTR
|
|
\ 000023 E0 MOVX A,@DPTR
|
|
\ 000024 F9 MOV R1,A
|
|
\ 000025 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine155:
|
|
\ 000000 2414 ADD A,#0x14
|
|
\ 000002 F582 MOV DPL,A
|
|
\ 000004 E4 CLR A
|
|
\ 000005 3F ADDC A,R7
|
|
\ 000006 F583 MOV DPH,A
|
|
\ 000008 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine200:
|
|
\ 000000 12.... LCALL ?Subroutine214 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_699:
|
|
\ 000003 3F ADDC A,R7
|
|
\ 000004 F583 MOV DPH,A
|
|
\ 000006 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine140:
|
|
\ 000000 7901 MOV R1,#0x1
|
|
\ 000002 E5.. MOV A,?V0
|
|
\ 000004 2402 ADD A,#0x2
|
|
\ 000006 FC MOV R4,A
|
|
\ 000007 E4 CLR A
|
|
\ 000008 35.. ADDC A,?V1
|
|
\ 00000A FD MOV R5,A
|
|
\ 00000B E5.. MOV A,?V0
|
|
\ 00000D 240F ADD A,#0xf
|
|
\ 00000F FA MOV R2,A
|
|
\ 000010 E4 CLR A
|
|
\ 000011 35.. ADDC A,?V1
|
|
\ 000013 12.... LCALL ?Subroutine204 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_435:
|
|
\ 000016 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine123:
|
|
\ 000000 12.... LCALL `??NLME_GetExtAddr::?relay`; Banked call to: NLME_GetExtAddr
|
|
\ 000003 8A.. MOV ?V2,R2
|
|
\ 000005 8B.. MOV ?V3,R3
|
|
\ 000007 AC.. MOV R4,?V2
|
|
\ 000009 AD.. MOV R5,?V3
|
|
\ 00000B 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine204:
|
|
\ 000000 FB MOV R3,A
|
|
\ 000001 REQUIRE ??Subroutine241_0
|
|
\ 000001 ; // Fall through to label ??Subroutine241_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine241_0:
|
|
\ 000000 12.... LCALL `??ZDP_SendData::?relay`; Banked call to: ZDP_SendData
|
|
\ 000003 7405 MOV A,#0x5
|
|
\ 000005 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine154:
|
|
\ 000000 E5.. MOV A,?V0
|
|
\ 000002 240C ADD A,#0xc
|
|
\ 000004 REQUIRE ??Subroutine279_0
|
|
\ 000004 ; // Fall through to label ??Subroutine279_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine279_0:
|
|
\ 000000 12.... LCALL ?Subroutine202 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_663:
|
|
\ 000003 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine202:
|
|
\ 000000 F582 MOV DPL,A
|
|
\ 000002 E4 CLR A
|
|
\ 000003 REQUIRE ??Subroutine280_0
|
|
\ 000003 ; // Fall through to label ??Subroutine280_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine280_0:
|
|
\ 000000 35.. ADDC A,?V1
|
|
\ 000002 F583 MOV DPH,A
|
|
\ 000004 22 RET
|
|
1054
|
|
1055 /*********************************************************************
|
|
1056 * @fn ZDO_UpdateAddrManager
|
|
1057 *
|
|
1058 * @brief Update the Address Manager.
|
|
1059 *
|
|
1060 * @param nwkAddr - network address
|
|
1061 * @param extAddr - extended address
|
|
1062 *
|
|
1063 * @return none
|
|
1064 */
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
1065 void ZDO_UpdateAddrManager( uint16 nwkAddr, uint8 *extAddr )
|
|
\ ZDO_UpdateAddrManager:
|
|
1066 {
|
|
\ 000000 C082 PUSH DPL
|
|
\ 000002 C083 PUSH DPH
|
|
\ 000004 ; Saved register size: 2
|
|
\ 000004 ; Auto size: 13
|
|
\ 000004 74F3 MOV A,#-0xd
|
|
\ 000006 12.... LCALL ?ALLOC_XSTACK8
|
|
1067 AddrMgrEntry_t addrEntry;
|
|
1068
|
|
1069 // Update the address manager
|
|
1070 addrEntry.user = ADDRMGR_USER_DEFAULT;
|
|
\ 000009 85..82 MOV DPL,?XSP + 0
|
|
\ 00000C 85..83 MOV DPH,?XSP + 1
|
|
\ 00000F E4 CLR A
|
|
\ 000010 F0 MOVX @DPTR,A
|
|
1071 addrEntry.nwkAddr = nwkAddr;
|
|
\ 000011 04 INC A
|
|
\ 000012 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000015 12.... LCALL ??Subroutine238_0 & 0xFFFF
|
|
1072 AddrMgrExtAddrSet( addrEntry.extAddr, extAddr );
|
|
\ ??CrossCallReturnLabel_420:
|
|
\ 000018 ; Setup parameters for call to function AddrMgrExtAddrSet
|
|
\ 000018 7403 MOV A,#0x3
|
|
\ 00001A 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 00001D AA82 MOV R2,DPL
|
|
\ 00001F AB83 MOV R3,DPH
|
|
\ 000021 12.... LCALL `??AddrMgrExtAddrSet::?relay`; Banked call to: AddrMgrExtAddrSet
|
|
1073 AddrMgrEntryUpdate( &addrEntry );
|
|
\ 000024 ; Setup parameters for call to function AddrMgrEntryUpdate
|
|
\ 000024 AA.. MOV R2,?XSP + 0
|
|
\ 000026 AB.. MOV R3,?XSP + 1
|
|
\ 000028 12.... LCALL `??AddrMgrEntryUpdate::?relay`; Banked call to: AddrMgrEntryUpdate
|
|
1074 }
|
|
\ 00002B 740D MOV A,#0xd
|
|
\ 00002D 12.... LCALL ?DEALLOC_XSTACK8
|
|
\ 000030 02.... LJMP ?Subroutine0 & 0xFFFF
|
|
1075
|
|
1076 /*********************************************************************
|
|
1077 * @fn ZDO_ProcessServerDiscReq
|
|
1078 *
|
|
1079 * @brief Process the Server_Discovery_req message.
|
|
1080 *
|
|
1081 * @param inMsg - incoming message (request)
|
|
1082 *
|
|
1083 * @return none
|
|
1084 */
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
1085 void ZDO_ProcessServerDiscReq( zdoIncomingMsg_t *inMsg )
|
|
\ ZDO_ProcessServerDiscReq:
|
|
1086 {
|
|
\ 000000 REQUIRE ?V0
|
|
\ 000000 REQUIRE ?V1
|
|
\ 000000 74F6 MOV A,#-0xa
|
|
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
|
\ 000005 ; Saved register size: 10
|
|
\ 000005 ; Auto size: 0
|
|
\ 000005 12.... LCALL ?Subroutine127 & 0xFFFF
|
|
1087 uint16 serverMask = BUILD_UINT16( inMsg->asdu[0], inMsg->asdu[1] );
|
|
1088 uint16 matchMask = serverMask & ZDO_Config_Node_Descriptor.ServerMask;
|
|
\ ??CrossCallReturnLabel_429:
|
|
\ 000008 12.... LCALL ?Subroutine212 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_338:
|
|
\ 00000B 12.... LCALL ?Subroutine187 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_304:
|
|
\ 00000E F8 MOV R0,A
|
|
\ 00000F 90.... MOV DPTR,#ZDO_Config_Node_Descriptor + 8
|
|
\ 000012 E0 MOVX A,@DPTR
|
|
\ 000013 58 ANL A,R0
|
|
\ 000014 F5.. MOV ?V0,A
|
|
\ 000016 A3 INC DPTR
|
|
\ 000017 E0 MOVX A,@DPTR
|
|
\ 000018 59 ANL A,R1
|
|
\ 000019 F5.. MOV ?V1,A
|
|
1089
|
|
1090 if ( matchMask )
|
|
\ 00001B E5.. MOV A,?V0
|
|
\ 00001D 45.. ORL A,?V1
|
|
\ 00001F 601B JZ ??ZDO_ProcessServerDiscReq_0
|
|
1091 {
|
|
1092 ZDP_ServerDiscRsp( inMsg->TransSeq, &(inMsg->srcAddr), ZSUCCESS,
|
|
1093 ZDAppNwkAddr.addr.shortAddr, matchMask, inMsg->SecurityUse );
|
|
\ 000021 ; Setup parameters for call to function ZDP_ServerDiscRsp
|
|
\ 000021 78.. MOV R0,#?V0
|
|
\ 000023 12.... LCALL ?PUSH_XSTACK_I_TWO
|
|
\ 000026 90.... MOV DPTR,#ZDAppNwkAddr
|
|
\ 000029 12.... LCALL ?PUSH_XSTACK8_X_TWO
|
|
\ 00002C 12.... LCALL ?Subroutine143 & 0xFFFF
|
|
1094 }
|
|
\ ??CrossCallReturnLabel_230:
|
|
\ 00002F 7C00 MOV R4,#0x0
|
|
\ 000031 12.... LCALL ?Subroutine135 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_216:
|
|
\ 000034 12.... LCALL `??ZDP_ServerDiscRsp::?relay`; Banked call to: ZDP_ServerDiscRsp
|
|
\ 000037 7404 MOV A,#0x4
|
|
\ 000039 12.... LCALL ?DEALLOC_XSTACK8
|
|
1095 }
|
|
\ ??ZDO_ProcessServerDiscReq_0:
|
|
\ 00003C 02.... LJMP ??Subroutine222_0 & 0xFFFF
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine127:
|
|
\ 000000 EA MOV A,R2
|
|
\ 000001 FE MOV R6,A
|
|
\ 000002 EB MOV A,R3
|
|
\ 000003 FF MOV R7,A
|
|
\ 000004 ; Setup parameters for call to function NLME_PermitJoiningRequest
|
|
\ 000004 REQUIRE ??Subroutine240_0
|
|
\ 000004 ; // Fall through to label ??Subroutine240_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine240_0:
|
|
\ 000000 EA MOV A,R2
|
|
\ 000001 12.... LCALL ?Subroutine200 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_434:
|
|
\ 000004 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine143:
|
|
\ 000000 12.... LCALL ?Subroutine195 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_312:
|
|
\ 000003 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine135:
|
|
\ 000000 12.... LCALL ?Subroutine193 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_310:
|
|
\ 000003 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine187:
|
|
\ 000000 12.... LCALL ??Subroutine284_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_677:
|
|
\ 000003 EA MOV A,R2
|
|
\ 000004 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine284_0:
|
|
\ 000000 12.... LCALL ??Subroutine276_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_686:
|
|
\ 000003 F9 MOV R1,A
|
|
\ 000004 22 RET
|
|
1096
|
|
1097 /*********************************************************************
|
|
1098 * Call Back Functions from APS - API
|
|
1099 */
|
|
1100
|
|
1101 /*********************************************************************
|
|
1102 * @fn ZDO_EndDeviceTimeoutCB
|
|
1103 *
|
|
1104 * @brief This function handles the binding timer for the End
|
|
1105 * Device Bind command.
|
|
1106 *
|
|
1107 * @param none
|
|
1108 *
|
|
1109 * @return none
|
|
1110 */
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
1111 void ZDO_EndDeviceTimeoutCB( void )
|
|
\ ZDO_EndDeviceTimeoutCB:
|
|
1112 {
|
|
\ 000000 REQUIRE ?V0
|
|
\ 000000 REQUIRE ?V1
|
|
\ 000000 74F6 MOV A,#-0xa
|
|
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
|
\ 000005 ; Saved register size: 10
|
|
\ 000005 ; Auto size: 2
|
|
\ 000005 74FE MOV A,#-0x2
|
|
\ 000007 12.... LCALL ?ALLOC_XSTACK8
|
|
1113 #if defined ( REFLECTOR )
|
|
1114 byte stat;
|
|
1115 if ( ZDO_EDBind )
|
|
\ 00000A 90.... MOV DPTR,#ZDO_EDBind
|
|
\ 00000D 12.... LCALL ??Subroutine255_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_498:
|
|
\ 000010 7003 JNZ $+5
|
|
\ 000012 02.... LJMP ??ZDO_EndDeviceTimeoutCB_0 & 0xFFFF
|
|
1116 {
|
|
1117 stat = ZDO_EDBind->status;
|
|
1118
|
|
1119 // Send the response message to the first sent
|
|
1120 ZDO_SendEDBindRsp( ZDO_EDBind->SrcTransSeq, &(ZDO_EDBind->SrcAddr),
|
|
1121 stat, ZDO_EDBind->SecurityUse );
|
|
\ 000015 E8 MOV A,R0
|
|
\ 000016 2415 ADD A,#0x15
|
|
\ 000018 F582 MOV DPL,A
|
|
\ 00001A E4 CLR A
|
|
\ 00001B 39 ADDC A,R1
|
|
\ 00001C F583 MOV DPH,A
|
|
\ 00001E E0 MOVX A,@DPTR
|
|
\ 00001F F8 MOV R0,A
|
|
\ 000020 90.... MOV DPTR,#ZDO_EDBind
|
|
\ 000023 E0 MOVX A,@DPTR
|
|
\ 000024 F9 MOV R1,A
|
|
\ 000025 A3 INC DPTR
|
|
\ 000026 E0 MOVX A,@DPTR
|
|
\ 000027 C9 XCH A,R1
|
|
\ 000028 2416 ADD A,#0x16
|
|
\ 00002A F582 MOV DPL,A
|
|
\ 00002C E4 CLR A
|
|
\ 00002D 39 ADDC A,R1
|
|
\ 00002E F583 MOV DPH,A
|
|
\ 000030 E0 MOVX A,@DPTR
|
|
\ 000031 C0E0 PUSH A
|
|
\ 000033 7401 MOV A,#0x1
|
|
\ 000035 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000038 D0E0 POP A
|
|
\ 00003A F0 MOVX @DPTR,A
|
|
\ 00003B 90.... MOV DPTR,#ZDO_EDBind
|
|
\ 00003E E0 MOVX A,@DPTR
|
|
\ 00003F F9 MOV R1,A
|
|
\ 000040 A3 INC DPTR
|
|
\ 000041 E0 MOVX A,@DPTR
|
|
\ 000042 F583 MOV DPH,A
|
|
\ 000044 8982 MOV DPL,R1
|
|
\ 000046 12.... LCALL ?Subroutine121 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_199:
|
|
\ 000049 ; Setup parameters for call to function ZDP_SendData
|
|
\ 000049 E8 MOV A,R0
|
|
\ 00004A F5.. MOV ?V0,A
|
|
\ 00004C 78.. MOV R0,#?V0
|
|
\ 00004E 12.... LCALL ?PUSH_XSTACK_I_ONE
|
|
\ 000051 7402 MOV A,#0x2
|
|
\ 000053 12.... LCALL ?XSTACK_DISP100_8
|
|
\ 000056 88.. MOV ?V0,R0
|
|
\ 000058 89.. MOV ?V1,R1
|
|
\ 00005A 78.. MOV R0,#?V0
|
|
\ 00005C 12.... LCALL ?PUSH_XSTACK_I_TWO
|
|
\ 00005F 75..20 MOV ?V0,#0x20
|
|
\ 000062 75..80 MOV ?V1,#-0x80
|
|
\ 000065 78.. MOV R0,#?V0
|
|
\ 000067 12.... LCALL ?PUSH_XSTACK_I_TWO
|
|
\ 00006A 7901 MOV R1,#0x1
|
|
\ 00006C 90.... MOV DPTR,#ZDO_EDBind
|
|
\ 00006F E0 MOVX A,@DPTR
|
|
\ 000070 29 ADD A,R1
|
|
\ 000071 FC MOV R4,A
|
|
\ 000072 A3 INC DPTR
|
|
\ 000073 E0 MOVX A,@DPTR
|
|
\ 000074 3400 ADDC A,#0x0
|
|
\ 000076 FD MOV R5,A
|
|
\ 000077 7405 MOV A,#0x5
|
|
\ 000079 12.... LCALL ?XSTACK_DISP101_8
|
|
\ 00007C 12.... LCALL ?Subroutine158 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_261:
|
|
\ 00007F 12.... LCALL ?DEALLOC_XSTACK8
|
|
1122
|
|
1123 ZDO_RemoveEndDeviceBind();
|
|
\ 000082 90.... MOV DPTR,#ZDO_EDBind
|
|
\ 000085 12.... LCALL ??Subroutine255_0 & 0xFFFF
|
|
1124 }
|
|
\ ??CrossCallReturnLabel_499:
|
|
\ 000088 603C JZ ??ZDO_EndDeviceTimeoutCB_0
|
|
\ 00008A E8 MOV A,R0
|
|
\ 00008B 2410 ADD A,#0x10
|
|
\ 00008D F582 MOV DPL,A
|
|
\ 00008F E4 CLR A
|
|
\ 000090 39 ADDC A,R1
|
|
\ 000091 12.... LCALL ??Subroutine254_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_507:
|
|
\ 000094 600B JZ ??CrossCallReturnLabel_411
|
|
\ 000096 ; Setup parameters for call to function osal_mem_free
|
|
\ 000096 90.... MOV DPTR,#ZDO_EDBind
|
|
\ 000099 12.... LCALL ??Subroutine270_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_578:
|
|
\ 00009C 2410 ADD A,#0x10
|
|
\ 00009E 12.... LCALL ?Subroutine52 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_411:
|
|
\ 0000A1 90.... MOV DPTR,#ZDO_EDBind
|
|
\ 0000A4 12.... LCALL ??Subroutine270_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_579:
|
|
\ 0000A7 2413 ADD A,#0x13
|
|
\ 0000A9 12.... LCALL ?Subroutine51 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_511:
|
|
\ 0000AC 600B JZ ??CrossCallReturnLabel_412
|
|
\ 0000AE ; Setup parameters for call to function osal_mem_free
|
|
\ 0000AE 90.... MOV DPTR,#ZDO_EDBind
|
|
\ 0000B1 12.... LCALL ??Subroutine270_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_580:
|
|
\ 0000B4 2413 ADD A,#0x13
|
|
\ 0000B6 12.... LCALL ?Subroutine52 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_412:
|
|
\ 0000B9 ; Setup parameters for call to function osal_mem_free
|
|
\ 0000B9 90.... MOV DPTR,#ZDO_EDBind
|
|
\ 0000BC 12.... LCALL ??Subroutine237_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_410:
|
|
\ 0000BF 90.... MOV DPTR,#ZDO_EDBind
|
|
\ 0000C2 E4 CLR A
|
|
\ 0000C3 F0 MOVX @DPTR,A
|
|
\ 0000C4 A3 INC DPTR
|
|
\ 0000C5 F0 MOVX @DPTR,A
|
|
1125 #endif // REFLECTOR
|
|
1126 }
|
|
\ ??ZDO_EndDeviceTimeoutCB_0:
|
|
\ 0000C6 02.... LJMP ?Subroutine4 & 0xFFFF
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine52:
|
|
\ 000000 F582 MOV DPL,A
|
|
\ 000002 E4 CLR A
|
|
\ 000003 38 ADDC A,R0
|
|
\ 000004 REQUIRE ??Subroutine236_0
|
|
\ 000004 ; // Fall through to label ??Subroutine236_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine236_0:
|
|
\ 000000 F583 MOV DPH,A
|
|
\ 000002 REQUIRE ??Subroutine237_0
|
|
\ 000002 ; // Fall through to label ??Subroutine237_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine51:
|
|
\ 000000 F582 MOV DPL,A
|
|
\ 000002 E4 CLR A
|
|
\ 000003 38 ADDC A,R0
|
|
\ 000004 REQUIRE ??Subroutine254_0
|
|
\ 000004 ; // Fall through to label ??Subroutine254_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine254_0:
|
|
\ 000000 F583 MOV DPH,A
|
|
\ 000002 REQUIRE ??Subroutine255_0
|
|
\ 000002 ; // Fall through to label ??Subroutine255_0
|
|
1127
|
|
1128 /*********************************************************************
|
|
1129 * Optional Management Messages
|
|
1130 */
|
|
1131
|
|
1132 /*********************************************************************
|
|
1133 * @fn ZDO_ProcessMgmtLqiReq
|
|
1134 *
|
|
1135 * @brief This function handles parsing the incoming Management
|
|
1136 * LQI request and generate the response.
|
|
1137 *
|
|
1138 * Note: This function will limit the number of items returned
|
|
1139 * to ZDO_MAX_LQI_ITEMS items.
|
|
1140 *
|
|
1141 * @param inMsg - incoming message (request)
|
|
1142 *
|
|
1143 * @return none
|
|
1144 */
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
1145 void ZDO_ProcessMgmtLqiReq( zdoIncomingMsg_t *inMsg )
|
|
\ ZDO_ProcessMgmtLqiReq:
|
|
1146 {
|
|
\ 000000 REQUIRE ?V0
|
|
\ 000000 REQUIRE ?V1
|
|
\ 000000 REQUIRE ?V2
|
|
\ 000000 REQUIRE ?V3
|
|
\ 000000 REQUIRE ?V4
|
|
\ 000000 REQUIRE ?V5
|
|
\ 000000 REQUIRE ?V6
|
|
\ 000000 REQUIRE ?V7
|
|
\ 000000 74F0 MOV A,#-0x10
|
|
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
|
\ 000005 ; Saved register size: 16
|
|
\ 000005 ; Auto size: 42
|
|
\ 000005 74D6 MOV A,#-0x2a
|
|
\ 000007 12.... LCALL ?ALLOC_XSTACK8
|
|
\ 00000A 7404 MOV A,#0x4
|
|
\ 00000C 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 00000F 12.... LCALL ??Subroutine238_0 & 0xFFFF
|
|
1147 byte x;
|
|
1148 byte index;
|
|
1149 byte numItems;
|
|
1150 byte maxItems;
|
|
1151 ZDP_MgmtLqiItem_t* table = NULL;
|
|
\ ??CrossCallReturnLabel_421:
|
|
\ 000012 7402 MOV A,#0x2
|
|
\ 000014 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000017 E4 CLR A
|
|
\ 000018 F0 MOVX @DPTR,A
|
|
\ 000019 A3 INC DPTR
|
|
\ 00001A F0 MOVX @DPTR,A
|
|
1152 ZDP_MgmtLqiItem_t* item;
|
|
1153 neighborEntry_t entry;
|
|
1154 byte aItems;
|
|
1155 associated_devices_t *aDevice;
|
|
1156 AddrMgrEntry_t nwkEntry;
|
|
1157 uint8 StartIndex = inMsg->asdu[0];
|
|
\ 00001B 7404 MOV A,#0x4
|
|
\ 00001D 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000020 12.... LCALL ?Subroutine84 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_132:
|
|
\ 000023 12.... LCALL ??Subroutine234_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_385:
|
|
\ 000026 F5.. MOV ?V7,A
|
|
1158
|
|
1159 // Get the number of neighbor items
|
|
1160 NLME_GetRequest( nwkNumNeighborTableEntries, 0, &maxItems );
|
|
\ 000028 ; Setup parameters for call to function NLME_GetRequest
|
|
\ 000028 AC.. MOV R4,?XSP + 0
|
|
\ 00002A AD.. MOV R5,?XSP + 1
|
|
\ 00002C 7A00 MOV R2,#0x0
|
|
\ 00002E 7B00 MOV R3,#0x0
|
|
\ 000030 799C MOV R1,#-0x64
|
|
\ 000032 12.... LCALL `??NLME_GetRequest::?relay`; Banked call to: NLME_GetRequest
|
|
1161
|
|
1162 // Get the number of associated items
|
|
1163 aItems = (uint8)AssocCount( PARENT, CHILD_FFD_RX_IDLE );
|
|
\ 000035 ; Setup parameters for call to function AssocCount
|
|
\ 000035 7A04 MOV R2,#0x4
|
|
\ 000037 7900 MOV R1,#0x0
|
|
\ 000039 12.... LCALL `??AssocCount::?relay`; Banked call to: AssocCount
|
|
\ 00003C 7401 MOV A,#0x1
|
|
\ 00003E 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000041 EA MOV A,R2
|
|
\ 000042 12.... LCALL ?Subroutine30 & 0xFFFF
|
|
1164
|
|
1165 // Total number of items
|
|
1166 maxItems += aItems;
|
|
\ ??CrossCallReturnLabel_31:
|
|
\ 000045 2A ADD A,R2
|
|
\ 000046 F0 MOVX @DPTR,A
|
|
1167
|
|
1168 // Start with the supplied index
|
|
1169 if ( maxItems > StartIndex )
|
|
\ 000047 F8 MOV R0,A
|
|
\ 000048 E5.. MOV A,?V7
|
|
\ 00004A C3 CLR C
|
|
\ 00004B 98 SUBB A,R0
|
|
\ 00004C 4003 JC $+5
|
|
\ 00004E 02.... LJMP ??ZDO_ProcessMgmtLqiReq_0 & 0xFFFF
|
|
1170 {
|
|
1171 numItems = maxItems - StartIndex;
|
|
\ 000051 E0 MOVX A,@DPTR
|
|
\ 000052 C3 CLR C
|
|
\ 000053 95.. SUBB A,?V7
|
|
\ 000055 F5.. MOV ?V1,A
|
|
1172
|
|
1173 // limit the size of the list
|
|
1174 if ( numItems > ZDO_MAX_LQI_ITEMS )
|
|
\ 000057 C3 CLR C
|
|
\ 000058 9404 SUBB A,#0x4
|
|
\ 00005A 4003 JC ??ZDO_ProcessMgmtLqiReq_1
|
|
1175 numItems = ZDO_MAX_LQI_ITEMS;
|
|
\ 00005C 75..03 MOV ?V1,#0x3
|
|
1176
|
|
1177 // Allocate the memory to build the table
|
|
1178 table = (ZDP_MgmtLqiItem_t*)osal_mem_alloc( (short)
|
|
1179 ( numItems * sizeof( ZDP_MgmtLqiItem_t ) ) );
|
|
\ ??ZDO_ProcessMgmtLqiReq_1:
|
|
\ 00005F ; Setup parameters for call to function osal_mem_alloc
|
|
\ 00005F E5.. MOV A,?V1
|
|
\ 000061 75F01A MOV B,#0x1a
|
|
\ 000064 A4 MUL AB
|
|
\ 000065 FA MOV R2,A
|
|
\ 000066 ABF0 MOV R3,B
|
|
\ 000068 12.... LCALL `??osal_mem_alloc::?relay`; Banked call to: osal_mem_alloc
|
|
\ 00006B 7402 MOV A,#0x2
|
|
\ 00006D 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000070 12.... LCALL ??Subroutine238_0 & 0xFFFF
|
|
1180
|
|
1181 if ( table != NULL )
|
|
\ ??CrossCallReturnLabel_422:
|
|
\ 000073 7402 MOV A,#0x2
|
|
\ 000075 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000078 12.... LCALL ??Subroutine255_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_500:
|
|
\ 00007B 7003 JNZ $+5
|
|
\ 00007D 02.... LJMP ??ZDO_ProcessMgmtLqiReq_2 & 0xFFFF
|
|
1182 {
|
|
1183 x = 0;
|
|
\ 000080 75..00 MOV ?V6,#0x0
|
|
1184 item = table;
|
|
\ 000083 7402 MOV A,#0x2
|
|
\ 000085 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000088 12.... LCALL ??Subroutine231_0 & 0xFFFF
|
|
1185 index = StartIndex;
|
|
\ ??CrossCallReturnLabel_380:
|
|
\ 00008B 85.... MOV ?V0,?V7
|
|
\ 00008E 807B SJMP ??ZDO_ProcessMgmtLqiReq_3
|
|
1186
|
|
1187 // Loop through associated items and build list
|
|
1188 for ( ; x < numItems; x++ )
|
|
1189 {
|
|
1190 if ( index < aItems )
|
|
1191 {
|
|
1192 // get next associated device
|
|
1193 aDevice = AssocFindDevice( index++ );
|
|
1194
|
|
1195 // set basic fields
|
|
1196 item->panID = _NIB.nwkPanId;
|
|
1197 osal_cpyExtAddr( item->extPanID, _NIB.extendedPANID );
|
|
1198 item->nwkAddr = aDevice->shortAddr;
|
|
1199 item->permit = ZDP_MGMT_BOOL_UNKNOWN;
|
|
1200 item->depth = 0xFF;
|
|
1201 item->lqi = aDevice->linkInfo.rxLqi;
|
|
1202
|
|
1203 // set extented address
|
|
1204 nwkEntry.user = ADDRMGR_USER_DEFAULT;
|
|
1205 nwkEntry.nwkAddr = aDevice->shortAddr;
|
|
1206
|
|
1207 if ( AddrMgrEntryLookupNwk( &nwkEntry ) == TRUE )
|
|
1208 {
|
|
1209 osal_cpyExtAddr( item->extAddr, nwkEntry.extAddr );
|
|
1210 }
|
|
1211 else
|
|
1212 {
|
|
1213 osal_memset( item->extAddr, 0xFF, Z_EXTADDR_LEN );
|
|
\ ??ZDO_ProcessMgmtLqiReq_4:
|
|
\ 000090 ; Setup parameters for call to function osal_memset
|
|
\ 000090 12.... LCALL ?Subroutine151 & 0xFFFF
|
|
1214 }
|
|
1215
|
|
1216 // use association info to set other fields
|
|
1217 if ( aDevice->nodeRelation == PARENT )
|
|
\ ??CrossCallReturnLabel_247:
|
|
\ 000093 85..82 MOV DPL,?V4
|
|
\ 000096 85..83 MOV DPH,?V5
|
|
\ 000099 A3 INC DPTR
|
|
\ 00009A A3 INC DPTR
|
|
\ 00009B A3 INC DPTR
|
|
\ 00009C A3 INC DPTR
|
|
\ 00009D E0 MOVX A,@DPTR
|
|
\ 00009E 702D JNZ ??ZDO_ProcessMgmtLqiReq_5
|
|
1218 {
|
|
1219 if ( aDevice->shortAddr == 0 )
|
|
\ 0000A0 85..82 MOV DPL,?V4
|
|
\ 0000A3 85..83 MOV DPH,?V5
|
|
\ 0000A6 12.... LCALL ??Subroutine255_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_501:
|
|
\ 0000A9 700C JNZ ??ZDO_ProcessMgmtLqiReq_6
|
|
1220 {
|
|
1221 item->devType = ZDP_MGMT_DT_COORD;
|
|
\ 0000AB 12.... LCALL ?Subroutine139 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_531:
|
|
\ 0000AE F0 MOVX @DPTR,A
|
|
1222 item->depth = 0;
|
|
\ 0000AF EE MOV A,R6
|
|
\ 0000B0 2418 ADD A,#0x18
|
|
\ 0000B2 12.... LCALL ??Subroutine259_0 & 0xFFFF
|
|
1223 }
|
|
\ ??CrossCallReturnLabel_527:
|
|
\ 0000B5 8010 SJMP ??ZDO_ProcessMgmtLqiReq_7
|
|
1224 else
|
|
1225 {
|
|
1226 item->devType = ZDP_MGMT_DT_ROUTER;
|
|
\ ??ZDO_ProcessMgmtLqiReq_6:
|
|
\ 0000B7 12.... LCALL ?Subroutine137 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_376:
|
|
\ 0000BA F0 MOVX @DPTR,A
|
|
1227 item->depth = _NIB.nodeDepth - 1;
|
|
\ 0000BB 90.... MOV DPTR,#_NIB + 52
|
|
\ 0000BE E0 MOVX A,@DPTR
|
|
\ 0000BF 14 DEC A
|
|
\ 0000C0 C0E0 PUSH A
|
|
\ 0000C2 12.... LCALL ?Subroutine159 & 0xFFFF
|
|
1228 }
|
|
1229
|
|
1230 item->rxOnIdle = ZDP_MGMT_BOOL_UNKNOWN;
|
|
1231 item->relation = ZDP_MGMT_REL_PARENT;
|
|
1232 }
|
|
\ ??CrossCallReturnLabel_265:
|
|
\ 0000C5 D0E0 POP A
|
|
\ ??ZDO_ProcessMgmtLqiReq_7:
|
|
\ 0000C7 12.... LCALL ?Subroutine13 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_8:
|
|
\ 0000CA E4 CLR A
|
|
\ 0000CB 8034 SJMP ??CrossCallReturnLabel_374
|
|
1233 else
|
|
1234 {
|
|
1235 // If not parent, then it's a child
|
|
1236 item->depth = _NIB.nodeDepth + 1;
|
|
\ ??ZDO_ProcessMgmtLqiReq_5:
|
|
\ 0000CD 90.... MOV DPTR,#_NIB + 52
|
|
\ 0000D0 E0 MOVX A,@DPTR
|
|
\ 0000D1 04 INC A
|
|
\ 0000D2 C0E0 PUSH A
|
|
\ 0000D4 12.... LCALL ?Subroutine159 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_266:
|
|
\ 0000D7 D0E0 POP A
|
|
\ 0000D9 12.... LCALL ?Subroutine15 & 0xFFFF
|
|
1237
|
|
1238 if ( aDevice->nodeRelation < CHILD_FFD )
|
|
\ ??CrossCallReturnLabel_12:
|
|
\ 0000DC C3 CLR C
|
|
\ 0000DD 9403 SUBB A,#0x3
|
|
\ 0000DF EE MOV A,R6
|
|
\ 0000E0 4003 JC $+5
|
|
\ 0000E2 02.... LJMP ??ZDO_ProcessMgmtLqiReq_8 & 0xFFFF
|
|
1239 {
|
|
1240 item->devType = ZDP_MGMT_DT_ENDDEV;
|
|
\ 0000E5 12.... LCALL ?Subroutine155 & 0xFFFF
|
|
1241
|
|
1242 if ( aDevice->nodeRelation == CHILD_RFD )
|
|
1243 {
|
|
1244 item->rxOnIdle = FALSE;
|
|
1245 }
|
|
1246 else
|
|
1247 {
|
|
1248 item->rxOnIdle = TRUE;
|
|
1249 }
|
|
1250 }
|
|
\ ??CrossCallReturnLabel_260:
|
|
\ 0000E8 7402 MOV A,#0x2
|
|
\ 0000EA 12.... LCALL ?Subroutine15 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_13:
|
|
\ 0000ED 6401 XRL A,#0x1
|
|
\ 0000EF 7003 JNZ $+5
|
|
\ 0000F1 02.... LJMP ??ZDO_ProcessMgmtLqiReq_9 & 0xFFFF
|
|
1251 else
|
|
1252 {
|
|
1253 item->devType = ZDP_MGMT_DT_ROUTER;
|
|
1254
|
|
1255 if ( aDevice->nodeRelation == CHILD_FFD )
|
|
1256 {
|
|
1257 item->rxOnIdle = FALSE;
|
|
1258 }
|
|
1259 else
|
|
1260 {
|
|
1261 item->rxOnIdle = TRUE;
|
|
\ ??ZDO_ProcessMgmtLqiReq_10:
|
|
\ 0000F4 EE MOV A,R6
|
|
\ 0000F5 2415 ADD A,#0x15
|
|
\ 0000F7 12.... LCALL ??Subroutine230_0 & 0xFFFF
|
|
1262 }
|
|
\ ??CrossCallReturnLabel_373:
|
|
\ 0000FA F0 MOVX @DPTR,A
|
|
1263 }
|
|
1264
|
|
1265 item->relation = ZDP_MGMT_REL_CHILD;
|
|
\ 0000FB EE MOV A,R6
|
|
\ 0000FC 2416 ADD A,#0x16
|
|
\ 0000FE 12.... LCALL ??Subroutine230_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_374:
|
|
\ 000101 F0 MOVX @DPTR,A
|
|
1266 }
|
|
1267
|
|
1268 item++;
|
|
\ 000102 EE MOV A,R6
|
|
\ 000103 241A ADD A,#0x1a
|
|
\ 000105 FE MOV R6,A
|
|
\ 000106 5001 JNC ??ZDO_ProcessMgmtLqiReq_11
|
|
\ 000108 0F INC R7
|
|
\ ??ZDO_ProcessMgmtLqiReq_11:
|
|
\ 000109 05.. INC ?V6
|
|
\ ??ZDO_ProcessMgmtLqiReq_3:
|
|
\ 00010B E5.. MOV A,?V6
|
|
\ 00010D C3 CLR C
|
|
\ 00010E 95.. SUBB A,?V1
|
|
\ 000110 4003 JC $+5
|
|
\ 000112 02.... LJMP ??ZDO_ProcessMgmtLqiReq_12 & 0xFFFF
|
|
\ 000115 7401 MOV A,#0x1
|
|
\ 000117 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 00011A E0 MOVX A,@DPTR
|
|
\ 00011B F8 MOV R0,A
|
|
\ 00011C E5.. MOV A,?V0
|
|
\ 00011E C3 CLR C
|
|
\ 00011F 98 SUBB A,R0
|
|
\ 000120 4003 JC $+5
|
|
\ 000122 02.... LJMP ??ZDO_ProcessMgmtLqiReq_13 & 0xFFFF
|
|
\ 000125 ; Setup parameters for call to function AssocFindDevice
|
|
\ 000125 A9.. MOV R1,?V0
|
|
\ 000127 12.... LCALL `??AssocFindDevice::?relay`; Banked call to: AssocFindDevice
|
|
\ 00012A 8A.. MOV ?V4,R2
|
|
\ 00012C 8B.. MOV ?V5,R3
|
|
\ 00012E 05.. INC ?V0
|
|
\ 000130 90.... MOV DPTR,#_NIB + 33
|
|
\ 000133 12.... LCALL ?Subroutine16 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_15:
|
|
\ 000136 85..82 MOV DPL,?V4
|
|
\ 000139 85..83 MOV DPH,?V5
|
|
\ 00013C 12.... LCALL ??Subroutine248_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_455:
|
|
\ 00013F 12.... LCALL ?Subroutine156 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_370:
|
|
\ 000142 F583 MOV DPH,A
|
|
\ 000144 E8 MOV A,R0
|
|
\ 000145 F0 MOVX @DPTR,A
|
|
\ 000146 A3 INC DPTR
|
|
\ 000147 E9 MOV A,R1
|
|
\ 000148 12.... LCALL ?Subroutine12 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_6:
|
|
\ 00014B 85..82 MOV DPL,?V4
|
|
\ 00014E 85..83 MOV DPH,?V5
|
|
\ 000151 A3 INC DPTR
|
|
\ 000152 A3 INC DPTR
|
|
\ 000153 A3 INC DPTR
|
|
\ 000154 A3 INC DPTR
|
|
\ 000155 A3 INC DPTR
|
|
\ 000156 A3 INC DPTR
|
|
\ 000157 A3 INC DPTR
|
|
\ 000158 A3 INC DPTR
|
|
\ 000159 A3 INC DPTR
|
|
\ 00015A A3 INC DPTR
|
|
\ 00015B E0 MOVX A,@DPTR
|
|
\ 00015C C0E0 PUSH A
|
|
\ 00015E 12.... LCALL ?Subroutine160 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_267:
|
|
\ 000161 D0E0 POP A
|
|
\ 000163 F0 MOVX @DPTR,A
|
|
\ 000164 7406 MOV A,#0x6
|
|
\ 000166 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000169 E4 CLR A
|
|
\ 00016A 12.... LCALL ?Subroutine163 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_269:
|
|
\ 00016D 12.... LCALL ??Subroutine248_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_456:
|
|
\ 000170 7407 MOV A,#0x7
|
|
\ 000172 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000175 12.... LCALL ??Subroutine289_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_718:
|
|
\ 000178 ; Setup parameters for call to function AddrMgrEntryLookupNwk
|
|
\ 000178 7406 MOV A,#0x6
|
|
\ 00017A 12.... LCALL ?XSTACK_DISP101_8
|
|
\ 00017D 12.... LCALL `??AddrMgrEntryLookupNwk::?relay`; Banked call to: AddrMgrEntryLookupNwk
|
|
\ 000180 E9 MOV A,R1
|
|
\ 000181 6401 XRL A,#0x1
|
|
\ 000183 6003 JZ $+5
|
|
\ 000185 02.... LJMP ??ZDO_ProcessMgmtLqiReq_4 & 0xFFFF
|
|
\ 000188 ; Setup parameters for call to function sAddrExtCpy
|
|
\ 000188 7409 MOV A,#0x9
|
|
\ 00018A 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 00018D AC82 MOV R4,DPL
|
|
\ 00018F AD83 MOV R5,DPH
|
|
\ 000191 EE MOV A,R6
|
|
\ 000192 240A ADD A,#0xa
|
|
\ 000194 FA MOV R2,A
|
|
\ 000195 E4 CLR A
|
|
\ 000196 3F ADDC A,R7
|
|
\ 000197 FB MOV R3,A
|
|
\ 000198 12.... LCALL `??sAddrExtCpy::?relay`; Banked call to: sAddrExtCpy
|
|
\ 00019B 02.... LJMP ??CrossCallReturnLabel_247 & 0xFFFF
|
|
\ ??ZDO_ProcessMgmtLqiReq_8:
|
|
\ 00019E 12.... LCALL ??Subroutine229_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_375:
|
|
\ 0001A1 12.... LCALL ?Subroutine15 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_14:
|
|
\ 0001A4 6403 XRL A,#0x3
|
|
\ 0001A6 6003 JZ $+5
|
|
\ 0001A8 02.... LJMP ??ZDO_ProcessMgmtLqiReq_10 & 0xFFFF
|
|
\ ??ZDO_ProcessMgmtLqiReq_9:
|
|
\ 0001AB EE MOV A,R6
|
|
\ 0001AC 2415 ADD A,#0x15
|
|
\ 0001AE 12.... LCALL ??Subroutine259_0 & 0xFFFF
|
|
1269 }
|
|
\ ??CrossCallReturnLabel_528:
|
|
\ 0001B1 02.... LJMP ??CrossCallReturnLabel_373 & 0xFFFF
|
|
1270 else
|
|
1271 {
|
|
1272 if ( StartIndex <= aItems )
|
|
\ ??ZDO_ProcessMgmtLqiReq_13:
|
|
\ 0001B4 E0 MOVX A,@DPTR
|
|
\ 0001B5 C3 CLR C
|
|
\ 0001B6 95.. SUBB A,?V7
|
|
\ 0001B8 4005 JC ??ZDO_ProcessMgmtLqiReq_14
|
|
1273 // Start with 1st neighbor
|
|
1274 index = 0;
|
|
\ 0001BA 75..00 MOV ?V0,#0x0
|
|
\ 0001BD 801C SJMP ??ZDO_ProcessMgmtLqiReq_15
|
|
1275 else
|
|
1276 // Start with >1st neighbor
|
|
1277 index = StartIndex - aItems;
|
|
\ ??ZDO_ProcessMgmtLqiReq_14:
|
|
\ 0001BF E5.. MOV A,?V7
|
|
\ 0001C1 C3 CLR C
|
|
\ 0001C2 98 SUBB A,R0
|
|
\ 0001C3 F5.. MOV ?V0,A
|
|
\ 0001C5 8014 SJMP ??ZDO_ProcessMgmtLqiReq_15
|
|
1278 break;
|
|
1279 }
|
|
1280 }
|
|
1281
|
|
1282 // Loop through neighbor items and finish list
|
|
1283 for ( ; x < numItems; x++ )
|
|
1284 {
|
|
1285 // Add next neighbor table item
|
|
1286 NLME_GetRequest( nwkNeighborTable, index++, &entry );
|
|
1287
|
|
1288 // set ZDP_MgmtLqiItem_t fields
|
|
1289 item->panID = entry.panId;
|
|
1290 osal_cpyExtAddr( item->extPanID, _NIB.extendedPANID );
|
|
1291 osal_memset( item->extAddr, 0xFF, Z_EXTADDR_LEN );
|
|
1292 item->nwkAddr = entry.neighborAddress;
|
|
1293 item->rxOnIdle = ZDP_MGMT_BOOL_UNKNOWN;
|
|
1294 item->relation = ZDP_MGMT_REL_UNKNOWN;
|
|
1295 item->permit = ZDP_MGMT_BOOL_UNKNOWN;
|
|
1296 item->depth = 0xFF;
|
|
1297 item->lqi = entry.linkInfo.rxLqi;
|
|
1298
|
|
1299 if ( item->nwkAddr == 0 )
|
|
1300 {
|
|
1301 item->devType = ZDP_MGMT_DT_COORD;
|
|
1302 }
|
|
1303 else
|
|
1304 {
|
|
1305 item->devType = ZDP_MGMT_DT_ROUTER;
|
|
\ ??ZDO_ProcessMgmtLqiReq_16:
|
|
\ 0001C7 12.... LCALL ?Subroutine137 & 0xFFFF
|
|
1306 }
|
|
\ ??CrossCallReturnLabel_377:
|
|
\ 0001CA F0 MOVX @DPTR,A
|
|
1307
|
|
1308 item++;
|
|
\ 0001CB EE MOV A,R6
|
|
\ 0001CC 241A ADD A,#0x1a
|
|
\ 0001CE FE MOV R6,A
|
|
\ 0001CF 5001 JNC ??ZDO_ProcessMgmtLqiReq_17
|
|
\ 0001D1 0F INC R7
|
|
\ ??ZDO_ProcessMgmtLqiReq_17:
|
|
\ 0001D2 05.. INC ?V6
|
|
\ ??ZDO_ProcessMgmtLqiReq_12:
|
|
\ 0001D4 E5.. MOV A,?V6
|
|
\ 0001D6 C3 CLR C
|
|
\ 0001D7 95.. SUBB A,?V1
|
|
\ 0001D9 5056 JNC ??ZDO_ProcessMgmtLqiReq_2
|
|
\ ??ZDO_ProcessMgmtLqiReq_15:
|
|
\ 0001DB ; Setup parameters for call to function NLME_GetRequest
|
|
\ 0001DB 7413 MOV A,#0x13
|
|
\ 0001DD 12.... LCALL ?XSTACK_DISP102_8
|
|
\ 0001E0 AA.. MOV R2,?V0
|
|
\ 0001E2 7B00 MOV R3,#0x0
|
|
\ 0001E4 7987 MOV R1,#-0x79
|
|
\ 0001E6 12.... LCALL `??NLME_GetRequest::?relay`; Banked call to: NLME_GetRequest
|
|
\ 0001E9 05.. INC ?V0
|
|
\ 0001EB 741D MOV A,#0x1d
|
|
\ 0001ED 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 0001F0 12.... LCALL ?Subroutine16 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_16:
|
|
\ 0001F3 ; Setup parameters for call to function osal_memset
|
|
\ 0001F3 12.... LCALL ?Subroutine151 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_248:
|
|
\ 0001F6 EE MOV A,R6
|
|
\ 0001F7 2412 ADD A,#0x12
|
|
\ 0001F9 F8 MOV R0,A
|
|
\ 0001FA E4 CLR A
|
|
\ 0001FB 3F ADDC A,R7
|
|
\ 0001FC F9 MOV R1,A
|
|
\ 0001FD 7413 MOV A,#0x13
|
|
\ 0001FF 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000202 12.... LCALL ??Subroutine251_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_476:
|
|
\ 000205 8882 MOV DPL,R0
|
|
\ 000207 8983 MOV DPH,R1
|
|
\ 000209 EA MOV A,R2
|
|
\ 00020A F0 MOVX @DPTR,A
|
|
\ 00020B A3 INC DPTR
|
|
\ 00020C EB MOV A,R3
|
|
\ 00020D 12.... LCALL ?Subroutine13 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_9:
|
|
\ 000210 7403 MOV A,#0x3
|
|
\ 000212 12.... LCALL ?Subroutine12 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_7:
|
|
\ 000215 7422 MOV A,#0x22
|
|
\ 000217 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 00021A E0 MOVX A,@DPTR
|
|
\ 00021B C0E0 PUSH A
|
|
\ 00021D 12.... LCALL ?Subroutine160 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_268:
|
|
\ 000220 D0E0 POP A
|
|
\ 000222 12.... LCALL ?Subroutine35 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_44:
|
|
\ 000225 E8 MOV A,R0
|
|
\ 000226 49 ORL A,R1
|
|
\ 000227 709E JNZ ??ZDO_ProcessMgmtLqiReq_16
|
|
\ 000229 12.... LCALL ?Subroutine139 & 0xFFFF
|
|
1309 }
|
|
1310 }
|
|
1311 }
|
|
\ ??CrossCallReturnLabel_532:
|
|
\ 00022C 809C SJMP ??CrossCallReturnLabel_377
|
|
1312 else
|
|
1313 {
|
|
1314 numItems = 0;
|
|
\ ??ZDO_ProcessMgmtLqiReq_0:
|
|
\ 00022E 75..00 MOV ?V1,#0x0
|
|
1315 }
|
|
1316
|
|
1317 // Send response
|
|
1318 ZDP_MgmtLqiRsp( inMsg->TransSeq, &(inMsg->srcAddr), ZSuccess, maxItems,
|
|
1319 StartIndex, numItems, table, false );
|
|
\ ??ZDO_ProcessMgmtLqiReq_2:
|
|
\ 000231 ; Setup parameters for call to function ZDP_MgmtLqiRsp
|
|
\ 000231 75..00 MOV ?V2,#0x0
|
|
\ 000234 78.. MOV R0,#?V2
|
|
\ 000236 12.... LCALL ?PUSH_XSTACK_I_ONE
|
|
\ 000239 7403 MOV A,#0x3
|
|
\ 00023B 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 00023E 12.... LCALL ?PUSH_XSTACK8_X_TWO
|
|
\ 000241 78.. MOV R0,#?V1
|
|
\ 000243 12.... LCALL ?PUSH_XSTACK_I_ONE
|
|
\ 000246 E5.. MOV A,?V7
|
|
\ 000248 F5.. MOV ?V1,A
|
|
\ 00024A 78.. MOV R0,#?V1
|
|
\ 00024C 12.... LCALL ?PUSH_XSTACK_I_ONE
|
|
\ 00024F 7405 MOV A,#0x5
|
|
\ 000251 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000254 E0 MOVX A,@DPTR
|
|
\ 000255 FD MOV R5,A
|
|
\ 000256 7C00 MOV R4,#0x0
|
|
\ 000258 7409 MOV A,#0x9
|
|
\ 00025A 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 00025D 12.... LCALL ?Subroutine117 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_189:
|
|
\ 000260 7409 MOV A,#0x9
|
|
\ 000262 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000265 12.... LCALL ?Subroutine79 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_123:
|
|
\ 000268 12.... LCALL `??ZDP_MgmtLqiRsp::?relay`; Banked call to: ZDP_MgmtLqiRsp
|
|
\ 00026B 7405 MOV A,#0x5
|
|
\ 00026D 12.... LCALL ?DEALLOC_XSTACK8
|
|
1320
|
|
1321 if ( table )
|
|
\ 000270 7402 MOV A,#0x2
|
|
\ 000272 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000275 12.... LCALL ??Subroutine255_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_502:
|
|
\ 000278 6008 JZ ??CrossCallReturnLabel_408
|
|
1322 {
|
|
1323 osal_mem_free( table );
|
|
\ 00027A ; Setup parameters for call to function osal_mem_free
|
|
\ 00027A 7402 MOV A,#0x2
|
|
\ 00027C 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 00027F 12.... LCALL ??Subroutine237_0 & 0xFFFF
|
|
1324 }
|
|
1325 }
|
|
\ ??CrossCallReturnLabel_408:
|
|
\ 000282 742A MOV A,#0x2a
|
|
\ 000284 02.... LJMP ?Subroutine7 & 0xFFFF
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine160:
|
|
\ 000000 EE MOV A,R6
|
|
\ 000001 2419 ADD A,#0x19
|
|
\ 000003 F582 MOV DPL,A
|
|
\ 000005 E4 CLR A
|
|
\ 000006 3F ADDC A,R7
|
|
\ 000007 F583 MOV DPH,A
|
|
\ 000009 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine159:
|
|
\ 000000 12.... LCALL ?Subroutine203 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_325:
|
|
\ 000003 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine203:
|
|
\ 000000 EE MOV A,R6
|
|
\ 000001 2418 ADD A,#0x18
|
|
\ 000003 F582 MOV DPL,A
|
|
\ 000005 E4 CLR A
|
|
\ 000006 3F ADDC A,R7
|
|
\ 000007 F583 MOV DPH,A
|
|
\ 000009 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine156:
|
|
\ 000000 EE MOV A,R6
|
|
\ 000001 REQUIRE ??Subroutine228_0
|
|
\ 000001 ; // Fall through to label ??Subroutine228_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine228_0:
|
|
\ 000000 2412 ADD A,#0x12
|
|
\ 000002 F582 MOV DPL,A
|
|
\ 000004 E4 CLR A
|
|
\ 000005 3F ADDC A,R7
|
|
\ 000006 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine151:
|
|
\ 000000 7C08 MOV R4,#0x8
|
|
\ 000002 7D00 MOV R5,#0x0
|
|
\ 000004 79FF MOV R1,#-0x1
|
|
\ 000006 EE MOV A,R6
|
|
\ 000007 240A ADD A,#0xa
|
|
\ 000009 FA MOV R2,A
|
|
\ 00000A E4 CLR A
|
|
\ 00000B 3F ADDC A,R7
|
|
\ 00000C FB MOV R3,A
|
|
\ 00000D 12.... LCALL `??osal_memset::?relay`; Banked call to: osal_memset
|
|
\ 000010 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine137:
|
|
\ 000000 EE MOV A,R6
|
|
\ 000001 REQUIRE ??Subroutine229_0
|
|
\ 000001 ; // Fall through to label ??Subroutine229_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine229_0:
|
|
\ 000000 2414 ADD A,#0x14
|
|
\ 000002 REQUIRE ??Subroutine230_0
|
|
\ 000002 ; // Fall through to label ??Subroutine230_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine230_0:
|
|
\ 000000 F582 MOV DPL,A
|
|
\ 000002 E4 CLR A
|
|
\ 000003 3F ADDC A,R7
|
|
\ 000004 F583 MOV DPH,A
|
|
\ 000006 7401 MOV A,#0x1
|
|
\ 000008 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine16:
|
|
\ 000000 12.... LCALL ??Subroutine278_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_634:
|
|
\ 000003 8E82 MOV DPL,R6
|
|
\ 000005 8F83 MOV DPH,R7
|
|
\ 000007 E8 MOV A,R0
|
|
\ 000008 F0 MOVX @DPTR,A
|
|
\ 000009 A3 INC DPTR
|
|
\ 00000A E9 MOV A,R1
|
|
\ 00000B F0 MOVX @DPTR,A
|
|
\ 00000C ; Setup parameters for call to function sAddrExtCpy
|
|
\ 00000C ; Setup parameters for call to function sAddrExtCpy
|
|
\ 00000C 7C.. MOV R4,#(_NIB + 53) & 0xff
|
|
\ 00000E 7D.. MOV R5,#((_NIB + 53) >> 8) & 0xff
|
|
\ 000010 EE MOV A,R6
|
|
\ 000011 2402 ADD A,#0x2
|
|
\ 000013 FA MOV R2,A
|
|
\ 000014 E4 CLR A
|
|
\ 000015 3F ADDC A,R7
|
|
\ 000016 FB MOV R3,A
|
|
\ 000017 12.... LCALL `??sAddrExtCpy::?relay`; Banked call to: sAddrExtCpy
|
|
\ 00001A 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine15:
|
|
\ 000000 12.... LCALL ?Subroutine163 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_270:
|
|
\ 000003 A3 INC DPTR
|
|
\ 000004 A3 INC DPTR
|
|
\ 000005 A3 INC DPTR
|
|
\ 000006 A3 INC DPTR
|
|
\ 000007 E0 MOVX A,@DPTR
|
|
\ 000008 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine163:
|
|
\ 000000 F0 MOVX @DPTR,A
|
|
\ 000001 85..82 MOV DPL,?V4
|
|
\ 000004 85..83 MOV DPH,?V5
|
|
\ 000007 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine13:
|
|
\ 000000 F0 MOVX @DPTR,A
|
|
\ 000001 EE MOV A,R6
|
|
\ 000002 2415 ADD A,#0x15
|
|
\ 000004 F582 MOV DPL,A
|
|
\ 000006 E4 CLR A
|
|
\ 000007 3F ADDC A,R7
|
|
\ 000008 F583 MOV DPH,A
|
|
\ 00000A 7402 MOV A,#0x2
|
|
\ 00000C F0 MOVX @DPTR,A
|
|
\ 00000D EE MOV A,R6
|
|
\ 00000E 2416 ADD A,#0x16
|
|
\ 000010 F582 MOV DPL,A
|
|
\ 000012 E4 CLR A
|
|
\ 000013 3F ADDC A,R7
|
|
\ 000014 F583 MOV DPH,A
|
|
\ 000016 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine12:
|
|
\ 000000 F0 MOVX @DPTR,A
|
|
\ 000001 EE MOV A,R6
|
|
\ 000002 2417 ADD A,#0x17
|
|
\ 000004 F582 MOV DPL,A
|
|
\ 000006 E4 CLR A
|
|
\ 000007 3F ADDC A,R7
|
|
\ 000008 F583 MOV DPH,A
|
|
\ 00000A 7402 MOV A,#0x2
|
|
\ 00000C F0 MOVX @DPTR,A
|
|
\ 00000D 12.... LCALL ?Subroutine203 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_324:
|
|
\ 000010 74FF MOV A,#-0x1
|
|
\ 000012 F0 MOVX @DPTR,A
|
|
\ 000013 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine117:
|
|
\ 000000 E0 MOVX A,@DPTR
|
|
\ 000001 2402 ADD A,#0x2
|
|
\ 000003 FA MOV R2,A
|
|
\ 000004 A3 INC DPTR
|
|
\ 000005 E0 MOVX A,@DPTR
|
|
\ 000006 3400 ADDC A,#0x0
|
|
\ 000008 FB MOV R3,A
|
|
\ 000009 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine79:
|
|
\ 000000 12.... LCALL ?Subroutine175 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_289:
|
|
\ 000003 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine139:
|
|
\ 000000 EE MOV A,R6
|
|
\ 000001 2414 ADD A,#0x14
|
|
\ 000003 REQUIRE ??Subroutine259_0
|
|
\ 000003 ; // Fall through to label ??Subroutine259_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine259_0:
|
|
\ 000000 F582 MOV DPL,A
|
|
\ 000002 E4 CLR A
|
|
\ 000003 3F ADDC A,R7
|
|
\ 000004 F583 MOV DPH,A
|
|
\ 000006 E4 CLR A
|
|
\ 000007 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine35:
|
|
\ 000000 12.... LCALL ?Subroutine208 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_333:
|
|
\ 000003 12.... LCALL ??Subroutine278_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_635:
|
|
\ 000006 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine208:
|
|
\ 000000 F0 MOVX @DPTR,A
|
|
\ 000001 8882 MOV DPL,R0
|
|
\ 000003 8983 MOV DPH,R1
|
|
\ 000005 22 RET
|
|
1326
|
|
1327 /*********************************************************************
|
|
1328 * @fn ZDO_ProcessMgmtNwkDiscReq
|
|
1329 *
|
|
1330 * @brief This function handles parsing the incoming Management
|
|
1331 * Network Discover request and starts the request.
|
|
1332 *
|
|
1333 * @param inMsg - incoming message (request)
|
|
1334 *
|
|
1335 * @return none
|
|
1336 */
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
1337 void ZDO_ProcessMgmtNwkDiscReq( zdoIncomingMsg_t *inMsg )
|
|
\ ZDO_ProcessMgmtNwkDiscReq:
|
|
1338 {
|
|
\ 000000 REQUIRE ?V0
|
|
\ 000000 REQUIRE ?V1
|
|
\ 000000 74F6 MOV A,#-0xa
|
|
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
|
\ 000005 ; Saved register size: 10
|
|
\ 000005 ; Auto size: 7
|
|
\ 000005 74F9 MOV A,#-0x7
|
|
\ 000007 12.... LCALL ?ALLOC_XSTACK8
|
|
\ 00000A 12.... LCALL ?Subroutine134 & 0xFFFF
|
|
1339 NLME_ScanFields_t scan;
|
|
1340 uint8 index;
|
|
1341 uint8 *msg;
|
|
1342
|
|
1343 msg = inMsg->asdu;
|
|
\ ??CrossCallReturnLabel_439:
|
|
\ 00000D 35.. ADDC A,?V1
|
|
\ 00000F 12.... LCALL ?Subroutine63 & 0xFFFF
|
|
1344 scan.channels = osal_build_uint32( msg, 4 );
|
|
\ ??CrossCallReturnLabel_95:
|
|
\ 000012 85..82 MOV DPL,?XSP + 0
|
|
\ 000015 85..83 MOV DPH,?XSP + 1
|
|
\ 000018 12.... LCALL ?XSTORE_R0123
|
|
1345 msg += 4;
|
|
1346 scan.duration = *msg++;
|
|
\ 00001B 8E82 MOV DPL,R6
|
|
\ 00001D 8F83 MOV DPH,R7
|
|
\ 00001F A3 INC DPTR
|
|
\ 000020 A3 INC DPTR
|
|
\ 000021 A3 INC DPTR
|
|
\ 000022 A3 INC DPTR
|
|
\ 000023 E0 MOVX A,@DPTR
|
|
\ 000024 C0E0 PUSH A
|
|
\ 000026 7404 MOV A,#0x4
|
|
\ 000028 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 00002B D0E0 POP A
|
|
\ 00002D 12.... LCALL ?Subroutine34 & 0xFFFF
|
|
1347 index = *msg;
|
|
\ ??CrossCallReturnLabel_42:
|
|
\ 000030 F8 MOV R0,A
|
|
1348 scan.scanType = ZMAC_ACTIVE_SCAN;
|
|
\ 000031 7405 MOV A,#0x5
|
|
\ 000033 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000036 7401 MOV A,#0x1
|
|
\ 000038 F0 MOVX @DPTR,A
|
|
1349 scan.scanApp = NLME_DISC_SCAN;
|
|
\ 000039 7406 MOV A,#0x6
|
|
\ 00003B 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 00003E 7401 MOV A,#0x1
|
|
\ 000040 F0 MOVX @DPTR,A
|
|
1350
|
|
1351 // Save off the information to be used for the response
|
|
1352 zdappMgmtNwkDiscReqInProgress = true;
|
|
\ 000041 90.... MOV DPTR,#zdappMgmtNwkDiscReqInProgress
|
|
\ 000044 F0 MOVX @DPTR,A
|
|
1353 zdappMgmtNwkDiscRspAddr.addrMode = Addr16Bit;
|
|
\ 000045 90.... MOV DPTR,#zdappMgmtNwkDiscRspAddr + 8
|
|
\ 000048 04 INC A
|
|
\ 000049 12.... LCALL ?Subroutine48 & 0xFFFF
|
|
1354 zdappMgmtNwkDiscRspAddr.addr.shortAddr = inMsg->srcAddr.addr.shortAddr;
|
|
\ ??CrossCallReturnLabel_69:
|
|
\ 00004C A3 INC DPTR
|
|
\ 00004D 12.... LCALL ??Subroutine251_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_477:
|
|
\ 000050 90.... MOV DPTR,#zdappMgmtNwkDiscRspAddr
|
|
\ 000053 12.... LCALL ??Subroutine238_0 & 0xFFFF
|
|
1355 zdappMgmtNwkDiscStartIndex = index;
|
|
\ ??CrossCallReturnLabel_423:
|
|
\ 000056 E8 MOV A,R0
|
|
\ 000057 90.... MOV DPTR,#zdappMgmtNwkDiscStartIndex
|
|
\ 00005A F0 MOVX @DPTR,A
|
|
1356 zdappMgmtNwkDiscRspTransSeq = inMsg->TransSeq;
|
|
\ 00005B 12.... LCALL ?Subroutine141 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_225:
|
|
\ 00005E E0 MOVX A,@DPTR
|
|
\ 00005F 90.... MOV DPTR,#zdappMgmtNwkDiscRspTransSeq
|
|
\ 000062 F0 MOVX @DPTR,A
|
|
1357
|
|
1358 if ( NLME_NwkDiscReq2( &scan ) != ZSuccess )
|
|
\ 000063 ; Setup parameters for call to function NLME_NwkDiscReq2
|
|
\ 000063 AA.. MOV R2,?XSP + 0
|
|
\ 000065 AB.. MOV R3,?XSP + 1
|
|
\ 000067 12.... LCALL `??NLME_NwkDiscReq2::?relay`; Banked call to: NLME_NwkDiscReq2
|
|
\ 00006A E9 MOV A,R1
|
|
\ 00006B 6003 JZ ??ZDO_ProcessMgmtNwkDiscReq_0
|
|
1359 {
|
|
1360 NLME_NwkDiscTerm();
|
|
\ 00006D ; Setup parameters for call to function NLME_NwkDiscTerm
|
|
\ 00006D 12.... LCALL `??NLME_NwkDiscTerm::?relay`; Banked call to: NLME_NwkDiscTerm
|
|
1361
|
|
1362 // zdappMgmtNwkDiscReqInProgress will be reset in the confirm callback
|
|
1363 }
|
|
1364 }
|
|
\ ??ZDO_ProcessMgmtNwkDiscReq_0:
|
|
\ 000070 7407 MOV A,#0x7
|
|
\ 000072 02.... LJMP ??Subroutine221_0 & 0xFFFF
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine134:
|
|
\ 000000 8A.. MOV ?V0,R2
|
|
\ 000002 8B.. MOV ?V1,R3
|
|
\ 000004 REQUIRE ??Subroutine242_0
|
|
\ 000004 ; // Fall through to label ??Subroutine242_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine141:
|
|
\ 000000 E5.. MOV A,?V0
|
|
\ 000002 12.... LCALL ?Subroutine198 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_319:
|
|
\ 000005 12.... LCALL ??Subroutine280_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_656:
|
|
\ 000008 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine198:
|
|
\ 000000 240F ADD A,#0xf
|
|
\ 000002 F582 MOV DPL,A
|
|
\ 000004 E4 CLR A
|
|
\ 000005 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine34:
|
|
\ 000000 12.... LCALL ?Subroutine166 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_276:
|
|
\ 000003 E0 MOVX A,@DPTR
|
|
\ 000004 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine166:
|
|
\ 000000 12.... LCALL ?Subroutine209 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_336:
|
|
\ 000003 A3 INC DPTR
|
|
\ 000004 A3 INC DPTR
|
|
\ 000005 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine216:
|
|
\ 000000 F0 MOVX @DPTR,A
|
|
\ 000001 ; Setup parameters for call to function osal_memcpy
|
|
\ 000001 8E82 MOV DPL,R6
|
|
\ 000003 8F83 MOV DPH,R7
|
|
\ 000005 A3 INC DPTR
|
|
\ 000006 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine190:
|
|
\ 000000 F583 MOV DPH,A
|
|
\ 000002 REQUIRE ??Subroutine288_0
|
|
\ 000002 ; // Fall through to label ??Subroutine288_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine209:
|
|
\ 000000 12.... LCALL ?Subroutine216 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_349:
|
|
\ 000003 A3 INC DPTR
|
|
\ 000004 A3 INC DPTR
|
|
\ 000005 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine63:
|
|
\ 000000 12.... LCALL ?Subroutine190 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_704:
|
|
\ 000003 ; Setup parameters for call to function osal_build_uint32
|
|
\ 000003 ; Setup parameters for call to function osal_build_uint32
|
|
\ 000003 7904 MOV R1,#0x4
|
|
\ 000005 EE MOV A,R6
|
|
\ 000006 FA MOV R2,A
|
|
\ 000007 EF MOV A,R7
|
|
\ 000008 FB MOV R3,A
|
|
\ 000009 12.... LCALL `??osal_build_uint32::?relay`; Banked call to: osal_build_uint32
|
|
\ 00000C EA MOV A,R2
|
|
\ 00000D F8 MOV R0,A
|
|
\ 00000E EB MOV A,R3
|
|
\ 00000F F9 MOV R1,A
|
|
\ 000010 EC MOV A,R4
|
|
\ 000011 FA MOV R2,A
|
|
\ 000012 ED MOV A,R5
|
|
\ 000013 FB MOV R3,A
|
|
\ 000014 22 RET
|
|
1365
|
|
1366 #if defined ( ZDO_MGMT_NWKDISC_RESPONSE )
|
|
1367 /*********************************************************************
|
|
1368 * @fn ZDO_FinishProcessingMgmtNwkDiscReq
|
|
1369 *
|
|
1370 * @brief This function finishes the processing of the Management
|
|
1371 * Network Discover Request and generates the response.
|
|
1372 *
|
|
1373 * Note: This function will limit the number of items returned
|
|
1374 * to ZDO_MAX_NWKDISC_ITEMS items.
|
|
1375 *
|
|
1376 * @param ResultCountSrcAddr - source of the request
|
|
1377 * @param msg - pointer to incoming message
|
|
1378 * @param SecurityUse -
|
|
1379 *
|
|
1380 * @return none
|
|
1381 */
|
|
1382 void ZDO_FinishProcessingMgmtNwkDiscReq( void )
|
|
1383 {
|
|
1384 byte count, i, ResultCount = 0;
|
|
1385 networkDesc_t *newDesc = NULL, *pList, *NetworkList;
|
|
1386
|
|
1387 NetworkList = nwk_getNwkDescList();
|
|
1388
|
|
1389 // Count the number of nwk descriptors in the list
|
|
1390 pList = nwk_getNwkDescList();
|
|
1391 while (pList)
|
|
1392 {
|
|
1393 ResultCount++;
|
|
1394 pList = pList->nextDesc;
|
|
1395 }
|
|
1396
|
|
1397 if ( ZSTACK_ROUTER_BUILD )
|
|
1398 {
|
|
1399 // Look for my PanID.
|
|
1400 pList = nwk_getNwkDescList();
|
|
1401 while ( pList )
|
|
1402 {
|
|
1403 if ( pList->panId == _NIB.nwkPanId )
|
|
1404 {
|
|
1405 break;
|
|
1406 }
|
|
1407
|
|
1408
|
|
1409 if ( !pList->nextDesc )
|
|
1410 {
|
|
1411 break;
|
|
1412 }
|
|
1413 pList = pList->nextDesc;
|
|
1414 }
|
|
1415
|
|
1416
|
|
1417 // If my Pan not present (query to a star network ZC or an isolated ZR?),
|
|
1418 // prepend it.
|
|
1419 if ( !pList || (pList->panId != _NIB.nwkPanId) )
|
|
1420 {
|
|
1421 newDesc = (networkDesc_t *)osal_mem_alloc( sizeof( networkDesc_t ) );
|
|
1422 if ( newDesc )
|
|
1423 {
|
|
1424 byte pJoin;
|
|
1425
|
|
1426 newDesc->panId = _NIB.nwkPanId;
|
|
1427 newDesc->logicalChannel = _NIB.nwkLogicalChannel;
|
|
1428 newDesc->version = NLME_GetProtocolVersion();
|
|
1429 newDesc->stackProfile = zgStackProfile;
|
|
1430
|
|
1431 //Extended PanID
|
|
1432 osal_cpyExtAddr( newDesc->extendedPANID, _NIB.extendedPANID);
|
|
1433
|
|
1434 ZMacGetReq( ZMacAssociationPermit, &pJoin );
|
|
1435 newDesc->chosenRouter = ((pJoin) ? ZDAppNwkAddr.addr.shortAddr :
|
|
1436 INVALID_NODE_ADDR);
|
|
1437
|
|
1438 newDesc->nextDesc = NetworkList;
|
|
1439 NetworkList = newDesc;
|
|
1440 ResultCount++;
|
|
1441 }
|
|
1442 }
|
|
1443 }
|
|
1444
|
|
1445 // Calc the count and apply a max count.
|
|
1446 if ( zdappMgmtNwkDiscStartIndex > ResultCount )
|
|
1447 {
|
|
1448 count = 0;
|
|
1449 }
|
|
1450 else
|
|
1451 {
|
|
1452 count = ResultCount - zdappMgmtNwkDiscStartIndex;
|
|
1453 if ( count > ZDO_MAX_NWKDISC_ITEMS )
|
|
1454 {
|
|
1455 count = ZDO_MAX_NWKDISC_ITEMS;
|
|
1456 }
|
|
1457
|
|
1458 // Move the list pointer up to the start index.
|
|
1459 for ( i = 0; i < zdappMgmtNwkDiscStartIndex; i++ )
|
|
1460 {
|
|
1461 NetworkList = NetworkList->nextDesc;
|
|
1462 }
|
|
1463 }
|
|
1464
|
|
1465 ZDP_MgmtNwkDiscRsp( zdappMgmtNwkDiscRspTransSeq,
|
|
1466 &zdappMgmtNwkDiscRspAddr, ZSuccess, ResultCount,
|
|
1467 zdappMgmtNwkDiscStartIndex,
|
|
1468 count,
|
|
1469 NetworkList,
|
|
1470 false );
|
|
1471
|
|
1472 if ( ZSTACK_ROUTER_BUILD )
|
|
1473 {
|
|
1474 if ( newDesc != NULL )
|
|
1475 {
|
|
1476 osal_mem_free( newDesc );
|
|
1477 }
|
|
1478 }
|
|
1479
|
|
1480 NLME_NwkDiscTerm();
|
|
1481 }
|
|
1482 #endif
|
|
1483
|
|
1484 /*********************************************************************
|
|
1485 * @fn ZDO_ProcessMgmtRtgReq
|
|
1486 *
|
|
1487 * @brief This function finishes the processing of the Management
|
|
1488 * Routing Request and generates the response.
|
|
1489 *
|
|
1490 * Note: This function will limit the number of items returned
|
|
1491 * to ZDO_MAX_RTG_ITEMS items.
|
|
1492 *
|
|
1493 * @param inMsg - incoming message (request)
|
|
1494 *
|
|
1495 * @return none
|
|
1496 */
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
1497 void ZDO_ProcessMgmtRtgReq( zdoIncomingMsg_t *inMsg )
|
|
\ ZDO_ProcessMgmtRtgReq:
|
|
1498 {
|
|
\ 000000 REQUIRE ?V0
|
|
\ 000000 REQUIRE ?V1
|
|
\ 000000 REQUIRE ?V2
|
|
\ 000000 REQUIRE ?V4
|
|
\ 000000 REQUIRE ?V5
|
|
\ 000000 REQUIRE ?V6
|
|
\ 000000 REQUIRE ?V7
|
|
\ 000000 74F0 MOV A,#-0x10
|
|
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
|
\ 000005 ; Saved register size: 16
|
|
\ 000005 ; Auto size: 1
|
|
\ 000005 74FF MOV A,#-0x1
|
|
\ 000007 12.... LCALL ?ALLOC_XSTACK8
|
|
\ 00000A 8A.. MOV ?V6,R2
|
|
\ 00000C 8B.. MOV ?V7,R3
|
|
1499 byte x;
|
|
1500 byte maxNumItems;
|
|
1501 byte numItems = 0;
|
|
\ 00000E 7E00 MOV R6,#0x0
|
|
1502 uint8 *pBuf = NULL;
|
|
\ 000010 8E.. MOV ?V4,R6
|
|
\ 000012 8E.. MOV ?V5,R6
|
|
1503 rtgItem_t *pList;
|
|
1504 uint8 StartIndex = inMsg->asdu[0];
|
|
\ 000014 12.... LCALL ??Subroutine242_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_442:
|
|
\ 000017 35.. ADDC A,?V7
|
|
\ 000019 12.... LCALL ?Subroutine65 & 0xFFFF
|
|
1505
|
|
1506 // Get the number of table items
|
|
1507 NLME_GetRequest( nwkNumRoutingTableEntries, 0, &maxNumItems );
|
|
\ ??CrossCallReturnLabel_100:
|
|
\ 00001C 799D MOV R1,#-0x63
|
|
\ 00001E 12.... LCALL `??NLME_GetRequest::?relay`; Banked call to: NLME_GetRequest
|
|
1508
|
|
1509 if ( maxNumItems > StartIndex )
|
|
\ 000021 85..82 MOV DPL,?XSP + 0
|
|
\ 000024 85..83 MOV DPH,?XSP + 1
|
|
\ 000027 E0 MOVX A,@DPTR
|
|
\ 000028 F8 MOV R0,A
|
|
\ 000029 E5.. MOV A,?V2
|
|
\ 00002B C3 CLR C
|
|
\ 00002C 98 SUBB A,R0
|
|
\ 00002D 4003 JC $+5
|
|
\ 00002F 02.... LJMP ??ZDO_ProcessMgmtRtgReq_0 & 0xFFFF
|
|
1510 {
|
|
1511 numItems = maxNumItems - StartIndex; // Start at the passed in index
|
|
\ 000032 E0 MOVX A,@DPTR
|
|
\ 000033 C3 CLR C
|
|
\ 000034 95.. SUBB A,?V2
|
|
\ 000036 FE MOV R6,A
|
|
1512
|
|
1513 // limit the size of the list
|
|
1514 if ( numItems > ZDO_MAX_RTG_ITEMS )
|
|
\ 000037 C3 CLR C
|
|
\ 000038 940B SUBB A,#0xb
|
|
\ 00003A 4002 JC ??ZDO_ProcessMgmtRtgReq_1
|
|
1515 {
|
|
1516 numItems = ZDO_MAX_RTG_ITEMS;
|
|
\ 00003C 7E0A MOV R6,#0xa
|
|
1517 }
|
|
1518
|
|
1519 // Allocate the memory to build the table
|
|
1520 pBuf = osal_mem_alloc( (short)(sizeof( rtgItem_t ) * numItems) );
|
|
\ ??ZDO_ProcessMgmtRtgReq_1:
|
|
\ 00003E ; Setup parameters for call to function osal_mem_alloc
|
|
\ 00003E EE MOV A,R6
|
|
\ 00003F 75F007 MOV B,#0x7
|
|
\ 000042 A4 MUL AB
|
|
\ 000043 FA MOV R2,A
|
|
\ 000044 ABF0 MOV R3,B
|
|
\ 000046 12.... LCALL `??osal_mem_alloc::?relay`; Banked call to: osal_mem_alloc
|
|
\ 000049 8A.. MOV ?V0,R2
|
|
\ 00004B 8B.. MOV ?V1,R3
|
|
\ 00004D 8A.. MOV ?V4,R2
|
|
\ 00004F 8B.. MOV ?V5,R3
|
|
1521
|
|
1522 if ( pBuf != NULL )
|
|
\ 000051 EA MOV A,R2
|
|
\ 000052 4B ORL A,R3
|
|
\ 000053 6077 JZ ??ZDO_ProcessMgmtRtgReq_2
|
|
1523 {
|
|
1524 // Convert buffer to list
|
|
1525 pList = (rtgItem_t *)pBuf;
|
|
1526
|
|
1527 // Loop through items and build list
|
|
1528 for ( x = 0; x < numItems; x++ )
|
|
\ 000055 7F00 MOV R7,#0x0
|
|
\ 000057 8019 SJMP ??ZDO_ProcessMgmtRtgReq_3
|
|
1529 {
|
|
1530 NLME_GetRequest( nwkRoutingTable, (uint16)(x + StartIndex), (void*)pList );
|
|
1531
|
|
1532 // Remap the status to the RoutingTableList Record Format defined in the ZigBee spec
|
|
1533 switch( pList->status )
|
|
1534 {
|
|
1535 case RT_ACTIVE:
|
|
1536 pList->status = ZDO_MGMT_RTG_ENTRY_ACTIVE;
|
|
1537 break;
|
|
1538
|
|
1539 case RT_DISC:
|
|
1540 pList->status = ZDO_MGMT_RTG_ENTRY_DISCOVERY_UNDERWAY;
|
|
1541 break;
|
|
1542
|
|
1543 case RT_LINK_FAIL:
|
|
1544 pList->status = ZDO_MGMT_RTG_ENTRY_DISCOVERY_FAILED;
|
|
1545 break;
|
|
1546
|
|
1547 case RT_INIT:
|
|
1548 case RT_REPAIR:
|
|
1549 default:
|
|
1550 pList->status = ZDO_MGMT_RTG_ENTRY_INACTIVE;
|
|
\ ??ZDO_ProcessMgmtRtgReq_4:
|
|
\ 000059 85..82 MOV DPL,?V0
|
|
\ 00005C 85..83 MOV DPH,?V1
|
|
\ 00005F A3 INC DPTR
|
|
\ 000060 A3 INC DPTR
|
|
\ 000061 A3 INC DPTR
|
|
\ 000062 A3 INC DPTR
|
|
\ 000063 A3 INC DPTR
|
|
\ 000064 7403 MOV A,#0x3
|
|
\ ??ZDO_ProcessMgmtRtgReq_5:
|
|
\ 000066 F0 MOVX @DPTR,A
|
|
1551 break;
|
|
1552 }
|
|
1553
|
|
1554 // Increment pointer to next record
|
|
1555 pList++;
|
|
\ 000067 E5.. MOV A,?V0
|
|
\ 000069 2407 ADD A,#0x7
|
|
\ 00006B F5.. MOV ?V0,A
|
|
\ 00006D 5002 JNC ??ZDO_ProcessMgmtRtgReq_6
|
|
\ 00006F 05.. INC ?V1
|
|
\ ??ZDO_ProcessMgmtRtgReq_6:
|
|
\ 000071 0F INC R7
|
|
\ ??ZDO_ProcessMgmtRtgReq_3:
|
|
\ 000072 EF MOV A,R7
|
|
\ 000073 C3 CLR C
|
|
\ 000074 9E SUBB A,R6
|
|
\ 000075 5057 JNC ??ZDO_ProcessMgmtRtgReq_0
|
|
\ 000077 ; Setup parameters for call to function NLME_GetRequest
|
|
\ 000077 AC.. MOV R4,?V0
|
|
\ 000079 AD.. MOV R5,?V1
|
|
\ 00007B EF MOV A,R7
|
|
\ 00007C A8.. MOV R0,?V2
|
|
\ 00007E 28 ADD A,R0
|
|
\ 00007F FA MOV R2,A
|
|
\ 000080 E4 CLR A
|
|
\ 000081 3400 ADDC A,#0x0
|
|
\ 000083 FB MOV R3,A
|
|
\ 000084 798B MOV R1,#-0x75
|
|
\ 000086 12.... LCALL `??NLME_GetRequest::?relay`; Banked call to: NLME_GetRequest
|
|
\ 000089 85..82 MOV DPL,?V0
|
|
\ 00008C 85..83 MOV DPH,?V1
|
|
\ 00008F A3 INC DPTR
|
|
\ 000090 A3 INC DPTR
|
|
\ 000091 A3 INC DPTR
|
|
\ 000092 A3 INC DPTR
|
|
\ 000093 A3 INC DPTR
|
|
\ 000094 E0 MOVX A,@DPTR
|
|
\ 000095 14 DEC A
|
|
\ 000096 6008 JZ ??ZDO_ProcessMgmtRtgReq_7
|
|
\ 000098 14 DEC A
|
|
\ 000099 6013 JZ ??ZDO_ProcessMgmtRtgReq_8
|
|
\ 00009B 14 DEC A
|
|
\ 00009C 601F JZ ??ZDO_ProcessMgmtRtgReq_9
|
|
\ 00009E 80B9 SJMP ??ZDO_ProcessMgmtRtgReq_4
|
|
\ ??ZDO_ProcessMgmtRtgReq_7:
|
|
\ 0000A0 85..82 MOV DPL,?V0
|
|
\ 0000A3 85..83 MOV DPH,?V1
|
|
\ 0000A6 A3 INC DPTR
|
|
\ 0000A7 A3 INC DPTR
|
|
\ 0000A8 A3 INC DPTR
|
|
\ 0000A9 A3 INC DPTR
|
|
\ 0000AA A3 INC DPTR
|
|
\ 0000AB E4 CLR A
|
|
\ 0000AC 80B8 SJMP ??ZDO_ProcessMgmtRtgReq_5
|
|
\ ??ZDO_ProcessMgmtRtgReq_8:
|
|
\ 0000AE 85..82 MOV DPL,?V0
|
|
\ 0000B1 85..83 MOV DPH,?V1
|
|
\ 0000B4 A3 INC DPTR
|
|
\ 0000B5 A3 INC DPTR
|
|
\ 0000B6 A3 INC DPTR
|
|
\ 0000B7 A3 INC DPTR
|
|
\ 0000B8 A3 INC DPTR
|
|
\ 0000B9 7401 MOV A,#0x1
|
|
\ 0000BB 80A9 SJMP ??ZDO_ProcessMgmtRtgReq_5
|
|
\ ??ZDO_ProcessMgmtRtgReq_9:
|
|
\ 0000BD 85..82 MOV DPL,?V0
|
|
\ 0000C0 85..83 MOV DPH,?V1
|
|
\ 0000C3 A3 INC DPTR
|
|
\ 0000C4 A3 INC DPTR
|
|
\ 0000C5 A3 INC DPTR
|
|
\ 0000C6 A3 INC DPTR
|
|
\ 0000C7 A3 INC DPTR
|
|
\ 0000C8 7402 MOV A,#0x2
|
|
\ 0000CA 809A SJMP ??ZDO_ProcessMgmtRtgReq_5
|
|
1556 }
|
|
1557 }
|
|
1558 else
|
|
1559 {
|
|
1560 numItems = 0;
|
|
\ ??ZDO_ProcessMgmtRtgReq_2:
|
|
\ 0000CC 7E00 MOV R6,#0x0
|
|
1561 }
|
|
1562 }
|
|
1563
|
|
1564 // Send response
|
|
1565 ZDP_MgmtRtgRsp( inMsg->TransSeq, &(inMsg->srcAddr), ZSuccess, maxNumItems, StartIndex, numItems,
|
|
1566 (rtgItem_t *)pBuf, false );
|
|
\ ??ZDO_ProcessMgmtRtgReq_0:
|
|
\ 0000CE ; Setup parameters for call to function ZDP_MgmtRtgRsp
|
|
\ 0000CE 75..00 MOV ?V0,#0x0
|
|
\ 0000D1 78.. MOV R0,#?V0
|
|
\ 0000D3 12.... LCALL ?PUSH_XSTACK_I_ONE
|
|
\ 0000D6 78.. MOV R0,#?V4
|
|
\ 0000D8 12.... LCALL ?PUSH_XSTACK_I_TWO
|
|
\ 0000DB EE MOV A,R6
|
|
\ 0000DC F5.. MOV ?V0,A
|
|
\ 0000DE 78.. MOV R0,#?V0
|
|
\ 0000E0 12.... LCALL ?PUSH_XSTACK_I_ONE
|
|
\ 0000E3 E5.. MOV A,?V2
|
|
\ 0000E5 F5.. MOV ?V0,A
|
|
\ 0000E7 78.. MOV R0,#?V0
|
|
\ 0000E9 12.... LCALL ?PUSH_XSTACK_I_ONE
|
|
\ 0000EC 7405 MOV A,#0x5
|
|
\ 0000EE 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 0000F1 E0 MOVX A,@DPTR
|
|
\ 0000F2 FD MOV R5,A
|
|
\ 0000F3 7C00 MOV R4,#0x0
|
|
\ 0000F5 E5.. MOV A,?V6
|
|
\ 0000F7 2402 ADD A,#0x2
|
|
\ 0000F9 FA MOV R2,A
|
|
\ 0000FA E4 CLR A
|
|
\ 0000FB 35.. ADDC A,?V7
|
|
\ 0000FD FB MOV R3,A
|
|
\ 0000FE E5.. MOV A,?V6
|
|
\ 000100 12.... LCALL ?Subroutine198 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_316:
|
|
\ 000103 35.. ADDC A,?V7
|
|
\ 000105 F583 MOV DPH,A
|
|
\ 000107 E0 MOVX A,@DPTR
|
|
\ 000108 F9 MOV R1,A
|
|
\ 000109 12.... LCALL `??ZDP_MgmtRtgRsp::?relay`; Banked call to: ZDP_MgmtRtgRsp
|
|
\ 00010C 7405 MOV A,#0x5
|
|
\ 00010E 12.... LCALL ?DEALLOC_XSTACK8
|
|
1567
|
|
1568 if ( pBuf != NULL )
|
|
\ 000111 E5.. MOV A,?V4
|
|
\ 000113 45.. ORL A,?V5
|
|
\ 000115 6007 JZ ??ZDO_ProcessMgmtRtgReq_10
|
|
1569 {
|
|
1570 osal_mem_free( pBuf );
|
|
\ 000117 ; Setup parameters for call to function osal_mem_free
|
|
\ 000117 AA.. MOV R2,?V4
|
|
\ 000119 AB.. MOV R3,?V5
|
|
\ 00011B 12.... LCALL `??osal_mem_free::?relay`; Banked call to: osal_mem_free
|
|
1571 }
|
|
1572 }
|
|
\ ??ZDO_ProcessMgmtRtgReq_10:
|
|
\ 00011E 7401 MOV A,#0x1
|
|
\ 000120 REQUIRE ?Subroutine7
|
|
\ 000120 ; // Fall through to label ?Subroutine7
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine65:
|
|
\ 000000 F583 MOV DPH,A
|
|
\ 000002 E0 MOVX A,@DPTR
|
|
\ 000003 12.... LCALL ?Subroutine188 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_393:
|
|
\ 000006 F5.. MOV ?V2,A
|
|
\ 000008 ; Setup parameters for call to function NLME_GetRequest
|
|
\ 000008 ; Setup parameters for call to function APSME_GetRequest
|
|
\ 000008 AC.. MOV R4,?XSP + 0
|
|
\ 00000A AD.. MOV R5,?XSP + 1
|
|
\ 00000C 7A00 MOV R2,#0x0
|
|
\ 00000E 7B00 MOV R3,#0x0
|
|
\ 000010 22 RET
|
|
1573
|
|
1574 /*********************************************************************
|
|
1575 * @fn ZDO_ProcessMgmtBindReq
|
|
1576 *
|
|
1577 * @brief This function finishes the processing of the Management
|
|
1578 * Bind Request and generates the response.
|
|
1579 *
|
|
1580 * Note: This function will limit the number of items returned
|
|
1581 * to ZDO_MAX_BIND_ITEMS items.
|
|
1582 *
|
|
1583 * @param inMsg - incoming message (request)
|
|
1584 *
|
|
1585 * @return none
|
|
1586 */
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
1587 void ZDO_ProcessMgmtBindReq( zdoIncomingMsg_t *inMsg )
|
|
\ ZDO_ProcessMgmtBindReq:
|
|
1588 {
|
|
\ 000000 REQUIRE ?V0
|
|
\ 000000 REQUIRE ?V1
|
|
\ 000000 REQUIRE ?V2
|
|
\ 000000 REQUIRE ?V4
|
|
\ 000000 REQUIRE ?V5
|
|
\ 000000 REQUIRE ?V6
|
|
\ 000000 REQUIRE ?V7
|
|
\ 000000 74F0 MOV A,#-0x10
|
|
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
|
\ 000005 ; Saved register size: 16
|
|
\ 000005 ; Auto size: 4
|
|
\ 000005 74FC MOV A,#-0x4
|
|
\ 000007 12.... LCALL ?ALLOC_XSTACK8
|
|
\ 00000A 7402 MOV A,#0x2
|
|
\ 00000C 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 00000F 12.... LCALL ??Subroutine238_0 & 0xFFFF
|
|
1589 #if defined ( REFLECTOR )
|
|
1590 byte x;
|
|
1591 uint16 maxNumItems;
|
|
1592 uint16 numItems;
|
|
1593 uint8 *pBuf = NULL;
|
|
\ ??CrossCallReturnLabel_424:
|
|
\ 000012 75..00 MOV ?V4,#0x0
|
|
\ 000015 75..00 MOV ?V5,#0x0
|
|
1594 apsBindingItem_t *pList;
|
|
1595 uint8 StartIndex = inMsg->asdu[0];
|
|
\ 000018 7402 MOV A,#0x2
|
|
\ 00001A 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 00001D E0 MOVX A,@DPTR
|
|
\ 00001E 12.... LCALL ??Subroutine268_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_568:
|
|
\ 000021 12.... LCALL ?Subroutine65 & 0xFFFF
|
|
1596 uint8 status;
|
|
1597
|
|
1598 // Get the number of table items
|
|
1599 APSME_GetRequest( apsNumBindingTableEntries, 0, (byte*)(&maxNumItems) );
|
|
\ ??CrossCallReturnLabel_101:
|
|
\ 000024 79A3 MOV R1,#-0x5d
|
|
\ 000026 12.... LCALL `??APSME_GetRequest::?relay`; Banked call to: APSME_GetRequest
|
|
1600
|
|
1601 if ( maxNumItems > StartIndex )
|
|
\ 000029 85..82 MOV DPL,?XSP + 0
|
|
\ 00002C 85..83 MOV DPH,?XSP + 1
|
|
\ 00002F 12.... LCALL ??Subroutine248_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_457:
|
|
\ 000032 C3 CLR C
|
|
\ 000033 E5.. MOV A,?V2
|
|
\ 000035 98 SUBB A,R0
|
|
\ 000036 E4 CLR A
|
|
\ 000037 99 SUBB A,R1
|
|
\ 000038 5079 JNC ??ZDO_ProcessMgmtBindReq_0
|
|
1602 {
|
|
1603 numItems = maxNumItems - StartIndex; // Start at the passed in index
|
|
\ 00003A 85..82 MOV DPL,?XSP + 0
|
|
\ 00003D 85..83 MOV DPH,?XSP + 1
|
|
\ 000040 A8.. MOV R0,?V2
|
|
\ 000042 E0 MOVX A,@DPTR
|
|
\ 000043 C3 CLR C
|
|
\ 000044 98 SUBB A,R0
|
|
\ 000045 FE MOV R6,A
|
|
\ 000046 A3 INC DPTR
|
|
\ 000047 E0 MOVX A,@DPTR
|
|
\ 000048 9400 SUBB A,#0x0
|
|
\ 00004A FF MOV R7,A
|
|
1604 }
|
|
1605 else
|
|
1606 {
|
|
1607 numItems = 0;
|
|
1608 }
|
|
1609
|
|
1610 // limit the size of the list
|
|
1611 if ( numItems > ZDO_MAX_BIND_ITEMS )
|
|
\ 00004B C3 CLR C
|
|
\ 00004C EE MOV A,R6
|
|
\ 00004D 9404 SUBB A,#0x4
|
|
\ 00004F EF MOV A,R7
|
|
\ 000050 9400 SUBB A,#0x0
|
|
\ 000052 4006 JC ??ZDO_ProcessMgmtBindReq_1
|
|
1612 {
|
|
1613 numItems = ZDO_MAX_BIND_ITEMS;
|
|
\ 000054 7E03 MOV R6,#0x3
|
|
\ 000056 7F00 MOV R7,#0x0
|
|
\ 000058 8004 SJMP ??ZDO_ProcessMgmtBindReq_2
|
|
1614 }
|
|
1615
|
|
1616 // Allocate the memory to build the table
|
|
1617 if ( numItems && (pBuf = osal_mem_alloc( sizeof( apsBindingItem_t ) * numItems )) )
|
|
\ ??ZDO_ProcessMgmtBindReq_1:
|
|
\ 00005A EE MOV A,R6
|
|
\ 00005B 4F ORL A,R7
|
|
\ 00005C 6055 JZ ??ZDO_ProcessMgmtBindReq_0
|
|
\ ??ZDO_ProcessMgmtBindReq_2:
|
|
\ 00005E ; Setup parameters for call to function osal_mem_alloc
|
|
\ 00005E EE MOV A,R6
|
|
\ 00005F FA MOV R2,A
|
|
\ 000060 EF MOV A,R7
|
|
\ 000061 FB MOV R3,A
|
|
\ 000062 EA MOV A,R2
|
|
\ 000063 75F015 MOV B,#0x15
|
|
\ 000066 A4 MUL AB
|
|
\ 000067 FA MOV R2,A
|
|
\ 000068 A8F0 MOV R0,B
|
|
\ 00006A 75F015 MOV B,#0x15
|
|
\ 00006D EB MOV A,R3
|
|
\ 00006E A4 MUL AB
|
|
\ 00006F 28 ADD A,R0
|
|
\ 000070 FB MOV R3,A
|
|
\ 000071 12.... LCALL `??osal_mem_alloc::?relay`; Banked call to: osal_mem_alloc
|
|
\ 000074 8A.. MOV ?V4,R2
|
|
\ 000076 8B.. MOV ?V5,R3
|
|
\ 000078 EA MOV A,R2
|
|
\ 000079 4B ORL A,R3
|
|
\ 00007A 6037 JZ ??ZDO_ProcessMgmtBindReq_0
|
|
1618 {
|
|
1619 status = ZSuccess;
|
|
\ 00007C 75..00 MOV ?V1,#0x0
|
|
1620
|
|
1621 // Convert buffer to list
|
|
1622 pList = (apsBindingItem_t *)pBuf;
|
|
\ 00007F 8A.. MOV ?V6,R2
|
|
\ 000081 8B.. MOV ?V7,R3
|
|
1623
|
|
1624 // Loop through items and build list
|
|
1625 for ( x = 0; x < numItems; x++ )
|
|
\ 000083 75..00 MOV ?V0,#0x0
|
|
\ 000086 801F SJMP ??ZDO_ProcessMgmtBindReq_3
|
|
1626 {
|
|
1627 APSME_GetRequest( apsBindingTable, (x + StartIndex), (void*)pList );
|
|
\ ??ZDO_ProcessMgmtBindReq_4:
|
|
\ 000088 ; Setup parameters for call to function APSME_GetRequest
|
|
\ 000088 AC.. MOV R4,?V6
|
|
\ 00008A AD.. MOV R5,?V7
|
|
\ 00008C A8.. MOV R0,?V2
|
|
\ 00008E E5.. MOV A,?V0
|
|
\ 000090 28 ADD A,R0
|
|
\ 000091 FA MOV R2,A
|
|
\ 000092 E4 CLR A
|
|
\ 000093 3400 ADDC A,#0x0
|
|
\ 000095 FB MOV R3,A
|
|
\ 000096 79A2 MOV R1,#-0x5e
|
|
\ 000098 12.... LCALL `??APSME_GetRequest::?relay`; Banked call to: APSME_GetRequest
|
|
1628 pList++;
|
|
\ 00009B E5.. MOV A,?V6
|
|
\ 00009D 2415 ADD A,#0x15
|
|
\ 00009F F5.. MOV ?V6,A
|
|
\ 0000A1 5002 JNC ??ZDO_ProcessMgmtBindReq_5
|
|
\ 0000A3 05.. INC ?V7
|
|
1629 }
|
|
\ ??ZDO_ProcessMgmtBindReq_5:
|
|
\ 0000A5 05.. INC ?V0
|
|
\ ??ZDO_ProcessMgmtBindReq_3:
|
|
\ 0000A7 C3 CLR C
|
|
\ 0000A8 E5.. MOV A,?V0
|
|
\ 0000AA 9E SUBB A,R6
|
|
\ 0000AB E4 CLR A
|
|
\ 0000AC 9F SUBB A,R7
|
|
\ 0000AD 40D9 JC ??ZDO_ProcessMgmtBindReq_4
|
|
\ 0000AF EE MOV A,R6
|
|
\ 0000B0 F9 MOV R1,A
|
|
\ 0000B1 8005 SJMP ??ZDO_ProcessMgmtBindReq_6
|
|
1630
|
|
1631 }
|
|
1632 else
|
|
1633 {
|
|
1634 status = ZDP_NOT_PERMITTED;
|
|
\ ??ZDO_ProcessMgmtBindReq_0:
|
|
\ 0000B3 75..8B MOV ?V1,#-0x75
|
|
1635 numItems = 0;
|
|
\ 0000B6 7900 MOV R1,#0x0
|
|
1636 }
|
|
1637
|
|
1638 // Send response
|
|
1639 ZDP_MgmtBindRsp( inMsg->TransSeq, &(inMsg->srcAddr), status, (byte)maxNumItems, StartIndex,
|
|
1640 (byte)numItems, (apsBindingItem_t *)pBuf, false );
|
|
\ ??ZDO_ProcessMgmtBindReq_6:
|
|
\ 0000B8 ; Setup parameters for call to function ZDP_MgmtBindRsp
|
|
\ 0000B8 75..00 MOV ?V0,#0x0
|
|
\ 0000BB 78.. MOV R0,#?V0
|
|
\ 0000BD 12.... LCALL ?PUSH_XSTACK_I_ONE
|
|
\ 0000C0 78.. MOV R0,#?V4
|
|
\ 0000C2 12.... LCALL ?PUSH_XSTACK_I_TWO
|
|
\ 0000C5 E9 MOV A,R1
|
|
\ 0000C6 F5.. MOV ?V0,A
|
|
\ 0000C8 78.. MOV R0,#?V0
|
|
\ 0000CA 12.... LCALL ?PUSH_XSTACK_I_ONE
|
|
\ 0000CD E5.. MOV A,?V2
|
|
\ 0000CF F5.. MOV ?V0,A
|
|
\ 0000D1 78.. MOV R0,#?V0
|
|
\ 0000D3 12.... LCALL ?PUSH_XSTACK_I_ONE
|
|
\ 0000D6 7405 MOV A,#0x5
|
|
\ 0000D8 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 0000DB E0 MOVX A,@DPTR
|
|
\ 0000DC FD MOV R5,A
|
|
\ 0000DD AC.. MOV R4,?V1
|
|
\ 0000DF 7407 MOV A,#0x7
|
|
\ 0000E1 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 0000E4 12.... LCALL ?Subroutine117 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_190:
|
|
\ 0000E7 7407 MOV A,#0x7
|
|
\ 0000E9 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 0000EC 12.... LCALL ?Subroutine79 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_124:
|
|
\ 0000EF 12.... LCALL `??ZDP_MgmtBindRsp::?relay`; Banked call to: ZDP_MgmtBindRsp
|
|
\ 0000F2 7405 MOV A,#0x5
|
|
\ 0000F4 12.... LCALL ?DEALLOC_XSTACK8
|
|
1641
|
|
1642 if ( pBuf )
|
|
\ 0000F7 E5.. MOV A,?V4
|
|
\ 0000F9 45.. ORL A,?V5
|
|
\ 0000FB 6007 JZ ??ZDO_ProcessMgmtBindReq_7
|
|
1643 {
|
|
1644 osal_mem_free( pBuf );
|
|
\ 0000FD ; Setup parameters for call to function osal_mem_free
|
|
\ 0000FD AA.. MOV R2,?V4
|
|
\ 0000FF AB.. MOV R3,?V5
|
|
\ 000101 12.... LCALL `??osal_mem_free::?relay`; Banked call to: osal_mem_free
|
|
1645 }
|
|
1646 #else
|
|
1647 (void)inMsg;
|
|
1648 #endif
|
|
1649 }
|
|
\ ??ZDO_ProcessMgmtBindReq_7:
|
|
\ 000104 7404 MOV A,#0x4
|
|
\ 000106 02.... LJMP ?Subroutine7 & 0xFFFF
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine268_0:
|
|
\ 000000 12.... LCALL ??Subroutine287_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_697:
|
|
\ 000003 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine287_0:
|
|
\ 000000 12.... LCALL ?Subroutine214 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_701:
|
|
\ 000003 3B ADDC A,R3
|
|
\ 000004 22 RET
|
|
1650
|
|
1651 /*********************************************************************
|
|
1652 * @fn ZDO_ProcessMgmtDirectJoinReq
|
|
1653 *
|
|
1654 * @brief This function finishes the processing of the Management
|
|
1655 * Direct Join Request and generates the response.
|
|
1656 *
|
|
1657 * @param inMsg - incoming message (request)
|
|
1658 *
|
|
1659 * @return none
|
|
1660 */
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
1661 void ZDO_ProcessMgmtDirectJoinReq( zdoIncomingMsg_t *inMsg )
|
|
\ ZDO_ProcessMgmtDirectJoinReq:
|
|
1662 {
|
|
\ 000000 REQUIRE ?V0
|
|
\ 000000 REQUIRE ?V1
|
|
\ 000000 74F6 MOV A,#-0xa
|
|
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
|
\ 000005 ; Saved register size: 10
|
|
\ 000005 ; Auto size: 1
|
|
\ 000005 74FF MOV A,#-0x1
|
|
\ 000007 12.... LCALL ?ALLOC_XSTACK8
|
|
\ 00000A 12.... LCALL ?Subroutine127 & 0xFFFF
|
|
1663 uint8 *deviceAddr;
|
|
1664 uint8 capInfo;
|
|
1665 uint8 stat;
|
|
1666
|
|
1667 // Parse the message
|
|
1668 deviceAddr = inMsg->asdu;
|
|
1669 capInfo = inMsg->asdu[Z_EXTADDR_LEN];
|
|
1670
|
|
1671 stat = (byte) NLME_DirectJoinRequest( deviceAddr, capInfo );
|
|
\ ??CrossCallReturnLabel_430:
|
|
\ 00000D 12.... LCALL ??Subroutine251_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_478:
|
|
\ 000010 ; Setup parameters for call to function NLME_DirectJoinRequest
|
|
\ 000010 8A82 MOV DPL,R2
|
|
\ 000012 F583 MOV DPH,A
|
|
\ 000014 A3 INC DPTR
|
|
\ 000015 A3 INC DPTR
|
|
\ 000016 A3 INC DPTR
|
|
\ 000017 A3 INC DPTR
|
|
\ 000018 A3 INC DPTR
|
|
\ 000019 A3 INC DPTR
|
|
\ 00001A A3 INC DPTR
|
|
\ 00001B A3 INC DPTR
|
|
\ 00001C E0 MOVX A,@DPTR
|
|
\ 00001D F9 MOV R1,A
|
|
\ 00001E 12.... LCALL `??NLME_DirectJoinRequest::?relay`; Banked call to: NLME_DirectJoinRequest
|
|
\ 000021 E9 MOV A,R1
|
|
\ 000022 85..82 MOV DPL,?XSP + 0
|
|
\ 000025 85..83 MOV DPH,?XSP + 1
|
|
\ 000028 F0 MOVX @DPTR,A
|
|
1672
|
|
1673 ZDP_MgmtDirectJoinRsp( inMsg->TransSeq, &(inMsg->srcAddr), stat, false );
|
|
\ 000029 ; Setup parameters for call to function ZDP_SendData
|
|
\ 000029 75..00 MOV ?V0,#0x0
|
|
\ 00002C 78.. MOV R0,#?V0
|
|
\ 00002E 12.... LCALL ?PUSH_XSTACK_I_ONE
|
|
\ 000031 7401 MOV A,#0x1
|
|
\ 000033 12.... LCALL ?XSTACK_DISP100_8
|
|
\ 000036 88.. MOV ?V0,R0
|
|
\ 000038 89.. MOV ?V1,R1
|
|
\ 00003A 78.. MOV R0,#?V0
|
|
\ 00003C 12.... LCALL ?PUSH_XSTACK_I_TWO
|
|
\ 00003F 75..35 MOV ?V0,#0x35
|
|
\ 000042 75..80 MOV ?V1,#-0x80
|
|
\ 000045 78.. MOV R0,#?V0
|
|
\ 000047 12.... LCALL ?PUSH_XSTACK_I_TWO
|
|
\ 00004A 12.... LCALL ?Subroutine136 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_219:
|
|
\ 00004D 12.... LCALL ?DEALLOC_XSTACK8
|
|
1674 }
|
|
\ 000050 REQUIRE ?Subroutine8
|
|
\ 000050 ; // Fall through to label ?Subroutine8
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine8:
|
|
\ 000000 7401 MOV A,#0x1
|
|
\ 000002 02.... LJMP ??Subroutine221_0 & 0xFFFF
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine136:
|
|
\ 000000 7901 MOV R1,#0x1
|
|
\ 000002 EE MOV A,R6
|
|
\ 000003 2402 ADD A,#0x2
|
|
\ 000005 FC MOV R4,A
|
|
\ 000006 E4 CLR A
|
|
\ 000007 3F ADDC A,R7
|
|
\ 000008 FD MOV R5,A
|
|
\ 000009 EE MOV A,R6
|
|
\ 00000A 240F ADD A,#0xf
|
|
\ 00000C FA MOV R2,A
|
|
\ 00000D E4 CLR A
|
|
\ 00000E 3F ADDC A,R7
|
|
\ 00000F 12.... LCALL ?Subroutine204 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_436:
|
|
\ 000012 22 RET
|
|
1675
|
|
1676 /*********************************************************************
|
|
1677 * @fn ZDO_ProcessMgmtLeaveReq
|
|
1678 *
|
|
1679 * @brief This function processes a Management Leave Request
|
|
1680 * and generates the response.
|
|
1681 *
|
|
1682 * @param inMsg - incoming message (request)
|
|
1683 *
|
|
1684 * @return none
|
|
1685 */
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine94:
|
|
\ 000000 F583 MOV DPH,A
|
|
\ 000002 REQUIRE ??Subroutine231_0
|
|
\ 000002 ; // Fall through to label ??Subroutine231_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
1686 void ZDO_ProcessMgmtLeaveReq( zdoIncomingMsg_t *inMsg )
|
|
\ ZDO_ProcessMgmtLeaveReq:
|
|
1687 {
|
|
\ 000000 REQUIRE ?V0
|
|
\ 000000 REQUIRE ?V1
|
|
\ 000000 REQUIRE ?V2
|
|
\ 000000 REQUIRE ?V3
|
|
\ 000000 74F4 MOV A,#-0xc
|
|
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
|
\ 000005 ; Saved register size: 12
|
|
\ 000005 ; Auto size: 6
|
|
\ 000005 74FA MOV A,#-0x6
|
|
\ 000007 12.... LCALL ?ALLOC_XSTACK8
|
|
\ 00000A 12.... LCALL ?Subroutine134 & 0xFFFF
|
|
1688 NLME_LeaveReq_t req;
|
|
1689 ZStatus_t status;
|
|
1690 uint8 option;
|
|
1691 uint8 *msg = inMsg->asdu;
|
|
\ ??CrossCallReturnLabel_440:
|
|
\ 00000D 35.. ADDC A,?V1
|
|
\ 00000F 12.... LCALL ?Subroutine94 & 0xFFFF
|
|
1692
|
|
1693 if ( ( AddrMgrExtAddrValid( msg ) == FALSE ) ||
|
|
1694 ( osal_ExtAddrEqual( msg, NLME_GetExtAddr() ) == TRUE ) )
|
|
\ ??CrossCallReturnLabel_381:
|
|
\ 000012 ; Setup parameters for call to function AddrMgrExtAddrValid
|
|
\ 000012 EE MOV A,R6
|
|
\ 000013 FA MOV R2,A
|
|
\ 000014 EF MOV A,R7
|
|
\ 000015 FB MOV R3,A
|
|
\ 000016 12.... LCALL `??AddrMgrExtAddrValid::?relay`; Banked call to: AddrMgrExtAddrValid
|
|
\ 000019 E9 MOV A,R1
|
|
\ 00001A 600F JZ ??ZDO_ProcessMgmtLeaveReq_0
|
|
\ 00001C ; Setup parameters for call to function NLME_GetExtAddr
|
|
\ 00001C 12.... LCALL ?Subroutine123 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_203:
|
|
\ 00001F ; Setup parameters for call to function sAddrExtCmp
|
|
\ 00001F EE MOV A,R6
|
|
\ 000020 FA MOV R2,A
|
|
\ 000021 EF MOV A,R7
|
|
\ 000022 FB MOV R3,A
|
|
\ 000023 12.... LCALL `??sAddrExtCmp::?relay`; Banked call to: sAddrExtCmp
|
|
\ 000026 E9 MOV A,R1
|
|
\ 000027 6401 XRL A,#0x1
|
|
\ 000029 700A JNZ ??ZDO_ProcessMgmtLeaveReq_1
|
|
1695 {
|
|
1696 // Remove this device
|
|
1697 req.extAddr = NULL;
|
|
\ ??ZDO_ProcessMgmtLeaveReq_0:
|
|
\ 00002B 7401 MOV A,#0x1
|
|
\ 00002D 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000030 E4 CLR A
|
|
\ 000031 F0 MOVX @DPTR,A
|
|
\ 000032 A3 INC DPTR
|
|
\ 000033 8009 SJMP ??ZDO_ProcessMgmtLeaveReq_2
|
|
1698 }
|
|
1699 else
|
|
1700 {
|
|
1701 // Remove child device
|
|
1702 req.extAddr = msg;
|
|
\ ??ZDO_ProcessMgmtLeaveReq_1:
|
|
\ 000035 7401 MOV A,#0x1
|
|
\ 000037 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 00003A EE MOV A,R6
|
|
\ 00003B F0 MOVX @DPTR,A
|
|
\ 00003C A3 INC DPTR
|
|
\ 00003D EF MOV A,R7
|
|
1703 }
|
|
\ ??ZDO_ProcessMgmtLeaveReq_2:
|
|
\ 00003E 12.... LCALL ?Subroutine24 & 0xFFFF
|
|
1704
|
|
1705 option = msg[Z_EXTADDR_LEN];
|
|
\ ??CrossCallReturnLabel_19:
|
|
\ 000041 F8 MOV R0,A
|
|
1706 if ( option & ZDP_MGMT_LEAVE_REQ_RC )
|
|
\ 000042 A2E6 MOV C,0xE0 /* A */.6
|
|
\ 000044 5008 JNC ??ZDO_ProcessMgmtLeaveReq_3
|
|
1707 {
|
|
1708 req.removeChildren = TRUE;
|
|
\ 000046 7403 MOV A,#0x3
|
|
\ 000048 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 00004B 7401 MOV A,#0x1
|
|
\ 00004D F0 MOVX @DPTR,A
|
|
1709 }
|
|
1710
|
|
1711 if ( option & ZDP_MGMT_LEAVE_REQ_REJOIN )
|
|
\ ??ZDO_ProcessMgmtLeaveReq_3:
|
|
\ 00004E E8 MOV A,R0
|
|
\ 00004F A2E7 MOV C,0xE0 /* A */.7
|
|
\ 000051 5008 JNC ??ZDO_ProcessMgmtLeaveReq_4
|
|
1712 {
|
|
1713 req.rejoin = TRUE;
|
|
\ 000053 7404 MOV A,#0x4
|
|
\ 000055 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000058 7401 MOV A,#0x1
|
|
\ 00005A F0 MOVX @DPTR,A
|
|
1714 }
|
|
1715
|
|
1716 req.silent = FALSE;
|
|
\ ??ZDO_ProcessMgmtLeaveReq_4:
|
|
\ 00005B 7405 MOV A,#0x5
|
|
\ 00005D 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000060 E4 CLR A
|
|
\ 000061 F0 MOVX @DPTR,A
|
|
1717
|
|
1718 status = NLME_LeaveReq( &req );
|
|
\ 000062 ; Setup parameters for call to function NLME_LeaveReq
|
|
\ 000062 04 INC A
|
|
\ 000063 12.... LCALL ?XSTACK_DISP101_8
|
|
\ 000066 12.... LCALL `??NLME_LeaveReq::?relay`; Banked call to: NLME_LeaveReq
|
|
\ 000069 E9 MOV A,R1
|
|
\ 00006A 85..82 MOV DPL,?XSP + 0
|
|
\ 00006D 85..83 MOV DPH,?XSP + 1
|
|
\ 000070 F0 MOVX @DPTR,A
|
|
1719
|
|
1720 ZDP_MgmtLeaveRsp( inMsg->TransSeq, &(inMsg->srcAddr), status, FALSE );
|
|
\ 000071 ; Setup parameters for call to function ZDP_SendData
|
|
\ 000071 75..00 MOV ?V2,#0x0
|
|
\ 000074 78.. MOV R0,#?V2
|
|
\ 000076 12.... LCALL ?PUSH_XSTACK_I_ONE
|
|
\ 000079 7401 MOV A,#0x1
|
|
\ 00007B 12.... LCALL ?XSTACK_DISP100_8
|
|
\ 00007E 88.. MOV ?V2,R0
|
|
\ 000080 89.. MOV ?V3,R1
|
|
\ 000082 78.. MOV R0,#?V2
|
|
\ 000084 12.... LCALL ?PUSH_XSTACK_I_TWO
|
|
\ 000087 75..34 MOV ?V2,#0x34
|
|
\ 00008A 75..80 MOV ?V3,#-0x80
|
|
\ 00008D 78.. MOV R0,#?V2
|
|
\ 00008F 12.... LCALL ?PUSH_XSTACK_I_TWO
|
|
\ 000092 12.... LCALL ?Subroutine140 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_224:
|
|
\ 000095 12.... LCALL ?DEALLOC_XSTACK8
|
|
1721 }
|
|
\ 000098 7406 MOV A,#0x6
|
|
\ 00009A 02.... LJMP ?Subroutine2 & 0xFFFF
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine24:
|
|
\ 000000 12.... LCALL ?Subroutine166 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_277:
|
|
\ 000003 A3 INC DPTR
|
|
\ 000004 A3 INC DPTR
|
|
\ 000005 A3 INC DPTR
|
|
\ 000006 E0 MOVX A,@DPTR
|
|
\ 000007 22 RET
|
|
1722
|
|
1723
|
|
1724 /*********************************************************************
|
|
1725 * @fn ZDO_ProcessMgmtPermitJoinReq
|
|
1726 *
|
|
1727 * @brief This function processes a Management Permit Join Request
|
|
1728 * and generates the response.
|
|
1729 *
|
|
1730 * @param inMsg - incoming message (request)
|
|
1731 *
|
|
1732 * @return none
|
|
1733 */
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
1734 void ZDO_ProcessMgmtPermitJoinReq( zdoIncomingMsg_t *inMsg )
|
|
\ ZDO_ProcessMgmtPermitJoinReq:
|
|
1735 {
|
|
\ 000000 REQUIRE ?V0
|
|
\ 000000 REQUIRE ?V1
|
|
\ 000000 74F6 MOV A,#-0xa
|
|
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
|
\ 000005 ; Saved register size: 10
|
|
\ 000005 ; Auto size: 1
|
|
\ 000005 74FF MOV A,#-0x1
|
|
\ 000007 12.... LCALL ?ALLOC_XSTACK8
|
|
\ 00000A 12.... LCALL ?Subroutine127 & 0xFFFF
|
|
1736 uint8 stat;
|
|
1737 uint8 duration;
|
|
1738 uint8 tcsig;
|
|
1739
|
|
1740 duration = inMsg->asdu[ZDP_MGMT_PERMIT_JOIN_REQ_DURATION];
|
|
1741 tcsig = inMsg->asdu[ZDP_MGMT_PERMIT_JOIN_REQ_TC_SIG];
|
|
1742
|
|
1743 // Set the network layer permit join duration
|
|
1744 stat = (byte) NLME_PermitJoiningRequest( duration );
|
|
\ ??CrossCallReturnLabel_431:
|
|
\ 00000D 12.... LCALL ??Subroutine234_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_386:
|
|
\ 000010 F9 MOV R1,A
|
|
\ 000011 12.... LCALL `??NLME_PermitJoiningRequest::?relay`; Banked call to: NLME_PermitJoiningRequest
|
|
\ 000014 E9 MOV A,R1
|
|
\ 000015 85..82 MOV DPL,?XSP + 0
|
|
\ 000018 85..83 MOV DPH,?XSP + 1
|
|
\ 00001B 12.... LCALL ?Subroutine32 & 0xFFFF
|
|
1745
|
|
1746 // Handle the Trust Center Significance
|
|
1747 if ( ZG_SECURE_ENABLED && ZG_BUILD_COORDINATOR_TYPE && ZG_DEVICE_COORDINATOR_TYPE )
|
|
1748 {
|
|
1749 if ( tcsig == TRUE )
|
|
1750 {
|
|
1751 ZDSecMgrPermitJoining( duration );
|
|
1752 }
|
|
1753 }
|
|
1754
|
|
1755 // Send a response if unicast
|
|
1756 if ( !inMsg->wasBroadcast )
|
|
\ ??CrossCallReturnLabel_38:
|
|
\ 00001E 7027 JNZ ??ZDO_ProcessMgmtPermitJoinReq_0
|
|
1757 {
|
|
1758 ZDP_MgmtPermitJoinRsp( inMsg->TransSeq, &(inMsg->srcAddr), stat, false );
|
|
\ 000020 ; Setup parameters for call to function ZDP_SendData
|
|
\ 000020 75..00 MOV ?V0,#0x0
|
|
\ 000023 78.. MOV R0,#?V0
|
|
\ 000025 12.... LCALL ?PUSH_XSTACK_I_ONE
|
|
\ 000028 7401 MOV A,#0x1
|
|
\ 00002A 12.... LCALL ?XSTACK_DISP100_8
|
|
\ 00002D 88.. MOV ?V0,R0
|
|
\ 00002F 89.. MOV ?V1,R1
|
|
\ 000031 78.. MOV R0,#?V0
|
|
\ 000033 12.... LCALL ?PUSH_XSTACK_I_TWO
|
|
\ 000036 75..36 MOV ?V0,#0x36
|
|
\ 000039 75..80 MOV ?V1,#-0x80
|
|
\ 00003C 78.. MOV R0,#?V0
|
|
\ 00003E 12.... LCALL ?PUSH_XSTACK_I_TWO
|
|
\ 000041 12.... LCALL ?Subroutine136 & 0xFFFF
|
|
1759 }
|
|
\ ??CrossCallReturnLabel_220:
|
|
\ 000044 12.... LCALL ?DEALLOC_XSTACK8
|
|
1760 }
|
|
\ ??ZDO_ProcessMgmtPermitJoinReq_0:
|
|
\ 000047 02.... LJMP ?Subroutine8 & 0xFFFF
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine32:
|
|
\ 000000 F0 MOVX @DPTR,A
|
|
\ 000001 EE MOV A,R6
|
|
\ 000002 240B ADD A,#0xb
|
|
\ 000004 F582 MOV DPL,A
|
|
\ 000006 E4 CLR A
|
|
\ 000007 3F ADDC A,R7
|
|
\ 000008 F583 MOV DPH,A
|
|
\ 00000A E0 MOVX A,@DPTR
|
|
\ 00000B 22 RET
|
|
1761
|
|
1762 /*
|
|
1763 * This function stub allows the next higher layer to be notified of
|
|
1764 * a permit joining timeout.
|
|
1765 */
|
|
1766 /*********************************************************************
|
|
1767 * @fn ZDO_ProcessMgmtPermitJoinTimeout
|
|
1768 *
|
|
1769 * @brief This function stub allows the next higher layer to be
|
|
1770 * notified of a permit joining timeout. Currently, this
|
|
1771 * directly bypasses the APS layer.
|
|
1772 *
|
|
1773 * @param none
|
|
1774 *
|
|
1775 * @return none
|
|
1776 */
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
1777 void ZDO_ProcessMgmtPermitJoinTimeout( void )
|
|
\ NLME_PermitJoiningTimeout:
|
|
1778 {
|
|
\ 000000 ; Saved register size: 0
|
|
\ 000000 ; Auto size: 0
|
|
1779 #if defined( ZDO_MGMT_PERMIT_JOIN_RESPONSE )
|
|
1780 // Currently, only the ZDSecMgr needs to be notified
|
|
1781 if ( ZG_SECURE_ENABLED && ZG_BUILD_COORDINATOR_TYPE && ZG_DEVICE_COORDINATOR_TYPE )
|
|
1782 {
|
|
1783 ZDSecMgrPermitJoiningTimeout();
|
|
1784 }
|
|
1785 #endif
|
|
1786 }
|
|
\ 000000 02.... LJMP ?BRET
|
|
1787
|
|
1788 /*********************************************************************
|
|
1789 * @fn ZDO_ProcessUserDescReq
|
|
1790 *
|
|
1791 * @brief This function finishes the processing of the User
|
|
1792 * Descriptor Request and generates the response.
|
|
1793 *
|
|
1794 * @param inMsg - incoming message (request)
|
|
1795 *
|
|
1796 * @return none
|
|
1797 */
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
1798 void ZDO_ProcessUserDescReq( zdoIncomingMsg_t *inMsg )
|
|
\ ZDO_ProcessUserDescReq:
|
|
1799 {
|
|
\ 000000 REQUIRE ?V0
|
|
\ 000000 REQUIRE ?V1
|
|
\ 000000 REQUIRE ?V2
|
|
\ 000000 REQUIRE ?V3
|
|
\ 000000 74F4 MOV A,#-0xc
|
|
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
|
\ 000005 ; Saved register size: 12
|
|
\ 000005 ; Auto size: 17
|
|
\ 000005 74EF MOV A,#-0x11
|
|
\ 000007 12.... LCALL ?ALLOC_XSTACK8
|
|
\ 00000A EA MOV A,R2
|
|
\ 00000B FE MOV R6,A
|
|
\ 00000C EB MOV A,R3
|
|
\ 00000D FF MOV R7,A
|
|
1800 uint16 aoi = BUILD_UINT16( inMsg->asdu[0], inMsg->asdu[1] );
|
|
\ 00000E 12.... LCALL ?Subroutine133 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_357:
|
|
\ 000011 12.... LCALL ?Subroutine69 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_107:
|
|
\ 000014 F5.. MOV ?V0,A
|
|
\ 000016 E4 CLR A
|
|
\ 000017 39 ADDC A,R1
|
|
\ 000018 F5.. MOV ?V1,A
|
|
1801 UserDescriptorFormat_t userDesc;
|
|
1802
|
|
1803 if ( (aoi == ZDAppNwkAddr.addr.shortAddr) && (ZSUCCESS == osal_nv_read(
|
|
1804 ZCD_NV_USERDESC, 0, sizeof(UserDescriptorFormat_t), &userDesc )) )
|
|
\ 00001A 90.... MOV DPTR,#ZDAppNwkAddr
|
|
\ 00001D E0 MOVX A,@DPTR
|
|
\ 00001E 6A XRL A,R2
|
|
\ 00001F 7003 JNZ ??ZDO_ProcessUserDescReq_0
|
|
\ 000021 A3 INC DPTR
|
|
\ 000022 E0 MOVX A,@DPTR
|
|
\ 000023 69 XRL A,R1
|
|
\ ??ZDO_ProcessUserDescReq_0:
|
|
\ 000024 7052 JNZ ??ZDO_ProcessUserDescReq_1
|
|
\ 000026 ; Setup parameters for call to function osal_nv_read
|
|
\ 000026 A8.. MOV R0,?XSP + 0
|
|
\ 000028 A9.. MOV R1,?XSP + 1
|
|
\ 00002A 88.. MOV ?V2,R0
|
|
\ 00002C 89.. MOV ?V3,R1
|
|
\ 00002E 78.. MOV R0,#?V2
|
|
\ 000030 12.... LCALL ?PUSH_XSTACK_I_TWO
|
|
\ 000033 75..11 MOV ?V2,#0x11
|
|
\ 000036 75..00 MOV ?V3,#0x0
|
|
\ 000039 78.. MOV R0,#?V2
|
|
\ 00003B 12.... LCALL ?PUSH_XSTACK_I_TWO
|
|
\ 00003E 7C00 MOV R4,#0x0
|
|
\ 000040 7D00 MOV R5,#0x0
|
|
\ 000042 7A81 MOV R2,#-0x7f
|
|
\ 000044 7B00 MOV R3,#0x0
|
|
\ 000046 12.... LCALL `??osal_nv_read::?relay`; Banked call to: osal_nv_read
|
|
\ 000049 7404 MOV A,#0x4
|
|
\ 00004B 12.... LCALL ?DEALLOC_XSTACK8
|
|
\ 00004E E9 MOV A,R1
|
|
\ 00004F 7027 JNZ ??ZDO_ProcessUserDescReq_1
|
|
1805 {
|
|
1806 ZDP_UserDescRsp( inMsg->TransSeq, &(inMsg->srcAddr), aoi, &userDesc, false );
|
|
\ 000051 ; Setup parameters for call to function ZDP_UserDescRsp
|
|
\ 000051 75..00 MOV ?V2,#0x0
|
|
\ 000054 78.. MOV R0,#?V2
|
|
\ 000056 12.... LCALL ?PUSH_XSTACK_I_ONE
|
|
\ 000059 7401 MOV A,#0x1
|
|
\ 00005B 12.... LCALL ?XSTACK_DISP100_8
|
|
\ 00005E 88.. MOV ?V2,R0
|
|
\ 000060 89.. MOV ?V3,R1
|
|
\ 000062 78.. MOV R0,#?V2
|
|
\ 000064 12.... LCALL ?PUSH_XSTACK_I_TWO
|
|
\ 000067 AC.. MOV R4,?V0
|
|
\ 000069 AD.. MOV R5,?V1
|
|
\ 00006B 12.... LCALL ?Subroutine135 & 0xFFFF
|
|
1807 }
|
|
\ ??CrossCallReturnLabel_217:
|
|
\ 00006E 12.... LCALL `??ZDP_UserDescRsp::?relay`; Banked call to: ZDP_UserDescRsp
|
|
\ 000071 7403 MOV A,#0x3
|
|
\ 000073 12.... LCALL ?DEALLOC_XSTACK8
|
|
\ 000076 8020 SJMP ??ZDO_ProcessUserDescReq_2
|
|
1808 else
|
|
1809 {
|
|
1810 ZDP_GenericRsp(inMsg->TransSeq, &(inMsg->srcAddr),
|
|
1811 ZDP_NOT_SUPPORTED, aoi, User_Desc_rsp, inMsg->SecurityUse );
|
|
\ ??ZDO_ProcessUserDescReq_1:
|
|
\ 000078 ; Setup parameters for call to function ZDP_GenericRsp
|
|
\ 000078 75..11 MOV ?V2,#0x11
|
|
\ 00007B 75..80 MOV ?V3,#-0x80
|
|
\ 00007E 78.. MOV R0,#?V2
|
|
\ 000080 12.... LCALL ?PUSH_XSTACK_I_TWO
|
|
\ 000083 78.. MOV R0,#?V0
|
|
\ 000085 12.... LCALL ?PUSH_XSTACK_I_TWO
|
|
\ 000088 12.... LCALL ?Subroutine143 & 0xFFFF
|
|
1812 }
|
|
\ ??CrossCallReturnLabel_231:
|
|
\ 00008B 7C84 MOV R4,#-0x7c
|
|
\ 00008D 12.... LCALL ?Subroutine135 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_218:
|
|
\ 000090 12.... LCALL `??ZDP_GenericRsp::?relay`; Banked call to: ZDP_GenericRsp
|
|
\ 000093 7404 MOV A,#0x4
|
|
\ 000095 12.... LCALL ?DEALLOC_XSTACK8
|
|
1813 }
|
|
\ ??ZDO_ProcessUserDescReq_2:
|
|
\ 000098 7411 MOV A,#0x11
|
|
\ 00009A 02.... LJMP ?Subroutine2 & 0xFFFF
|
|
1814
|
|
1815 /*********************************************************************
|
|
1816 * @fn ZDO_ProcessUserDescSet
|
|
1817 *
|
|
1818 * @brief This function finishes the processing of the User
|
|
1819 * Descriptor Set and generates the response.
|
|
1820 *
|
|
1821 * @param inMsg - incoming message (request)
|
|
1822 *
|
|
1823 * @return none
|
|
1824 */
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
1825 void ZDO_ProcessUserDescSet( zdoIncomingMsg_t *inMsg )
|
|
\ ZDO_ProcessUserDescSet:
|
|
1826 {
|
|
\ 000000 REQUIRE ?V0
|
|
\ 000000 REQUIRE ?V1
|
|
\ 000000 REQUIRE ?V2
|
|
\ 000000 REQUIRE ?V4
|
|
\ 000000 REQUIRE ?V5
|
|
\ 000000 74F2 MOV A,#-0xe
|
|
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
|
\ 000005 ; Saved register size: 14
|
|
\ 000005 ; Auto size: 21
|
|
\ 000005 74EB MOV A,#-0x15
|
|
\ 000007 12.... LCALL ?ALLOC_XSTACK8
|
|
\ 00000A 8A.. MOV ?V4,R2
|
|
\ 00000C 8B.. MOV ?V5,R3
|
|
1827 uint8 *msg;
|
|
1828 uint16 aoi;
|
|
1829 UserDescriptorFormat_t userDesc;
|
|
1830 uint8 outMsg[3];
|
|
1831 uint8 status;
|
|
1832
|
|
1833 msg = inMsg->asdu;
|
|
\ 00000E 12.... LCALL ??Subroutine242_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_443:
|
|
\ 000011 35.. ADDC A,?V5
|
|
\ 000013 12.... LCALL ?Subroutine82 & 0xFFFF
|
|
1834 aoi = BUILD_UINT16( msg[0], msg[1] );
|
|
\ ??CrossCallReturnLabel_129:
|
|
\ 000016 FA MOV R2,A
|
|
\ 000017 E4 CLR A
|
|
\ 000018 CA XCH A,R2
|
|
\ 000019 FB MOV R3,A
|
|
\ 00001A EC MOV A,R4
|
|
\ 00001B 2A ADD A,R2
|
|
\ 00001C FE MOV R6,A
|
|
\ 00001D E4 CLR A
|
|
\ 00001E 3B ADDC A,R3
|
|
\ 00001F FF MOV R7,A
|
|
1835
|
|
1836 if ( aoi == ZDAppNwkAddr.addr.shortAddr )
|
|
\ 000020 90.... MOV DPTR,#ZDAppNwkAddr
|
|
\ 000023 E0 MOVX A,@DPTR
|
|
\ 000024 6E XRL A,R6
|
|
\ 000025 7003 JNZ ??ZDO_ProcessUserDescSet_0
|
|
\ 000027 A3 INC DPTR
|
|
\ 000028 E0 MOVX A,@DPTR
|
|
\ 000029 6F XRL A,R7
|
|
\ ??ZDO_ProcessUserDescSet_0:
|
|
\ 00002A 6003 JZ $+5
|
|
\ 00002C 02.... LJMP ??ZDO_ProcessUserDescSet_1 & 0xFFFF
|
|
1837 {
|
|
1838 userDesc.len = (msg[2] < AF_MAX_USER_DESCRIPTOR_LEN) ? msg[2] : AF_MAX_USER_DESCRIPTOR_LEN;
|
|
\ 00002F 8882 MOV DPL,R0
|
|
\ 000031 8983 MOV DPH,R1
|
|
\ 000033 A3 INC DPTR
|
|
\ 000034 A3 INC DPTR
|
|
\ 000035 E0 MOVX A,@DPTR
|
|
\ 000036 9410 SUBB A,#0x10
|
|
\ 000038 500F JNC ??ZDO_ProcessUserDescSet_2
|
|
\ 00003A 8882 MOV DPL,R0
|
|
\ 00003C 8983 MOV DPH,R1
|
|
\ 00003E A3 INC DPTR
|
|
\ 00003F A3 INC DPTR
|
|
\ 000040 E0 MOVX A,@DPTR
|
|
\ 000041 85..82 MOV DPL,?XSP + 0
|
|
\ 000044 85..83 MOV DPH,?XSP + 1
|
|
\ 000047 8008 SJMP ??ZDO_ProcessUserDescSet_3
|
|
\ ??ZDO_ProcessUserDescSet_2:
|
|
\ 000049 85..82 MOV DPL,?XSP + 0
|
|
\ 00004C 85..83 MOV DPH,?XSP + 1
|
|
\ 00004F 7410 MOV A,#0x10
|
|
\ ??ZDO_ProcessUserDescSet_3:
|
|
\ 000051 F0 MOVX @DPTR,A
|
|
\ 000052 E0 MOVX A,@DPTR
|
|
\ 000053 C0E0 PUSH A
|
|
\ 000055 7404 MOV A,#0x4
|
|
\ 000057 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 00005A D0E0 POP A
|
|
\ 00005C 12.... LCALL ?Subroutine37 & 0xFFFF
|
|
1839 msg ++; // increment one for the length field
|
|
1840
|
|
1841 osal_memcpy( userDesc.desc, &msg[2], userDesc.len );
|
|
\ ??CrossCallReturnLabel_48:
|
|
\ 00005F A982 MOV R1,DPL
|
|
\ 000061 AA83 MOV R2,DPH
|
|
\ 000063 89.. MOV ?V0,R1
|
|
\ 000065 8A.. MOV ?V1,R2
|
|
\ 000067 75..00 MOV ?V2,#0x0
|
|
\ 00006A 78.. MOV R0,#?V0
|
|
\ 00006C 12.... LCALL ?PUSH_XSTACK_I_THREE
|
|
\ 00006F 7407 MOV A,#0x7
|
|
\ 000071 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000074 E0 MOVX A,@DPTR
|
|
\ 000075 FC MOV R4,A
|
|
\ 000076 7D00 MOV R5,#0x0
|
|
\ 000078 7408 MOV A,#0x8
|
|
\ 00007A 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 00007D AA82 MOV R2,DPL
|
|
\ 00007F AB83 MOV R3,DPH
|
|
\ 000081 12.... LCALL ??Subroutine274_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_623:
|
|
\ 000084 12.... LCALL ?DEALLOC_XSTACK8
|
|
1842 osal_nv_write( ZCD_NV_USERDESC, 0, sizeof(UserDescriptorFormat_t), &userDesc );
|
|
\ 000087 ; Setup parameters for call to function osal_nv_write
|
|
\ 000087 7404 MOV A,#0x4
|
|
\ 000089 12.... LCALL ?XSTACK_DISP100_8
|
|
\ 00008C 88.. MOV ?V0,R0
|
|
\ 00008E 89.. MOV ?V1,R1
|
|
\ 000090 78.. MOV R0,#?V0
|
|
\ 000092 12.... LCALL ?PUSH_XSTACK_I_TWO
|
|
\ 000095 75..11 MOV ?V0,#0x11
|
|
\ 000098 75..00 MOV ?V1,#0x0
|
|
\ 00009B 78.. MOV R0,#?V0
|
|
\ 00009D 12.... LCALL ?PUSH_XSTACK_I_TWO
|
|
\ 0000A0 7C00 MOV R4,#0x0
|
|
\ 0000A2 7D00 MOV R5,#0x0
|
|
\ 0000A4 7A81 MOV R2,#-0x7f
|
|
\ 0000A6 7B00 MOV R3,#0x0
|
|
\ 0000A8 12.... LCALL `??osal_nv_write::?relay`; Banked call to: osal_nv_write
|
|
\ 0000AB 7404 MOV A,#0x4
|
|
\ 0000AD 12.... LCALL ?DEALLOC_XSTACK8
|
|
1843 if ( userDesc.len != 0 )
|
|
\ 0000B0 7404 MOV A,#0x4
|
|
\ 0000B2 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 0000B5 E0 MOVX A,@DPTR
|
|
\ 0000B6 90.... MOV DPTR,#ZDO_Config_Node_Descriptor
|
|
\ 0000B9 6005 JZ ??ZDO_ProcessUserDescSet_4
|
|
1844 {
|
|
1845 ZDO_Config_Node_Descriptor.UserDescAvail = TRUE;
|
|
\ 0000BB E0 MOVX A,@DPTR
|
|
\ 0000BC D2E4 SETB 0xE0 /* A */.4
|
|
\ 0000BE 8003 SJMP ??ZDO_ProcessUserDescSet_5
|
|
1846 }
|
|
1847 else
|
|
1848 {
|
|
1849 ZDO_Config_Node_Descriptor.UserDescAvail = FALSE;
|
|
\ ??ZDO_ProcessUserDescSet_4:
|
|
\ 0000C0 E0 MOVX A,@DPTR
|
|
\ 0000C1 C2E4 CLR 0xE0 /* A */.4
|
|
\ ??ZDO_ProcessUserDescSet_5:
|
|
\ 0000C3 F0 MOVX @DPTR,A
|
|
1850 }
|
|
1851
|
|
1852 status = ZDP_SUCCESS;
|
|
\ 0000C4 85..82 MOV DPL,?XSP + 0
|
|
\ 0000C7 85..83 MOV DPH,?XSP + 1
|
|
\ 0000CA E4 CLR A
|
|
\ 0000CB 8008 SJMP ??ZDO_ProcessUserDescSet_6
|
|
1853 }
|
|
1854 else
|
|
1855 {
|
|
1856 status = ZDP_NOT_SUPPORTED;
|
|
\ ??ZDO_ProcessUserDescSet_1:
|
|
\ 0000CD 85..82 MOV DPL,?XSP + 0
|
|
\ 0000D0 85..83 MOV DPH,?XSP + 1
|
|
\ 0000D3 7484 MOV A,#-0x7c
|
|
\ ??ZDO_ProcessUserDescSet_6:
|
|
\ 0000D5 F0 MOVX @DPTR,A
|
|
1857 }
|
|
1858
|
|
1859 outMsg[0] = status;
|
|
\ 0000D6 E0 MOVX A,@DPTR
|
|
\ 0000D7 C0E0 PUSH A
|
|
\ 0000D9 7401 MOV A,#0x1
|
|
\ 0000DB 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 0000DE D0E0 POP A
|
|
\ 0000E0 F0 MOVX @DPTR,A
|
|
1860 outMsg[1] = LO_UINT16( aoi );
|
|
\ 0000E1 7402 MOV A,#0x2
|
|
\ 0000E3 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 0000E6 EE MOV A,R6
|
|
\ 0000E7 F0 MOVX @DPTR,A
|
|
1861 outMsg[2] = LO_UINT16( aoi );
|
|
\ 0000E8 7403 MOV A,#0x3
|
|
\ 0000EA 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 0000ED EE MOV A,R6
|
|
\ 0000EE F0 MOVX @DPTR,A
|
|
1862
|
|
1863 ZDP_SendData( &(inMsg->TransSeq), &(inMsg->srcAddr), User_Desc_conf, 3, outMsg,
|
|
1864 inMsg->SecurityUse );
|
|
\ 0000EF ; Setup parameters for call to function ZDP_SendData
|
|
\ 0000EF 12.... LCALL ?Subroutine145 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_615:
|
|
\ 0000F2 35.. ADDC A,?V5
|
|
\ 0000F4 12.... LCALL ?Subroutine112 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_451:
|
|
\ 0000F7 12.... LCALL ?PUSH_XSTACK_I_ONE
|
|
\ 0000FA 7402 MOV A,#0x2
|
|
\ 0000FC 12.... LCALL ?XSTACK_DISP100_8
|
|
\ 0000FF 88.. MOV ?V0,R0
|
|
\ 000101 89.. MOV ?V1,R1
|
|
\ 000103 78.. MOV R0,#?V0
|
|
\ 000105 12.... LCALL ?PUSH_XSTACK_I_TWO
|
|
\ 000108 75..14 MOV ?V0,#0x14
|
|
\ 00010B 75..80 MOV ?V1,#-0x80
|
|
\ 00010E 78.. MOV R0,#?V0
|
|
\ 000110 12.... LCALL ?PUSH_XSTACK_I_TWO
|
|
\ 000113 7903 MOV R1,#0x3
|
|
\ 000115 12.... LCALL ?Subroutine142 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_229:
|
|
\ 000118 FA MOV R2,A
|
|
\ 000119 E4 CLR A
|
|
\ 00011A 35.. ADDC A,?V5
|
|
\ 00011C FB MOV R3,A
|
|
\ 00011D 12.... LCALL ?Subroutine158 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_262:
|
|
\ 000120 12.... LCALL ?DEALLOC_XSTACK8
|
|
1865 }
|
|
\ 000123 7415 MOV A,#0x15
|
|
\ 000125 02.... LJMP ?Subroutine5 & 0xFFFF
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine112:
|
|
\ 000000 F583 MOV DPH,A
|
|
\ 000002 REQUIRE ??Subroutine244_0
|
|
\ 000002 ; // Fall through to label ??Subroutine244_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine158:
|
|
\ 000000 12.... LCALL ??Subroutine241_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_437:
|
|
\ 000003 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine37:
|
|
\ 000000 12.... LCALL ?Subroutine170 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_282:
|
|
\ 000003 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine170:
|
|
\ 000000 12.... LCALL ?Subroutine207 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_330:
|
|
\ 000003 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine207:
|
|
\ 000000 F0 MOVX @DPTR,A
|
|
\ 000001 ; Setup parameters for call to function osal_memcpy
|
|
\ 000001 8882 MOV DPL,R0
|
|
\ 000003 8983 MOV DPH,R1
|
|
\ 000005 A3 INC DPTR
|
|
\ 000006 A3 INC DPTR
|
|
\ 000007 A3 INC DPTR
|
|
\ 000008 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine274_0:
|
|
\ 000000 12.... LCALL `??osal_memcpy::?relay`; Banked call to: osal_memcpy
|
|
\ 000003 7403 MOV A,#0x3
|
|
\ 000005 22 RET
|
|
1866
|
|
1867 /*********************************************************************
|
|
1868 * @fn ZDO_ProcessDeviceAnnce
|
|
1869 *
|
|
1870 * @brief This function processes a device annouce message.
|
|
1871 *
|
|
1872 * @param inMsg - incoming message
|
|
1873 *
|
|
1874 * @return none
|
|
1875 */
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
1876 void ZDO_ProcessDeviceAnnce( zdoIncomingMsg_t *inMsg )
|
|
\ ZDO_ProcessDeviceAnnce:
|
|
1877 {
|
|
\ 000000 REQUIRE ?V0
|
|
\ 000000 REQUIRE ?V1
|
|
\ 000000 74F6 MOV A,#-0xa
|
|
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
|
\ 000005 ; Saved register size: 10
|
|
\ 000005 ; Auto size: 32
|
|
\ 000005 74E0 MOV A,#-0x20
|
|
\ 000007 12.... LCALL ?ALLOC_XSTACK8
|
|
1878 ZDO_DeviceAnnce_t Annce;
|
|
1879 AddrMgrEntry_t addrEntry;
|
|
1880 uint8 parentExt[Z_EXTADDR_LEN];
|
|
1881
|
|
1882 // Parse incoming message
|
|
1883 ZDO_ParseDeviceAnnce( inMsg, &Annce );
|
|
\ 00000A ; Setup parameters for call to function ZDO_ParseDeviceAnnce
|
|
\ 00000A AC.. MOV R4,?XSP + 0
|
|
\ 00000C AD.. MOV R5,?XSP + 1
|
|
\ 00000E 12.... LCALL `??ZDO_ParseDeviceAnnce::?relay`; Banked call to: ZDO_ParseDeviceAnnce
|
|
1884
|
|
1885 if ( ZSTACK_END_DEVICE_BUILD )
|
|
1886 {
|
|
1887 // Make sure the message didn't come from myself - end device only
|
|
1888 if ( osal_ExtAddrEqual( NLME_GetExtAddr(), Annce.extAddr ) && Annce.nwkAddr == NLME_GetShortAddr() )
|
|
\ 000011 ; Setup parameters for call to function NLME_GetExtAddr
|
|
\ 000011 12.... LCALL `??NLME_GetExtAddr::?relay`; Banked call to: NLME_GetExtAddr
|
|
\ 000014 ; Setup parameters for call to function sAddrExtCmp
|
|
\ 000014 7402 MOV A,#0x2
|
|
\ 000016 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000019 AC82 MOV R4,DPL
|
|
\ 00001B AD83 MOV R5,DPH
|
|
\ 00001D 12.... LCALL `??sAddrExtCmp::?relay`; Banked call to: sAddrExtCmp
|
|
\ 000020 E9 MOV A,R1
|
|
\ 000021 601D JZ ??ZDO_ProcessDeviceAnnce_0
|
|
\ 000023 ; Setup parameters for call to function NLME_GetShortAddr
|
|
\ 000023 12.... LCALL `??NLME_GetShortAddr::?relay`; Banked call to: NLME_GetShortAddr
|
|
\ 000026 8A.. MOV ?V0,R2
|
|
\ 000028 8B.. MOV ?V1,R3
|
|
\ 00002A A8.. MOV R0,?V0
|
|
\ 00002C A9.. MOV R1,?V1
|
|
\ 00002E 85..82 MOV DPL,?XSP + 0
|
|
\ 000031 85..83 MOV DPH,?XSP + 1
|
|
\ 000034 E0 MOVX A,@DPTR
|
|
\ 000035 68 XRL A,R0
|
|
\ 000036 7003 JNZ ??ZDO_ProcessDeviceAnnce_1
|
|
\ 000038 A3 INC DPTR
|
|
\ 000039 E0 MOVX A,@DPTR
|
|
\ 00003A 69 XRL A,R1
|
|
\ ??ZDO_ProcessDeviceAnnce_1:
|
|
\ 00003B 7003 JNZ $+5
|
|
\ 00003D 02.... LJMP ??ZDO_ProcessDeviceAnnce_2 & 0xFFFF
|
|
1889 {
|
|
1890 return;
|
|
1891 }
|
|
1892 }
|
|
1893
|
|
1894 #if defined ( ZIGBEE_STOCHASTIC_ADDRESSING )
|
|
1895 // Clean up the neighbor table
|
|
1896 nwkNeighborRemoveAllStranded();
|
|
\ ??ZDO_ProcessDeviceAnnce_0:
|
|
\ 000040 ; Setup parameters for call to function nwkNeighborRemoveAllStranded
|
|
\ 000040 12.... LCALL `??nwkNeighborRemoveAllStranded::?relay`; Banked call to: nwkNeighborRemoveAllStranded
|
|
1897
|
|
1898 // If address conflict is detected, no need to update the address manager
|
|
1899 if ( NLME_CheckNewAddrSet( Annce.nwkAddr, Annce.extAddr )== ZFailure )
|
|
\ 000043 ; Setup parameters for call to function NLME_CheckNewAddrSet
|
|
\ 000043 7402 MOV A,#0x2
|
|
\ 000045 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000048 12.... LCALL ?Subroutine115 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_484:
|
|
\ 00004B 12.... LCALL `??NLME_CheckNewAddrSet::?relay`; Banked call to: NLME_CheckNewAddrSet
|
|
\ 00004E E9 MOV A,R1
|
|
\ 00004F 6401 XRL A,#0x1
|
|
\ 000051 7003 JNZ $+5
|
|
\ 000053 02.... LJMP ??ZDO_ProcessDeviceAnnce_2 & 0xFFFF
|
|
1900 {
|
|
1901 return;
|
|
1902 }
|
|
1903 #endif
|
|
1904
|
|
1905 #if defined ( ZIGBEE_STOCHASTIC_ADDRESSING )
|
|
1906 // Check for parent's address
|
|
1907 NLME_GetCoordExtAddr( parentExt );
|
|
\ 000056 ; Setup parameters for call to function NLME_GetCoordExtAddr
|
|
\ 000056 7418 MOV A,#0x18
|
|
\ 000058 12.... LCALL ?XSTACK_DISP101_8
|
|
\ 00005B 12.... LCALL `??NLME_GetCoordExtAddr::?relay`; Banked call to: NLME_GetCoordExtAddr
|
|
1908 if ( osal_ExtAddrEqual( parentExt, Annce.extAddr ) )
|
|
\ 00005E ; Setup parameters for call to function sAddrExtCmp
|
|
\ 00005E 7402 MOV A,#0x2
|
|
\ 000060 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000063 AC82 MOV R4,DPL
|
|
\ 000065 AD83 MOV R5,DPH
|
|
\ 000067 7418 MOV A,#0x18
|
|
\ 000069 12.... LCALL ?XSTACK_DISP101_8
|
|
\ 00006C 12.... LCALL `??sAddrExtCmp::?relay`; Banked call to: sAddrExtCmp
|
|
\ 00006F E9 MOV A,R1
|
|
\ 000070 6032 JZ ??ZDO_ProcessDeviceAnnce_3
|
|
1909 {
|
|
1910 if ( Annce.nwkAddr != NLME_GetCoordShortAddr() )
|
|
\ 000072 ; Setup parameters for call to function NLME_GetCoordShortAddr
|
|
\ 000072 12.... LCALL `??NLME_GetCoordShortAddr::?relay`; Banked call to: NLME_GetCoordShortAddr
|
|
\ 000075 8A.. MOV ?V0,R2
|
|
\ 000077 8B.. MOV ?V1,R3
|
|
\ 000079 A8.. MOV R0,?V0
|
|
\ 00007B A9.. MOV R1,?V1
|
|
\ 00007D 85..82 MOV DPL,?XSP + 0
|
|
\ 000080 85..83 MOV DPH,?XSP + 1
|
|
\ 000083 E0 MOVX A,@DPTR
|
|
\ 000084 68 XRL A,R0
|
|
\ 000085 7003 JNZ ??ZDO_ProcessDeviceAnnce_4
|
|
\ 000087 A3 INC DPTR
|
|
\ 000088 E0 MOVX A,@DPTR
|
|
\ 000089 69 XRL A,R1
|
|
\ ??ZDO_ProcessDeviceAnnce_4:
|
|
\ 00008A 6018 JZ ??ZDO_ProcessDeviceAnnce_3
|
|
1911 {
|
|
1912 // Set the Parent's MAC's new short address
|
|
1913 _NIB.nwkCoordAddress = Annce.nwkAddr;
|
|
\ 00008C 85..82 MOV DPL,?XSP + 0
|
|
\ 00008F 85..83 MOV DPH,?XSP + 1
|
|
\ 000092 12.... LCALL ??Subroutine248_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_458:
|
|
\ 000095 90.... MOV DPTR,#_NIB + 23
|
|
\ 000098 12.... LCALL ??Subroutine289_0 & 0xFFFF
|
|
1914 ZMacSetReq( ZMacCoordShortAddress, (byte*)&(_NIB.nwkCoordAddress) );
|
|
\ ??CrossCallReturnLabel_719:
|
|
\ 00009B ; Setup parameters for call to function ZMacSetReq
|
|
\ 00009B 7A.. MOV R2,#(_NIB + 23) & 0xff
|
|
\ 00009D 7B.. MOV R3,#((_NIB + 23) >> 8) & 0xff
|
|
\ 00009F 794B MOV R1,#0x4b
|
|
\ 0000A1 12.... LCALL `??ZMacSetReq::?relay`; Banked call to: ZMacSetReq
|
|
1915 }
|
|
1916 }
|
|
1917
|
|
1918 if ( ZSTACK_ROUTER_BUILD )
|
|
1919 {
|
|
1920 // If the device annce comes from a end device child that has moved
|
|
1921 // to another parent, remove it from associated device list
|
|
1922
|
|
1923 // If the dev annce is coming from other device's children,
|
|
1924 // (The dev annce from its own children shall be unicast to itself,
|
|
1925 // So check the mac destination address)
|
|
1926 // Remove it from the associated device list. If it is not
|
|
1927 // a child, no action will be taken in AssocRemove() anyway.
|
|
1928 if ( inMsg->macDestAddr != NLME_GetShortAddr() )
|
|
1929 {
|
|
1930 associated_devices_t *dev_ptr;
|
|
1931
|
|
1932 // If it's an end device child
|
|
1933 dev_ptr = AssocGetWithExt( Annce.extAddr );
|
|
1934 if ( dev_ptr )
|
|
1935 {
|
|
1936 if ( dev_ptr->nodeRelation == CHILD_RFD ||
|
|
1937 dev_ptr->nodeRelation == CHILD_RFD_RX_IDLE )
|
|
1938 {
|
|
1939 AssocRemove( Annce.extAddr );
|
|
1940 }
|
|
1941 }
|
|
1942 }
|
|
1943
|
|
1944 if ( Annce.nwkAddr != NLME_GetShortAddr() )
|
|
1945 {
|
|
1946 // If an associated device is found with matched extended Address,
|
|
1947 // update its short address
|
|
1948 if ( AssocChangeNwkAddr( Annce.nwkAddr, Annce.extAddr ) )
|
|
1949 {
|
|
1950 // Set event to save NV
|
|
1951 ZDApp_NVUpdate();
|
|
1952 }
|
|
1953 }
|
|
1954 }
|
|
1955
|
|
1956 // Update the neighbor table
|
|
1957 nwkNeighborUpdateNwkAddr( Annce.nwkAddr, Annce.extAddr );
|
|
\ ??ZDO_ProcessDeviceAnnce_3:
|
|
\ 0000A4 ; Setup parameters for call to function nwkNeighborUpdateNwkAddr
|
|
\ 0000A4 7402 MOV A,#0x2
|
|
\ 0000A6 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 0000A9 12.... LCALL ?Subroutine115 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_485:
|
|
\ 0000AC 12.... LCALL `??nwkNeighborUpdateNwkAddr::?relay`; Banked call to: nwkNeighborUpdateNwkAddr
|
|
1958
|
|
1959 // Assume that the device has moved, remove existing routing entries
|
|
1960 RTG_RemoveRtgEntry( Annce.nwkAddr, 0 );
|
|
\ 0000AF ; Setup parameters for call to function RTG_RemoveRtgEntry
|
|
\ 0000AF 7900 MOV R1,#0x0
|
|
\ 0000B1 12.... LCALL ??Subroutine250_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_482:
|
|
\ 0000B4 12.... LCALL `??RTG_RemoveRtgEntry::?relay`; Banked call to: RTG_RemoveRtgEntry
|
|
1961
|
|
1962 #endif // ZIGBEE_STOCHASTIC_ADDRESSING
|
|
1963
|
|
1964 // Fill in the extended address in address manager if we don't have it already.
|
|
1965 addrEntry.user = ADDRMGR_USER_DEFAULT;
|
|
\ 0000B7 740B MOV A,#0xb
|
|
\ 0000B9 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 0000BC E4 CLR A
|
|
\ 0000BD 12.... LCALL ?Subroutine30 & 0xFFFF
|
|
1966 addrEntry.nwkAddr = Annce.nwkAddr;
|
|
\ ??CrossCallReturnLabel_32:
|
|
\ 0000C0 F8 MOV R0,A
|
|
\ 0000C1 A3 INC DPTR
|
|
\ 0000C2 E0 MOVX A,@DPTR
|
|
\ 0000C3 F9 MOV R1,A
|
|
\ 0000C4 740C MOV A,#0xc
|
|
\ 0000C6 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 0000C9 12.... LCALL ?Subroutine40 & 0xFFFF
|
|
1967 if ( AddrMgrEntryLookupNwk( &addrEntry ) )
|
|
\ ??CrossCallReturnLabel_56:
|
|
\ 0000CC 12.... LCALL ?XSTACK_DISP101_8
|
|
\ 0000CF 12.... LCALL `??AddrMgrEntryLookupNwk::?relay`; Banked call to: AddrMgrEntryLookupNwk
|
|
\ 0000D2 E9 MOV A,R1
|
|
\ 0000D3 603F JZ ??ZDO_ProcessDeviceAnnce_5
|
|
1968 {
|
|
1969 osal_memset( parentExt, 0, Z_EXTADDR_LEN );
|
|
\ 0000D5 ; Setup parameters for call to function osal_memset
|
|
\ 0000D5 7C08 MOV R4,#0x8
|
|
\ 0000D7 7D00 MOV R5,#0x0
|
|
\ 0000D9 7900 MOV R1,#0x0
|
|
\ 0000DB 7418 MOV A,#0x18
|
|
\ 0000DD 12.... LCALL ?XSTACK_DISP101_8
|
|
\ 0000E0 12.... LCALL `??osal_memset::?relay`; Banked call to: osal_memset
|
|
1970 if ( osal_ExtAddrEqual( parentExt, addrEntry.extAddr ) )
|
|
\ 0000E3 ; Setup parameters for call to function sAddrExtCmp
|
|
\ 0000E3 740E MOV A,#0xe
|
|
\ 0000E5 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 0000E8 AC82 MOV R4,DPL
|
|
\ 0000EA AD83 MOV R5,DPH
|
|
\ 0000EC 7418 MOV A,#0x18
|
|
\ 0000EE 12.... LCALL ?XSTACK_DISP101_8
|
|
\ 0000F1 12.... LCALL `??sAddrExtCmp::?relay`; Banked call to: sAddrExtCmp
|
|
\ 0000F4 E9 MOV A,R1
|
|
\ 0000F5 601D JZ ??ZDO_ProcessDeviceAnnce_5
|
|
1971 {
|
|
1972 AddrMgrExtAddrSet( addrEntry.extAddr, Annce.extAddr );
|
|
\ 0000F7 ; Setup parameters for call to function AddrMgrExtAddrSet
|
|
\ 0000F7 7402 MOV A,#0x2
|
|
\ 0000F9 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 0000FC AC82 MOV R4,DPL
|
|
\ 0000FE AD83 MOV R5,DPH
|
|
\ 000100 740E MOV A,#0xe
|
|
\ 000102 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000105 AA82 MOV R2,DPL
|
|
\ 000107 AB83 MOV R3,DPH
|
|
\ 000109 12.... LCALL `??AddrMgrExtAddrSet::?relay`; Banked call to: AddrMgrExtAddrSet
|
|
1973 AddrMgrEntryUpdate( &addrEntry );
|
|
\ 00010C ; Setup parameters for call to function AddrMgrEntryUpdate
|
|
\ 00010C 740B MOV A,#0xb
|
|
\ 00010E 12.... LCALL ?XSTACK_DISP101_8
|
|
\ 000111 12.... LCALL `??AddrMgrEntryUpdate::?relay`; Banked call to: AddrMgrEntryUpdate
|
|
1974 }
|
|
1975 }
|
|
1976
|
|
1977 // Update the short address in address manager if it's been changed
|
|
1978 AddrMgrExtAddrSet( addrEntry.extAddr, Annce.extAddr );
|
|
\ ??ZDO_ProcessDeviceAnnce_5:
|
|
\ 000114 ; Setup parameters for call to function AddrMgrExtAddrSet
|
|
\ 000114 7402 MOV A,#0x2
|
|
\ 000116 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000119 AC82 MOV R4,DPL
|
|
\ 00011B AD83 MOV R5,DPH
|
|
\ 00011D 740E MOV A,#0xe
|
|
\ 00011F 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000122 AA82 MOV R2,DPL
|
|
\ 000124 AB83 MOV R3,DPH
|
|
\ 000126 12.... LCALL `??AddrMgrExtAddrSet::?relay`; Banked call to: AddrMgrExtAddrSet
|
|
1979 if ( AddrMgrEntryLookupExt( &addrEntry ) )
|
|
\ 000129 ; Setup parameters for call to function AddrMgrEntryLookupExt
|
|
\ 000129 740B MOV A,#0xb
|
|
\ 00012B 12.... LCALL ?XSTACK_DISP101_8
|
|
\ 00012E 12.... LCALL `??AddrMgrEntryLookupExt::?relay`; Banked call to: AddrMgrEntryLookupExt
|
|
\ 000131 E9 MOV A,R1
|
|
\ 000132 602E JZ ??ZDO_ProcessDeviceAnnce_2
|
|
1980 {
|
|
1981 if ( addrEntry.nwkAddr != Annce.nwkAddr )
|
|
\ 000134 740C MOV A,#0xc
|
|
\ 000136 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000139 12.... LCALL ??Subroutine248_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_459:
|
|
\ 00013C 85..82 MOV DPL,?XSP + 0
|
|
\ 00013F 85..83 MOV DPH,?XSP + 1
|
|
\ 000142 E0 MOVX A,@DPTR
|
|
\ 000143 68 XRL A,R0
|
|
\ 000144 7003 JNZ ??ZDO_ProcessDeviceAnnce_6
|
|
\ 000146 A3 INC DPTR
|
|
\ 000147 E0 MOVX A,@DPTR
|
|
\ 000148 69 XRL A,R1
|
|
\ ??ZDO_ProcessDeviceAnnce_6:
|
|
\ 000149 6017 JZ ??ZDO_ProcessDeviceAnnce_2
|
|
1982 {
|
|
1983 addrEntry.nwkAddr = Annce.nwkAddr;
|
|
\ 00014B 85..82 MOV DPL,?XSP + 0
|
|
\ 00014E 85..83 MOV DPH,?XSP + 1
|
|
\ 000151 12.... LCALL ??Subroutine248_0 & 0xFFFF
|
|
1984 AddrMgrEntryUpdate( &addrEntry );
|
|
1985 }
|
|
1986 }
|
|
\ ??CrossCallReturnLabel_460:
|
|
\ 000154 740C MOV A,#0xc
|
|
\ 000156 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000159 12.... LCALL ?Subroutine40 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_57:
|
|
\ 00015C 12.... LCALL ?XSTACK_DISP101_8
|
|
\ 00015F 12.... LCALL `??AddrMgrEntryUpdate::?relay`; Banked call to: AddrMgrEntryUpdate
|
|
1987 }
|
|
\ ??ZDO_ProcessDeviceAnnce_2:
|
|
\ 000162 7420 MOV A,#0x20
|
|
\ 000164 02.... LJMP ??Subroutine221_0 & 0xFFFF
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine115:
|
|
\ 000000 AC82 MOV R4,DPL
|
|
\ 000002 AD83 MOV R5,DPH
|
|
\ 000004 REQUIRE ??Subroutine250_0
|
|
\ 000004 ; // Fall through to label ??Subroutine250_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine250_0:
|
|
\ 000000 85..82 MOV DPL,?XSP + 0
|
|
\ 000003 85..83 MOV DPH,?XSP + 1
|
|
\ 000006 REQUIRE ??Subroutine251_0
|
|
\ 000006 ; // Fall through to label ??Subroutine251_0
|
|
1988
|
|
1989 /*********************************************************************
|
|
1990 * @fn ZDO_BuildSimpleDescBuf
|
|
1991 *
|
|
1992 * @brief Build a byte sequence representation of a Simple Descriptor.
|
|
1993 *
|
|
1994 * @param buf - pointer to a byte array big enough for data.
|
|
1995 * @param desc - SimpleDescriptionFormat_t *
|
|
1996 *
|
|
1997 * @return none
|
|
1998 */
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine83:
|
|
\ 000000 A3 INC DPTR
|
|
\ 000001 A3 INC DPTR
|
|
\ 000002 A3 INC DPTR
|
|
\ 000003 A3 INC DPTR
|
|
\ 000004 REQUIRE ??Subroutine245_0
|
|
\ 000004 ; // Fall through to label ??Subroutine245_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
1999 void ZDO_BuildSimpleDescBuf( uint8 *buf, SimpleDescriptionFormat_t *desc )
|
|
\ ZDO_BuildSimpleDescBuf:
|
|
2000 {
|
|
\ 000000 REQUIRE ?V0
|
|
\ 000000 REQUIRE ?V1
|
|
\ 000000 74F6 MOV A,#-0xa
|
|
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
|
\ 000005 ; Saved register size: 10
|
|
\ 000005 ; Auto size: 0
|
|
\ 000005 EC MOV A,R4
|
|
\ 000006 FE MOV R6,A
|
|
\ 000007 ED MOV A,R5
|
|
\ 000008 FF MOV R7,A
|
|
2001 byte cnt;
|
|
2002 uint16 *ptr;
|
|
2003
|
|
2004 *buf++ = desc->EndPoint;
|
|
\ 000009 8C82 MOV DPL,R4
|
|
\ 00000B F583 MOV DPH,A
|
|
\ 00000D 12.... LCALL ?Subroutine118 & 0xFFFF
|
|
2005 *buf++ = HI_UINT16( desc->AppProfId );
|
|
\ ??CrossCallReturnLabel_191:
|
|
\ 000010 8C82 MOV DPL,R4
|
|
\ 000012 8D83 MOV DPH,R5
|
|
\ 000014 A3 INC DPTR
|
|
\ 000015 A882 MOV R0,DPL
|
|
\ 000017 A983 MOV R1,DPH
|
|
\ 000019 12.... LCALL ?Subroutine184 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_471:
|
|
\ 00001C 12.... LCALL ?Subroutine27 & 0xFFFF
|
|
2006 *buf++ = LO_UINT16( desc->AppProfId );
|
|
\ ??CrossCallReturnLabel_26:
|
|
\ 00001F F0 MOVX @DPTR,A
|
|
2007 *buf++ = HI_UINT16( desc->AppDeviceId );
|
|
\ 000020 EC MOV A,R4
|
|
\ 000021 2403 ADD A,#0x3
|
|
\ 000023 F8 MOV R0,A
|
|
\ 000024 E4 CLR A
|
|
\ 000025 3F ADDC A,R7
|
|
\ 000026 F9 MOV R1,A
|
|
\ 000027 8882 MOV DPL,R0
|
|
\ 000029 F583 MOV DPH,A
|
|
\ 00002B 12.... LCALL ?Subroutine184 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_472:
|
|
\ 00002E A3 INC DPTR
|
|
\ 00002F A3 INC DPTR
|
|
\ 000030 12.... LCALL ?Subroutine27 & 0xFFFF
|
|
2008 *buf++ = LO_UINT16( desc->AppDeviceId );
|
|
\ ??CrossCallReturnLabel_27:
|
|
\ 000033 12.... LCALL ?Subroutine38 & 0xFFFF
|
|
2009
|
|
2010 *buf++ = (byte)(desc->AppDevVer << 4);
|
|
\ ??CrossCallReturnLabel_51:
|
|
\ 000036 E0 MOVX A,@DPTR
|
|
\ 000037 C4 SWAP A
|
|
\ 000038 54F0 ANL A,#0xf0
|
|
\ 00003A 8A82 MOV DPL,R2
|
|
\ 00003C 8B83 MOV DPH,R3
|
|
\ 00003E A3 INC DPTR
|
|
\ 00003F A3 INC DPTR
|
|
\ 000040 A3 INC DPTR
|
|
\ 000041 12.... LCALL ?Subroutine38 & 0xFFFF
|
|
2011
|
|
2012 *buf++ = desc->AppNumInClusters;
|
|
\ ??CrossCallReturnLabel_52:
|
|
\ 000044 A3 INC DPTR
|
|
\ 000045 12.... LCALL ?Subroutine104 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_172:
|
|
\ 000048 F0 MOVX @DPTR,A
|
|
\ 000049 EA MOV A,R2
|
|
\ 00004A 2407 ADD A,#0x7
|
|
\ 00004C FA MOV R2,A
|
|
\ 00004D 5001 JNC ??ZDO_BuildSimpleDescBuf_0
|
|
\ 00004F 0B INC R3
|
|
2013 ptr = desc->pAppInClusterList;
|
|
\ ??ZDO_BuildSimpleDescBuf_0:
|
|
\ 000050 8C82 MOV DPL,R4
|
|
\ 000052 8D83 MOV DPH,R5
|
|
\ 000054 12.... LCALL ?Subroutine83 & 0xFFFF
|
|
2014 for ( cnt = 0; cnt < desc->AppNumInClusters; ptr++, cnt++ )
|
|
\ ??CrossCallReturnLabel_467:
|
|
\ 000057 7C00 MOV R4,#0x0
|
|
\ 000059 800E SJMP ??ZDO_BuildSimpleDescBuf_1
|
|
2015 {
|
|
2016 *buf++ = HI_UINT16( *ptr );
|
|
\ ??ZDO_BuildSimpleDescBuf_2:
|
|
\ 00005B 12.... LCALL ?Subroutine22 & 0xFFFF
|
|
2017 *buf++ = LO_UINT16( *ptr );
|
|
2018 }
|
|
\ ??CrossCallReturnLabel_17:
|
|
\ 00005E 5001 JNC ??ZDO_BuildSimpleDescBuf_3
|
|
\ 000060 0B INC R3
|
|
\ ??ZDO_BuildSimpleDescBuf_3:
|
|
\ 000061 E8 MOV A,R0
|
|
\ 000062 2402 ADD A,#0x2
|
|
\ 000064 F8 MOV R0,A
|
|
\ 000065 5001 JNC ??ZDO_BuildSimpleDescBuf_4
|
|
\ 000067 09 INC R1
|
|
\ ??ZDO_BuildSimpleDescBuf_4:
|
|
\ 000068 0C INC R4
|
|
\ ??ZDO_BuildSimpleDescBuf_1:
|
|
\ 000069 8E82 MOV DPL,R6
|
|
\ 00006B 8F83 MOV DPH,R7
|
|
\ 00006D A3 INC DPTR
|
|
\ 00006E A3 INC DPTR
|
|
\ 00006F A3 INC DPTR
|
|
\ 000070 A3 INC DPTR
|
|
\ 000071 A3 INC DPTR
|
|
\ 000072 A3 INC DPTR
|
|
\ 000073 E0 MOVX A,@DPTR
|
|
\ 000074 FD MOV R5,A
|
|
\ 000075 EC MOV A,R4
|
|
\ 000076 C3 CLR C
|
|
\ 000077 9D SUBB A,R5
|
|
\ 000078 40E1 JC ??ZDO_BuildSimpleDescBuf_2
|
|
2019
|
|
2020 *buf++ = desc->AppNumOutClusters;
|
|
\ 00007A 8E82 MOV DPL,R6
|
|
\ 00007C 8F83 MOV DPH,R7
|
|
\ 00007E A3 INC DPTR
|
|
\ 00007F A3 INC DPTR
|
|
\ 000080 A3 INC DPTR
|
|
\ 000081 A3 INC DPTR
|
|
\ 000082 A3 INC DPTR
|
|
\ 000083 A3 INC DPTR
|
|
\ 000084 A3 INC DPTR
|
|
\ 000085 A3 INC DPTR
|
|
\ 000086 A3 INC DPTR
|
|
\ 000087 12.... LCALL ?Subroutine118 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_192:
|
|
\ 00008A A3 INC DPTR
|
|
\ 00008B AA82 MOV R2,DPL
|
|
\ 00008D AB83 MOV R3,DPH
|
|
2021 ptr = desc->pAppOutClusterList;
|
|
\ 00008F 8E82 MOV DPL,R6
|
|
\ 000091 8F83 MOV DPH,R7
|
|
\ 000093 A3 INC DPTR
|
|
\ 000094 A3 INC DPTR
|
|
\ 000095 A3 INC DPTR
|
|
\ 000096 12.... LCALL ?Subroutine83 & 0xFFFF
|
|
2022 for ( cnt = 0; cnt < desc->AppNumOutClusters; ptr++, cnt++ )
|
|
\ ??CrossCallReturnLabel_468:
|
|
\ 000099 7C00 MOV R4,#0x0
|
|
\ 00009B 800E SJMP ??ZDO_BuildSimpleDescBuf_5
|
|
2023 {
|
|
2024 *buf++ = HI_UINT16( *ptr );
|
|
\ ??ZDO_BuildSimpleDescBuf_6:
|
|
\ 00009D 12.... LCALL ?Subroutine22 & 0xFFFF
|
|
2025 *buf++ = LO_UINT16( *ptr );
|
|
2026 }
|
|
\ ??CrossCallReturnLabel_18:
|
|
\ 0000A0 5001 JNC ??ZDO_BuildSimpleDescBuf_7
|
|
\ 0000A2 0B INC R3
|
|
\ ??ZDO_BuildSimpleDescBuf_7:
|
|
\ 0000A3 E8 MOV A,R0
|
|
\ 0000A4 2402 ADD A,#0x2
|
|
\ 0000A6 F8 MOV R0,A
|
|
\ 0000A7 5001 JNC ??ZDO_BuildSimpleDescBuf_8
|
|
\ 0000A9 09 INC R1
|
|
\ ??ZDO_BuildSimpleDescBuf_8:
|
|
\ 0000AA 0C INC R4
|
|
\ ??ZDO_BuildSimpleDescBuf_5:
|
|
\ 0000AB 8E82 MOV DPL,R6
|
|
\ 0000AD 8F83 MOV DPH,R7
|
|
\ 0000AF A3 INC DPTR
|
|
\ 0000B0 A3 INC DPTR
|
|
\ 0000B1 A3 INC DPTR
|
|
\ 0000B2 A3 INC DPTR
|
|
\ 0000B3 A3 INC DPTR
|
|
\ 0000B4 A3 INC DPTR
|
|
\ 0000B5 A3 INC DPTR
|
|
\ 0000B6 A3 INC DPTR
|
|
\ 0000B7 A3 INC DPTR
|
|
\ 0000B8 E0 MOVX A,@DPTR
|
|
\ 0000B9 FD MOV R5,A
|
|
\ 0000BA EC MOV A,R4
|
|
\ 0000BB C3 CLR C
|
|
\ 0000BC 9D SUBB A,R5
|
|
\ 0000BD 40DE JC ??ZDO_BuildSimpleDescBuf_6
|
|
2027 }
|
|
\ 0000BF 02.... LJMP ??Subroutine222_0 & 0xFFFF
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine184:
|
|
\ 000000 A3 INC DPTR
|
|
\ 000001 REQUIRE ??Subroutine249_0
|
|
\ 000001 ; // Fall through to label ??Subroutine249_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine38:
|
|
\ 000000 A3 INC DPTR
|
|
\ 000001 A3 INC DPTR
|
|
\ 000002 F0 MOVX @DPTR,A
|
|
\ 000003 8C82 MOV DPL,R4
|
|
\ 000005 8D83 MOV DPH,R5
|
|
\ 000007 A3 INC DPTR
|
|
\ 000008 A3 INC DPTR
|
|
\ 000009 A3 INC DPTR
|
|
\ 00000A A3 INC DPTR
|
|
\ 00000B A3 INC DPTR
|
|
\ 00000C 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine27:
|
|
\ 000000 A3 INC DPTR
|
|
\ 000001 12.... LCALL ?Subroutine164 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_272:
|
|
\ 000004 A3 INC DPTR
|
|
\ 000005 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine22:
|
|
\ 000000 8882 MOV DPL,R0
|
|
\ 000002 8983 MOV DPH,R1
|
|
\ 000004 12.... LCALL ?Subroutine184 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_473:
|
|
\ 000007 12.... LCALL ?Subroutine164 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_273:
|
|
\ 00000A F0 MOVX @DPTR,A
|
|
\ 00000B EA MOV A,R2
|
|
\ 00000C 2402 ADD A,#0x2
|
|
\ 00000E FA MOV R2,A
|
|
\ 00000F 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine164:
|
|
\ 000000 12.... LCALL ?Subroutine208 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_332:
|
|
\ 000003 E0 MOVX A,@DPTR
|
|
\ 000004 8A82 MOV DPL,R2
|
|
\ 000006 8B83 MOV DPH,R3
|
|
\ 000008 A3 INC DPTR
|
|
\ 000009 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine118:
|
|
\ 000000 12.... LCALL ??Subroutine249_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_470:
|
|
\ 000003 F0 MOVX @DPTR,A
|
|
\ 000004 22 RET
|
|
2028
|
|
2029 /*********************************************************************
|
|
2030 * @fn ZDO_MatchEndDeviceBind()
|
|
2031 *
|
|
2032 * @brief
|
|
2033 *
|
|
2034 * Called to match end device binding requests
|
|
2035 *
|
|
2036 * @param bindReq - binding request information
|
|
2037 * @param SecurityUse - Security enable/disable
|
|
2038 *
|
|
2039 * @return none
|
|
2040 */
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine19:
|
|
\ 000000 F582 MOV DPL,A
|
|
\ 000002 E4 CLR A
|
|
\ 000003 3C ADDC A,R4
|
|
\ 000004 F583 MOV DPH,A
|
|
\ 000006 REQUIRE ??Subroutine238_0
|
|
\ 000006 ; // Fall through to label ??Subroutine238_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
2041 void ZDO_MatchEndDeviceBind( ZDEndDeviceBind_t *bindReq )
|
|
\ ZDO_MatchEndDeviceBind:
|
|
2042 {
|
|
\ 000000 REQUIRE ?V0
|
|
\ 000000 REQUIRE ?V1
|
|
\ 000000 REQUIRE ?V2
|
|
\ 000000 REQUIRE ?V4
|
|
\ 000000 REQUIRE ?V5
|
|
\ 000000 74F2 MOV A,#-0xe
|
|
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
|
\ 000005 ; Saved register size: 14
|
|
\ 000005 ; Auto size: 10
|
|
\ 000005 74F6 MOV A,#-0xa
|
|
\ 000007 12.... LCALL ?ALLOC_XSTACK8
|
|
\ 00000A 8A.. MOV ?V4,R2
|
|
\ 00000C 8B.. MOV ?V5,R3
|
|
2043 zAddrType_t dstAddr;
|
|
2044 uint8 sendRsp = FALSE;
|
|
\ 00000E 7E00 MOV R6,#0x0
|
|
2045 uint8 status;
|
|
2046
|
|
2047 // Is this the first request?
|
|
2048 if ( matchED == NULL )
|
|
\ 000010 90.... MOV DPTR,#matchED
|
|
\ 000013 12.... LCALL ??Subroutine255_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_503:
|
|
\ 000016 7045 JNZ ??ZDO_MatchEndDeviceBind_0
|
|
2049 {
|
|
2050 // Create match info structure
|
|
2051 matchED = (ZDMatchEndDeviceBind_t *)osal_mem_alloc( sizeof ( ZDMatchEndDeviceBind_t ) );
|
|
\ 000018 ; Setup parameters for call to function osal_mem_alloc
|
|
\ 000018 7A37 MOV R2,#0x37
|
|
\ 00001A 7B00 MOV R3,#0x0
|
|
\ 00001C 12.... LCALL `??osal_mem_alloc::?relay`; Banked call to: osal_mem_alloc
|
|
\ 00001F 90.... MOV DPTR,#matchED
|
|
\ 000022 12.... LCALL ??Subroutine238_0 & 0xFFFF
|
|
2052 if ( matchED )
|
|
\ ??CrossCallReturnLabel_425:
|
|
\ 000025 F9 MOV R1,A
|
|
\ 000026 EA MOV A,R2
|
|
\ 000027 49 ORL A,R1
|
|
\ 000028 6019 JZ ??ZDO_MatchEndDeviceBind_1
|
|
2053 {
|
|
2054 // Clear the structure
|
|
2055 osal_memset( (uint8 *)matchED, 0, sizeof ( ZDMatchEndDeviceBind_t ) );
|
|
\ 00002A ; Setup parameters for call to function osal_memset
|
|
\ 00002A 7C37 MOV R4,#0x37
|
|
\ 00002C 7D00 MOV R5,#0x0
|
|
\ 00002E 7900 MOV R1,#0x0
|
|
\ 000030 12.... LCALL `??osal_memset::?relay`; Banked call to: osal_memset
|
|
2056
|
|
2057 // Copy the first request's information
|
|
2058 if ( !ZDO_CopyMatchInfo( &(matchED->ed1), bindReq ) )
|
|
\ 000033 ; Setup parameters for call to function ZDO_CopyMatchInfo
|
|
\ 000033 AC.. MOV R4,?V4
|
|
\ 000035 AD.. MOV R5,?V5
|
|
\ 000037 90.... MOV DPTR,#matchED
|
|
\ 00003A 12.... LCALL ??Subroutine251_0 & 0xFFFF
|
|
2059 {
|
|
2060 status = ZDP_NO_ENTRY;
|
|
2061 sendRsp = TRUE;
|
|
2062 }
|
|
2063 }
|
|
\ ??CrossCallReturnLabel_479:
|
|
\ 00003D 12.... LCALL `??ZDO_CopyMatchInfo::?relay`; Banked call to: ZDO_CopyMatchInfo
|
|
\ 000040 E9 MOV A,R1
|
|
\ 000041 700B JNZ ??ZDO_MatchEndDeviceBind_2
|
|
2064 else
|
|
2065 {
|
|
2066 status = ZDP_NO_ENTRY;
|
|
\ ??ZDO_MatchEndDeviceBind_1:
|
|
\ 000043 85..82 MOV DPL,?XSP + 0
|
|
\ 000046 85..83 MOV DPH,?XSP + 1
|
|
\ 000049 7488 MOV A,#-0x78
|
|
\ 00004B 02.... LJMP ??ZDO_MatchEndDeviceBind_3 & 0xFFFF
|
|
2067 sendRsp = TRUE;
|
|
2068 }
|
|
2069
|
|
2070 if ( !sendRsp )
|
|
2071 {
|
|
2072 // Set into the correct state
|
|
2073 matchED->state = ZDMATCH_WAIT_REQ;
|
|
\ ??ZDO_MatchEndDeviceBind_2:
|
|
\ 00004E 12.... LCALL ?Subroutine102 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_584:
|
|
\ 000051 12.... LCALL ?Subroutine205 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_326:
|
|
\ 000054 7401 MOV A,#0x1
|
|
\ 000056 F0 MOVX @DPTR,A
|
|
2074
|
|
2075 // Setup the timeout
|
|
2076 APS_SetEndDeviceBindTimeout( AIB_MaxBindingTime, ZDO_EndDeviceBindMatchTimeoutCB );
|
|
\ 000057 ; Setup parameters for call to function APS_SetEndDeviceBindTimeout
|
|
\ 000057 12.... LCALL ?Subroutine114 & 0xFFFF
|
|
2077 }
|
|
2078 }
|
|
\ ??CrossCallReturnLabel_185:
|
|
\ 00005A 02.... LJMP ??ZDO_MatchEndDeviceBind_4 & 0xFFFF
|
|
2079 else
|
|
2080 {
|
|
2081 matchED->state = ZDMATCH_SENDING_BINDS;
|
|
\ ??ZDO_MatchEndDeviceBind_0:
|
|
\ 00005D E8 MOV A,R0
|
|
\ 00005E 242E ADD A,#0x2e
|
|
\ 000060 F582 MOV DPL,A
|
|
\ 000062 E4 CLR A
|
|
\ 000063 39 ADDC A,R1
|
|
\ 000064 F583 MOV DPH,A
|
|
\ 000066 7402 MOV A,#0x2
|
|
\ 000068 F0 MOVX @DPTR,A
|
|
2082
|
|
2083 // Copy the 2nd request's information
|
|
2084 if ( !ZDO_CopyMatchInfo( &(matchED->ed2), bindReq ) )
|
|
\ 000069 ; Setup parameters for call to function ZDO_CopyMatchInfo
|
|
\ 000069 AC.. MOV R4,?V4
|
|
\ 00006B AD.. MOV R5,?V5
|
|
\ 00006D 12.... LCALL ?Subroutine120 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_196:
|
|
\ 000070 12.... LCALL `??ZDO_CopyMatchInfo::?relay`; Banked call to: ZDO_CopyMatchInfo
|
|
\ 000073 E9 MOV A,R1
|
|
\ 000074 700B JNZ ??ZDO_MatchEndDeviceBind_5
|
|
2085 {
|
|
2086 status = ZDP_NO_ENTRY;
|
|
\ 000076 85..82 MOV DPL,?XSP + 0
|
|
\ 000079 85..83 MOV DPH,?XSP + 1
|
|
\ 00007C 7488 MOV A,#-0x78
|
|
\ 00007E F0 MOVX @DPTR,A
|
|
2087 sendRsp = TRUE;
|
|
\ 00007F 7E01 MOV R6,#0x1
|
|
2088 }
|
|
2089
|
|
2090 // Make a source match for ed1
|
|
2091 matchED->ed1numMatched = ZDO_CompareClusterLists(
|
|
2092 matchED->ed1.numOutClusters, matchED->ed1.outClusters,
|
|
2093 matchED->ed2.numInClusters, matchED->ed2.inClusters, ZDOBuildBuf );
|
|
\ ??ZDO_MatchEndDeviceBind_5:
|
|
\ 000081 ; Setup parameters for call to function ZDO_CompareClusterLists
|
|
\ 000081 75.... MOV ?V0,#ZDOBuildBuf & 0xff
|
|
\ 000084 75.... MOV ?V1,#(ZDOBuildBuf >> 8) & 0xff
|
|
\ 000087 78.. MOV R0,#?V0
|
|
\ 000089 12.... LCALL ?PUSH_XSTACK_I_TWO
|
|
\ 00008C 12.... LCALL ?Subroutine96 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_154:
|
|
\ 00008F F582 MOV DPL,A
|
|
\ 000091 E4 CLR A
|
|
\ 000092 38 ADDC A,R0
|
|
\ 000093 F583 MOV DPH,A
|
|
\ 000095 12.... LCALL ?PUSH_XSTACK8_X_TWO
|
|
\ 000098 12.... LCALL ?Subroutine102 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_585:
|
|
\ 00009B 2428 ADD A,#0x28
|
|
\ 00009D 12.... LCALL ?Subroutine147 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_237:
|
|
\ 0000A0 FC MOV R4,A
|
|
\ 0000A1 12.... LCALL ?Subroutine97 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_157:
|
|
\ 0000A4 12.... LCALL ?Subroutine87 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_138:
|
|
\ 0000A7 2414 ADD A,#0x14
|
|
\ 0000A9 12.... LCALL ?Subroutine146 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_234:
|
|
\ 0000AC 12.... LCALL ?DEALLOC_XSTACK8
|
|
\ 0000AF 12.... LCALL ?Subroutine98 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_487:
|
|
\ 0000B2 12.... LCALL ?Subroutine23 & 0xFFFF
|
|
2094 if ( matchED->ed1numMatched )
|
|
\ ??CrossCallReturnLabel_517:
|
|
\ 0000B5 2431 ADD A,#0x31
|
|
\ 0000B7 12.... LCALL ?Subroutine147 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_238:
|
|
\ 0000BA 6034 JZ ??ZDO_MatchEndDeviceBind_6
|
|
\ 0000BC ; Setup parameters for call to function osal_mem_alloc
|
|
\ 0000BC 12.... LCALL ?Subroutine55 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_76:
|
|
\ 0000BF 12.... LCALL ?Subroutine149 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_245:
|
|
\ 0000C2 2432 ADD A,#0x32
|
|
\ 0000C4 12.... LCALL ?Subroutine19 & 0xFFFF
|
|
2095 {
|
|
2096 // Save the match list
|
|
2097 matchED->ed1Matched = osal_mem_alloc( (short)(matchED->ed1numMatched * sizeof ( uint16 )) );
|
|
2098 if ( matchED->ed1Matched )
|
|
\ ??CrossCallReturnLabel_427:
|
|
\ 0000C7 EA MOV A,R2
|
|
\ 0000C8 4B ORL A,R3
|
|
\ 0000C9 601A JZ ??ZDO_MatchEndDeviceBind_7
|
|
2099 {
|
|
2100 osal_memcpy( matchED->ed1Matched, ZDOBuildBuf, (matchED->ed1numMatched * sizeof ( uint16 )) );
|
|
\ 0000CB ; Setup parameters for call to function osal_memcpy
|
|
\ 0000CB 75..00 MOV ?V2,#0x0
|
|
\ 0000CE 78.. MOV R0,#?V0
|
|
\ 0000D0 12.... LCALL ?PUSH_XSTACK_I_THREE
|
|
\ 0000D3 12.... LCALL ?Subroutine55 & 0xFFFF
|
|
2101 }
|
|
\ ??CrossCallReturnLabel_77:
|
|
\ 0000D6 FC MOV R4,A
|
|
\ 0000D7 E4 CLR A
|
|
\ 0000D8 33 RLC A
|
|
\ 0000D9 FD MOV R5,A
|
|
\ 0000DA 12.... LCALL ?Subroutine99 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_160:
|
|
\ 0000DD 12.... LCALL ?Subroutine53 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_533:
|
|
\ 0000E0 12.... LCALL ?DEALLOC_XSTACK8
|
|
\ 0000E3 800B SJMP ??ZDO_MatchEndDeviceBind_6
|
|
2102 else
|
|
2103 {
|
|
2104 // Allocation error, stop
|
|
2105 status = ZDP_NO_ENTRY;
|
|
\ ??ZDO_MatchEndDeviceBind_7:
|
|
\ 0000E5 85..82 MOV DPL,?XSP + 0
|
|
\ 0000E8 85..83 MOV DPH,?XSP + 1
|
|
\ 0000EB 7488 MOV A,#-0x78
|
|
\ 0000ED F0 MOVX @DPTR,A
|
|
2106 sendRsp = TRUE;
|
|
\ 0000EE 7E01 MOV R6,#0x1
|
|
2107 }
|
|
2108 }
|
|
2109
|
|
2110 // Make a source match for ed2
|
|
2111 matchED->ed2numMatched = ZDO_CompareClusterLists(
|
|
2112 matchED->ed2.numOutClusters, matchED->ed2.outClusters,
|
|
2113 matchED->ed1.numInClusters, matchED->ed1.inClusters, ZDOBuildBuf );
|
|
\ ??ZDO_MatchEndDeviceBind_6:
|
|
\ 0000F0 ; Setup parameters for call to function ZDO_CompareClusterLists
|
|
\ 0000F0 78.. MOV R0,#?V0
|
|
\ 0000F2 12.... LCALL ?PUSH_XSTACK_I_TWO
|
|
\ 0000F5 12.... LCALL ?Subroutine100 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_163:
|
|
\ 0000F8 F582 MOV DPL,A
|
|
\ 0000FA E4 CLR A
|
|
\ 0000FB 38 ADDC A,R0
|
|
\ 0000FC F583 MOV DPH,A
|
|
\ 0000FE 12.... LCALL ?PUSH_XSTACK8_X_TWO
|
|
\ 000101 12.... LCALL ?Subroutine102 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_586:
|
|
\ 000104 2411 ADD A,#0x11
|
|
\ 000106 12.... LCALL ?Subroutine147 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_239:
|
|
\ 000109 FC MOV R4,A
|
|
\ 00010A 12.... LCALL ?Subroutine101 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_166:
|
|
\ 00010D 12.... LCALL ?Subroutine87 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_139:
|
|
\ 000110 242B ADD A,#0x2b
|
|
\ 000112 12.... LCALL ?Subroutine146 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_235:
|
|
\ 000115 12.... LCALL ?DEALLOC_XSTACK8
|
|
\ 000118 E9 MOV A,R1
|
|
\ 000119 F8 MOV R0,A
|
|
\ 00011A 12.... LCALL ?Subroutine102 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_587:
|
|
\ 00011D 2434 ADD A,#0x34
|
|
\ 00011F 12.... LCALL ?Subroutine23 & 0xFFFF
|
|
2114 if ( matchED->ed2numMatched )
|
|
\ ??CrossCallReturnLabel_518:
|
|
\ 000122 2434 ADD A,#0x34
|
|
\ 000124 12.... LCALL ?Subroutine147 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_240:
|
|
\ 000127 6029 JZ ??ZDO_MatchEndDeviceBind_8
|
|
\ 000129 ; Setup parameters for call to function osal_mem_alloc
|
|
\ 000129 12.... LCALL ?Subroutine56 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_79:
|
|
\ 00012C 12.... LCALL ?Subroutine149 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_246:
|
|
\ 00012F 2435 ADD A,#0x35
|
|
\ 000131 12.... LCALL ?Subroutine19 & 0xFFFF
|
|
2115 {
|
|
2116 // Save the match list
|
|
2117 matchED->ed2Matched = osal_mem_alloc( (short)(matchED->ed2numMatched * sizeof ( uint16 )) );
|
|
2118 if ( matchED->ed2Matched )
|
|
\ ??CrossCallReturnLabel_428:
|
|
\ 000134 EA MOV A,R2
|
|
\ 000135 4B ORL A,R3
|
|
\ 000136 603B JZ ??ZDO_MatchEndDeviceBind_9
|
|
2119 {
|
|
2120 osal_memcpy( matchED->ed2Matched, ZDOBuildBuf, (matchED->ed2numMatched * sizeof ( uint16 )) );
|
|
\ 000138 ; Setup parameters for call to function osal_memcpy
|
|
\ 000138 75..00 MOV ?V2,#0x0
|
|
\ 00013B 78.. MOV R0,#?V0
|
|
\ 00013D 12.... LCALL ?PUSH_XSTACK_I_THREE
|
|
\ 000140 12.... LCALL ?Subroutine56 & 0xFFFF
|
|
2121 }
|
|
\ ??CrossCallReturnLabel_80:
|
|
\ 000143 FC MOV R4,A
|
|
\ 000144 E4 CLR A
|
|
\ 000145 33 RLC A
|
|
\ 000146 FD MOV R5,A
|
|
\ 000147 12.... LCALL ?Subroutine102 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_588:
|
|
\ 00014A 2435 ADD A,#0x35
|
|
\ 00014C 12.... LCALL ?Subroutine53 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_534:
|
|
\ 00014F 12.... LCALL ?DEALLOC_XSTACK8
|
|
2122 else
|
|
2123 {
|
|
2124 // Allocation error, stop
|
|
2125 status = ZDP_NO_ENTRY;
|
|
2126 sendRsp = TRUE;
|
|
2127 }
|
|
2128 }
|
|
2129
|
|
2130 if ( (sendRsp == FALSE) && (matchED->ed1numMatched || matchED->ed2numMatched) )
|
|
\ ??ZDO_MatchEndDeviceBind_8:
|
|
\ 000152 EE MOV A,R6
|
|
\ 000153 A2E0 MOV C,0xE0 /* A */.0
|
|
\ 000155 4025 JC ??ZDO_MatchEndDeviceBind_10
|
|
\ 000157 12.... LCALL ?Subroutine98 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_488:
|
|
\ 00015A 12.... LCALL ?Subroutine147 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_241:
|
|
\ 00015D 7008 JNZ ??ZDO_MatchEndDeviceBind_11
|
|
\ 00015F 90.... MOV DPTR,#matchED
|
|
\ 000162 12.... LCALL ?Subroutine61 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_90:
|
|
\ 000165 6015 JZ ??ZDO_MatchEndDeviceBind_10
|
|
2131 {
|
|
2132 // Do the first unbind/bind state
|
|
2133 ZDMatchSendState( ZDMATCH_REASON_START, ZDP_SUCCESS, 0 );
|
|
\ ??ZDO_MatchEndDeviceBind_11:
|
|
\ 000167 ; Setup parameters for call to function ZDMatchSendState
|
|
\ 000167 7B00 MOV R3,#0x0
|
|
\ 000169 7A00 MOV R2,#0x0
|
|
\ 00016B 7900 MOV R1,#0x0
|
|
\ 00016D 12.... LCALL `??ZDMatchSendState::?relay`; Banked call to: ZDMatchSendState
|
|
2134 }
|
|
2135 else
|
|
2136 {
|
|
2137 status = ZDP_NO_MATCH;
|
|
2138 sendRsp = TRUE;
|
|
2139 }
|
|
2140 }
|
|
2141
|
|
2142 if ( sendRsp )
|
|
\ 000170 02.... LJMP ??ZDO_MatchEndDeviceBind_4 & 0xFFFF
|
|
\ ??ZDO_MatchEndDeviceBind_9:
|
|
\ 000173 85..82 MOV DPL,?XSP + 0
|
|
\ 000176 85..83 MOV DPH,?XSP + 1
|
|
\ 000179 7488 MOV A,#-0x78
|
|
\ 00017B F0 MOVX @DPTR,A
|
|
\ ??ZDO_MatchEndDeviceBind_10:
|
|
\ 00017C 85..82 MOV DPL,?XSP + 0
|
|
\ 00017F 85..83 MOV DPH,?XSP + 1
|
|
\ 000182 7486 MOV A,#-0x7a
|
|
\ ??ZDO_MatchEndDeviceBind_3:
|
|
\ 000184 F0 MOVX @DPTR,A
|
|
2143 {
|
|
2144 // send response to this requester
|
|
2145 dstAddr.addrMode = Addr16Bit;
|
|
\ 000185 7409 MOV A,#0x9
|
|
\ 000187 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 00018A 7402 MOV A,#0x2
|
|
\ 00018C 12.... LCALL ?Subroutine163 & 0xFFFF
|
|
2146 dstAddr.addr.shortAddr = bindReq->srcAddr;
|
|
\ ??CrossCallReturnLabel_271:
|
|
\ 00018F 12.... LCALL ??Subroutine246_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_463:
|
|
\ 000192 7401 MOV A,#0x1
|
|
\ 000194 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000197 12.... LCALL ??Subroutine289_0 & 0xFFFF
|
|
2147 ZDP_EndDeviceBindRsp( bindReq->TransSeq, &dstAddr, status, bindReq->SecurityUse );
|
|
\ ??CrossCallReturnLabel_720:
|
|
\ 00019A ; Setup parameters for call to function ZDP_SendData
|
|
\ 00019A 85..82 MOV DPL,?V4
|
|
\ 00019D 85..83 MOV DPH,?V5
|
|
\ 0001A0 A3 INC DPTR
|
|
\ 0001A1 12.... LCALL ??Subroutine244_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_450:
|
|
\ 0001A4 12.... LCALL ?PUSH_XSTACK_I_ONE
|
|
\ 0001A7 7401 MOV A,#0x1
|
|
\ 0001A9 12.... LCALL ?XSTACK_DISP100_8
|
|
\ 0001AC 88.. MOV ?V0,R0
|
|
\ 0001AE 89.. MOV ?V1,R1
|
|
\ 0001B0 78.. MOV R0,#?V0
|
|
\ 0001B2 12.... LCALL ?PUSH_XSTACK_I_TWO
|
|
\ 0001B5 75..20 MOV ?V0,#0x20
|
|
\ 0001B8 75..80 MOV ?V1,#-0x80
|
|
\ 0001BB 78.. MOV R0,#?V0
|
|
\ 0001BD 12.... LCALL ?PUSH_XSTACK_I_TWO
|
|
\ 0001C0 7901 MOV R1,#0x1
|
|
\ 0001C2 7406 MOV A,#0x6
|
|
\ 0001C4 12.... LCALL ?XSTACK_DISP102_8
|
|
\ 0001C7 AA.. MOV R2,?V4
|
|
\ 0001C9 AB.. MOV R3,?V5
|
|
\ 0001CB 12.... LCALL ?Subroutine158 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_263:
|
|
\ 0001CE 12.... LCALL ?DEALLOC_XSTACK8
|
|
2148
|
|
2149 if ( matchED->state == ZDMATCH_SENDING_BINDS )
|
|
\ 0001D1 12.... LCALL ?Subroutine75 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_116:
|
|
\ 0001D4 7042 JNZ ??ZDO_MatchEndDeviceBind_12
|
|
2150 {
|
|
2151 // send response to first requester
|
|
2152 dstAddr.addrMode = Addr16Bit;
|
|
\ 0001D6 7409 MOV A,#0x9
|
|
\ 0001D8 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 0001DB 7402 MOV A,#0x2
|
|
\ 0001DD 12.... LCALL ?Subroutine49 & 0xFFFF
|
|
2153 dstAddr.addr.shortAddr = matchED->ed1.srcAddr;
|
|
2154 ZDP_EndDeviceBindRsp( matchED->ed1.TransSeq, &dstAddr, status, matchED->ed1.SecurityUse );
|
|
2155 }
|
|
\ ??CrossCallReturnLabel_71:
|
|
\ 0001E0 F583 MOV DPH,A
|
|
\ 0001E2 8882 MOV DPL,R0
|
|
\ 0001E4 12.... LCALL ??Subroutine246_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_464:
|
|
\ 0001E7 7401 MOV A,#0x1
|
|
\ 0001E9 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 0001EC 12.... LCALL ?Subroutine14 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_10:
|
|
\ 0001EF 12.... LCALL ?PUSH_XSTACK_I_ONE
|
|
\ 0001F2 7401 MOV A,#0x1
|
|
\ 0001F4 12.... LCALL ?XSTACK_DISP100_8
|
|
\ 0001F7 88.. MOV ?V0,R0
|
|
\ 0001F9 89.. MOV ?V1,R1
|
|
\ 0001FB 78.. MOV R0,#?V0
|
|
\ 0001FD 12.... LCALL ?PUSH_XSTACK_I_TWO
|
|
\ 000200 75..20 MOV ?V0,#0x20
|
|
\ 000203 75..80 MOV ?V1,#-0x80
|
|
\ 000206 78.. MOV R0,#?V0
|
|
\ 000208 12.... LCALL ?PUSH_XSTACK_I_TWO
|
|
\ 00020B 7901 MOV R1,#0x1
|
|
\ 00020D 7406 MOV A,#0x6
|
|
\ 00020F 12.... LCALL ?XSTACK_DISP102_8
|
|
\ 000212 12.... LCALL ?Subroutine107 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_175:
|
|
\ 000215 12.... LCALL ?DEALLOC_XSTACK8
|
|
2156
|
|
2157 // Process ended - release memory used
|
|
2158 ZDO_RemoveMatchMemory();
|
|
\ ??ZDO_MatchEndDeviceBind_12:
|
|
\ 000218 ; Setup parameters for call to function ZDO_RemoveMatchMemory
|
|
\ 000218 12.... LCALL `??ZDO_RemoveMatchMemory::?relay`; Banked call to: ZDO_RemoveMatchMemory
|
|
2159 }
|
|
2160 }
|
|
\ ??ZDO_MatchEndDeviceBind_4:
|
|
\ 00021B 740A MOV A,#0xa
|
|
\ 00021D 02.... LJMP ?Subroutine5 & 0xFFFF
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine149:
|
|
\ 000000 FA MOV R2,A
|
|
\ 000001 E4 CLR A
|
|
\ 000002 33 RLC A
|
|
\ 000003 FB MOV R3,A
|
|
\ 000004 12.... LCALL `??osal_mem_alloc::?relay`; Banked call to: osal_mem_alloc
|
|
\ 000007 90.... MOV DPTR,#matchED
|
|
\ 00000A E0 MOVX A,@DPTR
|
|
\ 00000B FC MOV R4,A
|
|
\ 00000C A3 INC DPTR
|
|
\ 00000D E0 MOVX A,@DPTR
|
|
\ 00000E CC XCH A,R4
|
|
\ 00000F 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine146:
|
|
\ 000000 12.... LCALL ?Subroutine213 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_341:
|
|
\ 000003 F9 MOV R1,A
|
|
\ 000004 12.... LCALL `??ZDO_CompareClusterLists::?relay`; Banked call to: ZDO_CompareClusterLists
|
|
\ 000007 7404 MOV A,#0x4
|
|
\ 000009 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine98:
|
|
\ 000000 90.... MOV DPTR,#matchED
|
|
\ 000003 REQUIRE ??Subroutine252_0
|
|
\ 000003 ; // Fall through to label ??Subroutine252_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine252_0:
|
|
\ 000000 12.... LCALL ??Subroutine253_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_603:
|
|
\ 000003 2431 ADD A,#0x31
|
|
\ 000005 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine87:
|
|
\ 000000 F582 MOV DPL,A
|
|
\ 000002 E4 CLR A
|
|
\ 000003 38 ADDC A,R0
|
|
\ 000004 F583 MOV DPH,A
|
|
\ 000006 12.... LCALL ?Subroutine176 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_540:
|
|
\ 000009 12.... LCALL ?Subroutine181 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_597:
|
|
\ 00000C 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine181:
|
|
\ 000000 90.... MOV DPTR,#matchED
|
|
\ 000003 REQUIRE ??Subroutine253_0
|
|
\ 000003 ; // Fall through to label ??Subroutine253_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine23:
|
|
\ 000000 F582 MOV DPL,A
|
|
\ 000002 E4 CLR A
|
|
\ 000003 38 ADDC A,R0
|
|
\ 000004 F583 MOV DPH,A
|
|
\ 000006 REQUIRE ??Subroutine256_0
|
|
\ 000006 ; // Fall through to label ??Subroutine256_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine256_0:
|
|
\ 000000 12.... LCALL ?Subroutine162 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_520:
|
|
\ 000003 C8 XCH A,R0
|
|
\ 000004 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine162:
|
|
\ 000000 E9 MOV A,R1
|
|
\ 000001 REQUIRE ??Subroutine257_0
|
|
\ 000001 ; // Fall through to label ??Subroutine257_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine257_0:
|
|
\ 000000 F0 MOVX @DPTR,A
|
|
\ 000001 ; Setup parameters for call to function ZDP_SendData
|
|
\ 000001 ; Setup parameters for call to function ZDP_SendData
|
|
\ 000001 ; Setup parameters for call to function ZDP_SendData
|
|
\ 000001 90.... MOV DPTR,#matchED
|
|
\ 000004 12.... LCALL ?Subroutine217 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_643:
|
|
\ 000007 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine101:
|
|
\ 000000 12.... LCALL ?Subroutine181 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_602:
|
|
\ 000003 242C ADD A,#0x2c
|
|
\ 000005 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine100:
|
|
\ 000000 12.... LCALL ?Subroutine181 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_601:
|
|
\ 000003 2412 ADD A,#0x12
|
|
\ 000005 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine99:
|
|
\ 000000 12.... LCALL ?Subroutine181 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_600:
|
|
\ 000003 2432 ADD A,#0x32
|
|
\ 000005 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine97:
|
|
\ 000000 12.... LCALL ?Subroutine181 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_599:
|
|
\ 000003 2415 ADD A,#0x15
|
|
\ 000005 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine96:
|
|
\ 000000 12.... LCALL ?Subroutine181 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_598:
|
|
\ 000003 2429 ADD A,#0x29
|
|
\ 000005 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine53:
|
|
\ 000000 F582 MOV DPL,A
|
|
\ 000002 E4 CLR A
|
|
\ 000003 38 ADDC A,R0
|
|
\ 000004 REQUIRE ??Subroutine260_0
|
|
\ 000004 ; // Fall through to label ??Subroutine260_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine260_0:
|
|
\ 000000 F583 MOV DPH,A
|
|
\ 000002 REQUIRE ??Subroutine261_0
|
|
\ 000002 ; // Fall through to label ??Subroutine261_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine120:
|
|
\ 000000 90.... MOV DPTR,#matchED
|
|
\ 000003 E0 MOVX A,@DPTR
|
|
\ 000004 2417 ADD A,#0x17
|
|
\ 000006 FA MOV R2,A
|
|
\ 000007 A3 INC DPTR
|
|
\ 000008 E0 MOVX A,@DPTR
|
|
\ 000009 3400 ADDC A,#0x0
|
|
\ 00000B FB MOV R3,A
|
|
\ 00000C 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine114:
|
|
\ 000000 7C.. MOV R4,#`??ZDO_EndDeviceBindMatchTimeoutCB::?relay` & 0xff
|
|
\ 000002 7D.. MOV R5,#(`??ZDO_EndDeviceBindMatchTimeoutCB::?relay` >> 8) & 0xff
|
|
\ 000004 90.... MOV DPTR,#AIB_MaxBindingTime
|
|
\ 000007 12.... LCALL ?Subroutine176 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_542:
|
|
\ 00000A 12.... LCALL `??APS_SetEndDeviceBindTimeout::?relay`; Banked call to: APS_SetEndDeviceBindTimeout
|
|
\ 00000D 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine107:
|
|
\ 000000 90.... MOV DPTR,#matchED
|
|
\ 000003 12.... LCALL ?Subroutine176 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_541:
|
|
\ 000006 12.... LCALL ??Subroutine241_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_438:
|
|
\ 000009 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine75:
|
|
\ 000000 12.... LCALL ?Subroutine181 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_596:
|
|
\ 000003 12.... LCALL ?Subroutine205 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_327:
|
|
\ 000006 E0 MOVX A,@DPTR
|
|
\ 000007 6402 XRL A,#0x2
|
|
\ 000009 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine205:
|
|
\ 000000 242E ADD A,#0x2e
|
|
\ 000002 F582 MOV DPL,A
|
|
\ 000004 E4 CLR A
|
|
\ 000005 38 ADDC A,R0
|
|
\ 000006 F583 MOV DPH,A
|
|
\ 000008 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine61:
|
|
\ 000000 12.... LCALL ?Subroutine179 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_295:
|
|
\ 000003 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine179:
|
|
\ 000000 12.... LCALL ?Subroutine210 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_607:
|
|
\ 000003 2434 ADD A,#0x34
|
|
\ 000005 12.... LCALL ?Subroutine213 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_345:
|
|
\ 000008 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine56:
|
|
\ 000000 90.... MOV DPTR,#matchED
|
|
\ 000003 12.... LCALL ?Subroutine179 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_294:
|
|
\ 000006 25E0 ADD A,0xE0 /* A */
|
|
\ 000008 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine55:
|
|
\ 000000 12.... LCALL ?Subroutine178 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_292:
|
|
\ 000003 25E0 ADD A,0xE0 /* A */
|
|
\ 000005 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine178:
|
|
\ 000000 90.... MOV DPTR,#matchED
|
|
\ 000003 12.... LCALL ?Subroutine210 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_606:
|
|
\ 000006 2431 ADD A,#0x31
|
|
\ 000008 12.... LCALL ?Subroutine213 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_344:
|
|
\ 00000B 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine49:
|
|
\ 000000 12.... LCALL ??Subroutine257_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_522:
|
|
\ 000003 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine14:
|
|
\ 000000 E8 MOV A,R0
|
|
\ 000001 F0 MOVX @DPTR,A
|
|
\ 000002 A3 INC DPTR
|
|
\ 000003 12.... LCALL ?Subroutine162 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_521:
|
|
\ 000006 F583 MOV DPH,A
|
|
\ 000008 8882 MOV DPL,R0
|
|
\ 00000A A3 INC DPTR
|
|
\ 00000B E0 MOVX A,@DPTR
|
|
\ 00000C F5.. MOV ?V0,A
|
|
\ 00000E 78.. MOV R0,#?V0
|
|
\ 000010 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine102:
|
|
\ 000000 90.... MOV DPTR,#matchED
|
|
\ 000003 REQUIRE ??Subroutine270_0
|
|
\ 000003 ; // Fall through to label ??Subroutine270_0
|
|
2161
|
|
2162 /*********************************************************************
|
|
2163 * @fn ZDO_RemoveMatchMemory()
|
|
2164 *
|
|
2165 * @brief Called to clear the memory used for the end device bind.
|
|
2166 *
|
|
2167 * @param none
|
|
2168 *
|
|
2169 * @return none
|
|
2170 */
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
2171 static void ZDO_RemoveMatchMemory( void )
|
|
\ ZDO_RemoveMatchMemory:
|
|
2172 {
|
|
\ 000000 C082 PUSH DPL
|
|
\ 000002 C083 PUSH DPH
|
|
\ 000004 ; Saved register size: 2
|
|
\ 000004 ; Auto size: 0
|
|
2173 if ( matchED != NULL )
|
|
\ 000004 90.... MOV DPTR,#matchED
|
|
\ 000007 12.... LCALL ??Subroutine255_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_504:
|
|
\ 00000A 6067 JZ ??ZDO_RemoveMatchMemory_0
|
|
2174 {
|
|
2175 if ( matchED->ed2Matched != NULL )
|
|
\ 00000C E8 MOV A,R0
|
|
\ 00000D 2435 ADD A,#0x35
|
|
\ 00000F F582 MOV DPL,A
|
|
\ 000011 E4 CLR A
|
|
\ 000012 39 ADDC A,R1
|
|
\ 000013 12.... LCALL ??Subroutine254_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_508:
|
|
\ 000016 6008 JZ ??CrossCallReturnLabel_395
|
|
2176 {
|
|
2177 osal_mem_free( matchED->ed2Matched );
|
|
\ 000018 ; Setup parameters for call to function osal_mem_free
|
|
\ 000018 12.... LCALL ?Subroutine102 & 0xFFFF
|
|
2178 }
|
|
\ ??CrossCallReturnLabel_589:
|
|
\ 00001B 2435 ADD A,#0x35
|
|
\ 00001D 12.... LCALL ?Subroutine52 & 0xFFFF
|
|
2179 if ( matchED->ed1Matched != NULL )
|
|
\ ??CrossCallReturnLabel_395:
|
|
\ 000020 12.... LCALL ?Subroutine99 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_161:
|
|
\ 000023 12.... LCALL ?Subroutine51 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_512:
|
|
\ 000026 6006 JZ ??CrossCallReturnLabel_396
|
|
2180 {
|
|
2181 osal_mem_free( matchED->ed1Matched );
|
|
\ 000028 ; Setup parameters for call to function osal_mem_free
|
|
\ 000028 12.... LCALL ?Subroutine99 & 0xFFFF
|
|
2182 }
|
|
\ ??CrossCallReturnLabel_162:
|
|
\ 00002B 12.... LCALL ?Subroutine52 & 0xFFFF
|
|
2183 if ( matchED->ed1.inClusters != NULL )
|
|
\ ??CrossCallReturnLabel_396:
|
|
\ 00002E 12.... LCALL ?Subroutine100 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_164:
|
|
\ 000031 12.... LCALL ?Subroutine51 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_513:
|
|
\ 000034 6006 JZ ??CrossCallReturnLabel_397
|
|
2184 {
|
|
2185 osal_mem_free( matchED->ed1.inClusters );
|
|
\ 000036 ; Setup parameters for call to function osal_mem_free
|
|
\ 000036 12.... LCALL ?Subroutine100 & 0xFFFF
|
|
2186 }
|
|
\ ??CrossCallReturnLabel_165:
|
|
\ 000039 12.... LCALL ?Subroutine52 & 0xFFFF
|
|
2187 if ( matchED->ed1.outClusters != NULL )
|
|
\ ??CrossCallReturnLabel_397:
|
|
\ 00003C 12.... LCALL ?Subroutine97 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_158:
|
|
\ 00003F 12.... LCALL ?Subroutine51 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_514:
|
|
\ 000042 6006 JZ ??CrossCallReturnLabel_398
|
|
2188 {
|
|
2189 osal_mem_free( matchED->ed1.outClusters );
|
|
\ 000044 ; Setup parameters for call to function osal_mem_free
|
|
\ 000044 12.... LCALL ?Subroutine97 & 0xFFFF
|
|
2190 }
|
|
\ ??CrossCallReturnLabel_159:
|
|
\ 000047 12.... LCALL ?Subroutine52 & 0xFFFF
|
|
2191 if ( matchED->ed2.inClusters != NULL )
|
|
\ ??CrossCallReturnLabel_398:
|
|
\ 00004A 12.... LCALL ?Subroutine96 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_155:
|
|
\ 00004D 12.... LCALL ?Subroutine51 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_515:
|
|
\ 000050 6006 JZ ??CrossCallReturnLabel_399
|
|
2192 {
|
|
2193 osal_mem_free( matchED->ed2.inClusters );
|
|
\ 000052 ; Setup parameters for call to function osal_mem_free
|
|
\ 000052 12.... LCALL ?Subroutine96 & 0xFFFF
|
|
2194 }
|
|
\ ??CrossCallReturnLabel_156:
|
|
\ 000055 12.... LCALL ?Subroutine52 & 0xFFFF
|
|
2195 if ( matchED->ed2.outClusters != NULL )
|
|
\ ??CrossCallReturnLabel_399:
|
|
\ 000058 12.... LCALL ?Subroutine101 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_167:
|
|
\ 00005B 12.... LCALL ?Subroutine51 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_516:
|
|
\ 00005E 6006 JZ ??CrossCallReturnLabel_400
|
|
2196 {
|
|
2197 osal_mem_free( matchED->ed2.outClusters );
|
|
\ 000060 ; Setup parameters for call to function osal_mem_free
|
|
\ 000060 12.... LCALL ?Subroutine101 & 0xFFFF
|
|
2198 }
|
|
\ ??CrossCallReturnLabel_168:
|
|
\ 000063 12.... LCALL ?Subroutine52 & 0xFFFF
|
|
2199
|
|
2200 osal_mem_free( matchED );
|
|
\ ??CrossCallReturnLabel_400:
|
|
\ 000066 ; Setup parameters for call to function osal_mem_free
|
|
\ 000066 90.... MOV DPTR,#matchED
|
|
\ 000069 12.... LCALL ??Subroutine237_0 & 0xFFFF
|
|
2201 matchED = (ZDMatchEndDeviceBind_t *)NULL;
|
|
\ ??CrossCallReturnLabel_409:
|
|
\ 00006C 90.... MOV DPTR,#matchED
|
|
\ 00006F E4 CLR A
|
|
\ 000070 F0 MOVX @DPTR,A
|
|
\ 000071 A3 INC DPTR
|
|
\ 000072 F0 MOVX @DPTR,A
|
|
2202 }
|
|
2203 }
|
|
\ ??ZDO_RemoveMatchMemory_0:
|
|
\ 000073 REQUIRE ?Subroutine0
|
|
\ 000073 ; // Fall through to label ?Subroutine0
|
|
2204
|
|
2205 /*********************************************************************
|
|
2206 * @fn ZDO_CopyMatchInfo()
|
|
2207 *
|
|
2208 * @brief Called to copy memory used for the end device bind.
|
|
2209 *
|
|
2210 * @param srcReq - source information
|
|
2211 * @param dstReq - destination location
|
|
2212 *
|
|
2213 * @return TRUE if copy was successful.
|
|
2214 */
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
2215 static uint8 ZDO_CopyMatchInfo( ZDEndDeviceBind_t *destReq, ZDEndDeviceBind_t *srcReq )
|
|
\ ZDO_CopyMatchInfo:
|
|
2216 {
|
|
\ 000000 REQUIRE ?V0
|
|
\ 000000 REQUIRE ?V1
|
|
\ 000000 REQUIRE ?V2
|
|
\ 000000 REQUIRE ?V3
|
|
\ 000000 REQUIRE ?V4
|
|
\ 000000 REQUIRE ?V5
|
|
\ 000000 74F2 MOV A,#-0xe
|
|
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
|
\ 000005 ; Saved register size: 14
|
|
\ 000005 ; Auto size: 0
|
|
\ 000005 EA MOV A,R2
|
|
\ 000006 FE MOV R6,A
|
|
\ 000007 EB MOV A,R3
|
|
\ 000008 FF MOV R7,A
|
|
\ 000009 8C.. MOV ?V4,R4
|
|
\ 00000B 8D.. MOV ?V5,R5
|
|
2217 uint8 allOK = TRUE;
|
|
\ 00000D 75..01 MOV ?V3,#0x1
|
|
2218
|
|
2219 // Copy bind information into the match info structure
|
|
2220 osal_memcpy( (uint8 *)destReq, srcReq, sizeof ( ZDEndDeviceBind_t ) );
|
|
\ 000010 ; Setup parameters for call to function osal_memcpy
|
|
\ 000010 8C.. MOV ?V0,R4
|
|
\ 000012 8D.. MOV ?V1,R5
|
|
\ 000014 75..00 MOV ?V2,#0x0
|
|
\ 000017 78.. MOV R0,#?V0
|
|
\ 000019 12.... LCALL ?PUSH_XSTACK_I_THREE
|
|
\ 00001C 7C17 MOV R4,#0x17
|
|
\ 00001E 7D00 MOV R5,#0x0
|
|
\ 000020 12.... LCALL ??Subroutine274_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_624:
|
|
\ 000023 12.... LCALL ?DEALLOC_XSTACK8
|
|
2221
|
|
2222 // Initialize the destination cluster pointers
|
|
2223 destReq->inClusters = NULL;
|
|
\ 000026 EE MOV A,R6
|
|
\ 000027 2412 ADD A,#0x12
|
|
\ 000029 12.... LCALL ??Subroutine259_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_529:
|
|
\ 00002C F0 MOVX @DPTR,A
|
|
\ 00002D A3 INC DPTR
|
|
\ 00002E F0 MOVX @DPTR,A
|
|
2224 destReq->outClusters = NULL;
|
|
\ 00002F EE MOV A,R6
|
|
\ 000030 2415 ADD A,#0x15
|
|
\ 000032 12.... LCALL ??Subroutine259_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_530:
|
|
\ 000035 F0 MOVX @DPTR,A
|
|
\ 000036 A3 INC DPTR
|
|
\ 000037 F0 MOVX @DPTR,A
|
|
2225
|
|
2226 // Copy input cluster IDs
|
|
2227 if ( srcReq->numInClusters )
|
|
\ 000038 E5.. MOV A,?V4
|
|
\ 00003A 2411 ADD A,#0x11
|
|
\ 00003C 12.... LCALL ?Subroutine199 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_321:
|
|
\ 00003F 602A JZ ??ZDO_CopyMatchInfo_0
|
|
\ 000041 ; Setup parameters for call to function osal_mem_alloc
|
|
\ 000041 12.... LCALL ?Subroutine128 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_209:
|
|
\ 000044 12.... LCALL ??Subroutine228_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_368:
|
|
\ 000047 12.... LCALL ??Subroutine262_0 & 0xFFFF
|
|
2228 {
|
|
2229 destReq->inClusters = osal_mem_alloc( (short)(srcReq->numInClusters * sizeof ( uint16 )) );
|
|
2230 if ( destReq->inClusters )
|
|
\ ??CrossCallReturnLabel_546:
|
|
\ 00004A 601C JZ ??ZDO_CopyMatchInfo_1
|
|
2231 {
|
|
2232 // Copy the clusters
|
|
2233 osal_memcpy( (uint8*)(destReq->inClusters), (uint8 *)(srcReq->inClusters),
|
|
2234 (srcReq->numInClusters * sizeof ( uint16 )) );
|
|
\ 00004C ; Setup parameters for call to function osal_memcpy
|
|
\ 00004C E5.. MOV A,?V4
|
|
\ 00004E 2412 ADD A,#0x12
|
|
\ 000050 12.... LCALL ?Subroutine111 & 0xFFFF
|
|
2235 }
|
|
\ ??CrossCallReturnLabel_183:
|
|
\ 000053 12.... LCALL ?PUSH_XSTACK_I_THREE
|
|
\ 000056 E5.. MOV A,?V4
|
|
\ 000058 2411 ADD A,#0x11
|
|
\ 00005A 12.... LCALL ?Subroutine122 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_200:
|
|
\ 00005D 12.... LCALL ??Subroutine228_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_369:
|
|
\ 000060 12.... LCALL ??Subroutine260_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_535:
|
|
\ 000063 12.... LCALL ?DEALLOC_XSTACK8
|
|
\ 000066 8003 SJMP ??ZDO_CopyMatchInfo_0
|
|
2236 else
|
|
2237 {
|
|
2238 allOK = FALSE;
|
|
\ ??ZDO_CopyMatchInfo_1:
|
|
\ 000068 75..00 MOV ?V3,#0x0
|
|
2239 }
|
|
2240 }
|
|
2241
|
|
2242 // Copy output cluster IDs
|
|
2243 if ( srcReq->numOutClusters )
|
|
\ ??ZDO_CopyMatchInfo_0:
|
|
\ 00006B E5.. MOV A,?V4
|
|
\ 00006D 2414 ADD A,#0x14
|
|
\ 00006F 12.... LCALL ?Subroutine199 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_322:
|
|
\ 000072 6025 JZ ??ZDO_CopyMatchInfo_2
|
|
\ 000074 ; Setup parameters for call to function osal_mem_alloc
|
|
\ 000074 12.... LCALL ?Subroutine128 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_210:
|
|
\ 000077 12.... LCALL ??Subroutine258_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_523:
|
|
\ 00007A 12.... LCALL ??Subroutine262_0 & 0xFFFF
|
|
2244 {
|
|
2245 destReq->outClusters = osal_mem_alloc( (short)(srcReq->numOutClusters * sizeof ( uint16 )) );
|
|
2246 if ( destReq->outClusters )
|
|
\ ??CrossCallReturnLabel_547:
|
|
\ 00007D 6041 JZ ??ZDO_CopyMatchInfo_3
|
|
2247 {
|
|
2248 // Copy the clusters
|
|
2249 osal_memcpy( (uint8 *)(destReq->outClusters), (uint8 *)(srcReq->outClusters),
|
|
2250 (srcReq->numOutClusters * sizeof ( uint16 )) );
|
|
\ 00007F ; Setup parameters for call to function osal_memcpy
|
|
\ 00007F E5.. MOV A,?V4
|
|
\ 000081 2415 ADD A,#0x15
|
|
\ 000083 12.... LCALL ?Subroutine111 & 0xFFFF
|
|
2251 }
|
|
\ ??CrossCallReturnLabel_184:
|
|
\ 000086 12.... LCALL ?PUSH_XSTACK_I_THREE
|
|
\ 000089 E5.. MOV A,?V4
|
|
\ 00008B 2414 ADD A,#0x14
|
|
\ 00008D 12.... LCALL ?Subroutine122 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_201:
|
|
\ 000090 12.... LCALL ??Subroutine258_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_524:
|
|
\ 000093 12.... LCALL ??Subroutine260_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_536:
|
|
\ 000096 12.... LCALL ?DEALLOC_XSTACK8
|
|
2252 else
|
|
2253 {
|
|
2254 allOK = FALSE;
|
|
2255 }
|
|
2256 }
|
|
2257
|
|
2258 if ( allOK == FALSE )
|
|
\ ??ZDO_CopyMatchInfo_2:
|
|
\ 000099 E5.. MOV A,?V3
|
|
\ 00009B A2E0 MOV C,0xE0 /* A */.0
|
|
\ 00009D 401C JC ??CrossCallReturnLabel_402
|
|
2259 {
|
|
2260 if ( destReq->inClusters != NULL )
|
|
\ ??ZDO_CopyMatchInfo_4:
|
|
\ 00009F 12.... LCALL ?Subroutine156 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_371:
|
|
\ 0000A2 12.... LCALL ??Subroutine254_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_509:
|
|
\ 0000A5 6006 JZ ??CrossCallReturnLabel_401
|
|
2261 {
|
|
2262 osal_mem_free( destReq->inClusters );
|
|
\ 0000A7 ; Setup parameters for call to function osal_mem_free
|
|
\ 0000A7 12.... LCALL ?Subroutine156 & 0xFFFF
|
|
2263 }
|
|
\ ??CrossCallReturnLabel_372:
|
|
\ 0000AA 12.... LCALL ??Subroutine236_0 & 0xFFFF
|
|
2264 if ( destReq->outClusters != NULL )
|
|
\ ??CrossCallReturnLabel_401:
|
|
\ 0000AD 12.... LCALL ?Subroutine157 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_525:
|
|
\ 0000B0 12.... LCALL ??Subroutine254_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_510:
|
|
\ 0000B3 6006 JZ ??CrossCallReturnLabel_402
|
|
2265 {
|
|
2266 osal_mem_free( destReq->outClusters );
|
|
\ 0000B5 ; Setup parameters for call to function osal_mem_free
|
|
\ 0000B5 12.... LCALL ?Subroutine157 & 0xFFFF
|
|
2267 }
|
|
2268 }
|
|
\ ??CrossCallReturnLabel_526:
|
|
\ 0000B8 12.... LCALL ??Subroutine236_0 & 0xFFFF
|
|
2269
|
|
2270 return ( allOK );
|
|
\ ??CrossCallReturnLabel_402:
|
|
\ 0000BB A9.. MOV R1,?V3
|
|
\ 0000BD 02.... LJMP ??Subroutine292_0 & 0xFFFF
|
|
\ ??ZDO_CopyMatchInfo_3:
|
|
\ 0000C0 75..00 MOV ?V3,#0x0
|
|
\ 0000C3 80DA SJMP ??ZDO_CopyMatchInfo_4
|
|
2271 }
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine157:
|
|
\ 000000 EE MOV A,R6
|
|
\ 000001 REQUIRE ??Subroutine258_0
|
|
\ 000001 ; // Fall through to label ??Subroutine258_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine258_0:
|
|
\ 000000 2415 ADD A,#0x15
|
|
\ 000002 F582 MOV DPL,A
|
|
\ 000004 E4 CLR A
|
|
\ 000005 3F ADDC A,R7
|
|
\ 000006 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine128:
|
|
\ 000000 12.... LCALL ?Subroutine194 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_555:
|
|
\ 000003 8B.. MOV ?V1,R3
|
|
\ 000005 A9.. MOV R1,?V1
|
|
\ 000007 EE MOV A,R6
|
|
\ 000008 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine122:
|
|
\ 000000 12.... LCALL ?Subroutine199 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_323:
|
|
\ 000003 25E0 ADD A,0xE0 /* A */
|
|
\ 000005 FC MOV R4,A
|
|
\ 000006 E4 CLR A
|
|
\ 000007 33 RLC A
|
|
\ 000008 FD MOV R5,A
|
|
\ 000009 EE MOV A,R6
|
|
\ 00000A 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine111:
|
|
\ 000000 F582 MOV DPL,A
|
|
\ 000002 E4 CLR A
|
|
\ 000003 35.. ADDC A,?V5
|
|
\ 000005 12.... LCALL ?Subroutine174 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_354:
|
|
\ 000008 78.. MOV R0,#?V0
|
|
\ 00000A 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine262_0:
|
|
\ 000000 F583 MOV DPH,A
|
|
\ 000002 REQUIRE ??Subroutine263_0
|
|
\ 000002 ; // Fall through to label ??Subroutine263_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine263_0:
|
|
\ 000000 EA MOV A,R2
|
|
\ 000001 F0 MOVX @DPTR,A
|
|
\ 000002 A3 INC DPTR
|
|
\ 000003 EB MOV A,R3
|
|
\ 000004 F0 MOVX @DPTR,A
|
|
\ 000005 EA MOV A,R2
|
|
\ 000006 49 ORL A,R1
|
|
\ 000007 22 RET
|
|
2272
|
|
2273 /*********************************************************************
|
|
2274 * @fn ZDMatchSendState()
|
|
2275 *
|
|
2276 * @brief State machine for the End device match message algorithm.
|
|
2277 *
|
|
2278 * @param reason - state of algoritm
|
|
2279 * @param status - initial message status
|
|
2280 * @param TransSeq - next transaction sequence number
|
|
2281 *
|
|
2282 * @return FALSE if error and we are not currently matching, TRUE
|
|
2283 * if success.
|
|
2284 */
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
2285 uint8 ZDMatchSendState( uint8 reason, uint8 status, uint8 TransSeq )
|
|
\ ZDMatchSendState:
|
|
2286 {
|
|
\ 000000 REQUIRE ?V0
|
|
\ 000000 REQUIRE ?V1
|
|
\ 000000 REQUIRE ?V2
|
|
\ 000000 REQUIRE ?V3
|
|
\ 000000 REQUIRE ?V4
|
|
\ 000000 REQUIRE ?V5
|
|
\ 000000 REQUIRE ?V6
|
|
\ 000000 REQUIRE ?V7
|
|
\ 000000 74F0 MOV A,#-0x10
|
|
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
|
\ 000005 ; Saved register size: 16
|
|
\ 000005 ; Auto size: 21
|
|
\ 000005 74EB MOV A,#-0x15
|
|
\ 000007 12.... LCALL ?ALLOC_XSTACK8
|
|
\ 00000A 7401 MOV A,#0x1
|
|
\ 00000C 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 00000F EA MOV A,R2
|
|
\ 000010 F0 MOVX @DPTR,A
|
|
\ 000011 7402 MOV A,#0x2
|
|
\ 000013 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000016 EB MOV A,R3
|
|
\ 000017 F0 MOVX @DPTR,A
|
|
\ 000018 89.. MOV ?V2,R1
|
|
2287 uint8 *dstIEEEAddr = NULL;
|
|
\ 00001A 75..00 MOV ?V4,#0x0
|
|
\ 00001D 75..00 MOV ?V5,#0x0
|
|
2288 uint8 dstEP = 0xFF;
|
|
\ 000020 75..FF MOV ?V3,#-0x1
|
|
2289 zAddrType_t dstAddr;
|
|
2290 zAddrType_t destinationAddr;
|
|
2291 uint16 msgType;
|
|
2292 uint16 clusterID = 0xFFFF;
|
|
\ 000023 7EFF MOV R6,#-0x1
|
|
\ 000025 7FFF MOV R7,#-0x1
|
|
2293 ZDEndDeviceBind_t *ed = NULL;
|
|
\ 000027 75..00 MOV ?V6,#0x0
|
|
\ 00002A 75..00 MOV ?V7,#0x0
|
|
2294 uint8 rspStatus = ZDP_SUCCESS;
|
|
\ 00002D 85..82 MOV DPL,?XSP + 0
|
|
\ 000030 85..83 MOV DPH,?XSP + 1
|
|
\ 000033 E4 CLR A
|
|
\ 000034 12.... LCALL ?Subroutine49 & 0xFFFF
|
|
2295
|
|
2296 if ( matchED == NULL )
|
|
\ ??CrossCallReturnLabel_72:
|
|
\ 000037 F9 MOV R1,A
|
|
\ 000038 E8 MOV A,R0
|
|
\ 000039 49 ORL A,R1
|
|
\ 00003A 6020 JZ ??ZDMatchSendState_0
|
|
2297 {
|
|
2298 return ( FALSE );
|
|
2299 }
|
|
2300
|
|
2301 // Check sequence number
|
|
2302 if ( reason == ZDMATCH_REASON_BIND_RSP || reason == ZDMATCH_REASON_UNBIND_RSP )
|
|
\ 00003C 7403 MOV A,#0x3
|
|
\ 00003E 65.. XRL A,?V2
|
|
\ 000040 6006 JZ ??ZDMatchSendState_1
|
|
\ 000042 7402 MOV A,#0x2
|
|
\ 000044 65.. XRL A,?V2
|
|
\ 000046 7019 JNZ ??ZDMatchSendState_2
|
|
2303 {
|
|
2304 if ( TransSeq != matchED->transSeq )
|
|
\ ??ZDMatchSendState_1:
|
|
\ 000048 7402 MOV A,#0x2
|
|
\ 00004A 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 00004D E0 MOVX A,@DPTR
|
|
\ 00004E F9 MOV R1,A
|
|
\ 00004F 90.... MOV DPTR,#matchED + 1
|
|
\ 000052 E0 MOVX A,@DPTR
|
|
\ 000053 C8 XCH A,R0
|
|
\ 000054 2430 ADD A,#0x30
|
|
\ 000056 12.... LCALL ?Subroutine147 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_242:
|
|
\ 000059 69 XRL A,R1
|
|
\ 00005A 6005 JZ ??ZDMatchSendState_2
|
|
2305 {
|
|
2306 return( FALSE ); // ignore the message
|
|
\ ??ZDMatchSendState_0:
|
|
\ 00005C 7900 MOV R1,#0x0
|
|
\ 00005E 02.... LJMP ??ZDMatchSendState_3 & 0xFFFF
|
|
2307 }
|
|
2308 }
|
|
2309
|
|
2310 // turn off timer
|
|
2311 APS_SetEndDeviceBindTimeout( 0, ZDO_EndDeviceBindMatchTimeoutCB );
|
|
\ ??ZDMatchSendState_2:
|
|
\ 000061 ; Setup parameters for call to function APS_SetEndDeviceBindTimeout
|
|
\ 000061 7C.. MOV R4,#`??ZDO_EndDeviceBindMatchTimeoutCB::?relay` & 0xff
|
|
\ 000063 7D.. MOV R5,#(`??ZDO_EndDeviceBindMatchTimeoutCB::?relay` >> 8) & 0xff
|
|
\ 000065 7A00 MOV R2,#0x0
|
|
\ 000067 7B00 MOV R3,#0x0
|
|
\ 000069 12.... LCALL `??APS_SetEndDeviceBindTimeout::?relay`; Banked call to: APS_SetEndDeviceBindTimeout
|
|
2312
|
|
2313 if ( reason == ZDMATCH_REASON_TIMEOUT )
|
|
\ 00006C 7401 MOV A,#0x1
|
|
\ 00006E 65.. XRL A,?V2
|
|
\ 000070 700A JNZ ??ZDMatchSendState_4
|
|
2314 {
|
|
2315 rspStatus = ZDP_TIMEOUT; // The process will stop
|
|
\ 000072 85..82 MOV DPL,?XSP + 0
|
|
\ 000075 85..83 MOV DPH,?XSP + 1
|
|
\ 000078 7485 MOV A,#-0x7b
|
|
\ 00007A 8045 SJMP ??ZDMatchSendState_5
|
|
2316 }
|
|
2317
|
|
2318 if ( reason == ZDMATCH_REASON_START || reason == ZDMATCH_REASON_BIND_RSP )
|
|
\ ??ZDMatchSendState_4:
|
|
\ 00007C E5.. MOV A,?V2
|
|
\ 00007E 6006 JZ ??ZDMatchSendState_6
|
|
\ 000080 7403 MOV A,#0x3
|
|
\ 000082 65.. XRL A,?V2
|
|
\ 000084 701D JNZ ??ZDMatchSendState_7
|
|
2319 {
|
|
2320 matchED->sending = ZDMATCH_SENDING_UNBIND;
|
|
\ ??ZDMatchSendState_6:
|
|
\ 000086 90.... MOV DPTR,#matchED
|
|
\ 000089 12.... LCALL ?Subroutine80 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_125:
|
|
\ 00008C F0 MOVX @DPTR,A
|
|
2321
|
|
2322 if ( reason == ZDMATCH_REASON_BIND_RSP && status != ZDP_SUCCESS )
|
|
\ 00008D 7403 MOV A,#0x3
|
|
\ 00008F 65.. XRL A,?V2
|
|
\ 000091 7031 JNZ ??ZDMatchSendState_8
|
|
\ 000093 7401 MOV A,#0x1
|
|
\ 000095 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000098 E0 MOVX A,@DPTR
|
|
\ 000099 602D JZ ??ZDMatchSendState_9
|
|
2323 {
|
|
2324 rspStatus = status;
|
|
\ 00009B 85..82 MOV DPL,?XSP + 0
|
|
\ 00009E 85..83 MOV DPH,?XSP + 1
|
|
\ 0000A1 801E SJMP ??ZDMatchSendState_5
|
|
2325 }
|
|
2326 }
|
|
2327 else if ( reason == ZDMATCH_REASON_UNBIND_RSP )
|
|
\ ??ZDMatchSendState_7:
|
|
\ 0000A3 7402 MOV A,#0x2
|
|
\ 0000A5 65.. XRL A,?V2
|
|
\ 0000A7 701F JNZ ??ZDMatchSendState_9
|
|
2328 {
|
|
2329 if ( status == ZDP_SUCCESS )
|
|
\ 0000A9 7401 MOV A,#0x1
|
|
\ 0000AB 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 0000AE E0 MOVX A,@DPTR
|
|
\ 0000AF 90.... MOV DPTR,#matchED
|
|
\ 0000B2 7005 JNZ ??ZDMatchSendState_10
|
|
2330 {
|
|
2331 matchED->sending = ZDMATCH_SENDING_UNBIND;
|
|
\ 0000B4 12.... LCALL ?Subroutine80 & 0xFFFF
|
|
2332 }
|
|
\ ??CrossCallReturnLabel_126:
|
|
\ 0000B7 8008 SJMP ??ZDMatchSendState_5
|
|
2333 else
|
|
2334 {
|
|
2335 matchED->sending = ZDMATCH_SENDING_BIND;
|
|
\ ??ZDMatchSendState_10:
|
|
\ 0000B9 12.... LCALL ??Subroutine270_0 & 0xFFFF
|
|
2336 }
|
|
2337 }
|
|
\ ??CrossCallReturnLabel_581:
|
|
\ 0000BC 12.... LCALL ?Subroutine215 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_346:
|
|
\ 0000BF 7402 MOV A,#0x2
|
|
\ ??ZDMatchSendState_5:
|
|
\ 0000C1 F0 MOVX @DPTR,A
|
|
\ 0000C2 8004 SJMP ??ZDMatchSendState_9
|
|
2338
|
|
2339 if ( reason != ZDMATCH_REASON_START && matchED->sending == ZDMATCH_SENDING_UNBIND )
|
|
\ ??ZDMatchSendState_8:
|
|
\ 0000C4 E5.. MOV A,?V2
|
|
\ 0000C6 601E JZ ??ZDMatchSendState_11
|
|
\ ??ZDMatchSendState_9:
|
|
\ 0000C8 12.... LCALL ?Subroutine76 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_118:
|
|
\ 0000CB 7019 JNZ ??ZDMatchSendState_11
|
|
2340 {
|
|
2341 // Move to the next cluster ID
|
|
2342 if ( matchED->ed1numMatched )
|
|
\ 0000CD 12.... LCALL ?Subroutine72 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_110:
|
|
\ 0000D0 6005 JZ ??ZDMatchSendState_12
|
|
2343 {
|
|
2344 matchED->ed1numMatched--;
|
|
\ 0000D2 12.... LCALL ??Subroutine252_0 & 0xFFFF
|
|
2345 }
|
|
\ ??CrossCallReturnLabel_486:
|
|
\ 0000D5 800A SJMP ??ZDMatchSendState_13
|
|
2346 else if ( matchED->ed2numMatched )
|
|
\ ??ZDMatchSendState_12:
|
|
\ 0000D7 12.... LCALL ?Subroutine61 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_91:
|
|
\ 0000DA 600A JZ ??ZDMatchSendState_11
|
|
2347 {
|
|
2348 matchED->ed2numMatched--;
|
|
\ 0000DC 12.... LCALL ?Subroutine102 & 0xFFFF
|
|
2349 }
|
|
2350 }
|
|
\ ??CrossCallReturnLabel_590:
|
|
\ 0000DF 2434 ADD A,#0x34
|
|
\ ??ZDMatchSendState_13:
|
|
\ 0000E1 12.... LCALL ?Subroutine147 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_243:
|
|
\ 0000E4 2E ADD A,R6
|
|
\ 0000E5 F0 MOVX @DPTR,A
|
|
2351
|
|
2352 // What message do we send now
|
|
2353 if ( matchED->ed1numMatched )
|
|
\ ??ZDMatchSendState_11:
|
|
\ 0000E6 12.... LCALL ?Subroutine72 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_111:
|
|
\ 0000E9 601C JZ ??ZDMatchSendState_14
|
|
2354 {
|
|
2355 ed = &(matchED->ed1);
|
|
\ 0000EB E0 MOVX A,@DPTR
|
|
\ 0000EC F5.. MOV ?V6,A
|
|
\ 0000EE A3 INC DPTR
|
|
\ 0000EF E0 MOVX A,@DPTR
|
|
\ 0000F0 F5.. MOV ?V7,A
|
|
2356 clusterID = matchED->ed1Matched[matchED->ed1numMatched-1];
|
|
\ 0000F2 12.... LCALL ?Subroutine55 & 0xFFFF
|
|
2357 dstIEEEAddr = matchED->ed2.ieeeAddr;
|
|
2358 dstEP = matchED->ed2.endpoint;
|
|
2359 }
|
|
\ ??CrossCallReturnLabel_78:
|
|
\ 0000F5 12.... LCALL ?Subroutine218 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_683:
|
|
\ 0000F8 CA XCH A,R2
|
|
\ 0000F9 2432 ADD A,#0x32
|
|
\ 0000FB 12.... LCALL ?Subroutine60 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_88:
|
|
\ 0000FE 241D ADD A,#0x1d
|
|
\ 000100 12.... LCALL ?Subroutine116 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_187:
|
|
\ 000103 2425 ADD A,#0x25
|
|
\ 000105 8026 SJMP ??ZDMatchSendState_15
|
|
2360 else if ( matchED->ed2numMatched )
|
|
\ ??ZDMatchSendState_14:
|
|
\ 000107 12.... LCALL ?Subroutine61 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_92:
|
|
\ 00010A 602A JZ ??ZDMatchSendState_16
|
|
2361 {
|
|
2362 ed = &(matchED->ed2);
|
|
\ 00010C 90.... MOV DPTR,#matchED
|
|
\ 00010F E0 MOVX A,@DPTR
|
|
\ 000110 2417 ADD A,#0x17
|
|
\ 000112 F5.. MOV ?V6,A
|
|
\ 000114 A3 INC DPTR
|
|
\ 000115 E0 MOVX A,@DPTR
|
|
\ 000116 3400 ADDC A,#0x0
|
|
\ 000118 F5.. MOV ?V7,A
|
|
2363 clusterID = matchED->ed2Matched[matchED->ed2numMatched-1];
|
|
\ 00011A 12.... LCALL ?Subroutine56 & 0xFFFF
|
|
2364 dstIEEEAddr = matchED->ed1.ieeeAddr;
|
|
2365 dstEP = matchED->ed1.endpoint;
|
|
2366 }
|
|
\ ??CrossCallReturnLabel_81:
|
|
\ 00011D 12.... LCALL ?Subroutine218 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_684:
|
|
\ 000120 CA XCH A,R2
|
|
\ 000121 2435 ADD A,#0x35
|
|
\ 000123 12.... LCALL ?Subroutine60 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_89:
|
|
\ 000126 2406 ADD A,#0x6
|
|
\ 000128 12.... LCALL ?Subroutine116 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_188:
|
|
\ 00012B 240E ADD A,#0xe
|
|
\ ??ZDMatchSendState_15:
|
|
\ 00012D F582 MOV DPL,A
|
|
\ 00012F E4 CLR A
|
|
\ 000130 3A ADDC A,R2
|
|
\ 000131 F583 MOV DPH,A
|
|
\ 000133 E0 MOVX A,@DPTR
|
|
\ 000134 F5.. MOV ?V3,A
|
|
2367
|
|
2368 dstAddr.addrMode = Addr16Bit;
|
|
\ ??ZDMatchSendState_16:
|
|
\ 000136 740B MOV A,#0xb
|
|
\ 000138 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 00013B 7402 MOV A,#0x2
|
|
\ 00013D 12.... LCALL ?Subroutine30 & 0xFFFF
|
|
2369
|
|
2370 // Send the next message
|
|
2371 if ( (rspStatus == ZDP_SUCCESS) && ed )
|
|
\ ??CrossCallReturnLabel_33:
|
|
\ 000140 6003 JZ $+5
|
|
\ 000142 02.... LJMP ??ZDMatchSendState_17 & 0xFFFF
|
|
\ 000145 E5.. MOV A,?V6
|
|
\ 000147 45.. ORL A,?V7
|
|
\ 000149 7003 JNZ $+5
|
|
\ 00014B 02.... LJMP ??ZDMatchSendState_17 & 0xFFFF
|
|
2372 {
|
|
2373 // Send unbind/bind message to source
|
|
2374 if ( matchED->sending == ZDMATCH_SENDING_UNBIND )
|
|
\ 00014E 12.... LCALL ?Subroutine76 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_119:
|
|
\ 000151 7005 JNZ ??ZDMatchSendState_18
|
|
2375 {
|
|
2376 msgType = Unbind_req;
|
|
\ 000153 75..22 MOV ?V0,#0x22
|
|
\ 000156 8003 SJMP ??ZDMatchSendState_19
|
|
2377 }
|
|
2378 else
|
|
2379 {
|
|
2380 msgType = Bind_req;
|
|
\ ??ZDMatchSendState_18:
|
|
\ 000158 75..21 MOV ?V0,#0x21
|
|
\ ??ZDMatchSendState_19:
|
|
\ 00015B 75..00 MOV ?V1,#0x0
|
|
2381 }
|
|
2382
|
|
2383 dstAddr.addr.shortAddr = ed->srcAddr;
|
|
\ 00015E 85..82 MOV DPL,?V6
|
|
\ 000161 85..83 MOV DPH,?V7
|
|
\ 000164 12.... LCALL ??Subroutine246_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_465:
|
|
\ 000167 7403 MOV A,#0x3
|
|
\ 000169 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 00016C 12.... LCALL ??Subroutine289_0 & 0xFFFF
|
|
2384
|
|
2385 // Save off the transaction sequence number
|
|
2386 matchED->transSeq = ZDP_TransID;
|
|
\ ??CrossCallReturnLabel_721:
|
|
\ 00016F 90.... MOV DPTR,#ZDP_TransID
|
|
\ 000172 E0 MOVX A,@DPTR
|
|
\ 000173 C0E0 PUSH A
|
|
\ 000175 12.... LCALL ?Subroutine102 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_591:
|
|
\ 000178 2430 ADD A,#0x30
|
|
\ 00017A F582 MOV DPL,A
|
|
\ 00017C E4 CLR A
|
|
\ 00017D 38 ADDC A,R0
|
|
\ 00017E F583 MOV DPH,A
|
|
\ 000180 D0E0 POP A
|
|
\ 000182 F0 MOVX @DPTR,A
|
|
2387
|
|
2388 destinationAddr.addrMode = Addr64Bit;
|
|
\ 000183 7414 MOV A,#0x14
|
|
\ 000185 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000188 7403 MOV A,#0x3
|
|
\ 00018A F0 MOVX @DPTR,A
|
|
2389 osal_cpyExtAddr( destinationAddr.addr.extAddr, dstIEEEAddr );
|
|
\ 00018B ; Setup parameters for call to function sAddrExtCpy
|
|
\ 00018B AC.. MOV R4,?V4
|
|
\ 00018D AD.. MOV R5,?V5
|
|
\ 00018F 740C MOV A,#0xc
|
|
\ 000191 12.... LCALL ?XSTACK_DISP101_8
|
|
\ 000194 12.... LCALL `??sAddrExtCpy::?relay`; Banked call to: sAddrExtCpy
|
|
2390
|
|
2391 ZDP_BindUnbindReq( msgType, &dstAddr, ed->ieeeAddr, ed->endpoint, clusterID,
|
|
2392 &destinationAddr, dstEP, ed->SecurityUse );
|
|
\ 000197 ; Setup parameters for call to function ZDP_BindUnbindReq
|
|
\ 000197 85..82 MOV DPL,?V6
|
|
\ 00019A 85..83 MOV DPH,?V7
|
|
\ 00019D A3 INC DPTR
|
|
\ 00019E E0 MOVX A,@DPTR
|
|
\ 00019F F5.. MOV ?V4,A
|
|
\ 0001A1 78.. MOV R0,#?V4
|
|
\ 0001A3 12.... LCALL ?PUSH_XSTACK_I_ONE
|
|
\ 0001A6 78.. MOV R0,#?V3
|
|
\ 0001A8 12.... LCALL ?PUSH_XSTACK_I_ONE
|
|
\ 0001AB 740E MOV A,#0xe
|
|
\ 0001AD 12.... LCALL ?XSTACK_DISP100_8
|
|
\ 0001B0 88.. MOV ?V4,R0
|
|
\ 0001B2 89.. MOV ?V5,R1
|
|
\ 0001B4 78.. MOV R0,#?V4
|
|
\ 0001B6 12.... LCALL ?PUSH_XSTACK_I_TWO
|
|
\ 0001B9 8E.. MOV ?V4,R6
|
|
\ 0001BB 8F.. MOV ?V5,R7
|
|
\ 0001BD 78.. MOV R0,#?V4
|
|
\ 0001BF 12.... LCALL ?PUSH_XSTACK_I_TWO
|
|
\ 0001C2 E5.. MOV A,?V6
|
|
\ 0001C4 2406 ADD A,#0x6
|
|
\ 0001C6 F5.. MOV ?V4,A
|
|
\ 0001C8 E4 CLR A
|
|
\ 0001C9 35.. ADDC A,?V7
|
|
\ 0001CB F5.. MOV ?V5,A
|
|
\ 0001CD 78.. MOV R0,#?V4
|
|
\ 0001CF 12.... LCALL ?PUSH_XSTACK_I_TWO
|
|
\ 0001D2 E5.. MOV A,?V6
|
|
\ 0001D4 12.... LCALL ??Subroutine271_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_611:
|
|
\ 0001D7 35.. ADDC A,?V7
|
|
\ 0001D9 F583 MOV DPH,A
|
|
\ 0001DB E0 MOVX A,@DPTR
|
|
\ 0001DC F9 MOV R1,A
|
|
\ 0001DD 740B MOV A,#0xb
|
|
\ 0001DF 12.... LCALL ?XSTACK_DISP102_8
|
|
\ 0001E2 AA.. MOV R2,?V0
|
|
\ 0001E4 AB.. MOV R3,?V1
|
|
\ 0001E6 12.... LCALL `??ZDP_BindUnbindReq::?relay`; Banked call to: ZDP_BindUnbindReq
|
|
\ 0001E9 7408 MOV A,#0x8
|
|
\ 0001EB 12.... LCALL ?DEALLOC_XSTACK8
|
|
2393
|
|
2394 // Set timeout for response
|
|
2395 APS_SetEndDeviceBindTimeout( AIB_MaxBindingTime, ZDO_EndDeviceBindMatchTimeoutCB );
|
|
\ 0001EE ; Setup parameters for call to function APS_SetEndDeviceBindTimeout
|
|
\ 0001EE 12.... LCALL ?Subroutine114 & 0xFFFF
|
|
2396 }
|
|
\ ??CrossCallReturnLabel_186:
|
|
\ 0001F1 02.... LJMP ??ZDMatchSendState_20 & 0xFFFF
|
|
2397 else
|
|
2398 {
|
|
2399 // Send the response messages to requesting devices
|
|
2400 // send response to first requester
|
|
2401 dstAddr.addr.shortAddr = matchED->ed1.srcAddr;
|
|
\ ??ZDMatchSendState_17:
|
|
\ 0001F4 90.... MOV DPTR,#matchED
|
|
\ 0001F7 12.... LCALL ?Subroutine81 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_128:
|
|
\ 0001FA 7403 MOV A,#0x3
|
|
\ 0001FC 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 0001FF 12.... LCALL ?Subroutine14 & 0xFFFF
|
|
2402 ZDP_EndDeviceBindRsp( matchED->ed1.TransSeq, &dstAddr, rspStatus, matchED->ed1.SecurityUse );
|
|
\ ??CrossCallReturnLabel_11:
|
|
\ 000202 12.... LCALL ?PUSH_XSTACK_I_ONE
|
|
\ 000205 7401 MOV A,#0x1
|
|
\ 000207 12.... LCALL ?XSTACK_DISP100_8
|
|
\ 00020A 88.. MOV ?V0,R0
|
|
\ 00020C 89.. MOV ?V1,R1
|
|
\ 00020E 78.. MOV R0,#?V0
|
|
\ 000210 12.... LCALL ?PUSH_XSTACK_I_TWO
|
|
\ 000213 75..20 MOV ?V0,#0x20
|
|
\ 000216 75..80 MOV ?V1,#-0x80
|
|
\ 000219 78.. MOV R0,#?V0
|
|
\ 00021B 12.... LCALL ?PUSH_XSTACK_I_TWO
|
|
\ 00021E 7901 MOV R1,#0x1
|
|
\ 000220 7408 MOV A,#0x8
|
|
\ 000222 12.... LCALL ?XSTACK_DISP102_8
|
|
\ 000225 12.... LCALL ?Subroutine107 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_176:
|
|
\ 000228 12.... LCALL ?DEALLOC_XSTACK8
|
|
2403
|
|
2404 // send response to second requester
|
|
2405 if ( matchED->state == ZDMATCH_SENDING_BINDS )
|
|
\ 00022B 12.... LCALL ?Subroutine75 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_117:
|
|
\ 00022E 704E JNZ ??ZDMatchSendState_21
|
|
2406 {
|
|
2407 dstAddr.addr.shortAddr = matchED->ed2.srcAddr;
|
|
\ 000230 12.... LCALL ?Subroutine102 & 0xFFFF
|
|
2408 ZDP_EndDeviceBindRsp( matchED->ed2.TransSeq, &dstAddr, rspStatus, matchED->ed2.SecurityUse );
|
|
2409 }
|
|
\ ??CrossCallReturnLabel_592:
|
|
\ 000233 2419 ADD A,#0x19
|
|
\ 000235 F582 MOV DPL,A
|
|
\ 000237 E4 CLR A
|
|
\ 000238 38 ADDC A,R0
|
|
\ 000239 F583 MOV DPH,A
|
|
\ 00023B 12.... LCALL ??Subroutine248_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_461:
|
|
\ 00023E 7403 MOV A,#0x3
|
|
\ 000240 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000243 E8 MOV A,R0
|
|
\ 000244 F0 MOVX @DPTR,A
|
|
\ 000245 A3 INC DPTR
|
|
\ 000246 12.... LCALL ??Subroutine256_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_519:
|
|
\ 000249 2418 ADD A,#0x18
|
|
\ 00024B F582 MOV DPL,A
|
|
\ 00024D E4 CLR A
|
|
\ 00024E 38 ADDC A,R0
|
|
\ 00024F 12.... LCALL ?Subroutine112 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_452:
|
|
\ 000252 12.... LCALL ?PUSH_XSTACK_I_ONE
|
|
\ 000255 7401 MOV A,#0x1
|
|
\ 000257 12.... LCALL ?XSTACK_DISP100_8
|
|
\ 00025A 88.. MOV ?V0,R0
|
|
\ 00025C 89.. MOV ?V1,R1
|
|
\ 00025E 78.. MOV R0,#?V0
|
|
\ 000260 12.... LCALL ?PUSH_XSTACK_I_TWO
|
|
\ 000263 75..20 MOV ?V0,#0x20
|
|
\ 000266 75..80 MOV ?V1,#-0x80
|
|
\ 000269 78.. MOV R0,#?V0
|
|
\ 00026B 12.... LCALL ?PUSH_XSTACK_I_TWO
|
|
\ 00026E 7901 MOV R1,#0x1
|
|
\ 000270 7408 MOV A,#0x8
|
|
\ 000272 12.... LCALL ?XSTACK_DISP102_8
|
|
\ 000275 12.... LCALL ?Subroutine120 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_197:
|
|
\ 000278 12.... LCALL ?Subroutine158 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_264:
|
|
\ 00027B 12.... LCALL ?DEALLOC_XSTACK8
|
|
2410
|
|
2411 // Process ended - release memory used
|
|
2412 ZDO_RemoveMatchMemory();
|
|
\ ??ZDMatchSendState_21:
|
|
\ 00027E ; Setup parameters for call to function ZDO_RemoveMatchMemory
|
|
\ 00027E 12.... LCALL `??ZDO_RemoveMatchMemory::?relay`; Banked call to: ZDO_RemoveMatchMemory
|
|
2413 }
|
|
2414
|
|
2415 return ( TRUE );
|
|
\ ??ZDMatchSendState_20:
|
|
\ 000281 7901 MOV R1,#0x1
|
|
\ ??ZDMatchSendState_3:
|
|
\ 000283 7415 MOV A,#0x15
|
|
\ 000285 02.... LJMP ?Subroutine7 & 0xFFFF
|
|
2416 }
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine116:
|
|
\ 000000 F5.. MOV ?V4,A
|
|
\ 000002 A3 INC DPTR
|
|
\ 000003 E0 MOVX A,@DPTR
|
|
\ 000004 3400 ADDC A,#0x0
|
|
\ 000006 F5.. MOV ?V5,A
|
|
\ 000008 90.... MOV DPTR,#matchED
|
|
\ 00000B E0 MOVX A,@DPTR
|
|
\ 00000C 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine80:
|
|
\ 000000 12.... LCALL ?Subroutine180 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_297:
|
|
\ 000003 7401 MOV A,#0x1
|
|
\ 000005 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine76:
|
|
\ 000000 90.... MOV DPTR,#matchED
|
|
\ 000003 12.... LCALL ?Subroutine180 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_296:
|
|
\ 000006 E0 MOVX A,@DPTR
|
|
\ 000007 6401 XRL A,#0x1
|
|
\ 000009 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine180:
|
|
\ 000000 12.... LCALL ?Subroutine210 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_608:
|
|
\ 000003 12.... LCALL ?Subroutine215 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_347:
|
|
\ 000006 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine215:
|
|
\ 000000 242F ADD A,#0x2f
|
|
\ 000002 F582 MOV DPL,A
|
|
\ 000004 E4 CLR A
|
|
\ 000005 38 ADDC A,R0
|
|
\ 000006 F583 MOV DPH,A
|
|
\ 000008 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine72:
|
|
\ 000000 12.... LCALL ?Subroutine178 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_293:
|
|
\ 000003 90.... MOV DPTR,#matchED
|
|
\ 000006 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine60:
|
|
\ 000000 F582 MOV DPL,A
|
|
\ 000002 E4 CLR A
|
|
\ 000003 3A ADDC A,R2
|
|
\ 000004 F583 MOV DPH,A
|
|
\ 000006 E0 MOVX A,@DPTR
|
|
\ 000007 28 ADD A,R0
|
|
\ 000008 F8 MOV R0,A
|
|
\ 000009 A3 INC DPTR
|
|
\ 00000A E0 MOVX A,@DPTR
|
|
\ 00000B 39 ADDC A,R1
|
|
\ 00000C F9 MOV R1,A
|
|
\ 00000D E8 MOV A,R0
|
|
\ 00000E 24FE ADD A,#-0x2
|
|
\ 000010 F582 MOV DPL,A
|
|
\ 000012 E9 MOV A,R1
|
|
\ 000013 34FF ADDC A,#-0x1
|
|
\ 000015 12.... LCALL ?Subroutine190 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_703:
|
|
\ 000018 90.... MOV DPTR,#matchED
|
|
\ 00001B E0 MOVX A,@DPTR
|
|
\ 00001C 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine218:
|
|
\ 000000 F8 MOV R0,A
|
|
\ 000001 E4 CLR A
|
|
\ 000002 33 RLC A
|
|
\ 000003 F9 MOV R1,A
|
|
\ 000004 90.... MOV DPTR,#matchED
|
|
\ 000007 REQUIRE ??Subroutine276_0
|
|
\ 000007 ; // Fall through to label ??Subroutine276_0
|
|
2417
|
|
2418 /*********************************************************************
|
|
2419 * @fn ZDO_EndDeviceBindMatchTimeoutCB()
|
|
2420 *
|
|
2421 * @brief End device bind timeout.
|
|
2422 *
|
|
2423 * @param none
|
|
2424 *
|
|
2425 * @return none
|
|
2426 */
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
2427 static void ZDO_EndDeviceBindMatchTimeoutCB( void )
|
|
\ ZDO_EndDeviceBindMatchTimeoutCB:
|
|
2428 {
|
|
\ 000000 C082 PUSH DPL
|
|
\ 000002 C083 PUSH DPH
|
|
\ 000004 ; Saved register size: 2
|
|
\ 000004 ; Auto size: 0
|
|
2429 ZDMatchSendState( ZDMATCH_REASON_TIMEOUT, ZDP_TIMEOUT, 0 );
|
|
\ 000004 ; Setup parameters for call to function ZDMatchSendState
|
|
\ 000004 7B00 MOV R3,#0x0
|
|
\ 000006 7A85 MOV R2,#-0x7b
|
|
\ 000008 7901 MOV R1,#0x1
|
|
\ 00000A 12.... LCALL `??ZDMatchSendState::?relay`; Banked call to: ZDMatchSendState
|
|
2430 }
|
|
\ 00000D 02.... LJMP ?Subroutine0 & 0xFFFF
|
|
2431
|
|
2432 /*********************************************************************
|
|
2433 * ZDO MESSAGE PARSING API FUNCTIONS
|
|
2434 */
|
|
2435
|
|
2436 /*********************************************************************
|
|
2437 * @fn ZDO_ParseEndDeviceBindReq
|
|
2438 *
|
|
2439 * @brief This function parses the End_Device_Bind_req message.
|
|
2440 *
|
|
2441 * NOTE: The clusters lists in bindReq are allocated in this
|
|
2442 * function and must be freed by that calling function.
|
|
2443 *
|
|
2444 * @param inMsg - incoming message (request)
|
|
2445 * @param bindReq - pointer to place to parse message to
|
|
2446 *
|
|
2447 * @return none
|
|
2448 */
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine18:
|
|
\ 000000 F582 MOV DPL,A
|
|
\ 000002 E4 CLR A
|
|
\ 000003 35.. ADDC A,?V1
|
|
\ 000005 REQUIRE ??Subroutine262_0
|
|
\ 000005 ; // Fall through to label ??Subroutine262_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
2449 void ZDO_ParseEndDeviceBindReq( zdoIncomingMsg_t *inMsg, ZDEndDeviceBind_t *bindReq )
|
|
\ ZDO_ParseEndDeviceBindReq:
|
|
2450 {
|
|
\ 000000 REQUIRE ?V0
|
|
\ 000000 REQUIRE ?V1
|
|
\ 000000 REQUIRE ?V2
|
|
\ 000000 REQUIRE ?V3
|
|
\ 000000 74F4 MOV A,#-0xc
|
|
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
|
\ 000005 ; Saved register size: 12
|
|
\ 000005 ; Auto size: 0
|
|
\ 000005 8C.. MOV ?V0,R4
|
|
\ 000007 8D.. MOV ?V1,R5
|
|
2451 uint8 *msg;
|
|
2452
|
|
2453 // Parse the message
|
|
2454 bindReq->TransSeq = inMsg->TransSeq;
|
|
\ 000009 EA MOV A,R2
|
|
\ 00000A 12.... LCALL ?Subroutine198 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_317:
|
|
\ 00000D 3B ADDC A,R3
|
|
\ 00000E 12.... LCALL ??Subroutine272_0 & 0xFFFF
|
|
2455 bindReq->srcAddr = inMsg->srcAddr.addr.shortAddr;
|
|
\ ??CrossCallReturnLabel_616:
|
|
\ 000011 12.... LCALL ??Subroutine247_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_462:
|
|
\ 000014 8C82 MOV DPL,R4
|
|
\ 000016 8D83 MOV DPH,R5
|
|
\ 000018 A3 INC DPTR
|
|
\ 000019 A3 INC DPTR
|
|
\ 00001A 12.... LCALL ??Subroutine289_0 & 0xFFFF
|
|
2456 bindReq->SecurityUse = inMsg->SecurityUse;
|
|
\ ??CrossCallReturnLabel_722:
|
|
\ 00001D EA MOV A,R2
|
|
\ 00001E 12.... LCALL ??Subroutine271_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_612:
|
|
\ 000021 3B ADDC A,R3
|
|
\ 000022 F583 MOV DPH,A
|
|
\ 000024 12.... LCALL ?Subroutine91 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_146:
|
|
\ 000027 12.... LCALL ?Subroutine31 & 0xFFFF
|
|
2457 msg = inMsg->asdu;
|
|
\ ??CrossCallReturnLabel_36:
|
|
\ 00002A FE MOV R6,A
|
|
\ 00002B A3 INC DPTR
|
|
\ 00002C E0 MOVX A,@DPTR
|
|
\ 00002D FF MOV R7,A
|
|
2458
|
|
2459 bindReq->localCoordinator = BUILD_UINT16( msg[0], msg[1] );
|
|
\ 00002E 8E82 MOV DPL,R6
|
|
\ 000030 F583 MOV DPH,A
|
|
\ 000032 12.... LCALL ?Subroutine88 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_140:
|
|
\ 000035 12.... LCALL ?Subroutine20 & 0xFFFF
|
|
2460 msg += 2;
|
|
\ ??CrossCallReturnLabel_562:
|
|
\ 000038 5001 JNC ??ZDO_ParseEndDeviceBindReq_0
|
|
\ 00003A 0F INC R7
|
|
2461
|
|
2462 osal_cpyExtAddr( bindReq->ieeeAddr, msg );
|
|
\ ??ZDO_ParseEndDeviceBindReq_0:
|
|
\ 00003B ; Setup parameters for call to function sAddrExtCpy
|
|
\ 00003B FC MOV R4,A
|
|
\ 00003C EF MOV A,R7
|
|
\ 00003D FD MOV R5,A
|
|
\ 00003E E5.. MOV A,?V0
|
|
\ 000040 2406 ADD A,#0x6
|
|
\ 000042 12.... LCALL ??Subroutine269_0 & 0xFFFF
|
|
2463 msg += Z_EXTADDR_LEN;
|
|
2464
|
|
2465 bindReq->endpoint = *msg++;
|
|
\ ??CrossCallReturnLabel_572:
|
|
\ 000045 C0E0 PUSH A
|
|
\ 000047 12.... LCALL ?Subroutine144 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_232:
|
|
\ 00004A D0E0 POP A
|
|
\ 00004C 12.... LCALL ??Subroutine285_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_689:
|
|
\ 00004F 5001 JNC ??ZDO_ParseEndDeviceBindReq_1
|
|
\ 000051 0F INC R7
|
|
2466 bindReq->profileID = BUILD_UINT16( msg[0], msg[1] );
|
|
\ ??ZDO_ParseEndDeviceBindReq_1:
|
|
\ 000052 F582 MOV DPL,A
|
|
\ 000054 12.... LCALL ?Subroutine211 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_678:
|
|
\ 000057 12.... LCALL ?Subroutine141 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_226:
|
|
\ 00005A EA MOV A,R2
|
|
\ 00005B 12.... LCALL ??Subroutine290_0 & 0xFFFF
|
|
2467 msg += 2;
|
|
2468
|
|
2469 bindReq->inClusters = NULL;
|
|
\ ??CrossCallReturnLabel_707:
|
|
\ 00005E E5.. MOV A,?V0
|
|
\ 000060 2412 ADD A,#0x12
|
|
\ 000062 12.... LCALL ?Subroutine153 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_254:
|
|
\ 000065 A3 INC DPTR
|
|
\ 000066 F0 MOVX @DPTR,A
|
|
2470 bindReq->outClusters = NULL;
|
|
\ 000067 E5.. MOV A,?V0
|
|
\ 000069 2415 ADD A,#0x15
|
|
\ 00006B 12.... LCALL ?Subroutine153 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_255:
|
|
\ 00006E A3 INC DPTR
|
|
\ 00006F 12.... LCALL ?Subroutine26 & 0xFFFF
|
|
2471
|
|
2472 if ((bindReq->numInClusters = *msg++) &&
|
|
2473 (bindReq->inClusters = (uint16*)osal_mem_alloc( (bindReq->numInClusters * sizeof( uint16 )))))
|
|
\ ??CrossCallReturnLabel_23:
|
|
\ 000072 F8 MOV R0,A
|
|
\ 000073 E5.. MOV A,?V0
|
|
\ 000075 2411 ADD A,#0x11
|
|
\ 000077 12.... LCALL ??Subroutine279_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_646:
|
|
\ 00007A E8 MOV A,R0
|
|
\ 00007B F0 MOVX @DPTR,A
|
|
\ 00007C EE MOV A,R6
|
|
\ 00007D 2403 ADD A,#0x3
|
|
\ 00007F FE MOV R6,A
|
|
\ 000080 5001 JNC ??ZDO_ParseEndDeviceBindReq_2
|
|
\ 000082 0F INC R7
|
|
\ ??ZDO_ParseEndDeviceBindReq_2:
|
|
\ 000083 E8 MOV A,R0
|
|
\ 000084 6020 JZ ??ZDO_ParseEndDeviceBindReq_3
|
|
\ 000086 12.... LCALL ?Subroutine125 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_552:
|
|
\ 000089 2412 ADD A,#0x12
|
|
\ 00008B 12.... LCALL ?Subroutine18 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_550:
|
|
\ 00008E 6016 JZ ??ZDO_ParseEndDeviceBindReq_3
|
|
2474 {
|
|
2475 msg = ZDO_ConvertOTAClusters( bindReq->numInClusters, msg, bindReq->inClusters );
|
|
\ 000090 ; Setup parameters for call to function ZDO_ConvertOTAClusters
|
|
\ 000090 E5.. MOV A,?V0
|
|
\ 000092 2412 ADD A,#0x12
|
|
\ 000094 12.... LCALL ?Subroutine95 & 0xFFFF
|
|
2476 }
|
|
\ ??CrossCallReturnLabel_152:
|
|
\ 000097 2411 ADD A,#0x11
|
|
\ 000099 12.... LCALL ?Subroutine105 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_558:
|
|
\ 00009C 8A.. MOV ?V2,R2
|
|
\ 00009E 8B.. MOV ?V3,R3
|
|
\ 0000A0 AE.. MOV R6,?V2
|
|
\ 0000A2 AF.. MOV R7,?V3
|
|
\ 0000A4 8007 SJMP ??CrossCallReturnLabel_256
|
|
2477 else
|
|
2478 {
|
|
2479 bindReq->numInClusters = 0;
|
|
\ ??ZDO_ParseEndDeviceBindReq_3:
|
|
\ 0000A6 E5.. MOV A,?V0
|
|
\ 0000A8 2411 ADD A,#0x11
|
|
\ 0000AA 12.... LCALL ?Subroutine153 & 0xFFFF
|
|
2480 }
|
|
2481
|
|
2482 if ((bindReq->numOutClusters = *msg++) &&
|
|
2483 (bindReq->outClusters = (uint16*)osal_mem_alloc((bindReq->numOutClusters * sizeof(uint16)))))
|
|
\ ??CrossCallReturnLabel_256:
|
|
\ 0000AD 8E82 MOV DPL,R6
|
|
\ 0000AF 8F83 MOV DPH,R7
|
|
\ 0000B1 E0 MOVX A,@DPTR
|
|
\ 0000B2 F8 MOV R0,A
|
|
\ 0000B3 12.... LCALL ?Subroutine152 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_249:
|
|
\ 0000B6 E8 MOV A,R0
|
|
\ 0000B7 12.... LCALL ?Subroutine39 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_53:
|
|
\ 0000BA 601C JZ ??ZDO_ParseEndDeviceBindReq_4
|
|
\ 0000BC 12.... LCALL ?Subroutine152 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_250:
|
|
\ 0000BF E0 MOVX A,@DPTR
|
|
\ 0000C0 12.... LCALL ?Subroutine125 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_553:
|
|
\ 0000C3 2415 ADD A,#0x15
|
|
\ 0000C5 12.... LCALL ?Subroutine18 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_551:
|
|
\ 0000C8 600E JZ ??ZDO_ParseEndDeviceBindReq_4
|
|
2484 {
|
|
2485 msg = ZDO_ConvertOTAClusters( bindReq->numOutClusters, msg, bindReq->outClusters );
|
|
\ 0000CA ; Setup parameters for call to function ZDO_ConvertOTAClusters
|
|
\ 0000CA E5.. MOV A,?V0
|
|
\ 0000CC 2415 ADD A,#0x15
|
|
\ 0000CE 12.... LCALL ?Subroutine95 & 0xFFFF
|
|
2486 }
|
|
\ ??CrossCallReturnLabel_153:
|
|
\ 0000D1 2414 ADD A,#0x14
|
|
\ 0000D3 12.... LCALL ?Subroutine105 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_559:
|
|
\ 0000D6 8005 SJMP ??ZDO_ParseEndDeviceBindReq_5
|
|
2487 else
|
|
2488 {
|
|
2489 bindReq->numOutClusters = 0;
|
|
\ ??ZDO_ParseEndDeviceBindReq_4:
|
|
\ 0000D8 12.... LCALL ?Subroutine152 & 0xFFFF
|
|
2490 }
|
|
\ ??CrossCallReturnLabel_251:
|
|
\ 0000DB E4 CLR A
|
|
\ 0000DC F0 MOVX @DPTR,A
|
|
2491 }
|
|
\ ??ZDO_ParseEndDeviceBindReq_5:
|
|
\ 0000DD 02.... LJMP ??Subroutine219_0 & 0xFFFF
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine125:
|
|
\ 000000 F8 MOV R0,A
|
|
\ 000001 ; Setup parameters for call to function osal_mem_alloc
|
|
\ 000001 ; Setup parameters for call to function osal_mem_alloc
|
|
\ 000001 REQUIRE ??Subroutine264_0
|
|
\ 000001 ; // Fall through to label ??Subroutine264_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine264_0:
|
|
\ 000000 12.... LCALL ?Subroutine194 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_556:
|
|
\ 000003 8B.. MOV ?V3,R3
|
|
\ 000005 A9.. MOV R1,?V3
|
|
\ 000007 E5.. MOV A,?V0
|
|
\ 000009 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine105:
|
|
\ 000000 12.... LCALL ?Subroutine202 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_659:
|
|
\ 000003 REQUIRE ??Subroutine265_0
|
|
\ 000003 ; // Fall through to label ??Subroutine265_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine95:
|
|
\ 000000 12.... LCALL ?Subroutine202 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_658:
|
|
\ 000003 12.... LCALL ?Subroutine186 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_302:
|
|
\ 000006 EE MOV A,R6
|
|
\ 000007 FA MOV R2,A
|
|
\ 000008 EF MOV A,R7
|
|
\ 000009 FB MOV R3,A
|
|
\ 00000A E5.. MOV A,?V0
|
|
\ 00000C 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine20:
|
|
\ 000000 A3 INC DPTR
|
|
\ 000001 REQUIRE ??Subroutine266_0
|
|
\ 000001 ; // Fall through to label ??Subroutine266_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine266_0:
|
|
\ 000000 F0 MOVX @DPTR,A
|
|
\ 000001 A3 INC DPTR
|
|
\ 000002 E9 MOV A,R1
|
|
\ 000003 F0 MOVX @DPTR,A
|
|
\ 000004 EE MOV A,R6
|
|
\ 000005 2402 ADD A,#0x2
|
|
\ 000007 FE MOV R6,A
|
|
\ 000008 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine152:
|
|
\ 000000 E5.. MOV A,?V0
|
|
\ 000002 2414 ADD A,#0x14
|
|
\ 000004 12.... LCALL ?Subroutine202 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_661:
|
|
\ 000007 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine269_0:
|
|
\ 000000 FA MOV R2,A
|
|
\ 000001 E4 CLR A
|
|
\ 000002 35.. ADDC A,?V1
|
|
\ 000004 FB MOV R3,A
|
|
\ 000005 12.... LCALL ?Subroutine171 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_574:
|
|
\ 000008 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine171:
|
|
\ 000000 12.... LCALL `??sAddrExtCpy::?relay`; Banked call to: sAddrExtCpy
|
|
\ 000003 8E82 MOV DPL,R6
|
|
\ 000005 8F83 MOV DPH,R7
|
|
\ 000007 A3 INC DPTR
|
|
\ 000008 A3 INC DPTR
|
|
\ 000009 A3 INC DPTR
|
|
\ 00000A A3 INC DPTR
|
|
\ 00000B A3 INC DPTR
|
|
\ 00000C A3 INC DPTR
|
|
\ 00000D A3 INC DPTR
|
|
\ 00000E A3 INC DPTR
|
|
\ 00000F E0 MOVX A,@DPTR
|
|
\ 000010 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine153:
|
|
\ 000000 12.... LCALL ?Subroutine202 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_662:
|
|
\ 000003 E4 CLR A
|
|
\ 000004 F0 MOVX @DPTR,A
|
|
\ 000005 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine39:
|
|
\ 000000 12.... LCALL ?Subroutine216 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_350:
|
|
\ 000003 AE82 MOV R6,DPL
|
|
\ 000005 AF83 MOV R7,DPH
|
|
\ 000007 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine91:
|
|
\ 000000 12.... LCALL ??Subroutine277_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_631:
|
|
\ 000003 A3 INC DPTR
|
|
\ 000004 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine272_0:
|
|
\ 000000 12.... LCALL ?Subroutine182 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_633:
|
|
\ 000003 REQUIRE ??Subroutine273_0
|
|
\ 000003 ; // Fall through to label ??Subroutine273_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine273_0:
|
|
\ 000000 12.... LCALL ?Subroutine167 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_671:
|
|
\ 000003 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine167:
|
|
\ 000000 F0 MOVX @DPTR,A
|
|
\ 000001 8A82 MOV DPL,R2
|
|
\ 000003 8B83 MOV DPH,R3
|
|
\ 000005 A3 INC DPTR
|
|
\ 000006 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine182:
|
|
\ 000000 F583 MOV DPH,A
|
|
\ 000002 REQUIRE ??Subroutine277_0
|
|
\ 000002 ; // Fall through to label ??Subroutine277_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine277_0:
|
|
\ 000000 E0 MOVX A,@DPTR
|
|
\ 000001 8C82 MOV DPL,R4
|
|
\ 000003 8D83 MOV DPH,R5
|
|
\ 000005 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine144:
|
|
\ 000000 E5.. MOV A,?V0
|
|
\ 000002 240E ADD A,#0xe
|
|
\ 000004 12.... LCALL ?Subroutine202 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_660:
|
|
\ 000007 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine26:
|
|
\ 000000 12.... LCALL ?Subroutine169 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_280:
|
|
\ 000003 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine169:
|
|
\ 000000 12.... LCALL ?Subroutine216 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_348:
|
|
\ 000003 A3 INC DPTR
|
|
\ 000004 E0 MOVX A,@DPTR
|
|
\ 000005 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine211:
|
|
\ 000000 8F83 MOV DPH,R7
|
|
\ 000002 REQUIRE ??Subroutine284_0
|
|
\ 000002 ; // Fall through to label ??Subroutine284_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine285_0:
|
|
\ 000000 F0 MOVX @DPTR,A
|
|
\ 000001 EE MOV A,R6
|
|
\ 000002 2409 ADD A,#0x9
|
|
\ 000004 FE MOV R6,A
|
|
\ 000005 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine197:
|
|
\ 000000 EA MOV A,R2
|
|
\ 000001 REQUIRE ??Subroutine287_0
|
|
\ 000001 ; // Fall through to label ??Subroutine287_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine88:
|
|
\ 000000 12.... LCALL ?Subroutine187 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_305:
|
|
\ 000003 8C82 MOV DPL,R4
|
|
\ 000005 8D83 MOV DPH,R5
|
|
\ 000007 A3 INC DPTR
|
|
\ 000008 A3 INC DPTR
|
|
\ 000009 A3 INC DPTR
|
|
\ 00000A 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine31:
|
|
\ 000000 F0 MOVX @DPTR,A
|
|
\ 000001 12.... LCALL ?Subroutine197 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_695:
|
|
\ 000004 F583 MOV DPH,A
|
|
\ 000006 E0 MOVX A,@DPTR
|
|
\ 000007 22 RET
|
|
2492
|
|
2493 /*********************************************************************
|
|
2494 * @fn ZDO_ParseBindUnbindReq
|
|
2495 *
|
|
2496 * @brief This function parses the Bind_req or Unbind_req message.
|
|
2497 *
|
|
2498 * @param inMsg - incoming message (request)
|
|
2499 * @param pReq - place to put parsed information
|
|
2500 *
|
|
2501 * @return none
|
|
2502 */
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
2503 void ZDO_ParseBindUnbindReq( zdoIncomingMsg_t *inMsg, ZDO_BindUnbindReq_t *pReq )
|
|
\ ZDO_ParseBindUnbindReq:
|
|
2504 {
|
|
\ 000000 REQUIRE ?V0
|
|
\ 000000 REQUIRE ?V1
|
|
\ 000000 74F6 MOV A,#-0xa
|
|
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
|
\ 000005 ; Saved register size: 10
|
|
\ 000005 ; Auto size: 0
|
|
\ 000005 12.... LCALL ?Subroutine130 & 0xFFFF
|
|
2505 uint8 *msg;
|
|
2506
|
|
2507 msg = inMsg->asdu;
|
|
\ ??CrossCallReturnLabel_566:
|
|
\ 000008 12.... LCALL ?Subroutine94 & 0xFFFF
|
|
2508 osal_cpyExtAddr( pReq->srcAddress, msg );
|
|
\ ??CrossCallReturnLabel_382:
|
|
\ 00000B ; Setup parameters for call to function sAddrExtCpy
|
|
\ 00000B 12.... LCALL ?Subroutine43 & 0xFFFF
|
|
2509 msg += Z_EXTADDR_LEN;
|
|
2510 pReq->srcEndpoint = *msg++;
|
|
\ ??CrossCallReturnLabel_687:
|
|
\ 00000E 5001 JNC ??ZDO_ParseBindUnbindReq_0
|
|
\ 000010 0F INC R7
|
|
2511 pReq->clusterID = BUILD_UINT16( msg[0], msg[1] );
|
|
\ ??ZDO_ParseBindUnbindReq_0:
|
|
\ 000011 12.... LCALL ?Subroutine11 & 0xFFFF
|
|
2512 msg += 2;
|
|
2513 pReq->dstAddress.addrMode = *msg++;
|
|
\ ??CrossCallReturnLabel_4:
|
|
\ 000014 5001 JNC ??ZDO_ParseBindUnbindReq_1
|
|
\ 000016 0F INC R7
|
|
2514 if ( pReq->dstAddress.addrMode == Addr64Bit )
|
|
\ ??ZDO_ParseBindUnbindReq_1:
|
|
\ 000017 7403 MOV A,#0x3
|
|
\ 000019 68 XRL A,R0
|
|
\ 00001A 700C JNZ ??ZDO_ParseBindUnbindReq_2
|
|
2515 {
|
|
2516 osal_cpyExtAddr( pReq->dstAddress.addr.extAddr, msg );
|
|
\ 00001C ; Setup parameters for call to function sAddrExtCpy
|
|
\ 00001C 12.... LCALL ?Subroutine50 & 0xFFFF
|
|
2517 msg += Z_EXTADDR_LEN;
|
|
2518 pReq->dstEndpoint = *msg;
|
|
2519 }
|
|
\ ??CrossCallReturnLabel_570:
|
|
\ 00001F C0E0 PUSH A
|
|
\ 000021 12.... LCALL ?Subroutine152 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_252:
|
|
\ 000024 D0E0 POP A
|
|
\ 000026 8006 SJMP ??ZDO_ParseBindUnbindReq_3
|
|
2520 else
|
|
2521 {
|
|
2522 // copy group address
|
|
2523 pReq->dstAddress.addr.shortAddr = BUILD_UINT16( msg[0], msg[1] );
|
|
\ ??ZDO_ParseBindUnbindReq_2:
|
|
\ 000028 12.... LCALL ?Subroutine73 & 0xFFFF
|
|
2524 }
|
|
\ ??CrossCallReturnLabel_112:
|
|
\ 00002B F0 MOVX @DPTR,A
|
|
\ 00002C A3 INC DPTR
|
|
\ 00002D E9 MOV A,R1
|
|
\ ??ZDO_ParseBindUnbindReq_3:
|
|
\ 00002E F0 MOVX @DPTR,A
|
|
2525 }
|
|
\ 00002F 02.... LJMP ??Subroutine222_0 & 0xFFFF
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine130:
|
|
\ 000000 8C.. MOV ?V0,R4
|
|
\ 000002 8D.. MOV ?V1,R5
|
|
\ 000004 REQUIRE ??Subroutine267_0
|
|
\ 000004 ; // Fall through to label ??Subroutine267_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine267_0:
|
|
\ 000000 EA MOV A,R2
|
|
\ 000001 REQUIRE ??Subroutine268_0
|
|
\ 000001 ; // Fall through to label ??Subroutine268_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine50:
|
|
\ 000000 EE MOV A,R6
|
|
\ 000001 FC MOV R4,A
|
|
\ 000002 EF MOV A,R7
|
|
\ 000003 FD MOV R5,A
|
|
\ 000004 E5.. MOV A,?V0
|
|
\ 000006 240B ADD A,#0xb
|
|
\ 000008 REQUIRE ??Subroutine269_0
|
|
\ 000008 ; // Fall through to label ??Subroutine269_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine73:
|
|
\ 000000 8E82 MOV DPL,R6
|
|
\ 000002 12.... LCALL ?Subroutine211 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_679:
|
|
\ 000005 E5.. MOV A,?V0
|
|
\ 000007 240B ADD A,#0xb
|
|
\ 000009 12.... LCALL ?Subroutine202 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_657:
|
|
\ 00000C EA MOV A,R2
|
|
\ 00000D 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine43:
|
|
\ 000000 EE MOV A,R6
|
|
\ 000001 FC MOV R4,A
|
|
\ 000002 EF MOV A,R7
|
|
\ 000003 FD MOV R5,A
|
|
\ 000004 AA.. MOV R2,?V0
|
|
\ 000006 AB.. MOV R3,?V1
|
|
\ 000008 12.... LCALL ?Subroutine171 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_575:
|
|
\ 00000B 85..82 MOV DPL,?V0
|
|
\ 00000E 85..83 MOV DPH,?V1
|
|
\ 000011 A3 INC DPTR
|
|
\ 000012 A3 INC DPTR
|
|
\ 000013 A3 INC DPTR
|
|
\ 000014 A3 INC DPTR
|
|
\ 000015 A3 INC DPTR
|
|
\ 000016 A3 INC DPTR
|
|
\ 000017 A3 INC DPTR
|
|
\ 000018 A3 INC DPTR
|
|
\ 000019 REQUIRE ??Subroutine285_0
|
|
\ 000019 ; // Fall through to label ??Subroutine285_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine11:
|
|
\ 000000 F582 MOV DPL,A
|
|
\ 000002 12.... LCALL ?Subroutine172 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_284:
|
|
\ 000005 A3 INC DPTR
|
|
\ 000006 A3 INC DPTR
|
|
\ 000007 F0 MOVX @DPTR,A
|
|
\ 000008 A3 INC DPTR
|
|
\ 000009 E9 MOV A,R1
|
|
\ 00000A 12.... LCALL ?Subroutine169 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_281:
|
|
\ 00000D F8 MOV R0,A
|
|
\ 00000E E5.. MOV A,?V0
|
|
\ 000010 12.... LCALL ??Subroutine243_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_444:
|
|
\ 000013 12.... LCALL ??Subroutine280_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_655:
|
|
\ 000016 E8 MOV A,R0
|
|
\ 000017 F0 MOVX @DPTR,A
|
|
\ 000018 EE MOV A,R6
|
|
\ 000019 2403 ADD A,#0x3
|
|
\ 00001B FE MOV R6,A
|
|
\ 00001C 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine172:
|
|
\ 000000 12.... LCALL ?Subroutine211 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_680:
|
|
\ 000003 EA MOV A,R2
|
|
\ 000004 85..82 MOV DPL,?V0
|
|
\ 000007 85..83 MOV DPH,?V1
|
|
\ 00000A A3 INC DPTR
|
|
\ 00000B A3 INC DPTR
|
|
\ 00000C A3 INC DPTR
|
|
\ 00000D A3 INC DPTR
|
|
\ 00000E A3 INC DPTR
|
|
\ 00000F A3 INC DPTR
|
|
\ 000010 A3 INC DPTR
|
|
\ 000011 22 RET
|
|
2526
|
|
2527 /*********************************************************************
|
|
2528 * @fn ZDO_ParseAddrRsp
|
|
2529 *
|
|
2530 * @brief Turns the inMsg (incoming message) into the out parsed
|
|
2531 * structure.
|
|
2532 *
|
|
2533 * @param inMsg - incoming message
|
|
2534 *
|
|
2535 * @return pointer to parsed structures. This structure was
|
|
2536 * allocated using osal_mem_alloc, so it must be freed
|
|
2537 * by the calling function [osal_mem_free()].
|
|
2538 */
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
2539 ZDO_NwkIEEEAddrResp_t *ZDO_ParseAddrRsp( zdoIncomingMsg_t *inMsg )
|
|
\ ZDO_ParseAddrRsp:
|
|
2540 {
|
|
\ 000000 REQUIRE ?V0
|
|
\ 000000 REQUIRE ?V1
|
|
\ 000000 REQUIRE ?V2
|
|
\ 000000 REQUIRE ?V3
|
|
\ 000000 REQUIRE ?V4
|
|
\ 000000 REQUIRE ?V5
|
|
\ 000000 74F2 MOV A,#-0xe
|
|
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
|
\ 000005 ; Saved register size: 14
|
|
\ 000005 ; Auto size: 0
|
|
\ 000005 EA MOV A,R2
|
|
\ 000006 FE MOV R6,A
|
|
\ 000007 EB MOV A,R3
|
|
\ 000008 FF MOV R7,A
|
|
2541 ZDO_NwkIEEEAddrResp_t *rsp;
|
|
2542 uint8 *msg;
|
|
2543 byte cnt = 0;
|
|
\ 000009 75..00 MOV ?V2,#0x0
|
|
2544
|
|
2545 // Calculate the number of items in the list
|
|
2546 if ( inMsg->asduLen > (1 + Z_EXTADDR_LEN + 2) )
|
|
\ 00000C EA MOV A,R2
|
|
\ 00000D 2410 ADD A,#0x10
|
|
\ 00000F F582 MOV DPL,A
|
|
\ 000011 E4 CLR A
|
|
\ 000012 3F ADDC A,R7
|
|
\ 000013 F583 MOV DPH,A
|
|
\ 000015 E0 MOVX A,@DPTR
|
|
\ 000016 C3 CLR C
|
|
\ 000017 940C SUBB A,#0xc
|
|
\ 000019 400D JC ??ZDO_ParseAddrRsp_0
|
|
2547 {
|
|
2548 cnt = inMsg->asdu[1 + Z_EXTADDR_LEN + 2];
|
|
\ 00001B 12.... LCALL ??Subroutine240_0 & 0xFFFF
|
|
2549 }
|
|
\ ??CrossCallReturnLabel_432:
|
|
\ 00001E 12.... LCALL ??Subroutine270_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_582:
|
|
\ 000021 240B ADD A,#0xb
|
|
\ 000023 12.... LCALL ?Subroutine147 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_244:
|
|
\ 000026 F5.. MOV ?V2,A
|
|
2550 else
|
|
2551 {
|
|
2552 cnt = 0;
|
|
2553 }
|
|
2554
|
|
2555 // Make buffer
|
|
2556 rsp = (ZDO_NwkIEEEAddrResp_t *)osal_mem_alloc( sizeof(ZDO_NwkIEEEAddrResp_t) + (cnt * sizeof ( uint16 )) );
|
|
\ ??ZDO_ParseAddrRsp_0:
|
|
\ 000028 ; Setup parameters for call to function osal_mem_alloc
|
|
\ 000028 A8.. MOV R0,?V2
|
|
\ 00002A E8 MOV A,R0
|
|
\ 00002B 28 ADD A,R0
|
|
\ 00002C F8 MOV R0,A
|
|
\ 00002D E4 CLR A
|
|
\ 00002E 33 RLC A
|
|
\ 00002F F9 MOV R1,A
|
|
\ 000030 E8 MOV A,R0
|
|
\ 000031 240D ADD A,#0xd
|
|
\ 000033 12.... LCALL ??Subroutine283_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_676:
|
|
\ 000036 8A.. MOV ?V0,R2
|
|
\ 000038 8B.. MOV ?V1,R3
|
|
2557
|
|
2558 if ( rsp )
|
|
\ 00003A EA MOV A,R2
|
|
\ 00003B 4B ORL A,R3
|
|
\ 00003C 7003 JNZ $+5
|
|
\ 00003E 02.... LJMP ??ZDO_ParseAddrRsp_1 & 0xFFFF
|
|
2559 {
|
|
2560 msg = inMsg->asdu;
|
|
\ 000041 EE MOV A,R6
|
|
\ 000042 12.... LCALL ??Subroutine223_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_355:
|
|
\ 000045 12.... LCALL ??Subroutine286_0 & 0xFFFF
|
|
2561
|
|
2562 rsp->status = *msg++;
|
|
\ ??CrossCallReturnLabel_693:
|
|
\ 000048 F8 MOV R0,A
|
|
\ 000049 8A82 MOV DPL,R2
|
|
\ 00004B 8B83 MOV DPH,R3
|
|
\ 00004D 12.... LCALL ?Subroutine39 & 0xFFFF
|
|
2563 if ( rsp->status == ZDO_SUCCESS )
|
|
\ ??CrossCallReturnLabel_54:
|
|
\ 000050 707C JNZ ??ZDO_ParseAddrRsp_1
|
|
2564 {
|
|
2565 osal_cpyExtAddr( rsp->extAddr, msg );
|
|
\ 000052 ; Setup parameters for call to function sAddrExtCpy
|
|
\ 000052 EE MOV A,R6
|
|
\ 000053 FC MOV R4,A
|
|
\ 000054 EF MOV A,R7
|
|
\ 000055 FD MOV R5,A
|
|
\ 000056 EA MOV A,R2
|
|
\ 000057 2403 ADD A,#0x3
|
|
\ 000059 FA MOV R2,A
|
|
\ 00005A E4 CLR A
|
|
\ 00005B 35.. ADDC A,?V1
|
|
\ 00005D FB MOV R3,A
|
|
\ 00005E 12.... LCALL `??sAddrExtCpy::?relay`; Banked call to: sAddrExtCpy
|
|
2566 msg += Z_EXTADDR_LEN;
|
|
\ 000061 EE MOV A,R6
|
|
\ 000062 2408 ADD A,#0x8
|
|
\ 000064 FE MOV R6,A
|
|
\ 000065 5001 JNC ??ZDO_ParseAddrRsp_2
|
|
\ 000067 0F INC R7
|
|
2567 rsp->nwkAddr = BUILD_UINT16( msg[0], msg[1] );
|
|
\ ??ZDO_ParseAddrRsp_2:
|
|
\ 000068 12.... LCALL ?Subroutine90 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_144:
|
|
\ 00006B A3 INC DPTR
|
|
\ 00006C 12.... LCALL ??Subroutine290_0 & 0xFFFF
|
|
2568
|
|
2569 msg += 2;
|
|
2570 rsp->numAssocDevs = 0;
|
|
\ ??CrossCallReturnLabel_708:
|
|
\ 00006F E5.. MOV A,?V0
|
|
\ 000071 240B ADD A,#0xb
|
|
\ 000073 12.... LCALL ?Subroutine153 & 0xFFFF
|
|
2571
|
|
2572 // StartIndex field is only present if NumAssocDev field is non-zero.
|
|
2573 if ( cnt > 0 )
|
|
\ ??CrossCallReturnLabel_257:
|
|
\ 000076 E5.. MOV A,?V2
|
|
\ 000078 6054 JZ ??ZDO_ParseAddrRsp_1
|
|
2574 {
|
|
2575 uint16 *pList = &(rsp->devList[0]);
|
|
\ 00007A E5.. MOV A,?V0
|
|
\ 00007C 240D ADD A,#0xd
|
|
\ 00007E F8 MOV R0,A
|
|
\ 00007F E4 CLR A
|
|
\ 000080 35.. ADDC A,?V1
|
|
\ 000082 F9 MOV R1,A
|
|
2576 byte n = cnt;
|
|
2577
|
|
2578 rsp->numAssocDevs = *msg++;
|
|
\ 000083 8E82 MOV DPL,R6
|
|
\ 000085 8F83 MOV DPH,R7
|
|
\ 000087 A3 INC DPTR
|
|
\ 000088 A3 INC DPTR
|
|
\ 000089 E0 MOVX A,@DPTR
|
|
\ 00008A C0E0 PUSH A
|
|
\ 00008C E5.. MOV A,?V0
|
|
\ 00008E 240B ADD A,#0xb
|
|
\ 000090 12.... LCALL ??Subroutine279_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_647:
|
|
\ 000093 D0E0 POP A
|
|
\ 000095 12.... LCALL ?Subroutine44 & 0xFFFF
|
|
2579 rsp->startIndex = *msg++;
|
|
\ ??CrossCallReturnLabel_60:
|
|
\ 000098 C0E0 PUSH A
|
|
\ 00009A 12.... LCALL ?Subroutine154 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_653:
|
|
\ 00009D D0E0 POP A
|
|
\ 00009F F0 MOVX @DPTR,A
|
|
\ 0000A0 EE MOV A,R6
|
|
\ 0000A1 2404 ADD A,#0x4
|
|
\ 0000A3 FE MOV R6,A
|
|
\ 0000A4 5001 JNC ??ZDO_ParseAddrRsp_3
|
|
\ 0000A6 0F INC R7
|
|
\ ??ZDO_ParseAddrRsp_3:
|
|
\ 0000A7 AC.. MOV R4,?V2
|
|
2580
|
|
2581 while ( n != 0 )
|
|
2582 {
|
|
2583 *pList++ = BUILD_UINT16( msg[0], msg[1] );
|
|
\ ??ZDO_ParseAddrRsp_4:
|
|
\ 0000A9 8E82 MOV DPL,R6
|
|
\ 0000AB 8F83 MOV DPH,R7
|
|
\ 0000AD E0 MOVX A,@DPTR
|
|
\ 0000AE F5.. MOV ?V2,A
|
|
\ 0000B0 A3 INC DPTR
|
|
\ 0000B1 E0 MOVX A,@DPTR
|
|
\ 0000B2 FB MOV R3,A
|
|
\ 0000B3 E5.. MOV A,?V2
|
|
\ 0000B5 8882 MOV DPL,R0
|
|
\ 0000B7 8983 MOV DPH,R1
|
|
\ 0000B9 12.... LCALL ??Subroutine239_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_413:
|
|
\ 0000BC E8 MOV A,R0
|
|
\ 0000BD 2402 ADD A,#0x2
|
|
\ 0000BF F8 MOV R0,A
|
|
\ 0000C0 5001 JNC ??ZDO_ParseAddrRsp_5
|
|
\ 0000C2 09 INC R1
|
|
2584 msg += sizeof( uint16 );
|
|
\ ??ZDO_ParseAddrRsp_5:
|
|
\ 0000C3 EE MOV A,R6
|
|
\ 0000C4 2402 ADD A,#0x2
|
|
\ 0000C6 FE MOV R6,A
|
|
\ 0000C7 5001 JNC ??ZDO_ParseAddrRsp_6
|
|
\ 0000C9 0F INC R7
|
|
2585 n--;
|
|
2586 }
|
|
\ ??ZDO_ParseAddrRsp_6:
|
|
\ 0000CA 1C DEC R4
|
|
\ 0000CB EC MOV A,R4
|
|
\ 0000CC 70DB JNZ ??ZDO_ParseAddrRsp_4
|
|
2587 }
|
|
2588 }
|
|
2589 }
|
|
2590
|
|
2591 return ( rsp );
|
|
\ ??ZDO_ParseAddrRsp_1:
|
|
\ 0000CE AA.. MOV R2,?V0
|
|
\ 0000D0 AB.. MOV R3,?V1
|
|
\ 0000D2 02.... LJMP ??Subroutine292_0 & 0xFFFF
|
|
2592 }
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine90:
|
|
\ 000000 F582 MOV DPL,A
|
|
\ 000002 8F83 MOV DPH,R7
|
|
\ 000004 12.... LCALL ?Subroutine187 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_306:
|
|
\ 000007 85..82 MOV DPL,?V0
|
|
\ 00000A 85..83 MOV DPH,?V1
|
|
\ 00000D 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine283_0:
|
|
\ 000000 FA MOV R2,A
|
|
\ 000001 E4 CLR A
|
|
\ 000002 39 ADDC A,R1
|
|
\ 000003 FB MOV R3,A
|
|
\ 000004 12.... LCALL `??osal_mem_alloc::?relay`; Banked call to: osal_mem_alloc
|
|
\ 000007 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine286_0:
|
|
\ 000000 12.... LCALL ?Subroutine190 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_705:
|
|
\ 000003 8E82 MOV DPL,R6
|
|
\ 000005 F583 MOV DPH,A
|
|
\ 000007 E0 MOVX A,@DPTR
|
|
\ 000008 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine44:
|
|
\ 000000 12.... LCALL ?Subroutine168 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_279:
|
|
\ 000003 E0 MOVX A,@DPTR
|
|
\ 000004 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine168:
|
|
\ 000000 12.... LCALL ?Subroutine209 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_337:
|
|
\ 000003 22 RET
|
|
2593
|
|
2594 /*********************************************************************
|
|
2595 * @fn ZDO_ParseNodeDescRsp
|
|
2596 *
|
|
2597 * @brief This function parses the Node_Desc_rsp message.
|
|
2598 *
|
|
2599 * @param inMsg - incoming message
|
|
2600 * @param pNDRsp - place to parse the message into
|
|
2601 *
|
|
2602 * @return none
|
|
2603 */
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
2604 void ZDO_ParseNodeDescRsp( zdoIncomingMsg_t *inMsg, ZDO_NodeDescRsp_t *pNDRsp )
|
|
\ ZDO_ParseNodeDescRsp:
|
|
2605 {
|
|
\ 000000 REQUIRE ?V0
|
|
\ 000000 REQUIRE ?V1
|
|
\ 000000 74F6 MOV A,#-0xa
|
|
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
|
\ 000005 ; Saved register size: 10
|
|
\ 000005 ; Auto size: 0
|
|
2606 uint8 *msg;
|
|
2607
|
|
2608 msg = inMsg->asdu;
|
|
\ 000005 12.... LCALL ?Subroutine10 & 0xFFFF
|
|
2609
|
|
2610 pNDRsp->status = *msg++;
|
|
2611 pNDRsp->nwkAddr = BUILD_UINT16( msg[0], msg[1] );
|
|
2612
|
|
2613 if ( pNDRsp->status == ZDP_SUCCESS )
|
|
\ ??CrossCallReturnLabel_2:
|
|
\ 000008 6003 JZ $+5
|
|
\ 00000A 02.... LJMP ??ZDO_ParseNodeDescRsp_0 & 0xFFFF
|
|
2614 {
|
|
2615 msg += 2;
|
|
2616 pNDRsp->nodeDesc.LogicalType = *msg & 0x07;
|
|
\ 00000D E8 MOV A,R0
|
|
\ 00000E 2402 ADD A,#0x2
|
|
\ 000010 FA MOV R2,A
|
|
\ 000011 E4 CLR A
|
|
\ 000012 39 ADDC A,R1
|
|
\ 000013 FB MOV R3,A
|
|
\ 000014 EC MOV A,R4
|
|
\ 000015 2403 ADD A,#0x3
|
|
\ 000017 FE MOV R6,A
|
|
\ 000018 E4 CLR A
|
|
\ 000019 3D ADDC A,R5
|
|
\ 00001A FF MOV R7,A
|
|
\ 00001B 8A82 MOV DPL,R2
|
|
\ 00001D 8B83 MOV DPH,R3
|
|
\ 00001F E0 MOVX A,@DPTR
|
|
\ 000020 5407 ANL A,#0x7
|
|
\ 000022 F5.. MOV ?V0,A
|
|
\ 000024 8E82 MOV DPL,R6
|
|
\ 000026 8F83 MOV DPH,R7
|
|
\ 000028 E0 MOVX A,@DPTR
|
|
\ 000029 54F8 ANL A,#0xf8
|
|
\ 00002B 45.. ORL A,?V0
|
|
\ 00002D F5.. MOV ?V1,A
|
|
\ 00002F 12.... LCALL ?Subroutine45 & 0xFFFF
|
|
2617
|
|
2618 pNDRsp->nodeDesc.ComplexDescAvail = ( *msg & 0x08 ) >> 3;
|
|
\ ??CrossCallReturnLabel_62:
|
|
\ 000032 A2E3 MOV C,0xE0 /* A */.3
|
|
\ 000034 E4 CLR A
|
|
\ 000035 33 RLC A
|
|
\ 000036 F5.. MOV ?V0,A
|
|
\ 000038 A2E0 MOV C,0xE0 /* A */.0
|
|
\ 00003A E4 CLR A
|
|
\ 00003B 33 RLC A
|
|
\ 00003C 33 RLC A
|
|
\ 00003D 33 RLC A
|
|
\ 00003E 33 RLC A
|
|
\ 00003F F5.. MOV ?V0,A
|
|
\ 000041 74F7 MOV A,#-0x9
|
|
\ 000043 55.. ANL A,?V1
|
|
\ 000045 45.. ORL A,?V0
|
|
\ 000047 8E82 MOV DPL,R6
|
|
\ 000049 8F83 MOV DPH,R7
|
|
\ 00004B 12.... LCALL ?Subroutine45 & 0xFFFF
|
|
2619 pNDRsp->nodeDesc.UserDescAvail = ( *msg & 0x10 ) >> 4;
|
|
\ ??CrossCallReturnLabel_63:
|
|
\ 00004E A2E4 MOV C,0xE0 /* A */.4
|
|
\ 000050 E4 CLR A
|
|
\ 000051 33 RLC A
|
|
\ 000052 FA MOV R2,A
|
|
\ 000053 A2E0 MOV C,0xE0 /* A */.0
|
|
\ 000055 E4 CLR A
|
|
\ 000056 33 RLC A
|
|
\ 000057 C4 SWAP A
|
|
\ 000058 FA MOV R2,A
|
|
\ 000059 8E82 MOV DPL,R6
|
|
\ 00005B 8F83 MOV DPH,R7
|
|
\ 00005D E0 MOVX A,@DPTR
|
|
\ 00005E 54EF ANL A,#0xef
|
|
\ 000060 4A ORL A,R2
|
|
\ 000061 F0 MOVX @DPTR,A
|
|
2620
|
|
2621 msg++; // Reserved bits.
|
|
2622 pNDRsp->nodeDesc.FrequencyBand = (*msg >> 3) & 0x1f;
|
|
\ 000062 E8 MOV A,R0
|
|
\ 000063 2403 ADD A,#0x3
|
|
\ 000065 FA MOV R2,A
|
|
\ 000066 E4 CLR A
|
|
\ 000067 39 ADDC A,R1
|
|
\ 000068 FB MOV R3,A
|
|
\ 000069 EC MOV A,R4
|
|
\ 00006A 2404 ADD A,#0x4
|
|
\ 00006C 0E INC R6
|
|
\ 00006D E4 CLR A
|
|
\ 00006E 3D ADDC A,R5
|
|
\ 00006F FF MOV R7,A
|
|
\ 000070 8A82 MOV DPL,R2
|
|
\ 000072 8B83 MOV DPH,R3
|
|
\ 000074 E0 MOVX A,@DPTR
|
|
\ 000075 54F8 ANL A,#0xf8
|
|
\ 000077 F5.. MOV ?V0,A
|
|
\ 000079 8E82 MOV DPL,R6
|
|
\ 00007B 8F83 MOV DPH,R7
|
|
\ 00007D E0 MOVX A,@DPTR
|
|
\ 00007E 5407 ANL A,#0x7
|
|
\ 000080 45.. ORL A,?V0
|
|
\ 000082 F5.. MOV ?V0,A
|
|
\ 000084 12.... LCALL ?Subroutine45 & 0xFFFF
|
|
2623 pNDRsp->nodeDesc.APSFlags = *msg++ & 0x07;
|
|
\ ??CrossCallReturnLabel_64:
|
|
\ 000087 5407 ANL A,#0x7
|
|
\ 000089 FA MOV R2,A
|
|
\ 00008A 74F8 MOV A,#-0x8
|
|
\ 00008C 55.. ANL A,?V0
|
|
\ 00008E 4A ORL A,R2
|
|
\ 00008F 8E82 MOV DPL,R6
|
|
\ 000091 8F83 MOV DPH,R7
|
|
\ 000093 12.... LCALL ?Subroutine36 & 0xFFFF
|
|
2624 pNDRsp->nodeDesc.CapabilityFlags = *msg++;
|
|
\ ??CrossCallReturnLabel_46:
|
|
\ 000096 8C82 MOV DPL,R4
|
|
\ 000098 8D83 MOV DPH,R5
|
|
\ 00009A A3 INC DPTR
|
|
\ 00009B A3 INC DPTR
|
|
\ 00009C A3 INC DPTR
|
|
\ 00009D A3 INC DPTR
|
|
\ 00009E A3 INC DPTR
|
|
\ 00009F 12.... LCALL ?Subroutine37 & 0xFFFF
|
|
2625 pNDRsp->nodeDesc.ManufacturerCode[0] = *msg++;
|
|
\ ??CrossCallReturnLabel_49:
|
|
\ 0000A2 A3 INC DPTR
|
|
\ 0000A3 A3 INC DPTR
|
|
\ 0000A4 12.... LCALL ??Subroutine277_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_628:
|
|
\ 0000A7 12.... LCALL ?Subroutine33 & 0xFFFF
|
|
2626 pNDRsp->nodeDesc.ManufacturerCode[1] = *msg++;
|
|
\ ??CrossCallReturnLabel_40:
|
|
\ 0000AA 12.... LCALL ?Subroutine91 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_147:
|
|
\ 0000AD 12.... LCALL ?Subroutine33 & 0xFFFF
|
|
2627 pNDRsp->nodeDesc.MaxBufferSize = *msg++;
|
|
\ ??CrossCallReturnLabel_41:
|
|
\ 0000B0 A3 INC DPTR
|
|
\ 0000B1 12.... LCALL ??Subroutine277_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_629:
|
|
\ 0000B4 12.... LCALL ?Subroutine25 & 0xFFFF
|
|
2628 pNDRsp->nodeDesc.MaxInTransferSize[0] = *msg++;
|
|
\ ??CrossCallReturnLabel_21:
|
|
\ 0000B7 12.... LCALL ?Subroutine91 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_148:
|
|
\ 0000BA 12.... LCALL ?Subroutine25 & 0xFFFF
|
|
2629 pNDRsp->nodeDesc.MaxInTransferSize[1] = *msg++;
|
|
\ ??CrossCallReturnLabel_22:
|
|
\ 0000BD A3 INC DPTR
|
|
\ 0000BE 12.... LCALL ?Subroutine91 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_149:
|
|
\ 0000C1 A3 INC DPTR
|
|
\ 0000C2 A3 INC DPTR
|
|
\ 0000C3 A3 INC DPTR
|
|
\ 0000C4 A3 INC DPTR
|
|
\ 0000C5 A3 INC DPTR
|
|
\ 0000C6 A3 INC DPTR
|
|
\ 0000C7 A3 INC DPTR
|
|
\ 0000C8 A3 INC DPTR
|
|
\ 0000C9 A3 INC DPTR
|
|
\ 0000CA F0 MOVX @DPTR,A
|
|
\ 0000CB E8 MOV A,R0
|
|
\ 0000CC 240A ADD A,#0xa
|
|
\ 0000CE F8 MOV R0,A
|
|
\ 0000CF 5001 JNC ??ZDO_ParseNodeDescRsp_1
|
|
\ 0000D1 09 INC R1
|
|
2630 pNDRsp->nodeDesc.ServerMask = BUILD_UINT16( msg[0], msg[1] );
|
|
\ ??ZDO_ParseNodeDescRsp_1:
|
|
\ 0000D2 F582 MOV DPL,A
|
|
\ 0000D4 8983 MOV DPH,R1
|
|
\ 0000D6 E0 MOVX A,@DPTR
|
|
\ 0000D7 FE MOV R6,A
|
|
\ 0000D8 A3 INC DPTR
|
|
\ 0000D9 E0 MOVX A,@DPTR
|
|
\ 0000DA FB MOV R3,A
|
|
\ 0000DB EC MOV A,R4
|
|
\ 0000DC 240B ADD A,#0xb
|
|
\ 0000DE F582 MOV DPL,A
|
|
\ 0000E0 E4 CLR A
|
|
\ 0000E1 3D ADDC A,R5
|
|
\ 0000E2 F583 MOV DPH,A
|
|
\ 0000E4 EE MOV A,R6
|
|
\ 0000E5 12.... LCALL ??Subroutine239_0 & 0xFFFF
|
|
2631 msg += 2;
|
|
2632 pNDRsp->nodeDesc.MaxOutTransferSize[0] = *msg++;
|
|
\ ??CrossCallReturnLabel_414:
|
|
\ 0000E8 8882 MOV DPL,R0
|
|
\ 0000EA 8983 MOV DPH,R1
|
|
\ 0000EC A3 INC DPTR
|
|
\ 0000ED A3 INC DPTR
|
|
\ 0000EE E0 MOVX A,@DPTR
|
|
\ 0000EF C0E0 PUSH A
|
|
\ 0000F1 EC MOV A,R4
|
|
\ 0000F2 240D ADD A,#0xd
|
|
\ 0000F4 F582 MOV DPL,A
|
|
\ 0000F6 E4 CLR A
|
|
\ 0000F7 3D ADDC A,R5
|
|
\ 0000F8 F583 MOV DPH,A
|
|
\ 0000FA D0E0 POP A
|
|
\ 0000FC 12.... LCALL ?Subroutine37 & 0xFFFF
|
|
2633 pNDRsp->nodeDesc.MaxOutTransferSize[1] = *msg++;
|
|
2634 pNDRsp->nodeDesc.DescriptorCapability = *msg;
|
|
2635 }
|
|
\ ??CrossCallReturnLabel_50:
|
|
\ 0000FF E0 MOVX A,@DPTR
|
|
\ 000100 C0E0 PUSH A
|
|
\ 000102 EC MOV A,R4
|
|
\ 000103 12.... LCALL ??Subroutine271_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_613:
|
|
\ 000106 3D ADDC A,R5
|
|
\ 000107 F583 MOV DPH,A
|
|
\ 000109 D0E0 POP A
|
|
\ 00010B 12.... LCALL ?Subroutine36 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_47:
|
|
\ 00010E C0E0 PUSH A
|
|
\ 000110 EC MOV A,R4
|
|
\ 000111 12.... LCALL ?Subroutine198 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_318:
|
|
\ 000114 3D ADDC A,R5
|
|
\ 000115 F583 MOV DPH,A
|
|
\ 000117 D0E0 POP A
|
|
\ 000119 F0 MOVX @DPTR,A
|
|
2636 }
|
|
\ ??ZDO_ParseNodeDescRsp_0:
|
|
\ 00011A 02.... LJMP ??Subroutine222_0 & 0xFFFF
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine45:
|
|
\ 000000 F0 MOVX @DPTR,A
|
|
\ 000001 8A82 MOV DPL,R2
|
|
\ 000003 8B83 MOV DPH,R3
|
|
\ 000005 E0 MOVX A,@DPTR
|
|
\ 000006 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine36:
|
|
\ 000000 12.... LCALL ?Subroutine170 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_283:
|
|
\ 000003 A3 INC DPTR
|
|
\ 000004 E0 MOVX A,@DPTR
|
|
\ 000005 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine33:
|
|
\ 000000 12.... LCALL ?Subroutine165 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_274:
|
|
\ 000003 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine165:
|
|
\ 000000 A3 INC DPTR
|
|
\ 000001 A3 INC DPTR
|
|
\ 000002 A3 INC DPTR
|
|
\ 000003 A3 INC DPTR
|
|
\ 000004 A3 INC DPTR
|
|
\ 000005 A3 INC DPTR
|
|
\ 000006 12.... LCALL ?Subroutine207 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_331:
|
|
\ 000009 A3 INC DPTR
|
|
\ 00000A A3 INC DPTR
|
|
\ 00000B A3 INC DPTR
|
|
\ 00000C 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine25:
|
|
\ 000000 A3 INC DPTR
|
|
\ 000001 A3 INC DPTR
|
|
\ 000002 12.... LCALL ?Subroutine165 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_275:
|
|
\ 000005 A3 INC DPTR
|
|
\ 000006 A3 INC DPTR
|
|
\ 000007 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine10:
|
|
\ 000000 12.... LCALL ?Subroutine197 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_694:
|
|
\ 000003 12.... LCALL ?Subroutine183 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_636:
|
|
\ 000006 8882 MOV DPL,R0
|
|
\ 000008 12.... LCALL ?Subroutine182 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_632:
|
|
\ 00000B 12.... LCALL ?Subroutine208 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_335:
|
|
\ 00000E A3 INC DPTR
|
|
\ 00000F A882 MOV R0,DPL
|
|
\ 000011 A983 MOV R1,DPH
|
|
\ 000013 E0 MOVX A,@DPTR
|
|
\ 000014 FE MOV R6,A
|
|
\ 000015 A3 INC DPTR
|
|
\ 000016 E0 MOVX A,@DPTR
|
|
\ 000017 FB MOV R3,A
|
|
\ 000018 EE MOV A,R6
|
|
\ 000019 8C82 MOV DPL,R4
|
|
\ 00001B 8D83 MOV DPH,R5
|
|
\ 00001D A3 INC DPTR
|
|
\ 00001E F0 MOVX @DPTR,A
|
|
\ 00001F A3 INC DPTR
|
|
\ 000020 EB MOV A,R3
|
|
\ 000021 F0 MOVX @DPTR,A
|
|
\ 000022 8C82 MOV DPL,R4
|
|
\ 000024 8D83 MOV DPH,R5
|
|
\ 000026 E0 MOVX A,@DPTR
|
|
\ 000027 22 RET
|
|
2637
|
|
2638 /*********************************************************************
|
|
2639 * @fn ZDO_ParesPowerDescRsp
|
|
2640 *
|
|
2641 * @brief This function parses the Power_Desc_rsp message.
|
|
2642 *
|
|
2643 * @param inMsg - incoming message
|
|
2644 * @param pNPRsp - place to parse the message into
|
|
2645 *
|
|
2646 * @return none
|
|
2647 */
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
2648 void ZDO_ParsePowerDescRsp( zdoIncomingMsg_t *inMsg, ZDO_PowerRsp_t *pNPRsp )
|
|
\ ZDO_ParsePowerDescRsp:
|
|
2649 {
|
|
\ 000000 REQUIRE ?V0
|
|
\ 000000 REQUIRE ?V1
|
|
\ 000000 REQUIRE ?V2
|
|
\ 000000 REQUIRE ?V3
|
|
\ 000000 74F4 MOV A,#-0xc
|
|
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
|
\ 000005 ; Saved register size: 12
|
|
\ 000005 ; Auto size: 0
|
|
2650 uint8 *msg;
|
|
2651
|
|
2652 msg = inMsg->asdu;
|
|
\ 000005 12.... LCALL ??Subroutine267_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_569:
|
|
\ 000008 F583 MOV DPH,A
|
|
\ 00000A 12.... LCALL ??Subroutine251_0 & 0xFFFF
|
|
2653 pNPRsp->status = *msg++;
|
|
\ ??CrossCallReturnLabel_480:
|
|
\ 00000D 12.... LCALL ?Subroutine28 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_618:
|
|
\ 000010 AA82 MOV R2,DPL
|
|
\ 000012 AB83 MOV R3,DPH
|
|
2654 pNPRsp->nwkAddr = BUILD_UINT16( msg[0], msg[1] );
|
|
\ 000014 E0 MOVX A,@DPTR
|
|
\ 000015 FE MOV R6,A
|
|
\ 000016 A3 INC DPTR
|
|
\ 000017 E0 MOVX A,@DPTR
|
|
\ 000018 F9 MOV R1,A
|
|
\ 000019 EE MOV A,R6
|
|
\ 00001A 8C82 MOV DPL,R4
|
|
\ 00001C 8D83 MOV DPH,R5
|
|
\ 00001E A3 INC DPTR
|
|
\ 00001F 12.... LCALL ??Subroutine290_0 & 0xFFFF
|
|
2655
|
|
2656 if ( pNPRsp->status == ZDP_SUCCESS )
|
|
\ ??CrossCallReturnLabel_709:
|
|
\ 000022 8C82 MOV DPL,R4
|
|
\ 000024 8D83 MOV DPH,R5
|
|
\ 000026 E0 MOVX A,@DPTR
|
|
\ 000027 6003 JZ $+5
|
|
\ 000029 02.... LJMP ??ZDO_ParsePowerDescRsp_0 & 0xFFFF
|
|
2657 {
|
|
2658 msg += 2;
|
|
2659 pNPRsp->pwrDesc.AvailablePowerSources = *msg >> 4;
|
|
\ 00002C EA MOV A,R2
|
|
\ 00002D 2402 ADD A,#0x2
|
|
\ 00002F F8 MOV R0,A
|
|
\ 000030 E4 CLR A
|
|
\ 000031 3B ADDC A,R3
|
|
\ 000032 F9 MOV R1,A
|
|
\ 000033 E8 MOV A,R0
|
|
\ 000034 FE MOV R6,A
|
|
\ 000035 E9 MOV A,R1
|
|
\ 000036 FF MOV R7,A
|
|
\ 000037 EC MOV A,R4
|
|
\ 000038 2403 ADD A,#0x3
|
|
\ 00003A E4 CLR A
|
|
\ 00003B 3D ADDC A,R5
|
|
\ 00003C 0C INC R4
|
|
\ 00003D 0C INC R4
|
|
\ 00003E 0C INC R4
|
|
\ 00003F FD MOV R5,A
|
|
\ 000040 8C82 MOV DPL,R4
|
|
\ 000042 F583 MOV DPH,A
|
|
\ 000044 E0 MOVX A,@DPTR
|
|
\ 000045 540F ANL A,#0xf
|
|
\ 000047 F5.. MOV ?V2,A
|
|
\ 000049 A3 INC DPTR
|
|
\ 00004A E0 MOVX A,@DPTR
|
|
\ 00004B 12.... LCALL ?Subroutine119 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_194:
|
|
\ 00004E 7404 MOV A,#0x4
|
|
\ 000050 78.. MOV R0,#?V0
|
|
\ 000052 12.... LCALL ?S_SHL
|
|
\ 000055 E5.. MOV A,?V2
|
|
\ 000057 45.. ORL A,?V0
|
|
\ 000059 F8 MOV R0,A
|
|
\ 00005A A9.. MOV R1,?V3
|
|
\ 00005C 8C82 MOV DPL,R4
|
|
\ 00005E 8D83 MOV DPH,R5
|
|
\ 000060 12.... LCALL ??Subroutine290_0 & 0xFFFF
|
|
2660 pNPRsp->pwrDesc.PowerMode = *msg++ & 0x0F;
|
|
\ ??CrossCallReturnLabel_710:
|
|
\ 000063 E8 MOV A,R0
|
|
\ 000064 54F0 ANL A,#0xf0
|
|
\ 000066 F8 MOV R0,A
|
|
\ 000067 8E82 MOV DPL,R6
|
|
\ 000069 8F83 MOV DPH,R7
|
|
\ 00006B E0 MOVX A,@DPTR
|
|
\ 00006C 540F ANL A,#0xf
|
|
\ 00006E FE MOV R6,A
|
|
\ 00006F E8 MOV A,R0
|
|
\ 000070 4E ORL A,R6
|
|
\ 000071 F5.. MOV ?V0,A
|
|
\ 000073 E9 MOV A,R1
|
|
\ 000074 F5.. MOV ?V1,A
|
|
\ 000076 8C82 MOV DPL,R4
|
|
\ 000078 8D83 MOV DPH,R5
|
|
\ 00007A E5.. MOV A,?V0
|
|
\ 00007C 12.... LCALL ??Subroutine290_0 & 0xFFFF
|
|
2661 pNPRsp->pwrDesc.CurrentPowerSourceLevel = *msg >> 4;
|
|
\ ??CrossCallReturnLabel_711:
|
|
\ 00007F EA MOV A,R2
|
|
\ 000080 2403 ADD A,#0x3
|
|
\ 000082 F8 MOV R0,A
|
|
\ 000083 E4 CLR A
|
|
\ 000084 3B ADDC A,R3
|
|
\ 000085 F9 MOV R1,A
|
|
\ 000086 E8 MOV A,R0
|
|
\ 000087 FE MOV R6,A
|
|
\ 000088 E9 MOV A,R1
|
|
\ 000089 FF MOV R7,A
|
|
\ 00008A E5.. MOV A,?V0
|
|
\ 00008C F5.. MOV ?V2,A
|
|
\ 00008E E5.. MOV A,?V1
|
|
\ 000090 540F ANL A,#0xf
|
|
\ 000092 12.... LCALL ?Subroutine119 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_195:
|
|
\ 000095 740C MOV A,#0xc
|
|
\ 000097 78.. MOV R0,#?V0
|
|
\ 000099 12.... LCALL ?S_SHL
|
|
\ 00009C E5.. MOV A,?V3
|
|
\ 00009E 45.. ORL A,?V1
|
|
\ 0000A0 F9 MOV R1,A
|
|
\ 0000A1 8C82 MOV DPL,R4
|
|
\ 0000A3 8D83 MOV DPH,R5
|
|
\ 0000A5 E5.. MOV A,?V2
|
|
\ 0000A7 12.... LCALL ??Subroutine290_0 & 0xFFFF
|
|
2662 pNPRsp->pwrDesc.CurrentPowerSource = *msg++ & 0x0F;
|
|
\ ??CrossCallReturnLabel_712:
|
|
\ 0000AA 8E82 MOV DPL,R6
|
|
\ 0000AC 8F83 MOV DPH,R7
|
|
\ 0000AE E0 MOVX A,@DPTR
|
|
\ 0000AF 540F ANL A,#0xf
|
|
\ 0000B1 F8 MOV R0,A
|
|
\ 0000B2 EA MOV A,R2
|
|
\ 0000B3 2404 ADD A,#0x4
|
|
\ 0000B5 8C82 MOV DPL,R4
|
|
\ 0000B7 8D83 MOV DPH,R5
|
|
\ 0000B9 A3 INC DPTR
|
|
\ 0000BA E0 MOVX A,@DPTR
|
|
\ 0000BB 54F0 ANL A,#0xf0
|
|
\ 0000BD F0 MOVX @DPTR,A
|
|
\ 0000BE E8 MOV A,R0
|
|
\ 0000BF F9 MOV R1,A
|
|
\ 0000C0 8C82 MOV DPL,R4
|
|
\ 0000C2 8D83 MOV DPH,R5
|
|
\ 0000C4 A3 INC DPTR
|
|
\ 0000C5 E0 MOVX A,@DPTR
|
|
\ 0000C6 49 ORL A,R1
|
|
\ 0000C7 F0 MOVX @DPTR,A
|
|
2663 }
|
|
2664 }
|
|
\ ??ZDO_ParsePowerDescRsp_0:
|
|
\ 0000C8 02.... LJMP ??Subroutine219_0 & 0xFFFF
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine119:
|
|
\ 000000 F5.. MOV ?V3,A
|
|
\ 000002 8882 MOV DPL,R0
|
|
\ 000004 8983 MOV DPH,R1
|
|
\ 000006 E0 MOVX A,@DPTR
|
|
\ 000007 C4 SWAP A
|
|
\ 000008 540F ANL A,#0xf
|
|
\ 00000A F5.. MOV ?V0,A
|
|
\ 00000C 75..00 MOV ?V1,#0x0
|
|
\ 00000F 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine28:
|
|
\ 000000 8A82 MOV DPL,R2
|
|
\ 000002 REQUIRE ??Subroutine272_0
|
|
\ 000002 ; // Fall through to label ??Subroutine272_0
|
|
2665
|
|
2666 /*********************************************************************
|
|
2667 * @fn ZDO_ParseSimpleDescRsp
|
|
2668 *
|
|
2669 * @brief This function parse the Simple_Desc_rsp message.
|
|
2670 *
|
|
2671 * NOTE: The pAppInClusterList and pAppOutClusterList fields
|
|
2672 * in the SimpleDescriptionFormat_t structure are allocated
|
|
2673 * and the calling function needs to free [osal_msg_free()]
|
|
2674 * these buffers.
|
|
2675 *
|
|
2676 * @param inMsg - incoming message
|
|
2677 * @param pSimpleDescRsp - place to parse the message into
|
|
2678 *
|
|
2679 * @return none
|
|
2680 */
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
2681 void ZDO_ParseSimpleDescRsp( zdoIncomingMsg_t *inMsg, ZDO_SimpleDescRsp_t *pSimpleDescRsp )
|
|
\ ZDO_ParseSimpleDescRsp:
|
|
2682 {
|
|
\ 000000 74F7 MOV A,#-0x9
|
|
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
|
\ 000005 ; Saved register size: 9
|
|
\ 000005 ; Auto size: 0
|
|
2683 uint8 *msg;
|
|
2684
|
|
2685 msg = inMsg->asdu;
|
|
\ 000005 12.... LCALL ?Subroutine10 & 0xFFFF
|
|
2686 pSimpleDescRsp->status = *msg++;
|
|
2687 pSimpleDescRsp->nwkAddr = BUILD_UINT16( msg[0], msg[1] );
|
|
2688 msg += sizeof ( uint16 );
|
|
2689 msg++; // Skip past the length field.
|
|
2690
|
|
2691 if ( pSimpleDescRsp->status == ZDP_SUCCESS )
|
|
\ ??CrossCallReturnLabel_3:
|
|
\ 000008 7011 JNZ ??ZDO_ParseSimpleDescRsp_0
|
|
2692 {
|
|
2693 ZDO_ParseSimpleDescBuf( msg, &(pSimpleDescRsp->simpleDesc) );
|
|
\ 00000A ; Setup parameters for call to function ZDO_ParseSimpleDescBuf
|
|
\ 00000A EC MOV A,R4
|
|
\ 00000B 2403 ADD A,#0x3
|
|
\ 00000D FC MOV R4,A
|
|
\ 00000E 5001 JNC ??ZDO_ParseSimpleDescRsp_1
|
|
\ 000010 0D INC R5
|
|
\ ??ZDO_ParseSimpleDescRsp_1:
|
|
\ 000011 E8 MOV A,R0
|
|
\ 000012 2403 ADD A,#0x3
|
|
\ 000014 FA MOV R2,A
|
|
\ 000015 E4 CLR A
|
|
\ 000016 39 ADDC A,R1
|
|
\ 000017 FB MOV R3,A
|
|
\ 000018 12.... LCALL `??ZDO_ParseSimpleDescBuf::?relay`; Banked call to: ZDO_ParseSimpleDescBuf
|
|
2694 }
|
|
2695 }
|
|
\ ??ZDO_ParseSimpleDescRsp_0:
|
|
\ 00001B 02.... LJMP ?Subroutine1 & 0xFFFF
|
|
2696
|
|
2697 /*********************************************************************
|
|
2698 * @fn ZDO_ParseEPListRsp
|
|
2699 *
|
|
2700 * @brief This parse the Active_EP_rsp or Match_Desc_rsp message.
|
|
2701 *
|
|
2702 * @param inMsg - incoming message
|
|
2703 *
|
|
2704 * @return none
|
|
2705 */
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
2706 ZDO_ActiveEndpointRsp_t *ZDO_ParseEPListRsp( zdoIncomingMsg_t *inMsg )
|
|
\ ZDO_ParseEPListRsp:
|
|
2707 {
|
|
\ 000000 REQUIRE ?V0
|
|
\ 000000 REQUIRE ?V1
|
|
\ 000000 REQUIRE ?V2
|
|
\ 000000 REQUIRE ?V3
|
|
\ 000000 REQUIRE ?V4
|
|
\ 000000 REQUIRE ?V5
|
|
\ 000000 REQUIRE ?V6
|
|
\ 000000 74F1 MOV A,#-0xf
|
|
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
|
\ 000005 ; Saved register size: 15
|
|
\ 000005 ; Auto size: 0
|
|
2708 ZDO_ActiveEndpointRsp_t *pRsp;
|
|
2709 uint8 *msg;
|
|
2710 uint8 Status;
|
|
2711 uint8 cnt;
|
|
2712
|
|
2713 msg = inMsg->asdu;
|
|
\ 000005 12.... LCALL ?Subroutine77 & 0xFFFF
|
|
2714 Status = *msg++;
|
|
\ ??CrossCallReturnLabel_120:
|
|
\ 000008 F5.. MOV ?V3,A
|
|
\ 00000A A3 INC DPTR
|
|
\ 00000B AE82 MOV R6,DPL
|
|
\ 00000D AF83 MOV R7,DPH
|
|
2715 cnt = msg[2];
|
|
\ 00000F A3 INC DPTR
|
|
\ 000010 A3 INC DPTR
|
|
\ 000011 E0 MOVX A,@DPTR
|
|
\ 000012 F5.. MOV ?V2,A
|
|
2716
|
|
2717 pRsp = (ZDO_ActiveEndpointRsp_t *)osal_mem_alloc( sizeof( ZDO_ActiveEndpointRsp_t ) + cnt );
|
|
\ 000014 ; Setup parameters for call to function osal_mem_alloc
|
|
\ 000014 12.... LCALL ?Subroutine148 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_625:
|
|
\ 000017 8A.. MOV ?V0,R2
|
|
\ 000019 8B.. MOV ?V1,R3
|
|
2718 if ( pRsp )
|
|
\ 00001B EA MOV A,R2
|
|
\ 00001C 4B ORL A,R3
|
|
\ 00001D 6045 JZ ??ZDO_ParseEPListRsp_0
|
|
2719 {
|
|
2720 pRsp->status = Status;
|
|
\ 00001F 8A82 MOV DPL,R2
|
|
\ 000021 8B83 MOV DPH,R3
|
|
\ 000023 E5.. MOV A,?V3
|
|
\ 000025 F0 MOVX @DPTR,A
|
|
2721 pRsp->nwkAddr = BUILD_UINT16( msg[0], msg[1] );
|
|
\ 000026 8E82 MOV DPL,R6
|
|
\ 000028 8F83 MOV DPH,R7
|
|
\ 00002A 12.... LCALL ?Subroutine113 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_363:
|
|
\ 00002D 85..82 MOV DPL,?V0
|
|
\ 000030 8B83 MOV DPH,R3
|
|
\ 000032 A3 INC DPTR
|
|
\ 000033 12.... LCALL ??Subroutine290_0 & 0xFFFF
|
|
2722 msg += sizeof( uint16 );
|
|
2723 pRsp->cnt = cnt;
|
|
\ ??CrossCallReturnLabel_713:
|
|
\ 000036 85..82 MOV DPL,?V0
|
|
\ 000039 8B83 MOV DPH,R3
|
|
\ 00003B A3 INC DPTR
|
|
\ 00003C A3 INC DPTR
|
|
\ 00003D A3 INC DPTR
|
|
\ 00003E E5.. MOV A,?V2
|
|
\ 000040 12.... LCALL ?Subroutine168 & 0xFFFF
|
|
2724 msg++; // pass cnt
|
|
2725 osal_memcpy( pRsp->epList, msg, cnt );
|
|
2726 }
|
|
\ ??CrossCallReturnLabel_278:
|
|
\ 000043 A982 MOV R1,DPL
|
|
\ 000045 AA83 MOV R2,DPH
|
|
\ 000047 89.. MOV ?V4,R1
|
|
\ 000049 8A.. MOV ?V5,R2
|
|
\ 00004B 88.. MOV ?V6,R0
|
|
\ 00004D 78.. MOV R0,#?V4
|
|
\ 00004F 12.... LCALL ?PUSH_XSTACK_I_THREE
|
|
\ 000052 AC.. MOV R4,?V2
|
|
\ 000054 7D00 MOV R5,#0x0
|
|
\ 000056 E5.. MOV A,?V0
|
|
\ 000058 2404 ADD A,#0x4
|
|
\ 00005A FA MOV R2,A
|
|
\ 00005B E4 CLR A
|
|
\ 00005C 35.. ADDC A,?V1
|
|
\ 00005E 12.... LCALL ?Subroutine150 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_620:
|
|
\ 000061 12.... LCALL ?DEALLOC_XSTACK8
|
|
2727
|
|
2728 return ( pRsp );
|
|
\ ??ZDO_ParseEPListRsp_0:
|
|
\ 000064 AA.. MOV R2,?V0
|
|
\ 000066 AB.. MOV R3,?V1
|
|
\ 000068 REQUIRE ?Subroutine6
|
|
\ 000068 ; // Fall through to label ?Subroutine6
|
|
2729 }
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine6:
|
|
\ 000000 7F07 MOV R7,#0x7
|
|
\ 000002 02.... LJMP ?BANKED_LEAVE_XDATA
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine150:
|
|
\ 000000 FB MOV R3,A
|
|
\ 000001 REQUIRE ??Subroutine274_0
|
|
\ 000001 ; // Fall through to label ??Subroutine274_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine148:
|
|
\ 000000 2404 ADD A,#0x4
|
|
\ 000002 REQUIRE ??Subroutine275_0
|
|
\ 000002 ; // Fall through to label ??Subroutine275_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine275_0:
|
|
\ 000000 FA MOV R2,A
|
|
\ 000001 E4 CLR A
|
|
\ 000002 3400 ADDC A,#0x0
|
|
\ 000004 FB MOV R3,A
|
|
\ 000005 12.... LCALL `??osal_mem_alloc::?relay`; Banked call to: osal_mem_alloc
|
|
\ 000008 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine77:
|
|
\ 000000 12.... LCALL ?Subroutine191 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_307:
|
|
\ 000003 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine191:
|
|
\ 000000 EA MOV A,R2
|
|
\ 000001 12.... LCALL ?Subroutine214 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_698:
|
|
\ 000004 3B ADDC A,R3
|
|
\ 000005 F583 MOV DPH,A
|
|
\ 000007 E0 MOVX A,@DPTR
|
|
\ 000008 FE MOV R6,A
|
|
\ 000009 A3 INC DPTR
|
|
\ 00000A E0 MOVX A,@DPTR
|
|
\ 00000B 8E82 MOV DPL,R6
|
|
\ 00000D F583 MOV DPH,A
|
|
\ 00000F E0 MOVX A,@DPTR
|
|
\ 000010 22 RET
|
|
2730
|
|
2731 /*********************************************************************
|
|
2732 * @fn ZDO_ParseServerDiscRsp
|
|
2733 *
|
|
2734 * @brief Parse the Server_Discovery_rsp message.
|
|
2735 *
|
|
2736 * @param inMsg - incoming message.
|
|
2737 * @param pRsp - place to put the parsed information.
|
|
2738 *
|
|
2739 * @return none
|
|
2740 */
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
2741 void ZDO_ParseServerDiscRsp( zdoIncomingMsg_t *inMsg, ZDO_ServerDiscRsp_t *pRsp )
|
|
\ ZDO_ParseServerDiscRsp:
|
|
2742 {
|
|
\ 000000 74F7 MOV A,#-0x9
|
|
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
|
\ 000005 ; Saved register size: 9
|
|
\ 000005 ; Auto size: 0
|
|
2743 pRsp->status = inMsg->asdu[0];
|
|
\ 000005 EA MOV A,R2
|
|
\ 000006 2413 ADD A,#0x13
|
|
\ 000008 F8 MOV R0,A
|
|
\ 000009 E4 CLR A
|
|
\ 00000A 3B ADDC A,R3
|
|
\ 00000B F9 MOV R1,A
|
|
\ 00000C 8882 MOV DPL,R0
|
|
\ 00000E F583 MOV DPH,A
|
|
\ 000010 12.... LCALL ??Subroutine276_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_681:
|
|
\ 000013 F583 MOV DPH,A
|
|
\ 000015 8A82 MOV DPL,R2
|
|
\ 000017 12.... LCALL ??Subroutine277_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_630:
|
|
\ 00001A 12.... LCALL ?Subroutine35 & 0xFFFF
|
|
2744 pRsp->serverMask = BUILD_UINT16( inMsg->asdu[1], inMsg->asdu[2] );
|
|
\ ??CrossCallReturnLabel_45:
|
|
\ 00001D 8882 MOV DPL,R0
|
|
\ 00001F F583 MOV DPH,A
|
|
\ 000021 A3 INC DPTR
|
|
\ 000022 E0 MOVX A,@DPTR
|
|
\ 000023 FA MOV R2,A
|
|
\ 000024 8882 MOV DPL,R0
|
|
\ 000026 8983 MOV DPH,R1
|
|
\ 000028 A3 INC DPTR
|
|
\ 000029 12.... LCALL ??Subroutine291_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_725:
|
|
\ 00002C A3 INC DPTR
|
|
\ 00002D 12.... LCALL ??Subroutine290_0 & 0xFFFF
|
|
2745 }
|
|
\ ??CrossCallReturnLabel_714:
|
|
\ 000030 02.... LJMP ?Subroutine1 & 0xFFFF
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine291_0:
|
|
\ 000000 A3 INC DPTR
|
|
\ 000001 E0 MOVX A,@DPTR
|
|
\ 000002 F9 MOV R1,A
|
|
\ 000003 EA MOV A,R2
|
|
\ 000004 8C82 MOV DPL,R4
|
|
\ 000006 8D83 MOV DPH,R5
|
|
\ 000008 22 RET
|
|
2746
|
|
2747 /*********************************************************************
|
|
2748 * @fn ZDO_ParseMgmtLqiRsp
|
|
2749 *
|
|
2750 * @brief This function parses the incoming Management
|
|
2751 * LQI response
|
|
2752 *
|
|
2753 * @param inMsg - incoming message
|
|
2754 *
|
|
2755 * @return a pointer to parsed response structure (NULL if not allocated).
|
|
2756 * This structure was allocated using osal_mem_alloc, so it must be freed
|
|
2757 * by the calling function [osal_mem_free()].
|
|
2758 */
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine3:
|
|
\ 000000 AA.. MOV R2,?V2
|
|
\ 000002 AB.. MOV R3,?V3
|
|
\ 000004 REQUIRE ??Subroutine226_0
|
|
\ 000004 ; // Fall through to label ??Subroutine226_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
2759 ZDO_MgmtLqiRsp_t *ZDO_ParseMgmtLqiRsp( zdoIncomingMsg_t *inMsg )
|
|
\ ZDO_ParseMgmtLqiRsp:
|
|
2760 {
|
|
\ 000000 REQUIRE ?V0
|
|
\ 000000 REQUIRE ?V1
|
|
\ 000000 REQUIRE ?V2
|
|
\ 000000 REQUIRE ?V3
|
|
\ 000000 REQUIRE ?V4
|
|
\ 000000 REQUIRE ?V5
|
|
\ 000000 REQUIRE ?V6
|
|
\ 000000 REQUIRE ?V7
|
|
\ 000000 74F0 MOV A,#-0x10
|
|
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
|
\ 000005 ; Saved register size: 16
|
|
\ 000005 ; Auto size: 0
|
|
2761 ZDO_MgmtLqiRsp_t *pRsp;
|
|
2762 uint8 status;
|
|
2763 uint8 startIndex = 0;
|
|
\ 000005 75..00 MOV ?V6,#0x0
|
|
2764 uint8 neighborLqiCount = 0;
|
|
\ 000008 75..00 MOV ?V5,#0x0
|
|
2765 uint8 neighborLqiEntries = 0;
|
|
\ 00000B 75..00 MOV ?V4,#0x0
|
|
2766 uint8 *msg;
|
|
2767
|
|
2768 msg = inMsg->asdu;
|
|
\ 00000E 12.... LCALL ?Subroutine74 & 0xFFFF
|
|
2769
|
|
2770 status = *msg++;
|
|
2771 if ( status == ZSuccess )
|
|
\ ??CrossCallReturnLabel_114:
|
|
\ 000011 7017 JNZ ??ZDO_ParseMgmtLqiRsp_0
|
|
2772 {
|
|
2773 neighborLqiEntries = *msg++;
|
|
\ 000013 E0 MOVX A,@DPTR
|
|
\ 000014 F5.. MOV ?V4,A
|
|
2774 startIndex = *msg++;
|
|
\ 000016 A3 INC DPTR
|
|
\ 000017 E0 MOVX A,@DPTR
|
|
\ 000018 F5.. MOV ?V6,A
|
|
2775 neighborLqiCount = *msg++;
|
|
\ 00001A 8E82 MOV DPL,R6
|
|
\ 00001C 8F83 MOV DPH,R7
|
|
\ 00001E A3 INC DPTR
|
|
\ 00001F A3 INC DPTR
|
|
\ 000020 E0 MOVX A,@DPTR
|
|
\ 000021 F5.. MOV ?V5,A
|
|
\ 000023 EE MOV A,R6
|
|
\ 000024 2403 ADD A,#0x3
|
|
\ 000026 FE MOV R6,A
|
|
\ 000027 5001 JNC ??ZDO_ParseMgmtLqiRsp_0
|
|
\ 000029 0F INC R7
|
|
2776 }
|
|
2777
|
|
2778 // Allocate a buffer big enough to handle the list.
|
|
2779 pRsp = (ZDO_MgmtLqiRsp_t *)osal_mem_alloc(
|
|
2780 sizeof( ZDO_MgmtLqiRsp_t ) + (neighborLqiCount * sizeof( neighborLqiItem_t )) );
|
|
\ ??ZDO_ParseMgmtLqiRsp_0:
|
|
\ 00002A ; Setup parameters for call to function osal_mem_alloc
|
|
\ 00002A E5.. MOV A,?V5
|
|
\ 00002C 75F00E MOV B,#0xe
|
|
\ 00002F 12.... LCALL ?Subroutine124 & 0xFFFF
|
|
2781 if ( pRsp )
|
|
\ ??CrossCallReturnLabel_204:
|
|
\ 000032 605D JZ ??ZDO_ParseMgmtLqiRsp_1
|
|
2782 {
|
|
2783 uint8 x;
|
|
2784 neighborLqiItem_t *pList = pRsp->list;
|
|
\ 000034 12.... LCALL ?Subroutine17 & 0xFFFF
|
|
2785 pRsp->status = status;
|
|
2786 pRsp->neighborLqiEntries = neighborLqiEntries;
|
|
2787 pRsp->startIndex = startIndex;
|
|
\ ??CrossCallReturnLabel_664:
|
|
\ 000037 E5.. MOV A,?V6
|
|
\ 000039 12.... LCALL ??Subroutine282_0 & 0xFFFF
|
|
2788 pRsp->neighborLqiCount = neighborLqiCount;
|
|
\ ??CrossCallReturnLabel_669:
|
|
\ 00003C E5.. MOV A,?V5
|
|
\ 00003E F0 MOVX @DPTR,A
|
|
2789
|
|
2790 for ( x = 0; x < neighborLqiCount; x++ )
|
|
\ 00003F 75..00 MOV ?V4,#0x0
|
|
\ 000042 8046 SJMP ??ZDO_ParseMgmtLqiRsp_2
|
|
2791 {
|
|
2792 osal_cpyExtAddr(pList->extPANId, msg); //Copy extended PAN ID
|
|
\ ??ZDO_ParseMgmtLqiRsp_3:
|
|
\ 000044 ; Setup parameters for call to function sAddrExtCpy
|
|
\ 000044 EE MOV A,R6
|
|
\ 000045 FC MOV R4,A
|
|
\ 000046 EF MOV A,R7
|
|
\ 000047 FD MOV R5,A
|
|
\ 000048 E5.. MOV A,?V0
|
|
\ 00004A 2404 ADD A,#0x4
|
|
\ 00004C FA MOV R2,A
|
|
\ 00004D E4 CLR A
|
|
\ 00004E 35.. ADDC A,?V1
|
|
\ 000050 FB MOV R3,A
|
|
\ 000051 12.... LCALL `??sAddrExtCpy::?relay`; Banked call to: sAddrExtCpy
|
|
2793 msg += Z_EXTADDR_LEN;
|
|
2794
|
|
2795 msg += Z_EXTADDR_LEN; // Throwing away IEEE.
|
|
\ 000054 EE MOV A,R6
|
|
\ 000055 2410 ADD A,#0x10
|
|
\ 000057 FE MOV R6,A
|
|
\ 000058 5001 JNC ??ZDO_ParseMgmtLqiRsp_4
|
|
\ 00005A 0F INC R7
|
|
2796 pList->nwkAddr = BUILD_UINT16( msg[0], msg[1] );
|
|
\ ??ZDO_ParseMgmtLqiRsp_4:
|
|
\ 00005B 12.... LCALL ?Subroutine90 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_145:
|
|
\ 00005E F0 MOVX @DPTR,A
|
|
\ 00005F A3 INC DPTR
|
|
\ 000060 E9 MOV A,R1
|
|
\ 000061 12.... LCALL ?Subroutine34 & 0xFFFF
|
|
2797 msg += 2 + 1 + 1 + 1; // Skip DeviceType, RxOnIdle, Rlationship, PermitJoining and Depth
|
|
2798 pList->rxLqi = *msg++;
|
|
\ ??CrossCallReturnLabel_43:
|
|
\ 000064 C0E0 PUSH A
|
|
\ 000066 E5.. MOV A,?V0
|
|
\ 000068 240D ADD A,#0xd
|
|
\ 00006A 12.... LCALL ??Subroutine279_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_648:
|
|
\ 00006D D0E0 POP A
|
|
\ 00006F F0 MOVX @DPTR,A
|
|
\ 000070 EE MOV A,R6
|
|
\ 000071 2406 ADD A,#0x6
|
|
\ 000073 FE MOV R6,A
|
|
\ 000074 5001 JNC ??ZDO_ParseMgmtLqiRsp_5
|
|
\ 000076 0F INC R7
|
|
2799 pList->txQuality = 0; // This is not specified OTA by ZigBee 1.1.
|
|
\ ??ZDO_ParseMgmtLqiRsp_5:
|
|
\ 000077 E5.. MOV A,?V0
|
|
\ 000079 240C ADD A,#0xc
|
|
\ 00007B 12.... LCALL ?Subroutine153 & 0xFFFF
|
|
2800 pList++;
|
|
\ ??CrossCallReturnLabel_258:
|
|
\ 00007E E5.. MOV A,?V0
|
|
\ 000080 240E ADD A,#0xe
|
|
\ 000082 F5.. MOV ?V0,A
|
|
\ 000084 5002 JNC ??ZDO_ParseMgmtLqiRsp_6
|
|
\ 000086 05.. INC ?V1
|
|
2801 }
|
|
\ ??ZDO_ParseMgmtLqiRsp_6:
|
|
\ 000088 05.. INC ?V4
|
|
\ ??ZDO_ParseMgmtLqiRsp_2:
|
|
\ 00008A E5.. MOV A,?V4
|
|
\ 00008C C3 CLR C
|
|
\ 00008D 95.. SUBB A,?V5
|
|
\ 00008F 40B3 JC ??ZDO_ParseMgmtLqiRsp_3
|
|
2802 }
|
|
2803
|
|
2804 return ( pRsp );
|
|
\ ??ZDO_ParseMgmtLqiRsp_1:
|
|
\ 000091 02.... LJMP ?Subroutine3 & 0xFFFF
|
|
2805 }
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine17:
|
|
\ 000000 12.... LCALL ?Subroutine206 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_329:
|
|
\ 000003 8A82 MOV DPL,R2
|
|
\ 000005 8B83 MOV DPH,R3
|
|
\ 000007 E5.. MOV A,?V7
|
|
\ 000009 REQUIRE ??Subroutine281_0
|
|
\ 000009 ; // Fall through to label ??Subroutine281_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine281_0:
|
|
\ 000000 F0 MOVX @DPTR,A
|
|
\ 000001 A3 INC DPTR
|
|
\ 000002 E5.. MOV A,?V4
|
|
\ 000004 12.... LCALL ?Subroutine167 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_672:
|
|
\ 000007 A3 INC DPTR
|
|
\ 000008 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine206:
|
|
\ 000000 EA MOV A,R2
|
|
\ 000001 2404 ADD A,#0x4
|
|
\ 000003 F5.. MOV ?V0,A
|
|
\ 000005 E4 CLR A
|
|
\ 000006 35.. ADDC A,?V3
|
|
\ 000008 F5.. MOV ?V1,A
|
|
\ 00000A 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ??Subroutine282_0:
|
|
\ 000000 12.... LCALL ?Subroutine167 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_673:
|
|
\ 000003 A3 INC DPTR
|
|
\ 000004 A3 INC DPTR
|
|
\ 000005 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine192:
|
|
\ 000000 A4 MUL AB
|
|
\ 000001 A9F0 MOV R1,B
|
|
\ 000003 2404 ADD A,#0x4
|
|
\ 000005 REQUIRE ??Subroutine283_0
|
|
\ 000005 ; // Fall through to label ??Subroutine283_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine124:
|
|
\ 000000 12.... LCALL ?Subroutine192 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_675:
|
|
\ 000003 8A.. MOV ?V2,R2
|
|
\ 000005 8B.. MOV ?V3,R3
|
|
\ 000007 EA MOV A,R2
|
|
\ 000008 4B ORL A,R3
|
|
\ 000009 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine74:
|
|
\ 000000 12.... LCALL ?Subroutine191 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_308:
|
|
\ 000003 F5.. MOV ?V7,A
|
|
\ 000005 A3 INC DPTR
|
|
\ 000006 AE82 MOV R6,DPL
|
|
\ 000008 AF83 MOV R7,DPH
|
|
\ 00000A 22 RET
|
|
2806
|
|
2807 /*********************************************************************
|
|
2808 * @fn ZDO_ParseMgmNwkDiscRsp
|
|
2809 *
|
|
2810 * @brief This function parses the incoming Management
|
|
2811 * Network Discover response.
|
|
2812 *
|
|
2813 * @param inMsg - incoming message
|
|
2814 *
|
|
2815 * @return pointer to parsed response. This structure was
|
|
2816 * allocated using osal_mem_alloc, so it must be freed
|
|
2817 * by the calling function [osal_mem_free()].
|
|
2818 */
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
2819 ZDO_MgmNwkDiscRsp_t *ZDO_ParseMgmNwkDiscRsp( zdoIncomingMsg_t *inMsg )
|
|
\ ZDO_ParseMgmNwkDiscRsp:
|
|
2820 {
|
|
\ 000000 REQUIRE ?V0
|
|
\ 000000 REQUIRE ?V1
|
|
\ 000000 REQUIRE ?V2
|
|
\ 000000 REQUIRE ?V3
|
|
\ 000000 REQUIRE ?V4
|
|
\ 000000 REQUIRE ?V5
|
|
\ 000000 REQUIRE ?V6
|
|
\ 000000 REQUIRE ?V7
|
|
\ 000000 74F0 MOV A,#-0x10
|
|
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
|
\ 000005 ; Saved register size: 16
|
|
\ 000005 ; Auto size: 0
|
|
2821 ZDO_MgmNwkDiscRsp_t *pRsp;
|
|
2822 uint8 status;
|
|
2823 uint8 networkCount = 0;
|
|
\ 000005 75..00 MOV ?V0,#0x0
|
|
2824 uint8 startIndex = 0;
|
|
\ 000008 75..00 MOV ?V1,#0x0
|
|
2825 uint8 networkListCount = 0;
|
|
\ 00000B 75..00 MOV ?V7,#0x0
|
|
2826 uint8 *msg;
|
|
2827
|
|
2828 msg = inMsg->asdu;
|
|
\ 00000E 12.... LCALL ?Subroutine77 & 0xFFFF
|
|
2829 status = *msg++;
|
|
\ ??CrossCallReturnLabel_121:
|
|
\ 000011 F5.. MOV ?V6,A
|
|
\ 000013 A3 INC DPTR
|
|
\ 000014 AE82 MOV R6,DPL
|
|
\ 000016 AF83 MOV R7,DPH
|
|
2830
|
|
2831 if ( status == ZSuccess )
|
|
\ 000018 700F JNZ ??ZDO_ParseMgmNwkDiscRsp_0
|
|
2832 {
|
|
2833 networkCount = *msg++;
|
|
\ 00001A E0 MOVX A,@DPTR
|
|
\ 00001B F5.. MOV ?V0,A
|
|
2834 startIndex = *msg++;
|
|
\ 00001D 12.... LCALL ?Subroutine106 & 0xFFFF
|
|
2835 networkListCount = *msg++;
|
|
2836 }
|
|
\ ??CrossCallReturnLabel_173:
|
|
\ 000020 F5.. MOV ?V7,A
|
|
\ 000022 EE MOV A,R6
|
|
\ 000023 2403 ADD A,#0x3
|
|
\ 000025 FE MOV R6,A
|
|
\ 000026 5001 JNC ??ZDO_ParseMgmNwkDiscRsp_0
|
|
\ 000028 0F INC R7
|
|
2837
|
|
2838 // Allocate a buffer big enough to handle the list.
|
|
2839 pRsp = (ZDO_MgmNwkDiscRsp_t *)osal_mem_alloc( sizeof( ZDO_MgmNwkDiscRsp_t )
|
|
2840 + (networkListCount * sizeof( mgmtNwkDiscItem_t )) );
|
|
\ ??ZDO_ParseMgmNwkDiscRsp_0:
|
|
\ 000029 ; Setup parameters for call to function osal_mem_alloc
|
|
\ 000029 E5.. MOV A,?V7
|
|
\ 00002B F5.. MOV ?V2,A
|
|
\ 00002D 75..00 MOV ?V3,#0x0
|
|
\ 000030 7404 MOV A,#0x4
|
|
\ 000032 78.. MOV R0,#?V2
|
|
\ 000034 12.... LCALL ?S_SHL
|
|
\ 000037 E5.. MOV A,?V2
|
|
\ 000039 2404 ADD A,#0x4
|
|
\ 00003B FA MOV R2,A
|
|
\ 00003C E4 CLR A
|
|
\ 00003D 35.. ADDC A,?V3
|
|
\ 00003F FB MOV R3,A
|
|
\ 000040 12.... LCALL `??osal_mem_alloc::?relay`; Banked call to: osal_mem_alloc
|
|
\ 000043 8A.. MOV ?V2,R2
|
|
\ 000045 8B.. MOV ?V3,R3
|
|
2841 if ( pRsp )
|
|
\ 000047 EA MOV A,R2
|
|
\ 000048 4B ORL A,R3
|
|
\ 000049 7003 JNZ $+5
|
|
\ 00004B 02.... LJMP ??ZDO_ParseMgmNwkDiscRsp_1 & 0xFFFF
|
|
2842 {
|
|
2843 uint8 x;
|
|
2844 mgmtNwkDiscItem_t *pList;
|
|
2845
|
|
2846 pRsp->status = status;
|
|
\ 00004E 8A82 MOV DPL,R2
|
|
\ 000050 8B83 MOV DPH,R3
|
|
\ 000052 E5.. MOV A,?V6
|
|
\ 000054 F0 MOVX @DPTR,A
|
|
2847 pRsp->networkCount = networkCount;
|
|
\ 000055 A3 INC DPTR
|
|
\ 000056 E5.. MOV A,?V0
|
|
\ 000058 12.... LCALL ??Subroutine273_0 & 0xFFFF
|
|
2848 pRsp->startIndex = startIndex;
|
|
\ ??CrossCallReturnLabel_617:
|
|
\ 00005B A3 INC DPTR
|
|
\ 00005C 12.... LCALL ?Subroutine21 & 0xFFFF
|
|
2849 pRsp->networkListCount = networkListCount;
|
|
\ ??CrossCallReturnLabel_667:
|
|
\ 00005F E5.. MOV A,?V7
|
|
\ 000061 F0 MOVX @DPTR,A
|
|
2850 pList = pRsp->list;
|
|
\ 000062 12.... LCALL ?Subroutine206 & 0xFFFF
|
|
2851
|
|
2852 for ( x = 0; x < networkListCount; x++ )
|
|
\ ??CrossCallReturnLabel_328:
|
|
\ 000065 75..00 MOV ?V4,#0x0
|
|
\ 000068 807D SJMP ??ZDO_ParseMgmNwkDiscRsp_2
|
|
2853 {
|
|
2854 osal_cpyExtAddr(pList->extendedPANID, msg); //Copy extended PAN ID
|
|
\ ??ZDO_ParseMgmNwkDiscRsp_3:
|
|
\ 00006A ; Setup parameters for call to function sAddrExtCpy
|
|
\ 00006A EE MOV A,R6
|
|
\ 00006B FC MOV R4,A
|
|
\ 00006C EF MOV A,R7
|
|
\ 00006D FD MOV R5,A
|
|
\ 00006E AA.. MOV R2,?V0
|
|
\ 000070 AB.. MOV R3,?V1
|
|
\ 000072 12.... LCALL `??sAddrExtCpy::?relay`; Banked call to: sAddrExtCpy
|
|
2855 pList->PANId = BUILD_UINT16( msg[0], msg[1] );
|
|
\ 000075 12.... LCALL ?Subroutine68 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_104:
|
|
\ 000078 A3 INC DPTR
|
|
\ 000079 F0 MOVX @DPTR,A
|
|
\ 00007A A3 INC DPTR
|
|
\ 00007B E9 MOV A,R1
|
|
\ 00007C 12.... LCALL ?Subroutine24 & 0xFFFF
|
|
2856 msg += Z_EXTADDR_LEN;
|
|
2857
|
|
2858 pList->logicalChannel = *msg++;
|
|
\ ??CrossCallReturnLabel_20:
|
|
\ 00007F 85..82 MOV DPL,?V0
|
|
\ 000082 85..83 MOV DPH,?V1
|
|
\ 000085 A3 INC DPTR
|
|
\ 000086 A3 INC DPTR
|
|
\ 000087 A3 INC DPTR
|
|
\ 000088 A3 INC DPTR
|
|
\ 000089 A3 INC DPTR
|
|
\ 00008A A3 INC DPTR
|
|
\ 00008B A3 INC DPTR
|
|
\ 00008C A3 INC DPTR
|
|
\ 00008D A3 INC DPTR
|
|
\ 00008E A3 INC DPTR
|
|
\ 00008F F0 MOVX @DPTR,A
|
|
2859 pList->stackProfile = (*msg) & 0x0F;
|
|
\ 000090 EE MOV A,R6
|
|
\ 000091 2409 ADD A,#0x9
|
|
\ 000093 F8 MOV R0,A
|
|
\ 000094 12.... LCALL ?Subroutine138 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_221:
|
|
\ 000097 C0E0 PUSH A
|
|
\ 000099 E5.. MOV A,?V0
|
|
\ 00009B 240B ADD A,#0xb
|
|
\ 00009D 12.... LCALL ??Subroutine279_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_649:
|
|
\ 0000A0 D0E0 POP A
|
|
\ 0000A2 12.... LCALL ?Subroutine46 & 0xFFFF
|
|
2860 pList->version = (*msg++ >> 4) & 0x0F;
|
|
\ ??CrossCallReturnLabel_65:
|
|
\ 0000A5 C0E0 PUSH A
|
|
\ 0000A7 12.... LCALL ?Subroutine154 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_654:
|
|
\ 0000AA D0E0 POP A
|
|
\ 0000AC F0 MOVX @DPTR,A
|
|
2861 pList->beaconOrder = (*msg) & 0x0F;
|
|
\ 0000AD EE MOV A,R6
|
|
\ 0000AE 240A ADD A,#0xa
|
|
\ 0000B0 08 INC R0
|
|
\ 0000B1 12.... LCALL ?Subroutine138 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_222:
|
|
\ 0000B4 C0E0 PUSH A
|
|
\ 0000B6 E5.. MOV A,?V0
|
|
\ 0000B8 240D ADD A,#0xd
|
|
\ 0000BA 12.... LCALL ??Subroutine279_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_650:
|
|
\ 0000BD D0E0 POP A
|
|
\ 0000BF 12.... LCALL ?Subroutine46 & 0xFFFF
|
|
2862 pList->superFrameOrder = (*msg++ >> 4) & 0x0F;
|
|
\ ??CrossCallReturnLabel_66:
|
|
\ 0000C2 C0E0 PUSH A
|
|
\ 0000C4 12.... LCALL ?Subroutine144 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_233:
|
|
\ 0000C7 D0E0 POP A
|
|
\ 0000C9 12.... LCALL ?Subroutine32 & 0xFFFF
|
|
2863 pList->permitJoining = *msg++;
|
|
\ ??CrossCallReturnLabel_39:
|
|
\ 0000CC C0E0 PUSH A
|
|
\ 0000CE 12.... LCALL ?Subroutine141 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_227:
|
|
\ 0000D1 D0E0 POP A
|
|
\ 0000D3 F0 MOVX @DPTR,A
|
|
\ 0000D4 EE MOV A,R6
|
|
\ 0000D5 240C ADD A,#0xc
|
|
\ 0000D7 FE MOV R6,A
|
|
\ 0000D8 5001 JNC ??ZDO_ParseMgmNwkDiscRsp_4
|
|
\ 0000DA 0F INC R7
|
|
2864 pList++;
|
|
\ ??ZDO_ParseMgmNwkDiscRsp_4:
|
|
\ 0000DB E5.. MOV A,?V0
|
|
\ 0000DD 2410 ADD A,#0x10
|
|
\ 0000DF F5.. MOV ?V0,A
|
|
\ 0000E1 5002 JNC ??ZDO_ParseMgmNwkDiscRsp_5
|
|
\ 0000E3 05.. INC ?V1
|
|
2865 }
|
|
\ ??ZDO_ParseMgmNwkDiscRsp_5:
|
|
\ 0000E5 05.. INC ?V4
|
|
\ ??ZDO_ParseMgmNwkDiscRsp_2:
|
|
\ 0000E7 E5.. MOV A,?V4
|
|
\ 0000E9 C3 CLR C
|
|
\ 0000EA 95.. SUBB A,?V7
|
|
\ 0000EC 5003 JNC $+5
|
|
\ 0000EE 02.... LJMP ??ZDO_ParseMgmNwkDiscRsp_3 & 0xFFFF
|
|
2866 }
|
|
2867
|
|
2868 return ( pRsp );
|
|
\ ??ZDO_ParseMgmNwkDiscRsp_1:
|
|
\ 0000F1 02.... LJMP ?Subroutine3 & 0xFFFF
|
|
2869 }
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine138:
|
|
\ 000000 E4 CLR A
|
|
\ 000001 3F ADDC A,R7
|
|
\ 000002 F9 MOV R1,A
|
|
\ 000003 8882 MOV DPL,R0
|
|
\ 000005 F583 MOV DPH,A
|
|
\ 000007 E0 MOVX A,@DPTR
|
|
\ 000008 540F ANL A,#0xf
|
|
\ 00000A 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine46:
|
|
\ 000000 12.... LCALL ?Subroutine208 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_334:
|
|
\ 000003 E0 MOVX A,@DPTR
|
|
\ 000004 C4 SWAP A
|
|
\ 000005 540F ANL A,#0xf
|
|
\ 000007 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine21:
|
|
\ 000000 E5.. MOV A,?V1
|
|
\ 000002 REQUIRE ??Subroutine282_0
|
|
\ 000002 ; // Fall through to label ??Subroutine282_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine106:
|
|
\ 000000 A3 INC DPTR
|
|
\ 000001 E0 MOVX A,@DPTR
|
|
\ 000002 F5.. MOV ?V1,A
|
|
\ 000004 8E82 MOV DPL,R6
|
|
\ 000006 8F83 MOV DPH,R7
|
|
\ 000008 A3 INC DPTR
|
|
\ 000009 A3 INC DPTR
|
|
\ 00000A E0 MOVX A,@DPTR
|
|
\ 00000B 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine68:
|
|
\ 000000 8E82 MOV DPL,R6
|
|
\ 000002 12.... LCALL ?Subroutine172 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_285:
|
|
\ 000005 22 RET
|
|
2870
|
|
2871 /*********************************************************************
|
|
2872 * @fn ZDO_ParseMgmtRtgRsp
|
|
2873 *
|
|
2874 * @brief This function parses the incoming Management
|
|
2875 * Routing response.
|
|
2876 *
|
|
2877 * @param inMsg - incoming message
|
|
2878 *
|
|
2879 * @return a pointer to parsed response structure (NULL if not allocated).
|
|
2880 * This structure was allocated using osal_mem_alloc, so it must be freed
|
|
2881 * by the calling function [osal_mem_free()].
|
|
2882 */
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
2883 ZDO_MgmtRtgRsp_t *ZDO_ParseMgmtRtgRsp( zdoIncomingMsg_t *inMsg )
|
|
\ ZDO_ParseMgmtRtgRsp:
|
|
2884 {
|
|
\ 000000 REQUIRE ?V0
|
|
\ 000000 REQUIRE ?V1
|
|
\ 000000 REQUIRE ?V2
|
|
\ 000000 REQUIRE ?V3
|
|
\ 000000 REQUIRE ?V4
|
|
\ 000000 REQUIRE ?V5
|
|
\ 000000 74F2 MOV A,#-0xe
|
|
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
|
\ 000005 ; Saved register size: 14
|
|
\ 000005 ; Auto size: 0
|
|
2885 ZDO_MgmtRtgRsp_t *pRsp;
|
|
2886 uint8 status;
|
|
2887 uint8 rtgCount = 0;
|
|
\ 000005 75..00 MOV ?V4,#0x0
|
|
2888 uint8 startIndex = 0;
|
|
\ 000008 75..00 MOV ?V1,#0x0
|
|
2889 uint8 rtgListCount = 0;
|
|
\ 00000B 75..00 MOV ?V0,#0x0
|
|
2890 uint8 *msg;
|
|
2891
|
|
2892 msg = inMsg->asdu;
|
|
\ 00000E 12.... LCALL ?Subroutine77 & 0xFFFF
|
|
2893
|
|
2894 status = *msg++;
|
|
\ ??CrossCallReturnLabel_122:
|
|
\ 000011 F5.. MOV ?V5,A
|
|
\ 000013 A3 INC DPTR
|
|
\ 000014 AE82 MOV R6,DPL
|
|
\ 000016 AF83 MOV R7,DPH
|
|
2895 if ( status == ZSuccess )
|
|
\ 000018 700F JNZ ??ZDO_ParseMgmtRtgRsp_0
|
|
2896 {
|
|
2897 rtgCount = *msg++;
|
|
\ 00001A E0 MOVX A,@DPTR
|
|
\ 00001B F5.. MOV ?V4,A
|
|
2898 startIndex = *msg++;
|
|
\ 00001D 12.... LCALL ?Subroutine106 & 0xFFFF
|
|
2899 rtgListCount = *msg++;
|
|
2900 }
|
|
\ ??CrossCallReturnLabel_174:
|
|
\ 000020 F5.. MOV ?V0,A
|
|
\ 000022 EE MOV A,R6
|
|
\ 000023 2403 ADD A,#0x3
|
|
\ 000025 FE MOV R6,A
|
|
\ 000026 5001 JNC ??ZDO_ParseMgmtRtgRsp_0
|
|
\ 000028 0F INC R7
|
|
2901
|
|
2902 // Allocate a buffer big enough to handle the list
|
|
2903 pRsp = (ZDO_MgmtRtgRsp_t *)osal_mem_alloc(
|
|
2904 sizeof( ZDO_MgmtRtgRsp_t ) + (rtgListCount * sizeof( rtgItem_t )) );
|
|
\ ??ZDO_ParseMgmtRtgRsp_0:
|
|
\ 000029 ; Setup parameters for call to function osal_mem_alloc
|
|
\ 000029 E5.. MOV A,?V0
|
|
\ 00002B 75F007 MOV B,#0x7
|
|
\ 00002E 12.... LCALL ?Subroutine192 & 0xFFFF
|
|
2905 if ( pRsp )
|
|
\ ??CrossCallReturnLabel_674:
|
|
\ 000031 EA MOV A,R2
|
|
\ 000032 4B ORL A,R3
|
|
\ 000033 6058 JZ ??ZDO_ParseMgmtRtgRsp_1
|
|
2906 {
|
|
2907 uint8 x;
|
|
2908 rtgItem_t *pList = pRsp->list;
|
|
\ 000035 EA MOV A,R2
|
|
\ 000036 2404 ADD A,#0x4
|
|
\ 000038 F8 MOV R0,A
|
|
\ 000039 E4 CLR A
|
|
\ 00003A 3B ADDC A,R3
|
|
\ 00003B F9 MOV R1,A
|
|
2909 pRsp->status = status;
|
|
\ 00003C 8A82 MOV DPL,R2
|
|
\ 00003E 8B83 MOV DPH,R3
|
|
\ 000040 E5.. MOV A,?V5
|
|
\ 000042 12.... LCALL ??Subroutine281_0 & 0xFFFF
|
|
2910 pRsp->rtgCount = rtgCount;
|
|
2911 pRsp->startIndex = startIndex;
|
|
\ ??CrossCallReturnLabel_666:
|
|
\ 000045 12.... LCALL ?Subroutine21 & 0xFFFF
|
|
2912 pRsp->rtgListCount = rtgListCount;
|
|
\ ??CrossCallReturnLabel_668:
|
|
\ 000048 E5.. MOV A,?V0
|
|
\ 00004A F0 MOVX @DPTR,A
|
|
2913
|
|
2914 for ( x = 0; x < rtgListCount; x++ )
|
|
\ 00004B 7C00 MOV R4,#0x0
|
|
\ 00004D 8038 SJMP ??ZDO_ParseMgmtRtgRsp_2
|
|
2915 {
|
|
2916 pList->dstAddress = BUILD_UINT16( msg[0], msg[1] );
|
|
\ ??ZDO_ParseMgmtRtgRsp_3:
|
|
\ 00004F 8E82 MOV DPL,R6
|
|
\ 000051 12.... LCALL ?Subroutine89 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_142:
|
|
\ 000054 F0 MOVX @DPTR,A
|
|
\ 000055 A3 INC DPTR
|
|
\ 000056 E5.. MOV A,?V3
|
|
\ 000058 12.... LCALL ?Subroutine26 & 0xFFFF
|
|
2917 msg += 2;
|
|
2918 pList->status = *msg++;
|
|
\ ??CrossCallReturnLabel_24:
|
|
\ 00005B 8882 MOV DPL,R0
|
|
\ 00005D 8983 MOV DPH,R1
|
|
\ 00005F A3 INC DPTR
|
|
\ 000060 A3 INC DPTR
|
|
\ 000061 A3 INC DPTR
|
|
\ 000062 A3 INC DPTR
|
|
\ 000063 A3 INC DPTR
|
|
\ 000064 F0 MOVX @DPTR,A
|
|
\ 000065 EE MOV A,R6
|
|
\ 000066 2403 ADD A,#0x3
|
|
\ 000068 FE MOV R6,A
|
|
\ 000069 5001 JNC ??ZDO_ParseMgmtRtgRsp_4
|
|
\ 00006B 0F INC R7
|
|
2919 pList->nextHopAddress = BUILD_UINT16( msg[0], msg[1] );
|
|
\ ??ZDO_ParseMgmtRtgRsp_4:
|
|
\ 00006C F582 MOV DPL,A
|
|
\ 00006E 12.... LCALL ?Subroutine89 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_143:
|
|
\ 000071 A3 INC DPTR
|
|
\ 000072 A3 INC DPTR
|
|
\ 000073 F0 MOVX @DPTR,A
|
|
\ 000074 A3 INC DPTR
|
|
\ 000075 E5.. MOV A,?V3
|
|
\ 000077 F0 MOVX @DPTR,A
|
|
2920 msg += 2;
|
|
\ 000078 EE MOV A,R6
|
|
\ 000079 2402 ADD A,#0x2
|
|
\ 00007B FE MOV R6,A
|
|
\ 00007C 5001 JNC ??ZDO_ParseMgmtRtgRsp_5
|
|
\ 00007E 0F INC R7
|
|
2921 pList++;
|
|
\ ??ZDO_ParseMgmtRtgRsp_5:
|
|
\ 00007F E8 MOV A,R0
|
|
\ 000080 2407 ADD A,#0x7
|
|
\ 000082 F8 MOV R0,A
|
|
\ 000083 5001 JNC ??ZDO_ParseMgmtRtgRsp_6
|
|
\ 000085 09 INC R1
|
|
2922 }
|
|
\ ??ZDO_ParseMgmtRtgRsp_6:
|
|
\ 000086 0C INC R4
|
|
\ ??ZDO_ParseMgmtRtgRsp_2:
|
|
\ 000087 EC MOV A,R4
|
|
\ 000088 C3 CLR C
|
|
\ 000089 95.. SUBB A,?V0
|
|
\ 00008B 40C2 JC ??ZDO_ParseMgmtRtgRsp_3
|
|
2923 }
|
|
2924
|
|
2925 return ( pRsp );
|
|
\ ??ZDO_ParseMgmtRtgRsp_1:
|
|
\ 00008D 02.... LJMP ??Subroutine292_0 & 0xFFFF
|
|
2926 }
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine89:
|
|
\ 000000 8F83 MOV DPH,R7
|
|
\ 000002 E0 MOVX A,@DPTR
|
|
\ 000003 F5.. MOV ?V4,A
|
|
\ 000005 A3 INC DPTR
|
|
\ 000006 E0 MOVX A,@DPTR
|
|
\ 000007 F5.. MOV ?V3,A
|
|
\ 000009 E5.. MOV A,?V4
|
|
\ 00000B 8882 MOV DPL,R0
|
|
\ 00000D 8983 MOV DPH,R1
|
|
\ 00000F 22 RET
|
|
2927
|
|
2928 /*********************************************************************
|
|
2929 * @fn ZDO_ParseMgmtBindRsp
|
|
2930 *
|
|
2931 * @brief This function parses the incoming Management
|
|
2932 * Binding response.
|
|
2933 *
|
|
2934 * @param inMsg - pointer to message to parse
|
|
2935 *
|
|
2936 * @return a pointer to parsed response structure (NULL if not allocated).
|
|
2937 * This structure was allocated using osal_mem_alloc, so it must be freed
|
|
2938 * by the calling function [osal_mem_free()].
|
|
2939 */
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
2940 ZDO_MgmtBindRsp_t *ZDO_ParseMgmtBindRsp( zdoIncomingMsg_t *inMsg )
|
|
\ ZDO_ParseMgmtBindRsp:
|
|
2941 {
|
|
\ 000000 REQUIRE ?V0
|
|
\ 000000 REQUIRE ?V1
|
|
\ 000000 REQUIRE ?V2
|
|
\ 000000 REQUIRE ?V3
|
|
\ 000000 REQUIRE ?V4
|
|
\ 000000 REQUIRE ?V5
|
|
\ 000000 REQUIRE ?V6
|
|
\ 000000 REQUIRE ?V7
|
|
\ 000000 74F0 MOV A,#-0x10
|
|
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
|
\ 000005 ; Saved register size: 16
|
|
\ 000005 ; Auto size: 0
|
|
2942 ZDO_MgmtBindRsp_t *pRsp;
|
|
2943 uint8 status;
|
|
2944 uint8 bindingCount = 0;
|
|
\ 000005 75..00 MOV ?V4,#0x0
|
|
2945 uint8 startIndex = 0;
|
|
\ 000008 75..00 MOV ?V5,#0x0
|
|
2946 uint8 bindingListCount = 0;
|
|
\ 00000B 75..00 MOV ?V6,#0x0
|
|
2947 uint8 *msg;
|
|
2948
|
|
2949 msg = inMsg->asdu;
|
|
\ 00000E 12.... LCALL ?Subroutine74 & 0xFFFF
|
|
2950
|
|
2951 status = *msg++;
|
|
2952 if ( status == ZSuccess )
|
|
\ ??CrossCallReturnLabel_115:
|
|
\ 000011 7017 JNZ ??ZDO_ParseMgmtBindRsp_0
|
|
2953 {
|
|
2954 bindingCount = *msg++;
|
|
\ 000013 E0 MOVX A,@DPTR
|
|
\ 000014 F5.. MOV ?V4,A
|
|
2955 startIndex = *msg++;
|
|
\ 000016 A3 INC DPTR
|
|
\ 000017 E0 MOVX A,@DPTR
|
|
\ 000018 F5.. MOV ?V5,A
|
|
2956 bindingListCount = *msg++;
|
|
\ 00001A 8E82 MOV DPL,R6
|
|
\ 00001C 8F83 MOV DPH,R7
|
|
\ 00001E A3 INC DPTR
|
|
\ 00001F A3 INC DPTR
|
|
\ 000020 E0 MOVX A,@DPTR
|
|
\ 000021 F5.. MOV ?V6,A
|
|
\ 000023 EE MOV A,R6
|
|
\ 000024 2403 ADD A,#0x3
|
|
\ 000026 FE MOV R6,A
|
|
\ 000027 5001 JNC ??ZDO_ParseMgmtBindRsp_0
|
|
\ 000029 0F INC R7
|
|
2957 }
|
|
2958
|
|
2959 // Allocate a buffer big enough to handle the list
|
|
2960 pRsp = (ZDO_MgmtBindRsp_t *)osal_mem_alloc(
|
|
2961 (sizeof ( ZDO_MgmtBindRsp_t ) + (bindingListCount * sizeof( apsBindingItem_t ))) );
|
|
\ ??ZDO_ParseMgmtBindRsp_0:
|
|
\ 00002A ; Setup parameters for call to function osal_mem_alloc
|
|
\ 00002A E5.. MOV A,?V6
|
|
\ 00002C 75F015 MOV B,#0x15
|
|
\ 00002F 12.... LCALL ?Subroutine124 & 0xFFFF
|
|
2962 if ( pRsp )
|
|
\ ??CrossCallReturnLabel_205:
|
|
\ 000032 604F JZ ??ZDO_ParseMgmtBindRsp_1
|
|
2963 {
|
|
2964 uint8 x;
|
|
2965 apsBindingItem_t *pList = pRsp->list;
|
|
\ 000034 12.... LCALL ?Subroutine17 & 0xFFFF
|
|
2966 pRsp->status = status;
|
|
2967 pRsp->bindingCount = bindingCount;
|
|
2968 pRsp->startIndex = startIndex;
|
|
\ ??CrossCallReturnLabel_665:
|
|
\ 000037 E5.. MOV A,?V5
|
|
\ 000039 12.... LCALL ??Subroutine282_0 & 0xFFFF
|
|
2969 pRsp->bindingListCount = bindingListCount;
|
|
\ ??CrossCallReturnLabel_670:
|
|
\ 00003C E5.. MOV A,?V6
|
|
\ 00003E F0 MOVX @DPTR,A
|
|
2970
|
|
2971 for ( x = 0; x < bindingListCount; x++ )
|
|
\ 00003F 75..00 MOV ?V4,#0x0
|
|
\ 000042 8015 SJMP ??ZDO_ParseMgmtBindRsp_2
|
|
2972 {
|
|
2973 osal_cpyExtAddr( pList->srcAddr, msg );
|
|
2974 msg += Z_EXTADDR_LEN;
|
|
2975 pList->srcEP = *msg++;
|
|
2976
|
|
2977 // Get the Cluster ID
|
|
2978
|
|
2979 pList->clusterID = BUILD_UINT16( msg[0], msg[1] );
|
|
2980 msg += 2;
|
|
2981 pList->dstAddr.addrMode = *msg++;
|
|
2982 if ( pList->dstAddr.addrMode == Addr64Bit )
|
|
2983 {
|
|
2984 osal_cpyExtAddr( pList->dstAddr.addr.extAddr, msg );
|
|
2985 msg += Z_EXTADDR_LEN;
|
|
2986 pList->dstEP = *msg++;
|
|
2987 }
|
|
2988 else
|
|
2989 {
|
|
2990 pList->dstAddr.addr.shortAddr = BUILD_UINT16( msg[0], msg[1] );
|
|
\ ??ZDO_ParseMgmtBindRsp_3:
|
|
\ 000044 12.... LCALL ?Subroutine73 & 0xFFFF
|
|
2991 msg += 2;
|
|
2992 }
|
|
\ ??CrossCallReturnLabel_113:
|
|
\ 000047 12.... LCALL ??Subroutine266_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_564:
|
|
\ 00004A 5001 JNC ??ZDO_ParseMgmtBindRsp_4
|
|
\ 00004C 0F INC R7
|
|
2993
|
|
2994 pList++;
|
|
\ ??ZDO_ParseMgmtBindRsp_4:
|
|
\ 00004D E5.. MOV A,?V0
|
|
\ 00004F 2415 ADD A,#0x15
|
|
\ 000051 F5.. MOV ?V0,A
|
|
\ 000053 5002 JNC ??ZDO_ParseMgmtBindRsp_5
|
|
\ 000055 05.. INC ?V1
|
|
\ ??ZDO_ParseMgmtBindRsp_5:
|
|
\ 000057 05.. INC ?V4
|
|
\ ??ZDO_ParseMgmtBindRsp_2:
|
|
\ 000059 E5.. MOV A,?V4
|
|
\ 00005B C3 CLR C
|
|
\ 00005C 95.. SUBB A,?V6
|
|
\ 00005E 5023 JNC ??ZDO_ParseMgmtBindRsp_1
|
|
\ 000060 ; Setup parameters for call to function sAddrExtCpy
|
|
\ 000060 12.... LCALL ?Subroutine43 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_688:
|
|
\ 000063 5001 JNC ??ZDO_ParseMgmtBindRsp_6
|
|
\ 000065 0F INC R7
|
|
\ ??ZDO_ParseMgmtBindRsp_6:
|
|
\ 000066 12.... LCALL ?Subroutine11 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_5:
|
|
\ 000069 5001 JNC ??ZDO_ParseMgmtBindRsp_7
|
|
\ 00006B 0F INC R7
|
|
\ ??ZDO_ParseMgmtBindRsp_7:
|
|
\ 00006C 7403 MOV A,#0x3
|
|
\ 00006E 68 XRL A,R0
|
|
\ 00006F 70D3 JNZ ??ZDO_ParseMgmtBindRsp_3
|
|
\ 000071 ; Setup parameters for call to function sAddrExtCpy
|
|
\ 000071 12.... LCALL ?Subroutine50 & 0xFFFF
|
|
2995 }
|
|
2996 }
|
|
\ ??CrossCallReturnLabel_571:
|
|
\ 000074 C0E0 PUSH A
|
|
\ 000076 12.... LCALL ?Subroutine152 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_253:
|
|
\ 000079 D0E0 POP A
|
|
\ 00007B 12.... LCALL ??Subroutine285_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_690:
|
|
\ 00007E 50CD JNC ??ZDO_ParseMgmtBindRsp_4
|
|
\ 000080 0F INC R7
|
|
\ ??ZDO_ParseMgmtBindRsp_8:
|
|
\ 000081 80CA SJMP ??ZDO_ParseMgmtBindRsp_4
|
|
2997
|
|
2998 return ( pRsp );
|
|
\ ??ZDO_ParseMgmtBindRsp_1:
|
|
\ 000083 02.... LJMP ?Subroutine3 & 0xFFFF
|
|
2999 }
|
|
3000
|
|
3001 /*********************************************************************
|
|
3002 * @fn ZDO_ParseUserDescRsp
|
|
3003 *
|
|
3004 * @brief This function parses the incoming User
|
|
3005 * Descriptor Response.
|
|
3006 *
|
|
3007 * @param inMsg - incoming response message
|
|
3008 *
|
|
3009 * @return a pointer to parsed response structure (NULL if not allocated).
|
|
3010 * This structure was allocated using osal_mem_alloc, so it must be freed
|
|
3011 * by the calling function [osal_mem_free()].
|
|
3012 */
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
3013 ZDO_UserDescRsp_t *ZDO_ParseUserDescRsp( zdoIncomingMsg_t *inMsg )
|
|
\ ZDO_ParseUserDescRsp:
|
|
3014 {
|
|
\ 000000 REQUIRE ?V0
|
|
\ 000000 REQUIRE ?V2
|
|
\ 000000 REQUIRE ?V3
|
|
\ 000000 REQUIRE ?V4
|
|
\ 000000 REQUIRE ?V5
|
|
\ 000000 REQUIRE ?V6
|
|
\ 000000 74F1 MOV A,#-0xf
|
|
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
|
\ 000005 ; Saved register size: 15
|
|
\ 000005 ; Auto size: 0
|
|
3015 ZDO_UserDescRsp_t *pRsp;
|
|
3016 uint8 *msg;
|
|
3017 uint8 descLen = 0;
|
|
\ 000005 75..00 MOV ?V0,#0x0
|
|
3018
|
|
3019 msg = inMsg->asdu;
|
|
\ 000008 12.... LCALL ?Subroutine71 & 0xFFFF
|
|
3020
|
|
3021 if ( msg[0] == ZSuccess )
|
|
\ ??CrossCallReturnLabel_691:
|
|
\ 00000B 7006 JNZ ??ZDO_ParseUserDescRsp_0
|
|
3022 {
|
|
3023 descLen = msg[3];
|
|
\ 00000D A3 INC DPTR
|
|
\ 00000E A3 INC DPTR
|
|
\ 00000F A3 INC DPTR
|
|
\ 000010 E0 MOVX A,@DPTR
|
|
\ 000011 F5.. MOV ?V0,A
|
|
3024 }
|
|
3025
|
|
3026 pRsp = (ZDO_UserDescRsp_t *)osal_mem_alloc( sizeof ( ZDO_UserDescRsp_t ) + descLen );
|
|
\ ??ZDO_ParseUserDescRsp_0:
|
|
\ 000013 ; Setup parameters for call to function osal_mem_alloc
|
|
\ 000013 E5.. MOV A,?V0
|
|
\ 000015 12.... LCALL ?Subroutine148 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_626:
|
|
\ 000018 8A.. MOV ?V2,R2
|
|
\ 00001A 8B.. MOV ?V3,R3
|
|
3027 if ( pRsp )
|
|
\ 00001C EA MOV A,R2
|
|
\ 00001D 4B ORL A,R3
|
|
\ 00001E 604E JZ ??ZDO_ParseUserDescRsp_1
|
|
3028 {
|
|
3029 pRsp->status = msg[0];
|
|
\ 000020 8E82 MOV DPL,R6
|
|
\ 000022 8F83 MOV DPH,R7
|
|
\ 000024 12.... LCALL ?Subroutine118 & 0xFFFF
|
|
3030 pRsp->nwkAddr = BUILD_UINT16( msg[1], msg[2] );
|
|
\ ??CrossCallReturnLabel_193:
|
|
\ 000027 8E82 MOV DPL,R6
|
|
\ 000029 8F83 MOV DPH,R7
|
|
\ 00002B A3 INC DPTR
|
|
\ 00002C E0 MOVX A,@DPTR
|
|
\ 00002D FA MOV R2,A
|
|
\ 00002E 8E82 MOV DPL,R6
|
|
\ 000030 8F83 MOV DPH,R7
|
|
\ 000032 A3 INC DPTR
|
|
\ 000033 12.... LCALL ??Subroutine225_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_361:
|
|
\ 000036 85..82 MOV DPL,?V2
|
|
\ 000039 8B83 MOV DPH,R3
|
|
\ 00003B A3 INC DPTR
|
|
\ 00003C 12.... LCALL ??Subroutine290_0 & 0xFFFF
|
|
3031 pRsp->length = descLen;
|
|
\ ??CrossCallReturnLabel_715:
|
|
\ 00003F 85..82 MOV DPL,?V2
|
|
\ 000042 8B83 MOV DPH,R3
|
|
\ 000044 A3 INC DPTR
|
|
\ 000045 A3 INC DPTR
|
|
\ 000046 A3 INC DPTR
|
|
\ 000047 E5.. MOV A,?V0
|
|
\ 000049 F0 MOVX @DPTR,A
|
|
3032 if ( descLen )
|
|
\ 00004A 6022 JZ ??ZDO_ParseUserDescRsp_1
|
|
3033 {
|
|
3034 osal_memcpy( pRsp->desc, &msg[4], descLen );
|
|
\ 00004C ; Setup parameters for call to function osal_memcpy
|
|
\ 00004C EE MOV A,R6
|
|
\ 00004D 2404 ADD A,#0x4
|
|
\ 00004F F5.. MOV ?V4,A
|
|
\ 000051 E4 CLR A
|
|
\ 000052 3F ADDC A,R7
|
|
\ 000053 F5.. MOV ?V5,A
|
|
\ 000055 88.. MOV ?V6,R0
|
|
\ 000057 78.. MOV R0,#?V4
|
|
\ 000059 12.... LCALL ?PUSH_XSTACK_I_THREE
|
|
\ 00005C AC.. MOV R4,?V0
|
|
\ 00005E 7D00 MOV R5,#0x0
|
|
\ 000060 E5.. MOV A,?V2
|
|
\ 000062 2404 ADD A,#0x4
|
|
\ 000064 FA MOV R2,A
|
|
\ 000065 E4 CLR A
|
|
\ 000066 35.. ADDC A,?V3
|
|
\ 000068 12.... LCALL ?Subroutine150 & 0xFFFF
|
|
3035 }
|
|
3036 }
|
|
\ ??CrossCallReturnLabel_621:
|
|
\ 00006B 12.... LCALL ?DEALLOC_XSTACK8
|
|
3037
|
|
3038 return ( pRsp );
|
|
\ ??ZDO_ParseUserDescRsp_1:
|
|
\ 00006E AA.. MOV R2,?V2
|
|
\ 000070 AB.. MOV R3,?V3
|
|
\ 000072 02.... LJMP ?Subroutine6 & 0xFFFF
|
|
3039 }
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine71:
|
|
\ 000000 12.... LCALL ?Subroutine197 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_696:
|
|
\ 000003 REQUIRE ??Subroutine286_0
|
|
\ 000003 ; // Fall through to label ??Subroutine286_0
|
|
3040
|
|
3041 /*********************************************************************
|
|
3042 * @fn ZDO_ParseSimpleDescBuf
|
|
3043 *
|
|
3044 * @brief Parse a byte sequence representation of a Simple Descriptor.
|
|
3045 *
|
|
3046 * @param buf - pointer to a byte array representing a Simple Desc.
|
|
3047 * @param desc - SimpleDescriptionFormat_t *
|
|
3048 *
|
|
3049 * This routine allocates storage for the cluster IDs because
|
|
3050 * they are 16-bit and need to be aligned to be properly processed.
|
|
3051 * This routine returns non-zero if an allocation fails.
|
|
3052 *
|
|
3053 * NOTE: This means that the caller or user of the input structure
|
|
3054 * is responsible for freeing the memory
|
|
3055 *
|
|
3056 * @return 0: success
|
|
3057 * 1: failure due to malloc failure.
|
|
3058 */
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
3059 uint8 ZDO_ParseSimpleDescBuf( uint8 *buf, SimpleDescriptionFormat_t *desc )
|
|
\ ZDO_ParseSimpleDescBuf:
|
|
3060 {
|
|
\ 000000 REQUIRE ?V0
|
|
\ 000000 REQUIRE ?V1
|
|
\ 000000 REQUIRE ?V2
|
|
\ 000000 REQUIRE ?V3
|
|
\ 000000 REQUIRE ?V4
|
|
\ 000000 REQUIRE ?V5
|
|
\ 000000 74F2 MOV A,#-0xe
|
|
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
|
\ 000005 ; Saved register size: 14
|
|
\ 000005 ; Auto size: 0
|
|
\ 000005 EB MOV A,R3
|
|
\ 000006 8C.. MOV ?V0,R4
|
|
\ 000008 8D.. MOV ?V1,R5
|
|
3061 uint8 num, i;
|
|
3062
|
|
3063 desc->EndPoint = *buf++;
|
|
\ 00000A 12.... LCALL ?Subroutine28 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_619:
|
|
\ 00000D AE82 MOV R6,DPL
|
|
\ 00000F AF83 MOV R7,DPH
|
|
3064 desc->AppProfId = BUILD_UINT16( buf[0], buf[1] );
|
|
\ 000011 E0 MOVX A,@DPTR
|
|
\ 000012 12.... LCALL ?Subroutine93 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_726:
|
|
\ 000015 12.... LCALL ?Subroutine20 & 0xFFFF
|
|
3065 buf += 2;
|
|
\ ??CrossCallReturnLabel_563:
|
|
\ 000018 5001 JNC ??ZDO_ParseSimpleDescBuf_0
|
|
\ 00001A 0F INC R7
|
|
3066 desc->AppDeviceId = BUILD_UINT16( buf[0], buf[1] );
|
|
\ ??ZDO_ParseSimpleDescBuf_0:
|
|
\ 00001B F582 MOV DPL,A
|
|
\ 00001D 8F83 MOV DPH,R7
|
|
\ 00001F 12.... LCALL ?Subroutine88 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_141:
|
|
\ 000022 F0 MOVX @DPTR,A
|
|
\ 000023 A3 INC DPTR
|
|
\ 000024 E9 MOV A,R1
|
|
\ 000025 12.... LCALL ?Subroutine26 & 0xFFFF
|
|
3067 buf += 2;
|
|
3068 desc->AppDevVer = *buf >> 4;
|
|
\ ??CrossCallReturnLabel_25:
|
|
\ 000028 C4 SWAP A
|
|
\ 000029 540F ANL A,#0xf
|
|
3069
|
|
3070 desc->Reserved = 0;
|
|
\ 00002B 8C82 MOV DPL,R4
|
|
\ 00002D 8D83 MOV DPH,R5
|
|
\ 00002F A3 INC DPTR
|
|
\ 000030 A3 INC DPTR
|
|
\ 000031 A3 INC DPTR
|
|
\ 000032 A3 INC DPTR
|
|
\ 000033 A3 INC DPTR
|
|
\ 000034 12.... LCALL ?Subroutine44 & 0xFFFF
|
|
3071 buf++;
|
|
3072
|
|
3073 // move in input cluster list (if any). allocate aligned memory.
|
|
3074 num = desc->AppNumInClusters = *buf++;
|
|
\ ??CrossCallReturnLabel_61:
|
|
\ 000037 F5.. MOV ?V4,A
|
|
\ 000039 EE MOV A,R6
|
|
\ 00003A 2404 ADD A,#0x4
|
|
\ 00003C FE MOV R6,A
|
|
\ 00003D 5001 JNC ??ZDO_ParseSimpleDescBuf_1
|
|
\ 00003F 0F INC R7
|
|
\ ??ZDO_ParseSimpleDescBuf_1:
|
|
\ 000040 8C82 MOV DPL,R4
|
|
\ 000042 8D83 MOV DPH,R5
|
|
\ 000044 A3 INC DPTR
|
|
\ 000045 A3 INC DPTR
|
|
\ 000046 A3 INC DPTR
|
|
\ 000047 A3 INC DPTR
|
|
\ 000048 A3 INC DPTR
|
|
\ 000049 A3 INC DPTR
|
|
\ 00004A E5.. MOV A,?V4
|
|
\ 00004C F0 MOVX @DPTR,A
|
|
3075 if ( num )
|
|
\ 00004D 6026 JZ ??ZDO_ParseSimpleDescBuf_2
|
|
3076 {
|
|
3077 if (!(desc->pAppInClusterList = (uint16 *)osal_mem_alloc(num*sizeof(uint16))))
|
|
\ 00004F ; Setup parameters for call to function osal_mem_alloc
|
|
\ 00004F 12.... LCALL ??Subroutine264_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_554:
|
|
\ 000052 2407 ADD A,#0x7
|
|
\ 000054 F5.. MOV ?V2,A
|
|
\ 000056 E4 CLR A
|
|
\ 000057 35.. ADDC A,?V1
|
|
\ 000059 85..82 MOV DPL,?V2
|
|
\ 00005C 12.... LCALL ??Subroutine262_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_549:
|
|
\ 00005F 607B JZ ??ZDO_ParseSimpleDescBuf_3
|
|
3078 {
|
|
3079 // malloc failed. we're done.
|
|
3080 return 1;
|
|
3081 }
|
|
3082 for (i=0; i<num; ++i)
|
|
\ 000061 7800 MOV R0,#0x0
|
|
\ 000063 800A SJMP ??ZDO_ParseSimpleDescBuf_4
|
|
3083 {
|
|
3084 desc->pAppInClusterList[i] = BUILD_UINT16( buf[0], buf[1] );
|
|
\ ??ZDO_ParseSimpleDescBuf_5:
|
|
\ 000065 12.... LCALL ?Subroutine59 & 0xFFFF
|
|
3085 buf += 2;
|
|
3086 }
|
|
\ ??CrossCallReturnLabel_86:
|
|
\ 000068 12.... LCALL ?Subroutine47 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_67:
|
|
\ 00006B 5001 JNC ??ZDO_ParseSimpleDescBuf_6
|
|
\ 00006D 0F INC R7
|
|
\ ??ZDO_ParseSimpleDescBuf_6:
|
|
\ 00006E 08 INC R0
|
|
\ ??ZDO_ParseSimpleDescBuf_4:
|
|
\ 00006F E8 MOV A,R0
|
|
\ 000070 C3 CLR C
|
|
\ 000071 95.. SUBB A,?V4
|
|
\ 000073 40F0 JC ??ZDO_ParseSimpleDescBuf_5
|
|
3087 }
|
|
3088
|
|
3089 // move in output cluster list (if any). allocate aligned memory.
|
|
3090 num = desc->AppNumOutClusters = *buf++;
|
|
\ ??ZDO_ParseSimpleDescBuf_2:
|
|
\ 000075 8E82 MOV DPL,R6
|
|
\ 000077 8F83 MOV DPH,R7
|
|
\ 000079 E0 MOVX A,@DPTR
|
|
\ 00007A F5.. MOV ?V2,A
|
|
\ 00007C A3 INC DPTR
|
|
\ 00007D AE82 MOV R6,DPL
|
|
\ 00007F AF83 MOV R7,DPH
|
|
\ 000081 85..82 MOV DPL,?V0
|
|
\ 000084 85..83 MOV DPH,?V1
|
|
\ 000087 A3 INC DPTR
|
|
\ 000088 A3 INC DPTR
|
|
\ 000089 A3 INC DPTR
|
|
\ 00008A A3 INC DPTR
|
|
\ 00008B A3 INC DPTR
|
|
\ 00008C A3 INC DPTR
|
|
\ 00008D A3 INC DPTR
|
|
\ 00008E A3 INC DPTR
|
|
\ 00008F A3 INC DPTR
|
|
\ 000090 F0 MOVX @DPTR,A
|
|
3091 if (num)
|
|
\ 000091 6064 JZ ??ZDO_ParseSimpleDescBuf_7
|
|
3092 {
|
|
3093 if (!(desc->pAppOutClusterList = (uint16 *)osal_mem_alloc(num*sizeof(uint16))))
|
|
\ 000093 ; Setup parameters for call to function osal_mem_alloc
|
|
\ 000093 12.... LCALL ?Subroutine129 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_213:
|
|
\ 000096 8B.. MOV ?V5,R3
|
|
\ 000098 A9.. MOV R1,?V5
|
|
\ 00009A 85..82 MOV DPL,?V0
|
|
\ 00009D 85..83 MOV DPH,?V1
|
|
\ 0000A0 A3 INC DPTR
|
|
\ 0000A1 A3 INC DPTR
|
|
\ 0000A2 A3 INC DPTR
|
|
\ 0000A3 A3 INC DPTR
|
|
\ 0000A4 A3 INC DPTR
|
|
\ 0000A5 A3 INC DPTR
|
|
\ 0000A6 A3 INC DPTR
|
|
\ 0000A7 A3 INC DPTR
|
|
\ 0000A8 A3 INC DPTR
|
|
\ 0000A9 A3 INC DPTR
|
|
\ 0000AA 12.... LCALL ??Subroutine263_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_548:
|
|
\ 0000AD 7031 JNZ ??ZDO_ParseSimpleDescBuf_8
|
|
3094 {
|
|
3095 // malloc failed. free input cluster list memory if there is any
|
|
3096 if ( desc->pAppInClusterList != NULL )
|
|
\ 0000AF 85..82 MOV DPL,?V0
|
|
\ 0000B2 85..83 MOV DPH,?V1
|
|
\ 0000B5 A3 INC DPTR
|
|
\ 0000B6 A3 INC DPTR
|
|
\ 0000B7 A3 INC DPTR
|
|
\ 0000B8 A3 INC DPTR
|
|
\ 0000B9 A3 INC DPTR
|
|
\ 0000BA A3 INC DPTR
|
|
\ 0000BB A3 INC DPTR
|
|
\ 0000BC 12.... LCALL ??Subroutine255_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_505:
|
|
\ 0000BF 601B JZ ??ZDO_ParseSimpleDescBuf_3
|
|
3097 {
|
|
3098 osal_mem_free(desc->pAppInClusterList);
|
|
\ 0000C1 E5.. MOV A,?V0
|
|
\ 0000C3 2407 ADD A,#0x7
|
|
\ 0000C5 F5.. MOV ?V2,A
|
|
\ 0000C7 E4 CLR A
|
|
\ 0000C8 35.. ADDC A,?V1
|
|
\ 0000CA F5.. MOV ?V3,A
|
|
\ 0000CC ; Setup parameters for call to function osal_mem_free
|
|
\ 0000CC 85..82 MOV DPL,?V2
|
|
\ 0000CF 12.... LCALL ??Subroutine236_0 & 0xFFFF
|
|
3099
|
|
3100 desc->pAppInClusterList = NULL;
|
|
\ ??CrossCallReturnLabel_403:
|
|
\ 0000D2 85..82 MOV DPL,?V2
|
|
\ 0000D5 85..83 MOV DPH,?V3
|
|
\ 0000D8 E4 CLR A
|
|
\ 0000D9 F0 MOVX @DPTR,A
|
|
\ 0000DA A3 INC DPTR
|
|
\ 0000DB F0 MOVX @DPTR,A
|
|
3101 }
|
|
3102 return 1;
|
|
\ ??ZDO_ParseSimpleDescBuf_3:
|
|
\ 0000DC 7901 MOV R1,#0x1
|
|
\ 0000DE 8019 SJMP ??ZDO_ParseSimpleDescBuf_9
|
|
3103 }
|
|
3104 for (i=0; i<num; ++i)
|
|
\ ??ZDO_ParseSimpleDescBuf_8:
|
|
\ 0000E0 7800 MOV R0,#0x0
|
|
\ 0000E2 800D SJMP ??ZDO_ParseSimpleDescBuf_10
|
|
3105 {
|
|
3106 desc->pAppOutClusterList[i] = BUILD_UINT16( buf[0], buf[1] );
|
|
\ ??ZDO_ParseSimpleDescBuf_11:
|
|
\ 0000E4 12.... LCALL ?Subroutine59 & 0xFFFF
|
|
3107 buf += 2;
|
|
3108 }
|
|
\ ??CrossCallReturnLabel_87:
|
|
\ 0000E7 A3 INC DPTR
|
|
\ 0000E8 A3 INC DPTR
|
|
\ 0000E9 A3 INC DPTR
|
|
\ 0000EA 12.... LCALL ?Subroutine47 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_68:
|
|
\ 0000ED 5001 JNC ??ZDO_ParseSimpleDescBuf_12
|
|
\ 0000EF 0F INC R7
|
|
\ ??ZDO_ParseSimpleDescBuf_12:
|
|
\ 0000F0 08 INC R0
|
|
\ ??ZDO_ParseSimpleDescBuf_10:
|
|
\ 0000F1 E8 MOV A,R0
|
|
\ 0000F2 C3 CLR C
|
|
\ 0000F3 95.. SUBB A,?V2
|
|
\ 0000F5 40ED JC ??ZDO_ParseSimpleDescBuf_11
|
|
3109 }
|
|
3110 return 0;
|
|
\ ??ZDO_ParseSimpleDescBuf_7:
|
|
\ 0000F7 7900 MOV R1,#0x0
|
|
\ ??ZDO_ParseSimpleDescBuf_9:
|
|
\ 0000F9 02.... LJMP ??Subroutine292_0 & 0xFFFF
|
|
3111 }
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine93:
|
|
\ 000000 FA MOV R2,A
|
|
\ 000001 REQUIRE ??Subroutine291_0
|
|
\ 000001 ; // Fall through to label ??Subroutine291_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine59:
|
|
\ 000000 8E82 MOV DPL,R6
|
|
\ 000002 8F83 MOV DPH,R7
|
|
\ 000004 E0 MOVX A,@DPTR
|
|
\ 000005 FC MOV R4,A
|
|
\ 000006 A3 INC DPTR
|
|
\ 000007 E0 MOVX A,@DPTR
|
|
\ 000008 FA MOV R2,A
|
|
\ 000009 E4 CLR A
|
|
\ 00000A CA XCH A,R2
|
|
\ 00000B FB MOV R3,A
|
|
\ 00000C EC MOV A,R4
|
|
\ 00000D 2A ADD A,R2
|
|
\ 00000E E4 CLR A
|
|
\ 00000F 3B ADDC A,R3
|
|
\ 000010 FD MOV R5,A
|
|
\ 000011 E8 MOV A,R0
|
|
\ 000012 25E0 ADD A,0xE0 /* A */
|
|
\ 000014 FA MOV R2,A
|
|
\ 000015 E4 CLR A
|
|
\ 000016 33 RLC A
|
|
\ 000017 FB MOV R3,A
|
|
\ 000018 85..82 MOV DPL,?V0
|
|
\ 00001B 85..83 MOV DPH,?V1
|
|
\ 00001E 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine47:
|
|
\ 000000 A3 INC DPTR
|
|
\ 000001 A3 INC DPTR
|
|
\ 000002 A3 INC DPTR
|
|
\ 000003 A3 INC DPTR
|
|
\ 000004 A3 INC DPTR
|
|
\ 000005 A3 INC DPTR
|
|
\ 000006 A3 INC DPTR
|
|
\ 000007 E0 MOVX A,@DPTR
|
|
\ 000008 2A ADD A,R2
|
|
\ 000009 F9 MOV R1,A
|
|
\ 00000A A3 INC DPTR
|
|
\ 00000B E0 MOVX A,@DPTR
|
|
\ 00000C 3B ADDC A,R3
|
|
\ 00000D 8982 MOV DPL,R1
|
|
\ 00000F F583 MOV DPH,A
|
|
\ 000011 EC MOV A,R4
|
|
\ 000012 F0 MOVX @DPTR,A
|
|
\ 000013 A3 INC DPTR
|
|
\ 000014 ED MOV A,R5
|
|
\ 000015 F0 MOVX @DPTR,A
|
|
\ 000016 EE MOV A,R6
|
|
\ 000017 2402 ADD A,#0x2
|
|
\ 000019 FE MOV R6,A
|
|
\ 00001A 22 RET
|
|
3112
|
|
3113 /*********************************************************************
|
|
3114 * @fn ZDO_ParseDeviceAnnce
|
|
3115 *
|
|
3116 * @brief Parse a Device Announce message.
|
|
3117 *
|
|
3118 * @param inMsg - Incoming message
|
|
3119 * @param pAnnce - place to put the parsed information
|
|
3120 *
|
|
3121 * @return none
|
|
3122 */
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
3123 void ZDO_ParseDeviceAnnce( zdoIncomingMsg_t *inMsg, ZDO_DeviceAnnce_t *pAnnce )
|
|
\ ZDO_ParseDeviceAnnce:
|
|
3124 {
|
|
\ 000000 REQUIRE ?V0
|
|
\ 000000 REQUIRE ?V1
|
|
\ 000000 74F6 MOV A,#-0xa
|
|
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
|
\ 000005 ; Saved register size: 10
|
|
\ 000005 ; Auto size: 0
|
|
\ 000005 8C.. MOV ?V0,R4
|
|
\ 000007 8D.. MOV ?V1,R5
|
|
3125 uint8 *msg;
|
|
3126
|
|
3127 // Parse incoming message
|
|
3128 msg = inMsg->asdu;
|
|
\ 000009 12.... LCALL ?Subroutine71 & 0xFFFF
|
|
3129 pAnnce->nwkAddr = BUILD_UINT16( msg[0], msg[1] );
|
|
\ ??CrossCallReturnLabel_692:
|
|
\ 00000C 12.... LCALL ?Subroutine93 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_727:
|
|
\ 00000F 12.... LCALL ??Subroutine266_0 & 0xFFFF
|
|
3130 msg += 2;
|
|
\ ??CrossCallReturnLabel_565:
|
|
\ 000012 5001 JNC ??ZDO_ParseDeviceAnnce_0
|
|
\ 000014 0F INC R7
|
|
3131 osal_cpyExtAddr( pAnnce->extAddr, msg );
|
|
\ ??ZDO_ParseDeviceAnnce_0:
|
|
\ 000015 ; Setup parameters for call to function sAddrExtCpy
|
|
\ 000015 FC MOV R4,A
|
|
\ 000016 EF MOV A,R7
|
|
\ 000017 FD MOV R5,A
|
|
\ 000018 E5.. MOV A,?V0
|
|
\ 00001A 2402 ADD A,#0x2
|
|
\ 00001C 12.... LCALL ??Subroutine269_0 & 0xFFFF
|
|
3132 msg += Z_EXTADDR_LEN;
|
|
3133 pAnnce->capabilities = *msg;
|
|
\ ??CrossCallReturnLabel_573:
|
|
\ 00001F 85..82 MOV DPL,?V0
|
|
\ 000022 85..83 MOV DPH,?V1
|
|
\ 000025 A3 INC DPTR
|
|
\ 000026 A3 INC DPTR
|
|
\ 000027 A3 INC DPTR
|
|
\ 000028 A3 INC DPTR
|
|
\ 000029 A3 INC DPTR
|
|
\ 00002A A3 INC DPTR
|
|
\ 00002B A3 INC DPTR
|
|
\ 00002C A3 INC DPTR
|
|
\ 00002D A3 INC DPTR
|
|
\ 00002E A3 INC DPTR
|
|
\ 00002F F0 MOVX @DPTR,A
|
|
3134 }
|
|
\ 000030 02.... LJMP ??Subroutine222_0 & 0xFFFF
|
|
3135
|
|
3136 /*********************************************************************
|
|
3137 * @fn ZDO_ParseMgmtNwkUpdateNotify
|
|
3138 *
|
|
3139 * @brief This function handles parsing of the incoming Management
|
|
3140 * Network Update notify.
|
|
3141 *
|
|
3142 * @param inMsg - incoming message (request)
|
|
3143 *
|
|
3144 * @return a pointer to parsed response structure (NULL if not allocated).
|
|
3145 * This structure was allocated using osal_mem_alloc, so it must be freed
|
|
3146 * by the calling function [osal_mem_free()].
|
|
3147 */
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine41:
|
|
\ 000000 12.... LCALL ?Subroutine185 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_299:
|
|
\ 000003 REQUIRE ??Subroutine289_0
|
|
\ 000003 ; // Fall through to label ??Subroutine289_0
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
3148 ZDO_MgmtNwkUpdateNotify_t *ZDO_ParseMgmtNwkUpdateNotify( zdoIncomingMsg_t *inMsg )
|
|
\ ZDO_ParseMgmtNwkUpdateNotify:
|
|
3149 {
|
|
\ 000000 REQUIRE ?V0
|
|
\ 000000 REQUIRE ?V1
|
|
\ 000000 REQUIRE ?V2
|
|
\ 000000 REQUIRE ?V3
|
|
\ 000000 REQUIRE ?V4
|
|
\ 000000 REQUIRE ?V5
|
|
\ 000000 74F2 MOV A,#-0xe
|
|
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
|
\ 000005 ; Saved register size: 14
|
|
\ 000005 ; Auto size: 6
|
|
\ 000005 74FA MOV A,#-0x6
|
|
\ 000007 12.... LCALL ?ALLOC_XSTACK8
|
|
3150 uint8 status;
|
|
3151 uint32 scannedChannels = 0;
|
|
\ 00000A 75..00 MOV ?V0,#0x0
|
|
\ 00000D 75..00 MOV ?V1,#0x0
|
|
\ 000010 75..00 MOV ?V2,#0x0
|
|
\ 000013 75..00 MOV ?V3,#0x0
|
|
3152 uint16 totalTransmissions = 0;
|
|
\ 000016 75..00 MOV ?V4,#0x0
|
|
\ 000019 75..00 MOV ?V5,#0x0
|
|
3153 uint16 transmissionFailures = 0;
|
|
\ 00001C 7E00 MOV R6,#0x0
|
|
\ 00001E 7F00 MOV R7,#0x0
|
|
3154 uint8 listCount = 0;
|
|
\ 000020 7402 MOV A,#0x2
|
|
\ 000022 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000025 E4 CLR A
|
|
\ 000026 12.... LCALL ?Subroutine31 & 0xFFFF
|
|
3155 uint8 *msg = inMsg->asdu;
|
|
\ ??CrossCallReturnLabel_37:
|
|
\ 000029 F8 MOV R0,A
|
|
\ 00002A A3 INC DPTR
|
|
\ 00002B E0 MOVX A,@DPTR
|
|
\ 00002C F9 MOV R1,A
|
|
\ 00002D 85..82 MOV DPL,?XSP + 0
|
|
\ 000030 85..83 MOV DPH,?XSP + 1
|
|
\ 000033 12.... LCALL ?Subroutine29 & 0xFFFF
|
|
3156 ZDO_MgmtNwkUpdateNotify_t *pRsp;
|
|
3157
|
|
3158 status = *msg++;
|
|
\ ??CrossCallReturnLabel_29:
|
|
\ 000036 12.... LCALL ??Subroutine235_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_383:
|
|
\ 000039 C0E0 PUSH A
|
|
\ 00003B 7405 MOV A,#0x5
|
|
\ 00003D 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000040 D0E0 POP A
|
|
\ 000042 12.... LCALL ?Subroutine30 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_34:
|
|
\ 000045 2401 ADD A,#0x1
|
|
\ 000047 12.... LCALL ?Subroutine41 & 0xFFFF
|
|
3159 if ( status == ZSuccess )
|
|
\ ??CrossCallReturnLabel_723:
|
|
\ 00004A 7405 MOV A,#0x5
|
|
\ 00004C 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 00004F E0 MOVX A,@DPTR
|
|
\ 000050 704F JNZ ??CrossCallReturnLabel_724
|
|
3160 {
|
|
3161 scannedChannels = osal_build_uint32( msg, 4 );
|
|
\ 000052 ; Setup parameters for call to function osal_build_uint32
|
|
\ 000052 7904 MOV R1,#0x4
|
|
\ 000054 12.... LCALL ??Subroutine250_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_483:
|
|
\ 000057 12.... LCALL `??osal_build_uint32::?relay`; Banked call to: osal_build_uint32
|
|
\ 00005A 8A.. MOV ?V0,R2
|
|
\ 00005C 8B.. MOV ?V1,R3
|
|
\ 00005E 8C.. MOV ?V2,R4
|
|
\ 000060 8D.. MOV ?V3,R5
|
|
3162 msg += 4;
|
|
\ 000062 85..82 MOV DPL,?XSP + 0
|
|
\ 000065 85..83 MOV DPH,?XSP + 1
|
|
\ 000068 E0 MOVX A,@DPTR
|
|
\ 000069 2404 ADD A,#0x4
|
|
\ 00006B 12.... LCALL ?Subroutine9 & 0xFFFF
|
|
3163 totalTransmissions = BUILD_UINT16( msg[0], msg[1] );
|
|
\ ??CrossCallReturnLabel_0:
|
|
\ 00006E F5.. MOV ?V4,A
|
|
\ 000070 E4 CLR A
|
|
\ 000071 39 ADDC A,R1
|
|
\ 000072 F5.. MOV ?V5,A
|
|
3164 msg += 2;
|
|
\ 000074 85..82 MOV DPL,?XSP + 0
|
|
\ 000077 85..83 MOV DPH,?XSP + 1
|
|
\ 00007A E0 MOVX A,@DPTR
|
|
\ 00007B 2402 ADD A,#0x2
|
|
\ 00007D 12.... LCALL ?Subroutine9 & 0xFFFF
|
|
3165 transmissionFailures = BUILD_UINT16( msg[0], msg[1] );
|
|
\ ??CrossCallReturnLabel_1:
|
|
\ 000080 FE MOV R6,A
|
|
\ 000081 E4 CLR A
|
|
\ 000082 39 ADDC A,R1
|
|
\ 000083 FF MOV R7,A
|
|
3166 msg += 2;
|
|
3167 listCount = *msg++;
|
|
\ 000084 85..82 MOV DPL,?XSP + 0
|
|
\ 000087 85..83 MOV DPH,?XSP + 1
|
|
\ 00008A 12.... LCALL ?Subroutine108 & 0xFFFF
|
|
3168 }
|
|
\ ??CrossCallReturnLabel_179:
|
|
\ 00008D A3 INC DPTR
|
|
\ 00008E A3 INC DPTR
|
|
\ 00008F E0 MOVX A,@DPTR
|
|
\ 000090 C0E0 PUSH A
|
|
\ 000092 7402 MOV A,#0x2
|
|
\ 000094 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000097 D0E0 POP A
|
|
\ 000099 12.... LCALL ?Subroutine30 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_35:
|
|
\ 00009C 2403 ADD A,#0x3
|
|
\ 00009E 12.... LCALL ?Subroutine41 & 0xFFFF
|
|
3169
|
|
3170 pRsp = (ZDO_MgmtNwkUpdateNotify_t *)osal_mem_alloc( sizeof ( ZDO_MgmtNwkUpdateNotify_t ) + listCount );
|
|
\ ??CrossCallReturnLabel_724:
|
|
\ 0000A1 ; Setup parameters for call to function osal_mem_alloc
|
|
\ 0000A1 7402 MOV A,#0x2
|
|
\ 0000A3 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 0000A6 E0 MOVX A,@DPTR
|
|
\ 0000A7 240A ADD A,#0xa
|
|
\ 0000A9 12.... LCALL ??Subroutine275_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_627:
|
|
\ 0000AC 7403 MOV A,#0x3
|
|
\ 0000AE 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 0000B1 12.... LCALL ??Subroutine238_0 & 0xFFFF
|
|
3171
|
|
3172 if ( pRsp )
|
|
\ ??CrossCallReturnLabel_426:
|
|
\ 0000B4 7403 MOV A,#0x3
|
|
\ 0000B6 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 0000B9 12.... LCALL ??Subroutine255_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_506:
|
|
\ 0000BC 7003 JNZ $+5
|
|
\ 0000BE 02.... LJMP ??ZDO_ParseMgmtNwkUpdateNotify_0 & 0xFFFF
|
|
3173 {
|
|
3174 pRsp->status = status;
|
|
\ 0000C1 7405 MOV A,#0x5
|
|
\ 0000C3 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 0000C6 E0 MOVX A,@DPTR
|
|
\ 0000C7 C0E0 PUSH A
|
|
\ 0000C9 7403 MOV A,#0x3
|
|
\ 0000CB 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 0000CE 12.... LCALL ?Subroutine108 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_180:
|
|
\ 0000D1 D0E0 POP A
|
|
\ 0000D3 F0 MOVX @DPTR,A
|
|
3175 pRsp->scannedChannels = scannedChannels;
|
|
\ 0000D4 7403 MOV A,#0x3
|
|
\ 0000D6 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 0000D9 12.... LCALL ?Subroutine85 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_135:
|
|
\ 0000DC A3 INC DPTR
|
|
\ 0000DD 78.. MOV R0,#?V0
|
|
\ 0000DF 12.... LCALL ?L_MOV_TO_X
|
|
3176 pRsp->totalTransmissions = totalTransmissions;
|
|
\ 0000E2 7403 MOV A,#0x3
|
|
\ 0000E4 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 0000E7 12.... LCALL ?Subroutine78 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_730:
|
|
\ 0000EA A3 INC DPTR
|
|
\ 0000EB E5.. MOV A,?V4
|
|
\ 0000ED F0 MOVX @DPTR,A
|
|
\ 0000EE A3 INC DPTR
|
|
\ 0000EF E5.. MOV A,?V5
|
|
\ 0000F1 F0 MOVX @DPTR,A
|
|
3177 pRsp->transmissionFailures = transmissionFailures;
|
|
\ 0000F2 7403 MOV A,#0x3
|
|
\ 0000F4 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 0000F7 12.... LCALL ??Subroutine270_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_583:
|
|
\ 0000FA 2407 ADD A,#0x7
|
|
\ 0000FC F582 MOV DPL,A
|
|
\ 0000FE E4 CLR A
|
|
\ 0000FF 38 ADDC A,R0
|
|
\ 000100 F583 MOV DPH,A
|
|
\ 000102 EE MOV A,R6
|
|
\ 000103 F0 MOVX @DPTR,A
|
|
\ 000104 A3 INC DPTR
|
|
\ 000105 EF MOV A,R7
|
|
\ 000106 F0 MOVX @DPTR,A
|
|
3178 pRsp->listCount = listCount;
|
|
\ 000107 7402 MOV A,#0x2
|
|
\ 000109 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 00010C E0 MOVX A,@DPTR
|
|
\ 00010D C0E0 PUSH A
|
|
\ 00010F 7403 MOV A,#0x3
|
|
\ 000111 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000114 12.... LCALL ?Subroutine86 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_137:
|
|
\ 000117 D0E0 POP A
|
|
\ 000119 F0 MOVX @DPTR,A
|
|
3179
|
|
3180 // Allocate a buffer big enough to handle the list.
|
|
3181 if ( listCount > 0 )
|
|
\ 00011A 7402 MOV A,#0x2
|
|
\ 00011C 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 00011F E0 MOVX A,@DPTR
|
|
\ 000120 6028 JZ ??ZDO_ParseMgmtNwkUpdateNotify_0
|
|
3182 {
|
|
3183 osal_memcpy( pRsp->energyValues, msg, listCount );
|
|
\ 000122 ; Setup parameters for call to function osal_memcpy
|
|
\ 000122 85..82 MOV DPL,?XSP + 0
|
|
\ 000125 85..83 MOV DPH,?XSP + 1
|
|
\ 000128 12.... LCALL ?Subroutine64 & 0xFFFF
|
|
3184 }
|
|
3185 }
|
|
\ ??CrossCallReturnLabel_99:
|
|
\ 00012B 12.... LCALL ?PUSH_XSTACK_I_THREE
|
|
\ 00012E 7405 MOV A,#0x5
|
|
\ 000130 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 000133 E0 MOVX A,@DPTR
|
|
\ 000134 FC MOV R4,A
|
|
\ 000135 7D00 MOV R5,#0x0
|
|
\ 000137 7406 MOV A,#0x6
|
|
\ 000139 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 00013C E0 MOVX A,@DPTR
|
|
\ 00013D 240A ADD A,#0xa
|
|
\ 00013F FA MOV R2,A
|
|
\ 000140 A3 INC DPTR
|
|
\ 000141 E0 MOVX A,@DPTR
|
|
\ 000142 3400 ADDC A,#0x0
|
|
\ 000144 12.... LCALL ?Subroutine150 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_622:
|
|
\ 000147 12.... LCALL ?DEALLOC_XSTACK8
|
|
3186
|
|
3187 return ( pRsp );
|
|
\ ??ZDO_ParseMgmtNwkUpdateNotify_0:
|
|
\ 00014A 7403 MOV A,#0x3
|
|
\ 00014C 12.... LCALL ?XSTACK_DISP0_8
|
|
\ 00014F 12.... LCALL ??Subroutine251_0 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_481:
|
|
\ 000152 7406 MOV A,#0x6
|
|
\ 000154 REQUIRE ?Subroutine5
|
|
\ 000154 ; // Fall through to label ?Subroutine5
|
|
3188 }
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine9:
|
|
\ 000000 12.... LCALL ?Subroutine185 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_298:
|
|
\ 000003 12.... LCALL ?Subroutine161 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_737:
|
|
\ 000006 12.... LCALL ?Subroutine188 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_392:
|
|
\ 000009 FA MOV R2,A
|
|
\ 00000A 85..82 MOV DPL,?XSP + 0
|
|
\ 00000D 85..83 MOV DPH,?XSP + 1
|
|
\ 000010 12.... LCALL ?Subroutine189 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_731:
|
|
\ 000013 A3 INC DPTR
|
|
\ 000014 E0 MOVX A,@DPTR
|
|
\ 000015 F9 MOV R1,A
|
|
\ 000016 EA MOV A,R2
|
|
\ 000017 2E ADD A,R6
|
|
\ 000018 22 RET
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine185:
|
|
\ 000000 F8 MOV R0,A
|
|
\ 000001 A3 INC DPTR
|
|
\ 000002 E0 MOVX A,@DPTR
|
|
\ 000003 3400 ADDC A,#0x0
|
|
\ 000005 F9 MOV R1,A
|
|
\ 000006 85..82 MOV DPL,?XSP + 0
|
|
\ 000009 85..83 MOV DPH,?XSP + 1
|
|
\ 00000C 22 RET
|
|
3189
|
|
3190 /*********************************************************************
|
|
3191 * @fn ZDO_ParseMgmtNwkUpdateReq
|
|
3192 *
|
|
3193 * @brief This function handles parsing the incoming Management
|
|
3194 * Network Update request and starts the request (if needed).
|
|
3195 *
|
|
3196 * @param inMsg - incoming message (request)
|
|
3197 * @param pReq - pointer to place to parse message to
|
|
3198 *
|
|
3199 * @return none
|
|
3200 */
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
3201 void ZDO_ParseMgmtNwkUpdateReq( zdoIncomingMsg_t *inMsg, ZDO_MgmtNwkUpdateReq_t *pReq )
|
|
\ ZDO_ParseMgmtNwkUpdateReq:
|
|
3202 {
|
|
\ 000000 REQUIRE ?V0
|
|
\ 000000 REQUIRE ?V1
|
|
\ 000000 74F6 MOV A,#-0xa
|
|
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
|
\ 000005 ; Saved register size: 10
|
|
\ 000005 ; Auto size: 0
|
|
\ 000005 12.... LCALL ?Subroutine130 & 0xFFFF
|
|
3203 uint8 *msg = inMsg->asdu;
|
|
\ ??CrossCallReturnLabel_567:
|
|
\ 000008 12.... LCALL ?Subroutine63 & 0xFFFF
|
|
3204
|
|
3205 pReq->channelMask = osal_build_uint32( msg, 4 );
|
|
\ ??CrossCallReturnLabel_96:
|
|
\ 00000B 85..82 MOV DPL,?V0
|
|
\ 00000E 85..83 MOV DPH,?V1
|
|
\ 000011 12.... LCALL ?XSTORE_R0123
|
|
3206 msg += 4;
|
|
3207 pReq->scanDuration = *msg++;
|
|
\ 000014 8E82 MOV DPL,R6
|
|
\ 000016 8F83 MOV DPH,R7
|
|
\ 000018 A3 INC DPTR
|
|
\ 000019 A3 INC DPTR
|
|
\ 00001A A3 INC DPTR
|
|
\ 00001B A3 INC DPTR
|
|
\ 00001C E0 MOVX A,@DPTR
|
|
\ 00001D F8 MOV R0,A
|
|
\ 00001E 85..82 MOV DPL,?V0
|
|
\ 000021 85..83 MOV DPH,?V1
|
|
\ 000024 A3 INC DPTR
|
|
\ 000025 A3 INC DPTR
|
|
\ 000026 A3 INC DPTR
|
|
\ 000027 A3 INC DPTR
|
|
\ 000028 F0 MOVX @DPTR,A
|
|
3208
|
|
3209 if ( pReq->scanDuration <= 0x05 )
|
|
\ 000029 C3 CLR C
|
|
\ 00002A 9406 SUBB A,#0x6
|
|
\ 00002C 5005 JNC ??ZDO_ParseMgmtNwkUpdateReq_0
|
|
3210 {
|
|
3211 // Request is to scan over channelMask
|
|
3212 pReq->scanCount = *msg;
|
|
\ 00002E 12.... LCALL ?Subroutine92 & 0xFFFF
|
|
3213 }
|
|
\ ??CrossCallReturnLabel_150:
|
|
\ 000031 803D SJMP ??ZDO_ParseMgmtNwkUpdateReq_1
|
|
3214 else if ( ( pReq->scanDuration == 0xFE ) || ( pReq->scanDuration == 0xFF ) )
|
|
\ ??ZDO_ParseMgmtNwkUpdateReq_0:
|
|
\ 000033 85..82 MOV DPL,?V0
|
|
\ 000036 85..83 MOV DPH,?V1
|
|
\ 000039 A3 INC DPTR
|
|
\ 00003A A3 INC DPTR
|
|
\ 00003B A3 INC DPTR
|
|
\ 00003C A3 INC DPTR
|
|
\ 00003D E0 MOVX A,@DPTR
|
|
\ 00003E 64FE XRL A,#0xfe
|
|
\ 000040 600E JZ ??ZDO_ParseMgmtNwkUpdateReq_2
|
|
\ 000042 85..82 MOV DPL,?V0
|
|
\ 000045 85..83 MOV DPH,?V1
|
|
\ 000048 A3 INC DPTR
|
|
\ 000049 A3 INC DPTR
|
|
\ 00004A A3 INC DPTR
|
|
\ 00004B A3 INC DPTR
|
|
\ 00004C E0 MOVX A,@DPTR
|
|
\ 00004D F4 CPL A
|
|
\ 00004E 7021 JNZ ??ZDO_ParseMgmtNwkUpdateReq_3
|
|
3215 {
|
|
3216 // Request is to change Channel (0xFE) or apsChannelMask and NwkManagerAddr (0xFF)
|
|
3217 pReq->nwkUpdateId = *msg++;
|
|
\ ??ZDO_ParseMgmtNwkUpdateReq_2:
|
|
\ 000050 12.... LCALL ?Subroutine92 & 0xFFFF
|
|
\ ??CrossCallReturnLabel_151:
|
|
\ 000053 A3 INC DPTR
|
|
\ 000054 F0 MOVX @DPTR,A
|
|
\ 000055 EE MOV A,R6
|
|
\ 000056 2406 ADD A,#0x6
|
|
\ 000058 FE MOV R6,A
|
|
\ 000059 5001 JNC ??ZDO_ParseMgmtNwkUpdateReq_4
|
|
\ 00005B 0F INC R7
|
|
3218
|
|
3219 if ( pReq->scanDuration == 0xFF )
|
|
\ ??ZDO_ParseMgmtNwkUpdateReq_4:
|
|
\ 00005C 85..82 MOV DPL,?V0
|
|
\ 00005F 85..83 MOV DPH,?V1
|
|
\ 000062 A3 INC DPTR
|
|
\ 000063 A3 INC DPTR
|
|
\ 000064 A3 INC DPTR
|
|
\ 000065 A3 INC DPTR
|
|
\ 000066 E0 MOVX A,@DPTR
|
|
\ 000067 F4 CPL A
|
|
\ 000068 7007 JNZ ??ZDO_ParseMgmtNwkUpdateReq_3
|
|
3220 {
|
|
3221 pReq->nwkManagerAddr = BUILD_UINT16( msg[0], msg[1] );
|
|
\ 00006A 12.... LCALL ?Subroutine68 & 0xFFFF
|
|
3222 }
|
|
3223 }
|
|
\ ??CrossCallReturnLabel_105:
|
|
\ 00006D F0 MOVX @DPTR,A
|
|
\ 00006E A3 INC DPTR
|
|
\ 00006F E9 MOV A,R1
|
|
\ ??ZDO_ParseMgmtNwkUpdateReq_1:
|
|
\ 000070 F0 MOVX @DPTR,A
|
|
3224 }
|
|
\ ??ZDO_ParseMgmtNwkUpdateReq_3:
|
|
\ 000071 02.... LJMP ??Subroutine222_0 & 0xFFFF
|
|
|
|
\ In segment BANKED_CODE, align 1, keep-with-next
|
|
\ ?Subroutine92:
|
|
\ 000000 8E82 MOV DPL,R6
|
|
\ 000002 8F83 MOV DPH,R7
|
|
\ 000004 A3 INC DPTR
|
|
\ 000005 A3 INC DPTR
|
|
\ 000006 A3 INC DPTR
|
|
\ 000007 A3 INC DPTR
|
|
\ 000008 A3 INC DPTR
|
|
\ 000009 E0 MOVX A,@DPTR
|
|
\ 00000A 85..82 MOV DPL,?V0
|
|
\ 00000D 85..83 MOV DPH,?V1
|
|
\ 000010 A3 INC DPTR
|
|
\ 000011 A3 INC DPTR
|
|
\ 000012 A3 INC DPTR
|
|
\ 000013 A3 INC DPTR
|
|
\ 000014 A3 INC DPTR
|
|
\ 000015 22 RET
|
|
3225
|
|
3226 /*********************************************************************
|
|
3227 *********************************************************************/
|
|
|
|
Maximum stack usage in bytes:
|
|
|
|
ISTACK XSTACK Function
|
|
------ ------ --------
|
|
0 0 NLME_PermitJoiningTimeout
|
|
1 69 ZDMatchSendState
|
|
0 37 -> APS_SetEndDeviceBindTimeout
|
|
0 37 -> ZDO_RemoveMatchMemory
|
|
0 45 -> ZDP_BindUnbindReq
|
|
0 42 -> ZDP_SendData
|
|
0 37 -> sAddrExtCpy
|
|
0 43 ZDO_AnyClusterMatches
|
|
1 10 ZDO_BuildSimpleDescBuf
|
|
0 44 ZDO_CompareClusterLists
|
|
0 39 ZDO_ConvertOTAClusters
|
|
0 41 ZDO_CopyMatchInfo
|
|
0 14 -> osal_mem_alloc
|
|
0 14 -> osal_mem_free
|
|
0 17 -> osal_memcpy
|
|
2 0 ZDO_EndDeviceBindMatchTimeoutCB
|
|
2 0 -> ZDMatchSendState
|
|
1 17 ZDO_EndDeviceTimeoutCB
|
|
0 17 -> ZDP_SendData
|
|
0 12 -> osal_mem_free
|
|
2 0 ZDO_Init
|
|
2 0 -> APS_ReflectorInit
|
|
2 0 -> NLME_DeviceJoiningInit
|
|
2 0 -> sAddrExtCpy
|
|
1 29 ZDO_MatchEndDeviceBind
|
|
0 24 -> APS_SetEndDeviceBindTimeout
|
|
0 24 -> ZDMatchSendState
|
|
0 28 -> ZDO_CompareClusterLists
|
|
0 24 -> ZDO_CopyMatchInfo
|
|
0 24 -> ZDO_RemoveMatchMemory
|
|
0 29 -> ZDP_SendData
|
|
0 24 -> osal_mem_alloc
|
|
0 27 -> osal_memcpy
|
|
0 24 -> osal_memset
|
|
1 14 ZDO_ParseAddrRsp
|
|
0 14 -> osal_mem_alloc
|
|
0 14 -> sAddrExtCpy
|
|
1 10 ZDO_ParseBindUnbindReq
|
|
0 10 -> sAddrExtCpy
|
|
1 52 ZDO_ParseDeviceAnnce
|
|
0 10 -> sAddrExtCpy
|
|
1 18 ZDO_ParseEPListRsp
|
|
0 15 -> osal_mem_alloc
|
|
0 18 -> osal_memcpy
|
|
1 12 ZDO_ParseEndDeviceBindReq
|
|
0 12 -> ZDO_ConvertOTAClusters
|
|
0 12 -> osal_mem_alloc
|
|
0 12 -> sAddrExtCpy
|
|
1 16 ZDO_ParseMgmNwkDiscRsp
|
|
0 16 -> osal_mem_alloc
|
|
0 16 -> sAddrExtCpy
|
|
1 16 ZDO_ParseMgmtBindRsp
|
|
0 16 -> osal_mem_alloc
|
|
0 16 -> sAddrExtCpy
|
|
1 16 ZDO_ParseMgmtLqiRsp
|
|
0 16 -> osal_mem_alloc
|
|
0 16 -> sAddrExtCpy
|
|
1 23 ZDO_ParseMgmtNwkUpdateNotify
|
|
0 20 -> osal_build_uint32
|
|
0 20 -> osal_mem_alloc
|
|
0 23 -> osal_memcpy
|
|
1 10 ZDO_ParseMgmtNwkUpdateReq
|
|
0 10 -> osal_build_uint32
|
|
1 14 ZDO_ParseMgmtRtgRsp
|
|
0 14 -> osal_mem_alloc
|
|
1 10 ZDO_ParseNodeDescRsp
|
|
1 12 ZDO_ParsePowerDescRsp
|
|
1 9 ZDO_ParseServerDiscRsp
|
|
1 23 ZDO_ParseSimpleDescBuf
|
|
0 14 -> osal_mem_alloc
|
|
0 14 -> osal_mem_free
|
|
1 9 ZDO_ParseSimpleDescRsp
|
|
0 9 -> ZDO_ParseSimpleDescBuf
|
|
1 18 ZDO_ParseUserDescRsp
|
|
0 15 -> osal_mem_alloc
|
|
0 18 -> osal_memcpy
|
|
0 21 ZDO_ProcessActiveEPReq
|
|
0 14 -> NLME_GetShortAddr
|
|
0 21 -> ZDP_EPRsp
|
|
0 14 -> afEndPoints
|
|
0 14 -> afNumEndPoints
|
|
0 29 ZDO_ProcessBindUnbindReq
|
|
0 25 -> APSME_BindRequest
|
|
0 24 -> APSME_LookupNwkAddr
|
|
0 25 -> APSME_UnBindRequest
|
|
0 24 -> NLME_GetExtAddr
|
|
0 24 -> ZDApp_NVUpdate
|
|
0 24 -> ZDP_NwkAddrReq
|
|
0 29 -> ZDP_SendData
|
|
0 24 -> sAddrExtCmp
|
|
0 24 -> sAddrExtCpy
|
|
0 42 ZDO_ProcessDeviceAnnce
|
|
0 42 -> AddrMgrEntryLookupExt
|
|
0 42 -> AddrMgrEntryLookupNwk
|
|
0 42 -> AddrMgrEntryUpdate
|
|
0 42 -> AddrMgrExtAddrSet
|
|
0 42 -> NLME_CheckNewAddrSet
|
|
0 42 -> NLME_GetCoordExtAddr
|
|
0 42 -> NLME_GetCoordShortAddr
|
|
0 42 -> NLME_GetExtAddr
|
|
0 42 -> NLME_GetShortAddr
|
|
0 42 -> RTG_RemoveRtgEntry
|
|
0 42 -> ZDO_ParseDeviceAnnce
|
|
0 42 -> ZMacSetReq
|
|
0 42 -> nwkNeighborRemoveAllStranded
|
|
0 42 -> nwkNeighborUpdateNwkAddr
|
|
0 42 -> osal_memset
|
|
0 42 -> sAddrExtCmp
|
|
1 36 ZDO_ProcessMatchDescReq
|
|
0 29 -> NLME_IsAddressBroadcast
|
|
0 31 -> ZDO_AnyClusterMatches
|
|
0 29 -> ZDO_ConvertOTAClusters
|
|
0 36 -> ZDP_EPRsp
|
|
0 29 -> osal_mem_alloc
|
|
0 29 -> osal_mem_free
|
|
0 32 -> osal_memcpy
|
|
0 29 -> osal_msg_allocate
|
|
0 29 -> osal_msg_send
|
|
0 25 ZDO_ProcessMgmtBindReq
|
|
0 20 -> APSME_GetRequest
|
|
0 25 -> ZDP_MgmtBindRsp
|
|
0 20 -> osal_mem_alloc
|
|
0 20 -> osal_mem_free
|
|
1 16 ZDO_ProcessMgmtDirectJoinReq
|
|
0 11 -> NLME_DirectJoinRequest
|
|
0 16 -> ZDP_SendData
|
|
1 23 ZDO_ProcessMgmtLeaveReq
|
|
0 18 -> AddrMgrExtAddrValid
|
|
0 18 -> NLME_GetExtAddr
|
|
0 18 -> NLME_LeaveReq
|
|
0 23 -> ZDP_SendData
|
|
0 18 -> sAddrExtCmp
|
|
1 63 ZDO_ProcessMgmtLqiReq
|
|
0 58 -> AddrMgrEntryLookupNwk
|
|
0 58 -> AssocCount
|
|
0 58 -> AssocFindDevice
|
|
0 58 -> NLME_GetRequest
|
|
0 63 -> ZDP_MgmtLqiRsp
|
|
0 58 -> osal_mem_alloc
|
|
0 58 -> osal_mem_free
|
|
0 58 -> osal_memset
|
|
0 58 -> sAddrExtCpy
|
|
1 17 ZDO_ProcessMgmtNwkDiscReq
|
|
0 17 -> NLME_NwkDiscReq2
|
|
0 17 -> NLME_NwkDiscTerm
|
|
0 17 -> osal_build_uint32
|
|
1 16 ZDO_ProcessMgmtPermitJoinReq
|
|
0 11 -> NLME_PermitJoiningRequest
|
|
0 16 -> ZDP_SendData
|
|
0 22 ZDO_ProcessMgmtRtgReq
|
|
0 17 -> NLME_GetRequest
|
|
0 22 -> ZDP_MgmtRtgRsp
|
|
0 17 -> osal_mem_alloc
|
|
0 17 -> osal_mem_free
|
|
0 14 ZDO_ProcessNodeDescReq
|
|
0 14 -> ZDP_GenericRsp
|
|
0 12 -> ZDP_NodeDescMsg
|
|
0 14 ZDO_ProcessPowerDescReq
|
|
0 14 -> ZDP_GenericRsp
|
|
0 12 -> ZDP_PowerDescMsg
|
|
0 14 ZDO_ProcessServerDiscReq
|
|
0 14 -> ZDP_ServerDiscRsp
|
|
0 12 ZDO_ProcessSimpleDescReq
|
|
0 12 -> ZDP_SimpleDescMsg
|
|
0 12 -> afFindSimpleDesc
|
|
0 12 -> osal_mem_free
|
|
0 33 ZDO_ProcessUserDescReq
|
|
0 33 -> ZDP_GenericRsp
|
|
0 32 -> ZDP_UserDescRsp
|
|
0 33 -> osal_nv_read
|
|
1 40 ZDO_ProcessUserDescSet
|
|
0 40 -> ZDP_SendData
|
|
0 38 -> osal_memcpy
|
|
0 39 -> osal_nv_write
|
|
2 37 ZDO_RemoveMatchMemory
|
|
2 0 -> osal_mem_free
|
|
0 20 ZDO_StartDevice
|
|
0 20 -> NLME_NetworkDiscoveryRequest
|
|
0 20 -> NLME_OrphanJoinRequest
|
|
0 20 -> nwk_ScanJoiningOrphan
|
|
0 20 -> osal_start_timerEx
|
|
2 13 ZDO_UpdateAddrManager
|
|
2 13 -> AddrMgrEntryUpdate
|
|
2 13 -> AddrMgrExtAddrSet
|
|
1 12 ZDO_UpdateNwkStatus
|
|
0 12 -> NLME_GetExtAddr
|
|
0 12 -> NLME_GetShortAddr
|
|
0 12 -> osal_msg_allocate
|
|
0 12 -> osal_msg_find
|
|
0 12 -> osal_msg_send
|
|
0 12 -> osal_set_event
|
|
|
|
|
|
Segment part sizes:
|
|
|
|
Bytes Function/Label
|
|
----- --------------
|
|
5 ??Subroutine219_0
|
|
8 ??Subroutine220_0
|
|
3 ??Subroutine221_0
|
|
5 ??Subroutine222_0
|
|
5 ??Subroutine223_0
|
|
7 ??Subroutine224_0
|
|
8 ??Subroutine225_0
|
|
5 ??Subroutine226_0
|
|
8 ??Subroutine227_0
|
|
7 ??Subroutine228_0
|
|
2 ??Subroutine229_0
|
|
9 ??Subroutine230_0
|
|
4 ??Subroutine231_0
|
|
1 ??Subroutine232_0
|
|
1 ??Subroutine233_0
|
|
1 ??Subroutine234_0
|
|
4 ??Subroutine235_0
|
|
2 ??Subroutine236_0
|
|
7 ??Subroutine237_0
|
|
1 ??Subroutine238_0
|
|
5 ??Subroutine239_0
|
|
5 ??Subroutine240_0
|
|
6 ??Subroutine241_0
|
|
4 ??Subroutine242_0
|
|
4 ??Subroutine243_0
|
|
6 ??Subroutine244_0
|
|
1 ??Subroutine245_0
|
|
1 ??Subroutine246_0
|
|
1 ??Subroutine247_0
|
|
4 ??Subroutine248_0
|
|
6 ??Subroutine249_0
|
|
6 ??Subroutine250_0
|
|
4 ??Subroutine251_0
|
|
6 ??Subroutine252_0
|
|
4 ??Subroutine253_0
|
|
2 ??Subroutine254_0
|
|
6 ??Subroutine255_0
|
|
5 ??Subroutine256_0
|
|
8 ??Subroutine257_0
|
|
7 ??Subroutine258_0
|
|
8 ??Subroutine259_0
|
|
2 ??Subroutine260_0
|
|
9 ??Subroutine261_0
|
|
2 ??Subroutine262_0
|
|
8 ??Subroutine263_0
|
|
10 ??Subroutine264_0
|
|
6 ??Subroutine265_0
|
|
9 ??Subroutine266_0
|
|
1 ??Subroutine267_0
|
|
4 ??Subroutine268_0
|
|
9 ??Subroutine269_0
|
|
4 ??Subroutine270_0
|
|
6 ??Subroutine271_0
|
|
3 ??Subroutine272_0
|
|
4 ??Subroutine273_0
|
|
6 ??Subroutine274_0
|
|
9 ??Subroutine275_0
|
|
5 ??Subroutine276_0
|
|
6 ??Subroutine277_0
|
|
5 ??Subroutine278_0
|
|
4 ??Subroutine279_0
|
|
5 ??Subroutine280_0
|
|
9 ??Subroutine281_0
|
|
6 ??Subroutine282_0
|
|
8 ??Subroutine283_0
|
|
5 ??Subroutine284_0
|
|
6 ??Subroutine285_0
|
|
9 ??Subroutine286_0
|
|
5 ??Subroutine287_0
|
|
6 ??Subroutine288_0
|
|
1 ??Subroutine289_0
|
|
5 ??Subroutine290_0
|
|
9 ??Subroutine291_0
|
|
5 ??Subroutine292_0
|
|
8 ??Subroutine293_0
|
|
9 ??Subroutine294_0
|
|
7 ?Subroutine0
|
|
5 ?Subroutine1
|
|
40 ?Subroutine10
|
|
6 ?Subroutine100
|
|
6 ?Subroutine101
|
|
3 ?Subroutine102
|
|
12 ?Subroutine103
|
|
10 ?Subroutine104
|
|
3 ?Subroutine105
|
|
12 ?Subroutine106
|
|
10 ?Subroutine107
|
|
4 ?Subroutine108
|
|
8 ?Subroutine109
|
|
29 ?Subroutine11
|
|
7 ?Subroutine110
|
|
11 ?Subroutine111
|
|
2 ?Subroutine112
|
|
2 ?Subroutine113
|
|
14 ?Subroutine114
|
|
4 ?Subroutine115
|
|
13 ?Subroutine116
|
|
10 ?Subroutine117
|
|
5 ?Subroutine118
|
|
16 ?Subroutine119
|
|
20 ?Subroutine12
|
|
13 ?Subroutine120
|
|
9 ?Subroutine121
|
|
11 ?Subroutine122
|
|
12 ?Subroutine123
|
|
10 ?Subroutine124
|
|
1 ?Subroutine125
|
|
8 ?Subroutine126
|
|
4 ?Subroutine127
|
|
9 ?Subroutine128
|
|
4 ?Subroutine129
|
|
23 ?Subroutine13
|
|
4 ?Subroutine130
|
|
7 ?Subroutine131
|
|
1 ?Subroutine132
|
|
1 ?Subroutine133
|
|
4 ?Subroutine134
|
|
4 ?Subroutine135
|
|
19 ?Subroutine136
|
|
1 ?Subroutine137
|
|
11 ?Subroutine138
|
|
3 ?Subroutine139
|
|
17 ?Subroutine14
|
|
23 ?Subroutine140
|
|
9 ?Subroutine141
|
|
14 ?Subroutine142
|
|
4 ?Subroutine143
|
|
8 ?Subroutine144
|
|
2 ?Subroutine145
|
|
10 ?Subroutine146
|
|
4 ?Subroutine147
|
|
2 ?Subroutine148
|
|
16 ?Subroutine149
|
|
9 ?Subroutine15
|
|
1 ?Subroutine150
|
|
17 ?Subroutine151
|
|
8 ?Subroutine152
|
|
6 ?Subroutine153
|
|
4 ?Subroutine154
|
|
9 ?Subroutine155
|
|
1 ?Subroutine156
|
|
1 ?Subroutine157
|
|
4 ?Subroutine158
|
|
4 ?Subroutine159
|
|
27 ?Subroutine16
|
|
10 ?Subroutine160
|
|
4 ?Subroutine161
|
|
1 ?Subroutine162
|
|
8 ?Subroutine163
|
|
10 ?Subroutine164
|
|
13 ?Subroutine165
|
|
6 ?Subroutine166
|
|
7 ?Subroutine167
|
|
4 ?Subroutine168
|
|
6 ?Subroutine169
|
|
9 ?Subroutine17
|
|
4 ?Subroutine170
|
|
17 ?Subroutine171
|
|
18 ?Subroutine172
|
|
15 ?Subroutine173
|
|
2 ?Subroutine174
|
|
10 ?Subroutine175
|
|
5 ?Subroutine176
|
|
13 ?Subroutine177
|
|
12 ?Subroutine178
|
|
9 ?Subroutine179
|
|
5 ?Subroutine18
|
|
7 ?Subroutine180
|
|
3 ?Subroutine181
|
|
2 ?Subroutine182
|
|
2 ?Subroutine183
|
|
1 ?Subroutine184
|
|
13 ?Subroutine185
|
|
6 ?Subroutine186
|
|
5 ?Subroutine187
|
|
9 ?Subroutine188
|
|
7 ?Subroutine189
|
|
6 ?Subroutine19
|
|
2 ?Subroutine190
|
|
17 ?Subroutine191
|
|
5 ?Subroutine192
|
|
19 ?Subroutine193
|
|
10 ?Subroutine194
|
|
12 ?Subroutine195
|
|
7 ?Subroutine196
|
|
1 ?Subroutine197
|
|
6 ?Subroutine198
|
|
9 ?Subroutine199
|
|
3 ?Subroutine2
|
|
1 ?Subroutine20
|
|
7 ?Subroutine200
|
|
1 ?Subroutine201
|
|
3 ?Subroutine202
|
|
10 ?Subroutine203
|
|
1 ?Subroutine204
|
|
9 ?Subroutine205
|
|
11 ?Subroutine206
|
|
9 ?Subroutine207
|
|
6 ?Subroutine208
|
|
6 ?Subroutine209
|
|
2 ?Subroutine21
|
|
5 ?Subroutine210
|
|
2 ?Subroutine211
|
|
8 ?Subroutine212
|
|
8 ?Subroutine213
|
|
6 ?Subroutine214
|
|
9 ?Subroutine215
|
|
7 ?Subroutine216
|
|
5 ?Subroutine217
|
|
7 ?Subroutine218
|
|
16 ?Subroutine22
|
|
6 ?Subroutine23
|
|
8 ?Subroutine24
|
|
8 ?Subroutine25
|
|
4 ?Subroutine26
|
|
6 ?Subroutine27
|
|
2 ?Subroutine28
|
|
4 ?Subroutine29
|
|
4 ?Subroutine3
|
|
4 ?Subroutine30
|
|
8 ?Subroutine31
|
|
12 ?Subroutine32
|
|
4 ?Subroutine33
|
|
5 ?Subroutine34
|
|
7 ?Subroutine35
|
|
6 ?Subroutine36
|
|
4 ?Subroutine37
|
|
13 ?Subroutine38
|
|
8 ?Subroutine39
|
|
2 ?Subroutine4
|
|
8 ?Subroutine40
|
|
3 ?Subroutine41
|
|
10 ?Subroutine42
|
|
25 ?Subroutine43
|
|
5 ?Subroutine44
|
|
7 ?Subroutine45
|
|
8 ?Subroutine46
|
|
27 ?Subroutine47
|
|
9 ?Subroutine48
|
|
4 ?Subroutine49
|
|
3 ?Subroutine5
|
|
8 ?Subroutine50
|
|
4 ?Subroutine51
|
|
4 ?Subroutine52
|
|
4 ?Subroutine53
|
|
13 ?Subroutine54
|
|
6 ?Subroutine55
|
|
9 ?Subroutine56
|
|
21 ?Subroutine57
|
|
14 ?Subroutine58
|
|
31 ?Subroutine59
|
|
5 ?Subroutine6
|
|
29 ?Subroutine60
|
|
4 ?Subroutine61
|
|
13 ?Subroutine62
|
|
21 ?Subroutine63
|
|
9 ?Subroutine64
|
|
17 ?Subroutine65
|
|
3 ?Subroutine66
|
|
38 ?Subroutine67
|
|
6 ?Subroutine68
|
|
4 ?Subroutine69
|
|
6 ?Subroutine7
|
|
8 ?Subroutine70
|
|
3 ?Subroutine71
|
|
7 ?Subroutine72
|
|
14 ?Subroutine73
|
|
11 ?Subroutine74
|
|
10 ?Subroutine75
|
|
10 ?Subroutine76
|
|
4 ?Subroutine77
|
|
2 ?Subroutine78
|
|
4 ?Subroutine79
|
|
5 ?Subroutine8
|
|
6 ?Subroutine80
|
|
5 ?Subroutine81
|
|
12 ?Subroutine82
|
|
4 ?Subroutine83
|
|
10 ?Subroutine84
|
|
6 ?Subroutine85
|
|
12 ?Subroutine86
|
|
13 ?Subroutine87
|
|
11 ?Subroutine88
|
|
16 ?Subroutine89
|
|
25 ?Subroutine9
|
|
14 ?Subroutine90
|
|
5 ?Subroutine91
|
|
22 ?Subroutine92
|
|
1 ?Subroutine93
|
|
2 ?Subroutine94
|
|
13 ?Subroutine95
|
|
6 ?Subroutine96
|
|
6 ?Subroutine97
|
|
3 ?Subroutine98
|
|
6 ?Subroutine99
|
|
3 NLME_PermitJoiningTimeout
|
|
648 ZDMatchSendState
|
|
52 ZDOBuildBuf
|
|
90 ZDO_AnyClusterMatches
|
|
194 ZDO_BuildSimpleDescBuf
|
|
126 ZDO_CompareClusterLists
|
|
66 ZDO_ConvertOTAClusters
|
|
197 ZDO_CopyMatchInfo
|
|
2 ZDO_EDBind
|
|
16 ZDO_EndDeviceBindMatchTimeoutCB
|
|
201 ZDO_EndDeviceTimeoutCB
|
|
43 ZDO_Init
|
|
544 ZDO_MatchEndDeviceBind
|
|
213 ZDO_ParseAddrRsp
|
|
50 ZDO_ParseBindUnbindReq
|
|
51 ZDO_ParseDeviceAnnce
|
|
104 ZDO_ParseEPListRsp
|
|
224 ZDO_ParseEndDeviceBindReq
|
|
244 ZDO_ParseMgmNwkDiscRsp
|
|
134 ZDO_ParseMgmtBindRsp
|
|
148 ZDO_ParseMgmtLqiRsp
|
|
340 ZDO_ParseMgmtNwkUpdateNotify
|
|
116 ZDO_ParseMgmtNwkUpdateReq
|
|
144 ZDO_ParseMgmtRtgRsp
|
|
285 ZDO_ParseNodeDescRsp
|
|
203 ZDO_ParsePowerDescRsp
|
|
51 ZDO_ParseServerDiscRsp
|
|
252 ZDO_ParseSimpleDescBuf
|
|
30 ZDO_ParseSimpleDescRsp
|
|
117 ZDO_ParseUserDescRsp
|
|
123 ZDO_ProcessActiveEPReq
|
|
299 ZDO_ProcessBindUnbindReq
|
|
359 ZDO_ProcessDeviceAnnce
|
|
1121 ZDO_ProcessMatchDescReq
|
|
265 ZDO_ProcessMgmtBindReq
|
|
80 ZDO_ProcessMgmtDirectJoinReq
|
|
157 ZDO_ProcessMgmtLeaveReq
|
|
647 ZDO_ProcessMgmtLqiReq
|
|
117 ZDO_ProcessMgmtNwkDiscReq
|
|
74 ZDO_ProcessMgmtPermitJoinReq
|
|
288 ZDO_ProcessMgmtRtgReq
|
|
66 ZDO_ProcessNodeDescReq
|
|
66 ZDO_ProcessPowerDescReq
|
|
63 ZDO_ProcessServerDiscReq
|
|
146 ZDO_ProcessSimpleDescReq
|
|
157 ZDO_ProcessUserDescReq
|
|
296 ZDO_ProcessUserDescSet
|
|
115 ZDO_RemoveMatchMemory
|
|
186 ZDO_StartDevice
|
|
51 ZDO_UpdateAddrManager
|
|
123 ZDO_UpdateNwkStatus
|
|
4 apsChannelMask
|
|
2 matchED
|
|
1 scanCnt
|
|
294 -- Other
|
|
|
|
|
|
11 899 bytes in segment BANKED_CODE
|
|
294 bytes in segment BANK_RELAYS
|
|
61 bytes in segment XDATA_Z
|
|
|
|
294 bytes of CODE memory
|
|
11 899 bytes of HUGECODE memory
|
|
61 bytes of XDATA memory
|
|
|
|
Errors: none
|
|
Warnings: none
|