📄 zdprofile.s51
字号:
// 222 byte len = Z_EXTADDR_LEN + 1 + 1; // IEEEAddress + ReqType + StartIndex.
// 223 zAddrType_t dstAddr;
// 224
// 225 if ( osal_ExtAddrEqual( saveExtAddr, IEEEAddress ) == FALSE )
??CrossCallReturnLabel_52:
; Setup parameters for call to function osal_ExtAddrEqual
MOV R4,?V0 + 2
MOV R5,?V0 + 3
MOV R2,#(saveExtAddr & 0xff)
MOV R3,#((saveExtAddr >> 8) & 0xff)
MOV DPTR,#(osal_ExtAddrEqual & 0xffff)
MOV A,#((osal_ExtAddrEqual >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV A,R1
JNZ ??ZDP_NwkAddrReq_0
// 226 {
// 227 dstAddr.addrMode = AddrBroadcast;
MOV A,#0x8
LCALL ?XSTACK_DISP0_8
MOV A,#0xf
MOVX @DPTR,A
// 228 dstAddr.addr.shortAddr = NWK_BROADCAST_SHORTADDR;
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOV A,#-0x1
MOVX @DPTR,A
INC DPTR
SJMP ??CrossCallReturnLabel_26
// 229 }
// 230 else
// 231 {
// 232 dstAddr.addrMode = Addr16Bit;
??ZDP_NwkAddrReq_0:
MOV A,#0x8
LCALL ?XSTACK_DISP0_8
MOV A,#0x2
MOVX @DPTR,A
// 233 dstAddr.addr.shortAddr = ZDAppNwkAddr.addr.shortAddr;
MOV DPTR,#ZDAppNwkAddr
LCALL ?Subroutine12 & 0xFFFF
??CrossCallReturnLabel_26:
MOVX @DPTR,A
// 234 }
// 235
// 236 pBuf = osal_cpyExtAddr( pBuf, IEEEAddress );
; Setup parameters for call to function osal_cpyExtAddr
MOV R4,?V0 + 2
MOV R5,?V0 + 3
MOV A,R6
MOV R2,A
MOV A,R7
MOV R3,A
MOV DPTR,#(osal_cpyExtAddr & 0xffff)
MOV A,#((osal_cpyExtAddr >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV ?V0 + 2,R2
MOV ?V0 + 3,R3
MOV R6,?V0 + 2
MOV R7,?V0 + 3
// 237
// 238 *pBuf++ = ReqType;
MOV DPL,R6
MOV DPH,R7
MOV A,?V0 + 0
MOVX @DPTR,A
// 239 *pBuf++ = StartIndex;
INC DPTR
MOV A,?V0 + 1
MOVX @DPTR,A
// 240
// 241 return fillAndSend( &ZDP_TransID, &dstAddr, NWK_addr_req, len );
; Setup parameters for call to function fillAndSend
MOV ?V0 + 0,#0x0
MOV ?V0 + 1,#0x0
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_TWO
CFI CFA_XSP16 add(XSP16, 23)
MOV R1,#0xa
MOV A,#0x2
LCALL ?XSTACK_DISP0_8
MOV R4,DPL
MOV R5,DPH
MOV R2,#(ZDP_TransID & 0xff)
MOV R3,#((ZDP_TransID >> 8) & 0xff)
MOV DPTR,#(??fillAndSend & 0xffff)
MOV A,#((??fillAndSend >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV A,#0x2
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 21)
MOV A,#0x9
CFI EndBlock cfiBlock3
REQUIRE ?Subroutine59
; // Fall through to label ?Subroutine59
// 242 }
RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine59:
CFI Block cfiBlock4 Using cfiCommon0
CFI NoFunction
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 21)
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI Invalid
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 12)
CFI Valid
MOV R7,#0x4
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock4
// 243 #endif
// 244
// 245 #if defined ( ZDO_IEEEADDR_REQUEST )
// 246 /*********************************************************************
// 247 * @fn ZDP_IEEEAddrReq
// 248 *
// 249 * @brief This builds and send a IEEE_addr_req message. This
// 250 * function sends a unicast message looking for a 64
// 251 * bit IEEE address with a 16 bit address as bait.
// 252 *
// 253 * @param ReqType - ZDP_IEEEADDR_REQTYPE_SINGLE or
// 254 * ZDP_IEEEADDR_REQTYPE_EXTENDED
// 255 * @param SecurityEnable - Security Options
// 256 *
// 257 * @return afStatus_t
// 258 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 259 afStatus_t ZDP_IEEEAddrReq( uint16 shortAddr, byte ReqType,
ZDP_IEEEAddrReq:
CFI Block cfiBlock5 Using cfiCommon0
CFI Function ZDP_IEEEAddrReq
// 260 byte StartIndex, byte SecurityEnable )
// 261 {
FUNCALL ZDP_IEEEAddrReq, ??fillAndSend
LOCFRAME XSTACK, 21, STACK
ARGFRAME XSTACK, 21, STACK
MOV A,#-0xa
LCALL ?BANKED_ENTER_XDATA
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 10)
; Saved register size: 10
; Auto size: 9
MOV A,#-0x9
LCALL ?ALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 19)
MOV A,R1
MOV R5,A
// 262 byte *pBuf = ZDP_TmpBuf;
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:
MOV A,#0x8
LCALL ?XSTACK_DISP0_8
MOV A,#0x2
MOVX @DPTR,A
// 267 dstAddr.addr.shortAddr = shortAddr;
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R3
MOVX @DPTR,A
// 268
// 269 *pBuf++ = LO_UINT16( shortAddr );
MOV A,R2
MOV DPL,R0
MOV DPH,R1
MOVX @DPTR,A
INC DPTR
// 270 *pBuf++ = HI_UINT16( shortAddr );
MOV A,R3
MOVX @DPTR,A
INC DPTR
// 271
// 272 *pBuf++ = ReqType;
MOV A,R5
MOVX @DPTR,A
// 273 *pBuf++ = StartIndex;
MOV A,R4
INC DPTR
MOVX @DPTR,A
// 274
// 275 return fillAndSend( &ZDP_TransID, &dstAddr, IEEE_addr_req, len );
; Setup parameters for call to function fillAndSend
MOV ?V0 + 0,#0x1
MOV ?V0 + 1,#0x0
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_TWO
CFI CFA_XSP16 add(XSP16, 21)
MOV R1,#0x4
MOV A,#0x2
LCALL ?XSTACK_DISP0_8
MOV R4,DPL
MOV R5,DPH
MOV R2,#(ZDP_TransID & 0xff)
MOV R3,#((ZDP_TransID >> 8) & 0xff)
MOV DPTR,#(??fillAndSend & 0xffff)
MOV A,#((??fillAndSend >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV A,#0x2
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 19)
MOV A,#0x9
LJMP ??Subroutine60_0 & 0xFFFF
CFI EndBlock cfiBlock5
// 276 }
// 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 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 298 afStatus_t ZDP_MatchDescReq( zAddrType_t *dstAddr, uint16 nwkAddr,
ZDP_MatchDescReq:
CFI Block cfiBlock6 Using cfiCommon0
CFI Function ZDP_MatchDescReq
// 299 uint16 ProfileID,
// 300 byte NumInClusters, cId_t *InClusterList,
// 301 byte NumOutClusters, cId_t *OutClusterList,
// 302 byte SecurityEnable )
// 303 {
FUNCALL ZDP_MatchDescReq, NLME_GetProtocolVersion
LOCFRAME XSTACK, 18, STACK
ARGFRAME XSTACK, 18, STACK
FUNCALL ZDP_MatchDescReq, ??fillAndSend
LOCFRAME XSTACK, 20, STACK
ARGFRAME XSTACK, 20, STACK
MOV A,#-0x10
LCALL ?BANKED_ENTER_XDATA
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V7 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-16)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 16)
; Saved register size: 16
; Auto size: 2
MOV A,#-0x2
LCALL ?ALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 18)
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R3
MOVX @DPTR,A
MOV A,R4
MOV R6,A
MOV A,R5
MOV R7,A
MOV ?V0 + 6,R1
MOV A,#0x12
LCALL ?XSTACK_DISP0_8
LCALL ??Subroutine17_0 & 0xFFFF
??CrossCallReturnLabel_43:
MOV A,#0x16
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
MOV ?V0 + 7,A
MOV A,#0x17
LCALL ?XSTACK_DISP0_8
LCALL ?Subroutine20 & 0xFFFF
// 304 byte *pBuf = ZDP_TmpBuf;
??CrossCallReturnLabel_48:
LCALL ?Subroutine18 & 0xFFFF
// 305 // nwkAddr+ProfileID+NumInClusters+NumOutClusters.
// 306 byte i, len = 2 + 2 + 1 + 1; // nwkAddr+ProfileID+NumInClusters+NumOutClusters.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -