7531 lines
355 KiB
Plaintext
7531 lines
355 KiB
Plaintext
###############################################################################
|
||
#
|
||
# IAR C/C++ Compiler V10.30.1.6000 for 8051 23/Aug/2019 12:13:11
|
||
# 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 =
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\stack\zdo\ZDProfile.c
|
||
# Command line =
|
||
# -f C:\Users\VULCAN\AppData\Local\Temp\EWE3EF.tmp
|
||
# (E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\stack\zdo\ZDProfile.c
|
||
# -D ZIGBEEPRO -D ZTOOL_P1 -D MT_TASK -D MT_SYS_FUNC -D MT_ZDO_FUNC -D
|
||
# LCD_SUPPORTED=DEBUG -D SAPP_ZSTACK -lC
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\RouterEB\List
|
||
# -lA
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\RouterEB\List
|
||
# --diag_suppress Pe001,Pa010 -o
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\RouterEB\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
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wRouter.cfg
|
||
# (-DCPU32MHZ -DROOT=__near_func -DMAC_CFG_APP_PENDING_QUEUE=TRUE
|
||
# -DMAC_CFG_TX_DATA_MAX=5 -DMAC_CFG_TX_MAX=8 -DMAC_CFG_RX_MAX=5
|
||
# -DRTR_NWK) -f
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wConfig.cfg
|
||
# (-DZIGBEEPRO -DSECURE=0 -DZG_SECURE_DYNAMIC=0 -DREFLECTOR
|
||
# -DDEFAULT_CHANLIST=0x00800000 -DZDAPP_CONFIG_PAN_ID=0x0057
|
||
# -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
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\
|
||
# -I
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\Source\
|
||
# -I
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\ZMain\TI2530DB\
|
||
# -I
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\include\
|
||
# -I
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\target\CC2530EB\
|
||
# -I
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\include\
|
||
# -I
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\high_level\
|
||
# -I
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\
|
||
# -I
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\single_chip\
|
||
# -I
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mt\
|
||
# -I
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\osal\include\
|
||
# -I
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\saddr\
|
||
# -I
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\sdata\
|
||
# -I
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\af\
|
||
# -I
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\nwk\
|
||
# -I
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sapi\
|
||
# -I
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sec\
|
||
# -I
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sys\
|
||
# -I
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\zdo\
|
||
# -I
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\
|
||
# -I
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\f8w\
|
||
# -Ohz --require_prototypes --no_code_motion)
|
||
# Locale = Chinese (Simplified)_CHN.936
|
||
# List file =
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\RouterEB\List\ZDProfile.lst
|
||
# Object file =
|
||
# E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\RouterEB\Obj\ZDProfile.r51
|
||
#
|
||
###############################################################################
|
||
|
||
E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\stack\zdo\ZDProfile.c
|
||
1 /**************************************************************************************************
|
||
2 Filename: ZDProfile.c
|
||
3 Revised: $Date: 2010-10-13 10:54:13 -0700 (Wed, 13 Oct 2010) $
|
||
4 Revision: $Revision: 24112 $
|
||
5
|
||
6 Description: This is the Zigbee Device Profile.
|
||
7
|
||
8
|
||
9 Copyright 2004-2010 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 揂S IS<49> 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 "AF.h"
|
||
46 #include "NLMEDE.h"
|
||
47 #include "nwk_util.h"
|
||
48 #include "APS.h"
|
||
49
|
||
50 #include "AddrMgr.h"
|
||
51 #include "ZDConfig.h"
|
||
52 #include "ZDProfile.h"
|
||
53 #include "ZDObject.h"
|
||
54 #include "ZDNwkMgr.h"
|
||
55
|
||
56 #if defined( LCD_SUPPORTED )
|
||
57 #include "OnBoard.h"
|
||
58 #endif
|
||
59
|
||
60 #include "nwk_util.h"
|
||
61
|
||
62 #if defined( MT_ZDO_FUNC )
|
||
63 #include "MT_ZDO.h"
|
||
64 #endif
|
||
65
|
||
66 /*********************************************************************
|
||
67 * MACROS
|
||
68 */
|
||
69
|
||
70 #define ZADDR_TO_AFADDR( pZADDR, AFADDR ) { \
|
||
71 (AFADDR).endPoint = ZDP_AF_ENDPOINT; \
|
||
72 (AFADDR).addrMode = (afAddrMode_t)(pZADDR)->addrMode; \
|
||
73 (AFADDR).addr.shortAddr = (pZADDR)->addr.shortAddr; \
|
||
74 }
|
||
75
|
||
76 #define FillAndSendBuffer( TRANSSEQ, ADDR, ID, LEN, BUF ) { \
|
||
77 afStatus_t stat; \
|
||
78 ZDP_TmpBuf = (BUF)+1; \
|
||
79 stat = fillAndSend( (TRANSSEQ), (ADDR), (ID), (LEN) ); \
|
||
80 osal_mem_free( (BUF) ); \
|
||
81 ZDP_TmpBuf = ZDP_Buf+1; \
|
||
82 return stat; \
|
||
83 }
|
||
84
|
||
85 #define FillAndSendTxOptions( TRANSSEQ, ADDR, ID, LEN, TxO ) { \
|
||
86 afStatus_t stat; \
|
||
87 ZDP_TxOptions = (TxO); \
|
||
88 stat = fillAndSend( (TRANSSEQ), (ADDR), (ID), (LEN) ); \
|
||
89 ZDP_TxOptions = AF_TX_OPTIONS_NONE; \
|
||
90 return stat; \
|
||
91 }
|
||
92
|
||
93 #define FillAndSendBufferTxOptions( TRANSSEQ, ADDR, ID, LEN, BUF, TxO ) { \
|
||
94 afStatus_t stat; \
|
||
95 ZDP_TmpBuf = (BUF)+1; \
|
||
96 ZDP_TxOptions = (TxO); \
|
||
97 stat = fillAndSend( (TRANSSEQ), (ADDR), (ID), (LEN) ); \
|
||
98 osal_mem_free( (BUF) ); \
|
||
99 ZDP_TmpBuf = ZDP_Buf+1; \
|
||
100 ZDP_TxOptions = AF_TX_OPTIONS_NONE; \
|
||
101 return stat; \
|
||
102 }
|
||
103
|
||
104 /*********************************************************************
|
||
105 * CONSTANTS
|
||
106 */
|
||
107
|
||
108 #define ZDP_BUF_SZ 80
|
||
109
|
||
|
||
\ In segment CODE_C, align 1
|
||
110 CONST byte ZDP_AF_ENDPOINT = 0;
|
||
\ ZDP_AF_ENDPOINT:
|
||
\ 000000 00 DB 0
|
||
111
|
||
112 /*********************************************************************
|
||
113 * TYPEDEFS
|
||
114 */
|
||
115 typedef struct
|
||
116 {
|
||
117 void *next;
|
||
118 uint8 taskID;
|
||
119 uint16 clusterID;
|
||
120 } ZDO_MsgCB_t;
|
||
121
|
||
122
|
||
123 /*********************************************************************
|
||
124 * GLOBAL VARIABLES
|
||
125 */
|
||
126
|
||
|
||
\ In segment XDATA_Z, align 1, keep-with-next
|
||
127 byte ZDP_TransID = 0;
|
||
\ ZDP_TransID:
|
||
\ 000000 DS 1
|
||
\ 000001 REQUIRE __INIT_XDATA_Z
|
||
128
|
||
129 /*********************************************************************
|
||
130 * EXTERNAL VARIABLES
|
||
131 */
|
||
132
|
||
133 extern endPointDesc_t ZDApp_epDesc;
|
||
134
|
||
135 /*********************************************************************
|
||
136 * EXTERNAL FUNCTIONS
|
||
137 */
|
||
138
|
||
139 /*********************************************************************
|
||
140 * LOCAL FUNCTIONS
|
||
141 */
|
||
142
|
||
143 static afStatus_t fillAndSend( uint8 *transSeq, zAddrType_t *addr, cId_t clusterID, byte len );
|
||
144 uint8 ZDO_SendMsgCBs( zdoIncomingMsg_t *inMsg );
|
||
145 void zdpProcessAddrReq( zdoIncomingMsg_t *inMsg );
|
||
146
|
||
147 /*********************************************************************
|
||
148 * LOCAL VARIABLES
|
||
149 */
|
||
150
|
||
|
||
\ In segment XDATA_Z, align 1, keep-with-next
|
||
151 static uint8 ZDP_Buf[ ZDP_BUF_SZ ];
|
||
\ ZDP_Buf:
|
||
\ 000000 DS 80
|
||
\ 000050 REQUIRE __INIT_XDATA_Z
|
||
|
||
\ In segment XDATA_I, align 1, keep-with-next
|
||
152 static uint8 *ZDP_TmpBuf = ZDP_Buf+1;
|
||
\ ZDP_TmpBuf:
|
||
\ 000000 DS 2
|
||
\ 000002 REQUIRE `?<Initializer for ZDP_TmpBuf>`
|
||
\ 000002 REQUIRE __INIT_XDATA_I
|
||
153
|
||
|
||
\ In segment XDATA_Z, align 1, keep-with-next
|
||
154 byte ZDP_TxOptions = AF_TX_OPTIONS_NONE;
|
||
\ ZDP_TxOptions:
|
||
\ 000000 DS 1
|
||
\ 000001 REQUIRE __INIT_XDATA_Z
|
||
|
||
\ In segment XDATA_Z, align 1, keep-with-next
|
||
155 ZDO_MsgCB_t *zdoMsgCBs = (ZDO_MsgCB_t *)NULL;
|
||
\ zdoMsgCBs:
|
||
\ 000000 DS 2
|
||
\ 000002 REQUIRE __INIT_XDATA_Z
|
||
156
|
||
157 /*********************************************************************
|
||
158 * ZDO Message Processing table
|
||
159 */
|
||
160
|
||
161 typedef void (*pfnZDPMsgProcessor)( zdoIncomingMsg_t *inMsg );
|
||
162
|
||
163 typedef struct
|
||
164 {
|
||
165 uint16 clusterID;
|
||
166 pfnZDPMsgProcessor pFn;
|
||
167 } zdpMsgProcItem_t;
|
||
168
|
||
|
||
\ In segment CODE_C, align 1
|
||
169 CONST zdpMsgProcItem_t zdpMsgProcs[] =
|
||
\ zdpMsgProcs:
|
||
\ 000000 0000 DW 0
|
||
\ 000002 .... DW `??zdpProcessAddrReq::?relay`
|
||
\ 000004 1300 DW 19
|
||
\ 000006 .... DW `??ZDO_ProcessDeviceAnnce::?relay`
|
||
\ 000008 0100 DW 1
|
||
\ 00000A .... DW `??zdpProcessAddrReq::?relay`
|
||
\ 00000C 0200 DW 2
|
||
\ 00000E .... DW `??ZDO_ProcessNodeDescReq::?relay`
|
||
\ 000010 0300 DW 3
|
||
\ 000012 .... DW `??ZDO_ProcessPowerDescReq::?relay`
|
||
\ 000014 0400 DW 4
|
||
\ 000016 .... DW `??ZDO_ProcessSimpleDescReq::?relay`
|
||
\ 000018 0500 DW 5
|
||
\ 00001A .... DW `??ZDO_ProcessActiveEPReq::?relay`
|
||
\ 00001C 0600 DW 6
|
||
\ 00001E .... DW `??ZDO_ProcessMatchDescReq::?relay`
|
||
\ 000020 1100 DW 17
|
||
\ 000022 .... DW `??ZDO_ProcessUserDescReq::?relay`
|
||
\ 000024 1400 DW 20
|
||
\ 000026 .... DW `??ZDO_ProcessUserDescSet::?relay`
|
||
\ 000028 1500 DW 21
|
||
\ 00002A .... DW `??ZDO_ProcessServerDiscReq::?relay`
|
||
\ 00002C FFFF DW 65535
|
||
\ 00002E 0000 DW 0H
|
||
170 {
|
||
171 #if ( RFD_RCVC_ALWAYS_ON==TRUE ) || ( ZG_BUILD_RTR_TYPE )
|
||
172 // These aren't processed by sleeping end devices.
|
||
173 { NWK_addr_req, zdpProcessAddrReq },
|
||
174 { Device_annce, ZDO_ProcessDeviceAnnce },
|
||
175 #endif
|
||
176 { IEEE_addr_req, zdpProcessAddrReq },
|
||
177 { Node_Desc_req, ZDO_ProcessNodeDescReq },
|
||
178 { Power_Desc_req, ZDO_ProcessPowerDescReq },
|
||
179 { Simple_Desc_req, ZDO_ProcessSimpleDescReq },
|
||
180 { Active_EP_req, ZDO_ProcessActiveEPReq },
|
||
181 { Match_Desc_req, ZDO_ProcessMatchDescReq },
|
||
182 #if defined ( ZDO_MGMT_NWKDISC_RESPONSE )
|
||
183 { Mgmt_NWK_Disc_req, ZDO_ProcessMgmtNwkDiscReq },
|
||
184 #endif
|
||
185 #if defined ( ZDO_MGMT_LQI_RESPONSE ) && ( ZG_BUILD_RTR_TYPE )
|
||
186 { Mgmt_Lqi_req, ZDO_ProcessMgmtLqiReq },
|
||
187 #endif
|
||
188 #if defined ( ZDO_MGMT_RTG_RESPONSE ) && ( ZG_BUILD_RTR_TYPE )
|
||
189 { Mgmt_Rtg_req, ZDO_ProcessMgmtRtgReq },
|
||
190 #endif
|
||
191 #if defined ( ZDO_MGMT_BIND_RESPONSE ) && defined ( REFLECTOR )
|
||
192 { Mgmt_Bind_req, ZDO_ProcessMgmtBindReq },
|
||
193 #endif
|
||
194 #if defined ( ZDO_MGMT_JOINDIRECT_RESPONSE ) && ( ZG_BUILD_RTR_TYPE )
|
||
195 { Mgmt_Direct_Join_req, ZDO_ProcessMgmtDirectJoinReq },
|
||
196 #endif
|
||
197 #if defined ( ZDO_MGMT_LEAVE_RESPONSE )
|
||
198 { Mgmt_Leave_req, ZDO_ProcessMgmtLeaveReq },
|
||
199 #endif
|
||
200 #if defined ( ZDO_MGMT_PERMIT_JOIN_RESPONSE ) && ( ZG_BUILD_RTR_TYPE )
|
||
201 { Mgmt_Permit_Join_req, ZDO_ProcessMgmtPermitJoinReq },
|
||
202 #endif
|
||
203 #if defined ( ZDO_USERDESC_RESPONSE )
|
||
204 { User_Desc_req, ZDO_ProcessUserDescReq },
|
||
205 #endif
|
||
206 #if defined ( ZDO_USERDESCSET_RESPONSE )
|
||
207 { User_Desc_set, ZDO_ProcessUserDescSet },
|
||
208 #endif
|
||
209 #if defined ( ZDO_SERVERDISC_RESPONSE )
|
||
210 { Server_Discovery_req, ZDO_ProcessServerDiscReq },
|
||
211 #endif
|
||
212 {0xFFFF, NULL} // Last
|
||
213 };
|
||
214
|
||
215 /*********************************************************************
|
||
216 * @fn fillAndSend
|
||
217 *
|
||
218 * @brief Combined to reduce space
|
||
219 *
|
||
220 * @param
|
||
221 * @param
|
||
222 *
|
||
223 * @return afStatus_t
|
||
224 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
225 static afStatus_t fillAndSend( uint8 *transSeq, zAddrType_t *addr, cId_t clusterID, byte len )
|
||
\ fillAndSend:
|
||
226 {
|
||
\ 000000 REQUIRE ?V0
|
||
\ 000000 REQUIRE ?V1
|
||
\ 000000 REQUIRE ?V2
|
||
\ 000000 REQUIRE ?V3
|
||
\ 000000 REQUIRE ?V4
|
||
\ 000000 74F3 MOV A,#-0xd
|
||
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
||
\ 000005 ; Saved register size: 13
|
||
\ 000005 ; Auto size: 12
|
||
\ 000005 74F4 MOV A,#-0xc
|
||
\ 000007 12.... LCALL ?ALLOC_XSTACK8
|
||
\ 00000A 8A.. MOV ?V2,R2
|
||
\ 00000C 8B.. MOV ?V3,R3
|
||
\ 00000E 8C.. MOV ?V0,R4
|
||
\ 000010 8D.. MOV ?V1,R5
|
||
\ 000012 E9 MOV A,R1
|
||
\ 000013 FE MOV R6,A
|
||
227 afAddrType_t afAddr;
|
||
228
|
||
229 osal_memset( &afAddr, 0, sizeof(afAddrType_t) );
|
||
\ 000014 ; Setup parameters for call to function osal_memset
|
||
\ 000014 7C0C MOV R4,#0xc
|
||
\ 000016 7D00 MOV R5,#0x0
|
||
\ 000018 7900 MOV R1,#0x0
|
||
\ 00001A AA.. MOV R2,?XSP + 0
|
||
\ 00001C AB.. MOV R3,?XSP + 1
|
||
\ 00001E 12.... LCALL `??osal_memset::?relay`; Banked call to: osal_memset
|
||
230 ZADDR_TO_AFADDR( addr, afAddr );
|
||
\ 000021 7409 MOV A,#0x9
|
||
\ 000023 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000026 E4 CLR A
|
||
\ 000027 12.... LCALL ?Subroutine17 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_20:
|
||
\ 00002A A3 INC DPTR
|
||
\ 00002B E0 MOVX A,@DPTR
|
||
\ 00002C C0E0 PUSH A
|
||
\ 00002E 7408 MOV A,#0x8
|
||
\ 000030 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000033 D0E0 POP A
|
||
\ 000035 F0 MOVX @DPTR,A
|
||
\ 000036 85..82 MOV DPL,?V0
|
||
\ 000039 85..83 MOV DPH,?V1
|
||
\ 00003C 12.... LCALL ?Subroutine44 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_63:
|
||
\ 00003F 12.... LCALL ??Subroutine134_0 & 0xFFFF
|
||
231
|
||
232 *(ZDP_TmpBuf-1) = *transSeq;
|
||
\ ??CrossCallReturnLabel_249:
|
||
\ 000042 90.... MOV DPTR,#ZDP_TmpBuf
|
||
\ 000045 E0 MOVX A,@DPTR
|
||
\ 000046 24FF ADD A,#-0x1
|
||
\ 000048 F5.. MOV ?V0,A
|
||
\ 00004A A3 INC DPTR
|
||
\ 00004B E0 MOVX A,@DPTR
|
||
\ 00004C 34FF ADDC A,#-0x1
|
||
\ 00004E F5.. MOV ?V1,A
|
||
\ 000050 85..82 MOV DPL,?V2
|
||
\ 000053 85..83 MOV DPH,?V3
|
||
\ 000056 12.... LCALL ?Subroutine61 & 0xFFFF
|
||
233
|
||
234 return AF_DataRequest( &afAddr, &ZDApp_epDesc, clusterID,
|
||
235 (uint16)(len+1), (uint8*)(ZDP_TmpBuf-1),
|
||
236 transSeq, ZDP_TxOptions, AF_DEFAULT_RADIUS );
|
||
\ ??CrossCallReturnLabel_94:
|
||
\ 000059 ; Setup parameters for call to function AF_DataRequest
|
||
\ 000059 75..1E MOV ?V4,#0x1e
|
||
\ 00005C 78.. MOV R0,#?V4
|
||
\ 00005E 12.... LCALL ?PUSH_XSTACK_I_ONE
|
||
\ 000061 78.. MOV R0,#?V2
|
||
\ 000063 12.... LCALL ?PUSH_XSTACK_I_TWO
|
||
\ 000066 78.. MOV R0,#?V0
|
||
\ 000068 12.... LCALL ?PUSH_XSTACK_I_TWO
|
||
\ 00006B EE MOV A,R6
|
||
\ 00006C 2401 ADD A,#0x1
|
||
\ 00006E F5.. MOV ?V0,A
|
||
\ 000070 E4 CLR A
|
||
\ 000071 3400 ADDC A,#0x0
|
||
\ 000073 F5.. MOV ?V1,A
|
||
\ 000075 78.. MOV R0,#?V0
|
||
\ 000077 12.... LCALL ?PUSH_XSTACK_I_TWO
|
||
\ 00007A 7420 MOV A,#0x20
|
||
\ 00007C 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 00007F 12.... LCALL ?PUSH_XSTACK8_X_TWO
|
||
\ 000082 90.... MOV DPTR,#ZDP_TxOptions
|
||
\ 000085 E0 MOVX A,@DPTR
|
||
\ 000086 F9 MOV R1,A
|
||
\ 000087 7C.. MOV R4,#ZDApp_epDesc & 0xff
|
||
\ 000089 7D.. MOV R5,#(ZDApp_epDesc >> 8) & 0xff
|
||
\ 00008B 7409 MOV A,#0x9
|
||
\ 00008D 12.... LCALL ?XSTACK_DISP101_8
|
||
\ 000090 12.... LCALL `??AF_DataRequest::?relay`; Banked call to: AF_DataRequest
|
||
\ 000093 7409 MOV A,#0x9
|
||
\ 000095 12.... LCALL ?DEALLOC_XSTACK8
|
||
\ 000098 740C MOV A,#0xc
|
||
\ 00009A 12.... LCALL ?DEALLOC_XSTACK8
|
||
\ 00009D 7F05 MOV R7,#0x5
|
||
\ 00009F 02.... LJMP ?BANKED_LEAVE_XDATA
|
||
237
|
||
238 }
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine44:
|
||
\ 000000 12.... LCALL ?Subroutine81 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_330:
|
||
\ 000003 85..82 MOV DPL,?XSP + 0
|
||
\ 000006 85..83 MOV DPH,?XSP + 1
|
||
\ 000009 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine61:
|
||
\ 000000 12.... LCALL ?Subroutine102 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_164:
|
||
\ 000003 F0 MOVX @DPTR,A
|
||
\ 000004 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine102:
|
||
\ 000000 E0 MOVX A,@DPTR
|
||
\ 000001 85..82 MOV DPL,?V0
|
||
\ 000004 85..83 MOV DPH,?V1
|
||
\ 000007 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ??Subroutine134_0:
|
||
\ 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 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine17:
|
||
\ 000000 12.... LCALL ?Subroutine92 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_146:
|
||
\ 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
|
||
\ ?Subroutine92:
|
||
\ 000000 12.... LCALL ?Subroutine107 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_171:
|
||
\ 000003 A3 INC DPTR
|
||
\ 000004 A3 INC DPTR
|
||
\ 000005 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine107:
|
||
\ 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
|
||
\ ?Subroutine81:
|
||
\ 000000 12.... LCALL ??Subroutine145_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_339:
|
||
\ 000003 F9 MOV R1,A
|
||
\ 000004 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ??Subroutine145_0:
|
||
\ 000000 E0 MOVX A,@DPTR
|
||
\ 000001 F8 MOV R0,A
|
||
\ 000002 A3 INC DPTR
|
||
\ 000003 E0 MOVX A,@DPTR
|
||
\ 000004 22 RET
|
||
239
|
||
240 /*********************************************************************
|
||
241 * @fn ZDP_SendData
|
||
242 *
|
||
243 * @brief This builds and send a request message that has
|
||
244 * NWKAddrOfInterest as its only parameter.
|
||
245 *
|
||
246 * @param dstAddr - destination address
|
||
247 * @param cmd - clusterID
|
||
248 * @param dataLen - number of bytes of data
|
||
249 * @param data - pointer to the data
|
||
250 * @param SecurityEnable - Security Options
|
||
251 *
|
||
252 * @return afStatus_t
|
||
253 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
254 afStatus_t ZDP_SendData( uint8 *TransSeq, zAddrType_t *dstAddr, uint16 cmd,
|
||
\ ZDP_SendData:
|
||
255 byte len, uint8 *buf, byte SecurityEnable )
|
||
256 {
|
||
\ 000000 REQUIRE ?V0
|
||
\ 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 ?V0,R1
|
||
257 uint8 *pBuf = ZDP_TmpBuf;
|
||
\ 000007 90.... MOV DPTR,#ZDP_TmpBuf
|
||
\ 00000A E0 MOVX A,@DPTR
|
||
\ 00000B F5.. MOV ?V2,A
|
||
\ 00000D A3 INC DPTR
|
||
\ 00000E E0 MOVX A,@DPTR
|
||
\ 00000F F5.. MOV ?V3,A
|
||
258 byte cnt = len;
|
||
\ 000011 AE.. MOV R6,?V0
|
||
\ 000013 740E MOV A,#0xe
|
||
\ 000015 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000018 12.... LCALL ??Subroutine144_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_321:
|
||
\ 00001B 801F SJMP ??ZDP_SendData_0
|
||
259
|
||
260 while ( cnt-- )
|
||
261 {
|
||
262 *pBuf++ = *buf++;
|
||
\ ??ZDP_SendData_1:
|
||
\ 00001D 8882 MOV DPL,R0
|
||
\ 00001F 8983 MOV DPH,R1
|
||
\ 000021 E0 MOVX A,@DPTR
|
||
\ 000022 85..82 MOV DPL,?V2
|
||
\ 000025 85..83 MOV DPH,?V3
|
||
\ 000028 12.... LCALL ??Subroutine115_0 & 0xFFFF
|
||
263 }
|
||
\ ??CrossCallReturnLabel_175:
|
||
\ 00002B A882 MOV R0,DPL
|
||
\ 00002D A983 MOV R1,DPH
|
||
\ 00002F 85..82 MOV DPL,?V2
|
||
\ 000032 85..83 MOV DPH,?V3
|
||
\ 000035 A3 INC DPTR
|
||
\ 000036 8582.. MOV ?V2,DPL
|
||
\ 000039 8583.. MOV ?V3,DPH
|
||
\ ??ZDP_SendData_0:
|
||
\ 00003C EE MOV A,R6
|
||
\ 00003D FF MOV R7,A
|
||
\ 00003E 74FF MOV A,#-0x1
|
||
\ 000040 2F ADD A,R7
|
||
\ 000041 FE MOV R6,A
|
||
\ 000042 04 INC A
|
||
\ 000043 70D8 JNZ ??ZDP_SendData_1
|
||
264
|
||
265 FillAndSendTxOptions( TransSeq, dstAddr, cmd, len, ((SecurityEnable) ? AF_EN_SECURITY : 0) );
|
||
\ 000045 7410 MOV A,#0x10
|
||
\ 000047 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 00004A E0 MOVX A,@DPTR
|
||
\ 00004B 90.... MOV DPTR,#ZDP_TxOptions
|
||
\ 00004E 6004 JZ ??ZDP_SendData_2
|
||
\ 000050 7440 MOV A,#0x40
|
||
\ 000052 8001 SJMP ??ZDP_SendData_3
|
||
\ ??ZDP_SendData_2:
|
||
\ 000054 E4 CLR A
|
||
\ ??ZDP_SendData_3:
|
||
\ 000055 F0 MOVX @DPTR,A
|
||
\ 000056 ; Setup parameters for call to function fillAndSend
|
||
\ 000056 740C MOV A,#0xc
|
||
\ 000058 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 00005B 12.... LCALL ?PUSH_XSTACK8_X_TWO
|
||
\ 00005E A9.. MOV R1,?V0
|
||
\ 000060 12.... LCALL ??Subroutine140_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_295:
|
||
\ 000063 12.... LCALL ?DEALLOC_XSTACK8
|
||
\ 000066 E9 MOV A,R1
|
||
\ 000067 F9 MOV R1,A
|
||
\ 000068 90.... MOV DPTR,#ZDP_TxOptions
|
||
\ 00006B E4 CLR A
|
||
\ 00006C F0 MOVX @DPTR,A
|
||
\ 00006D 02.... LJMP ??Subroutine128_0 & 0xFFFF
|
||
266 }
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ??Subroutine115_0:
|
||
\ 000000 12.... LCALL ??Subroutine120_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_190:
|
||
\ 000003 A3 INC DPTR
|
||
\ 000004 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ??Subroutine120_0:
|
||
\ 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 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ??Subroutine128_0:
|
||
\ 000000 7F04 MOV R7,#0x4
|
||
\ 000002 02.... LJMP ?BANKED_LEAVE_XDATA
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ??Subroutine140_0:
|
||
\ 000000 12.... LCALL `??fillAndSend::?relay`; Banked call to: fillAndSend
|
||
\ 000003 7402 MOV A,#0x2
|
||
\ 000005 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ??Subroutine144_0:
|
||
\ 000000 12.... LCALL ?Subroutine81 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_333:
|
||
\ 000003 22 RET
|
||
267
|
||
268 /*********************************************************************
|
||
269 * @fn ZDP_NWKAddrOfInterestReq
|
||
270 *
|
||
271 * @brief This builds and send a request message that has
|
||
272 * NWKAddrOfInterest as its only parameter.
|
||
273 *
|
||
274 * @param dstAddr - destination address
|
||
275 * @param nwkAddr - 16 bit address
|
||
276 * @param SecurityEnable - Security Options
|
||
277 *
|
||
278 * @return afStatus_t
|
||
279 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
280 afStatus_t ZDP_NWKAddrOfInterestReq( zAddrType_t *dstAddr, uint16 nwkAddr,
|
||
\ ZDP_NWKAddrOfInterestReq:
|
||
281 byte cmd, byte SecurityEnable )
|
||
282 {
|
||
\ 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
|
||
283 (void)SecurityEnable; // Intentionally unreferenced parameter
|
||
284
|
||
285 ZDP_TmpBuf[0] = LO_UINT16( nwkAddr );
|
||
\ 000005 12.... LCALL ?Subroutine18 & 0xFFFF
|
||
286 ZDP_TmpBuf[1] = HI_UINT16( nwkAddr );
|
||
\ ??CrossCallReturnLabel_22:
|
||
\ 000008 F0 MOVX @DPTR,A
|
||
287
|
||
288 return fillAndSend( &ZDP_TransID, dstAddr, cmd, 2 );
|
||
\ 000009 ; Setup parameters for call to function fillAndSend
|
||
\ 000009 E9 MOV A,R1
|
||
\ 00000A F5.. MOV ?V0,A
|
||
\ 00000C 02.... LJMP ?Subroutine1 & 0xFFFF
|
||
289 }
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine1:
|
||
\ 000000 75..00 MOV ?V1,#0x0
|
||
\ 000003 78.. MOV R0,#?V0
|
||
\ 000005 12.... LCALL ?PUSH_XSTACK_I_TWO
|
||
\ 000008 7902 MOV R1,#0x2
|
||
\ 00000A REQUIRE ??Subroutine110_0
|
||
\ 00000A ; // Fall through to label ??Subroutine110_0
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ??Subroutine110_0:
|
||
\ 000000 EA MOV A,R2
|
||
\ 000001 FC MOV R4,A
|
||
\ 000002 EB MOV A,R3
|
||
\ 000003 FD MOV R5,A
|
||
\ 000004 7A.. MOV R2,#ZDP_TransID & 0xff
|
||
\ 000006 7B.. MOV R3,#(ZDP_TransID >> 8) & 0xff
|
||
\ 000008 REQUIRE ??Subroutine111_0
|
||
\ 000008 ; // Fall through to label ??Subroutine111_0
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ??Subroutine111_0:
|
||
\ 000000 12.... LCALL ??Subroutine140_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_296:
|
||
\ 000003 REQUIRE ??Subroutine112_0
|
||
\ 000003 ; // Fall through to label ??Subroutine112_0
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ??Subroutine112_0:
|
||
\ 000000 12.... LCALL ?DEALLOC_XSTACK8
|
||
\ 000003 7F02 MOV R7,#0x2
|
||
\ 000005 02.... LJMP ?BANKED_LEAVE_XDATA
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine18:
|
||
\ 000000 90.... MOV DPTR,#ZDP_TmpBuf
|
||
\ 000003 12.... LCALL ?Subroutine89 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_218:
|
||
\ 000006 EC MOV A,R4
|
||
\ 000007 12.... LCALL ?Subroutine79 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_238:
|
||
\ 00000A ED MOV A,R5
|
||
\ 00000B 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine89:
|
||
\ 000000 12.... LCALL ?Subroutine106 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_242:
|
||
\ 000003 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine106:
|
||
\ 000000 12.... LCALL ??Subroutine145_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_338:
|
||
\ 000003 F583 MOV DPH,A
|
||
\ 000005 8882 MOV DPL,R0
|
||
\ 000007 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine79:
|
||
\ 000000 F0 MOVX @DPTR,A
|
||
\ 000001 90.... MOV DPTR,#ZDP_TmpBuf
|
||
\ 000004 REQUIRE ??Subroutine131_0
|
||
\ 000004 ; // Fall through to label ??Subroutine131_0
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ??Subroutine131_0:
|
||
\ 000000 12.... LCALL ?Subroutine106 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_243:
|
||
\ 000003 A3 INC DPTR
|
||
\ 000004 22 RET
|
||
290
|
||
291 /*********************************************************************
|
||
292 * Address Requests
|
||
293 */
|
||
294
|
||
295 /*********************************************************************
|
||
296 * @fn ZDP_NwkAddrReq
|
||
297 *
|
||
298 * @brief This builds and send a NWK_addr_req message. This
|
||
299 * function sends a broadcast message looking for a 16
|
||
300 * bit address with a 64 bit address as bait.
|
||
301 *
|
||
302 * @param IEEEAddress - looking for this device
|
||
303 * @param SecurityEnable - Security Options
|
||
304 *
|
||
305 * @return afStatus_t
|
||
306 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
307 afStatus_t ZDP_NwkAddrReq( uint8 *IEEEAddress, byte ReqType,
|
||
\ ZDP_NwkAddrReq:
|
||
308 byte StartIndex, byte SecurityEnable )
|
||
309 {
|
||
\ 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: 9
|
||
\ 000005 74F7 MOV A,#-0x9
|
||
\ 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
|
||
\ 00000E 89.. MOV ?V1,R1
|
||
\ 000010 8C.. MOV ?V0,R4
|
||
310 uint8 *pBuf = ZDP_TmpBuf;
|
||
\ 000012 90.... MOV DPTR,#ZDP_TmpBuf
|
||
\ 000015 E0 MOVX A,@DPTR
|
||
\ 000016 F5.. MOV ?V2,A
|
||
\ 000018 A3 INC DPTR
|
||
\ 000019 E0 MOVX A,@DPTR
|
||
\ 00001A F5.. MOV ?V3,A
|
||
311 byte len = Z_EXTADDR_LEN + 1 + 1; // IEEEAddress + ReqType + StartIndex.
|
||
312 zAddrType_t dstAddr;
|
||
313
|
||
314 (void)SecurityEnable; // Intentionally unreferenced parameter
|
||
315
|
||
316 if ( osal_ExtAddrEqual( saveExtAddr, IEEEAddress ) == FALSE )
|
||
\ 00001C ; Setup parameters for call to function sAddrExtCmp
|
||
\ 00001C EA MOV A,R2
|
||
\ 00001D FC MOV R4,A
|
||
\ 00001E EB MOV A,R3
|
||
\ 00001F FD MOV R5,A
|
||
\ 000020 7A.. MOV R2,#saveExtAddr & 0xff
|
||
\ 000022 7B.. MOV R3,#(saveExtAddr >> 8) & 0xff
|
||
\ 000024 12.... LCALL `??sAddrExtCmp::?relay`; Banked call to: sAddrExtCmp
|
||
\ 000027 E9 MOV A,R1
|
||
\ 000028 700A JNZ ??ZDP_NwkAddrReq_0
|
||
317 {
|
||
318 dstAddr.addrMode = AddrBroadcast;
|
||
\ 00002A 7408 MOV A,#0x8
|
||
\ 00002C 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 00002F 12.... LCALL ?Subroutine91 & 0xFFFF
|
||
319 dstAddr.addr.shortAddr = NWK_BROADCAST_SHORTADDR_DEVRXON;
|
||
320 }
|
||
\ ??CrossCallReturnLabel_144:
|
||
\ 000032 8012 SJMP ??ZDP_NwkAddrReq_1
|
||
321 else
|
||
322 {
|
||
323 dstAddr.addrMode = Addr16Bit;
|
||
\ ??ZDP_NwkAddrReq_0:
|
||
\ 000034 7408 MOV A,#0x8
|
||
\ 000036 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000039 7402 MOV A,#0x2
|
||
\ 00003B F0 MOVX @DPTR,A
|
||
324 dstAddr.addr.shortAddr = ZDAppNwkAddr.addr.shortAddr;
|
||
\ 00003C 90.... MOV DPTR,#ZDAppNwkAddr
|
||
\ 00003F 12.... LCALL ?Subroutine44 & 0xFFFF
|
||
325 }
|
||
\ ??CrossCallReturnLabel_64:
|
||
\ 000042 E8 MOV A,R0
|
||
\ 000043 F0 MOVX @DPTR,A
|
||
\ 000044 A3 INC DPTR
|
||
\ 000045 E9 MOV A,R1
|
||
\ ??ZDP_NwkAddrReq_1:
|
||
\ 000046 F0 MOVX @DPTR,A
|
||
326
|
||
327 pBuf = osal_cpyExtAddr( pBuf, IEEEAddress );
|
||
\ 000047 ; Setup parameters for call to function sAddrExtCpy
|
||
\ 000047 EE MOV A,R6
|
||
\ 000048 FC MOV R4,A
|
||
\ 000049 EF MOV A,R7
|
||
\ 00004A FD MOV R5,A
|
||
\ 00004B AA.. MOV R2,?V2
|
||
\ 00004D AB.. MOV R3,?V3
|
||
\ 00004F 12.... LCALL ?Subroutine67 & 0xFFFF
|
||
328
|
||
329 *pBuf++ = ReqType;
|
||
\ ??CrossCallReturnLabel_107:
|
||
\ 000052 E5.. MOV A,?V1
|
||
\ 000054 F0 MOVX @DPTR,A
|
||
330 *pBuf++ = StartIndex;
|
||
\ 000055 A3 INC DPTR
|
||
\ 000056 E5.. MOV A,?V0
|
||
\ 000058 F0 MOVX @DPTR,A
|
||
331
|
||
332 return fillAndSend( &ZDP_TransID, &dstAddr, NWK_addr_req, len );
|
||
\ 000059 ; Setup parameters for call to function fillAndSend
|
||
\ 000059 E4 CLR A
|
||
\ 00005A F5.. MOV ?V2,A
|
||
\ 00005C F5.. MOV ?V3,A
|
||
\ 00005E 78.. MOV R0,#?V2
|
||
\ 000060 12.... LCALL ?PUSH_XSTACK_I_TWO
|
||
\ 000063 790A MOV R1,#0xa
|
||
\ 000065 7402 MOV A,#0x2
|
||
\ 000067 12.... LCALL ?XSTACK_DISP102_8
|
||
\ 00006A 12.... LCALL ?Subroutine64 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_287:
|
||
\ 00006D 12.... LCALL ?DEALLOC_XSTACK8
|
||
\ 000070 7409 MOV A,#0x9
|
||
\ 000072 02.... LJMP ??Subroutine127_0 & 0xFFFF
|
||
333 }
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine91:
|
||
\ 000000 740F MOV A,#0xf
|
||
\ 000002 F0 MOVX @DPTR,A
|
||
\ 000003 85..82 MOV DPL,?XSP + 0
|
||
\ 000006 85..83 MOV DPH,?XSP + 1
|
||
\ 000009 74FD MOV A,#-0x3
|
||
\ 00000B F0 MOVX @DPTR,A
|
||
\ 00000C A3 INC DPTR
|
||
\ 00000D 74FF MOV A,#-0x1
|
||
\ 00000F 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine67:
|
||
\ 000000 12.... LCALL `??sAddrExtCpy::?relay`; Banked call to: sAddrExtCpy
|
||
\ 000003 8A82 MOV DPL,R2
|
||
\ 000005 8B83 MOV DPH,R3
|
||
\ 000007 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ??Subroutine127_0:
|
||
\ 000000 12.... LCALL ?DEALLOC_XSTACK8
|
||
\ 000003 REQUIRE ??Subroutine128_0
|
||
\ 000003 ; // Fall through to label ??Subroutine128_0
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine64:
|
||
\ 000000 7A.. MOV R2,#ZDP_TransID & 0xff
|
||
\ 000002 7B.. MOV R3,#(ZDP_TransID >> 8) & 0xff
|
||
\ 000004 REQUIRE ??Subroutine140_0
|
||
\ 000004 ; // Fall through to label ??Subroutine140_0
|
||
334
|
||
335 /*********************************************************************
|
||
336 * @fn ZDP_IEEEAddrReq
|
||
337 *
|
||
338 * @brief This builds and send a IEEE_addr_req message. This
|
||
339 * function sends a unicast message looking for a 64
|
||
340 * bit IEEE address with a 16 bit address as bait.
|
||
341 *
|
||
342 * @param ReqType - ZDP_IEEEADDR_REQTYPE_SINGLE or
|
||
343 * ZDP_IEEEADDR_REQTYPE_EXTENDED
|
||
344 * @param SecurityEnable - Security Options
|
||
345 *
|
||
346 * @return afStatus_t
|
||
347 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
348 afStatus_t ZDP_IEEEAddrReq( uint16 shortAddr, byte ReqType,
|
||
\ ZDP_IEEEAddrReq:
|
||
349 byte StartIndex, byte SecurityEnable )
|
||
350 {
|
||
\ 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: 9
|
||
\ 000005 74F7 MOV A,#-0x9
|
||
\ 000007 12.... LCALL ?ALLOC_XSTACK8
|
||
\ 00000A E9 MOV A,R1
|
||
\ 00000B FF MOV R7,A
|
||
351 uint8 *pBuf = ZDP_TmpBuf;
|
||
\ 00000C 12.... LCALL ??Subroutine143_0 & 0xFFFF
|
||
352 byte len = 2 + 1 + 1; // shortAddr + ReqType + StartIndex.
|
||
353 zAddrType_t dstAddr;
|
||
354
|
||
355 (void)SecurityEnable; // Intentionally unreferenced parameter
|
||
356
|
||
357 dstAddr.addrMode = (afAddrMode_t)Addr16Bit;
|
||
\ ??CrossCallReturnLabel_328:
|
||
\ 00000F 7408 MOV A,#0x8
|
||
\ 000011 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000014 7402 MOV A,#0x2
|
||
\ 000016 F0 MOVX @DPTR,A
|
||
358 dstAddr.addr.shortAddr = shortAddr;
|
||
\ 000017 12.... LCALL ?Subroutine31 & 0xFFFF
|
||
359
|
||
360 *pBuf++ = LO_UINT16( shortAddr );
|
||
\ ??CrossCallReturnLabel_317:
|
||
\ 00001A EA MOV A,R2
|
||
\ 00001B 8882 MOV DPL,R0
|
||
\ 00001D 8983 MOV DPH,R1
|
||
\ 00001F F0 MOVX @DPTR,A
|
||
361 *pBuf++ = HI_UINT16( shortAddr );
|
||
\ 000020 EB MOV A,R3
|
||
\ 000021 A3 INC DPTR
|
||
\ 000022 F0 MOVX @DPTR,A
|
||
362
|
||
363 *pBuf++ = ReqType;
|
||
\ 000023 EF MOV A,R7
|
||
\ 000024 8882 MOV DPL,R0
|
||
\ 000026 8983 MOV DPH,R1
|
||
\ 000028 A3 INC DPTR
|
||
\ 000029 A3 INC DPTR
|
||
\ 00002A F0 MOVX @DPTR,A
|
||
364 *pBuf++ = StartIndex;
|
||
\ 00002B EC MOV A,R4
|
||
\ 00002C 8882 MOV DPL,R0
|
||
\ 00002E 8983 MOV DPH,R1
|
||
\ 000030 A3 INC DPTR
|
||
\ 000031 A3 INC DPTR
|
||
\ 000032 A3 INC DPTR
|
||
\ 000033 F0 MOVX @DPTR,A
|
||
365
|
||
366 return fillAndSend( &ZDP_TransID, &dstAddr, IEEE_addr_req, len );
|
||
\ 000034 ; Setup parameters for call to function fillAndSend
|
||
\ 000034 75..01 MOV ?V0,#0x1
|
||
\ 000037 75..00 MOV ?V1,#0x0
|
||
\ 00003A 78.. MOV R0,#?V0
|
||
\ 00003C 12.... LCALL ?PUSH_XSTACK_I_TWO
|
||
\ 00003F 7904 MOV R1,#0x4
|
||
\ 000041 REQUIRE ?Subroutine6
|
||
\ 000041 ; // Fall through to label ?Subroutine6
|
||
367 }
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine6:
|
||
\ 000000 7402 MOV A,#0x2
|
||
\ 000002 12.... LCALL ?XSTACK_DISP102_8
|
||
\ 000005 12.... LCALL ?Subroutine64 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_288:
|
||
\ 000008 12.... LCALL ?DEALLOC_XSTACK8
|
||
\ 00000B REQUIRE ??Subroutine109_0
|
||
\ 00000B ; // Fall through to label ??Subroutine109_0
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ??Subroutine109_0:
|
||
\ 000000 7409 MOV A,#0x9
|
||
\ 000002 80.. SJMP ??Subroutine112_0
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine31:
|
||
\ 000000 85..82 MOV DPL,?XSP + 0
|
||
\ 000003 85..83 MOV DPH,?XSP + 1
|
||
\ 000006 REQUIRE ??Subroutine142_0
|
||
\ 000006 ; // Fall through to label ??Subroutine142_0
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ??Subroutine142_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 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ??Subroutine143_0:
|
||
\ 000000 90.... MOV DPTR,#ZDP_TmpBuf
|
||
\ 000003 REQUIRE ??Subroutine144_0
|
||
\ 000003 ; // Fall through to label ??Subroutine144_0
|
||
368
|
||
369 /*********************************************************************
|
||
370 * @fn ZDP_MatchDescReq
|
||
371 *
|
||
372 * @brief This builds and send a Match_Desc_req message. This
|
||
373 * function sends a broadcast or unicast message
|
||
374 * requesting the list of endpoint/interfaces that
|
||
375 * match profile ID and cluster IDs.
|
||
376 *
|
||
377 * @param dstAddr - destination address
|
||
378 * @param nwkAddr - network address of interest
|
||
379 * @param ProfileID - Profile ID
|
||
380 * @param NumInClusters - number of input clusters
|
||
381 * @param InClusterList - input cluster ID list
|
||
382 * @param NumOutClusters - number of output clusters
|
||
383 * @param OutClusterList - output cluster ID list
|
||
384 * @param SecurityEnable - Security Options
|
||
385 *
|
||
386 * @return afStatus_t
|
||
387 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
388 afStatus_t ZDP_MatchDescReq( zAddrType_t *dstAddr, uint16 nwkAddr,
|
||
\ ZDP_MatchDescReq:
|
||
389 uint16 ProfileID,
|
||
390 byte NumInClusters, cId_t *InClusterList,
|
||
391 byte NumOutClusters, cId_t *OutClusterList,
|
||
392 byte SecurityEnable )
|
||
393 {
|
||
\ 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 8C.. MOV ?V0,R4
|
||
\ 000007 8D.. MOV ?V1,R5
|
||
\ 000009 12.... LCALL ?Subroutine47 & 0xFFFF
|
||
394 uint8 *pBuf = ZDP_TmpBuf;
|
||
\ ??CrossCallReturnLabel_319:
|
||
\ 00000C 7412 MOV A,#0x12
|
||
\ 00000E 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000011 E0 MOVX A,@DPTR
|
||
\ 000012 FD MOV R5,A
|
||
395 // nwkAddr+ProfileID+NumInClusters+NumOutClusters.
|
||
396 byte i, len = 2 + 2 + 1 + 1; // nwkAddr+ProfileID+NumInClusters+NumOutClusters.
|
||
397
|
||
398 (void)SecurityEnable; // Intentionally unreferenced parameter
|
||
399
|
||
400 len += (NumInClusters + NumOutClusters) * sizeof(uint16);
|
||
\ 000013 EE MOV A,R6
|
||
\ 000014 2D ADD A,R5
|
||
\ 000015 C3 CLR C
|
||
\ 000016 33 RLC A
|
||
\ 000017 2406 ADD A,#0x6
|
||
\ 000019 FF MOV R7,A
|
||
401
|
||
402 if ( len >= ZDP_BUF_SZ-1 )
|
||
\ 00001A C3 CLR C
|
||
\ 00001B 944F SUBB A,#0x4f
|
||
\ 00001D 4005 JC ??ZDP_MatchDescReq_0
|
||
403 {
|
||
404 return afStatus_MEM_FAIL;
|
||
\ 00001F 7910 MOV R1,#0x10
|
||
\ 000021 02.... LJMP ??ZDP_MatchDescReq_1 & 0xFFFF
|
||
405 }
|
||
406
|
||
407 // The spec changed in Zigbee 2007 (2.4.3.1.7.1) to not allow sending
|
||
408 // this command to 0xFFFF. So, here we will filter this and replace
|
||
409 // with 0xFFFD to only send to devices with RX ON. This includes the
|
||
410 // network address of interest.
|
||
411 if ( ((dstAddr->addrMode == AddrBroadcast) || (dstAddr->addrMode == Addr16Bit))
|
||
412 && (dstAddr->addr.shortAddr == NWK_BROADCAST_SHORTADDR_DEVALL) )
|
||
\ ??ZDP_MatchDescReq_0:
|
||
\ 000024 8A82 MOV DPL,R2
|
||
\ 000026 8B83 MOV DPH,R3
|
||
\ 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 A3 INC DPTR
|
||
\ 000030 E0 MOVX A,@DPTR
|
||
\ 000031 640F XRL A,#0xf
|
||
\ 000033 6011 JZ ??ZDP_MatchDescReq_2
|
||
\ 000035 8A82 MOV DPL,R2
|
||
\ 000037 8B83 MOV DPH,R3
|
||
\ 000039 A3 INC DPTR
|
||
\ 00003A A3 INC DPTR
|
||
\ 00003B A3 INC DPTR
|
||
\ 00003C A3 INC DPTR
|
||
\ 00003D A3 INC DPTR
|
||
\ 00003E A3 INC DPTR
|
||
\ 00003F A3 INC DPTR
|
||
\ 000040 A3 INC DPTR
|
||
\ 000041 E0 MOVX A,@DPTR
|
||
\ 000042 6402 XRL A,#0x2
|
||
\ 000044 7018 JNZ ??ZDP_MatchDescReq_3
|
||
\ ??ZDP_MatchDescReq_2:
|
||
\ 000046 8A82 MOV DPL,R2
|
||
\ 000048 8B83 MOV DPH,R3
|
||
\ 00004A E0 MOVX A,@DPTR
|
||
\ 00004B F4 CPL A
|
||
\ 00004C 7003 JNZ ??ZDP_MatchDescReq_4
|
||
\ 00004E A3 INC DPTR
|
||
\ 00004F E0 MOVX A,@DPTR
|
||
\ 000050 F4 CPL A
|
||
\ ??ZDP_MatchDescReq_4:
|
||
\ 000051 700B JNZ ??ZDP_MatchDescReq_3
|
||
413 {
|
||
414 dstAddr->addr.shortAddr = NWK_BROADCAST_SHORTADDR_DEVRXON;
|
||
\ 000053 8A82 MOV DPL,R2
|
||
\ 000055 8B83 MOV DPH,R3
|
||
\ 000057 74FD MOV A,#-0x3
|
||
\ 000059 F0 MOVX @DPTR,A
|
||
\ 00005A A3 INC DPTR
|
||
\ 00005B 74FF MOV A,#-0x1
|
||
\ 00005D F0 MOVX @DPTR,A
|
||
415 }
|
||
416 if ( nwkAddr == NWK_BROADCAST_SHORTADDR_DEVALL )
|
||
\ ??ZDP_MatchDescReq_3:
|
||
\ 00005E 74FF MOV A,#-0x1
|
||
\ 000060 6C XRL A,R4
|
||
\ 000061 7004 JNZ ??ZDP_MatchDescReq_5
|
||
\ 000063 74FF MOV A,#-0x1
|
||
\ 000065 65.. XRL A,?V1
|
||
\ ??ZDP_MatchDescReq_5:
|
||
\ 000067 7006 JNZ ??ZDP_MatchDescReq_6
|
||
417 {
|
||
418 nwkAddr = NWK_BROADCAST_SHORTADDR_DEVRXON;
|
||
\ 000069 75..FD MOV ?V0,#-0x3
|
||
\ 00006C 75..FF MOV ?V1,#-0x1
|
||
419 }
|
||
420
|
||
421 *pBuf++ = LO_UINT16( nwkAddr ); // NWKAddrOfInterest
|
||
\ ??ZDP_MatchDescReq_6:
|
||
\ 00006F 8882 MOV DPL,R0
|
||
\ 000071 8983 MOV DPH,R1
|
||
\ 000073 E5.. MOV A,?V0
|
||
\ 000075 F0 MOVX @DPTR,A
|
||
422 *pBuf++ = HI_UINT16( nwkAddr );
|
||
\ 000076 E5.. MOV A,?V1
|
||
\ 000078 A3 INC DPTR
|
||
\ 000079 F0 MOVX @DPTR,A
|
||
\ 00007A 740E MOV A,#0xe
|
||
\ 00007C 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 00007F 12.... LCALL ??Subroutine125_0 & 0xFFFF
|
||
423
|
||
424 *pBuf++ = LO_UINT16( ProfileID ); // Profile ID
|
||
\ ??CrossCallReturnLabel_220:
|
||
\ 000082 8882 MOV DPL,R0
|
||
\ 000084 8983 MOV DPH,R1
|
||
\ 000086 A3 INC DPTR
|
||
\ 000087 A3 INC DPTR
|
||
\ 000088 E5.. MOV A,?V0
|
||
\ 00008A F0 MOVX @DPTR,A
|
||
425 *pBuf++ = HI_UINT16( ProfileID );
|
||
\ 00008B E5.. MOV A,?V1
|
||
\ 00008D 8882 MOV DPL,R0
|
||
\ 00008F 8983 MOV DPH,R1
|
||
\ 000091 A3 INC DPTR
|
||
\ 000092 A3 INC DPTR
|
||
\ 000093 A3 INC DPTR
|
||
\ 000094 F0 MOVX @DPTR,A
|
||
426
|
||
427 *pBuf++ = NumInClusters; // Input cluster list
|
||
\ 000095 EE MOV A,R6
|
||
\ 000096 8882 MOV DPL,R0
|
||
\ 000098 8983 MOV DPH,R1
|
||
\ 00009A A3 INC DPTR
|
||
\ 00009B A3 INC DPTR
|
||
\ 00009C A3 INC DPTR
|
||
\ 00009D A3 INC DPTR
|
||
\ 00009E F0 MOVX @DPTR,A
|
||
\ 00009F E8 MOV A,R0
|
||
\ 0000A0 2405 ADD A,#0x5
|
||
\ 0000A2 F8 MOV R0,A
|
||
\ 0000A3 5001 JNC ??ZDP_MatchDescReq_7
|
||
\ 0000A5 09 INC R1
|
||
428 if ( NumInClusters )
|
||
\ ??ZDP_MatchDescReq_7:
|
||
\ 0000A6 EE MOV A,R6
|
||
\ 0000A7 6016 JZ ??ZDP_MatchDescReq_8
|
||
429 {
|
||
430 for (i=0; i<NumInClusters; ++i) {
|
||
\ 0000A9 7C00 MOV R4,#0x0
|
||
\ 0000AB 7410 MOV A,#0x10
|
||
\ 0000AD 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 0000B0 12.... LCALL ??Subroutine125_0 & 0xFFFF
|
||
431 *pBuf++ = LO_UINT16( InClusterList[i] );
|
||
\ ??CrossCallReturnLabel_221:
|
||
\ 0000B3 12.... LCALL ?Subroutine11 & 0xFFFF
|
||
432 *pBuf++ = HI_UINT16( InClusterList[i] );
|
||
433 }
|
||
\ ??CrossCallReturnLabel_4:
|
||
\ 0000B6 5001 JNC ??ZDP_MatchDescReq_9
|
||
\ 0000B8 09 INC R1
|
||
\ ??ZDP_MatchDescReq_9:
|
||
\ 0000B9 0C INC R4
|
||
\ 0000BA EC MOV A,R4
|
||
\ 0000BB C3 CLR C
|
||
\ 0000BC 9E SUBB A,R6
|
||
\ 0000BD 40F4 JC ??CrossCallReturnLabel_221
|
||
434 }
|
||
435
|
||
436 *pBuf++ = NumOutClusters; // Output cluster list
|
||
\ ??ZDP_MatchDescReq_8:
|
||
\ 0000BF ED MOV A,R5
|
||
\ 0000C0 8882 MOV DPL,R0
|
||
\ 0000C2 8983 MOV DPH,R1
|
||
\ 0000C4 F0 MOVX @DPTR,A
|
||
\ 0000C5 A3 INC DPTR
|
||
\ 0000C6 A882 MOV R0,DPL
|
||
\ 0000C8 A983 MOV R1,DPH
|
||
437 if ( NumOutClusters )
|
||
\ 0000CA 6016 JZ ??ZDP_MatchDescReq_10
|
||
438 {
|
||
439 for (i=0; i<NumOutClusters; ++i) {
|
||
\ 0000CC 7C00 MOV R4,#0x0
|
||
\ 0000CE 7413 MOV A,#0x13
|
||
\ 0000D0 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 0000D3 12.... LCALL ??Subroutine125_0 & 0xFFFF
|
||
440 *pBuf++ = LO_UINT16( OutClusterList[i] );
|
||
\ ??CrossCallReturnLabel_222:
|
||
\ 0000D6 12.... LCALL ?Subroutine11 & 0xFFFF
|
||
441 *pBuf++ = HI_UINT16( OutClusterList[i] );
|
||
442 }
|
||
\ ??CrossCallReturnLabel_5:
|
||
\ 0000D9 5001 JNC ??ZDP_MatchDescReq_11
|
||
\ 0000DB 09 INC R1
|
||
\ ??ZDP_MatchDescReq_11:
|
||
\ 0000DC 0C INC R4
|
||
\ 0000DD EC MOV A,R4
|
||
\ 0000DE C3 CLR C
|
||
\ 0000DF 9D SUBB A,R5
|
||
\ 0000E0 40F4 JC ??CrossCallReturnLabel_222
|
||
443 }
|
||
444
|
||
445 return fillAndSend( &ZDP_TransID, dstAddr, Match_Desc_req, len );
|
||
\ ??ZDP_MatchDescReq_10:
|
||
\ 0000E2 ; Setup parameters for call to function fillAndSend
|
||
\ 0000E2 75..06 MOV ?V0,#0x6
|
||
\ 0000E5 75..00 MOV ?V1,#0x0
|
||
\ 0000E8 78.. MOV R0,#?V0
|
||
\ 0000EA 12.... LCALL ?PUSH_XSTACK_I_TWO
|
||
\ 0000ED EF MOV A,R7
|
||
\ 0000EE F9 MOV R1,A
|
||
\ 0000EF EA MOV A,R2
|
||
\ 0000F0 FC MOV R4,A
|
||
\ 0000F1 EB MOV A,R3
|
||
\ 0000F2 FD MOV R5,A
|
||
\ 0000F3 12.... LCALL ?Subroutine64 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_289:
|
||
\ 0000F6 12.... LCALL ?DEALLOC_XSTACK8
|
||
\ ??ZDP_MatchDescReq_1:
|
||
\ 0000F9 80.. SJMP ??Subroutine113_0
|
||
446 }
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine11:
|
||
\ 000000 EC MOV A,R4
|
||
\ 000001 25E0 ADD A,0xE0 /* A */
|
||
\ 000003 F5.. MOV ?V2,A
|
||
\ 000005 E4 CLR A
|
||
\ 000006 33 RLC A
|
||
\ 000007 F5.. MOV ?V3,A
|
||
\ 000009 E5.. MOV A,?V0
|
||
\ 00000B 25.. ADD A,?V2
|
||
\ 00000D F5.. MOV ?V4,A
|
||
\ 00000F E5.. MOV A,?V1
|
||
\ 000011 35.. ADDC A,?V3
|
||
\ 000013 F5.. MOV ?V5,A
|
||
\ 000015 85..82 MOV DPL,?V4
|
||
\ 000018 F583 MOV DPH,A
|
||
\ 00001A 12.... LCALL ?Subroutine103 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_166:
|
||
\ 00001D 12.... LCALL ?Subroutine97 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_155:
|
||
\ 000020 12.... LCALL ?Subroutine103 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_167:
|
||
\ 000023 A3 INC DPTR
|
||
\ 000024 F0 MOVX @DPTR,A
|
||
\ 000025 E8 MOV A,R0
|
||
\ 000026 2402 ADD A,#0x2
|
||
\ 000028 F8 MOV R0,A
|
||
\ 000029 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ??Subroutine113_0:
|
||
\ 000000 7F06 MOV R7,#0x6
|
||
\ 000002 02.... LJMP ?BANKED_LEAVE_XDATA
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ??Subroutine125_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
|
||
\ ?Subroutine103:
|
||
\ 000000 E0 MOVX A,@DPTR
|
||
\ 000001 8882 MOV DPL,R0
|
||
\ 000003 8983 MOV DPH,R1
|
||
\ 000005 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine97:
|
||
\ 000000 F0 MOVX @DPTR,A
|
||
\ 000001 ; Setup parameters for call to function osal_memcpy
|
||
\ 000001 85..82 MOV DPL,?V4
|
||
\ 000004 85..83 MOV DPH,?V5
|
||
\ 000007 A3 INC DPTR
|
||
\ 000008 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine47:
|
||
\ 000000 E9 MOV A,R1
|
||
\ 000001 FE MOV R6,A
|
||
\ 000002 REQUIRE ??Subroutine143_0
|
||
\ 000002 ; // Fall through to label ??Subroutine143_0
|
||
447
|
||
448 /*********************************************************************
|
||
449 * @fn ZDP_SimpleDescReq
|
||
450 *
|
||
451 * @brief This builds and send a NWK_Simple_Desc_req
|
||
452 * message. This function sends unicast message to the
|
||
453 * destination device.
|
||
454 *
|
||
455 * @param dstAddr - destination address
|
||
456 * @param nwkAddr - 16 bit address
|
||
457 * @param epIntf - endpoint/interface
|
||
458 * @param SecurityEnable - Security Options
|
||
459 *
|
||
460 * @return afStatus_t
|
||
461 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
462 afStatus_t ZDP_SimpleDescReq( zAddrType_t *dstAddr, uint16 nwkAddr,
|
||
\ ZDP_SimpleDescReq:
|
||
463 byte endPoint, byte SecurityEnable )
|
||
464
|
||
465 {
|
||
\ 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
|
||
466 (void)SecurityEnable; // Intentionally unreferenced parameter
|
||
467
|
||
468 ZDP_TmpBuf[0] = LO_UINT16( nwkAddr );
|
||
\ 000005 12.... LCALL ?Subroutine18 & 0xFFFF
|
||
469 ZDP_TmpBuf[1] = HI_UINT16( nwkAddr );
|
||
\ ??CrossCallReturnLabel_23:
|
||
\ 000008 12.... LCALL ?Subroutine13 & 0xFFFF
|
||
470 ZDP_TmpBuf[2] = endPoint;
|
||
471
|
||
472 return fillAndSend( &ZDP_TransID, dstAddr, Simple_Desc_req, 3 );
|
||
\ ??CrossCallReturnLabel_8:
|
||
\ 00000B ; Setup parameters for call to function fillAndSend
|
||
\ 00000B 75..04 MOV ?V0,#0x4
|
||
\ 00000E 75..00 MOV ?V1,#0x0
|
||
\ 000011 78.. MOV R0,#?V0
|
||
\ 000013 12.... LCALL ?PUSH_XSTACK_I_TWO
|
||
\ 000016 7903 MOV R1,#0x3
|
||
\ 000018 02.... LJMP ??Subroutine110_0 & 0xFFFF
|
||
473 }
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine13:
|
||
\ 000000 12.... LCALL ?Subroutine79 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_239:
|
||
\ 000003 A3 INC DPTR
|
||
\ 000004 E9 MOV A,R1
|
||
\ 000005 F0 MOVX @DPTR,A
|
||
\ 000006 22 RET
|
||
474
|
||
475 /*********************************************************************
|
||
476 * @fn ZDP_UserDescSet
|
||
477 *
|
||
478 * @brief This builds and send a User_Desc_set message to set
|
||
479 * the user descriptor. This function sends unicast
|
||
480 * message to the destination device.
|
||
481 *
|
||
482 * @param dstAddr - destination address
|
||
483 * @param nwkAddr - 16 bit address
|
||
484 * @param UserDescriptor - user descriptor
|
||
485 * @param SecurityEnable - Security Options
|
||
486 *
|
||
487 * @return afStatus_t
|
||
488 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine2:
|
||
\ 000000 AC.. MOV R4,?V4
|
||
\ 000002 AD.. MOV R5,?V5
|
||
\ 000004 12.... LCALL ?Subroutine64 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_290:
|
||
\ 000007 12.... LCALL ?DEALLOC_XSTACK8
|
||
\ 00000A REQUIRE ??Subroutine113_0
|
||
\ 00000A ; // Fall through to label ??Subroutine113_0
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
489 afStatus_t ZDP_UserDescSet( zAddrType_t *dstAddr, uint16 nwkAddr,
|
||
\ ZDP_UserDescSet:
|
||
490 UserDescriptorFormat_t *UserDescriptor,
|
||
491 byte SecurityEnable )
|
||
492 {
|
||
\ 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: 0
|
||
\ 000005 8A.. MOV ?V4,R2
|
||
\ 000007 8B.. MOV ?V5,R3
|
||
493 uint8 *pBuf = ZDP_TmpBuf;
|
||
\ 000009 12.... LCALL ?Subroutine52 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_195:
|
||
\ 00000C 740E MOV A,#0xe
|
||
\ 00000E 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000011 12.... LCALL ?Subroutine36 & 0xFFFF
|
||
494 byte len = (UserDescriptor->len < AF_MAX_USER_DESCRIPTOR_LEN) ?
|
||
495 UserDescriptor->len : AF_MAX_USER_DESCRIPTOR_LEN;
|
||
\ ??CrossCallReturnLabel_44:
|
||
\ 000014 C3 CLR C
|
||
\ 000015 9410 SUBB A,#0x10
|
||
\ 000017 5004 JNC ??ZDP_UserDescSet_0
|
||
\ 000019 E0 MOVX A,@DPTR
|
||
\ 00001A FF MOV R7,A
|
||
\ 00001B 8002 SJMP ??ZDP_UserDescSet_1
|
||
\ ??ZDP_UserDescSet_0:
|
||
\ 00001D 7F10 MOV R7,#0x10
|
||
496 byte addrLen = 2;
|
||
497
|
||
498 (void)SecurityEnable; // Intentionally unreferenced parameter
|
||
499
|
||
500 *pBuf++ = LO_UINT16( nwkAddr );
|
||
\ ??ZDP_UserDescSet_1:
|
||
\ 00001F EC MOV A,R4
|
||
\ 000020 8A82 MOV DPL,R2
|
||
\ 000022 8B83 MOV DPH,R3
|
||
\ 000024 F0 MOVX @DPTR,A
|
||
501 *pBuf++ = HI_UINT16( nwkAddr );
|
||
\ 000025 ED MOV A,R5
|
||
\ 000026 A3 INC DPTR
|
||
\ 000027 F0 MOVX @DPTR,A
|
||
502
|
||
503 *pBuf++ = len;
|
||
\ 000028 EF MOV A,R7
|
||
\ 000029 8A82 MOV DPL,R2
|
||
\ 00002B 8B83 MOV DPH,R3
|
||
\ 00002D 12.... LCALL ??Subroutine114_0 & 0xFFFF
|
||
504 addrLen = 3;
|
||
505
|
||
506 pBuf = osal_memcpy( pBuf, UserDescriptor->desc, len );
|
||
\ ??CrossCallReturnLabel_174:
|
||
\ 000030 AC82 MOV R4,DPL
|
||
\ 000032 AD83 MOV R5,DPH
|
||
\ 000034 8C.. MOV ?V0,R4
|
||
\ 000036 8D.. MOV ?V1,R5
|
||
\ 000038 75..00 MOV ?V2,#0x0
|
||
\ 00003B 78.. MOV R0,#?V0
|
||
\ 00003D 12.... LCALL ?PUSH_XSTACK_I_THREE
|
||
\ 000040 EF MOV A,R7
|
||
\ 000041 FC MOV R4,A
|
||
\ 000042 7D00 MOV R5,#0x0
|
||
\ 000044 EA MOV A,R2
|
||
\ 000045 2403 ADD A,#0x3
|
||
\ 000047 FA MOV R2,A
|
||
\ 000048 5001 JNC ??ZDP_UserDescSet_2
|
||
\ 00004A 0B INC R3
|
||
\ ??ZDP_UserDescSet_2:
|
||
\ 00004B 12.... LCALL ??Subroutine123_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_207:
|
||
\ 00004E 12.... LCALL ?DEALLOC_XSTACK8
|
||
507 osal_memset( pBuf, AF_USER_DESCRIPTOR_FILL, AF_MAX_USER_DESCRIPTOR_LEN-len );
|
||
\ 000051 ; Setup parameters for call to function osal_memset
|
||
\ 000051 EF MOV A,R7
|
||
\ 000052 F8 MOV R0,A
|
||
\ 000053 7410 MOV A,#0x10
|
||
\ 000055 C3 CLR C
|
||
\ 000056 98 SUBB A,R0
|
||
\ 000057 FC MOV R4,A
|
||
\ 000058 95E0 SUBB A,0xE0 /* A */
|
||
\ 00005A FD MOV R5,A
|
||
\ 00005B 7920 MOV R1,#0x20
|
||
\ 00005D 12.... LCALL `??osal_memset::?relay`; Banked call to: osal_memset
|
||
508
|
||
509 return fillAndSend( &ZDP_TransID, dstAddr, User_Desc_set, (AF_MAX_USER_DESCRIPTOR_LEN + addrLen) );
|
||
\ 000060 ; Setup parameters for call to function fillAndSend
|
||
\ 000060 75..14 MOV ?V0,#0x14
|
||
\ 000063 75..00 MOV ?V1,#0x0
|
||
\ 000066 78.. MOV R0,#?V0
|
||
\ 000068 12.... LCALL ?PUSH_XSTACK_I_TWO
|
||
\ 00006B 7913 MOV R1,#0x13
|
||
\ 00006D 02.... LJMP ?Subroutine2 & 0xFFFF
|
||
510 }
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ??Subroutine114_0:
|
||
\ 000000 A3 INC DPTR
|
||
\ 000001 A3 INC DPTR
|
||
\ 000002 REQUIRE ??Subroutine115_0
|
||
\ 000002 ; // Fall through to label ??Subroutine115_0
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine36:
|
||
\ 000000 12.... LCALL ?Subroutine81 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_329:
|
||
\ 000003 8882 MOV DPL,R0
|
||
\ 000005 F583 MOV DPH,A
|
||
\ 000007 E0 MOVX A,@DPTR
|
||
\ 000008 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine52:
|
||
\ 000000 90.... MOV DPTR,#ZDP_TmpBuf
|
||
\ 000003 REQUIRE ??Subroutine121_0
|
||
\ 000003 ; // Fall through to label ??Subroutine121_0
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ??Subroutine121_0:
|
||
\ 000000 12.... LCALL ??Subroutine130_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_237:
|
||
\ 000003 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ??Subroutine123_0:
|
||
\ 000000 12.... LCALL `??osal_memcpy::?relay`; Banked call to: osal_memcpy
|
||
\ 000003 7403 MOV A,#0x3
|
||
\ 000005 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ??Subroutine130_0:
|
||
\ 000000 E0 MOVX A,@DPTR
|
||
\ 000001 FA MOV R2,A
|
||
\ 000002 A3 INC DPTR
|
||
\ 000003 E0 MOVX A,@DPTR
|
||
\ 000004 FB MOV R3,A
|
||
\ 000005 22 RET
|
||
511
|
||
512 /*********************************************************************
|
||
513 * @fn ZDP_ServerDiscReq
|
||
514 *
|
||
515 * @brief Build and send a Server_Discovery_req request message.
|
||
516 *
|
||
517 * @param serverMask - 16-bit bit-mask of server services being sought.
|
||
518 * @param SecurityEnable - Security Options
|
||
519 *
|
||
520 * @return afStatus_t
|
||
521 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
522 afStatus_t ZDP_ServerDiscReq( uint16 serverMask, byte SecurityEnable )
|
||
\ ZDP_ServerDiscReq:
|
||
523 {
|
||
\ 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: 9
|
||
\ 000005 74F7 MOV A,#-0x9
|
||
\ 000007 12.... LCALL ?ALLOC_XSTACK8
|
||
\ 00000A 12.... LCALL ?Subroutine47 & 0xFFFF
|
||
524 uint8 *pBuf = ZDP_TmpBuf;
|
||
525 zAddrType_t dstAddr;
|
||
526
|
||
527 dstAddr.addrMode = AddrBroadcast;
|
||
\ ??CrossCallReturnLabel_320:
|
||
\ 00000D 7408 MOV A,#0x8
|
||
\ 00000F 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000012 12.... LCALL ?Subroutine19 & 0xFFFF
|
||
528 dstAddr.addr.shortAddr = NWK_BROADCAST_SHORTADDR_DEVRXON;
|
||
529
|
||
530 *pBuf++ = LO_UINT16( serverMask );
|
||
\ ??CrossCallReturnLabel_24:
|
||
\ 000015 EA MOV A,R2
|
||
\ 000016 8882 MOV DPL,R0
|
||
\ 000018 8983 MOV DPH,R1
|
||
\ 00001A F0 MOVX @DPTR,A
|
||
531 *pBuf = HI_UINT16( serverMask );
|
||
\ 00001B EB MOV A,R3
|
||
\ 00001C A3 INC DPTR
|
||
\ 00001D F0 MOVX @DPTR,A
|
||
532
|
||
533 FillAndSendTxOptions( &ZDP_TransID, &dstAddr, Server_Discovery_req, 2,
|
||
534 ((SecurityEnable) ? AF_EN_SECURITY : AF_TX_OPTIONS_NONE) );
|
||
\ 00001E EE MOV A,R6
|
||
\ 00001F 90.... MOV DPTR,#ZDP_TxOptions
|
||
\ 000022 6004 JZ ??ZDP_ServerDiscReq_0
|
||
\ 000024 7440 MOV A,#0x40
|
||
\ 000026 8001 SJMP ??ZDP_ServerDiscReq_1
|
||
\ ??ZDP_ServerDiscReq_0:
|
||
\ 000028 E4 CLR A
|
||
\ ??ZDP_ServerDiscReq_1:
|
||
\ 000029 F0 MOVX @DPTR,A
|
||
\ 00002A ; Setup parameters for call to function fillAndSend
|
||
\ 00002A 75..15 MOV ?V0,#0x15
|
||
\ 00002D 75..00 MOV ?V1,#0x0
|
||
\ 000030 78.. MOV R0,#?V0
|
||
\ 000032 12.... LCALL ?PUSH_XSTACK_I_TWO
|
||
\ 000035 7902 MOV R1,#0x2
|
||
\ 000037 E9 MOV A,R1
|
||
\ 000038 12.... LCALL ?XSTACK_DISP102_8
|
||
\ 00003B 12.... LCALL ?Subroutine64 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_291:
|
||
\ 00003E 12.... LCALL ?DEALLOC_XSTACK8
|
||
\ 000041 E9 MOV A,R1
|
||
\ 000042 F9 MOV R1,A
|
||
\ 000043 90.... MOV DPTR,#ZDP_TxOptions
|
||
\ 000046 E4 CLR A
|
||
\ 000047 F0 MOVX @DPTR,A
|
||
\ 000048 02.... LJMP ??Subroutine109_0 & 0xFFFF
|
||
535 }
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine19:
|
||
\ 000000 12.... LCALL ?Subroutine91 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_145:
|
||
\ 000003 F0 MOVX @DPTR,A
|
||
\ 000004 22 RET
|
||
536
|
||
537 /*********************************************************************
|
||
538 * @fn ZDP_DeviceAnnce
|
||
539 *
|
||
540 * @brief This builds and send a Device_Annce message. This
|
||
541 * function sends a broadcast message.
|
||
542 *
|
||
543 * @param nwkAddr - 16 bit address of the device
|
||
544 * @param IEEEAddr - 64 bit address of the device
|
||
545 * @param capabilities - device capabilities. This field is only
|
||
546 * sent for v1.1 networks.
|
||
547 * @param SecurityEnable - Security Options
|
||
548 *
|
||
549 * @return afStatus_t
|
||
550 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
551 afStatus_t ZDP_DeviceAnnce( uint16 nwkAddr, uint8 *IEEEAddr,
|
||
\ ZDP_DeviceAnnce:
|
||
552 byte capabilities, byte SecurityEnable )
|
||
553 {
|
||
\ 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: 9
|
||
\ 000005 74F7 MOV A,#-0x9
|
||
\ 000007 12.... LCALL ?ALLOC_XSTACK8
|
||
\ 00000A E9 MOV A,R1
|
||
\ 00000B FE MOV R6,A
|
||
554 zAddrType_t dstAddr;
|
||
555 uint8 len;
|
||
556
|
||
557 (void)SecurityEnable; // Intentionally unreferenced parameter
|
||
558
|
||
559 dstAddr.addrMode = (afAddrMode_t)AddrBroadcast;
|
||
\ 00000C 7408 MOV A,#0x8
|
||
\ 00000E 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000011 12.... LCALL ?Subroutine19 & 0xFFFF
|
||
560 dstAddr.addr.shortAddr = NWK_BROADCAST_SHORTADDR_DEVRXON;
|
||
561
|
||
562 ZDP_TmpBuf[0] = LO_UINT16( nwkAddr );
|
||
\ ??CrossCallReturnLabel_25:
|
||
\ 000014 12.... LCALL ?Subroutine54 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_214:
|
||
\ 000017 EA MOV A,R2
|
||
\ 000018 12.... LCALL ?Subroutine21 & 0xFFFF
|
||
563 ZDP_TmpBuf[1] = HI_UINT16( nwkAddr );
|
||
\ ??CrossCallReturnLabel_26:
|
||
\ 00001B EB MOV A,R3
|
||
\ 00001C F0 MOVX @DPTR,A
|
||
564 osal_cpyExtAddr( &ZDP_TmpBuf[2], IEEEAddr );
|
||
\ 00001D ; Setup parameters for call to function sAddrExtCpy
|
||
\ 00001D 90.... MOV DPTR,#ZDP_TmpBuf
|
||
\ 000020 E0 MOVX A,@DPTR
|
||
\ 000021 2402 ADD A,#0x2
|
||
\ 000023 FA MOV R2,A
|
||
\ 000024 A3 INC DPTR
|
||
\ 000025 E0 MOVX A,@DPTR
|
||
\ 000026 3400 ADDC A,#0x0
|
||
\ 000028 FB MOV R3,A
|
||
\ 000029 12.... LCALL `??sAddrExtCpy::?relay`; Banked call to: sAddrExtCpy
|
||
565 len = 2 + Z_EXTADDR_LEN;
|
||
566
|
||
567 ZDP_TmpBuf[10] = capabilities;
|
||
\ 00002C 12.... LCALL ?Subroutine108 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_336:
|
||
\ 00002F C8 XCH A,R0
|
||
\ 000030 240A ADD A,#0xa
|
||
\ 000032 F582 MOV DPL,A
|
||
\ 000034 E4 CLR A
|
||
\ 000035 38 ADDC A,R0
|
||
\ 000036 F583 MOV DPH,A
|
||
\ 000038 EE MOV A,R6
|
||
\ 000039 F0 MOVX @DPTR,A
|
||
568 len++;
|
||
569
|
||
570 return fillAndSend( &ZDP_TransID, &dstAddr, Device_annce, len );
|
||
\ 00003A ; Setup parameters for call to function fillAndSend
|
||
\ 00003A 75..13 MOV ?V0,#0x13
|
||
\ 00003D 75..00 MOV ?V1,#0x0
|
||
\ 000040 78.. MOV R0,#?V0
|
||
\ 000042 12.... LCALL ?PUSH_XSTACK_I_TWO
|
||
\ 000045 790B MOV R1,#0xb
|
||
\ 000047 02.... LJMP ?Subroutine6 & 0xFFFF
|
||
571 }
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine54:
|
||
\ 000000 90.... MOV DPTR,#ZDP_TmpBuf
|
||
\ 000003 REQUIRE ??Subroutine124_0
|
||
\ 000003 ; // Fall through to label ??Subroutine124_0
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ??Subroutine124_0:
|
||
\ 000000 12.... LCALL ?Subroutine89 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_219:
|
||
\ 000003 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine21:
|
||
\ 000000 12.... LCALL ?Subroutine79 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_240:
|
||
\ 000003 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine108:
|
||
\ 000000 90.... MOV DPTR,#ZDP_TmpBuf
|
||
\ 000003 REQUIRE ??Subroutine145_0
|
||
\ 000003 ; // Fall through to label ??Subroutine145_0
|
||
572
|
||
573 /*********************************************************************
|
||
574 * Address Responses
|
||
575 */
|
||
576
|
||
577 /*********************************************************************
|
||
578 * @fn zdpProcessAddrReq
|
||
579 *
|
||
580 * @brief Process an incoming NWK_addr_req or IEEE_addr_req message and then
|
||
581 * build and send a corresponding NWK_addr_rsp or IEEE_addr_rsp msg.
|
||
582 *
|
||
583 * @param inMsg - incoming message
|
||
584 *
|
||
585 * @return none
|
||
586 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
587 void zdpProcessAddrReq( zdoIncomingMsg_t *inMsg )
|
||
\ zdpProcessAddrReq:
|
||
588 {
|
||
\ 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: 16
|
||
\ 000005 74F0 MOV A,#-0x10
|
||
\ 000007 12.... LCALL ?ALLOC_XSTACK8
|
||
\ 00000A 8A.. MOV ?V2,R2
|
||
\ 00000C 8B.. MOV ?V3,R3
|
||
589 associated_devices_t *pAssoc;
|
||
590 uint8 reqType;
|
||
591 uint16 aoi = INVALID_NODE_ADDR;
|
||
\ 00000E 7EFE MOV R6,#-0x2
|
||
\ 000010 7FFF MOV R7,#-0x1
|
||
592 uint8 *ieee = NULL;
|
||
\ 000012 75..00 MOV ?V0,#0x0
|
||
\ 000015 75..00 MOV ?V1,#0x0
|
||
593
|
||
594 reqType = inMsg->asdu[(inMsg->clusterID == NWK_addr_req) ? Z_EXTADDR_LEN : sizeof( uint16 ) ];
|
||
\ 000018 EA MOV A,R2
|
||
\ 000019 12.... LCALL ?Subroutine45 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_183:
|
||
\ 00001C 7004 JNZ ??zdpProcessAddrReq_0
|
||
\ 00001E 7808 MOV R0,#0x8
|
||
\ 000020 8002 SJMP ??zdpProcessAddrReq_1
|
||
\ ??zdpProcessAddrReq_0:
|
||
\ 000022 7802 MOV R0,#0x2
|
||
\ ??zdpProcessAddrReq_1:
|
||
\ 000024 EA MOV A,R2
|
||
\ 000025 12.... LCALL ??Subroutine116_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_179:
|
||
\ 000028 28 ADD A,R0
|
||
\ 000029 FA MOV R2,A
|
||
\ 00002A A3 INC DPTR
|
||
\ 00002B E0 MOVX A,@DPTR
|
||
\ 00002C 3400 ADDC A,#0x0
|
||
\ 00002E 8A82 MOV DPL,R2
|
||
\ 000030 F583 MOV DPH,A
|
||
\ 000032 E0 MOVX A,@DPTR
|
||
\ 000033 F5.. MOV ?V6,A
|
||
595
|
||
596 if ( inMsg->clusterID == NWK_addr_req )
|
||
\ 000035 E5.. MOV A,?V2
|
||
\ 000037 240C ADD A,#0xc
|
||
\ 000039 12.... LCALL ??Subroutine117_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_176:
|
||
\ 00003C 49 ORL A,R1
|
||
\ 00003D 704E JNZ ??zdpProcessAddrReq_2
|
||
597
|
||
598 {
|
||
599 ieee = inMsg->asdu;
|
||
\ 00003F E5.. MOV A,?V2
|
||
\ 000041 2413 ADD A,#0x13
|
||
\ 000043 F582 MOV DPL,A
|
||
\ 000045 E4 CLR A
|
||
\ 000046 35.. ADDC A,?V3
|
||
\ 000048 12.... LCALL ?Subroutine43 & 0xFFFF
|
||
600
|
||
601 if ( osal_ExtAddrEqual( saveExtAddr, ieee ) )
|
||
\ ??CrossCallReturnLabel_227:
|
||
\ 00004B ; Setup parameters for call to function sAddrExtCmp
|
||
\ 00004B AC.. MOV R4,?V0
|
||
\ 00004D FD MOV R5,A
|
||
\ 00004E 7A.. MOV R2,#saveExtAddr & 0xff
|
||
\ 000050 7B.. MOV R3,#(saveExtAddr >> 8) & 0xff
|
||
\ 000052 12.... LCALL `??sAddrExtCmp::?relay`; Banked call to: sAddrExtCmp
|
||
\ 000055 E9 MOV A,R1
|
||
\ 000056 6006 JZ ??zdpProcessAddrReq_3
|
||
602 {
|
||
603 aoi = ZDAppNwkAddr.addr.shortAddr;
|
||
\ 000058 12.... LCALL ?Subroutine37 & 0xFFFF
|
||
604 }
|
||
\ ??CrossCallReturnLabel_265:
|
||
\ 00005B 02.... LJMP ??zdpProcessAddrReq_4 & 0xFFFF
|
||
605 // Handle response for sleeping end devices
|
||
606 else if ( (ZSTACK_ROUTER_BUILD)
|
||
607 && (((pAssoc = AssocGetWithExt( ieee )) != NULL)
|
||
608 && (pAssoc->nodeRelation == CHILD_RFD)) )
|
||
\ ??zdpProcessAddrReq_3:
|
||
\ 00005E ; Setup parameters for call to function AssocGetWithExt
|
||
\ 00005E AA.. MOV R2,?V0
|
||
\ 000060 AB.. MOV R3,?V1
|
||
\ 000062 12.... LCALL `??AssocGetWithExt::?relay`; Banked call to: AssocGetWithExt
|
||
\ 000065 8B.. MOV ?V5,R3
|
||
\ 000067 A9.. MOV R1,?V5
|
||
\ 000069 EA MOV A,R2
|
||
\ 00006A 49 ORL A,R1
|
||
\ 00006B 7003 JNZ $+5
|
||
\ 00006D 02.... LJMP ??zdpProcessAddrReq_5 & 0xFFFF
|
||
\ 000070 8A82 MOV DPL,R2
|
||
\ 000072 8B83 MOV DPH,R3
|
||
\ 000074 A3 INC DPTR
|
||
\ 000075 A3 INC DPTR
|
||
\ 000076 A3 INC DPTR
|
||
\ 000077 A3 INC DPTR
|
||
\ 000078 E0 MOVX A,@DPTR
|
||
\ 000079 6401 XRL A,#0x1
|
||
\ 00007B 6003 JZ $+5
|
||
\ 00007D 02.... LJMP ??zdpProcessAddrReq_5 & 0xFFFF
|
||
609 {
|
||
610 aoi = pAssoc->shortAddr;
|
||
\ 000080 8A82 MOV DPL,R2
|
||
\ 000082 8B83 MOV DPH,R3
|
||
\ 000084 12.... LCALL ??Subroutine135_0 & 0xFFFF
|
||
611 if ( reqType != ZDP_ADDR_REQTYPE_SINGLE )
|
||
\ ??CrossCallReturnLabel_260:
|
||
\ 000087 E5.. MOV A,?V6
|
||
\ 000089 707A JNZ ??zdpProcessAddrReq_6
|
||
\ 00008B 807B SJMP ??zdpProcessAddrReq_4
|
||
612 reqType = 0xFF; // Force Invalid
|
||
613 }
|
||
614 }
|
||
\ ??zdpProcessAddrReq_2:
|
||
\ 00008D 12.... LCALL ?Subroutine68 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_180:
|
||
\ 000090 F8 MOV R0,A
|
||
\ 000091 A3 INC DPTR
|
||
\ 000092 E0 MOVX A,@DPTR
|
||
\ 000093 8882 MOV DPL,R0
|
||
\ 000095 F583 MOV DPH,A
|
||
\ 000097 E0 MOVX A,@DPTR
|
||
\ 000098 FA MOV R2,A
|
||
\ 000099 A3 INC DPTR
|
||
\ 00009A E0 MOVX A,@DPTR
|
||
\ 00009B F8 MOV R0,A
|
||
\ 00009C E4 CLR A
|
||
\ 00009D C8 XCH A,R0
|
||
\ 00009E F9 MOV R1,A
|
||
\ 00009F EA MOV A,R2
|
||
\ 0000A0 28 ADD A,R0
|
||
\ 0000A1 FE MOV R6,A
|
||
\ 0000A2 E4 CLR A
|
||
\ 0000A3 39 ADDC A,R1
|
||
\ 0000A4 FF MOV R7,A
|
||
615 else // if ( inMsg->clusterID == IEEE_addr_req )
|
||
616 {
|
||
617 aoi = BUILD_UINT16( inMsg->asdu[0], inMsg->asdu[1] );
|
||
618
|
||
619 if ( aoi == ZDAppNwkAddr.addr.shortAddr )
|
||
\ 0000A5 90.... MOV DPTR,#ZDAppNwkAddr
|
||
\ 0000A8 E0 MOVX A,@DPTR
|
||
\ 0000A9 6E XRL A,R6
|
||
\ 0000AA 7003 JNZ ??zdpProcessAddrReq_7
|
||
\ 0000AC A3 INC DPTR
|
||
\ 0000AD E0 MOVX A,@DPTR
|
||
\ 0000AE 6F XRL A,R7
|
||
\ ??zdpProcessAddrReq_7:
|
||
\ 0000AF 7008 JNZ ??zdpProcessAddrReq_8
|
||
620 {
|
||
621 ieee = saveExtAddr;
|
||
\ 0000B1 75.... MOV ?V0,#saveExtAddr & 0xff
|
||
\ 0000B4 75.... MOV ?V1,#(saveExtAddr >> 8) & 0xff
|
||
\ 0000B7 804F SJMP ??zdpProcessAddrReq_4
|
||
622 }
|
||
623 else if ( (ZSTACK_ROUTER_BUILD)
|
||
624 && (((pAssoc = AssocGetWithShort( aoi )) != NULL)
|
||
625 && (pAssoc->nodeRelation == CHILD_RFD)) )
|
||
\ ??zdpProcessAddrReq_8:
|
||
\ 0000B9 ; Setup parameters for call to function AssocGetWithShort
|
||
\ 0000B9 E9 MOV A,R1
|
||
\ 0000BA FB MOV R3,A
|
||
\ 0000BB 12.... LCALL `??AssocGetWithShort::?relay`; Banked call to: AssocGetWithShort
|
||
\ 0000BE 8B.. MOV ?V5,R3
|
||
\ 0000C0 A9.. MOV R1,?V5
|
||
\ 0000C2 EA MOV A,R2
|
||
\ 0000C3 49 ORL A,R1
|
||
\ 0000C4 6052 JZ ??zdpProcessAddrReq_5
|
||
\ 0000C6 8A82 MOV DPL,R2
|
||
\ 0000C8 8B83 MOV DPH,R3
|
||
\ 0000CA A3 INC DPTR
|
||
\ 0000CB A3 INC DPTR
|
||
\ 0000CC A3 INC DPTR
|
||
\ 0000CD A3 INC DPTR
|
||
\ 0000CE E0 MOVX A,@DPTR
|
||
\ 0000CF 6401 XRL A,#0x1
|
||
\ 0000D1 7045 JNZ ??zdpProcessAddrReq_5
|
||
626 {
|
||
627 AddrMgrEntry_t addrEntry;
|
||
628 addrEntry.user = ADDRMGR_USER_DEFAULT;
|
||
\ 0000D3 7403 MOV A,#0x3
|
||
\ 0000D5 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 0000D8 E4 CLR A
|
||
\ 0000D9 F0 MOVX @DPTR,A
|
||
629 addrEntry.index = pAssoc->addrIdx;
|
||
\ 0000DA 8A82 MOV DPL,R2
|
||
\ 0000DC 8B83 MOV DPH,R3
|
||
\ 0000DE A3 INC DPTR
|
||
\ 0000DF A3 INC DPTR
|
||
\ 0000E0 12.... LCALL ??Subroutine144_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_322:
|
||
\ 0000E3 740E MOV A,#0xe
|
||
\ 0000E5 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 0000E8 12.... LCALL ??Subroutine134_0 & 0xFFFF
|
||
630 if ( AddrMgrEntryGet( &addrEntry ) )
|
||
\ ??CrossCallReturnLabel_250:
|
||
\ 0000EB ; Setup parameters for call to function AddrMgrEntryGet
|
||
\ 0000EB 7403 MOV A,#0x3
|
||
\ 0000ED 12.... LCALL ?XSTACK_DISP101_8
|
||
\ 0000F0 12.... LCALL `??AddrMgrEntryGet::?relay`; Banked call to: AddrMgrEntryGet
|
||
\ 0000F3 E9 MOV A,R1
|
||
\ 0000F4 600B JZ ??zdpProcessAddrReq_9
|
||
631 {
|
||
632 ieee = addrEntry.extAddr;
|
||
\ 0000F6 7406 MOV A,#0x6
|
||
\ 0000F8 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 0000FB 8582.. MOV ?V0,DPL
|
||
\ 0000FE 8583.. MOV ?V1,DPH
|
||
633 }
|
||
634
|
||
635 if ( reqType != ZDP_ADDR_REQTYPE_SINGLE )
|
||
\ ??zdpProcessAddrReq_9:
|
||
\ 000101 E5.. MOV A,?V6
|
||
\ 000103 6003 JZ ??zdpProcessAddrReq_4
|
||
636 reqType = 0xFF; // Force Invalid
|
||
\ ??zdpProcessAddrReq_6:
|
||
\ 000105 75..FF MOV ?V6,#-0x1
|
||
637 }
|
||
638 }
|
||
639
|
||
640 if ( ((aoi != INVALID_NODE_ADDR) && (ieee != NULL)) || (inMsg->wasBroadcast == FALSE) )
|
||
\ ??zdpProcessAddrReq_4:
|
||
\ 000108 74FE MOV A,#-0x2
|
||
\ 00010A 6E XRL A,R6
|
||
\ 00010B 7003 JNZ ??zdpProcessAddrReq_10
|
||
\ 00010D 74FF MOV A,#-0x1
|
||
\ 00010F 6F XRL A,R7
|
||
\ ??zdpProcessAddrReq_10:
|
||
\ 000110 6006 JZ ??zdpProcessAddrReq_5
|
||
\ 000112 E5.. MOV A,?V0
|
||
\ 000114 45.. ORL A,?V1
|
||
\ 000116 700C JNZ ??zdpProcessAddrReq_11
|
||
\ ??zdpProcessAddrReq_5:
|
||
\ 000118 E5.. MOV A,?V2
|
||
\ 00011A 240B ADD A,#0xb
|
||
\ 00011C 12.... LCALL ??Subroutine117_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_177:
|
||
\ 00011F 6003 JZ $+5
|
||
\ 000121 02.... LJMP ??zdpProcessAddrReq_12 & 0xFFFF
|
||
641 {
|
||
642 uint8 stat;
|
||
643 uint8 *pBuf = ZDP_TmpBuf;
|
||
\ ??zdpProcessAddrReq_11:
|
||
\ 000124 12.... LCALL ?Subroutine52 & 0xFFFF
|
||
644 // Status + IEEE-Addr + Nwk-Addr.
|
||
645 uint8 len = 1 + Z_EXTADDR_LEN + 2;
|
||
\ ??CrossCallReturnLabel_196:
|
||
\ 000127 75..0B MOV ?V5,#0xb
|
||
646
|
||
647 // If aoi and iee are both setup, we found results
|
||
648 if ( (aoi != INVALID_NODE_ADDR) && (ieee != NULL) )
|
||
\ 00012A 74FE MOV A,#-0x2
|
||
\ 00012C 6E XRL A,R6
|
||
\ 00012D 7003 JNZ ??zdpProcessAddrReq_13
|
||
\ 00012F 74FF MOV A,#-0x1
|
||
\ 000131 6F XRL A,R7
|
||
\ ??zdpProcessAddrReq_13:
|
||
\ 000132 601A JZ ??zdpProcessAddrReq_14
|
||
\ 000134 E5.. MOV A,?V0
|
||
\ 000136 45.. ORL A,?V1
|
||
\ 000138 6014 JZ ??zdpProcessAddrReq_14
|
||
649 {
|
||
650 stat = ((reqType == ZDP_ADDR_REQTYPE_SINGLE) || (reqType == ZDP_ADDR_REQTYPE_EXTENDED))
|
||
651 ? ZDP_SUCCESS : ZDP_INVALID_REQTYPE;
|
||
\ 00013A E5.. MOV A,?V6
|
||
\ 00013C 6006 JZ ??zdpProcessAddrReq_15
|
||
\ 00013E 7401 MOV A,#0x1
|
||
\ 000140 65.. XRL A,?V6
|
||
\ 000142 7005 JNZ ??zdpProcessAddrReq_16
|
||
\ ??zdpProcessAddrReq_15:
|
||
\ 000144 75..00 MOV ?V4,#0x0
|
||
\ 000147 801A SJMP ??zdpProcessAddrReq_17
|
||
\ ??zdpProcessAddrReq_16:
|
||
\ 000149 75..80 MOV ?V4,#-0x80
|
||
\ 00014C 8015 SJMP ??zdpProcessAddrReq_17
|
||
652 }
|
||
653 else
|
||
654 {
|
||
655 // not found and the req was unicast to this device
|
||
656 stat = ZDP_DEVICE_NOT_FOUND;
|
||
\ ??zdpProcessAddrReq_14:
|
||
\ 00014E 75..81 MOV ?V4,#-0x7f
|
||
657
|
||
658 // Fill in the missing field with this device's address
|
||
659 if ( inMsg->clusterID == NWK_addr_req )
|
||
\ 000151 E5.. MOV A,?V2
|
||
\ 000153 12.... LCALL ?Subroutine45 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_184:
|
||
\ 000156 7005 JNZ ??zdpProcessAddrReq_18
|
||
660 {
|
||
661 aoi = ZDAppNwkAddr.addr.shortAddr;
|
||
\ 000158 12.... LCALL ?Subroutine37 & 0xFFFF
|
||
662 }
|
||
\ ??CrossCallReturnLabel_266:
|
||
\ 00015B 8006 SJMP ??zdpProcessAddrReq_17
|
||
663 else
|
||
664 {
|
||
665 ieee = saveExtAddr;
|
||
\ ??zdpProcessAddrReq_18:
|
||
\ 00015D 75.... MOV ?V0,#saveExtAddr & 0xff
|
||
\ 000160 75.... MOV ?V1,#(saveExtAddr >> 8) & 0xff
|
||
666 }
|
||
667 }
|
||
668
|
||
669 *pBuf++ = stat;
|
||
\ ??zdpProcessAddrReq_17:
|
||
\ 000163 8A82 MOV DPL,R2
|
||
\ 000165 8B83 MOV DPH,R3
|
||
\ 000167 E5.. MOV A,?V4
|
||
\ 000169 12.... LCALL ??Subroutine122_0 & 0xFFFF
|
||
670
|
||
671 pBuf = osal_cpyExtAddr( pBuf, ieee );
|
||
\ ??CrossCallReturnLabel_201:
|
||
\ 00016C ; Setup parameters for call to function sAddrExtCpy
|
||
\ 00016C AC.. MOV R4,?V0
|
||
\ 00016E AD.. MOV R5,?V1
|
||
\ 000170 12.... LCALL `??sAddrExtCpy::?relay`; Banked call to: sAddrExtCpy
|
||
\ 000173 7401 MOV A,#0x1
|
||
\ 000175 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000178 12.... LCALL ??Subroutine142_0 & 0xFFFF
|
||
672
|
||
673 *pBuf++ = LO_UINT16( aoi );
|
||
\ ??CrossCallReturnLabel_313:
|
||
\ 00017B 7401 MOV A,#0x1
|
||
\ 00017D 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000180 12.... LCALL ??Subroutine124_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_211:
|
||
\ 000183 EE MOV A,R6
|
||
\ 000184 F0 MOVX @DPTR,A
|
||
674 *pBuf++ = HI_UINT16( aoi );
|
||
\ 000185 7401 MOV A,#0x1
|
||
\ 000187 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 00018A 12.... LCALL ??Subroutine124_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_212:
|
||
\ 00018D A3 INC DPTR
|
||
\ 00018E EF MOV A,R7
|
||
\ 00018F F0 MOVX @DPTR,A
|
||
675
|
||
676 if ( ZSTACK_ROUTER_BUILD )
|
||
677 {
|
||
678 if ( (reqType == ZDP_ADDR_REQTYPE_EXTENDED) && (aoi == ZDAppNwkAddr.addr.shortAddr)
|
||
679 && (stat == ZDP_SUCCESS) )
|
||
\ 000190 7401 MOV A,#0x1
|
||
\ 000192 65.. XRL A,?V6
|
||
\ 000194 6003 JZ $+5
|
||
\ 000196 02.... LJMP ??zdpProcessAddrReq_19 & 0xFFFF
|
||
\ 000199 90.... MOV DPTR,#ZDAppNwkAddr
|
||
\ 00019C E0 MOVX A,@DPTR
|
||
\ 00019D 6E XRL A,R6
|
||
\ 00019E 7003 JNZ ??zdpProcessAddrReq_20
|
||
\ 0001A0 A3 INC DPTR
|
||
\ 0001A1 E0 MOVX A,@DPTR
|
||
\ 0001A2 6F XRL A,R7
|
||
\ ??zdpProcessAddrReq_20:
|
||
\ 0001A3 6003 JZ $+5
|
||
\ 0001A5 02.... LJMP ??zdpProcessAddrReq_19 & 0xFFFF
|
||
\ 0001A8 E5.. MOV A,?V4
|
||
\ 0001AA 6003 JZ $+5
|
||
\ 0001AC 02.... LJMP ??zdpProcessAddrReq_19 & 0xFFFF
|
||
680 {
|
||
681 uint8 cnt = 0;
|
||
\ 0001AF 85..82 MOV DPL,?XSP + 0
|
||
\ 0001B2 85..83 MOV DPH,?XSP + 1
|
||
\ 0001B5 E4 CLR A
|
||
\ 0001B6 F0 MOVX @DPTR,A
|
||
682 uint16 *list = AssocMakeList( &cnt );
|
||
\ 0001B7 ; Setup parameters for call to function AssocMakeList
|
||
\ 0001B7 AA.. MOV R2,?XSP + 0
|
||
\ 0001B9 AB.. MOV R3,?XSP + 1
|
||
\ 0001BB 12.... LCALL `??AssocMakeList::?relay`; Banked call to: AssocMakeList
|
||
\ 0001BE 8A.. MOV ?V0,R2
|
||
\ 0001C0 8B.. MOV ?V1,R3
|
||
\ 0001C2 A8.. MOV R0,?V0
|
||
\ 0001C4 A9.. MOV R1,?V1
|
||
683
|
||
684 if ( list != NULL )
|
||
\ 0001C6 EA MOV A,R2
|
||
\ 0001C7 49 ORL A,R1
|
||
\ 0001C8 7003 JNZ $+5
|
||
\ 0001CA 02.... LJMP ??zdpProcessAddrReq_21 & 0xFFFF
|
||
685 {
|
||
686 byte idx = inMsg->asdu[(((inMsg->clusterID == NWK_addr_req) ? Z_EXTADDR_LEN : sizeof( uint16 )) + 1)];
|
||
\ 0001CD E5.. MOV A,?V2
|
||
\ 0001CF 12.... LCALL ?Subroutine73 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_117:
|
||
\ 0001D2 35.. ADDC A,?V3
|
||
\ 0001D4 F583 MOV DPH,A
|
||
\ 0001D6 12.... LCALL ?Subroutine48 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_65:
|
||
\ 0001D9 7004 JNZ ??zdpProcessAddrReq_22
|
||
\ 0001DB 7A09 MOV R2,#0x9
|
||
\ 0001DD 8002 SJMP ??zdpProcessAddrReq_23
|
||
\ ??zdpProcessAddrReq_22:
|
||
\ 0001DF 7A03 MOV R2,#0x3
|
||
\ ??zdpProcessAddrReq_23:
|
||
\ 0001E1 12.... LCALL ?Subroutine68 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_181:
|
||
\ 0001E4 2A ADD A,R2
|
||
\ 0001E5 FC MOV R4,A
|
||
\ 0001E6 A3 INC DPTR
|
||
\ 0001E7 E0 MOVX A,@DPTR
|
||
\ 0001E8 3400 ADDC A,#0x0
|
||
\ 0001EA 8C82 MOV DPL,R4
|
||
\ 0001EC F583 MOV DPH,A
|
||
\ 0001EE E0 MOVX A,@DPTR
|
||
\ 0001EF FE MOV R6,A
|
||
687 uint16 *pList = list + idx;
|
||
\ 0001F0 25E0 ADD A,0xE0 /* A */
|
||
\ 0001F2 FA MOV R2,A
|
||
\ 0001F3 E4 CLR A
|
||
\ 0001F4 33 RLC A
|
||
\ 0001F5 FB MOV R3,A
|
||
\ 0001F6 E8 MOV A,R0
|
||
\ 0001F7 2A ADD A,R2
|
||
\ 0001F8 FC MOV R4,A
|
||
\ 0001F9 E9 MOV A,R1
|
||
\ 0001FA 3B ADDC A,R3
|
||
\ 0001FB FD MOV R5,A
|
||
688
|
||
689 // NumAssocDev field is only present on success.
|
||
690 if ( cnt > idx )
|
||
\ 0001FC 85..82 MOV DPL,?XSP + 0
|
||
\ 0001FF 85..83 MOV DPH,?XSP + 1
|
||
\ 000202 E0 MOVX A,@DPTR
|
||
\ 000203 FA MOV R2,A
|
||
\ 000204 EE MOV A,R6
|
||
\ 000205 C3 CLR C
|
||
\ 000206 9A SUBB A,R2
|
||
\ 000207 500C JNC ??zdpProcessAddrReq_24
|
||
691 {
|
||
692 cnt -= idx;
|
||
\ 000209 E0 MOVX A,@DPTR
|
||
\ 00020A C3 CLR C
|
||
\ 00020B 9E SUBB A,R6
|
||
\ 00020C F0 MOVX @DPTR,A
|
||
693 len += (cnt * sizeof( uint16 ));
|
||
\ 00020D C3 CLR C
|
||
\ 00020E 33 RLC A
|
||
\ 00020F 240B ADD A,#0xb
|
||
\ 000211 F5.. MOV ?V5,A
|
||
\ 000213 8002 SJMP ??zdpProcessAddrReq_25
|
||
694 }
|
||
695 else
|
||
696 {
|
||
697 cnt = 0;
|
||
\ ??zdpProcessAddrReq_24:
|
||
\ 000215 E4 CLR A
|
||
\ 000216 F0 MOVX @DPTR,A
|
||
698 }
|
||
699 *pBuf++ = cnt;
|
||
\ ??zdpProcessAddrReq_25:
|
||
\ 000217 E0 MOVX A,@DPTR
|
||
\ 000218 C0E0 PUSH A
|
||
\ 00021A 7401 MOV A,#0x1
|
||
\ 00021C 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 00021F 12.... LCALL ?Subroutine56 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_82:
|
||
\ 000222 D0E0 POP A
|
||
\ 000224 F0 MOVX @DPTR,A
|
||
700 len++;
|
||
701
|
||
702 // StartIndex field is only present if NumAssocDev field is non-zero.
|
||
703 *pBuf++ = idx;
|
||
\ 000225 7401 MOV A,#0x1
|
||
\ 000227 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 00022A 12.... LCALL ?Subroutine56 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_83:
|
||
\ 00022D A3 INC DPTR
|
||
\ 00022E EE MOV A,R6
|
||
\ 00022F F0 MOVX @DPTR,A
|
||
\ 000230 7401 MOV A,#0x1
|
||
\ 000232 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000235 E0 MOVX A,@DPTR
|
||
\ 000236 2404 ADD A,#0x4
|
||
\ 000238 FA MOV R2,A
|
||
\ 000239 A3 INC DPTR
|
||
\ 00023A E0 MOVX A,@DPTR
|
||
\ 00023B 3400 ADDC A,#0x0
|
||
\ 00023D FB MOV R3,A
|
||
704 len++;
|
||
\ 00023E 05.. INC ?V5
|
||
\ 000240 05.. INC ?V5
|
||
\ 000242 801A SJMP ??zdpProcessAddrReq_26
|
||
705
|
||
706 while ( cnt != 0 )
|
||
707 {
|
||
708 *pBuf++ = LO_UINT16( *pList );
|
||
\ ??zdpProcessAddrReq_27:
|
||
\ 000244 8C82 MOV DPL,R4
|
||
\ 000246 8D83 MOV DPH,R5
|
||
\ 000248 12.... LCALL ??Subroutine137_0 & 0xFFFF
|
||
709 *pBuf++ = HI_UINT16( *pList );
|
||
\ ??CrossCallReturnLabel_274:
|
||
\ 00024B 5001 JNC ??zdpProcessAddrReq_28
|
||
\ 00024D 0B INC R3
|
||
710 pList++;
|
||
\ ??zdpProcessAddrReq_28:
|
||
\ 00024E EC MOV A,R4
|
||
\ 00024F 2402 ADD A,#0x2
|
||
\ 000251 FC MOV R4,A
|
||
\ 000252 5001 JNC ??zdpProcessAddrReq_29
|
||
\ 000254 0D INC R5
|
||
711 cnt--;
|
||
\ ??zdpProcessAddrReq_29:
|
||
\ 000255 85..82 MOV DPL,?XSP + 0
|
||
\ 000258 85..83 MOV DPH,?XSP + 1
|
||
\ 00025B E0 MOVX A,@DPTR
|
||
\ 00025C 14 DEC A
|
||
\ 00025D F0 MOVX @DPTR,A
|
||
712 }
|
||
\ ??zdpProcessAddrReq_26:
|
||
\ 00025E 85..82 MOV DPL,?XSP + 0
|
||
\ 000261 85..83 MOV DPH,?XSP + 1
|
||
\ 000264 E0 MOVX A,@DPTR
|
||
\ 000265 70DD JNZ ??zdpProcessAddrReq_27
|
||
713
|
||
714 osal_mem_free( (uint8 *)list );
|
||
\ 000267 ; Setup parameters for call to function osal_mem_free
|
||
\ 000267 E8 MOV A,R0
|
||
\ 000268 FA MOV R2,A
|
||
\ 000269 E9 MOV A,R1
|
||
\ 00026A FB MOV R3,A
|
||
\ 00026B 12.... LCALL `??osal_mem_free::?relay`; Banked call to: osal_mem_free
|
||
\ 00026E 800D SJMP ??zdpProcessAddrReq_19
|
||
715 }
|
||
716 else
|
||
717 {
|
||
718 // NumAssocDev field is only present on success.
|
||
719 *pBuf++ = 0;
|
||
\ ??zdpProcessAddrReq_21:
|
||
\ 000270 7401 MOV A,#0x1
|
||
\ 000272 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000275 12.... LCALL ?Subroutine53 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_78:
|
||
\ 000278 E4 CLR A
|
||
\ 000279 F0 MOVX @DPTR,A
|
||
720 len++;
|
||
\ 00027A 75..0C MOV ?V5,#0xc
|
||
721 }
|
||
722 }
|
||
723 }
|
||
724
|
||
725 ZDP_TxOptions = AF_MSG_ACK_REQUEST;
|
||
\ ??zdpProcessAddrReq_19:
|
||
\ 00027D 90.... MOV DPTR,#ZDP_TxOptions
|
||
\ 000280 7410 MOV A,#0x10
|
||
\ 000282 F0 MOVX @DPTR,A
|
||
726 fillAndSend( &(inMsg->TransSeq), &(inMsg->srcAddr), (cId_t)(inMsg->clusterID | ZDO_RESPONSE_BIT), len );
|
||
\ 000283 ; Setup parameters for call to function fillAndSend
|
||
\ 000283 E5.. MOV A,?V2
|
||
\ 000285 240C ADD A,#0xc
|
||
\ 000287 12.... LCALL ??Subroutine117_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_178:
|
||
\ 00028A F5.. MOV ?V0,A
|
||
\ 00028C A3 INC DPTR
|
||
\ 00028D E0 MOVX A,@DPTR
|
||
\ 00028E 4480 ORL A,#0x80
|
||
\ 000290 F5.. MOV ?V1,A
|
||
\ 000292 78.. MOV R0,#?V0
|
||
\ 000294 12.... LCALL ?PUSH_XSTACK_I_TWO
|
||
\ 000297 A9.. MOV R1,?V5
|
||
\ 000299 E5.. MOV A,?V2
|
||
\ 00029B 2402 ADD A,#0x2
|
||
\ 00029D FC MOV R4,A
|
||
\ 00029E E4 CLR A
|
||
\ 00029F 35.. ADDC A,?V3
|
||
\ 0002A1 FD MOV R5,A
|
||
\ 0002A2 E5.. MOV A,?V2
|
||
\ 0002A4 240F ADD A,#0xf
|
||
\ 0002A6 FA MOV R2,A
|
||
\ 0002A7 E4 CLR A
|
||
\ 0002A8 35.. ADDC A,?V3
|
||
\ 0002AA FB MOV R3,A
|
||
\ 0002AB 12.... LCALL ??Subroutine140_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_297:
|
||
\ 0002AE 12.... LCALL ?DEALLOC_XSTACK8
|
||
727 ZDP_TxOptions = AF_TX_OPTIONS_NONE;
|
||
\ 0002B1 90.... MOV DPTR,#ZDP_TxOptions
|
||
\ 0002B4 E4 CLR A
|
||
\ 0002B5 F0 MOVX @DPTR,A
|
||
728 }
|
||
729 }
|
||
\ ??zdpProcessAddrReq_12:
|
||
\ 0002B6 7410 MOV A,#0x10
|
||
\ 0002B8 12.... LCALL ?DEALLOC_XSTACK8
|
||
\ 0002BB REQUIRE ?Subroutine3
|
||
\ 0002BB ; // Fall through to label ?Subroutine3
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine3:
|
||
\ 000000 7F07 MOV R7,#0x7
|
||
\ 000002 02.... LJMP ?BANKED_LEAVE_XDATA
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine68:
|
||
\ 000000 E5.. MOV A,?V2
|
||
\ 000002 REQUIRE ??Subroutine116_0
|
||
\ 000002 ; // Fall through to label ??Subroutine116_0
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ??Subroutine116_0:
|
||
\ 000000 2413 ADD A,#0x13
|
||
\ 000002 REQUIRE ??Subroutine117_0
|
||
\ 000002 ; // Fall through to label ??Subroutine117_0
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ??Subroutine117_0:
|
||
\ 000000 F582 MOV DPL,A
|
||
\ 000002 E4 CLR A
|
||
\ 000003 35.. ADDC A,?V3
|
||
\ 000005 F583 MOV DPH,A
|
||
\ 000007 E0 MOVX A,@DPTR
|
||
\ 000008 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine56:
|
||
\ 000000 E0 MOVX A,@DPTR
|
||
\ 000001 FA MOV R2,A
|
||
\ 000002 A3 INC DPTR
|
||
\ 000003 E0 MOVX A,@DPTR
|
||
\ 000004 F583 MOV DPH,A
|
||
\ 000006 8A82 MOV DPL,R2
|
||
\ 000008 A3 INC DPTR
|
||
\ 000009 A3 INC DPTR
|
||
\ 00000A 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine45:
|
||
\ 000000 240C ADD A,#0xc
|
||
\ 000002 F582 MOV DPL,A
|
||
\ 000004 E4 CLR A
|
||
\ 000005 35.. ADDC A,?V3
|
||
\ 000007 F583 MOV DPH,A
|
||
\ 000009 REQUIRE ??Subroutine118_0
|
||
\ 000009 ; // Fall through to label ??Subroutine118_0
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ??Subroutine118_0:
|
||
\ 000000 12.... LCALL ?Subroutine81 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_331:
|
||
\ 000003 E8 MOV A,R0
|
||
\ 000004 49 ORL A,R1
|
||
\ 000005 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine73:
|
||
\ 000000 240C ADD A,#0xc
|
||
\ 000002 F582 MOV DPL,A
|
||
\ 000004 E4 CLR A
|
||
\ 000005 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ??Subroutine122_0:
|
||
\ 000000 F0 MOVX @DPTR,A
|
||
\ 000001 A3 INC DPTR
|
||
\ 000002 AA82 MOV R2,DPL
|
||
\ 000004 AB83 MOV R3,DPH
|
||
\ 000006 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine105:
|
||
\ 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
|
||
\ ?Subroutine53:
|
||
\ 000000 12.... LCALL ??Subroutine131_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_241:
|
||
\ 000003 A3 INC DPTR
|
||
\ 000004 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine104:
|
||
\ 000000 E0 MOVX A,@DPTR
|
||
\ 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
|
||
\ ?Subroutine43:
|
||
\ 000000 F583 MOV DPH,A
|
||
\ 000002 REQUIRE ??Subroutine125_0
|
||
\ 000002 ; // Fall through to label ??Subroutine125_0
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine86:
|
||
\ 000000 12.... LCALL ?Subroutine105 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_286:
|
||
\ 000003 F0 MOVX @DPTR,A
|
||
\ 000004 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine37:
|
||
\ 000000 90.... MOV DPTR,#ZDAppNwkAddr
|
||
\ 000003 REQUIRE ??Subroutine135_0
|
||
\ 000003 ; // Fall through to label ??Subroutine135_0
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ??Subroutine135_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
|
||
\ ??Subroutine137_0:
|
||
\ 000000 12.... LCALL ?Subroutine86 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_279:
|
||
\ 000003 8C82 MOV DPL,R4
|
||
\ 000005 8D83 MOV DPH,R5
|
||
\ 000007 12.... LCALL ?Subroutine83 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_275:
|
||
\ 00000A 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine83:
|
||
\ 000000 A3 INC DPTR
|
||
\ 000001 12.... LCALL ?Subroutine104 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_282:
|
||
\ 000004 F0 MOVX @DPTR,A
|
||
\ 000005 EA MOV A,R2
|
||
\ 000006 2402 ADD A,#0x2
|
||
\ 000008 FA MOV R2,A
|
||
\ 000009 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine48:
|
||
\ 000000 12.... LCALL ??Subroutine130_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_234:
|
||
\ 000003 EA MOV A,R2
|
||
\ 000004 4B ORL A,R3
|
||
\ 000005 22 RET
|
||
730
|
||
731 /*********************************************************************
|
||
732 * @fn ZDP_NodeDescMsg
|
||
733 *
|
||
734 * @brief Builds and sends a Node Descriptor message, unicast to the
|
||
735 * specified device.
|
||
736 *
|
||
737 * @param inMsg - incoming message
|
||
738 * @param nwkAddr - 16 bit network address for device
|
||
739 * @param pNodeDesc - pointer to the node descriptor
|
||
740 *
|
||
741 * @return afStatus_t
|
||
742 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine29:
|
||
\ 000000 A3 INC DPTR
|
||
\ 000001 REQUIRE ??Subroutine114_0
|
||
\ 000001 ; // Fall through to label ??Subroutine114_0
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
743 afStatus_t ZDP_NodeDescMsg( zdoIncomingMsg_t *inMsg,
|
||
\ ZDP_NodeDescMsg:
|
||
744 uint16 nwkAddr, NodeDescriptorFormat_t *pNodeDesc )
|
||
745 {
|
||
\ 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
|
||
746 uint8 *pBuf = ZDP_TmpBuf;
|
||
\ 000005 90.... MOV DPTR,#ZDP_TmpBuf
|
||
\ 000008 12.... LCALL ??Subroutine135_0 & 0xFFFF
|
||
747 byte len;
|
||
748
|
||
749 len = 1 + 2 + 13; // Status + nwkAddr + Node descriptor
|
||
750
|
||
751 *pBuf++ = ZDP_SUCCESS;
|
||
\ ??CrossCallReturnLabel_261:
|
||
\ 00000B 8E82 MOV DPL,R6
|
||
\ 00000D F583 MOV DPH,A
|
||
\ 00000F E4 CLR A
|
||
\ 000010 F0 MOVX @DPTR,A
|
||
752
|
||
753 *pBuf++ = LO_UINT16( nwkAddr );
|
||
\ 000011 EC MOV A,R4
|
||
\ 000012 A3 INC DPTR
|
||
\ 000013 F0 MOVX @DPTR,A
|
||
754 *pBuf++ = HI_UINT16( nwkAddr );
|
||
\ 000014 ED MOV A,R5
|
||
\ 000015 8E82 MOV DPL,R6
|
||
\ 000017 8F83 MOV DPH,R7
|
||
\ 000019 A3 INC DPTR
|
||
\ 00001A A3 INC DPTR
|
||
\ 00001B F0 MOVX @DPTR,A
|
||
\ 00001C 740A MOV A,#0xa
|
||
\ 00001E 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000021 12.... LCALL ?Subroutine36 & 0xFFFF
|
||
755
|
||
756 *pBuf++ = (byte)((pNodeDesc->ComplexDescAvail << 3) |
|
||
757 (pNodeDesc->UserDescAvail << 4) |
|
||
758 (pNodeDesc->LogicalType & 0x07));
|
||
\ ??CrossCallReturnLabel_45:
|
||
\ 000024 541F ANL A,#0x1f
|
||
\ 000026 8E82 MOV DPL,R6
|
||
\ 000028 8F83 MOV DPH,R7
|
||
\ 00002A 12.... LCALL ?Subroutine29 & 0xFFFF
|
||
759
|
||
760 *pBuf++ = (byte)((pNodeDesc->FrequencyBand << 3) | (pNodeDesc->APSFlags & 0x07));
|
||
\ ??CrossCallReturnLabel_172:
|
||
\ 00002D 12.... LCALL ?Subroutine40 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_54:
|
||
\ 000030 12.... LCALL ?Subroutine29 & 0xFFFF
|
||
761 *pBuf++ = pNodeDesc->CapabilityFlags;
|
||
\ ??CrossCallReturnLabel_173:
|
||
\ 000033 12.... LCALL ?Subroutine82 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_247:
|
||
\ 000036 12.... LCALL ?Subroutine28 & 0xFFFF
|
||
762 *pBuf++ = pNodeDesc->ManufacturerCode[0];
|
||
\ ??CrossCallReturnLabel_185:
|
||
\ 000039 12.... LCALL ?Subroutine40 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_55:
|
||
\ 00003C 12.... LCALL ?Subroutine28 & 0xFFFF
|
||
763 *pBuf++ = pNodeDesc->ManufacturerCode[1];
|
||
\ ??CrossCallReturnLabel_186:
|
||
\ 00003F 12.... LCALL ?Subroutine82 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_248:
|
||
\ 000042 12.... LCALL ?Subroutine27 & 0xFFFF
|
||
764 *pBuf++ = pNodeDesc->MaxBufferSize;
|
||
\ ??CrossCallReturnLabel_34:
|
||
\ 000045 12.... LCALL ?Subroutine40 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_56:
|
||
\ 000048 12.... LCALL ?Subroutine27 & 0xFFFF
|
||
765 *pBuf++ = pNodeDesc->MaxInTransferSize[0];
|
||
\ ??CrossCallReturnLabel_35:
|
||
\ 00004B A3 INC DPTR
|
||
\ 00004C 12.... LCALL ?Subroutine39 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_52:
|
||
\ 00004F 12.... LCALL ?Subroutine22 & 0xFFFF
|
||
766 *pBuf++ = pNodeDesc->MaxInTransferSize[1];
|
||
\ ??CrossCallReturnLabel_28:
|
||
\ 000052 12.... LCALL ?Subroutine39 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_53:
|
||
\ 000055 A3 INC DPTR
|
||
\ 000056 F0 MOVX @DPTR,A
|
||
767
|
||
768 *pBuf++ = LO_UINT16( pNodeDesc->ServerMask );
|
||
\ 000057 E8 MOV A,R0
|
||
\ 000058 2408 ADD A,#0x8
|
||
\ 00005A FC MOV R4,A
|
||
\ 00005B E4 CLR A
|
||
\ 00005C 39 ADDC A,R1
|
||
\ 00005D FD MOV R5,A
|
||
\ 00005E 8C82 MOV DPL,R4
|
||
\ 000060 F583 MOV DPH,A
|
||
\ 000062 E0 MOVX A,@DPTR
|
||
\ 000063 F5.. MOV ?V0,A
|
||
\ 000065 12.... LCALL ?Subroutine74 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_121:
|
||
\ 000068 E5.. MOV A,?V0
|
||
\ 00006A 12.... LCALL ?Subroutine16 & 0xFFFF
|
||
769 *pBuf++ = HI_UINT16( pNodeDesc->ServerMask );
|
||
\ ??CrossCallReturnLabel_16:
|
||
\ 00006D C0E0 PUSH A
|
||
\ 00006F EE MOV A,R6
|
||
\ 000070 12.... LCALL ?Subroutine73 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_118:
|
||
\ 000073 3F ADDC A,R7
|
||
\ 000074 F583 MOV DPH,A
|
||
\ 000076 D0E0 POP A
|
||
\ 000078 12.... LCALL ?Subroutine22 & 0xFFFF
|
||
770 *pBuf++ = pNodeDesc->MaxOutTransferSize[0];
|
||
\ ??CrossCallReturnLabel_29:
|
||
\ 00007B A3 INC DPTR
|
||
\ 00007C A3 INC DPTR
|
||
\ 00007D A3 INC DPTR
|
||
\ 00007E E0 MOVX A,@DPTR
|
||
\ 00007F C0E0 PUSH A
|
||
\ 000081 EE MOV A,R6
|
||
\ 000082 240D ADD A,#0xd
|
||
\ 000084 F582 MOV DPL,A
|
||
\ 000086 E4 CLR A
|
||
\ 000087 3F ADDC A,R7
|
||
\ 000088 F583 MOV DPH,A
|
||
\ 00008A D0E0 POP A
|
||
\ 00008C F0 MOVX @DPTR,A
|
||
771 *pBuf++ = pNodeDesc->MaxOutTransferSize[1];
|
||
\ 00008D E8 MOV A,R0
|
||
\ 00008E 240B ADD A,#0xb
|
||
\ 000090 F582 MOV DPL,A
|
||
\ 000092 E4 CLR A
|
||
\ 000093 39 ADDC A,R1
|
||
\ 000094 F583 MOV DPH,A
|
||
\ 000096 E0 MOVX A,@DPTR
|
||
\ 000097 C0E0 PUSH A
|
||
\ 000099 EE MOV A,R6
|
||
\ 00009A 240E ADD A,#0xe
|
||
\ 00009C F582 MOV DPL,A
|
||
\ 00009E E4 CLR A
|
||
\ 00009F 3F ADDC A,R7
|
||
\ 0000A0 F583 MOV DPH,A
|
||
\ 0000A2 D0E0 POP A
|
||
\ 0000A4 F0 MOVX @DPTR,A
|
||
772 *pBuf = pNodeDesc->DescriptorCapability;
|
||
\ 0000A5 E8 MOV A,R0
|
||
\ 0000A6 12.... LCALL ?Subroutine73 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_119:
|
||
\ 0000A9 39 ADDC A,R1
|
||
\ 0000AA F583 MOV DPH,A
|
||
\ 0000AC E0 MOVX A,@DPTR
|
||
\ 0000AD C0E0 PUSH A
|
||
\ 0000AF EE MOV A,R6
|
||
\ 0000B0 240F ADD A,#0xf
|
||
\ 0000B2 F582 MOV DPL,A
|
||
\ 0000B4 E4 CLR A
|
||
\ 0000B5 3F ADDC A,R7
|
||
\ 0000B6 F583 MOV DPH,A
|
||
\ 0000B8 D0E0 POP A
|
||
\ 0000BA F0 MOVX @DPTR,A
|
||
773
|
||
774 return fillAndSend( &(inMsg->TransSeq), &(inMsg->srcAddr), Node_Desc_rsp, len );
|
||
\ 0000BB ; Setup parameters for call to function fillAndSend
|
||
\ 0000BB 75..02 MOV ?V0,#0x2
|
||
\ 0000BE 75..80 MOV ?V1,#-0x80
|
||
\ 0000C1 78.. MOV R0,#?V0
|
||
\ 0000C3 12.... LCALL ?PUSH_XSTACK_I_TWO
|
||
\ 0000C6 7910 MOV R1,#0x10
|
||
\ 0000C8 12.... LCALL ?Subroutine72 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_115:
|
||
\ 0000CB 5001 JNC ??ZDP_NodeDescMsg_0
|
||
\ 0000CD 0B INC R3
|
||
\ ??ZDP_NodeDescMsg_0:
|
||
\ 0000CE 02.... LJMP ??Subroutine111_0 & 0xFFFF
|
||
775 }
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine39:
|
||
\ 000000 12.... LCALL ??Subroutine132_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_245:
|
||
\ 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 A3 INC DPTR
|
||
\ 00000A A3 INC DPTR
|
||
\ 00000B A3 INC DPTR
|
||
\ 00000C 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine28:
|
||
\ 000000 A3 INC DPTR
|
||
\ 000001 A3 INC DPTR
|
||
\ 000002 A3 INC DPTR
|
||
\ 000003 REQUIRE ??Subroutine119_0
|
||
\ 000003 ; // Fall through to label ??Subroutine119_0
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ??Subroutine119_0:
|
||
\ 000000 12.... LCALL ?Subroutine94 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_188:
|
||
\ 000003 A3 INC DPTR
|
||
\ 000004 A3 INC DPTR
|
||
\ 000005 A3 INC DPTR
|
||
\ 000006 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine94:
|
||
\ 000000 A3 INC DPTR
|
||
\ 000001 A3 INC DPTR
|
||
\ 000002 REQUIRE ??Subroutine120_0
|
||
\ 000002 ; // Fall through to label ??Subroutine120_0
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine27:
|
||
\ 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 12.... LCALL ?Subroutine93 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_148:
|
||
\ 00000A 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine93:
|
||
\ 000000 F0 MOVX @DPTR,A
|
||
\ 000001 8882 MOV DPL,R0
|
||
\ 000003 8983 MOV DPH,R1
|
||
\ 000005 A3 INC DPTR
|
||
\ 000006 A3 INC DPTR
|
||
\ 000007 A3 INC DPTR
|
||
\ 000008 A3 INC DPTR
|
||
\ 000009 A3 INC DPTR
|
||
\ 00000A 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine22:
|
||
\ 000000 12.... LCALL ?Subroutine93 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_149:
|
||
\ 000003 A3 INC DPTR
|
||
\ 000004 A3 INC DPTR
|
||
\ 000005 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine72:
|
||
\ 000000 EA MOV A,R2
|
||
\ 000001 2402 ADD A,#0x2
|
||
\ 000003 FC MOV R4,A
|
||
\ 000004 E4 CLR A
|
||
\ 000005 3B ADDC A,R3
|
||
\ 000006 FD MOV R5,A
|
||
\ 000007 EA MOV A,R2
|
||
\ 000008 240F ADD A,#0xf
|
||
\ 00000A FA MOV R2,A
|
||
\ 00000B 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine74:
|
||
\ 000000 EE MOV A,R6
|
||
\ 000001 240B ADD A,#0xb
|
||
\ 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
|
||
\ ?Subroutine40:
|
||
\ 000000 12.... LCALL ??Subroutine132_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_246:
|
||
\ 000003 A3 INC DPTR
|
||
\ 000004 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine82:
|
||
\ 000000 A3 INC DPTR
|
||
\ 000001 REQUIRE ??Subroutine132_0
|
||
\ 000001 ; // Fall through to label ??Subroutine132_0
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ??Subroutine132_0:
|
||
\ 000000 E0 MOVX A,@DPTR
|
||
\ 000001 8E82 MOV DPL,R6
|
||
\ 000003 8F83 MOV DPH,R7
|
||
\ 000005 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine95:
|
||
\ 000000 F0 MOVX @DPTR,A
|
||
\ 000001 8C82 MOV DPL,R4
|
||
\ 000003 8D83 MOV DPH,R5
|
||
\ 000005 A3 INC DPTR
|
||
\ 000006 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine16:
|
||
\ 000000 12.... LCALL ?Subroutine95 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_152:
|
||
\ 000003 E0 MOVX A,@DPTR
|
||
\ 000004 22 RET
|
||
776
|
||
777 /*********************************************************************
|
||
778 * @fn ZDP_PowerDescMsg
|
||
779 *
|
||
780 * @brief Builds and sends a Power Descriptor message, unicast to the
|
||
781 * specified device.
|
||
782 *
|
||
783 * @param inMsg - incoming message (request)
|
||
784 * @param nwkAddr - 16 bit network address for device
|
||
785 * @param pPowerDesc - pointer to the node descriptor
|
||
786 *
|
||
787 * @return afStatus_t
|
||
788 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
789 afStatus_t ZDP_PowerDescMsg( zdoIncomingMsg_t *inMsg,
|
||
\ ZDP_PowerDescMsg:
|
||
790 uint16 nwkAddr, NodePowerDescriptorFormat_t *pPowerDesc )
|
||
791 {
|
||
\ 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
|
||
792 uint8 *pBuf = ZDP_TmpBuf;
|
||
\ 000005 12.... LCALL ?Subroutine46 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_311:
|
||
\ 000008 FE MOV R6,A
|
||
\ 000009 E9 MOV A,R1
|
||
\ 00000A FF MOV R7,A
|
||
793 byte len = 1 + 2 + 2; // Status + nwkAddr + Node Power descriptor.
|
||
794
|
||
795 *pBuf++ = ZDP_SUCCESS;
|
||
\ 00000B 8882 MOV DPL,R0
|
||
\ 00000D F583 MOV DPH,A
|
||
\ 00000F E4 CLR A
|
||
\ 000010 F0 MOVX @DPTR,A
|
||
796
|
||
797 *pBuf++ = LO_UINT16( nwkAddr );
|
||
\ 000011 EC MOV A,R4
|
||
\ 000012 A3 INC DPTR
|
||
\ 000013 F0 MOVX @DPTR,A
|
||
798 *pBuf++ = HI_UINT16( nwkAddr );
|
||
\ 000014 ED MOV A,R5
|
||
\ 000015 8882 MOV DPL,R0
|
||
\ 000017 8983 MOV DPH,R1
|
||
\ 000019 A3 INC DPTR
|
||
\ 00001A A3 INC DPTR
|
||
\ 00001B F0 MOVX @DPTR,A
|
||
\ 00001C 740A MOV A,#0xa
|
||
\ 00001E 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000021 12.... LCALL ?Subroutine36 & 0xFFFF
|
||
799
|
||
800 *pBuf++ = (byte)((pPowerDesc->AvailablePowerSources << 4)
|
||
801 | (pPowerDesc->PowerMode & 0x0F));
|
||
\ ??CrossCallReturnLabel_46:
|
||
\ 000024 8E82 MOV DPL,R6
|
||
\ 000026 8F83 MOV DPH,R7
|
||
\ 000028 A3 INC DPTR
|
||
\ 000029 12.... LCALL ?Subroutine94 & 0xFFFF
|
||
802 *pBuf++ = (byte)((pPowerDesc->CurrentPowerSourceLevel << 4)
|
||
803 | (pPowerDesc->CurrentPowerSource & 0x0F));
|
||
\ ??CrossCallReturnLabel_189:
|
||
\ 00002C 12.... LCALL ??Subroutine125_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_223:
|
||
\ 00002F 540F ANL A,#0xf
|
||
\ 000031 F9 MOV R1,A
|
||
\ 000032 740C MOV A,#0xc
|
||
\ 000034 78.. MOV R0,#?V0
|
||
\ 000036 12.... LCALL ?US_SHR
|
||
\ 000039 E5.. MOV A,?V0
|
||
\ 00003B C4 SWAP A
|
||
\ 00003C 49 ORL A,R1
|
||
\ 00003D 8E82 MOV DPL,R6
|
||
\ 00003F 8F83 MOV DPH,R7
|
||
\ 000041 A3 INC DPTR
|
||
\ 000042 A3 INC DPTR
|
||
\ 000043 A3 INC DPTR
|
||
\ 000044 A3 INC DPTR
|
||
\ 000045 F0 MOVX @DPTR,A
|
||
804
|
||
805 return fillAndSend( &(inMsg->TransSeq), &(inMsg->srcAddr), Power_Desc_rsp, len );
|
||
\ 000046 ; Setup parameters for call to function fillAndSend
|
||
\ 000046 75..03 MOV ?V0,#0x3
|
||
\ 000049 75..80 MOV ?V1,#-0x80
|
||
\ 00004C 78.. MOV R0,#?V0
|
||
\ 00004E 12.... LCALL ?PUSH_XSTACK_I_TWO
|
||
\ 000051 7905 MOV R1,#0x5
|
||
\ 000053 12.... LCALL ?Subroutine72 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_116:
|
||
\ 000056 5001 JNC ??ZDP_PowerDescMsg_0
|
||
\ 000058 0B INC R3
|
||
\ ??ZDP_PowerDescMsg_0:
|
||
\ 000059 02.... LJMP ??Subroutine111_0 & 0xFFFF
|
||
806 }
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine46:
|
||
\ 000000 90.... MOV DPTR,#ZDP_TmpBuf
|
||
\ 000003 REQUIRE ??Subroutine141_0
|
||
\ 000003 ; // Fall through to label ??Subroutine141_0
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ??Subroutine141_0:
|
||
\ 000000 12.... LCALL ?Subroutine81 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_332:
|
||
\ 000003 E8 MOV A,R0
|
||
\ 000004 22 RET
|
||
807
|
||
808 /*********************************************************************
|
||
809 * @fn ZDP_SimpleDescMsg
|
||
810 *
|
||
811 * @brief Builds and sends a Simple Descriptor message, unicast to the
|
||
812 * specified device.
|
||
813 *
|
||
814 * @param inMsg - incoming message (request)
|
||
815 * @param Status - message status (ZDP_SUCCESS or other)
|
||
816 * @param pSimpleDesc - pointer to the node descriptor
|
||
817 *
|
||
818 * @return afStatus_t
|
||
819 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
820 afStatus_t ZDP_SimpleDescMsg( zdoIncomingMsg_t *inMsg, byte Status,
|
||
\ ZDP_SimpleDescMsg:
|
||
821 SimpleDescriptionFormat_t *pSimpleDesc )
|
||
822 {
|
||
\ 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
|
||
\ 000005 EA MOV A,R2
|
||
\ 000006 FE MOV R6,A
|
||
\ 000007 EB MOV A,R3
|
||
\ 000008 FF MOV R7,A
|
||
\ 000009 89.. MOV ?V6,R1
|
||
823 uint8 *pBuf = ZDP_TmpBuf;
|
||
\ 00000B 12.... LCALL ?Subroutine52 & 0xFFFF
|
||
824 uint8 i, len;
|
||
825
|
||
826 if ( Status == ZDP_SUCCESS && pSimpleDesc )
|
||
\ ??CrossCallReturnLabel_197:
|
||
\ 00000E E9 MOV A,R1
|
||
\ 00000F 702E JNZ ??ZDP_SimpleDescMsg_0
|
||
\ 000011 EC MOV A,R4
|
||
\ 000012 4D ORL A,R5
|
||
\ 000013 602A JZ ??ZDP_SimpleDescMsg_0
|
||
827 {
|
||
828 // Status + NWKAddrOfInterest + desc length + empty simple descriptor.
|
||
829 len = 1 + 2 + 1 + 8;
|
||
830 len += (pSimpleDesc->AppNumInClusters + pSimpleDesc->AppNumOutClusters) * sizeof ( uint16 );
|
||
\ 000015 8C82 MOV DPL,R4
|
||
\ 000017 8D83 MOV DPH,R5
|
||
\ 000019 A3 INC DPTR
|
||
\ 00001A A3 INC DPTR
|
||
\ 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 E0 MOVX A,@DPTR
|
||
\ 000023 F8 MOV R0,A
|
||
\ 000024 8C82 MOV DPL,R4
|
||
\ 000026 8D83 MOV DPH,R5
|
||
\ 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 E0 MOVX A,@DPTR
|
||
\ 00002F 28 ADD A,R0
|
||
\ 000030 C3 CLR C
|
||
\ 000031 33 RLC A
|
||
\ 000032 240C ADD A,#0xc
|
||
\ 000034 F9 MOV R1,A
|
||
831 }
|
||
832 else
|
||
833 {
|
||
834 len = 1 + 2 + 1; // Status + desc length
|
||
835 }
|
||
836 if ( len >= ZDP_BUF_SZ-1 )
|
||
\ 000035 C3 CLR C
|
||
\ 000036 944F SUBB A,#0x4f
|
||
\ 000038 4007 JC ??ZDP_SimpleDescMsg_1
|
||
837 {
|
||
838 return afStatus_MEM_FAIL;
|
||
\ 00003A 7910 MOV R1,#0x10
|
||
\ 00003C 02.... LJMP ??ZDP_SimpleDescMsg_2 & 0xFFFF
|
||
839 }
|
||
\ ??ZDP_SimpleDescMsg_0:
|
||
\ 00003F 7904 MOV R1,#0x4
|
||
840
|
||
841 *pBuf++ = Status;
|
||
\ ??ZDP_SimpleDescMsg_1:
|
||
\ 000041 8A82 MOV DPL,R2
|
||
\ 000043 8B83 MOV DPH,R3
|
||
\ 000045 E5.. MOV A,?V6
|
||
\ 000047 F0 MOVX @DPTR,A
|
||
842
|
||
843 *pBuf++ = LO_UINT16( ZDAppNwkAddr.addr.shortAddr );
|
||
\ 000048 90.... MOV DPTR,#ZDAppNwkAddr
|
||
\ 00004B 12.... LCALL ?Subroutine60 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_91:
|
||
\ 00004E F0 MOVX @DPTR,A
|
||
844 *pBuf++ = HI_UINT16( ZDAppNwkAddr.addr.shortAddr );
|
||
\ 00004F 90.... MOV DPTR,#ZDAppNwkAddr + 1
|
||
\ 000052 12.... LCALL ?Subroutine59 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_88:
|
||
\ 000055 F0 MOVX @DPTR,A
|
||
845
|
||
846 if ( len > 4 )
|
||
\ 000056 E9 MOV A,R1
|
||
\ 000057 C3 CLR C
|
||
\ 000058 9405 SUBB A,#0x5
|
||
\ 00005A 5003 JNC $+5
|
||
\ 00005C 02.... LJMP ??ZDP_SimpleDescMsg_3 & 0xFFFF
|
||
847 {
|
||
848 *pBuf++ = len - 4; // Simple descriptor length
|
||
\ 00005F 74FC MOV A,#-0x4
|
||
\ 000061 29 ADD A,R1
|
||
\ 000062 8A82 MOV DPL,R2
|
||
\ 000064 8B83 MOV DPH,R3
|
||
\ 000066 A3 INC DPTR
|
||
\ 000067 A3 INC DPTR
|
||
\ 000068 A3 INC DPTR
|
||
\ 000069 F0 MOVX @DPTR,A
|
||
849
|
||
850 *pBuf++ = pSimpleDesc->EndPoint;
|
||
\ 00006A 8C82 MOV DPL,R4
|
||
\ 00006C 8D83 MOV DPH,R5
|
||
\ 00006E 12.... LCALL ?Subroutine58 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_86:
|
||
\ 000071 12.... LCALL ?Subroutine95 & 0xFFFF
|
||
851 *pBuf++ = LO_UINT16( pSimpleDesc->AppProfId );
|
||
\ ??CrossCallReturnLabel_150:
|
||
\ 000074 8582.. MOV ?V0,DPL
|
||
\ 000077 8583.. MOV ?V1,DPH
|
||
\ 00007A 12.... LCALL ?Subroutine105 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_283:
|
||
\ 00007D 12.... LCALL ?Subroutine10 & 0xFFFF
|
||
852 *pBuf++ = HI_UINT16( pSimpleDesc->AppProfId );
|
||
\ ??CrossCallReturnLabel_2:
|
||
\ 000080 F0 MOVX @DPTR,A
|
||
853 *pBuf++ = LO_UINT16( pSimpleDesc->AppDeviceId );
|
||
\ 000081 EC MOV A,R4
|
||
\ 000082 2403 ADD A,#0x3
|
||
\ 000084 12.... LCALL ?Subroutine77 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_129:
|
||
\ 000087 12.... LCALL ?Subroutine59 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_89:
|
||
\ 00008A 12.... LCALL ?Subroutine10 & 0xFFFF
|
||
854 *pBuf++ = HI_UINT16( pSimpleDesc->AppDeviceId );
|
||
\ ??CrossCallReturnLabel_3:
|
||
\ 00008D A3 INC DPTR
|
||
\ 00008E 12.... LCALL ?Subroutine25 & 0xFFFF
|
||
855
|
||
856 *pBuf++ = (byte)(pSimpleDesc->AppDevVer << 4);
|
||
\ ??CrossCallReturnLabel_30:
|
||
\ 000091 C4 SWAP A
|
||
\ 000092 54F0 ANL A,#0xf0
|
||
\ 000094 8A82 MOV DPL,R2
|
||
\ 000096 8B83 MOV DPH,R3
|
||
\ 000098 A3 INC DPTR
|
||
\ 000099 A3 INC DPTR
|
||
\ 00009A A3 INC DPTR
|
||
\ 00009B A3 INC DPTR
|
||
\ 00009C A3 INC DPTR
|
||
\ 00009D A3 INC DPTR
|
||
\ 00009E A3 INC DPTR
|
||
\ 00009F A3 INC DPTR
|
||
\ 0000A0 A3 INC DPTR
|
||
\ 0000A1 F0 MOVX @DPTR,A
|
||
857
|
||
858 *pBuf++ = pSimpleDesc->AppNumInClusters;
|
||
\ 0000A2 EC MOV A,R4
|
||
\ 0000A3 2406 ADD A,#0x6
|
||
\ 0000A5 12.... LCALL ?Subroutine77 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_130:
|
||
\ 0000A8 12.... LCALL ?Subroutine58 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_87:
|
||
\ 0000AB A3 INC DPTR
|
||
\ 0000AC A3 INC DPTR
|
||
\ 0000AD A3 INC DPTR
|
||
\ 0000AE A3 INC DPTR
|
||
\ 0000AF A3 INC DPTR
|
||
\ 0000B0 A3 INC DPTR
|
||
\ 0000B1 F0 MOVX @DPTR,A
|
||
\ 0000B2 EA MOV A,R2
|
||
\ 0000B3 240B ADD A,#0xb
|
||
\ 0000B5 FA MOV R2,A
|
||
\ 0000B6 5001 JNC ??ZDP_SimpleDescMsg_4
|
||
\ 0000B8 0B INC R3
|
||
859 if ( pSimpleDesc->AppNumInClusters )
|
||
\ ??ZDP_SimpleDescMsg_4:
|
||
\ 0000B9 85..82 MOV DPL,?V0
|
||
\ 0000BC 85..83 MOV DPH,?V1
|
||
\ 0000BF E0 MOVX A,@DPTR
|
||
\ 0000C0 6023 JZ ??ZDP_SimpleDescMsg_5
|
||
860 {
|
||
861 for (i=0; i<pSimpleDesc->AppNumInClusters; ++i)
|
||
\ 0000C2 7800 MOV R0,#0x0
|
||
\ 0000C4 800C SJMP ??ZDP_SimpleDescMsg_6
|
||
862 {
|
||
863 *pBuf++ = LO_UINT16( pSimpleDesc->pAppInClusterList[i] );
|
||
\ ??ZDP_SimpleDescMsg_7:
|
||
\ 0000C6 12.... LCALL ?Subroutine69 & 0xFFFF
|
||
864 *pBuf++ = HI_UINT16( pSimpleDesc->pAppInClusterList[i] );
|
||
865 }
|
||
\ ??CrossCallReturnLabel_111:
|
||
\ 0000C9 2407 ADD A,#0x7
|
||
\ 0000CB 12.... LCALL ?Subroutine8 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_0:
|
||
\ 0000CE 5001 JNC ??ZDP_SimpleDescMsg_8
|
||
\ 0000D0 0B INC R3
|
||
\ ??ZDP_SimpleDescMsg_8:
|
||
\ 0000D1 08 INC R0
|
||
\ ??ZDP_SimpleDescMsg_6:
|
||
\ 0000D2 8C82 MOV DPL,R4
|
||
\ 0000D4 8D83 MOV DPH,R5
|
||
\ 0000D6 A3 INC DPTR
|
||
\ 0000D7 A3 INC DPTR
|
||
\ 0000D8 A3 INC DPTR
|
||
\ 0000D9 A3 INC DPTR
|
||
\ 0000DA A3 INC DPTR
|
||
\ 0000DB A3 INC DPTR
|
||
\ 0000DC E0 MOVX A,@DPTR
|
||
\ 0000DD F5.. MOV ?V0,A
|
||
\ 0000DF E8 MOV A,R0
|
||
\ 0000E0 C3 CLR C
|
||
\ 0000E1 95.. SUBB A,?V0
|
||
\ 0000E3 40E1 JC ??ZDP_SimpleDescMsg_7
|
||
866 }
|
||
867
|
||
868 *pBuf++ = pSimpleDesc->AppNumOutClusters;
|
||
\ ??ZDP_SimpleDescMsg_5:
|
||
\ 0000E5 EC MOV A,R4
|
||
\ 0000E6 2409 ADD A,#0x9
|
||
\ 0000E8 F5.. MOV ?V0,A
|
||
\ 0000EA E4 CLR A
|
||
\ 0000EB 3D ADDC A,R5
|
||
\ 0000EC F5.. MOV ?V1,A
|
||
\ 0000EE 85..82 MOV DPL,?V0
|
||
\ 0000F1 12.... LCALL ?Subroutine23 & 0xFFFF
|
||
869 if ( pSimpleDesc->AppNumOutClusters )
|
||
\ ??CrossCallReturnLabel_203:
|
||
\ 0000F4 85..82 MOV DPL,?V0
|
||
\ 0000F7 85..83 MOV DPH,?V1
|
||
\ 0000FA E0 MOVX A,@DPTR
|
||
\ 0000FB 602F JZ ??ZDP_SimpleDescMsg_9
|
||
870 {
|
||
871 for (i=0; i<pSimpleDesc->AppNumOutClusters; ++i)
|
||
\ 0000FD 7800 MOV R0,#0x0
|
||
\ ??ZDP_SimpleDescMsg_10:
|
||
\ 0000FF 8C82 MOV DPL,R4
|
||
\ 000101 8D83 MOV DPH,R5
|
||
\ 000103 A3 INC DPTR
|
||
\ 000104 A3 INC DPTR
|
||
\ 000105 A3 INC DPTR
|
||
\ 000106 A3 INC DPTR
|
||
\ 000107 A3 INC DPTR
|
||
\ 000108 A3 INC DPTR
|
||
\ 000109 A3 INC DPTR
|
||
\ 00010A A3 INC DPTR
|
||
\ 00010B A3 INC DPTR
|
||
\ 00010C E0 MOVX A,@DPTR
|
||
\ 00010D F5.. MOV ?V0,A
|
||
\ 00010F E8 MOV A,R0
|
||
\ 000110 C3 CLR C
|
||
\ 000111 95.. SUBB A,?V0
|
||
\ 000113 5017 JNC ??ZDP_SimpleDescMsg_9
|
||
872 {
|
||
873 *pBuf++ = LO_UINT16( pSimpleDesc->pAppOutClusterList[i] );
|
||
\ 000115 12.... LCALL ?Subroutine69 & 0xFFFF
|
||
874 *pBuf++ = HI_UINT16( pSimpleDesc->pAppOutClusterList[i] );
|
||
875 }
|
||
\ ??CrossCallReturnLabel_112:
|
||
\ 000118 240A ADD A,#0xa
|
||
\ 00011A 12.... LCALL ?Subroutine8 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_1:
|
||
\ 00011D 5001 JNC ??ZDP_SimpleDescMsg_11
|
||
\ 00011F 0B INC R3
|
||
\ ??ZDP_SimpleDescMsg_11:
|
||
\ 000120 08 INC R0
|
||
\ 000121 80DC SJMP ??ZDP_SimpleDescMsg_10
|
||
876 }
|
||
877 }
|
||
878
|
||
879 else
|
||
880 {
|
||
881 *pBuf = 0; // Description Length = 0;
|
||
\ ??ZDP_SimpleDescMsg_3:
|
||
\ 000123 8A82 MOV DPL,R2
|
||
\ 000125 8B83 MOV DPH,R3
|
||
\ 000127 A3 INC DPTR
|
||
\ 000128 A3 INC DPTR
|
||
\ 000129 A3 INC DPTR
|
||
\ 00012A E4 CLR A
|
||
\ 00012B F0 MOVX @DPTR,A
|
||
882 }
|
||
883
|
||
884 return fillAndSend( &(inMsg->TransSeq), &(inMsg->srcAddr), Simple_Desc_rsp, len );
|
||
\ ??ZDP_SimpleDescMsg_9:
|
||
\ 00012C ; Setup parameters for call to function fillAndSend
|
||
\ 00012C 75..04 MOV ?V0,#0x4
|
||
\ 00012F 75..80 MOV ?V1,#-0x80
|
||
\ 000132 78.. MOV R0,#?V0
|
||
\ 000134 12.... LCALL ?PUSH_XSTACK_I_TWO
|
||
\ 000137 EE MOV A,R6
|
||
\ 000138 2402 ADD A,#0x2
|
||
\ 00013A FC MOV R4,A
|
||
\ 00013B E4 CLR A
|
||
\ 00013C 3F ADDC A,R7
|
||
\ 00013D FD MOV R5,A
|
||
\ 00013E EE MOV A,R6
|
||
\ 00013F 240F ADD A,#0xf
|
||
\ 000141 FA MOV R2,A
|
||
\ 000142 E4 CLR A
|
||
\ 000143 3F ADDC A,R7
|
||
\ 000144 FB MOV R3,A
|
||
\ 000145 12.... LCALL ??Subroutine140_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_298:
|
||
\ 000148 12.... LCALL ?DEALLOC_XSTACK8
|
||
\ ??ZDP_SimpleDescMsg_2:
|
||
\ 00014B 02.... LJMP ?Subroutine3 & 0xFFFF
|
||
885 }
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine77:
|
||
\ 000000 F5.. MOV ?V0,A
|
||
\ 000002 E4 CLR A
|
||
\ 000003 3D ADDC A,R5
|
||
\ 000004 F5.. MOV ?V1,A
|
||
\ 000006 85..82 MOV DPL,?V0
|
||
\ 000009 F583 MOV DPH,A
|
||
\ 00000B 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine69:
|
||
\ 000000 E8 MOV A,R0
|
||
\ 000001 25E0 ADD A,0xE0 /* A */
|
||
\ 000003 F5.. MOV ?V0,A
|
||
\ 000005 E4 CLR A
|
||
\ 000006 33 RLC A
|
||
\ 000007 F5.. MOV ?V1,A
|
||
\ 000009 EC MOV A,R4
|
||
\ 00000A 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine58:
|
||
\ 000000 12.... LCALL ?Subroutine85 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_136:
|
||
\ 000003 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine85:
|
||
\ 000000 12.... LCALL ?Subroutine104 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_280:
|
||
\ 000003 A3 INC DPTR
|
||
\ 000004 A3 INC DPTR
|
||
\ 000005 A3 INC DPTR
|
||
\ 000006 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine23:
|
||
\ 000000 F583 MOV DPH,A
|
||
\ 000002 12.... LCALL ?Subroutine105 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_285:
|
||
\ 000005 REQUIRE ??Subroutine122_0
|
||
\ 000005 ; // Fall through to label ??Subroutine122_0
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine10:
|
||
\ 000000 A3 INC DPTR
|
||
\ 000001 A3 INC DPTR
|
||
\ 000002 A3 INC DPTR
|
||
\ 000003 A3 INC DPTR
|
||
\ 000004 A3 INC DPTR
|
||
\ 000005 12.... LCALL ?Subroutine107 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_170:
|
||
\ 000008 12.... LCALL ?Subroutine85 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_135:
|
||
\ 00000B A3 INC DPTR
|
||
\ 00000C A3 INC DPTR
|
||
\ 00000D 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine8:
|
||
\ 000000 12.... LCALL ?Subroutine101 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_162:
|
||
\ 000003 12.... LCALL ?Subroutine78 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_131:
|
||
\ 000006 12.... LCALL ?Subroutine86 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_277:
|
||
\ 000009 85..82 MOV DPL,?V4
|
||
\ 00000C 85..83 MOV DPH,?V5
|
||
\ 00000F 12.... LCALL ?Subroutine78 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_132:
|
||
\ 000012 12.... LCALL ?Subroutine83 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_276:
|
||
\ 000015 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine78:
|
||
\ 000000 E0 MOVX A,@DPTR
|
||
\ 000001 25.. ADD A,?V0
|
||
\ 000003 F5.. MOV ?V2,A
|
||
\ 000005 A3 INC DPTR
|
||
\ 000006 E0 MOVX A,@DPTR
|
||
\ 000007 35.. ADDC A,?V1
|
||
\ 000009 85..82 MOV DPL,?V2
|
||
\ 00000C F583 MOV DPH,A
|
||
\ 00000E 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine60:
|
||
\ 000000 12.... LCALL ?Subroutine87 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_139:
|
||
\ 000003 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine87:
|
||
\ 000000 12.... LCALL ?Subroutine104 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_281:
|
||
\ 000003 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine101:
|
||
\ 000000 F5.. MOV ?V4,A
|
||
\ 000002 E4 CLR A
|
||
\ 000003 3D ADDC A,R5
|
||
\ 000004 F5.. MOV ?V5,A
|
||
\ 000006 85..82 MOV DPL,?V4
|
||
\ 000009 F583 MOV DPH,A
|
||
\ 00000B 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine25:
|
||
\ 000000 A3 INC DPTR
|
||
\ 000001 12.... LCALL ?Subroutine95 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_151:
|
||
\ 000004 A3 INC DPTR
|
||
\ 000005 A3 INC DPTR
|
||
\ 000006 A3 INC DPTR
|
||
\ 000007 A3 INC DPTR
|
||
\ 000008 E0 MOVX A,@DPTR
|
||
\ 000009 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine59:
|
||
\ 000000 12.... LCALL ?Subroutine87 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_138:
|
||
\ 000003 A3 INC DPTR
|
||
\ 000004 22 RET
|
||
886
|
||
887 /*********************************************************************
|
||
888 * @fn ZDP_EPRsp
|
||
889 *
|
||
890 * @brief This builds and send an endpoint list. Used in
|
||
891 * Active_EP_rsp and Match_Desc_Rsp
|
||
892 * message. This function sends unicast message to the
|
||
893 * requesting device.
|
||
894 *
|
||
895 * @param MsgType - either Active_EP_rsp or Match_Desc_Rsp
|
||
896 * @param dstAddr - destination address
|
||
897 * @param Status - message status (ZDP_SUCCESS or other)
|
||
898 * @param nwkAddr - Device's short address that this response describes
|
||
899 * @param Count - number of endpoint/interfaces in list
|
||
900 * @param pEPIntfList - Array of Endpoint/Interfaces
|
||
901 * @param SecurityEnable - Security Options
|
||
902 *
|
||
903 * @return afStatus_t
|
||
904 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
905 afStatus_t ZDP_EPRsp( uint16 MsgType, byte TransSeq, zAddrType_t *dstAddr,
|
||
\ ZDP_EPRsp:
|
||
906 byte Status, uint16 nwkAddr, byte Count,
|
||
907 uint8 *pEPList,
|
||
908 byte SecurityEnable )
|
||
909 {
|
||
\ 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: 1
|
||
\ 000005 74FF MOV A,#-0x1
|
||
\ 000007 12.... LCALL ?ALLOC_XSTACK8
|
||
\ 00000A E9 MOV A,R1
|
||
\ 00000B 85..82 MOV DPL,?XSP + 0
|
||
\ 00000E 85..83 MOV DPH,?XSP + 1
|
||
\ 000011 F0 MOVX @DPTR,A
|
||
\ 000012 EA MOV A,R2
|
||
\ 000013 FE MOV R6,A
|
||
\ 000014 EB MOV A,R3
|
||
\ 000015 FF MOV R7,A
|
||
\ 000016 8C.. MOV ?V6,R4
|
||
\ 000018 8D.. MOV ?V7,R5
|
||
910 uint8 *pBuf = ZDP_TmpBuf;
|
||
\ 00001A 12.... LCALL ?Subroutine52 & 0xFFFF
|
||
911 byte len = 1 + 2 + 1; // Status + nwkAddr + endpoint/interface count.
|
||
\ ??CrossCallReturnLabel_198:
|
||
\ 00001D 75..04 MOV ?V4,#0x4
|
||
912 byte txOptions;
|
||
913
|
||
914 (void)SecurityEnable; // Intentionally unreferenced parameter
|
||
915
|
||
916 if ( MsgType == Match_Desc_rsp )
|
||
\ 000020 7406 MOV A,#0x6
|
||
\ 000022 6E XRL A,R6
|
||
\ 000023 7003 JNZ ??ZDP_EPRsp_0
|
||
\ 000025 7480 MOV A,#-0x80
|
||
\ 000027 6F XRL A,R7
|
||
\ ??ZDP_EPRsp_0:
|
||
\ 000028 7005 JNZ ??ZDP_EPRsp_1
|
||
917 txOptions = AF_MSG_ACK_REQUEST;
|
||
\ 00002A 75..10 MOV ?V3,#0x10
|
||
\ 00002D 8003 SJMP ??ZDP_EPRsp_2
|
||
918 else
|
||
919 txOptions = 0;
|
||
\ ??ZDP_EPRsp_1:
|
||
\ 00002F 75..00 MOV ?V3,#0x0
|
||
920
|
||
921 *pBuf++ = Status;
|
||
\ ??ZDP_EPRsp_2:
|
||
\ 000032 7411 MOV A,#0x11
|
||
\ 000034 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000037 12.... LCALL ?Subroutine38 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_47:
|
||
\ 00003A 7412 MOV A,#0x12
|
||
\ 00003C 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 00003F 12.... LCALL ?Subroutine14 & 0xFFFF
|
||
922 *pBuf++ = LO_UINT16( nwkAddr );
|
||
923 *pBuf++ = HI_UINT16( nwkAddr );
|
||
\ ??CrossCallReturnLabel_10:
|
||
\ 000042 7414 MOV A,#0x14
|
||
\ 000044 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000047 E0 MOVX A,@DPTR
|
||
\ 000048 F9 MOV R1,A
|
||
924
|
||
925 *pBuf++ = Count; // Endpoint/Interface count
|
||
\ 000049 8A82 MOV DPL,R2
|
||
\ 00004B 8B83 MOV DPH,R3
|
||
\ 00004D A3 INC DPTR
|
||
\ 00004E A3 INC DPTR
|
||
\ 00004F A3 INC DPTR
|
||
\ 000050 F0 MOVX @DPTR,A
|
||
926
|
||
927 if ( Count )
|
||
\ 000051 6021 JZ ??ZDP_EPRsp_3
|
||
928 {
|
||
929 len += Count;
|
||
\ 000053 7404 MOV A,#0x4
|
||
\ 000055 29 ADD A,R1
|
||
\ 000056 F5.. MOV ?V4,A
|
||
930 osal_memcpy( pBuf, pEPList, Count );
|
||
\ 000058 ; Setup parameters for call to function osal_memcpy
|
||
\ 000058 7415 MOV A,#0x15
|
||
\ 00005A 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 00005D 12.... LCALL ?Subroutine42 & 0xFFFF
|
||
931 }
|
||
\ ??CrossCallReturnLabel_61:
|
||
\ 000060 12.... LCALL ?PUSH_XSTACK_I_THREE
|
||
\ 000063 E9 MOV A,R1
|
||
\ 000064 FC MOV R4,A
|
||
\ 000065 7D00 MOV R5,#0x0
|
||
\ 000067 EA MOV A,R2
|
||
\ 000068 2404 ADD A,#0x4
|
||
\ 00006A FA MOV R2,A
|
||
\ 00006B 5001 JNC ??ZDP_EPRsp_4
|
||
\ 00006D 0B INC R3
|
||
\ ??ZDP_EPRsp_4:
|
||
\ 00006E 12.... LCALL ??Subroutine123_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_208:
|
||
\ 000071 12.... LCALL ?DEALLOC_XSTACK8
|
||
932
|
||
933 FillAndSendTxOptions( &TransSeq, dstAddr, MsgType, len, txOptions );
|
||
\ ??ZDP_EPRsp_3:
|
||
\ 000074 E5.. MOV A,?V3
|
||
\ 000076 90.... MOV DPTR,#ZDP_TxOptions
|
||
\ 000079 F0 MOVX @DPTR,A
|
||
\ 00007A ; Setup parameters for call to function fillAndSend
|
||
\ 00007A 8E.. MOV ?V0,R6
|
||
\ 00007C 8F.. MOV ?V1,R7
|
||
\ 00007E 78.. MOV R0,#?V0
|
||
\ 000080 12.... LCALL ?PUSH_XSTACK_I_TWO
|
||
\ 000083 A9.. MOV R1,?V4
|
||
\ 000085 AC.. MOV R4,?V6
|
||
\ 000087 AD.. MOV R5,?V7
|
||
\ 000089 7402 MOV A,#0x2
|
||
\ 00008B 12.... LCALL ?XSTACK_DISP101_8
|
||
\ 00008E 12.... LCALL ??Subroutine140_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_299:
|
||
\ 000091 12.... LCALL ?DEALLOC_XSTACK8
|
||
\ 000094 E9 MOV A,R1
|
||
\ 000095 F9 MOV R1,A
|
||
\ 000096 90.... MOV DPTR,#ZDP_TxOptions
|
||
\ 000099 E4 CLR A
|
||
\ 00009A F0 MOVX @DPTR,A
|
||
\ 00009B 04 INC A
|
||
\ 00009C 02.... LJMP ??Subroutine138_0 & 0xFFFF
|
||
934 }
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine14:
|
||
\ 000000 12.... LCALL ?Subroutine80 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_133:
|
||
\ 000003 12.... LCALL ?Subroutine96 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_153:
|
||
\ 000006 F0 MOVX @DPTR,A
|
||
\ 000007 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine38:
|
||
\ 000000 12.... LCALL ?Subroutine86 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_278:
|
||
\ 000003 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ??Subroutine138_0:
|
||
\ 000000 12.... LCALL ?DEALLOC_XSTACK8
|
||
\ 000003 REQUIRE ??Subroutine139_0
|
||
\ 000003 ; // Fall through to label ??Subroutine139_0
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ??Subroutine139_0:
|
||
\ 000000 7F08 MOV R7,#0x8
|
||
\ 000002 02.... LJMP ?BANKED_LEAVE_XDATA
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine42:
|
||
\ 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 75..00 MOV ?V2,#0x0
|
||
\ 00000A 78.. MOV R0,#?V0
|
||
\ 00000C 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine96:
|
||
\ 000000 F0 MOVX @DPTR,A
|
||
\ 000001 E9 MOV A,R1
|
||
\ 000002 8A82 MOV DPL,R2
|
||
\ 000004 8B83 MOV DPH,R3
|
||
\ 000006 A3 INC DPTR
|
||
\ 000007 A3 INC DPTR
|
||
\ 000008 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine80:
|
||
\ 000000 12.... LCALL ??Subroutine145_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_335:
|
||
\ 000003 F9 MOV R1,A
|
||
\ 000004 E8 MOV A,R0
|
||
\ 000005 8A82 MOV DPL,R2
|
||
\ 000007 8B83 MOV DPH,R3
|
||
\ 000009 A3 INC DPTR
|
||
\ 00000A 22 RET
|
||
935
|
||
936 /*********************************************************************
|
||
937 * @fn ZDP_UserDescRsp
|
||
938 *
|
||
939 * @brief Build and send the User Decriptor Response.
|
||
940 *
|
||
941 *
|
||
942 * @param dstAddr - destination address
|
||
943 * @param nwkAddrOfInterest -
|
||
944 * @param userDesc -
|
||
945 * @param SecurityEnable - Security Options
|
||
946 *
|
||
947 * @return ZStatus_t
|
||
948 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
949 ZStatus_t ZDP_UserDescRsp( byte TransSeq, zAddrType_t *dstAddr,
|
||
\ ZDP_UserDescRsp:
|
||
950 uint16 nwkAddrOfInterest, UserDescriptorFormat_t *userDesc,
|
||
951 byte SecurityEnable )
|
||
952 {
|
||
\ 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 E9 MOV A,R1
|
||
\ 00000B 85..82 MOV DPL,?XSP + 0
|
||
\ 00000E 85..83 MOV DPH,?XSP + 1
|
||
\ 000011 F0 MOVX @DPTR,A
|
||
\ 000012 8A.. MOV ?V6,R2
|
||
\ 000014 8B.. MOV ?V7,R3
|
||
953 uint8 *pBuf = ZDP_TmpBuf;
|
||
\ 000016 12.... LCALL ?Subroutine52 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_199:
|
||
\ 000019 7411 MOV A,#0x11
|
||
\ 00001B 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 00001E E0 MOVX A,@DPTR
|
||
\ 00001F F5.. MOV ?V4,A
|
||
\ 000021 A3 INC DPTR
|
||
\ 000022 E0 MOVX A,@DPTR
|
||
\ 000023 F5.. MOV ?V5,A
|
||
954 byte len = 1 + 2 + 1; // Status + nwkAddr + descriptor length.
|
||
955
|
||
956 (void)SecurityEnable; // Intentionally unreferenced parameter
|
||
957
|
||
958 len += userDesc->len;
|
||
\ 000025 85..82 MOV DPL,?V4
|
||
\ 000028 F583 MOV DPH,A
|
||
\ 00002A E0 MOVX A,@DPTR
|
||
\ 00002B 2404 ADD A,#0x4
|
||
\ 00002D FF MOV R7,A
|
||
959
|
||
960 *pBuf++ = ZSUCCESS;
|
||
\ 00002E 8A82 MOV DPL,R2
|
||
\ 000030 8B83 MOV DPH,R3
|
||
\ 000032 E4 CLR A
|
||
\ 000033 F0 MOVX @DPTR,A
|
||
961
|
||
962 *pBuf++ = LO_UINT16( nwkAddrOfInterest );
|
||
\ 000034 EC MOV A,R4
|
||
\ 000035 A3 INC DPTR
|
||
\ 000036 F0 MOVX @DPTR,A
|
||
963 *pBuf++ = HI_UINT16( nwkAddrOfInterest );
|
||
\ 000037 ED MOV A,R5
|
||
\ 000038 8A82 MOV DPL,R2
|
||
\ 00003A 8B83 MOV DPH,R3
|
||
\ 00003C A3 INC DPTR
|
||
\ 00003D A3 INC DPTR
|
||
\ 00003E F0 MOVX @DPTR,A
|
||
964
|
||
965 *pBuf++ = userDesc->len;
|
||
\ 00003F 85..82 MOV DPL,?V4
|
||
\ 000042 85..83 MOV DPH,?V5
|
||
\ 000045 12.... LCALL ?Subroutine105 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_284:
|
||
\ 000048 12.... LCALL ?Subroutine33 & 0xFFFF
|
||
966 osal_memcpy( pBuf, userDesc->desc, userDesc->len );
|
||
\ ??CrossCallReturnLabel_40:
|
||
\ 00004B AC82 MOV R4,DPL
|
||
\ 00004D AD83 MOV R5,DPH
|
||
\ 00004F 8C.. MOV ?V0,R4
|
||
\ 000051 8D.. MOV ?V1,R5
|
||
\ 000053 75..00 MOV ?V2,#0x0
|
||
\ 000056 78.. MOV R0,#?V0
|
||
\ 000058 12.... LCALL ?PUSH_XSTACK_I_THREE
|
||
\ 00005B 85..82 MOV DPL,?V4
|
||
\ 00005E 85..83 MOV DPH,?V5
|
||
\ 000061 E0 MOVX A,@DPTR
|
||
\ 000062 FC MOV R4,A
|
||
\ 000063 7D00 MOV R5,#0x0
|
||
\ 000065 EA MOV A,R2
|
||
\ 000066 2404 ADD A,#0x4
|
||
\ 000068 FA MOV R2,A
|
||
\ 000069 5001 JNC ??ZDP_UserDescRsp_0
|
||
\ 00006B 0B INC R3
|
||
\ ??ZDP_UserDescRsp_0:
|
||
\ 00006C 12.... LCALL ??Subroutine123_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_209:
|
||
\ 00006F 12.... LCALL ?DEALLOC_XSTACK8
|
||
967
|
||
968 return (ZStatus_t)fillAndSend( &TransSeq, dstAddr, User_Desc_rsp, len );
|
||
\ 000072 ; Setup parameters for call to function fillAndSend
|
||
\ 000072 75..11 MOV ?V0,#0x11
|
||
\ 000075 75..80 MOV ?V1,#-0x80
|
||
\ 000078 78.. MOV R0,#?V0
|
||
\ 00007A 12.... LCALL ?PUSH_XSTACK_I_TWO
|
||
\ 00007D EF MOV A,R7
|
||
\ 00007E F9 MOV R1,A
|
||
\ 00007F AC.. MOV R4,?V6
|
||
\ 000081 AD.. MOV R5,?V7
|
||
\ 000083 7402 MOV A,#0x2
|
||
\ 000085 12.... LCALL ?XSTACK_DISP101_8
|
||
\ 000088 12.... LCALL ??Subroutine140_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_300:
|
||
\ 00008B 12.... LCALL ?DEALLOC_XSTACK8
|
||
\ 00008E 02.... LJMP ?Subroutine4 & 0xFFFF
|
||
969 }
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine4:
|
||
\ 000000 7401 MOV A,#0x1
|
||
\ 000002 REQUIRE ??Subroutine138_0
|
||
\ 000002 ; // Fall through to label ??Subroutine138_0
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine33:
|
||
\ 000000 A3 INC DPTR
|
||
\ 000001 A3 INC DPTR
|
||
\ 000002 A3 INC DPTR
|
||
\ 000003 12.... LCALL ?Subroutine97 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_156:
|
||
\ 000006 22 RET
|
||
970
|
||
971 /*********************************************************************
|
||
972 * @fn ZDP_ServerDiscRsp
|
||
973 *
|
||
974 * @brief Build and send the Server_Discovery_rsp response.
|
||
975 *
|
||
976 * @param transID - Transaction sequence number of request.
|
||
977 * @param dstAddr - Network Destination Address.
|
||
978 * @param status - Status of response to request.
|
||
979 * @param aoi - Network Address of Interest of request.
|
||
980 * @param serverMask - Bit map of service(s) being sought.
|
||
981 * @param SecurityEnable - Security Options
|
||
982 *
|
||
983 * @return ZStatus_t
|
||
984 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
985 ZStatus_t ZDP_ServerDiscRsp( byte transID, zAddrType_t *dstAddr, byte status,
|
||
\ ZDP_ServerDiscRsp:
|
||
986 uint16 aoi, uint16 serverMask, byte SecurityEnable )
|
||
987 {
|
||
\ 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 E9 MOV A,R1
|
||
\ 00000B 85..82 MOV DPL,?XSP + 0
|
||
\ 00000E 85..83 MOV DPH,?XSP + 1
|
||
\ 000011 F0 MOVX @DPTR,A
|
||
\ 000012 EC MOV A,R4
|
||
\ 000013 FE MOV R6,A
|
||
988 const byte len = 1 + 2; // status + aoi + mask.
|
||
989 uint8 *pBuf = ZDP_TmpBuf;
|
||
\ 000014 12.... LCALL ?Subroutine46 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_312:
|
||
\ 000017 FC MOV R4,A
|
||
\ 000018 E9 MOV A,R1
|
||
\ 000019 FD MOV R5,A
|
||
990 ZStatus_t stat;
|
||
991
|
||
992 // Intentionally unreferenced parameters
|
||
993 (void)aoi;
|
||
994 (void)SecurityEnable;
|
||
995
|
||
996 *pBuf++ = status;
|
||
\ 00001A EE MOV A,R6
|
||
\ 00001B 8882 MOV DPL,R0
|
||
\ 00001D 8983 MOV DPH,R1
|
||
\ 00001F F0 MOVX @DPTR,A
|
||
\ 000020 740D MOV A,#0xd
|
||
\ 000022 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000025 12.... LCALL ??Subroutine141_0 & 0xFFFF
|
||
997
|
||
998 *pBuf++ = LO_UINT16( serverMask );
|
||
\ ??CrossCallReturnLabel_309:
|
||
\ 000028 8C82 MOV DPL,R4
|
||
\ 00002A 8D83 MOV DPH,R5
|
||
\ 00002C A3 INC DPTR
|
||
\ 00002D F0 MOVX @DPTR,A
|
||
999 *pBuf++ = HI_UINT16( serverMask );
|
||
\ 00002E E9 MOV A,R1
|
||
\ 00002F 8C82 MOV DPL,R4
|
||
\ 000031 8D83 MOV DPH,R5
|
||
\ 000033 A3 INC DPTR
|
||
\ 000034 A3 INC DPTR
|
||
\ 000035 F0 MOVX @DPTR,A
|
||
1000
|
||
1001 ZDP_TxOptions = AF_MSG_ACK_REQUEST;
|
||
\ 000036 90.... MOV DPTR,#ZDP_TxOptions
|
||
\ 000039 7410 MOV A,#0x10
|
||
\ 00003B F0 MOVX @DPTR,A
|
||
1002 stat = fillAndSend( &transID, dstAddr, Server_Discovery_rsp, len );
|
||
\ 00003C ; Setup parameters for call to function fillAndSend
|
||
\ 00003C 75..15 MOV ?V0,#0x15
|
||
\ 00003F 75..80 MOV ?V1,#-0x80
|
||
\ 000042 78.. MOV R0,#?V0
|
||
\ 000044 12.... LCALL ?PUSH_XSTACK_I_TWO
|
||
\ 000047 7903 MOV R1,#0x3
|
||
\ 000049 EA MOV A,R2
|
||
\ 00004A FC MOV R4,A
|
||
\ 00004B EB MOV A,R3
|
||
\ 00004C FD MOV R5,A
|
||
\ 00004D 7402 MOV A,#0x2
|
||
\ 00004F 12.... LCALL ?XSTACK_DISP101_8
|
||
\ 000052 12.... LCALL ??Subroutine140_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_301:
|
||
\ 000055 12.... LCALL ?DEALLOC_XSTACK8
|
||
\ 000058 E9 MOV A,R1
|
||
\ 000059 F9 MOV R1,A
|
||
1003 ZDP_TxOptions = AF_TX_OPTIONS_NONE;
|
||
\ 00005A 90.... MOV DPTR,#ZDP_TxOptions
|
||
\ 00005D E4 CLR A
|
||
\ 00005E F0 MOVX @DPTR,A
|
||
1004
|
||
1005 return ( stat );
|
||
\ 00005F 04 INC A
|
||
\ 000060 02.... LJMP ??Subroutine112_0 & 0xFFFF
|
||
1006 }
|
||
1007
|
||
1008 /*********************************************************************
|
||
1009 * @fn ZDP_GenericRsp
|
||
1010 *
|
||
1011 * @brief Sends a response message with only the parameter status
|
||
1012 * byte and the addr of interest for data.
|
||
1013 * This function sends unicast message to the
|
||
1014 * requesting device.
|
||
1015 *
|
||
1016 * @param dstAddr - destination address
|
||
1017 * @param status - generic status for response
|
||
1018 * @param aoi - address of interest
|
||
1019 * @param dstAddr - destination address
|
||
1020 * @param rspId - response cluster ID
|
||
1021 * @param SecurityEnable - Security Options
|
||
1022 *
|
||
1023 * @return afStatus_t
|
||
1024 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
1025 afStatus_t ZDP_GenericRsp( byte TransSeq, zAddrType_t *dstAddr,
|
||
\ ZDP_GenericRsp:
|
||
1026 byte status, uint16 aoi, uint16 rspID, byte SecurityEnable )
|
||
1027 {
|
||
\ 000000 74F7 MOV A,#-0x9
|
||
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
||
\ 000005 ; Saved register size: 9
|
||
\ 000005 ; Auto size: 1
|
||
\ 000005 74FF MOV A,#-0x1
|
||
\ 000007 12.... LCALL ?ALLOC_XSTACK8
|
||
\ 00000A E9 MOV A,R1
|
||
\ 00000B 85..82 MOV DPL,?XSP + 0
|
||
\ 00000E 85..83 MOV DPH,?XSP + 1
|
||
\ 000011 F0 MOVX @DPTR,A
|
||
1028 uint8 len;
|
||
1029
|
||
1030 (void)SecurityEnable; // Intentionally unreferenced parameter
|
||
1031
|
||
1032 ZDP_TmpBuf[0] = status;
|
||
\ 000012 12.... LCALL ?Subroutine54 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_215:
|
||
\ 000015 EC MOV A,R4
|
||
\ 000016 F0 MOVX @DPTR,A
|
||
\ 000017 740A MOV A,#0xa
|
||
\ 000019 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 00001C 12.... LCALL ??Subroutine144_0 & 0xFFFF
|
||
1033 ZDP_TmpBuf[1] = LO_UINT16( aoi );
|
||
\ ??CrossCallReturnLabel_323:
|
||
\ 00001F 90.... MOV DPTR,#ZDP_TmpBuf
|
||
\ 000022 E0 MOVX A,@DPTR
|
||
\ 000023 FC MOV R4,A
|
||
\ 000024 A3 INC DPTR
|
||
\ 000025 E0 MOVX A,@DPTR
|
||
\ 000026 F583 MOV DPH,A
|
||
\ 000028 8C82 MOV DPL,R4
|
||
\ 00002A A3 INC DPTR
|
||
\ 00002B E8 MOV A,R0
|
||
\ 00002C 12.... LCALL ?Subroutine13 & 0xFFFF
|
||
1034 ZDP_TmpBuf[2] = HI_UINT16( aoi );
|
||
1035
|
||
1036 // Length byte
|
||
1037 ZDP_TmpBuf[3] = 0;
|
||
\ ??CrossCallReturnLabel_9:
|
||
\ 00002F 90.... MOV DPTR,#ZDP_TmpBuf
|
||
\ 000032 12.... LCALL ?Subroutine53 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_79:
|
||
\ 000035 A3 INC DPTR
|
||
\ 000036 E4 CLR A
|
||
\ 000037 F0 MOVX @DPTR,A
|
||
1038 len = 4;
|
||
1039
|
||
1040 return fillAndSend( &TransSeq, dstAddr, rspID, len );
|
||
\ 000038 ; Setup parameters for call to function fillAndSend
|
||
\ 000038 740C MOV A,#0xc
|
||
\ 00003A 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 00003D 12.... LCALL ?PUSH_XSTACK8_X_TWO
|
||
\ 000040 7904 MOV R1,#0x4
|
||
\ 000042 EA MOV A,R2
|
||
\ 000043 FC MOV R4,A
|
||
\ 000044 EB MOV A,R3
|
||
\ 000045 FD MOV R5,A
|
||
\ 000046 7402 MOV A,#0x2
|
||
\ 000048 12.... LCALL ?XSTACK_DISP101_8
|
||
\ 00004B 12.... LCALL ??Subroutine140_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_302:
|
||
\ 00004E 12.... LCALL ?DEALLOC_XSTACK8
|
||
\ 000051 7401 MOV A,#0x1
|
||
\ 000053 12.... LCALL ?DEALLOC_XSTACK8
|
||
\ 000056 REQUIRE ?Subroutine5
|
||
\ 000056 ; // Fall through to label ?Subroutine5
|
||
1041 }
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine5:
|
||
\ 000000 7F01 MOV R7,#0x1
|
||
\ 000002 02.... LJMP ?BANKED_LEAVE_XDATA
|
||
1042
|
||
1043 /*********************************************************************
|
||
1044 * Binding
|
||
1045 */
|
||
1046 /*********************************************************************
|
||
1047 * @fn ZDP_EndDeviceBindReq
|
||
1048 *
|
||
1049 * @brief This builds and sends a End_Device_Bind_req message.
|
||
1050 * This function sends a unicast message.
|
||
1051 *
|
||
1052 * @param dstAddr - destination address
|
||
1053 * @param LocalCoordinator - short address of local coordinator
|
||
1054 * @param epIntf - Endpoint/Interface of Simple Desc
|
||
1055 * @param ProfileID - Profile ID
|
||
1056 *
|
||
1057 * The Input cluster list is the opposite of what you would think.
|
||
1058 * This is the output cluster list of this device
|
||
1059 * @param NumInClusters - number of input clusters
|
||
1060 * @param InClusterList - input cluster ID list
|
||
1061 *
|
||
1062 * The Output cluster list is the opposite of what you would think.
|
||
1063 * This is the input cluster list of this device
|
||
1064 * @param NumOutClusters - number of output clusters
|
||
1065 * @param OutClusterList - output cluster ID list
|
||
1066 *
|
||
1067 * @param SecurityEnable - Security Options
|
||
1068 *
|
||
1069 * @return afStatus_t
|
||
1070 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
1071 afStatus_t ZDP_EndDeviceBindReq( zAddrType_t *dstAddr,
|
||
\ ZDP_EndDeviceBindReq:
|
||
1072 uint16 LocalCoordinator,
|
||
1073 byte endPoint,
|
||
1074 uint16 ProfileID,
|
||
1075 byte NumInClusters, cId_t *InClusterList,
|
||
1076 byte NumOutClusters, cId_t *OutClusterList,
|
||
1077 byte SecurityEnable )
|
||
1078 {
|
||
\ 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: 2
|
||
\ 000005 74FE MOV A,#-0x2
|
||
\ 000007 12.... LCALL ?ALLOC_XSTACK8
|
||
\ 00000A 12.... LCALL ?Subroutine31 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_318:
|
||
\ 00000D EC MOV A,R4
|
||
\ 00000E FE MOV R6,A
|
||
\ 00000F ED MOV A,R5
|
||
\ 000010 FF MOV R7,A
|
||
\ 000011 89.. MOV ?V7,R1
|
||
1079 uint8 *pBuf = ZDP_TmpBuf;
|
||
\ 000013 90.... MOV DPTR,#ZDP_TmpBuf
|
||
\ 000016 12.... LCALL ??Subroutine125_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_224:
|
||
\ 000019 7414 MOV A,#0x14
|
||
\ 00001B 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 00001E E0 MOVX A,@DPTR
|
||
\ 00001F F5.. MOV ?V2,A
|
||
\ 000021 7417 MOV A,#0x17
|
||
\ 000023 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000026 E0 MOVX A,@DPTR
|
||
\ 000027 F5.. MOV ?V3,A
|
||
1080 uint8 i, len;
|
||
1081 uint8 *ieeeAddr;
|
||
1082
|
||
1083 (void)SecurityEnable; // Intentionally unreferenced parameter
|
||
1084
|
||
1085 // LocalCoordinator + SrcExtAddr + ep + ProfileID + NumInClusters + NumOutClusters.
|
||
1086 len = 2 + Z_EXTADDR_LEN + 1 + 2 + 1 + 1;
|
||
1087 len += (NumInClusters + NumOutClusters) * sizeof ( uint16 );
|
||
\ 000029 E5.. MOV A,?V2
|
||
\ 00002B 25.. ADD A,?V3
|
||
\ 00002D C3 CLR C
|
||
\ 00002E 33 RLC A
|
||
\ 00002F 240F ADD A,#0xf
|
||
\ 000031 F5.. MOV ?V6,A
|
||
1088
|
||
1089 if ( len >= ZDP_BUF_SZ-1 )
|
||
\ 000033 C3 CLR C
|
||
\ 000034 944F SUBB A,#0x4f
|
||
\ 000036 4005 JC ??ZDP_EndDeviceBindReq_0
|
||
1090 {
|
||
1091 return afStatus_MEM_FAIL;
|
||
\ 000038 7910 MOV R1,#0x10
|
||
\ 00003A 02.... LJMP ??ZDP_EndDeviceBindReq_1 & 0xFFFF
|
||
1092 }
|
||
1093
|
||
1094 if ( LocalCoordinator != NLME_GetShortAddr() )
|
||
\ ??ZDP_EndDeviceBindReq_0:
|
||
\ 00003D ; Setup parameters for call to function NLME_GetShortAddr
|
||
\ 00003D 12.... LCALL `??NLME_GetShortAddr::?relay`; Banked call to: NLME_GetShortAddr
|
||
\ 000040 EA MOV A,R2
|
||
\ 000041 6E XRL A,R6
|
||
\ 000042 7002 JNZ ??ZDP_EndDeviceBindReq_2
|
||
\ 000044 EB MOV A,R3
|
||
\ 000045 6F XRL A,R7
|
||
\ ??ZDP_EndDeviceBindReq_2:
|
||
\ 000046 6005 JZ ??ZDP_EndDeviceBindReq_3
|
||
1095 {
|
||
1096 return afStatus_INVALID_PARAMETER;
|
||
\ 000048 7902 MOV R1,#0x2
|
||
\ 00004A 02.... LJMP ??ZDP_EndDeviceBindReq_1 & 0xFFFF
|
||
1097 }
|
||
1098
|
||
1099 *pBuf++ = LO_UINT16( LocalCoordinator );
|
||
\ ??ZDP_EndDeviceBindReq_3:
|
||
\ 00004D EE MOV A,R6
|
||
\ 00004E 85..82 MOV DPL,?V0
|
||
\ 000051 85..83 MOV DPH,?V1
|
||
\ 000054 F0 MOVX @DPTR,A
|
||
1100 *pBuf++ = HI_UINT16( LocalCoordinator );
|
||
\ 000055 EF MOV A,R7
|
||
\ 000056 A3 INC DPTR
|
||
\ 000057 F0 MOVX @DPTR,A
|
||
1101
|
||
1102 ieeeAddr = NLME_GetExtAddr();
|
||
\ 000058 ; Setup parameters for call to function NLME_GetExtAddr
|
||
\ 000058 12.... LCALL `??NLME_GetExtAddr::?relay`; Banked call to: NLME_GetExtAddr
|
||
\ 00005B 8A.. MOV ?V4,R2
|
||
\ 00005D 8B.. MOV ?V5,R3
|
||
\ 00005F AC.. MOV R4,?V4
|
||
\ 000061 AD.. MOV R5,?V5
|
||
1103 pBuf = osal_cpyExtAddr( pBuf, ieeeAddr );
|
||
\ 000063 ; Setup parameters for call to function sAddrExtCpy
|
||
\ 000063 E5.. MOV A,?V0
|
||
\ 000065 2402 ADD A,#0x2
|
||
\ 000067 FA MOV R2,A
|
||
\ 000068 E4 CLR A
|
||
\ 000069 35.. ADDC A,?V1
|
||
\ 00006B FB MOV R3,A
|
||
\ 00006C 12.... LCALL ?Subroutine67 & 0xFFFF
|
||
1104
|
||
1105 *pBuf++ = endPoint;
|
||
\ ??CrossCallReturnLabel_108:
|
||
\ 00006F E5.. MOV A,?V7
|
||
\ 000071 F0 MOVX @DPTR,A
|
||
\ 000072 7412 MOV A,#0x12
|
||
\ 000074 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000077 12.... LCALL ?Subroutine14 & 0xFFFF
|
||
1106
|
||
1107 *pBuf++ = LO_UINT16( ProfileID ); // Profile ID
|
||
1108 *pBuf++ = HI_UINT16( ProfileID );
|
||
1109
|
||
1110 *pBuf++ = NumInClusters; // Input cluster list
|
||
\ ??CrossCallReturnLabel_11:
|
||
\ 00007A 8A82 MOV DPL,R2
|
||
\ 00007C 8B83 MOV DPH,R3
|
||
\ 00007E A3 INC DPTR
|
||
\ 00007F A3 INC DPTR
|
||
\ 000080 A3 INC DPTR
|
||
\ 000081 E5.. MOV A,?V2
|
||
\ 000083 F0 MOVX @DPTR,A
|
||
\ 000084 EA MOV A,R2
|
||
\ 000085 2404 ADD A,#0x4
|
||
\ 000087 F5.. MOV ?V0,A
|
||
\ 000089 E4 CLR A
|
||
\ 00008A 3B ADDC A,R3
|
||
\ 00008B F5.. MOV ?V1,A
|
||
1111 for ( i = 0; i < NumInClusters; ++i )
|
||
\ 00008D 7800 MOV R0,#0x0
|
||
\ 00008F 7415 MOV A,#0x15
|
||
\ 000091 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000094 12.... LCALL ??Subroutine121_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_192:
|
||
\ 000097 8021 SJMP ??ZDP_EndDeviceBindReq_4
|
||
1112 {
|
||
1113 *pBuf++ = LO_UINT16(InClusterList[i]);
|
||
\ ??ZDP_EndDeviceBindReq_5:
|
||
\ 000099 12.... LCALL ?Subroutine70 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_113:
|
||
\ 00009C FE MOV R6,A
|
||
\ 00009D EB MOV A,R3
|
||
\ 00009E 3D ADDC A,R5
|
||
\ 00009F FF MOV R7,A
|
||
\ 0000A0 8E82 MOV DPL,R6
|
||
\ 0000A2 F583 MOV DPH,A
|
||
\ 0000A4 12.... LCALL ?Subroutine61 & 0xFFFF
|
||
1114 *pBuf++ = HI_UINT16(InClusterList[i]);
|
||
\ ??CrossCallReturnLabel_95:
|
||
\ 0000A7 8E82 MOV DPL,R6
|
||
\ 0000A9 8F83 MOV DPH,R7
|
||
\ 0000AB A3 INC DPTR
|
||
\ 0000AC 12.... LCALL ?Subroutine57 & 0xFFFF
|
||
1115 }
|
||
\ ??CrossCallReturnLabel_84:
|
||
\ 0000AF E5.. MOV A,?V0
|
||
\ 0000B1 2402 ADD A,#0x2
|
||
\ 0000B3 F5.. MOV ?V0,A
|
||
\ 0000B5 5002 JNC ??ZDP_EndDeviceBindReq_6
|
||
\ 0000B7 05.. INC ?V1
|
||
\ ??ZDP_EndDeviceBindReq_6:
|
||
\ 0000B9 08 INC R0
|
||
\ ??ZDP_EndDeviceBindReq_4:
|
||
\ 0000BA E8 MOV A,R0
|
||
\ 0000BB C3 CLR C
|
||
\ 0000BC 95.. SUBB A,?V2
|
||
\ 0000BE 40D9 JC ??ZDP_EndDeviceBindReq_5
|
||
1116
|
||
1117 *pBuf++ = NumOutClusters; // Output cluster list
|
||
\ 0000C0 85..82 MOV DPL,?V0
|
||
\ 0000C3 85..83 MOV DPH,?V1
|
||
\ 0000C6 E5.. MOV A,?V3
|
||
\ 0000C8 F0 MOVX @DPTR,A
|
||
\ 0000C9 A3 INC DPTR
|
||
\ 0000CA 8582.. MOV ?V0,DPL
|
||
\ 0000CD 8583.. MOV ?V1,DPH
|
||
1118 for ( i = 0; i < NumOutClusters; ++i )
|
||
\ 0000D0 7800 MOV R0,#0x0
|
||
\ 0000D2 7418 MOV A,#0x18
|
||
\ 0000D4 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 0000D7 12.... LCALL ??Subroutine121_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_193:
|
||
\ 0000DA 8024 SJMP ??ZDP_EndDeviceBindReq_7
|
||
1119 {
|
||
1120 *pBuf++ = LO_UINT16(OutClusterList[i]);
|
||
\ ??ZDP_EndDeviceBindReq_8:
|
||
\ 0000DC 12.... LCALL ?Subroutine70 & 0xFFFF
|
||
1121 *pBuf++ = HI_UINT16(OutClusterList[i]);
|
||
1122 }
|
||
\ ??CrossCallReturnLabel_114:
|
||
\ 0000DF FC MOV R4,A
|
||
\ 0000E0 EB MOV A,R3
|
||
\ 0000E1 3D ADDC A,R5
|
||
\ 0000E2 FD MOV R5,A
|
||
\ 0000E3 8C82 MOV DPL,R4
|
||
\ 0000E5 F583 MOV DPH,A
|
||
\ 0000E7 12.... LCALL ?Subroutine102 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_163:
|
||
\ 0000EA 12.... LCALL ?Subroutine16 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_17:
|
||
\ 0000ED 85..82 MOV DPL,?V0
|
||
\ 0000F0 85..83 MOV DPH,?V1
|
||
\ 0000F3 A3 INC DPTR
|
||
\ 0000F4 F0 MOVX @DPTR,A
|
||
\ 0000F5 E5.. MOV A,?V0
|
||
\ 0000F7 2402 ADD A,#0x2
|
||
\ 0000F9 F5.. MOV ?V0,A
|
||
\ 0000FB 5002 JNC ??ZDP_EndDeviceBindReq_9
|
||
\ 0000FD 05.. INC ?V1
|
||
\ ??ZDP_EndDeviceBindReq_9:
|
||
\ 0000FF 08 INC R0
|
||
\ ??ZDP_EndDeviceBindReq_7:
|
||
\ 000100 E8 MOV A,R0
|
||
\ 000101 C3 CLR C
|
||
\ 000102 95.. SUBB A,?V3
|
||
\ 000104 40D6 JC ??ZDP_EndDeviceBindReq_8
|
||
1123
|
||
1124 return fillAndSend( &ZDP_TransID, dstAddr, End_Device_Bind_req, len );
|
||
\ 000106 ; Setup parameters for call to function fillAndSend
|
||
\ 000106 75..20 MOV ?V0,#0x20
|
||
\ 000109 75..00 MOV ?V1,#0x0
|
||
\ 00010C 78.. MOV R0,#?V0
|
||
\ 00010E 12.... LCALL ?PUSH_XSTACK_I_TWO
|
||
\ 000111 A9.. MOV R1,?V6
|
||
\ 000113 7402 MOV A,#0x2
|
||
\ 000115 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000118 12.... LCALL ?Subroutine50 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_71:
|
||
\ 00011B 12.... LCALL ?Subroutine64 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_292:
|
||
\ 00011E 12.... LCALL ?DEALLOC_XSTACK8
|
||
\ ??ZDP_EndDeviceBindReq_1:
|
||
\ 000121 7402 MOV A,#0x2
|
||
\ 000123 02.... LJMP ??Subroutine138_0 & 0xFFFF
|
||
1125 }
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine70:
|
||
\ 000000 E8 MOV A,R0
|
||
\ 000001 25E0 ADD A,0xE0 /* A */
|
||
\ 000003 FC MOV R4,A
|
||
\ 000004 E4 CLR A
|
||
\ 000005 33 RLC A
|
||
\ 000006 FD MOV R5,A
|
||
\ 000007 EA MOV A,R2
|
||
\ 000008 2C ADD A,R4
|
||
\ 000009 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine50:
|
||
\ 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
|
||
\ ?Subroutine57:
|
||
\ 000000 12.... LCALL ?Subroutine90 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_143:
|
||
\ 000003 F0 MOVX @DPTR,A
|
||
\ 000004 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine90:
|
||
\ 000000 12.... LCALL ?Subroutine102 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_165:
|
||
\ 000003 A3 INC DPTR
|
||
\ 000004 22 RET
|
||
1126
|
||
1127 /*********************************************************************
|
||
1128 * @fn ZDP_BindUnbindReq
|
||
1129 *
|
||
1130 * @brief This builds and send a Bind_req or Unbind_req message
|
||
1131 * Depending on the ClusterID. This function
|
||
1132 * sends a unicast message to the local coordinator.
|
||
1133 *
|
||
1134 * @param BindOrUnbind - either Bind_req or Unbind_req
|
||
1135 * @param dstAddr - destination address of the message
|
||
1136 * @param SourceAddr - source 64 bit address of the binding
|
||
1137 * @param SrcEPIntf - Source endpoint/interface
|
||
1138 * @param ClusterID - Binding cluster ID
|
||
1139 * @param DestinationAddr - destination 64 bit addr of binding
|
||
1140 * @param DstEPIntf - destination endpoint/interface
|
||
1141 * @param SecurityEnable - Security Options
|
||
1142 *
|
||
1143 * @return afStatus_t
|
||
1144 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
1145 afStatus_t ZDP_BindUnbindReq( uint16 BindOrUnbind, zAddrType_t *dstAddr,
|
||
\ ZDP_BindUnbindReq:
|
||
1146 uint8 *SourceAddr, byte SrcEndPoint,
|
||
1147 cId_t ClusterID,
|
||
1148 zAddrType_t *destinationAddr, byte DstEndPoint,
|
||
1149 byte SecurityEnable )
|
||
1150 {
|
||
\ 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
|
||
\ 000005 EA MOV A,R2
|
||
\ 000006 FE MOV R6,A
|
||
\ 000007 EB MOV A,R3
|
||
\ 000008 FF MOV R7,A
|
||
\ 000009 8C.. MOV ?V6,R4
|
||
\ 00000B 8D.. MOV ?V7,R5
|
||
\ 00000D 89.. MOV ?V3,R1
|
||
1151 uint8 *pBuf = ZDP_TmpBuf;
|
||
\ 00000F 12.... LCALL ?Subroutine52 & 0xFFFF
|
||
1152 byte len;
|
||
1153
|
||
1154 (void)SecurityEnable; // Intentionally unreferenced parameter
|
||
1155
|
||
1156 // SourceAddr + SrcEPIntf + ClusterID + addrMode.
|
||
1157 len = Z_EXTADDR_LEN + 1 + sizeof( cId_t ) + sizeof( uint8 );
|
||
\ ??CrossCallReturnLabel_200:
|
||
\ 000012 75..0C MOV ?V2,#0xc
|
||
\ 000015 7414 MOV A,#0x14
|
||
\ 000017 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 00001A 12.... LCALL ??Subroutine125_0 & 0xFFFF
|
||
1158 if ( destinationAddr->addrMode == Addr64Bit )
|
||
\ ??CrossCallReturnLabel_225:
|
||
\ 00001D 85..82 MOV DPL,?V0
|
||
\ 000020 F583 MOV DPH,A
|
||
\ 000022 A3 INC DPTR
|
||
\ 000023 A3 INC DPTR
|
||
\ 000024 A3 INC DPTR
|
||
\ 000025 A3 INC DPTR
|
||
\ 000026 A3 INC DPTR
|
||
\ 000027 A3 INC DPTR
|
||
\ 000028 A3 INC DPTR
|
||
\ 000029 A3 INC DPTR
|
||
\ 00002A E0 MOVX A,@DPTR
|
||
\ 00002B 6403 XRL A,#0x3
|
||
\ 00002D 7005 JNZ ??ZDP_BindUnbindReq_0
|
||
1159 len += Z_EXTADDR_LEN + 1; // +1 for DstEPIntf
|
||
\ 00002F 75..15 MOV ?V2,#0x15
|
||
\ 000032 8016 SJMP ??ZDP_BindUnbindReq_1
|
||
1160 else if ( destinationAddr->addrMode == AddrGroup )
|
||
\ ??ZDP_BindUnbindReq_0:
|
||
\ 000034 85..82 MOV DPL,?V0
|
||
\ 000037 85..83 MOV DPH,?V1
|
||
\ 00003A A3 INC DPTR
|
||
\ 00003B A3 INC DPTR
|
||
\ 00003C A3 INC DPTR
|
||
\ 00003D A3 INC DPTR
|
||
\ 00003E A3 INC DPTR
|
||
\ 00003F A3 INC DPTR
|
||
\ 000040 A3 INC DPTR
|
||
\ 000041 A3 INC DPTR
|
||
\ 000042 E0 MOVX A,@DPTR
|
||
\ 000043 6401 XRL A,#0x1
|
||
\ 000045 7003 JNZ ??ZDP_BindUnbindReq_1
|
||
1161 len += sizeof ( uint16 );
|
||
\ 000047 75..0E MOV ?V2,#0xe
|
||
1162
|
||
1163 pBuf = osal_cpyExtAddr( pBuf, SourceAddr );
|
||
\ ??ZDP_BindUnbindReq_1:
|
||
\ 00004A ; Setup parameters for call to function sAddrExtCpy
|
||
\ 00004A 7410 MOV A,#0x10
|
||
\ 00004C 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 00004F 12.... LCALL ?Subroutine50 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_72:
|
||
\ 000052 12.... LCALL ?Subroutine67 & 0xFFFF
|
||
1164 *pBuf++ = SrcEndPoint;
|
||
\ ??CrossCallReturnLabel_109:
|
||
\ 000055 E5.. MOV A,?V3
|
||
\ 000057 F0 MOVX @DPTR,A
|
||
\ 000058 7412 MOV A,#0x12
|
||
\ 00005A 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 00005D 12.... LCALL ?Subroutine14 & 0xFFFF
|
||
1165
|
||
1166 *pBuf++ = LO_UINT16( ClusterID );
|
||
1167
|
||
1168 *pBuf++ = HI_UINT16( ClusterID );
|
||
1169 *pBuf++ = destinationAddr->addrMode;
|
||
\ ??CrossCallReturnLabel_12:
|
||
\ 000060 E5.. MOV A,?V0
|
||
\ 000062 2408 ADD A,#0x8
|
||
\ 000064 F8 MOV R0,A
|
||
\ 000065 E4 CLR A
|
||
\ 000066 35.. ADDC A,?V1
|
||
\ 000068 F9 MOV R1,A
|
||
\ 000069 8882 MOV DPL,R0
|
||
\ 00006B 12.... LCALL ?Subroutine41 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_59:
|
||
\ 00006E 5001 JNC ??ZDP_BindUnbindReq_2
|
||
\ 000070 0B INC R3
|
||
1170 if ( destinationAddr->addrMode == Addr64Bit )
|
||
\ ??ZDP_BindUnbindReq_2:
|
||
\ 000071 8882 MOV DPL,R0
|
||
\ 000073 8983 MOV DPH,R1
|
||
\ 000075 E0 MOVX A,@DPTR
|
||
\ 000076 6403 XRL A,#0x3
|
||
\ 000078 7013 JNZ ??ZDP_BindUnbindReq_3
|
||
1171 {
|
||
1172 pBuf = osal_cpyExtAddr( pBuf, destinationAddr->addr.extAddr );
|
||
1173 *pBuf = DstEndPoint;
|
||
\ 00007A 7416 MOV A,#0x16
|
||
\ 00007C 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 00007F E0 MOVX A,@DPTR
|
||
\ 000080 C0E0 PUSH A
|
||
\ 000082 ; Setup parameters for call to function sAddrExtCpy
|
||
\ 000082 AC.. MOV R4,?V0
|
||
\ 000084 AD.. MOV R5,?V1
|
||
\ 000086 12.... LCALL ?Subroutine67 & 0xFFFF
|
||
1174 }
|
||
\ ??CrossCallReturnLabel_110:
|
||
\ 000089 D0E0 POP A
|
||
\ 00008B 8026 SJMP ??CrossCallReturnLabel_92
|
||
1175 else if ( destinationAddr->addrMode == AddrGroup )
|
||
\ ??ZDP_BindUnbindReq_3:
|
||
\ 00008D 85..82 MOV DPL,?V0
|
||
\ 000090 85..83 MOV DPH,?V1
|
||
\ 000093 A3 INC DPTR
|
||
\ 000094 A3 INC DPTR
|
||
\ 000095 A3 INC DPTR
|
||
\ 000096 A3 INC DPTR
|
||
\ 000097 A3 INC DPTR
|
||
\ 000098 A3 INC DPTR
|
||
\ 000099 A3 INC DPTR
|
||
\ 00009A A3 INC DPTR
|
||
\ 00009B E0 MOVX A,@DPTR
|
||
\ 00009C 6401 XRL A,#0x1
|
||
\ 00009E 7014 JNZ ??ZDP_BindUnbindReq_4
|
||
1176 {
|
||
1177 *pBuf++ = LO_UINT16( destinationAddr->addr.shortAddr );
|
||
\ 0000A0 85..82 MOV DPL,?V0
|
||
\ 0000A3 85..83 MOV DPH,?V1
|
||
\ 0000A6 12.... LCALL ?Subroutine38 & 0xFFFF
|
||
1178 *pBuf++ = HI_UINT16( destinationAddr->addr.shortAddr );
|
||
\ ??CrossCallReturnLabel_48:
|
||
\ 0000A9 85..82 MOV DPL,?V0
|
||
\ 0000AC 85..83 MOV DPH,?V1
|
||
\ 0000AF A3 INC DPTR
|
||
\ 0000B0 12.... LCALL ?Subroutine60 & 0xFFFF
|
||
1179 }
|
||
\ ??CrossCallReturnLabel_92:
|
||
\ 0000B3 F0 MOVX @DPTR,A
|
||
1180
|
||
1181 FillAndSendTxOptions( &ZDP_TransID, dstAddr, BindOrUnbind, len, AF_MSG_ACK_REQUEST );
|
||
\ ??ZDP_BindUnbindReq_4:
|
||
\ 0000B4 90.... MOV DPTR,#ZDP_TxOptions
|
||
\ 0000B7 7410 MOV A,#0x10
|
||
\ 0000B9 F0 MOVX @DPTR,A
|
||
\ 0000BA ; Setup parameters for call to function fillAndSend
|
||
\ 0000BA 8E.. MOV ?V0,R6
|
||
\ 0000BC 8F.. MOV ?V1,R7
|
||
\ 0000BE 78.. MOV R0,#?V0
|
||
\ 0000C0 12.... LCALL ?PUSH_XSTACK_I_TWO
|
||
\ 0000C3 A9.. MOV R1,?V2
|
||
\ 0000C5 AC.. MOV R4,?V6
|
||
\ 0000C7 AD.. MOV R5,?V7
|
||
\ 0000C9 12.... LCALL ?Subroutine64 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_293:
|
||
\ 0000CC 12.... LCALL ?DEALLOC_XSTACK8
|
||
\ 0000CF E9 MOV A,R1
|
||
\ 0000D0 F9 MOV R1,A
|
||
\ 0000D1 90.... MOV DPTR,#ZDP_TxOptions
|
||
\ 0000D4 E4 CLR A
|
||
\ 0000D5 F0 MOVX @DPTR,A
|
||
\ 0000D6 02.... LJMP ??Subroutine139_0 & 0xFFFF
|
||
1182 }
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine41:
|
||
\ 000000 F583 MOV DPH,A
|
||
\ 000002 12.... LCALL ?Subroutine87 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_137:
|
||
\ 000005 A3 INC DPTR
|
||
\ 000006 A3 INC DPTR
|
||
\ 000007 F0 MOVX @DPTR,A
|
||
\ 000008 EA MOV A,R2
|
||
\ 000009 2404 ADD A,#0x4
|
||
\ 00000B FA MOV R2,A
|
||
\ 00000C 22 RET
|
||
1183
|
||
1184 /*********************************************************************
|
||
1185 * Network Management
|
||
1186 */
|
||
1187
|
||
1188 /*********************************************************************
|
||
1189 * @fn ZDP_MgmtNwkDiscReq
|
||
1190 *
|
||
1191 * @brief This builds and send a Mgmt_NWK_Disc_req message. This
|
||
1192 * function sends a unicast message.
|
||
1193 *
|
||
1194 * @param dstAddr - destination address of the message
|
||
1195 * @param ScanChannels - 32 bit address bit map
|
||
1196 * @param StartIndex - Starting index within the reporting network
|
||
1197 * list
|
||
1198 * @param SecurityEnable - Security Options
|
||
1199 *
|
||
1200 * @return afStatus_t
|
||
1201 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
1202 afStatus_t ZDP_MgmtNwkDiscReq( zAddrType_t *dstAddr,
|
||
\ ZDP_MgmtNwkDiscReq:
|
||
1203 uint32 ScanChannels,
|
||
1204 byte ScanDuration,
|
||
1205 byte StartIndex,
|
||
1206 byte SecurityEnable )
|
||
1207 {
|
||
\ 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 8A.. MOV ?V0,R2
|
||
\ 000007 8B.. MOV ?V1,R3
|
||
\ 000009 E9 MOV A,R1
|
||
\ 00000A FE MOV R6,A
|
||
\ 00000B EC MOV A,R4
|
||
\ 00000C FF MOV R7,A
|
||
1208 uint8 *pBuf = ZDP_TmpBuf;
|
||
1209 byte len = sizeof( uint32 )+1+1; // ScanChannels + ScanDuration + StartIndex.
|
||
1210
|
||
1211 (void)SecurityEnable; // Intentionally unreferenced parameter
|
||
1212
|
||
1213 pBuf = osal_buffer_uint32( pBuf, ScanChannels );
|
||
\ 00000D ; Setup parameters for call to function osal_buffer_uint32
|
||
\ 00000D 740C MOV A,#0xc
|
||
\ 00000F 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000012 12.... LCALL ?PUSH_XSTACK8_X_FOUR
|
||
\ 000015 12.... LCALL ?Subroutine51 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_76:
|
||
\ 000018 12.... LCALL ?DEALLOC_XSTACK8
|
||
\ 00001B 8A82 MOV DPL,R2
|
||
\ 00001D 8B83 MOV DPH,R3
|
||
1214
|
||
1215 *pBuf++ = ScanDuration;
|
||
\ 00001F EE MOV A,R6
|
||
\ 000020 F0 MOVX @DPTR,A
|
||
1216 *pBuf = StartIndex;
|
||
\ 000021 EF MOV A,R7
|
||
\ 000022 A3 INC DPTR
|
||
\ 000023 F0 MOVX @DPTR,A
|
||
1217
|
||
1218 return fillAndSend( &ZDP_TransID, dstAddr, Mgmt_NWK_Disc_req, len );
|
||
\ 000024 ; Setup parameters for call to function fillAndSend
|
||
\ 000024 75..30 MOV ?V2,#0x30
|
||
\ 000027 75..00 MOV ?V3,#0x0
|
||
\ 00002A 78.. MOV R0,#?V2
|
||
\ 00002C 12.... LCALL ?PUSH_XSTACK_I_TWO
|
||
\ 00002F 7906 MOV R1,#0x6
|
||
\ 000031 AC.. MOV R4,?V0
|
||
\ 000033 AD.. MOV R5,?V1
|
||
\ 000035 80.. SJMP ??Subroutine126_0
|
||
1219 }
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ??Subroutine126_0:
|
||
\ 000000 12.... LCALL ?Subroutine64 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_294:
|
||
\ 000003 REQUIRE ??Subroutine127_0
|
||
\ 000003 ; // Fall through to label ??Subroutine127_0
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine84:
|
||
\ 000000 90.... MOV DPTR,#ZDP_TmpBuf
|
||
\ 000003 REQUIRE ??Subroutine130_0
|
||
\ 000003 ; // Fall through to label ??Subroutine130_0
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine51:
|
||
\ 000000 12.... LCALL ?Subroutine84 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_236:
|
||
\ 000003 12.... LCALL `??osal_buffer_uint32::?relay`; Banked call to: osal_buffer_uint32
|
||
\ 000006 7404 MOV A,#0x4
|
||
\ 000008 22 RET
|
||
1220
|
||
1221 /*********************************************************************
|
||
1222 * @fn ZDP_MgmtDirectJoinReq
|
||
1223 *
|
||
1224 * @brief This builds and send a Mgmt_Direct_Join_req message. This
|
||
1225 * function sends a unicast message.
|
||
1226 *
|
||
1227 * @param dstAddr - destination address of the message
|
||
1228 * @param deviceAddr - 64 bit IEEE Address
|
||
1229 * @param SecurityEnable - Security Options
|
||
1230 *
|
||
1231 * @return afStatus_t
|
||
1232 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine0:
|
||
\ 000000 75..00 MOV ?V3,#0x0
|
||
\ 000003 78.. MOV R0,#?V2
|
||
\ 000005 12.... LCALL ?PUSH_XSTACK_I_TWO
|
||
\ 000008 7909 MOV R1,#0x9
|
||
\ 00000A EE MOV A,R6
|
||
\ 00000B FC MOV R4,A
|
||
\ 00000C EF MOV A,R7
|
||
\ 00000D FD MOV R5,A
|
||
\ 00000E REQUIRE ??Subroutine126_0
|
||
\ 00000E ; // Fall through to label ??Subroutine126_0
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
1233 afStatus_t ZDP_MgmtDirectJoinReq( zAddrType_t *dstAddr,
|
||
\ ZDP_MgmtDirectJoinReq:
|
||
1234 uint8 *deviceAddr,
|
||
1235 byte capInfo,
|
||
1236 byte SecurityEnable )
|
||
1237 {
|
||
\ 000000 REQUIRE ?V0
|
||
\ 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 12.... LCALL ?Subroutine35 & 0xFFFF
|
||
1238 (void)SecurityEnable; // Intentionally unreferenced parameter
|
||
1239
|
||
1240 osal_cpyExtAddr( ZDP_TmpBuf, deviceAddr );
|
||
1241 ZDP_TmpBuf[Z_EXTADDR_LEN] = capInfo;
|
||
\ ??CrossCallReturnLabel_230:
|
||
\ 000008 E5.. MOV A,?V0
|
||
\ 00000A F0 MOVX @DPTR,A
|
||
1242
|
||
1243 return fillAndSend( &ZDP_TransID, dstAddr, Mgmt_Direct_Join_req, (Z_EXTADDR_LEN + 1) );
|
||
\ 00000B ; Setup parameters for call to function fillAndSend
|
||
\ 00000B 75..35 MOV ?V2,#0x35
|
||
\ 00000E 80.. SJMP ?Subroutine0
|
||
1244 }
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine35:
|
||
\ 000000 EA MOV A,R2
|
||
\ 000001 FE MOV R6,A
|
||
\ 000002 EB MOV A,R3
|
||
\ 000003 FF MOV R7,A
|
||
\ 000004 89.. MOV ?V0,R1
|
||
\ 000006 ; Setup parameters for call to function sAddrExtCpy
|
||
\ 000006 ; Setup parameters for call to function sAddrExtCpy
|
||
\ 000006 12.... LCALL ?Subroutine84 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_235:
|
||
\ 000009 12.... LCALL `??sAddrExtCpy::?relay`; Banked call to: sAddrExtCpy
|
||
\ 00000C REQUIRE ??Subroutine129_0
|
||
\ 00000C ; // Fall through to label ??Subroutine129_0
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ??Subroutine129_0:
|
||
\ 000000 12.... LCALL ?Subroutine108 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_337:
|
||
\ 000003 C8 XCH A,R0
|
||
\ 000004 2408 ADD A,#0x8
|
||
\ 000006 F582 MOV DPL,A
|
||
\ 000008 E4 CLR A
|
||
\ 000009 38 ADDC A,R0
|
||
\ 00000A F583 MOV DPH,A
|
||
\ 00000C 22 RET
|
||
1245
|
||
1246 /*********************************************************************
|
||
1247 * @fn ZDP_MgmtPermitJoinReq
|
||
1248 *
|
||
1249 * @brief This builds and send a Mgmt_Permit_Join_req message.
|
||
1250 *
|
||
1251 * @param dstAddr - destination address of the message
|
||
1252 * @param duration - Permit duration
|
||
1253 * @param TcSignificance - Trust Center Significance
|
||
1254 *
|
||
1255 * @return afStatus_t
|
||
1256 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
1257 afStatus_t ZDP_MgmtPermitJoinReq( zAddrType_t *dstAddr, byte duration,
|
||
\ ZDP_MgmtPermitJoinReq:
|
||
1258 byte TcSignificance, byte SecurityEnable )
|
||
1259 {
|
||
\ 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
|
||
1260 (void)SecurityEnable; // Intentionally unreferenced parameter
|
||
1261
|
||
1262 // Build buffer
|
||
1263 ZDP_TmpBuf[ZDP_MGMT_PERMIT_JOIN_REQ_DURATION] = duration;
|
||
\ 000005 12.... LCALL ?Subroutine54 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_216:
|
||
\ 000008 E9 MOV A,R1
|
||
\ 000009 12.... LCALL ?Subroutine21 & 0xFFFF
|
||
1264 ZDP_TmpBuf[ZDP_MGMT_PERMIT_JOIN_REQ_TC_SIG] = TcSignificance;
|
||
\ ??CrossCallReturnLabel_27:
|
||
\ 00000C EC MOV A,R4
|
||
\ 00000D F0 MOVX @DPTR,A
|
||
1265
|
||
1266 // Send the message
|
||
1267 return fillAndSend( &ZDP_TransID, dstAddr, Mgmt_Permit_Join_req,
|
||
1268 ZDP_MGMT_PERMIT_JOIN_REQ_SIZE );
|
||
\ 00000E ; Setup parameters for call to function fillAndSend
|
||
\ 00000E 75..36 MOV ?V0,#0x36
|
||
\ 000011 02.... LJMP ?Subroutine1 & 0xFFFF
|
||
1269 }
|
||
1270
|
||
1271 /*********************************************************************
|
||
1272 * @fn ZDP_MgmtLeaveReq
|
||
1273 *
|
||
1274 * @brief This builds and send a Mgmt_Leave_req message.
|
||
1275 *
|
||
1276 * @param dstAddr - destination address of the message
|
||
1277 * IEEEAddr - IEEE adddress of device that is removed
|
||
1278 * RemoveChildren - set to 1 to remove the children of the
|
||
1279 * device as well. 0 otherwise.
|
||
1280 * Rejoin - set to 1 if the removed device should rejoin
|
||
1281 afterwards. 0 otherwise.
|
||
1282 *
|
||
1283 * @return afStatus_t
|
||
1284 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
1285 afStatus_t ZDP_MgmtLeaveReq( zAddrType_t *dstAddr, uint8 *IEEEAddr, uint8 RemoveChildren,
|
||
\ ZDP_MgmtLeaveReq:
|
||
1286 uint8 Rejoin, uint8 SecurityEnable )
|
||
1287
|
||
1288 {
|
||
\ 000000 REQUIRE ?V0
|
||
\ 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 12.... LCALL ?Subroutine35 & 0xFFFF
|
||
1289 (void)SecurityEnable; // Intentionally unreferenced parameter
|
||
1290
|
||
1291 osal_cpyExtAddr( ZDP_TmpBuf, IEEEAddr );
|
||
1292 ZDP_TmpBuf[Z_EXTADDR_LEN] = 0;
|
||
\ ??CrossCallReturnLabel_231:
|
||
\ 000008 E4 CLR A
|
||
\ 000009 F0 MOVX @DPTR,A
|
||
1293
|
||
1294 if ( RemoveChildren == TRUE )
|
||
\ 00000A 04 INC A
|
||
\ 00000B 65.. XRL A,?V0
|
||
\ 00000D 7006 JNZ ??ZDP_MgmtLeaveReq_0
|
||
1295 {
|
||
1296 ZDP_TmpBuf[Z_EXTADDR_LEN] |= ZDP_MGMT_LEAVE_REQ_RC;
|
||
\ 00000F 12.... LCALL ??Subroutine129_0 & 0xFFFF
|
||
1297 }
|
||
\ ??CrossCallReturnLabel_232:
|
||
\ 000012 7440 MOV A,#0x40
|
||
\ 000014 F0 MOVX @DPTR,A
|
||
1298 if ( Rejoin == TRUE )
|
||
\ ??ZDP_MgmtLeaveReq_0:
|
||
\ 000015 740C MOV A,#0xc
|
||
\ 000017 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 00001A E0 MOVX A,@DPTR
|
||
\ 00001B 6401 XRL A,#0x1
|
||
\ 00001D 7007 JNZ ??ZDP_MgmtLeaveReq_1
|
||
1299 {
|
||
1300 ZDP_TmpBuf[Z_EXTADDR_LEN] |= ZDP_MGMT_LEAVE_REQ_REJOIN;
|
||
\ 00001F 12.... LCALL ??Subroutine129_0 & 0xFFFF
|
||
1301 }
|
||
\ ??CrossCallReturnLabel_233:
|
||
\ 000022 E0 MOVX A,@DPTR
|
||
\ 000023 D2E7 SETB 0xE0 /* A */.7
|
||
\ 000025 F0 MOVX @DPTR,A
|
||
1302
|
||
1303 return fillAndSend( &ZDP_TransID, dstAddr, Mgmt_Leave_req, (Z_EXTADDR_LEN + 1) );
|
||
\ ??ZDP_MgmtLeaveReq_1:
|
||
\ 000026 ; Setup parameters for call to function fillAndSend
|
||
\ 000026 75..34 MOV ?V2,#0x34
|
||
\ 000029 02.... LJMP ?Subroutine0 & 0xFFFF
|
||
1304 }
|
||
1305
|
||
1306 /*********************************************************************
|
||
1307 * @fn ZDP_MgmtNwkUpdateReq
|
||
1308 *
|
||
1309 * @brief This builds and send a Mgmt_NWK_Update_req message. This
|
||
1310 * function sends a unicast or broadcast message.
|
||
1311 *
|
||
1312 * @param dstAddr - destination address of the message
|
||
1313 * @param ChannelMask - 32 bit address bit map
|
||
1314 * @param ScanDuration - length of time to spend scanning each channel
|
||
1315 * @param ScanCount - number of energy scans to be conducted
|
||
1316 * @param NwkUpdateId - NWk Update Id value
|
||
1317 * @param NwkManagerAddr - NWK address for device with Network Manager
|
||
1318 * bit set in its Node Descriptor
|
||
1319 *
|
||
1320 * @return afStatus_t
|
||
1321 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
1322 afStatus_t ZDP_MgmtNwkUpdateReq( zAddrType_t *dstAddr,
|
||
\ ZDP_MgmtNwkUpdateReq:
|
||
1323 uint32 ChannelMask,
|
||
1324 uint8 ScanDuration,
|
||
1325 uint8 ScanCount,
|
||
1326 uint8 NwkUpdateId,
|
||
1327 uint16 NwkManagerAddr )
|
||
1328 {
|
||
\ 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
|
||
\ 000009 E9 MOV A,R1
|
||
\ 00000A FE MOV R6,A
|
||
\ 00000B 8C.. MOV ?V1,R4
|
||
\ 00000D ED MOV A,R5
|
||
\ 00000E FF MOV R7,A
|
||
1329 uint8 *pBuf = ZDP_TmpBuf;
|
||
1330 byte len = sizeof( uint32 ) + 1; // ChannelMask + ScanDuration
|
||
\ 00000F 75..05 MOV ?V0,#0x5
|
||
1331
|
||
1332 pBuf = osal_buffer_uint32( pBuf, ChannelMask );
|
||
\ 000012 ; Setup parameters for call to function osal_buffer_uint32
|
||
\ 000012 740E MOV A,#0xe
|
||
\ 000014 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000017 12.... LCALL ?PUSH_XSTACK8_X_FOUR
|
||
\ 00001A 12.... LCALL ?Subroutine51 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_77:
|
||
\ 00001D 12.... LCALL ?DEALLOC_XSTACK8
|
||
1333
|
||
1334 *pBuf++ = ScanDuration;
|
||
\ 000020 EE MOV A,R6
|
||
\ 000021 8A82 MOV DPL,R2
|
||
\ 000023 8B83 MOV DPH,R3
|
||
\ 000025 F0 MOVX @DPTR,A
|
||
1335
|
||
1336 if ( ScanDuration <= 0x05 )
|
||
\ 000026 C3 CLR C
|
||
\ 000027 9406 SUBB A,#0x6
|
||
\ 000029 500E JNC ??ZDP_MgmtNwkUpdateReq_0
|
||
1337 {
|
||
1338 // Request is to scan over channelMask
|
||
1339 len += sizeof( uint8 );
|
||
\ 00002B 75..06 MOV ?V0,#0x6
|
||
1340
|
||
1341 *pBuf++ = ScanCount;
|
||
\ 00002E A3 INC DPTR
|
||
\ 00002F E5.. MOV A,?V1
|
||
\ 000031 F0 MOVX @DPTR,A
|
||
\ 000032 EA MOV A,R2
|
||
\ 000033 2402 ADD A,#0x2
|
||
\ 000035 5026 JNC ??ZDP_MgmtNwkUpdateReq_1
|
||
\ 000037 8024 SJMP ??ZDP_MgmtNwkUpdateReq_1
|
||
1342 }
|
||
1343 else if ( ( ScanDuration == 0xFE ) || ( ScanDuration == 0xFF ) )
|
||
\ ??ZDP_MgmtNwkUpdateReq_0:
|
||
\ 000039 74FE MOV A,#-0x2
|
||
\ 00003B 6E XRL A,R6
|
||
\ 00003C 6005 JZ ??ZDP_MgmtNwkUpdateReq_2
|
||
\ 00003E 74FF MOV A,#-0x1
|
||
\ 000040 6E XRL A,R6
|
||
\ 000041 701A JNZ ??ZDP_MgmtNwkUpdateReq_1
|
||
1344 {
|
||
1345 // Request is to change Channel (0xFE) or apsChannelMask and NwkManagerAddr (0xFF)
|
||
1346 len += sizeof( uint8 );
|
||
\ ??ZDP_MgmtNwkUpdateReq_2:
|
||
\ 000043 75..06 MOV ?V0,#0x6
|
||
1347
|
||
1348 *pBuf++ = NwkUpdateId;
|
||
\ 000046 EF MOV A,R7
|
||
\ 000047 A3 INC DPTR
|
||
\ 000048 F0 MOVX @DPTR,A
|
||
1349
|
||
1350 if ( ScanDuration == 0xFF )
|
||
\ 000049 74FF MOV A,#-0x1
|
||
\ 00004B 6E XRL A,R6
|
||
\ 00004C 700F JNZ ??ZDP_MgmtNwkUpdateReq_1
|
||
1351 {
|
||
1352 len += sizeof( uint16 );
|
||
\ 00004E 75..08 MOV ?V0,#0x8
|
||
\ 000051 7412 MOV A,#0x12
|
||
\ 000053 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000056 12.... LCALL ?Subroutine30 & 0xFFFF
|
||
1353
|
||
1354 *pBuf++ = LO_UINT16( NwkManagerAddr );
|
||
1355 *pBuf++ = HI_UINT16( NwkManagerAddr );
|
||
1356 }
|
||
1357 }
|
||
\ ??CrossCallReturnLabel_36:
|
||
\ 000059 F0 MOVX @DPTR,A
|
||
\ 00005A EA MOV A,R2
|
||
\ 00005B 2404 ADD A,#0x4
|
||
1358
|
||
1359 return fillAndSend( &ZDP_TransID, dstAddr, Mgmt_NWK_Update_req, len );
|
||
\ ??ZDP_MgmtNwkUpdateReq_1:
|
||
\ 00005D ; Setup parameters for call to function fillAndSend
|
||
\ 00005D 75..38 MOV ?V2,#0x38
|
||
\ 000060 75..00 MOV ?V3,#0x0
|
||
\ 000063 78.. MOV R0,#?V2
|
||
\ 000065 12.... LCALL ?PUSH_XSTACK_I_TWO
|
||
\ 000068 A9.. MOV R1,?V0
|
||
\ 00006A 02.... LJMP ?Subroutine2 & 0xFFFF
|
||
1360 }
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine30:
|
||
\ 000000 12.... LCALL ?Subroutine80 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_134:
|
||
\ 000003 A3 INC DPTR
|
||
\ 000004 12.... LCALL ?Subroutine96 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_154:
|
||
\ 000007 A3 INC DPTR
|
||
\ 000008 22 RET
|
||
1361
|
||
1362
|
||
1363 /*********************************************************************
|
||
1364 * Network Management Responses
|
||
1365 */
|
||
1366
|
||
1367 /*********************************************************************
|
||
1368 * @fn ZDP_MgmtNwkDiscRsp
|
||
1369 *
|
||
1370 * @brief This builds and send a Mgmt_NWK_Disc_rsp message. This
|
||
1371 * function sends a unicast message.
|
||
1372 *
|
||
1373 * @param dstAddr - destination address of the message
|
||
1374 * @param Status - message status (ZDP_SUCCESS or other)
|
||
1375 * @param NetworkCount - Total number of networks found
|
||
1376 * @param StartIndex - Starting index within the reporting network
|
||
1377 * list
|
||
1378 * @param NetworkListCount - number of network lists included
|
||
1379 * in this message
|
||
1380 * @param NetworkList - List of network descriptors
|
||
1381 * @param SecurityEnable - Security Options
|
||
1382 *
|
||
1383 * @return afStatus_t
|
||
1384 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
1385 afStatus_t ZDP_MgmtNwkDiscRsp( byte TransSeq, zAddrType_t *dstAddr,
|
||
\ ZDP_MgmtNwkDiscRsp:
|
||
1386 byte Status,
|
||
1387 byte NetworkCount,
|
||
1388 byte StartIndex,
|
||
1389 byte NetworkListCount,
|
||
1390 networkDesc_t *NetworkList,
|
||
1391 byte SecurityEnable )
|
||
1392 {
|
||
\ 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: 4
|
||
\ 000005 74FC MOV A,#-0x4
|
||
\ 000007 12.... LCALL ?ALLOC_XSTACK8
|
||
\ 00000A 7401 MOV A,#0x1
|
||
\ 00000C 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 00000F E9 MOV A,R1
|
||
\ 000010 F0 MOVX @DPTR,A
|
||
\ 000011 7402 MOV A,#0x2
|
||
\ 000013 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000016 12.... LCALL ?Subroutine12 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_6:
|
||
\ 000019 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 00001C E0 MOVX A,@DPTR
|
||
\ 00001D F5.. MOV ?V3,A
|
||
1393 uint8 *buf;
|
||
1394 uint8 *pBuf;
|
||
1395 byte len = 1+1+1+1; // Status + NetworkCount + StartIndex + NetworkCountList.
|
||
1396 byte idx;
|
||
1397
|
||
1398 (void)SecurityEnable; // Intentionally unreferenced parameter
|
||
1399
|
||
1400 len += (NetworkListCount * ( ZDP_NETWORK_EXTENDED_DISCRIPTOR_SIZE - 2 ));
|
||
\ 00001F 75F00C MOV B,#0xc
|
||
\ 000022 A4 MUL AB
|
||
\ 000023 2404 ADD A,#0x4
|
||
\ 000025 F5.. MOV ?V6,A
|
||
1401
|
||
1402 buf = osal_mem_alloc( len+1 );
|
||
\ 000027 ; Setup parameters for call to function osal_mem_alloc
|
||
\ 000027 12.... LCALL ?Subroutine66 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_104:
|
||
\ 00002A 8A.. MOV ?V4,R2
|
||
\ 00002C 8B.. MOV ?V5,R3
|
||
1403 if ( buf == NULL )
|
||
\ 00002E EA MOV A,R2
|
||
\ 00002F 4B ORL A,R3
|
||
\ 000030 7005 JNZ ??ZDP_MgmtNwkDiscRsp_0
|
||
1404 {
|
||
1405 return afStatus_MEM_FAIL;
|
||
\ 000032 7910 MOV R1,#0x10
|
||
\ 000034 02.... LJMP ??CrossCallReturnLabel_269 & 0xFFFF
|
||
1406 }
|
||
1407
|
||
1408 pBuf = buf+1;
|
||
\ ??ZDP_MgmtNwkDiscRsp_0:
|
||
\ 000037 8A82 MOV DPL,R2
|
||
\ 000039 8B83 MOV DPH,R3
|
||
\ 00003B A3 INC DPTR
|
||
\ 00003C AE82 MOV R6,DPL
|
||
\ 00003E AF83 MOV R7,DPH
|
||
1409
|
||
1410 *pBuf++ = Status;
|
||
\ 000040 85..82 MOV DPL,?XSP + 0
|
||
\ 000043 85..83 MOV DPH,?XSP + 1
|
||
\ 000046 12.... LCALL ??Subroutine132_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_244:
|
||
\ 000049 F0 MOVX @DPTR,A
|
||
1411 *pBuf++ = NetworkCount;
|
||
\ 00004A A3 INC DPTR
|
||
\ 00004B E5.. MOV A,?V7
|
||
\ 00004D F0 MOVX @DPTR,A
|
||
1412 *pBuf++ = StartIndex;
|
||
\ 00004E 7414 MOV A,#0x14
|
||
\ 000050 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000053 12.... LCALL ?Subroutine40 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_57:
|
||
\ 000056 A3 INC DPTR
|
||
\ 000057 12.... LCALL ?Subroutine34 & 0xFFFF
|
||
1413 *pBuf++ = NetworkListCount;
|
||
\ ??CrossCallReturnLabel_42:
|
||
\ 00005A E5.. MOV A,?V3
|
||
\ 00005C F0 MOVX @DPTR,A
|
||
\ 00005D EE MOV A,R6
|
||
\ 00005E 2404 ADD A,#0x4
|
||
\ 000060 FE MOV R6,A
|
||
\ 000061 5001 JNC ??ZDP_MgmtNwkDiscRsp_1
|
||
\ 000063 0F INC R7
|
||
1414
|
||
1415 for ( idx = 0; idx < NetworkListCount; idx++ )
|
||
\ ??ZDP_MgmtNwkDiscRsp_1:
|
||
\ 000064 75..00 MOV ?V2,#0x0
|
||
\ 000067 7416 MOV A,#0x16
|
||
\ 000069 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 00006C 12.... LCALL ??Subroutine125_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_226:
|
||
\ 00006F 801A SJMP ??ZDP_MgmtNwkDiscRsp_2
|
||
1416 {
|
||
1417 osal_cpyExtAddr( pBuf, NetworkList->extendedPANID);
|
||
1418 pBuf += Z_EXTADDR_LEN;
|
||
1419
|
||
1420 *pBuf++ = NetworkList->logicalChannel; // LogicalChannel
|
||
1421 *pBuf = NetworkList->stackProfile; // Stack profile
|
||
1422 *pBuf++ |= (byte)(NetworkList->version << 4); // ZigBee Version
|
||
1423 *pBuf = BEACON_ORDER_NO_BEACONS; // Beacon Order
|
||
1424 *pBuf++ |= (uint8)(BEACON_ORDER_NO_BEACONS << 4); // Superframe Order
|
||
1425
|
||
1426 if ( NetworkList->chosenRouter != INVALID_NODE_ADDR )
|
||
1427 {
|
||
1428 *pBuf++ = TRUE; // Permit Joining
|
||
1429 }
|
||
1430 else
|
||
1431 {
|
||
1432 *pBuf++ = FALSE;
|
||
\ ??ZDP_MgmtNwkDiscRsp_3:
|
||
\ 000071 12.... LCALL ?Subroutine74 & 0xFFFF
|
||
1433 }
|
||
\ ??CrossCallReturnLabel_122:
|
||
\ 000074 E4 CLR A
|
||
\ 000075 F0 MOVX @DPTR,A
|
||
\ 000076 EE MOV A,R6
|
||
\ 000077 240C ADD A,#0xc
|
||
\ 000079 FE MOV R6,A
|
||
\ 00007A 5001 JNC ??ZDP_MgmtNwkDiscRsp_4
|
||
\ 00007C 0F INC R7
|
||
1434
|
||
1435 NetworkList = NetworkList->nextDesc; // Move to next list entry
|
||
\ ??ZDP_MgmtNwkDiscRsp_4:
|
||
\ 00007D E5.. MOV A,?V0
|
||
\ 00007F 2414 ADD A,#0x14
|
||
\ 000081 F582 MOV DPL,A
|
||
\ 000083 E4 CLR A
|
||
\ 000084 35.. ADDC A,?V1
|
||
\ 000086 12.... LCALL ?Subroutine43 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_228:
|
||
\ 000089 05.. INC ?V2
|
||
\ ??ZDP_MgmtNwkDiscRsp_2:
|
||
\ 00008B E5.. MOV A,?V2
|
||
\ 00008D C3 CLR C
|
||
\ 00008E 95.. SUBB A,?V3
|
||
\ 000090 5075 JNC ??ZDP_MgmtNwkDiscRsp_5
|
||
\ 000092 ; Setup parameters for call to function sAddrExtCpy
|
||
\ 000092 E5.. MOV A,?V0
|
||
\ 000094 240B ADD A,#0xb
|
||
\ 000096 FC MOV R4,A
|
||
\ 000097 E4 CLR A
|
||
\ 000098 35.. ADDC A,?V1
|
||
\ 00009A FD MOV R5,A
|
||
\ 00009B EE MOV A,R6
|
||
\ 00009C FA MOV R2,A
|
||
\ 00009D EF MOV A,R7
|
||
\ 00009E FB MOV R3,A
|
||
\ 00009F 12.... LCALL `??sAddrExtCpy::?relay`; Banked call to: sAddrExtCpy
|
||
\ 0000A2 85..82 MOV DPL,?V0
|
||
\ 0000A5 85..83 MOV DPH,?V1
|
||
\ 0000A8 A3 INC DPTR
|
||
\ 0000A9 A3 INC DPTR
|
||
\ 0000AA 12.... LCALL ?Subroutine40 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_58:
|
||
\ 0000AD A3 INC DPTR
|
||
\ 0000AE A3 INC DPTR
|
||
\ 0000AF A3 INC DPTR
|
||
\ 0000B0 A3 INC DPTR
|
||
\ 0000B1 A3 INC DPTR
|
||
\ 0000B2 A3 INC DPTR
|
||
\ 0000B3 A3 INC DPTR
|
||
\ 0000B4 F0 MOVX @DPTR,A
|
||
\ 0000B5 EE MOV A,R6
|
||
\ 0000B6 2409 ADD A,#0x9
|
||
\ 0000B8 F8 MOV R0,A
|
||
\ 0000B9 E4 CLR A
|
||
\ 0000BA 3F ADDC A,R7
|
||
\ 0000BB F9 MOV R1,A
|
||
\ 0000BC 85..82 MOV DPL,?V0
|
||
\ 0000BF 85..83 MOV DPH,?V1
|
||
\ 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 12.... LCALL ?Subroutine63 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_98:
|
||
\ 0000CB 12.... LCALL ?Subroutine26 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_32:
|
||
\ 0000CE A3 INC DPTR
|
||
\ 0000CF A3 INC DPTR
|
||
\ 0000D0 E0 MOVX A,@DPTR
|
||
\ 0000D1 C4 SWAP A
|
||
\ 0000D2 54F0 ANL A,#0xf0
|
||
\ 0000D4 FA MOV R2,A
|
||
\ 0000D5 8882 MOV DPL,R0
|
||
\ 0000D7 8983 MOV DPH,R1
|
||
\ 0000D9 E0 MOVX A,@DPTR
|
||
\ 0000DA 4A ORL A,R2
|
||
\ 0000DB 12.... LCALL ?Subroutine34 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_43:
|
||
\ 0000DE A3 INC DPTR
|
||
\ 0000DF A3 INC DPTR
|
||
\ 0000E0 A3 INC DPTR
|
||
\ 0000E1 A3 INC DPTR
|
||
\ 0000E2 A3 INC DPTR
|
||
\ 0000E3 A3 INC DPTR
|
||
\ 0000E4 A3 INC DPTR
|
||
\ 0000E5 74FF MOV A,#-0x1
|
||
\ 0000E7 12.... LCALL ?Subroutine17 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_21:
|
||
\ 0000EA E0 MOVX A,@DPTR
|
||
\ 0000EB 64FE XRL A,#0xfe
|
||
\ 0000ED 7003 JNZ ??ZDP_MgmtNwkDiscRsp_6
|
||
\ 0000EF A3 INC DPTR
|
||
\ 0000F0 E0 MOVX A,@DPTR
|
||
\ 0000F1 F4 CPL A
|
||
\ ??ZDP_MgmtNwkDiscRsp_6:
|
||
\ 0000F2 7003 JNZ $+5
|
||
\ 0000F4 02.... LJMP ??ZDP_MgmtNwkDiscRsp_3 & 0xFFFF
|
||
\ 0000F7 12.... LCALL ?Subroutine74 & 0xFFFF
|
||
1436 }
|
||
\ ??CrossCallReturnLabel_123:
|
||
\ 0000FA 7401 MOV A,#0x1
|
||
\ 0000FC F0 MOVX @DPTR,A
|
||
\ 0000FD EE MOV A,R6
|
||
\ 0000FE 240C ADD A,#0xc
|
||
\ 000100 FE MOV R6,A
|
||
\ 000101 5001 JNC ??ZDP_MgmtNwkDiscRsp_7
|
||
\ 000103 0F INC R7
|
||
\ ??ZDP_MgmtNwkDiscRsp_7:
|
||
\ 000104 02.... LJMP ??ZDP_MgmtNwkDiscRsp_4 & 0xFFFF
|
||
1437
|
||
1438 FillAndSendBuffer( &TransSeq, dstAddr, Mgmt_NWK_Disc_rsp, len, buf );
|
||
\ ??ZDP_MgmtNwkDiscRsp_5:
|
||
\ 000107 85..82 MOV DPL,?V4
|
||
\ 00010A 85..83 MOV DPH,?V5
|
||
\ 00010D 12.... LCALL ??Subroutine133_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_255:
|
||
\ 000110 ; Setup parameters for call to function fillAndSend
|
||
\ 000110 75..30 MOV ?V0,#0x30
|
||
\ 000113 75..80 MOV ?V1,#-0x80
|
||
\ 000116 78.. MOV R0,#?V0
|
||
\ 000118 12.... LCALL ?PUSH_XSTACK_I_TWO
|
||
\ 00011B A9.. MOV R1,?V6
|
||
\ 00011D 7404 MOV A,#0x4
|
||
\ 00011F 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000122 12.... LCALL ?Subroutine50 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_73:
|
||
\ 000125 7403 MOV A,#0x3
|
||
\ 000127 12.... LCALL ?XSTACK_DISP101_8
|
||
\ 00012A 12.... LCALL ??Subroutine140_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_303:
|
||
\ 00012D 12.... LCALL ?DEALLOC_XSTACK8
|
||
\ 000130 E9 MOV A,R1
|
||
\ 000131 FE MOV R6,A
|
||
\ 000132 ; Setup parameters for call to function osal_mem_free
|
||
\ 000132 AA.. MOV R2,?V4
|
||
\ 000134 AB.. MOV R3,?V5
|
||
\ 000136 12.... LCALL ??Subroutine136_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_269:
|
||
\ 000139 REQUIRE ?Subroutine7
|
||
\ 000139 ; // Fall through to label ?Subroutine7
|
||
1439 }
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine7:
|
||
\ 000000 7404 MOV A,#0x4
|
||
\ 000002 02.... LJMP ??Subroutine138_0 & 0xFFFF
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine34:
|
||
\ 000000 F0 MOVX @DPTR,A
|
||
\ 000001 8E82 MOV DPL,R6
|
||
\ 000003 8F83 MOV DPH,R7
|
||
\ 000005 A3 INC DPTR
|
||
\ 000006 A3 INC DPTR
|
||
\ 000007 A3 INC DPTR
|
||
\ 000008 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ??Subroutine133_0:
|
||
\ 000000 A3 INC DPTR
|
||
\ 000001 A882 MOV R0,DPL
|
||
\ 000003 A983 MOV R1,DPH
|
||
\ 000005 90.... MOV DPTR,#ZDP_TmpBuf
|
||
\ 000008 REQUIRE ??Subroutine134_0
|
||
\ 000008 ; // Fall through to label ??Subroutine134_0
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine26:
|
||
\ 000000 12.... LCALL ?Subroutine92 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_147:
|
||
\ 000003 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ??Subroutine136_0:
|
||
\ 000000 12.... LCALL ?Subroutine100 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_270:
|
||
\ 000003 EE MOV A,R6
|
||
\ 000004 F9 MOV R1,A
|
||
\ 000005 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine66:
|
||
\ 000000 12.... LCALL ?Subroutine99 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_159:
|
||
\ 000003 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine99:
|
||
\ 000000 2401 ADD A,#0x1
|
||
\ 000002 FA MOV R2,A
|
||
\ 000003 E4 CLR A
|
||
\ 000004 3400 ADDC A,#0x0
|
||
\ 000006 FB MOV R3,A
|
||
\ 000007 12.... LCALL `??osal_mem_alloc::?relay`; Banked call to: osal_mem_alloc
|
||
\ 00000A 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine63:
|
||
\ 000000 12.... LCALL ?Subroutine103 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_168:
|
||
\ 000003 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine12:
|
||
\ 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 EC MOV A,R4
|
||
\ 000006 85..82 MOV DPL,?XSP + 0
|
||
\ 000009 85..83 MOV DPH,?XSP + 1
|
||
\ 00000C F0 MOVX @DPTR,A
|
||
\ 00000D 8D.. MOV ?V7,R5
|
||
\ 00000F 7415 MOV A,#0x15
|
||
\ 000011 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine100:
|
||
\ 000000 12.... LCALL `??osal_mem_free::?relay`; Banked call to: osal_mem_free
|
||
\ 000003 90.... MOV DPTR,#ZDP_TmpBuf
|
||
\ 000006 74.. MOV A,#(ZDP_Buf + 1) & 0xff
|
||
\ 000008 F0 MOVX @DPTR,A
|
||
\ 000009 A3 INC DPTR
|
||
\ 00000A 74.. MOV A,#((ZDP_Buf + 1) >> 8) & 0xff
|
||
\ 00000C F0 MOVX @DPTR,A
|
||
\ 00000D 22 RET
|
||
1440
|
||
1441 /*********************************************************************
|
||
1442 * @fn ZDP_MgmtLqiRsp
|
||
1443 *
|
||
1444 * @brief This builds and send a Mgmt_Lqi_rsp message. This
|
||
1445 * function sends a unicast message.
|
||
1446 *
|
||
1447 * @param dstAddr - destination address of the message
|
||
1448 * @param Status - message status (ZDP_SUCCESS or other)
|
||
1449 * @param NeighborLqiEntries - Total number of entries found
|
||
1450 * @param StartIndex - Starting index within the reporting list
|
||
1451 * @param NeighborLqiCount - number of lists included
|
||
1452 * in this message
|
||
1453 * @param NeighborLqiList - List of NeighborLqiItems. This list
|
||
1454 * is the list to be sent, not the entire list
|
||
1455 * @param SecurityEnable - true if secure
|
||
1456 *
|
||
1457 * @return ZStatus_t
|
||
1458 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine20:
|
||
\ 000000 85..82 MOV DPL,?V2
|
||
\ 000003 85..83 MOV DPH,?V3
|
||
\ 000006 REQUIRE ??Subroutine133_0
|
||
\ 000006 ; // Fall through to label ??Subroutine133_0
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
1459 ZStatus_t ZDP_MgmtLqiRsp( byte TransSeq, zAddrType_t *dstAddr,
|
||
\ ZDP_MgmtLqiRsp:
|
||
1460 byte Status,
|
||
1461 byte NeighborLqiEntries,
|
||
1462 byte StartIndex,
|
||
1463 byte NeighborLqiCount,
|
||
1464 ZDP_MgmtLqiItem_t* NeighborList,
|
||
1465 byte SecurityEnable )
|
||
1466 {
|
||
\ 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: 4
|
||
\ 000005 74FC MOV A,#-0x4
|
||
\ 000007 12.... LCALL ?ALLOC_XSTACK8
|
||
\ 00000A E9 MOV A,R1
|
||
\ 00000B 85..82 MOV DPL,?XSP + 0
|
||
\ 00000E 85..83 MOV DPH,?XSP + 1
|
||
\ 000011 F0 MOVX @DPTR,A
|
||
\ 000012 7402 MOV A,#0x2
|
||
\ 000014 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000017 12.... LCALL ??Subroutine142_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_314:
|
||
\ 00001A 7401 MOV A,#0x1
|
||
\ 00001C 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 00001F ED MOV A,R5
|
||
\ 000020 F0 MOVX @DPTR,A
|
||
1467 ZDP_MgmtLqiItem_t* list = NeighborList;
|
||
\ 000021 7416 MOV A,#0x16
|
||
\ 000023 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000026 12.... LCALL ??Subroutine135_0 & 0xFFFF
|
||
1468 uint8 *buf, *pBuf;
|
||
1469 byte len, x;
|
||
1470
|
||
1471 (void)SecurityEnable; // Intentionally unreferenced parameter
|
||
1472
|
||
1473 if ( ZSuccess != Status )
|
||
\ ??CrossCallReturnLabel_262:
|
||
\ 000029 EC MOV A,R4
|
||
\ 00002A 6026 JZ ??ZDP_MgmtLqiRsp_0
|
||
1474 {
|
||
1475 ZDP_TmpBuf[0] = Status;
|
||
\ 00002C 12.... LCALL ?Subroutine54 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_217:
|
||
\ 00002F EC MOV A,R4
|
||
\ 000030 F0 MOVX @DPTR,A
|
||
1476 return fillAndSend( &TransSeq, dstAddr, Mgmt_Lqi_rsp, 1 );
|
||
\ 000031 ; Setup parameters for call to function fillAndSend
|
||
\ 000031 75..31 MOV ?V0,#0x31
|
||
\ 000034 75..80 MOV ?V1,#-0x80
|
||
\ 000037 78.. MOV R0,#?V0
|
||
\ 000039 12.... LCALL ?PUSH_XSTACK_I_TWO
|
||
\ 00003C 7901 MOV R1,#0x1
|
||
\ 00003E 7404 MOV A,#0x4
|
||
\ 000040 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000043 12.... LCALL ?Subroutine49 & 0xFFFF
|
||
1477 }
|
||
\ ??CrossCallReturnLabel_68:
|
||
\ 000046 12.... LCALL ?XSTACK_DISP101_8
|
||
\ 000049 12.... LCALL ??Subroutine140_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_304:
|
||
\ 00004C 12.... LCALL ?DEALLOC_XSTACK8
|
||
\ 00004F 02.... LJMP ??CrossCallReturnLabel_267 & 0xFFFF
|
||
\ ??ZDP_MgmtLqiRsp_0:
|
||
\ 000052 7415 MOV A,#0x15
|
||
\ 000054 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000057 E0 MOVX A,@DPTR
|
||
\ 000058 F5.. MOV ?V5,A
|
||
1478
|
||
1479 // (Status + NeighborLqiEntries + StartIndex + NeighborLqiCount) +
|
||
1480 // neighbor LQI data.
|
||
1481 len = (1 + 1 + 1 + 1) + (NeighborLqiCount * ZDP_MGMTLQI_EXTENDED_SIZE);
|
||
\ 00005A 75F016 MOV B,#0x16
|
||
\ 00005D A4 MUL AB
|
||
\ 00005E 2404 ADD A,#0x4
|
||
\ 000060 F5.. MOV ?V6,A
|
||
1482
|
||
1483 buf = osal_mem_alloc( len+1 );
|
||
\ 000062 ; Setup parameters for call to function osal_mem_alloc
|
||
\ 000062 12.... LCALL ?Subroutine65 & 0xFFFF
|
||
1484 if ( buf == NULL )
|
||
\ ??CrossCallReturnLabel_102:
|
||
\ 000065 7005 JNZ ??ZDP_MgmtLqiRsp_1
|
||
1485 {
|
||
1486 return afStatus_MEM_FAIL;
|
||
\ 000067 7910 MOV R1,#0x10
|
||
\ 000069 02.... LJMP ??CrossCallReturnLabel_267 & 0xFFFF
|
||
1487 }
|
||
1488
|
||
1489 pBuf = buf+1;
|
||
\ ??ZDP_MgmtLqiRsp_1:
|
||
\ 00006C 8A82 MOV DPL,R2
|
||
\ 00006E 8B83 MOV DPH,R3
|
||
\ 000070 A3 INC DPTR
|
||
\ 000071 8582.. MOV ?V0,DPL
|
||
\ 000074 8583.. MOV ?V1,DPH
|
||
1490
|
||
1491 *pBuf++ = Status;
|
||
\ 000077 E4 CLR A
|
||
\ 000078 F0 MOVX @DPTR,A
|
||
1492 *pBuf++ = NeighborLqiEntries;
|
||
\ 000079 04 INC A
|
||
\ 00007A 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 00007D 12.... LCALL ?Subroutine57 & 0xFFFF
|
||
1493 *pBuf++ = StartIndex;
|
||
\ ??CrossCallReturnLabel_85:
|
||
\ 000080 7414 MOV A,#0x14
|
||
\ 000082 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000085 12.... LCALL ?Subroutine90 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_142:
|
||
\ 000088 A3 INC DPTR
|
||
\ 000089 12.... LCALL ?Subroutine26 & 0xFFFF
|
||
1494 *pBuf++ = NeighborLqiCount;
|
||
\ ??CrossCallReturnLabel_33:
|
||
\ 00008C E5.. MOV A,?V5
|
||
\ 00008E F0 MOVX @DPTR,A
|
||
\ 00008F E5.. MOV A,?V0
|
||
\ 000091 2404 ADD A,#0x4
|
||
\ 000093 F5.. MOV ?V0,A
|
||
\ 000095 5002 JNC ??ZDP_MgmtLqiRsp_2
|
||
\ 000097 05.. INC ?V1
|
||
1495
|
||
1496 for ( x = 0; x < NeighborLqiCount; x++ )
|
||
\ ??ZDP_MgmtLqiRsp_2:
|
||
\ 000099 75..00 MOV ?V4,#0x0
|
||
\ 00009C 02.... LJMP ??ZDP_MgmtLqiRsp_3 & 0xFFFF
|
||
1497 {
|
||
1498 osal_cpyExtAddr( pBuf, list->extPanID); // Extended PanID
|
||
\ ??ZDP_MgmtLqiRsp_4:
|
||
\ 00009F ; Setup parameters for call to function sAddrExtCpy
|
||
\ 00009F EE MOV A,R6
|
||
\ 0000A0 2402 ADD A,#0x2
|
||
\ 0000A2 FC MOV R4,A
|
||
\ 0000A3 E4 CLR A
|
||
\ 0000A4 3F ADDC A,R7
|
||
\ 0000A5 FD MOV R5,A
|
||
\ 0000A6 AA.. MOV R2,?V0
|
||
\ 0000A8 AB.. MOV R3,?V1
|
||
\ 0000AA 12.... LCALL `??sAddrExtCpy::?relay`; Banked call to: sAddrExtCpy
|
||
1499 pBuf += Z_EXTADDR_LEN;
|
||
1500
|
||
1501 // EXTADDR
|
||
1502 pBuf = osal_cpyExtAddr( pBuf, list->extAddr );
|
||
\ 0000AD ; Setup parameters for call to function sAddrExtCpy
|
||
\ 0000AD EE MOV A,R6
|
||
\ 0000AE 240A ADD A,#0xa
|
||
\ 0000B0 FC MOV R4,A
|
||
\ 0000B1 E4 CLR A
|
||
\ 0000B2 3F ADDC A,R7
|
||
\ 0000B3 FD MOV R5,A
|
||
\ 0000B4 E5.. MOV A,?V0
|
||
\ 0000B6 2408 ADD A,#0x8
|
||
\ 0000B8 FA MOV R2,A
|
||
\ 0000B9 E4 CLR A
|
||
\ 0000BA 35.. ADDC A,?V1
|
||
\ 0000BC FB MOV R3,A
|
||
\ 0000BD 12.... LCALL `??sAddrExtCpy::?relay`; Banked call to: sAddrExtCpy
|
||
\ 0000C0 8A.. MOV ?V0,R2
|
||
\ 0000C2 8B.. MOV ?V1,R3
|
||
\ 0000C4 A8.. MOV R0,?V0
|
||
\ 0000C6 A9.. MOV R1,?V1
|
||
1503
|
||
1504 // NWKADDR
|
||
1505 *pBuf++ = LO_UINT16( list->nwkAddr );
|
||
\ 0000C8 EE MOV A,R6
|
||
\ 0000C9 2412 ADD A,#0x12
|
||
\ 0000CB 12.... LCALL ?Subroutine9 & 0xFFFF
|
||
1506 *pBuf++ = HI_UINT16( list->nwkAddr );
|
||
1507
|
||
1508 // DEVICETYPE
|
||
1509 *pBuf = list->devType;
|
||
\ ??CrossCallReturnLabel_272:
|
||
\ 0000CE E4 CLR A
|
||
\ 0000CF 39 ADDC A,R1
|
||
\ 0000D0 FB MOV R3,A
|
||
\ 0000D1 EE MOV A,R6
|
||
\ 0000D2 2414 ADD A,#0x14
|
||
\ 0000D4 F582 MOV DPL,A
|
||
\ 0000D6 E4 CLR A
|
||
\ 0000D7 3F ADDC A,R7
|
||
\ 0000D8 F583 MOV DPH,A
|
||
\ 0000DA 12.... LCALL ?Subroutine38 & 0xFFFF
|
||
1510
|
||
1511 // RXONIDLE
|
||
1512 *pBuf |= (uint8)(list->rxOnIdle << 2);
|
||
\ ??CrossCallReturnLabel_49:
|
||
\ 0000DD EE MOV A,R6
|
||
\ 0000DE 2415 ADD A,#0x15
|
||
\ 0000E0 F582 MOV DPL,A
|
||
\ 0000E2 E4 CLR A
|
||
\ 0000E3 3F ADDC A,R7
|
||
\ 0000E4 F583 MOV DPH,A
|
||
\ 0000E6 E0 MOVX A,@DPTR
|
||
\ 0000E7 33 RLC A
|
||
\ 0000E8 33 RLC A
|
||
\ 0000E9 54FC ANL A,#0xfc
|
||
\ 0000EB FC MOV R4,A
|
||
\ 0000EC 8A82 MOV DPL,R2
|
||
\ 0000EE 8B83 MOV DPH,R3
|
||
\ 0000F0 E0 MOVX A,@DPTR
|
||
\ 0000F1 4C ORL A,R4
|
||
\ 0000F2 F0 MOVX @DPTR,A
|
||
1513
|
||
1514 // RELATIONSHIP
|
||
1515 *pBuf++ |= (uint8)(list->relation << 4);
|
||
\ 0000F3 EE MOV A,R6
|
||
\ 0000F4 2416 ADD A,#0x16
|
||
\ 0000F6 F582 MOV DPL,A
|
||
\ 0000F8 E4 CLR A
|
||
\ 0000F9 3F ADDC A,R7
|
||
\ 0000FA F583 MOV DPH,A
|
||
\ 0000FC E0 MOVX A,@DPTR
|
||
\ 0000FD C4 SWAP A
|
||
\ 0000FE 54F0 ANL A,#0xf0
|
||
\ 000100 FC MOV R4,A
|
||
\ 000101 8A82 MOV DPL,R2
|
||
\ 000103 8B83 MOV DPH,R3
|
||
\ 000105 E0 MOVX A,@DPTR
|
||
\ 000106 4C ORL A,R4
|
||
\ 000107 F0 MOVX @DPTR,A
|
||
1516
|
||
1517 // PERMITJOINING
|
||
1518 *pBuf++ = (uint8)(list->permit);
|
||
\ 000108 EE MOV A,R6
|
||
\ 000109 2417 ADD A,#0x17
|
||
\ 00010B 12.... LCALL ?Subroutine62 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_96:
|
||
\ 00010E F0 MOVX @DPTR,A
|
||
1519
|
||
1520 // DEPTH
|
||
1521 *pBuf++ = list->depth;
|
||
\ 00010F EE MOV A,R6
|
||
\ 000110 2418 ADD A,#0x18
|
||
\ 000112 F582 MOV DPL,A
|
||
\ 000114 E4 CLR A
|
||
\ 000115 3F ADDC A,R7
|
||
\ 000116 F583 MOV DPH,A
|
||
\ 000118 12.... LCALL ?Subroutine55 & 0xFFFF
|
||
1522
|
||
1523 // LQI
|
||
1524 *pBuf++ = list->lqi;
|
||
\ ??CrossCallReturnLabel_80:
|
||
\ 00011B EE MOV A,R6
|
||
\ 00011C 2419 ADD A,#0x19
|
||
\ 00011E 12.... LCALL ?Subroutine62 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_97:
|
||
\ 000121 A3 INC DPTR
|
||
\ 000122 A3 INC DPTR
|
||
\ 000123 F0 MOVX @DPTR,A
|
||
\ 000124 E8 MOV A,R0
|
||
\ 000125 2406 ADD A,#0x6
|
||
\ 000127 F5.. MOV ?V0,A
|
||
\ 000129 E4 CLR A
|
||
\ 00012A 39 ADDC A,R1
|
||
\ 00012B F5.. MOV ?V1,A
|
||
1525
|
||
1526 list++; // next list entry
|
||
\ 00012D EE MOV A,R6
|
||
\ 00012E 241A ADD A,#0x1a
|
||
\ 000130 FE MOV R6,A
|
||
\ 000131 5001 JNC ??ZDP_MgmtLqiRsp_5
|
||
\ 000133 0F INC R7
|
||
1527 }
|
||
\ ??ZDP_MgmtLqiRsp_5:
|
||
\ 000134 05.. INC ?V4
|
||
\ ??ZDP_MgmtLqiRsp_3:
|
||
\ 000136 E5.. MOV A,?V4
|
||
\ 000138 C3 CLR C
|
||
\ 000139 95.. SUBB A,?V5
|
||
\ 00013B 5003 JNC $+5
|
||
\ 00013D 02.... LJMP ??ZDP_MgmtLqiRsp_4 & 0xFFFF
|
||
1528
|
||
1529 FillAndSendBuffer( &TransSeq, dstAddr, Mgmt_Lqi_rsp, len, buf );
|
||
\ 000140 12.... LCALL ?Subroutine20 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_258:
|
||
\ 000143 ; Setup parameters for call to function fillAndSend
|
||
\ 000143 75..31 MOV ?V0,#0x31
|
||
\ 000146 75..80 MOV ?V1,#-0x80
|
||
\ 000149 78.. MOV R0,#?V0
|
||
\ 00014B 12.... LCALL ?PUSH_XSTACK_I_TWO
|
||
\ 00014E A9.. MOV R1,?V6
|
||
\ 000150 7404 MOV A,#0x4
|
||
\ 000152 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000155 12.... LCALL ?Subroutine49 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_69:
|
||
\ 000158 12.... LCALL ?XSTACK_DISP101_8
|
||
\ 00015B 12.... LCALL ??Subroutine140_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_305:
|
||
\ 00015E 12.... LCALL ?DEALLOC_XSTACK8
|
||
\ 000161 12.... LCALL ?Subroutine24 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_267:
|
||
\ 000164 02.... LJMP ?Subroutine7 & 0xFFFF
|
||
1530 }
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine62:
|
||
\ 000000 F582 MOV DPL,A
|
||
\ 000002 E4 CLR A
|
||
\ 000003 3F ADDC A,R7
|
||
\ 000004 F583 MOV DPH,A
|
||
\ 000006 12.... LCALL ?Subroutine88 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_141:
|
||
\ 000009 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine88:
|
||
\ 000000 12.... LCALL ?Subroutine103 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_169:
|
||
\ 000003 A3 INC DPTR
|
||
\ 000004 A3 INC DPTR
|
||
\ 000005 A3 INC DPTR
|
||
\ 000006 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine24:
|
||
\ 000000 E9 MOV A,R1
|
||
\ 000001 FE MOV R6,A
|
||
\ 000002 ; Setup parameters for call to function osal_mem_free
|
||
\ 000002 ; Setup parameters for call to function osal_mem_free
|
||
\ 000002 AA.. MOV R2,?V2
|
||
\ 000004 AB.. MOV R3,?V3
|
||
\ 000006 REQUIRE ??Subroutine136_0
|
||
\ 000006 ; // Fall through to label ??Subroutine136_0
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine9:
|
||
\ 000000 FC MOV R4,A
|
||
\ 000001 E4 CLR A
|
||
\ 000002 3F ADDC A,R7
|
||
\ 000003 FD MOV R5,A
|
||
\ 000004 8C82 MOV DPL,R4
|
||
\ 000006 F583 MOV DPH,A
|
||
\ 000008 REQUIRE ??Subroutine137_0
|
||
\ 000008 ; // Fall through to label ??Subroutine137_0
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine55:
|
||
\ 000000 12.... LCALL ?Subroutine88 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_140:
|
||
\ 000003 A3 INC DPTR
|
||
\ 000004 F0 MOVX @DPTR,A
|
||
\ 000005 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine49:
|
||
\ 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 7402 MOV A,#0x2
|
||
\ 000007 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine65:
|
||
\ 000000 12.... LCALL ?Subroutine99 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_160:
|
||
\ 000003 8A.. MOV ?V2,R2
|
||
\ 000005 8B.. MOV ?V3,R3
|
||
\ 000007 EA MOV A,R2
|
||
\ 000008 4B ORL A,R3
|
||
\ 000009 22 RET
|
||
1531
|
||
1532 /*********************************************************************
|
||
1533 * @fn ZDP_MgmtRtgRsp
|
||
1534 *
|
||
1535 * @brief This builds and send a Mgmt_Rtg_rsp message. This
|
||
1536 * function sends a unicast message.
|
||
1537 *
|
||
1538 * @param dstAddr - destination address of the message
|
||
1539 * @param Status - message status (ZDP_SUCCESS or other)
|
||
1540 * @param RoutingTableEntries - Total number of entries
|
||
1541 * @param StartIndex - Starting index within the reporting list
|
||
1542 * @param RoutingTableListCount - number of entries included
|
||
1543 * in this message
|
||
1544 * @param RoutingTableList - List of Routing Table entries
|
||
1545 * @param SecurityEnable - true to enable security for this message
|
||
1546 *
|
||
1547 * @return ZStatus_t
|
||
1548 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
1549 ZStatus_t ZDP_MgmtRtgRsp( byte TransSeq, zAddrType_t *dstAddr,
|
||
\ ZDP_MgmtRtgRsp:
|
||
1550 byte Status,
|
||
1551 byte RoutingTableEntries,
|
||
1552 byte StartIndex,
|
||
1553 byte RoutingListCount,
|
||
1554 rtgItem_t *RoutingTableList,
|
||
1555 byte SecurityEnable )
|
||
1556 {
|
||
\ 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: 3
|
||
\ 000005 74FD MOV A,#-0x3
|
||
\ 000007 12.... LCALL ?ALLOC_XSTACK8
|
||
\ 00000A E9 MOV A,R1
|
||
\ 00000B 85..82 MOV DPL,?XSP + 0
|
||
\ 00000E 85..83 MOV DPH,?XSP + 1
|
||
\ 000011 F0 MOVX @DPTR,A
|
||
\ 000012 7401 MOV A,#0x1
|
||
\ 000014 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000017 12.... LCALL ??Subroutine142_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_315:
|
||
\ 00001A 8C.. MOV ?V7,R4
|
||
\ 00001C 8D.. MOV ?V6,R5
|
||
\ 00001E 7414 MOV A,#0x14
|
||
\ 000020 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000023 E0 MOVX A,@DPTR
|
||
\ 000024 F5.. MOV ?V0,A
|
||
1557 uint8 *buf;
|
||
1558 uint8 *pBuf;
|
||
1559 // Status + RoutingTableEntries + StartIndex + RoutingListCount.
|
||
1560 byte len = 1 + 1 + 1 + 1;
|
||
1561 byte x;
|
||
1562
|
||
1563 (void)SecurityEnable; // Intentionally unreferenced parameter
|
||
1564
|
||
1565 // Add an array for Routing List data
|
||
1566 len += (RoutingListCount * ZDP_ROUTINGENTRY_SIZE);
|
||
\ 000026 75F005 MOV B,#0x5
|
||
\ 000029 A4 MUL AB
|
||
\ 00002A 2404 ADD A,#0x4
|
||
\ 00002C F5.. MOV ?V1,A
|
||
1567
|
||
1568 buf = osal_mem_alloc( (short)(len+1) );
|
||
\ 00002E ; Setup parameters for call to function osal_mem_alloc
|
||
\ 00002E 12.... LCALL ?Subroutine66 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_105:
|
||
\ 000031 8A.. MOV ?V2,R2
|
||
\ 000033 8B.. MOV ?V3,R3
|
||
\ 000035 AE.. MOV R6,?V2
|
||
\ 000037 AF.. MOV R7,?V3
|
||
1569 if ( buf == NULL )
|
||
\ 000039 EA MOV A,R2
|
||
\ 00003A 4F ORL A,R7
|
||
\ 00003B 7005 JNZ ??ZDP_MgmtRtgRsp_0
|
||
1570 {
|
||
1571 return afStatus_MEM_FAIL;
|
||
\ 00003D 7910 MOV R1,#0x10
|
||
\ 00003F 02.... LJMP ??ZDP_MgmtRtgRsp_1 & 0xFFFF
|
||
1572 }
|
||
1573
|
||
1574 pBuf = buf+1;
|
||
\ ??ZDP_MgmtRtgRsp_0:
|
||
\ 000042 8A82 MOV DPL,R2
|
||
\ 000044 8B83 MOV DPH,R3
|
||
\ 000046 A3 INC DPTR
|
||
\ 000047 A882 MOV R0,DPL
|
||
\ 000049 A983 MOV R1,DPH
|
||
1575
|
||
1576 *pBuf++ = Status;
|
||
\ 00004B E5.. MOV A,?V7
|
||
\ 00004D F0 MOVX @DPTR,A
|
||
1577 *pBuf++ = RoutingTableEntries;
|
||
\ 00004E A3 INC DPTR
|
||
\ 00004F E5.. MOV A,?V6
|
||
\ 000051 F0 MOVX @DPTR,A
|
||
1578 *pBuf++ = StartIndex;
|
||
\ 000052 7413 MOV A,#0x13
|
||
\ 000054 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000057 12.... LCALL ?Subroutine63 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_99:
|
||
\ 00005A 12.... LCALL ??Subroutine119_0 & 0xFFFF
|
||
1579 *pBuf++ = RoutingListCount;
|
||
\ ??CrossCallReturnLabel_187:
|
||
\ 00005D E5.. MOV A,?V0
|
||
\ 00005F F0 MOVX @DPTR,A
|
||
\ 000060 E8 MOV A,R0
|
||
\ 000061 2404 ADD A,#0x4
|
||
\ 000063 F8 MOV R0,A
|
||
\ 000064 5001 JNC ??ZDP_MgmtRtgRsp_2
|
||
\ 000066 09 INC R1
|
||
1580
|
||
1581 for ( x = 0; x < RoutingListCount; x++ )
|
||
\ ??ZDP_MgmtRtgRsp_2:
|
||
\ 000067 7A00 MOV R2,#0x0
|
||
\ 000069 7415 MOV A,#0x15
|
||
\ 00006B 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 00006E 12.... LCALL ?Subroutine50 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_74:
|
||
\ 000071 8036 SJMP ??ZDP_MgmtRtgRsp_3
|
||
1582 {
|
||
1583 *pBuf++ = LO_UINT16( RoutingTableList->dstAddress ); // Destination Address
|
||
\ ??ZDP_MgmtRtgRsp_4:
|
||
\ 000073 8C82 MOV DPL,R4
|
||
\ 000075 8D83 MOV DPH,R5
|
||
\ 000077 12.... LCALL ?Subroutine63 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_100:
|
||
\ 00007A 12.... LCALL ?Subroutine16 & 0xFFFF
|
||
1584 *pBuf++ = HI_UINT16( RoutingTableList->dstAddress );
|
||
\ ??CrossCallReturnLabel_18:
|
||
\ 00007D 8882 MOV DPL,R0
|
||
\ 00007F 8983 MOV DPH,R1
|
||
\ 000081 12.... LCALL ?Subroutine25 & 0xFFFF
|
||
1585 *pBuf++ = RoutingTableList->status;
|
||
\ ??CrossCallReturnLabel_31:
|
||
\ 000084 8882 MOV DPL,R0
|
||
\ 000086 8983 MOV DPH,R1
|
||
\ 000088 A3 INC DPTR
|
||
\ 000089 A3 INC DPTR
|
||
\ 00008A F0 MOVX @DPTR,A
|
||
1586 *pBuf++ = LO_UINT16( RoutingTableList->nextHopAddress ); // Next hop
|
||
\ 00008B EC MOV A,R4
|
||
\ 00008C 2402 ADD A,#0x2
|
||
\ 00008E 12.... LCALL ?Subroutine101 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_161:
|
||
\ 000091 12.... LCALL ?Subroutine63 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_101:
|
||
\ 000094 12.... LCALL ?Subroutine33 & 0xFFFF
|
||
1587 *pBuf++ = HI_UINT16( RoutingTableList->nextHopAddress );
|
||
\ ??CrossCallReturnLabel_41:
|
||
\ 000097 12.... LCALL ?Subroutine55 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_81:
|
||
\ 00009A E8 MOV A,R0
|
||
\ 00009B 2405 ADD A,#0x5
|
||
\ 00009D F8 MOV R0,A
|
||
\ 00009E 5001 JNC ??ZDP_MgmtRtgRsp_5
|
||
\ 0000A0 09 INC R1
|
||
1588 RoutingTableList++; // Move to next list entry
|
||
\ ??ZDP_MgmtRtgRsp_5:
|
||
\ 0000A1 EC MOV A,R4
|
||
\ 0000A2 2407 ADD A,#0x7
|
||
\ 0000A4 FC MOV R4,A
|
||
\ 0000A5 5001 JNC ??ZDP_MgmtRtgRsp_6
|
||
\ 0000A7 0D INC R5
|
||
1589 }
|
||
\ ??ZDP_MgmtRtgRsp_6:
|
||
\ 0000A8 0A INC R2
|
||
\ ??ZDP_MgmtRtgRsp_3:
|
||
\ 0000A9 EA MOV A,R2
|
||
\ 0000AA C3 CLR C
|
||
\ 0000AB 95.. SUBB A,?V0
|
||
\ 0000AD 40C4 JC ??ZDP_MgmtRtgRsp_4
|
||
1590
|
||
1591 FillAndSendBuffer( &TransSeq, dstAddr, Mgmt_Rtg_rsp, len, buf );
|
||
\ 0000AF 8E82 MOV DPL,R6
|
||
\ 0000B1 8B83 MOV DPH,R3
|
||
\ 0000B3 12.... LCALL ??Subroutine133_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_256:
|
||
\ 0000B6 ; Setup parameters for call to function fillAndSend
|
||
\ 0000B6 75..32 MOV ?V2,#0x32
|
||
\ 0000B9 75..80 MOV ?V3,#-0x80
|
||
\ 0000BC 78.. MOV R0,#?V2
|
||
\ 0000BE 12.... LCALL ?PUSH_XSTACK_I_TWO
|
||
\ 0000C1 A9.. MOV R1,?V1
|
||
\ 0000C3 7403 MOV A,#0x3
|
||
\ 0000C5 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 0000C8 12.... LCALL ?Subroutine49 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_70:
|
||
\ 0000CB 12.... LCALL ?XSTACK_DISP101_8
|
||
\ 0000CE 12.... LCALL ??Subroutine140_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_306:
|
||
\ 0000D1 12.... LCALL ?DEALLOC_XSTACK8
|
||
\ 0000D4 12.... LCALL ?Subroutine75 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_124:
|
||
\ 0000D7 A9.. MOV R1,?V0
|
||
\ ??ZDP_MgmtRtgRsp_1:
|
||
\ 0000D9 7403 MOV A,#0x3
|
||
\ 0000DB 02.... LJMP ??Subroutine138_0 & 0xFFFF
|
||
1592 }
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine75:
|
||
\ 000000 E9 MOV A,R1
|
||
\ 000001 F5.. MOV ?V0,A
|
||
\ 000003 ; Setup parameters for call to function osal_mem_free
|
||
\ 000003 ; Setup parameters for call to function osal_mem_free
|
||
\ 000003 EE MOV A,R6
|
||
\ 000004 FA MOV R2,A
|
||
\ 000005 EF MOV A,R7
|
||
\ 000006 FB MOV R3,A
|
||
\ 000007 12.... LCALL ?Subroutine100 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_271:
|
||
\ 00000A 22 RET
|
||
1593
|
||
1594 /*********************************************************************
|
||
1595 * @fn ZDP_MgmtBindRsp
|
||
1596 *
|
||
1597 * @brief This builds and send a Mgmt_Bind_rsp message. This
|
||
1598 * function sends a unicast message.
|
||
1599 *
|
||
1600 * @param dstAddr - destination address of the message
|
||
1601 * @param Status - message status (ZDP_SUCCESS or other)
|
||
1602 * @param BindingTableEntries - Total number of entries
|
||
1603 * @param StartIndex - Starting index within the reporting list
|
||
1604 * @param BindingTableListCount - number of entries included
|
||
1605 * in this message
|
||
1606 * @param BindingTableList - List of Binding Table entries
|
||
1607 * @param SecurityEnable - Security Options
|
||
1608 *
|
||
1609 * @return ZStatus_t
|
||
1610 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
1611 ZStatus_t ZDP_MgmtBindRsp( byte TransSeq, zAddrType_t *dstAddr,
|
||
\ ZDP_MgmtBindRsp:
|
||
1612 byte Status,
|
||
1613 byte BindingTableEntries,
|
||
1614 byte StartIndex,
|
||
1615 byte BindingTableListCount,
|
||
1616 apsBindingItem_t *BindingTableList,
|
||
1617 byte SecurityEnable )
|
||
1618 {
|
||
\ 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: 4
|
||
\ 000005 74FC MOV A,#-0x4
|
||
\ 000007 12.... LCALL ?ALLOC_XSTACK8
|
||
\ 00000A 7401 MOV A,#0x1
|
||
\ 00000C 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 00000F E9 MOV A,R1
|
||
\ 000010 F0 MOVX @DPTR,A
|
||
\ 000011 7402 MOV A,#0x2
|
||
\ 000013 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000016 12.... LCALL ?Subroutine12 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_7:
|
||
\ 000019 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 00001C E0 MOVX A,@DPTR
|
||
\ 00001D F5.. MOV ?V6,A
|
||
1619 uint8 *buf;
|
||
1620 uint8 *pBuf;
|
||
1621 uint8 maxLen; // maxLen is the maximum packet length to allocate enough memory space
|
||
1622 uint8 len; // Actual length varies due to different addrMode
|
||
1623 uint8 x;
|
||
1624 byte extZdpBindEntrySize = ZDP_BINDINGENTRY_SIZE + 1 + 1; // One more byte for cluserID and DstAddrMode
|
||
1625 byte shortZdpBindEntrySize = ZDP_BINDINGENTRY_SIZE + 1 + 1 + 2 - 8 - 1; // clusterID + DstAddrMode + shortAddr - ExtAddr - DstEndpoint
|
||
1626
|
||
1627 (void)SecurityEnable; // Intentionally unreferenced parameter
|
||
1628
|
||
1629 // Status + BindingTableEntries + StartIndex + BindingTableListCount.
|
||
1630 maxLen = 1 + 1 + 1 + 1;
|
||
1631 maxLen += (BindingTableListCount * extZdpBindEntrySize ); //max length
|
||
1632 buf = osal_mem_alloc( maxLen + 1 ); // +1 for transaction ID
|
||
\ 00001F ; Setup parameters for call to function osal_mem_alloc
|
||
\ 00001F 75F015 MOV B,#0x15
|
||
\ 000022 A4 MUL AB
|
||
\ 000023 2404 ADD A,#0x4
|
||
\ 000025 12.... LCALL ?Subroutine65 & 0xFFFF
|
||
1633
|
||
1634 if ( buf == NULL )
|
||
\ ??CrossCallReturnLabel_103:
|
||
\ 000028 7005 JNZ ??ZDP_MgmtBindRsp_0
|
||
1635 {
|
||
1636 return afStatus_MEM_FAIL;
|
||
\ 00002A 7910 MOV R1,#0x10
|
||
\ 00002C 02.... LJMP ??CrossCallReturnLabel_268 & 0xFFFF
|
||
1637 }
|
||
1638
|
||
1639 pBuf = buf+1;
|
||
\ ??ZDP_MgmtBindRsp_0:
|
||
\ 00002F 8A82 MOV DPL,R2
|
||
\ 000031 8B83 MOV DPH,R3
|
||
\ 000033 A3 INC DPTR
|
||
\ 000034 AA82 MOV R2,DPL
|
||
\ 000036 AB83 MOV R3,DPH
|
||
1640
|
||
1641 *pBuf++ = Status;
|
||
\ 000038 85..82 MOV DPL,?XSP + 0
|
||
\ 00003B 85..83 MOV DPH,?XSP + 1
|
||
\ 00003E 12.... LCALL ?Subroutine38 & 0xFFFF
|
||
1642 *pBuf++ = BindingTableEntries;
|
||
\ ??CrossCallReturnLabel_50:
|
||
\ 000041 A3 INC DPTR
|
||
\ 000042 E5.. MOV A,?V7
|
||
\ 000044 F0 MOVX @DPTR,A
|
||
1643 *pBuf++ = StartIndex;
|
||
\ 000045 7414 MOV A,#0x14
|
||
\ 000047 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 00004A 12.... LCALL ?Subroutine59 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_90:
|
||
\ 00004D 12.... LCALL ?Subroutine32 & 0xFFFF
|
||
1644 *pBuf++ = BindingTableListCount;
|
||
\ ??CrossCallReturnLabel_38:
|
||
\ 000050 E5.. MOV A,?V6
|
||
\ 000052 F0 MOVX @DPTR,A
|
||
\ 000053 EA MOV A,R2
|
||
\ 000054 2404 ADD A,#0x4
|
||
\ 000056 FA MOV R2,A
|
||
\ 000057 5001 JNC ??ZDP_MgmtBindRsp_1
|
||
\ 000059 0B INC R3
|
||
1645
|
||
1646 // Initial length = Status + BindingTableEntries + StartIndex + BindingTableListCount.
|
||
1647 // length += ZDP_BINDINGENTRY_SIZE -- Version 1.0
|
||
1648 // extZdpBindEntrySize -- Version 1.1 extended address mode
|
||
1649 // shortZdpBindEntrySize -- Version 1.1 group address mode
|
||
1650
|
||
1651 len = 1 + 1 + 1 + 1;
|
||
\ ??ZDP_MgmtBindRsp_1:
|
||
\ 00005A 75..04 MOV ?V0,#0x4
|
||
1652 for ( x = 0; x < BindingTableListCount; x++ )
|
||
\ 00005D 75..00 MOV ?V1,#0x0
|
||
\ 000060 7416 MOV A,#0x16
|
||
\ 000062 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000065 12.... LCALL ??Subroutine135_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_263:
|
||
\ 000068 8018 SJMP ??ZDP_MgmtBindRsp_2
|
||
1653 {
|
||
1654 pBuf = osal_cpyExtAddr( pBuf, BindingTableList->srcAddr );
|
||
1655 *pBuf++ = BindingTableList->srcEP;
|
||
1656
|
||
1657 // Cluster ID
|
||
1658 *pBuf++ = LO_UINT16( BindingTableList->clusterID );
|
||
1659 *pBuf++ = HI_UINT16( BindingTableList->clusterID );
|
||
1660
|
||
1661 *pBuf++ = BindingTableList->dstAddr.addrMode;
|
||
1662 if ( BindingTableList->dstAddr.addrMode == Addr64Bit )
|
||
1663 {
|
||
1664 len += extZdpBindEntrySize;
|
||
1665 pBuf = osal_cpyExtAddr( pBuf, BindingTableList->dstAddr.addr.extAddr );
|
||
1666 *pBuf++ = BindingTableList->dstEP;
|
||
1667 }
|
||
1668 else
|
||
1669 {
|
||
1670 len += shortZdpBindEntrySize;
|
||
\ ??ZDP_MgmtBindRsp_3:
|
||
\ 00006A 740E MOV A,#0xe
|
||
\ 00006C 25.. ADD A,?V0
|
||
\ 00006E F5.. MOV ?V0,A
|
||
1671 *pBuf++ = LO_UINT16( BindingTableList->dstAddr.addr.shortAddr );
|
||
\ 000070 EE MOV A,R6
|
||
\ 000071 240B ADD A,#0xb
|
||
\ 000073 12.... LCALL ?Subroutine9 & 0xFFFF
|
||
1672 *pBuf++ = HI_UINT16( BindingTableList->dstAddr.addr.shortAddr );
|
||
1673 }
|
||
\ ??CrossCallReturnLabel_273:
|
||
\ 000076 5001 JNC ??ZDP_MgmtBindRsp_4
|
||
\ 000078 0B INC R3
|
||
1674 BindingTableList++; // Move to next list entry
|
||
\ ??ZDP_MgmtBindRsp_4:
|
||
\ 000079 EE MOV A,R6
|
||
\ 00007A 2415 ADD A,#0x15
|
||
\ 00007C FE MOV R6,A
|
||
\ 00007D 5001 JNC ??ZDP_MgmtBindRsp_5
|
||
\ 00007F 0F INC R7
|
||
\ ??ZDP_MgmtBindRsp_5:
|
||
\ 000080 05.. INC ?V1
|
||
\ ??ZDP_MgmtBindRsp_2:
|
||
\ 000082 E5.. MOV A,?V1
|
||
\ 000084 C3 CLR C
|
||
\ 000085 95.. SUBB A,?V6
|
||
\ 000087 5066 JNC ??ZDP_MgmtBindRsp_6
|
||
\ 000089 ; Setup parameters for call to function sAddrExtCpy
|
||
\ 000089 EE MOV A,R6
|
||
\ 00008A FC MOV R4,A
|
||
\ 00008B EF MOV A,R7
|
||
\ 00008C FD MOV R5,A
|
||
\ 00008D 12.... LCALL `??sAddrExtCpy::?relay`; Banked call to: sAddrExtCpy
|
||
\ 000090 8B.. MOV ?V5,R3
|
||
\ 000092 A9.. MOV R1,?V5
|
||
\ 000094 8E82 MOV DPL,R6
|
||
\ 000096 8F83 MOV DPH,R7
|
||
\ 000098 A3 INC DPTR
|
||
\ 000099 A3 INC DPTR
|
||
\ 00009A A3 INC DPTR
|
||
\ 00009B A3 INC DPTR
|
||
\ 00009C A3 INC DPTR
|
||
\ 00009D A3 INC DPTR
|
||
\ 00009E A3 INC DPTR
|
||
\ 00009F A3 INC DPTR
|
||
\ 0000A0 12.... LCALL ?Subroutine38 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_51:
|
||
\ 0000A3 EE MOV A,R6
|
||
\ 0000A4 2409 ADD A,#0x9
|
||
\ 0000A6 FC MOV R4,A
|
||
\ 0000A7 E4 CLR A
|
||
\ 0000A8 3F ADDC A,R7
|
||
\ 0000A9 FD MOV R5,A
|
||
\ 0000AA 8C82 MOV DPL,R4
|
||
\ 0000AC F583 MOV DPH,A
|
||
\ 0000AE 12.... LCALL ?Subroutine60 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_93:
|
||
\ 0000B1 12.... LCALL ?Subroutine16 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_19:
|
||
\ 0000B4 8A82 MOV DPL,R2
|
||
\ 0000B6 8B83 MOV DPH,R3
|
||
\ 0000B8 A3 INC DPTR
|
||
\ 0000B9 A3 INC DPTR
|
||
\ 0000BA F0 MOVX @DPTR,A
|
||
\ 0000BB EE MOV A,R6
|
||
\ 0000BC 2413 ADD A,#0x13
|
||
\ 0000BE FC MOV R4,A
|
||
\ 0000BF E4 CLR A
|
||
\ 0000C0 3F ADDC A,R7
|
||
\ 0000C1 FD MOV R5,A
|
||
\ 0000C2 8C82 MOV DPL,R4
|
||
\ 0000C4 12.... LCALL ?Subroutine41 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_60:
|
||
\ 0000C7 E4 CLR A
|
||
\ 0000C8 39 ADDC A,R1
|
||
\ 0000C9 FB MOV R3,A
|
||
\ 0000CA 8C82 MOV DPL,R4
|
||
\ 0000CC 8D83 MOV DPH,R5
|
||
\ 0000CE E0 MOVX A,@DPTR
|
||
\ 0000CF 6403 XRL A,#0x3
|
||
\ 0000D1 7097 JNZ ??ZDP_MgmtBindRsp_3
|
||
\ 0000D3 7415 MOV A,#0x15
|
||
\ 0000D5 25.. ADD A,?V0
|
||
\ 0000D7 F5.. MOV ?V0,A
|
||
\ 0000D9 ; Setup parameters for call to function sAddrExtCpy
|
||
\ 0000D9 EE MOV A,R6
|
||
\ 0000DA 240B ADD A,#0xb
|
||
\ 0000DC FC MOV R4,A
|
||
\ 0000DD E4 CLR A
|
||
\ 0000DE 3F ADDC A,R7
|
||
\ 0000DF FD MOV R5,A
|
||
\ 0000E0 12.... LCALL `??sAddrExtCpy::?relay`; Banked call to: sAddrExtCpy
|
||
\ 0000E3 EE MOV A,R6
|
||
\ 0000E4 2414 ADD A,#0x14
|
||
\ 0000E6 F582 MOV DPL,A
|
||
\ 0000E8 E4 CLR A
|
||
\ 0000E9 3F ADDC A,R7
|
||
\ 0000EA 12.... LCALL ?Subroutine23 & 0xFFFF
|
||
1675 }
|
||
\ ??CrossCallReturnLabel_204:
|
||
\ 0000ED 808A SJMP ??ZDP_MgmtBindRsp_4
|
||
1676
|
||
1677 FillAndSendBuffer( &TransSeq, dstAddr, Mgmt_Bind_rsp, len, buf );
|
||
\ ??ZDP_MgmtBindRsp_6:
|
||
\ 0000EF 12.... LCALL ?Subroutine20 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_259:
|
||
\ 0000F2 ; Setup parameters for call to function fillAndSend
|
||
\ 0000F2 75..33 MOV ?V4,#0x33
|
||
\ 0000F5 75..80 MOV ?V5,#-0x80
|
||
\ 0000F8 78.. MOV R0,#?V4
|
||
\ 0000FA 12.... LCALL ?PUSH_XSTACK_I_TWO
|
||
\ 0000FD A9.. MOV R1,?V0
|
||
\ 0000FF 7404 MOV A,#0x4
|
||
\ 000101 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000104 12.... LCALL ?Subroutine50 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_75:
|
||
\ 000107 7403 MOV A,#0x3
|
||
\ 000109 12.... LCALL ?XSTACK_DISP101_8
|
||
\ 00010C 12.... LCALL ??Subroutine140_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_307:
|
||
\ 00010F 12.... LCALL ?DEALLOC_XSTACK8
|
||
\ 000112 12.... LCALL ?Subroutine24 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_268:
|
||
\ 000115 02.... LJMP ?Subroutine7 & 0xFFFF
|
||
1678 }
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine32:
|
||
\ 000000 12.... LCALL ?Subroutine98 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_157:
|
||
\ 000003 22 RET
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine98:
|
||
\ 000000 F0 MOVX @DPTR,A
|
||
\ 000001 8A82 MOV DPL,R2
|
||
\ 000003 8B83 MOV DPH,R3
|
||
\ 000005 A3 INC DPTR
|
||
\ 000006 A3 INC DPTR
|
||
\ 000007 A3 INC DPTR
|
||
\ 000008 22 RET
|
||
1679
|
||
1680 /*********************************************************************
|
||
1681 * @fn ZDP_MgmtNwkUpdateNotify
|
||
1682 *
|
||
1683 * @brief This builds and send a Mgmt_NWK_Update_notify message. This
|
||
1684 * function sends a unicast message.
|
||
1685 *
|
||
1686 * @param dstAddr - destination address of the message
|
||
1687 * @param status - message status (ZDP_SUCCESS or other)
|
||
1688 * @param scannedChannels - List of channels scanned by the request
|
||
1689 * @param totalTransmissions - Total transmissions
|
||
1690 * @param transmissionFailures - Sum of transmission failures
|
||
1691 * @param listCount - Number of records contained in the energyValues list
|
||
1692 * @param energyValues - List of descriptors, one for each of ListCount,
|
||
1693 * of the enegry detect descriptors
|
||
1694 * @param txOptions - Transmit options
|
||
1695 * @param securityEnable - Security options
|
||
1696 *
|
||
1697 * @return afStatus_t
|
||
1698 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
1699 afStatus_t ZDP_MgmtNwkUpdateNotify( uint8 TransSeq, zAddrType_t *dstAddr,
|
||
\ ZDP_MgmtNwkUpdateNotify:
|
||
1700 uint8 status, uint32 scannedChannels,
|
||
1701 uint16 totalTransmissions, uint16 transmissionFailures,
|
||
1702 uint8 listCount, uint8 *energyValues, uint8 txOptions,
|
||
1703 uint8 securityEnable )
|
||
1704 {
|
||
\ 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: 1
|
||
\ 000005 74FF MOV A,#-0x1
|
||
\ 000007 12.... LCALL ?ALLOC_XSTACK8
|
||
\ 00000A E9 MOV A,R1
|
||
\ 00000B 85..82 MOV DPL,?XSP + 0
|
||
\ 00000E 85..83 MOV DPH,?XSP + 1
|
||
\ 000011 F0 MOVX @DPTR,A
|
||
\ 000012 8A.. MOV ?V6,R2
|
||
\ 000014 8B.. MOV ?V7,R3
|
||
\ 000016 8C.. MOV ?V5,R4
|
||
\ 000018 8D.. MOV ?V3,R5
|
||
1705 uint8 *buf;
|
||
1706 uint8 *pBuf;
|
||
1707 uint8 len;
|
||
1708
|
||
1709 (void)securityEnable; // Intentionally unreferenced parameter
|
||
1710
|
||
1711 // Status + ScannedChannels + totalTransmissions + transmissionFailures + ListCount + energyValues
|
||
1712 len = 1 + 4 + 2 + 2 + 1 + listCount;
|
||
\ 00001A 740A MOV A,#0xa
|
||
\ 00001C 2D ADD A,R5
|
||
\ 00001D F5.. MOV ?V4,A
|
||
1713
|
||
1714 buf = osal_mem_alloc( len+1 ); // +1 for transaction ID
|
||
\ 00001F ; Setup parameters for call to function osal_mem_alloc
|
||
\ 00001F 12.... LCALL ?Subroutine66 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_106:
|
||
\ 000022 8A.. MOV ?V0,R2
|
||
\ 000024 8B.. MOV ?V1,R3
|
||
\ 000026 AE.. MOV R6,?V0
|
||
\ 000028 AF.. MOV R7,?V1
|
||
1715 if ( buf == NULL )
|
||
\ 00002A EA MOV A,R2
|
||
\ 00002B 4F ORL A,R7
|
||
\ 00002C 7005 JNZ ??ZDP_MgmtNwkUpdateNotify_0
|
||
1716 {
|
||
1717 return afStatus_MEM_FAIL;
|
||
\ 00002E 7910 MOV R1,#0x10
|
||
\ 000030 02.... LJMP ??ZDP_MgmtNwkUpdateNotify_1 & 0xFFFF
|
||
1718 }
|
||
1719
|
||
1720 pBuf = buf+1;
|
||
\ ??ZDP_MgmtNwkUpdateNotify_0:
|
||
\ 000033 8A82 MOV DPL,R2
|
||
\ 000035 8B83 MOV DPH,R3
|
||
\ 000037 A3 INC DPTR
|
||
1721
|
||
1722 *pBuf++ = status;
|
||
\ 000038 E5.. MOV A,?V5
|
||
\ 00003A 12.... LCALL ??Subroutine122_0 & 0xFFFF
|
||
1723
|
||
1724 pBuf = osal_buffer_uint32( pBuf, scannedChannels );
|
||
\ ??CrossCallReturnLabel_202:
|
||
\ 00003D ; Setup parameters for call to function osal_buffer_uint32
|
||
\ 00003D 7411 MOV A,#0x11
|
||
\ 00003F 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000042 12.... LCALL ?PUSH_XSTACK8_X_FOUR
|
||
\ 000045 12.... LCALL `??osal_buffer_uint32::?relay`; Banked call to: osal_buffer_uint32
|
||
\ 000048 7404 MOV A,#0x4
|
||
\ 00004A 12.... LCALL ?DEALLOC_XSTACK8
|
||
\ 00004D 7415 MOV A,#0x15
|
||
\ 00004F 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000052 12.... LCALL ??Subroutine141_0 & 0xFFFF
|
||
1725
|
||
1726 *pBuf++ = LO_UINT16( totalTransmissions );
|
||
\ ??CrossCallReturnLabel_310:
|
||
\ 000055 8A82 MOV DPL,R2
|
||
\ 000057 8B83 MOV DPH,R3
|
||
\ 000059 F0 MOVX @DPTR,A
|
||
1727 *pBuf++ = HI_UINT16( totalTransmissions );
|
||
\ 00005A E9 MOV A,R1
|
||
\ 00005B A3 INC DPTR
|
||
\ 00005C F0 MOVX @DPTR,A
|
||
\ 00005D 7417 MOV A,#0x17
|
||
\ 00005F 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000062 12.... LCALL ?Subroutine30 & 0xFFFF
|
||
1728
|
||
1729 *pBuf++ = LO_UINT16( transmissionFailures );
|
||
1730 *pBuf++ = HI_UINT16( transmissionFailures );
|
||
\ ??CrossCallReturnLabel_37:
|
||
\ 000065 12.... LCALL ?Subroutine15 & 0xFFFF
|
||
1731
|
||
1732 *pBuf++ = listCount;
|
||
\ ??CrossCallReturnLabel_13:
|
||
\ 000068 E5.. MOV A,?V3
|
||
\ 00006A F0 MOVX @DPTR,A
|
||
1733
|
||
1734 if ( listCount > 0 )
|
||
\ 00006B 601C JZ ??ZDP_MgmtNwkUpdateNotify_2
|
||
1735 osal_memcpy( pBuf, energyValues, listCount );
|
||
\ 00006D ; Setup parameters for call to function osal_memcpy
|
||
\ 00006D 7419 MOV A,#0x19
|
||
\ 00006F 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000072 12.... LCALL ?Subroutine42 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_62:
|
||
\ 000075 12.... LCALL ?PUSH_XSTACK_I_THREE
|
||
\ 000078 AC.. MOV R4,?V3
|
||
\ 00007A 7D00 MOV R5,#0x0
|
||
\ 00007C EA MOV A,R2
|
||
\ 00007D 2405 ADD A,#0x5
|
||
\ 00007F FA MOV R2,A
|
||
\ 000080 5001 JNC ??ZDP_MgmtNwkUpdateNotify_3
|
||
\ 000082 0B INC R3
|
||
\ ??ZDP_MgmtNwkUpdateNotify_3:
|
||
\ 000083 12.... LCALL ??Subroutine123_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_210:
|
||
\ 000086 12.... LCALL ?DEALLOC_XSTACK8
|
||
1736
|
||
1737 FillAndSendBufferTxOptions( &TransSeq, dstAddr, Mgmt_NWK_Update_notify, len, buf, txOptions );
|
||
\ ??ZDP_MgmtNwkUpdateNotify_2:
|
||
\ 000089 8E82 MOV DPL,R6
|
||
\ 00008B 8F83 MOV DPH,R7
|
||
\ 00008D 12.... LCALL ??Subroutine133_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_257:
|
||
\ 000090 741B MOV A,#0x1b
|
||
\ 000092 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000095 E0 MOVX A,@DPTR
|
||
\ 000096 90.... MOV DPTR,#ZDP_TxOptions
|
||
\ 000099 F0 MOVX @DPTR,A
|
||
\ 00009A ; Setup parameters for call to function fillAndSend
|
||
\ 00009A 75..38 MOV ?V0,#0x38
|
||
\ 00009D 75..80 MOV ?V1,#-0x80
|
||
\ 0000A0 78.. MOV R0,#?V0
|
||
\ 0000A2 12.... LCALL ?PUSH_XSTACK_I_TWO
|
||
\ 0000A5 A9.. MOV R1,?V4
|
||
\ 0000A7 AC.. MOV R4,?V6
|
||
\ 0000A9 AD.. MOV R5,?V7
|
||
\ 0000AB 7402 MOV A,#0x2
|
||
\ 0000AD 12.... LCALL ?XSTACK_DISP101_8
|
||
\ 0000B0 12.... LCALL ??Subroutine140_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_308:
|
||
\ 0000B3 12.... LCALL ?DEALLOC_XSTACK8
|
||
\ 0000B6 12.... LCALL ?Subroutine75 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_125:
|
||
\ 0000B9 90.... MOV DPTR,#ZDP_TxOptions
|
||
\ 0000BC E4 CLR A
|
||
\ 0000BD F0 MOVX @DPTR,A
|
||
\ 0000BE A9.. MOV R1,?V0
|
||
\ ??ZDP_MgmtNwkUpdateNotify_1:
|
||
\ 0000C0 02.... LJMP ?Subroutine4 & 0xFFFF
|
||
1738 }
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine15:
|
||
\ 000000 12.... LCALL ?Subroutine98 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_158:
|
||
\ 000003 A3 INC DPTR
|
||
\ 000004 22 RET
|
||
1739
|
||
1740 /*********************************************************************
|
||
1741 * Functions to register for ZDO Over-the-air messages
|
||
1742 */
|
||
1743
|
||
1744 /*********************************************************************
|
||
1745 * @fn ZDO_RegisterForZDOMsg
|
||
1746 *
|
||
1747 * @brief Call this function to register of an incoming over
|
||
1748 * the air ZDO message - probably a response message
|
||
1749 * but requests can also be received.
|
||
1750 * Messages are delivered to the task with ZDO_CB_MSG
|
||
1751 * as the message ID.
|
||
1752 *
|
||
1753 * @param taskID - Where you would like the message delivered
|
||
1754 * @param clusterID - What message?
|
||
1755 *
|
||
1756 * @return ZSuccess - successful, ZMemError if not
|
||
1757 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
1758 ZStatus_t ZDO_RegisterForZDOMsg( uint8 taskID, uint16 clusterID )
|
||
\ ZDO_RegisterForZDOMsg:
|
||
1759 {
|
||
\ 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: 0
|
||
\ 000005 89.. MOV ?V2,R1
|
||
\ 000007 8A.. MOV ?V0,R2
|
||
\ 000009 8B.. MOV ?V1,R3
|
||
1760 ZDO_MsgCB_t *pList;
|
||
1761 ZDO_MsgCB_t *pLast;
|
||
1762 ZDO_MsgCB_t *pNew;
|
||
1763
|
||
1764 // Look for duplicate
|
||
1765 pList = pLast = zdoMsgCBs;
|
||
\ 00000B 90.... MOV DPTR,#zdoMsgCBs
|
||
\ 00000E 12.... LCALL ??Subroutine135_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_264:
|
||
\ 000011 EE MOV A,R6
|
||
\ 000012 F8 MOV R0,A
|
||
\ 000013 EF MOV A,R7
|
||
\ 000014 8026 SJMP ??CrossCallReturnLabel_334
|
||
1766 while ( pList )
|
||
1767 {
|
||
1768 if ( pList->taskID == taskID && pList->clusterID == clusterID )
|
||
\ ??ZDO_RegisterForZDOMsg_0:
|
||
\ 000016 8882 MOV DPL,R0
|
||
\ 000018 8983 MOV DPH,R1
|
||
\ 00001A A3 INC DPTR
|
||
\ 00001B A3 INC DPTR
|
||
\ 00001C E0 MOVX A,@DPTR
|
||
\ 00001D 65.. XRL A,?V2
|
||
\ 00001F 7010 JNZ ??ZDO_RegisterForZDOMsg_1
|
||
\ 000021 8882 MOV DPL,R0
|
||
\ 000023 8983 MOV DPH,R1
|
||
\ 000025 A3 INC DPTR
|
||
\ 000026 A3 INC DPTR
|
||
\ 000027 A3 INC DPTR
|
||
\ 000028 E0 MOVX A,@DPTR
|
||
\ 000029 6A XRL A,R2
|
||
\ 00002A 7003 JNZ ??ZDO_RegisterForZDOMsg_2
|
||
\ 00002C A3 INC DPTR
|
||
\ 00002D E0 MOVX A,@DPTR
|
||
\ 00002E 6B XRL A,R3
|
||
\ ??ZDO_RegisterForZDOMsg_2:
|
||
\ 00002F 6051 JZ ??CrossCallReturnLabel_251
|
||
1769 return ( ZSuccess );
|
||
1770 pLast = pList;
|
||
\ ??ZDO_RegisterForZDOMsg_1:
|
||
\ 000031 E8 MOV A,R0
|
||
\ 000032 FE MOV R6,A
|
||
\ 000033 E9 MOV A,R1
|
||
\ 000034 FF MOV R7,A
|
||
1771 pList = (ZDO_MsgCB_t *)pList->next;
|
||
\ 000035 8882 MOV DPL,R0
|
||
\ 000037 8983 MOV DPH,R1
|
||
\ 000039 12.... LCALL ??Subroutine145_0 & 0xFFFF
|
||
1772 }
|
||
\ ??CrossCallReturnLabel_334:
|
||
\ 00003C F9 MOV R1,A
|
||
\ 00003D E8 MOV A,R0
|
||
\ 00003E 49 ORL A,R1
|
||
\ 00003F 70D5 JNZ ??ZDO_RegisterForZDOMsg_0
|
||
1773
|
||
1774 // Add to the list
|
||
1775 pNew = (ZDO_MsgCB_t *)osal_mem_alloc( sizeof ( ZDO_MsgCB_t ) );
|
||
\ 000041 ; Setup parameters for call to function osal_mem_alloc
|
||
\ 000041 7A05 MOV R2,#0x5
|
||
\ 000043 7B00 MOV R3,#0x0
|
||
\ 000045 12.... LCALL `??osal_mem_alloc::?relay`; Banked call to: osal_mem_alloc
|
||
\ 000048 8A.. MOV ?V4,R2
|
||
\ 00004A 8B.. MOV ?V5,R3
|
||
\ 00004C A8.. MOV R0,?V4
|
||
\ 00004E A9.. MOV R1,?V5
|
||
1776 if ( pNew )
|
||
\ 000050 EA MOV A,R2
|
||
\ 000051 49 ORL A,R1
|
||
\ 000052 6032 JZ ??ZDO_RegisterForZDOMsg_3
|
||
1777 {
|
||
1778 pNew->taskID = taskID;
|
||
\ 000054 8A82 MOV DPL,R2
|
||
\ 000056 8B83 MOV DPH,R3
|
||
\ 000058 A3 INC DPTR
|
||
\ 000059 A3 INC DPTR
|
||
\ 00005A E5.. MOV A,?V2
|
||
\ 00005C 12.... LCALL ?Subroutine32 & 0xFFFF
|
||
1779 pNew->clusterID = clusterID;
|
||
\ ??CrossCallReturnLabel_39:
|
||
\ 00005F E5.. MOV A,?V0
|
||
\ 000061 F0 MOVX @DPTR,A
|
||
\ 000062 A3 INC DPTR
|
||
\ 000063 E5.. MOV A,?V1
|
||
\ 000065 F0 MOVX @DPTR,A
|
||
1780 pNew->next = NULL;
|
||
\ 000066 8A82 MOV DPL,R2
|
||
\ 000068 8B83 MOV DPH,R3
|
||
\ 00006A E4 CLR A
|
||
\ 00006B F0 MOVX @DPTR,A
|
||
\ 00006C A3 INC DPTR
|
||
\ 00006D F0 MOVX @DPTR,A
|
||
1781 if ( zdoMsgCBs )
|
||
\ 00006E 90.... MOV DPTR,#zdoMsgCBs
|
||
\ 000071 12.... LCALL ?Subroutine48 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_66:
|
||
\ 000074 6006 JZ ??ZDO_RegisterForZDOMsg_4
|
||
1782 {
|
||
1783 pLast->next = pNew;
|
||
\ 000076 8E82 MOV DPL,R6
|
||
\ 000078 8F83 MOV DPH,R7
|
||
\ 00007A 8003 SJMP ??ZDO_RegisterForZDOMsg_5
|
||
1784 }
|
||
1785 else
|
||
1786 zdoMsgCBs = pNew;
|
||
\ ??ZDO_RegisterForZDOMsg_4:
|
||
\ 00007C 90.... MOV DPTR,#zdoMsgCBs
|
||
\ ??ZDO_RegisterForZDOMsg_5:
|
||
\ 00007F 12.... LCALL ??Subroutine134_0 & 0xFFFF
|
||
1787 return ( ZSuccess );
|
||
\ ??CrossCallReturnLabel_251:
|
||
\ 000082 7900 MOV R1,#0x0
|
||
\ 000084 8002 SJMP ??ZDO_RegisterForZDOMsg_6
|
||
1788 }
|
||
1789 else
|
||
1790 return ( ZMemError );
|
||
\ ??ZDO_RegisterForZDOMsg_3:
|
||
\ 000086 7910 MOV R1,#0x10
|
||
\ ??ZDO_RegisterForZDOMsg_6:
|
||
\ 000088 02.... LJMP ??Subroutine113_0 & 0xFFFF
|
||
1791 }
|
||
1792
|
||
1793 /*********************************************************************
|
||
1794 * @fn ZDO_RemoveRegisteredCB
|
||
1795 *
|
||
1796 * @brief Call this function if you don't want to receive the
|
||
1797 * incoming message.
|
||
1798 *
|
||
1799 * @param taskID - Where the messages are being delivered.
|
||
1800 * @param clusterID - What message?
|
||
1801 *
|
||
1802 * @return ZSuccess - successful, ZFailure if not found
|
||
1803 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
1804 ZStatus_t ZDO_RemoveRegisteredCB( uint8 taskID, uint16 clusterID )
|
||
\ ZDO_RemoveRegisteredCB:
|
||
1805 {
|
||
\ 000000 74F7 MOV A,#-0x9
|
||
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
|
||
\ 000005 ; Saved register size: 9
|
||
\ 000005 ; Auto size: 0
|
||
\ 000005 E9 MOV A,R1
|
||
\ 000006 FE MOV R6,A
|
||
1806 ZDO_MsgCB_t *pList;
|
||
1807 ZDO_MsgCB_t *pLast = NULL;
|
||
\ 000007 7C00 MOV R4,#0x0
|
||
\ 000009 7D00 MOV R5,#0x0
|
||
1808
|
||
1809 pList = zdoMsgCBs;
|
||
\ 00000B 90.... MOV DPTR,#zdoMsgCBs
|
||
\ 00000E 8008 SJMP ??ZDO_RemoveRegisteredCB_0
|
||
1810 while ( pList )
|
||
1811 {
|
||
1812 if ( pList->taskID == taskID && pList->clusterID == clusterID )
|
||
1813 {
|
||
1814 if ( pLast )
|
||
1815 {
|
||
1816 // remove this one from the linked list
|
||
1817 pLast->next = pList->next;
|
||
1818 }
|
||
1819 else if ( pList->next )
|
||
1820 {
|
||
1821 // remove the first one from the linked list
|
||
1822 zdoMsgCBs = pList->next;
|
||
1823 }
|
||
1824 else
|
||
1825 {
|
||
1826 // remove the only item from the list
|
||
1827 zdoMsgCBs = (ZDO_MsgCB_t *)NULL;
|
||
1828 }
|
||
1829 osal_mem_free( pList );
|
||
1830 return ( ZSuccess );
|
||
1831 }
|
||
1832 pLast = pList;
|
||
\ ??ZDO_RemoveRegisteredCB_1:
|
||
\ 000010 E8 MOV A,R0
|
||
\ 000011 FC MOV R4,A
|
||
\ 000012 E9 MOV A,R1
|
||
\ 000013 FD MOV R5,A
|
||
1833 pList = pList->next;
|
||
\ 000014 8882 MOV DPL,R0
|
||
\ 000016 8983 MOV DPH,R1
|
||
\ ??ZDO_RemoveRegisteredCB_0:
|
||
\ 000018 12.... LCALL ??Subroutine118_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_182:
|
||
\ 00001B 6048 JZ ??ZDO_RemoveRegisteredCB_2
|
||
\ 00001D 8882 MOV DPL,R0
|
||
\ 00001F 8983 MOV DPH,R1
|
||
\ 000021 A3 INC DPTR
|
||
\ 000022 A3 INC DPTR
|
||
\ 000023 E0 MOVX A,@DPTR
|
||
\ 000024 6E XRL A,R6
|
||
\ 000025 70E9 JNZ ??ZDO_RemoveRegisteredCB_1
|
||
\ 000027 8882 MOV DPL,R0
|
||
\ 000029 8983 MOV DPH,R1
|
||
\ 00002B A3 INC DPTR
|
||
\ 00002C A3 INC DPTR
|
||
\ 00002D A3 INC DPTR
|
||
\ 00002E E0 MOVX A,@DPTR
|
||
\ 00002F 6A XRL A,R2
|
||
\ 000030 7003 JNZ ??ZDO_RemoveRegisteredCB_3
|
||
\ 000032 A3 INC DPTR
|
||
\ 000033 E0 MOVX A,@DPTR
|
||
\ 000034 6B XRL A,R3
|
||
\ ??ZDO_RemoveRegisteredCB_3:
|
||
\ 000035 70D9 JNZ ??ZDO_RemoveRegisteredCB_1
|
||
\ 000037 EC MOV A,R4
|
||
\ 000038 4D ORL A,R5
|
||
\ 000039 8882 MOV DPL,R0
|
||
\ 00003B 8983 MOV DPH,R1
|
||
\ 00003D 6009 JZ ??ZDO_RemoveRegisteredCB_4
|
||
\ 00003F 12.... LCALL ??Subroutine121_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_194:
|
||
\ 000042 8C82 MOV DPL,R4
|
||
\ 000044 8D83 MOV DPH,R5
|
||
\ 000046 8008 SJMP ??ZDO_RemoveRegisteredCB_5
|
||
\ ??ZDO_RemoveRegisteredCB_4:
|
||
\ 000048 12.... LCALL ?Subroutine48 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_67:
|
||
\ 00004B 90.... MOV DPTR,#zdoMsgCBs
|
||
\ 00004E 6006 JZ ??ZDO_RemoveRegisteredCB_6
|
||
\ ??ZDO_RemoveRegisteredCB_5:
|
||
\ 000050 EA MOV A,R2
|
||
\ 000051 F0 MOVX @DPTR,A
|
||
\ 000052 A3 INC DPTR
|
||
\ 000053 EB MOV A,R3
|
||
\ 000054 8003 SJMP ??ZDO_RemoveRegisteredCB_7
|
||
\ ??ZDO_RemoveRegisteredCB_6:
|
||
\ 000056 E4 CLR A
|
||
\ 000057 F0 MOVX @DPTR,A
|
||
\ 000058 A3 INC DPTR
|
||
\ ??ZDO_RemoveRegisteredCB_7:
|
||
\ 000059 F0 MOVX @DPTR,A
|
||
\ 00005A ; Setup parameters for call to function osal_mem_free
|
||
\ 00005A E8 MOV A,R0
|
||
\ 00005B FA MOV R2,A
|
||
\ 00005C E9 MOV A,R1
|
||
\ 00005D FB MOV R3,A
|
||
\ 00005E 12.... LCALL `??osal_mem_free::?relay`; Banked call to: osal_mem_free
|
||
\ 000061 7900 MOV R1,#0x0
|
||
\ 000063 8002 SJMP ??ZDO_RemoveRegisteredCB_8
|
||
1834 }
|
||
1835
|
||
1836 return ( ZFailure );
|
||
\ ??ZDO_RemoveRegisteredCB_2:
|
||
\ 000065 7901 MOV R1,#0x1
|
||
\ ??ZDO_RemoveRegisteredCB_8:
|
||
\ 000067 02.... LJMP ?Subroutine5 & 0xFFFF
|
||
1837 }
|
||
1838
|
||
1839 /*********************************************************************
|
||
1840 * @fn ZDO_SendMsgCBs
|
||
1841 *
|
||
1842 * @brief This function sends messages to registered tasks.
|
||
1843 * Local to ZDO and shouldn't be called outside of ZDO.
|
||
1844 *
|
||
1845 * @param inMsg - incoming message
|
||
1846 *
|
||
1847 * @return TRUE if sent to at least 1 task, FALSE if not
|
||
1848 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine71:
|
||
\ 000000 7D00 MOV R5,#0x0
|
||
\ 000002 REQUIRE ??Subroutine123_0
|
||
\ 000002 ; // Fall through to label ??Subroutine123_0
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
1849 uint8 ZDO_SendMsgCBs( zdoIncomingMsg_t *inMsg )
|
||
\ ZDO_SendMsgCBs:
|
||
1850 {
|
||
\ 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
|
||
\ 000005 8A.. MOV ?V6,R2
|
||
\ 000007 8B.. MOV ?V7,R3
|
||
1851 uint8 ret = FALSE;
|
||
\ 000009 75..00 MOV ?V0,#0x0
|
||
1852 ZDO_MsgCB_t *pList = zdoMsgCBs;
|
||
\ 00000C 90.... MOV DPTR,#zdoMsgCBs
|
||
\ 00000F 02.... LJMP ??ZDO_SendMsgCBs_0 & 0xFFFF
|
||
1853 while ( pList )
|
||
1854 {
|
||
1855 if ( pList->clusterID == inMsg->clusterID )
|
||
\ ??ZDO_SendMsgCBs_1:
|
||
\ 000012 85..82 MOV DPL,?V4
|
||
\ 000015 85..83 MOV DPH,?V5
|
||
\ 000018 A3 INC DPTR
|
||
\ 000019 A3 INC DPTR
|
||
\ 00001A A3 INC DPTR
|
||
\ 00001B 12.... LCALL ??Subroutine144_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_324:
|
||
\ 00001E E5.. MOV A,?V6
|
||
\ 000020 12.... LCALL ?Subroutine73 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_120:
|
||
\ 000023 35.. ADDC A,?V7
|
||
\ 000025 F583 MOV DPH,A
|
||
\ 000027 E0 MOVX A,@DPTR
|
||
\ 000028 68 XRL A,R0
|
||
\ 000029 7003 JNZ ??ZDO_SendMsgCBs_2
|
||
\ 00002B A3 INC DPTR
|
||
\ 00002C E0 MOVX A,@DPTR
|
||
\ 00002D 69 XRL A,R1
|
||
\ ??ZDO_SendMsgCBs_2:
|
||
\ 00002E 707D JNZ ??ZDO_SendMsgCBs_3
|
||
1856 {
|
||
1857 zdoIncomingMsg_t *msgPtr;
|
||
1858
|
||
1859 // Send the address to the task
|
||
1860 msgPtr = (zdoIncomingMsg_t *)osal_msg_allocate( sizeof( zdoIncomingMsg_t ) + inMsg->asduLen );
|
||
\ 000030 ; Setup parameters for call to function osal_msg_allocate
|
||
\ 000030 12.... LCALL ?Subroutine76 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_126:
|
||
\ 000033 2415 ADD A,#0x15
|
||
\ 000035 FA MOV R2,A
|
||
\ 000036 E4 CLR A
|
||
\ 000037 3400 ADDC A,#0x0
|
||
\ 000039 FB MOV R3,A
|
||
\ 00003A 12.... LCALL `??osal_msg_allocate::?relay`; Banked call to: osal_msg_allocate
|
||
\ 00003D 8A.. MOV ?V2,R2
|
||
\ 00003F 8B.. MOV ?V3,R3
|
||
\ 000041 AE.. MOV R6,?V2
|
||
\ 000043 AF.. MOV R7,?V3
|
||
1861 if ( msgPtr )
|
||
\ 000045 EA MOV A,R2
|
||
\ 000046 4F ORL A,R7
|
||
\ 000047 6064 JZ ??ZDO_SendMsgCBs_3
|
||
1862 {
|
||
1863 // copy struct
|
||
1864 osal_memcpy( msgPtr, inMsg, sizeof( zdoIncomingMsg_t ));
|
||
\ 000049 ; Setup parameters for call to function osal_memcpy
|
||
\ 000049 85.... MOV ?V0,?V6
|
||
\ 00004C 85.... MOV ?V1,?V7
|
||
\ 00004F 75..00 MOV ?V2,#0x0
|
||
\ 000052 78.. MOV R0,#?V0
|
||
\ 000054 12.... LCALL ?PUSH_XSTACK_I_THREE
|
||
\ 000057 7C15 MOV R4,#0x15
|
||
\ 000059 12.... LCALL ?Subroutine71 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_205:
|
||
\ 00005C 12.... LCALL ?DEALLOC_XSTACK8
|
||
1865
|
||
1866 if ( inMsg->asduLen )
|
||
\ 00005F 12.... LCALL ?Subroutine76 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_127:
|
||
\ 000062 602E JZ ??ZDO_SendMsgCBs_4
|
||
1867 {
|
||
1868 msgPtr->asdu = (byte*)(((byte*)msgPtr) + sizeof( zdoIncomingMsg_t ));
|
||
\ 000064 EE MOV A,R6
|
||
\ 000065 2415 ADD A,#0x15
|
||
\ 000067 FA MOV R2,A
|
||
\ 000068 E4 CLR A
|
||
\ 000069 3F ADDC A,R7
|
||
\ 00006A FB MOV R3,A
|
||
\ 00006B EE MOV A,R6
|
||
\ 00006C 2413 ADD A,#0x13
|
||
\ 00006E F582 MOV DPL,A
|
||
\ 000070 E4 CLR A
|
||
\ 000071 3F ADDC A,R7
|
||
\ 000072 F583 MOV DPH,A
|
||
\ 000074 12.... LCALL ??Subroutine142_0 & 0xFFFF
|
||
1869 osal_memcpy( msgPtr->asdu, inMsg->asdu, inMsg->asduLen );
|
||
\ ??CrossCallReturnLabel_316:
|
||
\ 000077 ; Setup parameters for call to function osal_memcpy
|
||
\ 000077 E5.. MOV A,?V6
|
||
\ 000079 2413 ADD A,#0x13
|
||
\ 00007B F582 MOV DPL,A
|
||
\ 00007D E4 CLR A
|
||
\ 00007E 35.. ADDC A,?V7
|
||
\ 000080 12.... LCALL ?Subroutine43 & 0xFFFF
|
||
1870 }
|
||
\ ??CrossCallReturnLabel_229:
|
||
\ 000083 78.. MOV R0,#?V0
|
||
\ 000085 12.... LCALL ?PUSH_XSTACK_I_THREE
|
||
\ 000088 12.... LCALL ?Subroutine76 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_128:
|
||
\ 00008B FC MOV R4,A
|
||
\ 00008C 12.... LCALL ?Subroutine71 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_206:
|
||
\ 00008F 12.... LCALL ?DEALLOC_XSTACK8
|
||
1871
|
||
1872 msgPtr->hdr.event = ZDO_CB_MSG;
|
||
\ ??ZDO_SendMsgCBs_4:
|
||
\ 000092 8E82 MOV DPL,R6
|
||
\ 000094 8F83 MOV DPH,R7
|
||
\ 000096 74D3 MOV A,#-0x2d
|
||
\ 000098 F0 MOVX @DPTR,A
|
||
1873 osal_msg_send( pList->taskID, (uint8 *)msgPtr );
|
||
\ 000099 ; Setup parameters for call to function osal_msg_send
|
||
\ 000099 EE MOV A,R6
|
||
\ 00009A FA MOV R2,A
|
||
\ 00009B EF MOV A,R7
|
||
\ 00009C FB MOV R3,A
|
||
\ 00009D 85..82 MOV DPL,?V4
|
||
\ 0000A0 85..83 MOV DPH,?V5
|
||
\ 0000A3 A3 INC DPTR
|
||
\ 0000A4 A3 INC DPTR
|
||
\ 0000A5 E0 MOVX A,@DPTR
|
||
\ 0000A6 F9 MOV R1,A
|
||
\ 0000A7 12.... LCALL `??osal_msg_send::?relay`; Banked call to: osal_msg_send
|
||
1874 ret = TRUE;
|
||
\ 0000AA 75..01 MOV ?V0,#0x1
|
||
1875 }
|
||
1876 }
|
||
1877 pList = (ZDO_MsgCB_t *)pList->next;
|
||
\ ??ZDO_SendMsgCBs_3:
|
||
\ 0000AD 85..82 MOV DPL,?V4
|
||
\ 0000B0 85..83 MOV DPH,?V5
|
||
\ ??ZDO_SendMsgCBs_0:
|
||
\ 0000B3 E0 MOVX A,@DPTR
|
||
\ 0000B4 F5.. MOV ?V4,A
|
||
\ 0000B6 A3 INC DPTR
|
||
\ 0000B7 E0 MOVX A,@DPTR
|
||
\ 0000B8 F5.. MOV ?V5,A
|
||
1878 }
|
||
\ 0000BA E5.. MOV A,?V4
|
||
\ 0000BC 45.. ORL A,?V5
|
||
\ 0000BE 6003 JZ $+5
|
||
\ 0000C0 02.... LJMP ??ZDO_SendMsgCBs_1 & 0xFFFF
|
||
1879 return ( ret );
|
||
\ 0000C3 A9.. MOV R1,?V0
|
||
\ 0000C5 02.... LJMP ??Subroutine139_0 & 0xFFFF
|
||
1880 }
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
\ ?Subroutine76:
|
||
\ 000000 E5.. MOV A,?V6
|
||
\ 000002 2410 ADD A,#0x10
|
||
\ 000004 F582 MOV DPL,A
|
||
\ 000006 E4 CLR A
|
||
\ 000007 35.. ADDC A,?V7
|
||
\ 000009 F583 MOV DPH,A
|
||
\ 00000B E0 MOVX A,@DPTR
|
||
\ 00000C 22 RET
|
||
1881
|
||
1882 /*********************************************************************
|
||
1883 * Incoming message processor
|
||
1884 */
|
||
1885
|
||
1886 /*********************************************************************
|
||
1887 * @fn ZDP_IncomingData
|
||
1888 *
|
||
1889 * @brief This function indicates the transfer of a data PDU (ASDU)
|
||
1890 * from the APS sub-layer to the ZDO.
|
||
1891 *
|
||
1892 * @param pData - Incoming Message
|
||
1893 *
|
||
1894 * @return none
|
||
1895 */
|
||
|
||
\ In segment BANKED_CODE, align 1, keep-with-next
|
||
1896 void ZDP_IncomingData( afIncomingMSGPacket_t *pData )
|
||
\ ZDP_IncomingData:
|
||
1897 {
|
||
\ 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: 21
|
||
\ 000005 74EB MOV A,#-0x15
|
||
\ 000007 12.... LCALL ?ALLOC_XSTACK8
|
||
1898 uint8 x = 0;
|
||
\ 00000A 7E00 MOV R6,#0x0
|
||
1899 uint8 handled;
|
||
1900 zdoIncomingMsg_t inMsg;
|
||
1901
|
||
1902 inMsg.srcAddr.addrMode = Addr16Bit;
|
||
\ 00000C 740A MOV A,#0xa
|
||
\ 00000E 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000011 7402 MOV A,#0x2
|
||
\ 000013 12.... LCALL ?Subroutine15 & 0xFFFF
|
||
1903 inMsg.srcAddr.addr.shortAddr = pData->srcAddr.addr.shortAddr;
|
||
\ ??CrossCallReturnLabel_14:
|
||
\ 000016 A3 INC DPTR
|
||
\ 000017 A3 INC DPTR
|
||
\ 000018 12.... LCALL ??Subroutine144_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_325:
|
||
\ 00001B 7402 MOV A,#0x2
|
||
\ 00001D 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000020 12.... LCALL ??Subroutine134_0 & 0xFFFF
|
||
1904 inMsg.wasBroadcast = pData->wasBroadcast;
|
||
\ ??CrossCallReturnLabel_252:
|
||
\ 000023 EA MOV A,R2
|
||
\ 000024 2415 ADD A,#0x15
|
||
\ 000026 F582 MOV DPL,A
|
||
\ 000028 E4 CLR A
|
||
\ 000029 3B ADDC A,R3
|
||
\ 00002A F583 MOV DPH,A
|
||
\ 00002C E0 MOVX A,@DPTR
|
||
\ 00002D C0E0 PUSH A
|
||
\ 00002F 740B MOV A,#0xb
|
||
\ 000031 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000034 D0E0 POP A
|
||
\ 000036 12.... LCALL ?Subroutine15 & 0xFFFF
|
||
1905 inMsg.clusterID = pData->clusterId;
|
||
\ ??CrossCallReturnLabel_15:
|
||
\ 000039 12.... LCALL ??Subroutine144_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_326:
|
||
\ 00003C 740C MOV A,#0xc
|
||
\ 00003E 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000041 12.... LCALL ??Subroutine134_0 & 0xFFFF
|
||
1906 inMsg.SecurityUse = pData->SecurityUse;
|
||
\ ??CrossCallReturnLabel_253:
|
||
\ 000044 EA MOV A,R2
|
||
\ 000045 2419 ADD A,#0x19
|
||
\ 000047 F582 MOV DPL,A
|
||
\ 000049 E4 CLR A
|
||
\ 00004A 3B ADDC A,R3
|
||
\ 00004B F583 MOV DPH,A
|
||
\ 00004D E0 MOVX A,@DPTR
|
||
\ 00004E C0E0 PUSH A
|
||
\ 000050 740E MOV A,#0xe
|
||
\ 000052 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000055 D0E0 POP A
|
||
\ 000057 F0 MOVX @DPTR,A
|
||
1907
|
||
1908 inMsg.asduLen = pData->cmd.DataLength-1;
|
||
\ 000058 EA MOV A,R2
|
||
\ 000059 2420 ADD A,#0x20
|
||
\ 00005B F582 MOV DPL,A
|
||
\ 00005D E4 CLR A
|
||
\ 00005E 3B ADDC A,R3
|
||
\ 00005F F583 MOV DPH,A
|
||
\ 000061 E0 MOVX A,@DPTR
|
||
\ 000062 14 DEC A
|
||
\ 000063 C0E0 PUSH A
|
||
\ 000065 7410 MOV A,#0x10
|
||
\ 000067 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 00006A D0E0 POP A
|
||
\ 00006C F0 MOVX @DPTR,A
|
||
1909 inMsg.asdu = pData->cmd.Data+1;
|
||
\ 00006D EA MOV A,R2
|
||
\ 00006E 2422 ADD A,#0x22
|
||
\ 000070 F8 MOV R0,A
|
||
\ 000071 E4 CLR A
|
||
\ 000072 3B ADDC A,R3
|
||
\ 000073 F9 MOV R1,A
|
||
\ 000074 8882 MOV DPL,R0
|
||
\ 000076 F583 MOV DPH,A
|
||
\ 000078 E0 MOVX A,@DPTR
|
||
\ 000079 2401 ADD A,#0x1
|
||
\ 00007B FC MOV R4,A
|
||
\ 00007C A3 INC DPTR
|
||
\ 00007D E0 MOVX A,@DPTR
|
||
\ 00007E 3400 ADDC A,#0x0
|
||
\ 000080 FD MOV R5,A
|
||
\ 000081 7413 MOV A,#0x13
|
||
\ 000083 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000086 EC MOV A,R4
|
||
\ 000087 F0 MOVX @DPTR,A
|
||
\ 000088 A3 INC DPTR
|
||
\ 000089 ED MOV A,R5
|
||
\ 00008A 12.... LCALL ??Subroutine120_0 & 0xFFFF
|
||
1910 inMsg.TransSeq = pData->cmd.Data[0];
|
||
\ ??CrossCallReturnLabel_191:
|
||
\ 00008D 12.... LCALL ??Subroutine124_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_213:
|
||
\ 000090 E0 MOVX A,@DPTR
|
||
\ 000091 C0E0 PUSH A
|
||
\ 000093 740F MOV A,#0xf
|
||
\ 000095 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 000098 D0E0 POP A
|
||
\ 00009A F0 MOVX @DPTR,A
|
||
1911 inMsg.macDestAddr = pData->macDestAddr;
|
||
\ 00009B EA MOV A,R2
|
||
\ 00009C 2412 ADD A,#0x12
|
||
\ 00009E F582 MOV DPL,A
|
||
\ 0000A0 E4 CLR A
|
||
\ 0000A1 3B ADDC A,R3
|
||
\ 0000A2 F583 MOV DPH,A
|
||
\ 0000A4 12.... LCALL ??Subroutine144_0 & 0xFFFF
|
||
\ ??CrossCallReturnLabel_327:
|
||
\ 0000A7 7411 MOV A,#0x11
|
||
\ 0000A9 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 0000AC 12.... LCALL ??Subroutine134_0 & 0xFFFF
|
||
1912
|
||
1913 handled = ZDO_SendMsgCBs( &inMsg );
|
||
\ ??CrossCallReturnLabel_254:
|
||
\ 0000AF ; Setup parameters for call to function ZDO_SendMsgCBs
|
||
\ 0000AF AA.. MOV R2,?XSP + 0
|
||
\ 0000B1 AB.. MOV R3,?XSP + 1
|
||
\ 0000B3 12.... LCALL `??ZDO_SendMsgCBs::?relay`; Banked call to: ZDO_SendMsgCBs
|
||
\ 0000B6 E9 MOV A,R1
|
||
\ 0000B7 FA MOV R2,A
|
||
\ 0000B8 8001 SJMP ??ZDP_IncomingData_0
|
||
1914
|
||
1915 #if (defined MT_ZDO_CB_FUNC)
|
||
1916 #if !defined MT_TASK
|
||
1917 if (zgZdoDirectCB)
|
||
1918 #endif
|
||
1919 {
|
||
1920 MT_ZdoDirectCB( pData, &inMsg );
|
||
1921 }
|
||
1922 #endif
|
||
1923
|
||
1924 while ( zdpMsgProcs[x].clusterID != 0xFFFF )
|
||
1925 {
|
||
1926 if ( zdpMsgProcs[x].clusterID == inMsg.clusterID )
|
||
1927 {
|
||
1928 zdpMsgProcs[x].pFn( &inMsg );
|
||
1929 return;
|
||
1930 }
|
||
1931 x++;
|
||
\ ??ZDP_IncomingData_1:
|
||
\ 0000BA 0E INC R6
|
||
\ ??ZDP_IncomingData_0:
|
||
\ 0000BB EE MOV A,R6
|
||
\ 0000BC F5.. MOV ?V0,A
|
||
\ 0000BE 75..00 MOV ?V1,#0x0
|
||
\ 0000C1 7402 MOV A,#0x2
|
||
\ 0000C3 78.. MOV R0,#?V0
|
||
\ 0000C5 12.... LCALL ?S_SHL
|
||
\ 0000C8 74.. MOV A,#zdpMsgProcs & 0xff
|
||
\ 0000CA 25.. ADD A,?V0
|
||
\ 0000CC F582 MOV DPL,A
|
||
\ 0000CE 74.. MOV A,#(zdpMsgProcs >> 8) & 0xff
|
||
\ 0000D0 35.. ADDC A,?V1
|
||
\ 0000D2 F583 MOV DPH,A
|
||
\ 0000D4 E4 CLR A
|
||
\ 0000D5 93 MOVC A,@A+DPTR
|
||
\ 0000D6 F8 MOV R0,A
|
||
\ 0000D7 7401 MOV A,#0x1
|
||
\ 0000D9 93 MOVC A,@A+DPTR
|
||
\ 0000DA F9 MOV R1,A
|
||
\ 0000DB 74FF MOV A,#-0x1
|
||
\ 0000DD 68 XRL A,R0
|
||
\ 0000DE 7003 JNZ ??ZDP_IncomingData_2
|
||
\ 0000E0 74FF MOV A,#-0x1
|
||
\ 0000E2 69 XRL A,R1
|
||
\ ??ZDP_IncomingData_2:
|
||
\ 0000E3 6042 JZ ??ZDP_IncomingData_3
|
||
\ 0000E5 E4 CLR A
|
||
\ 0000E6 93 MOVC A,@A+DPTR
|
||
\ 0000E7 F8 MOV R0,A
|
||
\ 0000E8 7401 MOV A,#0x1
|
||
\ 0000EA 93 MOVC A,@A+DPTR
|
||
\ 0000EB F9 MOV R1,A
|
||
\ 0000EC 740C MOV A,#0xc
|
||
\ 0000EE 12.... LCALL ?XSTACK_DISP0_8
|
||
\ 0000F1 E0 MOVX A,@DPTR
|
||
\ 0000F2 68 XRL A,R0
|
||
\ 0000F3 7003 JNZ ??ZDP_IncomingData_4
|
||
\ 0000F5 A3 INC DPTR
|
||
\ 0000F6 E0 MOVX A,@DPTR
|
||
\ 0000F7 69 XRL A,R1
|
||
\ ??ZDP_IncomingData_4:
|
||
\ 0000F8 70C0 JNZ ??ZDP_IncomingData_1
|
||
\ 0000FA ; Setup parameters for indirect call
|
||
\ 0000FA AA.. MOV R2,?XSP + 0
|
||
\ 0000FC AB.. MOV R3,?XSP + 1
|
||
\ 0000FE EE MOV A,R6
|
||
\ 0000FF F5.. MOV ?V0,A
|
||
\ 000101 75..00 MOV ?V1,#0x0
|
||
\ 000104 7402 MOV A,#0x2
|
||
\ 000106 78.. MOV R0,#?V0
|
||
\ 000108 12.... LCALL ?S_SHL
|
||
\ 00010B 74.. MOV A,#(zdpMsgProcs + 2) & 0xff
|
||
\ 00010D 25.. ADD A,?V0
|
||
\ 00010F F582 MOV DPL,A
|
||
\ 000111 74.. MOV A,#((zdpMsgProcs + 2) >> 8) & 0xff
|
||
\ 000113 35.. ADDC A,?V1
|
||
\ 000115 F583 MOV DPH,A
|
||
\ 000117 E4 CLR A
|
||
\ 000118 93 MOVC A,@A+DPTR
|
||
\ 000119 C0E0 PUSH A
|
||
\ 00011B 7401 MOV A,#0x1
|
||
\ 00011D 93 MOVC A,@A+DPTR
|
||
\ 00011E F583 MOV DPH,A
|
||
\ 000120 D082 POP DPL
|
||
\ 000122 12.... LCALL ?CALL_IND
|
||
\ 000125 800A SJMP ??ZDP_IncomingData_5
|
||
1932 }
|
||
1933
|
||
1934 // Handle unhandled messages
|
||
1935 if ( !handled )
|
||
\ ??ZDP_IncomingData_3:
|
||
\ 000127 EA MOV A,R2
|
||
\ 000128 7007 JNZ ??ZDP_IncomingData_5
|
||
1936 ZDApp_InMsgCB( &inMsg );
|
||
\ 00012A ; Setup parameters for call to function ZDApp_InMsgCB
|
||
\ 00012A AA.. MOV R2,?XSP + 0
|
||
\ 00012C AB.. MOV R3,?XSP + 1
|
||
\ 00012E 12.... LCALL `??ZDApp_InMsgCB::?relay`; Banked call to: ZDApp_InMsgCB
|
||
1937 }
|
||
\ ??ZDP_IncomingData_5:
|
||
\ 000131 7415 MOV A,#0x15
|
||
\ 000133 02.... LJMP ??Subroutine112_0 & 0xFFFF
|
||
|
||
\ In segment XDATA_ID, align 1, keep-with-next
|
||
\ `?<Initializer for ZDP_TmpBuf>`:
|
||
\ 000000 .... DW ZDP_Buf + 1H
|
||
1938
|
||
1939 /*********************************************************************
|
||
1940 *********************************************************************/
|
||
1941
|
||
|
||
Maximum stack usage in bytes:
|
||
|
||
ISTACK XSTACK Function
|
||
------ ------ --------
|
||
1 14 ZDO_RegisterForZDOMsg
|
||
0 14 -> osal_mem_alloc
|
||
0 9 ZDO_RemoveRegisteredCB
|
||
0 9 -> osal_mem_free
|
||
0 50 ZDO_SendMsgCBs
|
||
0 19 -> osal_memcpy
|
||
0 16 -> osal_msg_allocate
|
||
0 16 -> osal_msg_send
|
||
1 26 ZDP_BindUnbindReq
|
||
0 18 -> fillAndSend
|
||
0 16 -> sAddrExtCpy
|
||
1 16 -> sAddrExtCpy
|
||
1 22 ZDP_DeviceAnnce
|
||
0 21 -> fillAndSend
|
||
0 19 -> sAddrExtCpy
|
||
1 27 ZDP_EPRsp
|
||
0 19 -> fillAndSend
|
||
0 20 -> osal_memcpy
|
||
1 29 ZDP_EndDeviceBindReq
|
||
0 18 -> NLME_GetExtAddr
|
||
0 18 -> NLME_GetShortAddr
|
||
0 20 -> fillAndSend
|
||
0 18 -> sAddrExtCpy
|
||
1 16 ZDP_GenericRsp
|
||
0 12 -> fillAndSend
|
||
1 21 ZDP_IEEEAddrReq
|
||
0 21 -> fillAndSend
|
||
1 31 ZDP_IncomingData
|
||
0 31 -> ZDApp_InMsgCB
|
||
0 31 -> ZDO_SendMsgCBs
|
||
1 24 ZDP_MatchDescReq
|
||
0 16 -> fillAndSend
|
||
1 27 ZDP_MgmtBindRsp
|
||
0 22 -> fillAndSend
|
||
0 20 -> osal_mem_alloc
|
||
0 20 -> osal_mem_free
|
||
0 20 -> sAddrExtCpy
|
||
1 15 ZDP_MgmtDirectJoinReq
|
||
0 14 -> fillAndSend
|
||
0 12 -> sAddrExtCpy
|
||
0 16 ZDP_MgmtLeaveReq
|
||
0 14 -> fillAndSend
|
||
0 12 -> sAddrExtCpy
|
||
1 27 ZDP_MgmtLqiRsp
|
||
0 22 -> fillAndSend
|
||
0 20 -> osal_mem_alloc
|
||
0 20 -> osal_mem_free
|
||
0 20 -> sAddrExtCpy
|
||
1 20 ZDP_MgmtNwkDiscReq
|
||
0 14 -> fillAndSend
|
||
0 16 -> osal_buffer_uint32
|
||
1 27 ZDP_MgmtNwkDiscRsp
|
||
0 22 -> fillAndSend
|
||
0 20 -> osal_mem_alloc
|
||
0 20 -> osal_mem_free
|
||
0 20 -> sAddrExtCpy
|
||
1 33 ZDP_MgmtNwkUpdateNotify
|
||
0 19 -> fillAndSend
|
||
0 21 -> osal_buffer_uint32
|
||
0 17 -> osal_mem_alloc
|
||
0 17 -> osal_mem_free
|
||
0 20 -> osal_memcpy
|
||
1 24 ZDP_MgmtNwkUpdateReq
|
||
0 16 -> fillAndSend
|
||
0 18 -> osal_buffer_uint32
|
||
1 12 ZDP_MgmtPermitJoinReq
|
||
0 12 -> fillAndSend
|
||
1 26 ZDP_MgmtRtgRsp
|
||
0 21 -> fillAndSend
|
||
0 19 -> osal_mem_alloc
|
||
0 19 -> osal_mem_free
|
||
1 13 ZDP_NWKAddrOfInterestReq
|
||
0 12 -> fillAndSend
|
||
1 14 ZDP_NodeDescMsg
|
||
0 12 -> fillAndSend
|
||
1 23 ZDP_NwkAddrReq
|
||
0 23 -> fillAndSend
|
||
0 21 -> sAddrExtCmp
|
||
0 21 -> sAddrExtCpy
|
||
1 14 ZDP_PowerDescMsg
|
||
0 12 -> fillAndSend
|
||
1 19 ZDP_SendData
|
||
0 14 -> fillAndSend
|
||
1 21 ZDP_ServerDiscReq
|
||
0 21 -> fillAndSend
|
||
1 17 ZDP_ServerDiscRsp
|
||
0 13 -> fillAndSend
|
||
1 17 ZDP_SimpleDescMsg
|
||
0 17 -> fillAndSend
|
||
1 13 ZDP_SimpleDescReq
|
||
0 12 -> fillAndSend
|
||
1 23 ZDP_UserDescRsp
|
||
0 19 -> fillAndSend
|
||
0 20 -> osal_memcpy
|
||
1 19 ZDP_UserDescSet
|
||
0 16 -> fillAndSend
|
||
0 17 -> osal_memcpy
|
||
0 14 -> osal_memset
|
||
1 67 fillAndSend
|
||
0 34 -> AF_DataRequest
|
||
0 25 -> osal_memset
|
||
1 33 zdpProcessAddrReq
|
||
0 31 -> AddrMgrEntryGet
|
||
0 31 -> AssocGetWithExt
|
||
0 31 -> AssocGetWithShort
|
||
0 31 -> AssocMakeList
|
||
0 33 -> fillAndSend
|
||
0 31 -> osal_mem_free
|
||
0 31 -> sAddrExtCmp
|
||
0 31 -> sAddrExtCpy
|
||
|
||
|
||
Segment part sizes:
|
||
|
||
Bytes Function/Label
|
||
----- --------------
|
||
2 ?<Initializer for ZDP_TmpBuf>
|
||
4 ??Subroutine109_0
|
||
8 ??Subroutine110_0
|
||
3 ??Subroutine111_0
|
||
8 ??Subroutine112_0
|
||
5 ??Subroutine113_0
|
||
2 ??Subroutine114_0
|
||
5 ??Subroutine115_0
|
||
2 ??Subroutine116_0
|
||
9 ??Subroutine117_0
|
||
6 ??Subroutine118_0
|
||
7 ??Subroutine119_0
|
||
6 ??Subroutine120_0
|
||
4 ??Subroutine121_0
|
||
7 ??Subroutine122_0
|
||
6 ??Subroutine123_0
|
||
4 ??Subroutine124_0
|
||
8 ??Subroutine125_0
|
||
3 ??Subroutine126_0
|
||
3 ??Subroutine127_0
|
||
5 ??Subroutine128_0
|
||
13 ??Subroutine129_0
|
||
6 ??Subroutine130_0
|
||
5 ??Subroutine131_0
|
||
6 ??Subroutine132_0
|
||
8 ??Subroutine133_0
|
||
6 ??Subroutine134_0
|
||
6 ??Subroutine135_0
|
||
6 ??Subroutine136_0
|
||
11 ??Subroutine137_0
|
||
3 ??Subroutine138_0
|
||
5 ??Subroutine139_0
|
||
6 ??Subroutine140_0
|
||
5 ??Subroutine141_0
|
||
6 ??Subroutine142_0
|
||
3 ??Subroutine143_0
|
||
4 ??Subroutine144_0
|
||
5 ??Subroutine145_0
|
||
14 ?Subroutine0
|
||
10 ?Subroutine1
|
||
14 ?Subroutine10
|
||
14 ?Subroutine100
|
||
12 ?Subroutine101
|
||
8 ?Subroutine102
|
||
6 ?Subroutine103
|
||
7 ?Subroutine104
|
||
6 ?Subroutine105
|
||
8 ?Subroutine106
|
||
9 ?Subroutine107
|
||
3 ?Subroutine108
|
||
42 ?Subroutine11
|
||
18 ?Subroutine12
|
||
7 ?Subroutine13
|
||
8 ?Subroutine14
|
||
5 ?Subroutine15
|
||
5 ?Subroutine16
|
||
8 ?Subroutine17
|
||
12 ?Subroutine18
|
||
5 ?Subroutine19
|
||
10 ?Subroutine2
|
||
6 ?Subroutine20
|
||
4 ?Subroutine21
|
||
6 ?Subroutine22
|
||
5 ?Subroutine23
|
||
6 ?Subroutine24
|
||
10 ?Subroutine25
|
||
4 ?Subroutine26
|
||
11 ?Subroutine27
|
||
3 ?Subroutine28
|
||
1 ?Subroutine29
|
||
5 ?Subroutine3
|
||
9 ?Subroutine30
|
||
6 ?Subroutine31
|
||
4 ?Subroutine32
|
||
7 ?Subroutine33
|
||
9 ?Subroutine34
|
||
12 ?Subroutine35
|
||
9 ?Subroutine36
|
||
3 ?Subroutine37
|
||
4 ?Subroutine38
|
||
13 ?Subroutine39
|
||
2 ?Subroutine4
|
||
5 ?Subroutine40
|
||
13 ?Subroutine41
|
||
13 ?Subroutine42
|
||
2 ?Subroutine43
|
||
10 ?Subroutine44
|
||
9 ?Subroutine45
|
||
3 ?Subroutine46
|
||
2 ?Subroutine47
|
||
6 ?Subroutine48
|
||
8 ?Subroutine49
|
||
5 ?Subroutine5
|
||
6 ?Subroutine50
|
||
9 ?Subroutine51
|
||
3 ?Subroutine52
|
||
5 ?Subroutine53
|
||
3 ?Subroutine54
|
||
6 ?Subroutine55
|
||
11 ?Subroutine56
|
||
5 ?Subroutine57
|
||
4 ?Subroutine58
|
||
5 ?Subroutine59
|
||
11 ?Subroutine6
|
||
4 ?Subroutine60
|
||
5 ?Subroutine61
|
||
10 ?Subroutine62
|
||
4 ?Subroutine63
|
||
4 ?Subroutine64
|
||
10 ?Subroutine65
|
||
4 ?Subroutine66
|
||
8 ?Subroutine67
|
||
2 ?Subroutine68
|
||
11 ?Subroutine69
|
||
5 ?Subroutine7
|
||
10 ?Subroutine70
|
||
2 ?Subroutine71
|
||
12 ?Subroutine72
|
||
6 ?Subroutine73
|
||
10 ?Subroutine74
|
||
11 ?Subroutine75
|
||
13 ?Subroutine76
|
||
12 ?Subroutine77
|
||
15 ?Subroutine78
|
||
4 ?Subroutine79
|
||
22 ?Subroutine8
|
||
11 ?Subroutine80
|
||
5 ?Subroutine81
|
||
1 ?Subroutine82
|
||
10 ?Subroutine83
|
||
3 ?Subroutine84
|
||
7 ?Subroutine85
|
||
5 ?Subroutine86
|
||
4 ?Subroutine87
|
||
7 ?Subroutine88
|
||
4 ?Subroutine89
|
||
8 ?Subroutine9
|
||
5 ?Subroutine90
|
||
16 ?Subroutine91
|
||
6 ?Subroutine92
|
||
11 ?Subroutine93
|
||
2 ?Subroutine94
|
||
7 ?Subroutine95
|
||
9 ?Subroutine96
|
||
9 ?Subroutine97
|
||
9 ?Subroutine98
|
||
11 ?Subroutine99
|
||
139 ZDO_RegisterForZDOMsg
|
||
106 ZDO_RemoveRegisteredCB
|
||
200 ZDO_SendMsgCBs
|
||
1 ZDP_AF_ENDPOINT
|
||
217 ZDP_BindUnbindReq
|
||
80 ZDP_Buf
|
||
74 ZDP_DeviceAnnce
|
||
159 ZDP_EPRsp
|
||
294 ZDP_EndDeviceBindReq
|
||
86 ZDP_GenericRsp
|
||
65 ZDP_IEEEAddrReq
|
||
310 ZDP_IncomingData
|
||
251 ZDP_MatchDescReq
|
||
280 ZDP_MgmtBindRsp
|
||
16 ZDP_MgmtDirectJoinReq
|
||
44 ZDP_MgmtLeaveReq
|
||
359 ZDP_MgmtLqiRsp
|
||
55 ZDP_MgmtNwkDiscReq
|
||
313 ZDP_MgmtNwkDiscRsp
|
||
195 ZDP_MgmtNwkUpdateNotify
|
||
109 ZDP_MgmtNwkUpdateReq
|
||
20 ZDP_MgmtPermitJoinReq
|
||
222 ZDP_MgmtRtgRsp
|
||
15 ZDP_NWKAddrOfInterestReq
|
||
209 ZDP_NodeDescMsg
|
||
117 ZDP_NwkAddrReq
|
||
92 ZDP_PowerDescMsg
|
||
112 ZDP_SendData
|
||
75 ZDP_ServerDiscReq
|
||
99 ZDP_ServerDiscRsp
|
||
334 ZDP_SimpleDescMsg
|
||
27 ZDP_SimpleDescReq
|
||
2 ZDP_TmpBuf
|
||
1 ZDP_TransID
|
||
1 ZDP_TxOptions
|
||
145 ZDP_UserDescRsp
|
||
112 ZDP_UserDescSet
|
||
162 fillAndSend
|
||
2 zdoMsgCBs
|
||
48 zdpMsgProcs
|
||
699 zdpProcessAddrReq
|
||
204 -- Other
|
||
|
||
|
||
6 769 bytes in segment BANKED_CODE
|
||
204 bytes in segment BANK_RELAYS
|
||
49 bytes in segment CODE_C
|
||
2 bytes in segment XDATA_I
|
||
2 bytes in segment XDATA_ID
|
||
84 bytes in segment XDATA_Z
|
||
|
||
255 bytes of CODE memory
|
||
6 769 bytes of HUGECODE memory
|
||
86 bytes of XDATA memory
|
||
|
||
Errors: none
|
||
Warnings: none
|