📄 af.s51
字号:
MOV A,R3
MOVX @DPTR,A
SJMP ??afIncomingData_5
// 359 }
// 360 else if ( aff->DstEndPoint == AF_BROADCAST_ENDPOINT )
??afIncomingData_0:
LCALL ?Subroutine13 & 0xFFFF
??CrossCallReturnLabel_41:
JNZ ??afIncomingData_6
// 361 {
// 362 // Set the list
// 363 if ( (pList = epList) )
MOV DPTR,#epList
LCALL ??Subroutine20_0 & 0xFFFF
??CrossCallReturnLabel_56:
MOV A,#0x2
LCALL ?XSTACK_DISP0_8
LCALL ??Subroutine4_0 & 0xFFFF
??CrossCallReturnLabel_7:
MOV A,#0x2
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
JNZ ??afIncomingData_7
INC DPTR
MOVX A,@DPTR
??afIncomingData_7:
JNZ $+5
LJMP ??afIncomingData_1 & 0xFFFF
// 364 {
// 365 epDesc = pList->epDesc;
??afIncomingData_8:
MOV A,#0x2
LCALL ?XSTACK_DISP0_8
LCALL ?Subroutine12 & 0xFFFF
??CrossCallReturnLabel_36:
MOV ?V0 + 6,A
INC DPTR
MOVX A,@DPTR
MOV ?V0 + 7,A
SJMP ??afIncomingData_5
// 366 }
// 367 }
// 368 else if ( (epDesc = afFindEndPointDesc( aff->DstEndPoint )) )
??afIncomingData_6:
; Setup parameters for call to function afFindEndPointDesc
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
INC DPTR
MOVX A,@DPTR
MOV DPH,A
MOV DPL,R0
INC DPTR
INC DPTR
MOVX A,@DPTR
MOV R1,A
MOV DPTR,#(afFindEndPointDesc & 0xffff)
MOV A,#((afFindEndPointDesc >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV ?V0 + 4,R2
MOV ?V0 + 5,R3
MOV R0,?V0 + 4
MOV R1,?V0 + 5
MOV ?V0 + 6,R0
MOV ?V0 + 7,R1
MOV A,R0
JNZ ??afIncomingData_9
MOV A,R1
??afIncomingData_9:
JNZ ??afIncomingData_4
// 369 {
// 370 pList = afFindEndPointDescList( epDesc->endPoint );
// 371 }
// 372
// 373 while ( epDesc )
??afIncomingData_5:
MOV A,?V0 + 6
JNZ ??afIncomingData_10
MOV A,?V0 + 7
??afIncomingData_10:
JNZ $+5
LJMP ??afIncomingData_1 & 0xFFFF
// 374 {
// 375 if ( pList->pfnDescCB )
MOV A,#0x2
LCALL ?XSTACK_DISP0_8
LCALL ?Subroutine14 & 0xFFFF
??CrossCallReturnLabel_43:
LCALL ?Subroutine18 & 0xFFFF
??CrossCallReturnLabel_52:
MOV DPL,?V0 + 6
MOV DPH,?V0 + 7
JZ ??afIncomingData_11
// 376 {
// 377 uint16 *pID = (uint16 *)(pList->pfnDescCB(
// 378 AF_DESCRIPTOR_PROFILE_ID, epDesc->endPoint ));
; Setup parameters for indirect call
MOVX A,@DPTR
MOV R0,#0x2
MOV R4,A
MOV A,R0
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
MOV R1,A
INC DPTR
MOVX A,@DPTR
MOV DPH,A
MOV DPL,R1
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOVX A,@DPTR
MOV R1,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV DPL,R1
MOV DPH,R2
XCH A,R4
MOV R2,A
MOV A,R4
XCH A,R0
MOV R1,A
MOV A,R0
LCALL ?BCALL ; Banked call to: DPTR()
// 379 if ( pID )
MOV A,R2
JNZ ??afIncomingData_12
MOV A,R3
??afIncomingData_12:
JZ ??CrossCallReturnLabel_8
// 380 {
// 381 epProfileID = *pID;
LCALL ?Subroutine20 & 0xFFFF
??CrossCallReturnLabel_57:
MOV A,#0x4
LCALL ?XSTACK_DISP0_8
LCALL ?Subroutine3 & 0xFFFF
// 382 osal_mem_free( pID );
??CrossCallReturnLabel_5:
LCALL ?BCALL ; Banked call to: DPTR()
SJMP ??CrossCallReturnLabel_8
// 383 }
// 384 }
// 385 else if ( epDesc->simpleDesc )
??afIncomingData_11:
INC DPTR
INC DPTR
INC DPTR
MOVX A,@DPTR
JNZ ??afIncomingData_13
INC DPTR
MOVX A,@DPTR
??afIncomingData_13:
JZ ??CrossCallReturnLabel_8
// 386 {
// 387 epProfileID = epDesc->simpleDesc->AppProfId;
MOV DPL,?V0 + 6
MOV DPH,?V0 + 7
LCALL ?Subroutine9 & 0xFFFF
??CrossCallReturnLabel_32:
MOV A,#0x4
LCALL ?XSTACK_DISP0_8
LCALL ??Subroutine4_0 & 0xFFFF
// 388 }
// 389
// 390 if ( (aff->ProfileID == epProfileID) ||
// 391 ((epDesc->endPoint == ZDO_EP) && (aff->ProfileID == ZDO_PROFILE_ID)) )
??CrossCallReturnLabel_8:
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
LCALL ?Subroutine5 & 0xFFFF
??CrossCallReturnLabel_18:
MOV A,#0x4
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
XRL A,R0
JNZ ??afIncomingData_14
INC DPTR
MOVX A,@DPTR
XRL A,R1
??afIncomingData_14:
JZ ??afIncomingData_15
MOV DPL,?V0 + 6
MOV DPH,?V0 + 7
MOVX A,@DPTR
JNZ ??afIncomingData_16
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
LCALL ?Subroutine14 & 0xFFFF
??CrossCallReturnLabel_44:
INC DPTR
INC DPTR
INC DPTR
MOVX A,@DPTR
JNZ ??afIncomingData_17
INC DPTR
MOVX A,@DPTR
??afIncomingData_17:
JNZ ??afIncomingData_16
// 392 {
// 393 #if ( AF_KVP_SUPPORT )
// 394 if ( (FRAMETYPE_KVP == HI_UINT8(aff->asdu[0])) &&
// 395 (pList->flags & eEP_UsesKVP) )
// 396 {
// 397 afBuildKVPIncoming( aff, epDesc, SrcAddress, LinkQuality, SecurityUse );
// 398 }
// 399 else
// 400 #endif
// 401 {
// 402 afBuildMSGIncoming( aff, epDesc, SrcAddress, LinkQuality, SecurityUse, timestamp );
??afIncomingData_15:
; Setup parameters for call to function afBuildMSGIncoming
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_FOUR
CFI CFA_XSP16 add(XSP16, 29)
MOV A,#0x1d
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
MOV ?V0 + 4,A
MOV R0,#?V0 + 4
LCALL ?PUSH_XSTACK_I_ONE
CFI CFA_XSP16 add(XSP16, 30)
MOV A,#0xc
LCALL ?XSTACK_DISP0_8
LCALL ?PUSH_XSTACK8_X_TWO
CFI CFA_XSP16 add(XSP16, 32)
MOV A,#0xd
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
MOV R1,A
MOV R4,?V0 + 6
MOV R5,?V0 + 7
MOV A,#0x7
LCALL ?XSTACK_DISP0_8
LCALL ??Subroutine7_0 & 0xFFFF
??CrossCallReturnLabel_22:
MOV DPTR,#(??afBuildMSGIncoming & 0xffff)
MOV A,#((??afBuildMSGIncoming >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV A,#0x7
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 25)
// 403 }
// 404 }
// 405
// 406 if ( (NLME_GetProtocolVersion() != ZB_PROT_V1_0)
// 407 && ((aff->FrmCtrl & APS_DELIVERYMODE_MASK) == APS_FC_DM_GROUP) )
??afIncomingData_16:
; 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_18
LCALL ?Subroutine11 & 0xFFFF
??CrossCallReturnLabel_35:
JNZ ??afIncomingData_18
// 408 {
// 409 // Find the next endpoint for this group
// 410 grpEp = aps_FindGroupForEndpoint( aff->GroupID, grpEp );
; Setup parameters for call to function aps_FindGroupForEndpoint
MOV A,R7
MOV R1,A
LCALL ?Subroutine6 & 0xFFFF
??CrossCallReturnLabel_21:
LCALL ?BCALL ; Banked call to: DPTR()
MOV A,R1
MOV R7,A
// 411 if ( grpEp == APS_GROUPS_EP_NOT_FOUND )
MOV A,#-0x2
XRL A,R7
JZ $+5
LJMP ??afIncomingData_2 & 0xFFFF
SJMP ??afIncomingData_1
// 412 return; // No endpoint found
// 413
// 414 epDesc = afFindEndPointDesc( grpEp );
// 415 if ( epDesc == NULL )
// 416 return; // Endpoint descriptor not found
// 417
// 418 pList = afFindEndPointDescList( epDesc->endPoint );
// 419 }
// 420 else if ( aff->DstEndPoint == AF_BROADCAST_ENDPOINT )
??afIncomingData_18:
LCALL ?Subroutine13 & 0xFFFF
??CrossCallReturnLabel_42:
JNZ ??afIncomingData_1
// 421 {
// 422 pList = pList->nextDesc;
MOV A,#0x2
LCALL ?XSTACK_DISP0_8
LCALL ?Subroutine5 & 0xFFFF
??CrossCallReturnLabel_19:
MOV A,#0x2
LCALL ?XSTACK_DISP0_8
LCALL ??Subroutine4_0 & 0xFFFF
// 423 if ( pList )
??CrossCallReturnLabel_9:
MOV A,#0x2
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
JNZ ??afIncomingData_19
INC DPTR
MOVX A,@DPTR
??afIncomingData_19:
JZ $+5
LJMP ??afIncomingData_8 & 0xFFFF
??afIncomingData_1:
MOV A,#0x9
CFI EndBlock cfiBlock12
REQUIRE ?Subroutine33
; // Fall through to label ?Subroutine33
// 424 epDesc = pList->epDesc;
// 425 else
// 426 epDesc = NULL;
// 427 }
// 428 else
// 429 epDesc = NULL;
// 430 }
// 431 }
RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine33:
CFI Block cfiBlock13 Using cfiCommon0
CFI NoFunction
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 21)
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -