📄 af.s51
字号:
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_4
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-14)))
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 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, 43)
CFI Block cfiCond9 Using cfiCommon0
CFI (cfiCond9) NoFunction
CFI (cfiCond9) Conditional ??CrossCallReturnLabel_2
CFI (cfiCond9) R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI (cfiCond9) VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI (cfiCond9) V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond9) V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond9) V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond9) V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond9) V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond9) V5 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, 14)
CFI Block cfiCond10 Using cfiCommon0
CFI (cfiCond10) NoFunction
CFI (cfiCond10) Conditional ??CrossCallReturnLabel_3
CFI (cfiCond10) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond10) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond10) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond10) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond10) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond10) V3 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, 12)
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;
// 345
// 346 if ( (NLME_GetProtocolVersion() != ZB_PROT_V1_0)
// 347 && ((aff->FrmCtrl & APS_DELIVERYMODE_MASK) == APS_FC_DM_GROUP) )
; Setup parameters for call to function NLME_GetProtocolVersion
MOV DPTR,#(NLME_GetProtocolVersion & 0xffff)
MOV A,#((NLME_GetProtocolVersion >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV A,R1
XRL A,#0x1
JZ ??afIncomingData_0
LCALL ?Subroutine11 & 0xFFFF
??CrossCallReturnLabel_34:
JNZ ??afIncomingData_0
// 348 {
// 349 // Find the first endpoint for this group
// 350 grpEp = aps_FindGroupForEndpoint( aff->GroupID, APS_GROUPS_FIND_FIRST );
; Setup parameters for call to function aps_FindGroupForEndpoint
MOV R1,#-0x2
LCALL ?Subroutine6 & 0xFFFF
??CrossCallReturnLabel_20:
LCALL ?BCALL ; Banked call to: DPTR()
MOV A,R1
MOV R7,A
// 351 if ( grpEp == APS_GROUPS_EP_NOT_FOUND )
MOV A,#-0x2
XRL A,R7
JNZ $+5
LJMP ??afIncomingData_1 & 0xFFFF
// 352 return; // No endpoint found
// 353
// 354 epDesc = afFindEndPointDesc( grpEp );
??afIncomingData_2:
; Setup parameters for call to function afFindEndPointDesc
MOV A,R7
MOV R1,A
MOV DPTR,#(afFindEndPointDesc & 0xffff)
MOV A,#((afFindEndPointDesc >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV ?V0 + 6,R2
MOV ?V0 + 7,R3
// 355 if ( epDesc == NULL )
MOV A,R2
JNZ ??afIncomingData_3
MOV A,R3
??afIncomingData_3:
JNZ $+5
LJMP ??afIncomingData_1 & 0xFFFF
// 356 return; // Endpoint descriptor not found
// 357
// 358 pList = afFindEndPointDescList( epDesc->endPoint );
??afIncomingData_4:
; Setup parameters for call to function afFindEndPointDescList
MOV DPL,?V0 + 6
MOV DPH,?V0 + 7
MOVX A,@DPTR
MOV R1,A
MOV DPTR,#(??afFindEndPointDescList & 0xffff)
MOV A,#((??afFindEndPointDescList >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV A,#0x2
LCALL ?XSTACK_DISP0_8
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R3
MOVX @DPTR,A
SJMP ??afIncomingData_5
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -