📄 af.s51
字号:
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;
// 197 #else
// 198 ep->reflectorAddr = INVALID_NODE_ADDR;
??CrossCallReturnLabel_2:
MOV A,#-0x2
MOVX @DPTR,A
INC DPTR
MOV A,#-0x1
MOVX @DPTR,A
// 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 *
// 253 * NOTE: The memory that epDesc is pointing to must exist after this call.
// 254 *
// 255 * @return afStatus_SUCCESS - Registered
// 256 * afStatus_MEM_FAIL - not enough memory to add descriptor
// 257 */
// 258 afStatus_t afRegisterFlags( endPointDesc_t *epDesc, eEP_Flags flags )
// 259 {
// 260 epList_t *ep = afRegisterExtended( epDesc, NULL );
// 261
// 262 if ( ep != NULL )
// 263 {
// 264 ep->flags = flags;
// 265 return afStatus_SUCCESS;
// 266 }
// 267 else
// 268 {
// 269 return afStatus_MEM_FAIL;
// 270 }
// 271 }
// 272 #endif
// 273
// 274 /*********************************************************************
// 275 * @fn afDataConfirm
// 276 *
// 277 * @brief This function will generate the Data Confirm back to
// 278 * the application.
// 279 *
// 280 * @param endPoint - confirm end point
// 281 * @param transID - transaction ID from APSDE_DATA_REQUEST
// 282 * @param status - status of APSDE_DATA_REQUEST
// 283 *
// 284 * @return none
// 285 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 286 void afDataConfirm( uint8 endPoint, uint8 transID, ZStatus_t status )
afDataConfirm:
CFI Block cfiBlock7 Using cfiCommon0
CFI Function afDataConfirm
// 287 {
FUNCALL afDataConfirm, afFindEndPointDesc
LOCFRAME XSTACK, 12, STACK
ARGFRAME XSTACK, 12, STACK
FUNCALL afDataConfirm, osal_msg_allocate
LOCFRAME XSTACK, 12, STACK
ARGFRAME XSTACK, 12, STACK
FUNCALL afDataConfirm, osal_msg_send
LOCFRAME XSTACK, 12, STACK
ARGFRAME XSTACK, 12, STACK
MOV A,#-0xc
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 V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -