af.s51
来自「TI的基于ZIGBEE2006的协议栈」· S51 代码 · 共 1,631 行 · 第 1/5 页
S51
1,631 行
// 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)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 12)
; Saved register size: 12
; Auto size: 0
MOV ?V0 + 0,R1
MOV ?V0 + 1,R3
// 288 endPointDesc_t *epDesc;
// 289 afDataConfirm_t *msgPtr;
// 290
// 291 // Find the endpoint description
// 292 epDesc = afFindEndPointDesc( endPoint );
; Setup parameters for call to function afFindEndPointDesc
MOV DPTR,#(afFindEndPointDesc & 0xffff)
MOV A,#((afFindEndPointDesc >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV ?V0 + 2,R2
MOV ?V0 + 3,R3
MOV R6,?V0 + 2
MOV R7,?V0 + 3
// 293 if ( epDesc == NULL )
MOV A,R6
JNZ ??afDataConfirm_0
MOV A,R7
??afDataConfirm_0:
JZ ??afDataConfirm_1
// 294 return;
// 295
// 296 // Determine the incoming command type
// 297 msgPtr = (afDataConfirm_t *)osal_msg_allocate( sizeof(afDataConfirm_t) );
; Setup parameters for call to function osal_msg_allocate
MOV R2,#0x4
MOV R3,#0x0
MOV DPTR,#(osal_msg_allocate & 0xffff)
MOV A,#((osal_msg_allocate >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 298 if ( msgPtr )
MOV A,R2
JNZ ??afDataConfirm_2
MOV A,R3
??afDataConfirm_2:
JZ ??afDataConfirm_1
// 299 {
// 300 // Build the Data Confirm message
// 301 msgPtr->hdr.event = AF_DATA_CONFIRM_CMD;
MOV A,#-0x3
MOV DPL,R2
MOV DPH,R3
MOVX @DPTR,A
// 302 msgPtr->hdr.status = status;
INC DPTR
MOV A,?V0 + 1
LCALL ?Subroutine2 & 0xFFFF
// 303 msgPtr->endpoint = endPoint;
??CrossCallReturnLabel_3:
MOV A,?V0 + 0
MOVX @DPTR,A
// 304 #if ( AF_V1_SUPPORT )
// 305 msgPtr->transID = transID;
// 306 #elif ( AF_KVP_SUPPORT )
// 307 {
// 308 epList_t *pList = afFindEndPointDescList( endPoint );
// 309 if ( pList )
// 310 {
// 311 if ( pList->flags & eEP_UsesKVP )
// 312 {
// 313 msgPtr->transID = transID;
// 314 }
// 315 }
// 316 }
// 317 #else
// 318 (void)transID;
// 319 #endif
// 320
// 321 // send message through task message
// 322 osal_msg_send( *(epDesc->task_id), (byte *)msgPtr );
; Setup parameters for call to function osal_msg_send
MOV DPL,R6
MOV DPH,R7
LCALL ?Subroutine8 & 0xFFFF
??CrossCallReturnLabel_30:
LCALL ?BCALL ; Banked call to: DPTR()
??afDataConfirm_1:
MOV R7,#0x4
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock7
// 323 }
// 324 }
RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine2:
CFI Block cfiCond8 Using cfiCommon0
CFI NoFunction
CFI Conditional ??CrossCallReturnLabel_3
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
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 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, 12)
CFI Block cfiCond9 Using cfiCommon0
CFI (cfiCond9) NoFunction
CFI (cfiCond9) Conditional ??CrossCallReturnLabel_4
CFI (cfiCond9) R6 load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI (cfiCond9) VB load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI (cfiCond9) V0 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI (cfiCond9) V1 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond9) V2 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond9) V3 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond9) V4 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond9) V5 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond9) V6 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond9) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond9) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond9) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond9) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond9) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond9) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond9) CFA_SP SP+0
CFI (cfiCond9) CFA_XSP16 add(XSP16, 43)
CFI Block cfiCond10 Using cfiCommon0
CFI (cfiCond10) NoFunction
CFI (cfiCond10) Conditional ??CrossCallReturnLabel_2
CFI (cfiCond10) R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI (cfiCond10) VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI (cfiCond10) V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond10) V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond10) V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond10) V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond10) V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond10) V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond10) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond10) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond10) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond10) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond10) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond10) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond10) CFA_SP SP+0
CFI (cfiCond10) CFA_XSP16 add(XSP16, 14)
CFI Block cfiPicker11 Using cfiCommon1
CFI (cfiPicker11) NoFunction
CFI (cfiPicker11) Picker
MOVX @DPTR,A
MOV DPL,R2
MOV DPH,R3
INC DPTR
INC DPTR
RET
CFI EndBlock cfiCond8
CFI EndBlock cfiCond9
CFI EndBlock cfiCond10
CFI EndBlock cfiPicker11
// 325
// 326 /*********************************************************************
// 327 * @fn afIncomingData
// 328 *
// 329 * @brief Transfer a data PDU (ASDU) from the APS sub-layer to the AF.
// 330 *
// 331 * @param aff - pointer to APS frame format
// 332 * @param SrcAddress - Source address
// 333 * @param LinkQuality - incoming message's link quality
// 334 * @param SecurityUse - Security enable/disable
// 335 *
// 336 * @return none
// 337 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 338 void afIncomingData( aps_FrameFormat_t *aff, zAddrType_t *SrcAddress,
afIncomingData:
CFI Block cfiBlock12 Using cfiCommon0
CFI Function afIncomingData
// 339 uint8 LinkQuality, byte SecurityUse, uint32 timestamp )
// 340 {
FUNCALL afIncomingData, NLME_GetProtocolVersion
LOCFRAME XSTACK, 25, STACK
ARGFRAME XSTACK, 25, STACK
FUNCALL afIncomingData, aps_FindGroupForEndpoint
LOCFRAME XSTACK, 25, STACK
ARGFRAME XSTACK, 25, STACK
FUNCALL afIncomingData, afFindEndPointDesc
LOCFRAME XSTACK, 25, STACK
ARGFRAME XSTACK, 25, STACK
FUNCALL afIncomingData, ??afFindEndPointDescList
LOCFRAME XSTACK, 25, STACK
ARGFRAME XSTACK, 25, STACK
FUNCALL afIncomingData, afFindEndPointDesc
LOCFRAME XSTACK, 25, STACK
ARGFRAME XSTACK, 25, STACK
FUNCALL afIncomingData, osal_mem_free
LOCFRAME XSTACK, 25, STACK
ARGFRAME XSTACK, 25, STACK
FUNCALL afIncomingData, ??afBuildMSGIncoming
LOCFRAME XSTACK, 32, STACK
ARGFRAME XSTACK, 32, STACK
FUNCALL afIncomingData, NLME_GetProtocolVersion
LOCFRAME XSTACK, 25, STACK
ARGFRAME XSTACK, 25, STACK
FUNCALL afIncomingData, aps_FindGroupForEndpoint
LOCFRAME XSTACK, 25, STACK
ARGFRAME XSTACK, 25, 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: 9
MOV A,#-0x9
LCALL ?ALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 25)
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R3
MOVX @DPTR,A
MOV A,#0x7
LCALL ?XSTACK_DISP0_8
MOV A,R4
MOVX @DPTR,A
INC DPTR
MOV A,R5
MOVX @DPTR,A
MOV A,#0x6
LCALL ?XSTACK_DISP0_8
MOV A,R1
MOVX @DPTR,A
MOV A,#0x1a
LCALL ?XSTACK_DISP0_8
MOV R0,#?V0 + 0
LCALL ?L_MOV_X
// 341 endPointDesc_t *epDesc = NULL;
// 342 uint16 epProfileID = 0xFFFF; // Invalid Profile ID
MOV A,#0x4
LCALL ?XSTACK_DISP0_8
MOV A,#-0x1
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
// 343 epList_t *pList;
// 344 uint8 grpEp;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?