📄 zdprofile.lst
字号:
259 afStatus_t ZDP_IEEEAddrReq( uint16 shortAddr, byte ReqType,
\ ZDP_IEEEAddrReq:
260 byte StartIndex, byte SecurityEnable )
261 {
\ 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 FD MOV R5,A
262 byte *pBuf = ZDP_TmpBuf;
\ 00000C 12.... LCALL ?Subroutine13 & 0xFFFF
263 byte len = 2 + 1 + 1; // shortAddr + ReqType + StartIndex.
264 zAddrType_t dstAddr;
265
266 dstAddr.addrMode = (afAddrMode_t)Addr16Bit;
\ ??CrossCallReturnLabel_29:
\ 00000F 7408 MOV A,#0x8
\ 000011 12.... LCALL ?XSTACK_DISP0_8
\ 000014 7402 MOV A,#0x2
\ 000016 F0 MOVX @DPTR,A
267 dstAddr.addr.shortAddr = shortAddr;
\ 000017 85..82 MOV DPL,?XSP + 0
\ 00001A 85..83 MOV DPH,?XSP + 1
\ 00001D EA MOV A,R2
\ 00001E F0 MOVX @DPTR,A
\ 00001F A3 INC DPTR
\ 000020 EB MOV A,R3
\ 000021 F0 MOVX @DPTR,A
268
269 *pBuf++ = LO_UINT16( shortAddr );
\ 000022 EA MOV A,R2
\ 000023 8882 MOV DPL,R0
\ 000025 8983 MOV DPH,R1
\ 000027 F0 MOVX @DPTR,A
\ 000028 A3 INC DPTR
270 *pBuf++ = HI_UINT16( shortAddr );
\ 000029 EB MOV A,R3
\ 00002A F0 MOVX @DPTR,A
\ 00002B A3 INC DPTR
271
272 *pBuf++ = ReqType;
\ 00002C ED MOV A,R5
\ 00002D F0 MOVX @DPTR,A
273 *pBuf++ = StartIndex;
\ 00002E EC MOV A,R4
\ 00002F A3 INC DPTR
\ 000030 F0 MOVX @DPTR,A
274
275 return fillAndSend( &ZDP_TransID, &dstAddr, IEEE_addr_req, len );
\ 000031 ; Setup parameters for call to function fillAndSend
\ 000031 75..01 MOV ?V0 + 0,#0x1
\ 000034 75..00 MOV ?V0 + 1,#0x0
\ 000037 78.. MOV R0,#?V0 + 0
\ 000039 12.... LCALL ?PUSH_XSTACK_I_TWO
\ 00003C 7904 MOV R1,#0x4
\ 00003E 7402 MOV A,#0x2
\ 000040 12.... LCALL ?XSTACK_DISP0_8
\ 000043 AC82 MOV R4,DPL
\ 000045 AD83 MOV R5,DPH
\ 000047 7A.. MOV R2,#(ZDP_TransID & 0xff)
\ 000049 7B.. MOV R3,#((ZDP_TransID >> 8) & 0xff)
\ 00004B 90.... MOV DPTR,#(??fillAndSend & 0xffff)
\ 00004E 74.. MOV A,#((??fillAndSend >> 16) & 0xff)
\ 000050 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 000053 7402 MOV A,#0x2
\ 000055 12.... LCALL ?DEALLOC_XSTACK8
\ 000058 7409 MOV A,#0x9
\ 00005A 02.... LJMP ??Subroutine60_0 & 0xFFFF
276 }
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine60:
\ 000000 FD MOV R5,A
\ 000001 7402 MOV A,#0x2
\ 000003 12.... LCALL ?XSTACK_DISP0_8
\ 000006 AA82 MOV R2,DPL
\ 000008 AB83 MOV R3,DPH
\ 00000A 90.... MOV DPTR,#(??fillAndSend & 0xffff)
\ 00000D 74.. MOV A,#((??fillAndSend >> 16) & 0xff)
\ 00000F 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 000012 7402 MOV A,#0x2
\ 000014 12.... LCALL ?DEALLOC_XSTACK8
\ 000017 7401 MOV A,#0x1
\ ??Subroutine60_0:
\ 000019 12.... LCALL ?DEALLOC_XSTACK8
\ 00001C 7F02 MOV R7,#0x2
\ 00001E 02.... LJMP ?BANKED_LEAVE_XDATA
277 #endif
278
279 #if defined ( ZDO_MATCH_REQUEST )
280 /*********************************************************************
281 * @fn ZDP_MatchDescReq
282 *
283 * @brief This builds and send a Match_Desc_req message. This
284 * function sends a broadcast or unicast message
285 * requesting the list of endpoint/interfaces that
286 * match profile ID and cluster IDs.
287 *
288 * @param dstAddr - destination address
289 * @param ProfileID - Profile ID
290 * @param NumInClusters - number of input clusters
291 * @param InClusterList - input cluster ID list
292 * @param NumOutClusters - number of output clusters
293 * @param OutClusterList - output cluster ID list
294 * @param SecurityEnable - Security Options
295 *
296 * @return afStatus_t
297 */
\ In segment BANKED_CODE, align 1, keep-with-next
298 afStatus_t ZDP_MatchDescReq( zAddrType_t *dstAddr, uint16 nwkAddr,
\ ZDP_MatchDescReq:
299 uint16 ProfileID,
300 byte NumInClusters, cId_t *InClusterList,
301 byte NumOutClusters, cId_t *OutClusterList,
302 byte SecurityEnable )
303 {
\ 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 85..82 MOV DPL,?XSP + 0
\ 00000D 85..83 MOV DPH,?XSP + 1
\ 000010 EA MOV A,R2
\ 000011 F0 MOVX @DPTR,A
\ 000012 A3 INC DPTR
\ 000013 EB MOV A,R3
\ 000014 F0 MOVX @DPTR,A
\ 000015 EC MOV A,R4
\ 000016 FE MOV R6,A
\ 000017 ED MOV A,R5
\ 000018 FF MOV R7,A
\ 000019 89.. MOV ?V0 + 6,R1
\ 00001B 7412 MOV A,#0x12
\ 00001D 12.... LCALL ?XSTACK_DISP0_8
\ 000020 12.... LCALL ??Subroutine17_0 & 0xFFFF
\ ??CrossCallReturnLabel_43:
\ 000023 7416 MOV A,#0x16
\ 000025 12.... LCALL ?XSTACK_DISP0_8
\ 000028 E0 MOVX A,@DPTR
\ 000029 F5.. MOV ?V0 + 7,A
\ 00002B 7417 MOV A,#0x17
\ 00002D 12.... LCALL ?XSTACK_DISP0_8
\ 000030 12.... LCALL ?Subroutine20 & 0xFFFF
304 byte *pBuf = ZDP_TmpBuf;
\ ??CrossCallReturnLabel_48:
\ 000033 12.... LCALL ?Subroutine18 & 0xFFFF
305 // nwkAddr+ProfileID+NumInClusters+NumOutClusters.
306 byte i, len = 2 + 2 + 1 + 1; // nwkAddr+ProfileID+NumInClusters+NumOutClusters.
307 uint8 protoVer = NLME_GetProtocolVersion();
\ ??CrossCallReturnLabel_137:
\ 000036 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 000039 E9 MOV A,R1
\ 00003A FB MOV R3,A
308
309 len += (NumInClusters + NumOutClusters)*((protoVer != ZB_PROT_V1_0) ? sizeof ( uint16 ) : sizeof( uint8 ));
\ 00003B 7401 MOV A,#0x1
\ 00003D 6B XRL A,R3
\ 00003E 6004 JZ ??ZDP_MatchDescReq_0
\ 000040 7802 MOV R0,#0x2
\ 000042 8002 SJMP ??ZDP_MatchDescReq_1
\ ??ZDP_MatchDescReq_0:
\ 000044 7801 MOV R0,#0x1
\ ??ZDP_MatchDescReq_1:
\ 000046 E5.. MOV A,?V0 + 7
\ 000048 25.. ADD A,?V0 + 6
\ 00004A F5F0 MOV B,A
\ 00004C E8 MOV A,R0
\ 00004D A4 MUL AB
\ 00004E 2406 ADD A,#0x6
\ 000050 FA MOV R2,A
310
311 if ( len >= ZDP_BUF_SZ-1 )
\ 000051 C3 CLR C
\ 000052 944F SUBB A,#0x4f
\ 000054 4005 JC ??ZDP_MatchDescReq_2
312 {
313 return afStatus_MEM_FAIL;
\ 000056 7981 MOV R1,#-0x7f
\ 000058 02.... LJMP ??ZDP_MatchDescReq_3 & 0xFFFF
314 }
315
316 *pBuf++ = LO_UINT16( nwkAddr ); // NWKAddrOfInterest
\ ??ZDP_MatchDescReq_2:
\ 00005B EE MOV A,R6
\ 00005C 85..82 MOV DPL,?V0 + 2
\ 00005F 85..83 MOV DPH,?V0 + 3
\ 000062 F0 MOVX @DPTR,A
\ 000063 A3 INC DPTR
317 *pBuf++ = HI_UINT16( nwkAddr );
\ 000064 EF MOV A,R7
\ 000065 12.... LCALL ?Subroutine29 & 0xFFFF
318
319 *pBuf++ = LO_UINT16( ProfileID ); // Profile ID
320 *pBuf++ = HI_UINT16( ProfileID );
321
322 *pBuf++ = NumInClusters; // Input cluster list
\ ??CrossCallReturnLabel_67:
\ 000068 E5.. MOV A,?V0 + 6
\ 00006A 12.... LCALL ?Subroutine31 & 0xFFFF
323 if ( NumInClusters )
\ ??CrossCallReturnLabel_71:
\ 00006D 6028 JZ ??ZDP_MatchDescReq_4
324 {
325 for (i=0; i<NumInClusters; ++i) {
\ 00006F 7C00 MOV R4,#0x0
326 *pBuf++ = LO_UINT16( InClusterList[i] );
\ ??ZDP_MatchDescReq_5:
\ 000071 EC MOV A,R4
\ 000072 C3 CLR C
\ 000073 33 RLC A
\ 000074 F8 MOV R0,A
\ 000075 E4 CLR A
\ 000076 33 RLC A
\ 000077 F9 MOV R1,A
\ 000078 7414 MOV A,#0x14
\ 00007A 12.... LCALL ?XSTACK_DISP0_8
\ 00007D 12.... LCALL ?Subroutine26 & 0xFFFF
\ ??CrossCallReturnLabel_61:
\ 000080 12.... LCALL ?Subroutine9 & 0xFFFF
327 if (protoVer != ZB_PROT_V1_0) {
\ ??CrossCallReturnLabel_20:
\ 000083 600B JZ ??CrossCallReturnLabel_36
328 *pBuf++ = HI_UINT16( InClusterList[i] );
\ 000085 7414 MOV A,#0x14
\ 000087 12.... LCALL ?XSTACK_DISP0_8
\ 00008A 12.... LCALL ?Subroutine26 & 0xFFFF
\ ??CrossCallReturnLabel_62:
\ 00008D 12.... LCALL ?Subroutine14 & 0xFFFF
329 }
330 }
\ ??CrossCallReturnLabel_36:
\ 000090 0C INC R4
\ 000091 EC MOV A,R4
\ 000092 C3 CLR C
\ 000093 95.. SUBB A,?V0 + 6
\ 000095 40DA JC ??ZDP_MatchDescReq_5
331 }
332
333 *pBuf++ = NumOutClusters; // Output cluster list
\ ??ZDP_MatchDescReq_4:
\ 000097 85..82 MOV DPL,?V0 + 2
\ 00009A 85..83 MOV DPH,?V0 + 3
\ 00009D E5.. MOV A,?V0 + 7
\ 00009F 12.... LCALL ?Subroutine31 & 0xFFFF
334 if ( NumOutClusters )
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -