af.s51
来自「TI的基于ZIGBEE2006的协议栈」· S51 代码 · 共 1,631 行 · 第 1/5 页
S51
1,631 行
// 185 epList_t *afRegisterExtended( endPointDesc_t *epDesc, pDescCB descFn )
afRegisterExtended:
CFI Block cfiBlock1 Using cfiCommon0
CFI Function afRegisterExtended
// 186 {
FUNCALL afRegisterExtended, osal_mem_alloc
LOCFRAME XSTACK, 14, STACK
ARGFRAME XSTACK, 14, 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 A,R2
MOV R6,A
MOV A,R3
MOV R7,A
MOV A,#0xe
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
MOV ?V0 + 0,A
INC DPTR
MOVX A,@DPTR
MOV ?V0 + 1,A
INC DPTR
MOVX A,@DPTR
MOV ?V0 + 2,A
// 187 epList_t *ep;
// 188 epList_t *epSearch;
// 189
// 190 ep = osal_mem_alloc( sizeof ( epList_t ) );
; Setup parameters for call to function osal_mem_alloc
MOV R2,#0xa
MOV R3,#0x0
MOV DPTR,#(osal_mem_alloc & 0xffff)
MOV A,#((osal_mem_alloc >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 191 if ( ep )
MOV A,R2
JNZ ??afRegisterExtended_0
MOV A,R3
??afRegisterExtended_0:
JZ ??afRegisterExtended_1
// 192 {
// 193 // Fill in the new list entry
// 194 ep->epDesc = epDesc;
MOV DPL,R2
MOV DPH,R3
MOV A,R6
MOVX @DPTR,A
INC DPTR
MOV A,R7
LCALL ?Subroutine2 & 0xFFFF
// 195 #if !defined ( REFLECTOR )
// 196 ep->reflectorAddr = NWK_PAN_COORD_ADDR;
??CrossCallReturnLabel_2:
CLR A
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
// 197 #else
// 198 ep->reflectorAddr = INVALID_NODE_ADDR;
// 199 #endif
// 200 // Default to allow Match Descriptor.
// 201 ep->flags = eEP_AllowMatch;
MOV A,#0x1
MOV DPL,R2
MOV DPH,R3
INC DPTR
INC DPTR
INC DPTR
INC DPTR
LCALL ?Subroutine1 & 0xFFFF
// 202 #if ( AF_KVP_SUPPORT )
// 203 ep->flags |= ((epDesc->endPoint == ZDO_EP) ? 0 : eEP_UsesKVP);
// 204 #endif
// 205 ep->pfnDescCB = descFn;
??CrossCallReturnLabel_101:
MOV A,?V0 + 0
MOVX @DPTR,A
INC DPTR
MOV A,?V0 + 1
MOVX @DPTR,A
INC DPTR
MOV A,?V0 + 2
LCALL ?Subroutine1 & 0xFFFF
// 206 ep->nextDesc = NULL;
??CrossCallReturnLabel_102:
INC DPTR
INC DPTR
INC DPTR
CLR A
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
// 207
// 208 // Does a list exist?
// 209 if ( epList == NULL )
MOV DPTR,#epList
MOVX A,@DPTR
JNZ ??afRegisterExtended_2
INC DPTR
MOVX A,@DPTR
??afRegisterExtended_2:
MOV DPTR,#epList
JZ ??afRegisterExtended_3
// 210 epList = ep; // Make this the first entry
// 211 else
// 212 {
// 213 // Look for the end of the list
// 214 epSearch = epList;
// 215 while( epSearch->nextDesc != NULL )
// 216 epSearch = epSearch->nextDesc;
??afRegisterExtended_4:
LCALL ?Subroutine19 & 0xFFFF
??CrossCallReturnLabel_54:
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOVX A,@DPTR
JNZ ??afRegisterExtended_5
INC DPTR
MOVX A,@DPTR
??afRegisterExtended_5:
MOV DPL,R0
MOV DPH,R1
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
JNZ ??afRegisterExtended_4
// 217
// 218 // Add new entry to end of list
// 219 epSearch->nextDesc = ep;
??afRegisterExtended_3:
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R3
MOVX @DPTR,A
CFI EndBlock cfiBlock1
// 220 }
// 221 }
// 222
// 223 return ep;
??afRegisterExtended_1:
REQUIRE ?Subroutine31
; // Fall through to label ?Subroutine31
// 224 }
RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine31:
CFI Block cfiBlock2 Using cfiCommon0
CFI NoFunction
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 14)
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
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(-14)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V5 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)))
MOV R7,#0x6
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock2
RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine1:
CFI Block cfiCond3 Using cfiCommon0
CFI NoFunction
CFI Conditional ??CrossCallReturnLabel_102
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 14)
CFI Block cfiCond4 Using cfiCommon0
CFI (cfiCond4) NoFunction
CFI (cfiCond4) Conditional ??CrossCallReturnLabel_101
CFI (cfiCond4) R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI (cfiCond4) VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI (cfiCond4) V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond4) V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond4) V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond4) V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond4) V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond4) V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond4) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond4) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond4) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond4) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond4) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond4) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond4) CFA_SP SP+0
CFI (cfiCond4) CFA_XSP16 add(XSP16, 14)
CFI Block cfiPicker5 Using cfiCommon1
CFI (cfiPicker5) NoFunction
CFI (cfiPicker5) Picker
MOVX @DPTR,A
MOV DPL,R2
MOV DPH,R3
LJMP ?Subroutine32 & 0xFFFF
CFI EndBlock cfiCond3
CFI EndBlock cfiCond4
CFI EndBlock cfiPicker5
// 225
// 226 /*********************************************************************
// 227 * @fn afRegister
// 228 *
// 229 * @brief Register an Application's EndPoint description.
// 230 *
// 231 * @param epDesc - pointer to the Application's endpoint descriptor.
// 232 *
// 233 * NOTE: The memory that epDesc is pointing to must exist after this call.
// 234 *
// 235 * @return afStatus_SUCCESS - Registered
// 236 * afStatus_MEM_FAIL - not enough memory to add descriptor
// 237 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 238 afStatus_t afRegister( endPointDesc_t *epDesc )
afRegister:
CFI Block cfiBlock6 Using cfiCommon0
CFI Function afRegister
// 239 {
FUNCALL afRegister, afRegisterExtended
LOCFRAME XSTACK, 14, STACK
ARGFRAME XSTACK, 14, STACK
MOV A,#-0xb
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 V2 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 11)
; Saved register size: 11
; Auto size: 0
// 240 epList_t *ep = afRegisterExtended( epDesc, NULL );
// 241
// 242 return ((ep == NULL) ? afStatus_MEM_FAIL : afStatus_SUCCESS);
; Setup parameters for call to function afRegisterExtended
MOV ?V0 + 0,#0x0
MOV ?V0 + 1,#0x0
MOV ?V0 + 2,#0x0
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_THREE
CFI CFA_XSP16 add(XSP16, 14)
MOV DPTR,#(afRegisterExtended & 0xffff)
MOV A,#((afRegisterExtended >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV A,#0x3
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 11)
MOV A,R2
JNZ ??afRegister_0
MOV A,R3
??afRegister_0:
JNZ ??afRegister_1
MOV R1,#-0x7f
SJMP ??afRegister_2
??afRegister_1:
MOV R1,#0x0
??afRegister_2:
MOV R7,#0x3
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock6
// 243 }
// 244
// 245 #if ( AF_KVP_SUPPORT )
// 246 /*********************************************************************
// 247 * @fn afRegisterFlags
// 248 *
// 249 * @brief Register an Application's EndPoint description.
// 250 *
// 251 * @param epDesc - pointer to the Application's endpoint descriptor.
// 252 *
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?