zdprofile.s51
来自「TI的基于ZIGBEE2006的协议栈」· S51 代码 · 共 1,509 行 · 第 1/5 页
S51
1,509 行
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 V6 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 15)
; Saved register size: 15
; Auto size: 4
MOV A,#-0x4
LCALL ?ALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 19)
MOV ?V0 + 0,R2
MOV ?V0 + 1,R3
MOV A,#0x13
LCALL ?XSTACK_DISP0_8
LCALL ?Subroutine40 & 0xFFFF
// 120 #if ( AF_V1_SUPPORT )
// 121
// 122 byte proVer = NLME_GetProtocolVersion();
// 123 #endif
// 124 afAddrType_t afAddr;
// 125
// 126 ZADDR_TO_AFADDR( addr, afAddr );
??CrossCallReturnLabel_90:
MOV A,#0x3
LCALL ?XSTACK_DISP0_8
CLR A
MOVX @DPTR,A
MOV DPL,R4
MOV DPH,R5
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOVX A,@DPTR
PUSH A
CFI CFA_SP SP+-1
MOV A,#0x2
LCALL ?XSTACK_DISP0_8
POP A
CFI CFA_SP SP+0
MOVX @DPTR,A
MOV DPL,R4
MOV DPH,R5
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R3,A
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R3
MOVX @DPTR,A
// 127
// 128 #if ( AF_V1_SUPPORT )
// 129 if ( proVer == ZB_PROT_V1_0 )
// 130 {
// 131 return ( afFillAndSendMessage( &afAddr, ZDP_AF_ENDPOINT, clusterID,
// 132 1, FRAMETYPE_MSG, transSeq,
// 133 NULL, NULL, NULL, NULL, len, ZDP_TmpBuf,
// 134 ZDP_TxOptions, FALSE, AF_DEFAULT_RADIUS ) );
// 135 }
// 136 else
// 137 #endif
// 138 {
// 139 *(ZDP_TmpBuf-1) = *transSeq;
MOV DPTR,#??ZDP_TmpBuf
MOVX A,@DPTR
ADD A,#-0x1
MOV ?V0 + 4,A
INC DPTR
MOVX A,@DPTR
ADDC A,#-0x1
MOV ?V0 + 5,A
MOV DPL,?V0 + 0
MOV DPH,?V0 + 1
MOVX A,@DPTR
MOV DPL,?V0 + 4
MOV DPH,?V0 + 5
MOVX @DPTR,A
// 140
// 141 return AF_DataRequest( &afAddr, &ZDApp_epDesc, clusterID,
// 142 (uint16)(len+1), (uint8*)(ZDP_TmpBuf-1),
// 143 transSeq, ZDP_TxOptions, AF_DEFAULT_RADIUS );
; Setup parameters for call to function AF_DataRequest
MOV ?V0 + 6,#0xa
MOV R0,#?V0 + 6
LCALL ?PUSH_XSTACK_I_ONE
CFI CFA_XSP16 add(XSP16, 20)
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_TWO
CFI CFA_XSP16 add(XSP16, 22)
MOV R0,#?V0 + 4
LCALL ?PUSH_XSTACK_I_TWO
CFI CFA_XSP16 add(XSP16, 24)
MOV ?V0 + 0,R1
MOV A,#0x1
ADD A,?V0 + 0
MOV ?V0 + 0,A
CLR A
ADDC A,#0x0
MOV ?V0 + 1,A
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_TWO
CFI CFA_XSP16 add(XSP16, 26)
MOV R0,#?V0 + 2
LCALL ?PUSH_XSTACK_I_TWO
CFI CFA_XSP16 add(XSP16, 28)
MOV DPTR,#??ZDP_TxOptions
MOVX A,@DPTR
MOV R1,A
MOV R4,#(ZDApp_epDesc & 0xff)
MOV R5,#((ZDApp_epDesc >> 8) & 0xff)
MOV A,#0x9
LCALL ?XSTACK_DISP0_8
MOV R2,DPL
MOV R3,DPH
MOV DPTR,#(AF_DataRequest & 0xffff)
MOV A,#((AF_DataRequest >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV A,#0x9
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 19)
MOV A,#0x4
CFI EndBlock cfiBlock0
REQUIRE ?Subroutine55
; // Fall through to label ?Subroutine55
// 144 }
// 145 }
RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine55:
CFI Block cfiBlock1 Using cfiCommon0
CFI NoFunction
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 16)
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-14)))
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(-15)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V6 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, 15)
CFI Valid
MOV R7,#0x7
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock1
// 146
// 147 /*********************************************************************
// 148 * @fn ZDP_SendData
// 149 *
// 150 * @brief This builds and send a request message that has
// 151 * NWKAddrOfInterest as its only parameter.
// 152 *
// 153 * @param dstAddr - destination address
// 154 * @param cmd - clusterID
// 155 * @param dataLen - number of bytes of data
// 156 * @param data - pointer to the data
// 157 * @param SecurityEnable - Security Options
// 158 *
// 159 * @return afStatus_t
// 160 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 161 afStatus_t ZDP_SendData( byte *TransSeq, zAddrType_t *dstAddr, uint16 cmd,
ZDP_SendData:
CFI Block cfiBlock2 Using cfiCommon0
CFI Function ZDP_SendData
// 162 byte len, byte *buf, byte SecurityEnable )
// 163 {
FUNCALL ZDP_SendData, ??fillAndSend
LOCFRAME XSTACK, 16, STACK
ARGFRAME XSTACK, 16, STACK
MOV A,#-0xe
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 V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 14)
; Saved register size: 14
; Auto size: 0
MOV ?V0 + 2,R1
MOV A,#0xe
LCALL ?XSTACK_DISP0_8
LCALL ??Subroutine16_0 & 0xFFFF
??CrossCallReturnLabel_40:
MOV A,#0x10
LCALL ?XSTACK_DISP0_8
LCALL ?Subroutine22 & 0xFFFF
??CrossCallReturnLabel_50:
MOV A,#0x12
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
MOV ?V0 + 3,A
// 164 byte *pBuf = ZDP_TmpBuf;
LCALL ?Subroutine10 & 0xFFFF
// 165 byte cnt = len;
??CrossCallReturnLabel_22:
MOV ?V0 + 4,?V0 + 2
SJMP ??ZDP_SendData_0
// 166
// 167 while ( cnt-- )
// 168 {
// 169 *pBuf++ = *buf++;
??ZDP_SendData_1:
LCALL ?Subroutine18 & 0xFFFF
??CrossCallReturnLabel_127:
MOV R6,DPL
MOV R7,DPH
MOV DPL,R0
MOV DPH,R1
INC DPTR
MOV R0,DPL
MOV R1,DPH
// 170 }
??ZDP_SendData_0:
MOV ?V0 + 5,?V0 + 4
MOV A,#-0x1
ADD A,?V0 + 5
MOV ?V0 + 4,A
MOV A,?V0 + 5
JNZ ??ZDP_SendData_1
// 171
// 172 FillAndSendTxOptions( TransSeq, dstAddr, cmd, len,
// 173 (AF_DEFAULT_RADIUS | ((SecurityEnable) ? AF_EN_SECURITY : 0)) );
MOV A,?V0 + 3
JZ ??ZDP_SendData_2
MOV R0,#0x40
SJMP ??ZDP_SendData_3
??ZDP_SendData_2:
MOV R0,#0x0
??ZDP_SendData_3:
MOV A,R0
ORL A,#0xa
MOV DPTR,#??ZDP_TxOptions
MOVX @DPTR,A
; Setup parameters for call to function fillAndSend
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_TWO
CFI CFA_XSP16 add(XSP16, 16)
MOV R1,?V0 + 2
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, 14)
CLR A
MOV DPTR,#??ZDP_TxOptions
MOVX @DPTR,A
MOV R7,#0x6
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock2
// 174 }
// 175
// 176 #if defined ( ZDO_NODEDESC_REQUEST ) || defined ( ZDO_POWERDESC_REQUEST ) ||\
// 177 defined ( ZDO_ACTIVEEP_REQUEST ) || defined ( ZDO_COMPLEXDESC_REQUEST ) ||\
// 178 defined ( ZDO_USERDESC_REQUEST )
// 179 /*********************************************************************
// 180 * @fn ZDP_NWKAddrOfInterestReq
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?