📄 af.lst
字号:
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 */
\ In segment BANKED_CODE, align 1, keep-with-next
338 void afIncomingData( aps_FrameFormat_t *aff, zAddrType_t *SrcAddress,
\ afIncomingData:
339 uint8 LinkQuality, byte SecurityUse, uint32 timestamp )
340 {
\ 000000 74F0 MOV A,#-0x10
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 16
\ 000005 ; Auto size: 9
\ 000005 74F7 MOV A,#-0x9
\ 000007 12.... LCALL ?ALLOC_XSTACK8
\ 00000A 85..82 MOV DPL,?XSP + 0
\ 00000D 85..83 MOV DPH,?XSP + 1
\ 000010 EA MOV A,R2
\ 000011 F0 MOVX @DPTR,A
\ 000012 A3 INC DPTR
\ 000013 EB MOV A,R3
\ 000014 F0 MOVX @DPTR,A
\ 000015 7407 MOV A,#0x7
\ 000017 12.... LCALL ?XSTACK_DISP0_8
\ 00001A EC MOV A,R4
\ 00001B F0 MOVX @DPTR,A
\ 00001C A3 INC DPTR
\ 00001D ED MOV A,R5
\ 00001E F0 MOVX @DPTR,A
\ 00001F 7406 MOV A,#0x6
\ 000021 12.... LCALL ?XSTACK_DISP0_8
\ 000024 E9 MOV A,R1
\ 000025 F0 MOVX @DPTR,A
\ 000026 741A MOV A,#0x1a
\ 000028 12.... LCALL ?XSTACK_DISP0_8
\ 00002B 78.. MOV R0,#?V0 + 0
\ 00002D 12.... LCALL ?L_MOV_X
341 endPointDesc_t *epDesc = NULL;
342 uint16 epProfileID = 0xFFFF; // Invalid Profile ID
\ 000030 7404 MOV A,#0x4
\ 000032 12.... LCALL ?XSTACK_DISP0_8
\ 000035 74FF MOV A,#-0x1
\ 000037 F0 MOVX @DPTR,A
\ 000038 A3 INC DPTR
\ 000039 F0 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) )
\ 00003A ; Setup parameters for call to function NLME_GetProtocolVersion
\ 00003A 90.... MOV DPTR,#(NLME_GetProtocolVersion & 0xffff)
\ 00003D 74.. MOV A,#((NLME_GetProtocolVersion >> 16) & 0xff)
\ 00003F 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 000042 E9 MOV A,R1
\ 000043 6401 XRL A,#0x1
\ 000045 604A JZ ??afIncomingData_0
\ 000047 12.... LCALL ?Subroutine11 & 0xFFFF
\ ??CrossCallReturnLabel_34:
\ 00004A 7045 JNZ ??afIncomingData_0
348 {
349 // Find the first endpoint for this group
350 grpEp = aps_FindGroupForEndpoint( aff->GroupID, APS_GROUPS_FIND_FIRST );
\ 00004C ; Setup parameters for call to function aps_FindGroupForEndpoint
\ 00004C 79FE MOV R1,#-0x2
\ 00004E 12.... LCALL ?Subroutine6 & 0xFFFF
\ ??CrossCallReturnLabel_20:
\ 000051 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 000054 E9 MOV A,R1
\ 000055 FF MOV R7,A
351 if ( grpEp == APS_GROUPS_EP_NOT_FOUND )
\ 000056 74FE MOV A,#-0x2
\ 000058 6F XRL A,R7
\ 000059 7003 JNZ $+5
\ 00005B 02.... LJMP ??afIncomingData_1 & 0xFFFF
352 return; // No endpoint found
353
354 epDesc = afFindEndPointDesc( grpEp );
\ ??afIncomingData_2:
\ 00005E ; Setup parameters for call to function afFindEndPointDesc
\ 00005E EF MOV A,R7
\ 00005F F9 MOV R1,A
\ 000060 90.... MOV DPTR,#(afFindEndPointDesc & 0xffff)
\ 000063 74.. MOV A,#((afFindEndPointDesc >> 16) & 0xff)
\ 000065 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 000068 8A.. MOV ?V0 + 6,R2
\ 00006A 8B.. MOV ?V0 + 7,R3
355 if ( epDesc == NULL )
\ 00006C EA MOV A,R2
\ 00006D 7001 JNZ ??afIncomingData_3
\ 00006F EB MOV A,R3
\ ??afIncomingData_3:
\ 000070 7003 JNZ $+5
\ 000072 02.... LJMP ??afIncomingData_1 & 0xFFFF
356 return; // Endpoint descriptor not found
357
358 pList = afFindEndPointDescList( epDesc->endPoint );
\ ??afIncomingData_4:
\ 000075 ; Setup parameters for call to function afFindEndPointDescList
\ 000075 85..82 MOV DPL,?V0 + 6
\ 000078 85..83 MOV DPH,?V0 + 7
\ 00007B E0 MOVX A,@DPTR
\ 00007C F9 MOV R1,A
\ 00007D 90.... MOV DPTR,#(??afFindEndPointDescList & 0xffff)
\ 000080 74.. MOV A,#((??afFindEndPointDescList >> 16) & 0xff)
\ 000082 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 000085 7402 MOV A,#0x2
\ 000087 12.... LCALL ?XSTACK_DISP0_8
\ 00008A EA MOV A,R2
\ 00008B F0 MOVX @DPTR,A
\ 00008C A3 INC DPTR
\ 00008D EB MOV A,R3
\ 00008E F0 MOVX @DPTR,A
\ 00008F 805C SJMP ??afIncomingData_5
359 }
360 else if ( aff->DstEndPoint == AF_BROADCAST_ENDPOINT )
\ ??afIncomingData_0:
\ 000091 12.... LCALL ?Subroutine13 & 0xFFFF
\ ??CrossCallReturnLabel_41:
\ 000094 702D JNZ ??afIncomingData_6
361 {
362 // Set the list
363 if ( (pList = epList) )
\ 000096 90.... MOV DPTR,#epList
\ 000099 12.... LCALL ??Subroutine20_0 & 0xFFFF
\ ??CrossCallReturnLabel_56:
\ 00009C 7402 MOV A,#0x2
\ 00009E 12.... LCALL ?XSTACK_DISP0_8
\ 0000A1 12.... LCALL ??Subroutine4_0 & 0xFFFF
\ ??CrossCallReturnLabel_7:
\ 0000A4 7402 MOV A,#0x2
\ 0000A6 12.... LCALL ?XSTACK_DISP0_8
\ 0000A9 E0 MOVX A,@DPTR
\ 0000AA 7002 JNZ ??afIncomingData_7
\ 0000AC A3 INC DPTR
\ 0000AD E0 MOVX A,@DPTR
\ ??afIncomingData_7:
\ 0000AE 7003 JNZ $+5
\ 0000B0 02.... LJMP ??afIncomingData_1 & 0xFFFF
364 {
365 epDesc = pList->epDesc;
\ ??afIncomingData_8:
\ 0000B3 7402 MOV A,#0x2
\ 0000B5 12.... LCALL ?XSTACK_DISP0_8
\ 0000B8 12.... LCALL ?Subroutine12 & 0xFFFF
\ ??CrossCallReturnLabel_36:
\ 0000BB F5.. MOV ?V0 + 6,A
\ 0000BD A3 INC DPTR
\ 0000BE E0 MOVX A,@DPTR
\ 0000BF F5.. MOV ?V0 + 7,A
\ 0000C1 802A SJMP ??afIncomingData_5
366 }
367 }
368 else if ( (epDesc = afFindEndPointDesc( aff->DstEndPoint )) )
\ ??afIncomingData_6:
\ 0000C3 ; Setup parameters for call to function afFindEndPointDesc
\ 0000C3 85..82 MOV DPL,?XSP + 0
\ 0000C6 85..83 MOV DPH,?XSP + 1
\ 0000C9 A3 INC DPTR
\ 0000CA E0 MOVX A,@DPTR
\ 0000CB F583 MOV DPH,A
\ 0000CD 8882 MOV DPL,R0
\ 0000CF A3 INC DPTR
\ 0000D0 A3 INC DPTR
\ 0000D1 E0 MOVX A,@DPTR
\ 0000D2 F9 MOV R1,A
\ 0000D3 90.... MOV DPTR,#(afFindEndPointDesc & 0xffff)
\ 0000D6 74.. MOV A,#((afFindEndPointDesc >> 16) & 0xff)
\ 0000D8 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 0000DB 8A.. MOV ?V0 + 4,R2
\ 0000DD 8B.. MOV ?V0 + 5,R3
\ 0000DF A8.. MOV R0,?V0 + 4
\ 0000E1 A9.. MOV R1,?V0 + 5
\ 0000E3 88.. MOV ?V0 + 6,R0
\ 0000E5 89.. MOV ?V0 + 7,R1
\ 0000E7 E8 MOV A,R0
\ 0000E8 7001 JNZ ??afIncomingData_9
\ 0000EA E9 MOV A,R1
\ ??afIncomingData_9:
\ 0000EB 7088 JNZ ??afIncomingData_4
369 {
370 pList = afFindEndPointDescList( epDesc->endPoint );
371 }
372
373 while ( epDesc )
\ ??afIncomingData_5:
\ 0000ED E5.. MOV A,?V0 + 6
\ 0000EF 7002 JNZ ??afIncomingData_10
\ 0000F1 E5.. MOV A,?V0 + 7
\ ??afIncomingData_10:
\ 0000F3 7003 JNZ $+5
\ 0000F5 02.... LJMP ??afIncomingData_1 & 0xFFFF
374 {
375 if ( pList->pfnDescCB )
\ 0000F8 7402 MOV A,#0x2
\ 0000FA 12.... LCALL ?XSTACK_DISP0_8
\ 0000FD 12.... LCALL ?Subroutine14 & 0xFFFF
\ ??CrossCallReturnLabel_43:
\ 000100 12.... LCALL ?Subroutine18 & 0xFFFF
\ ??CrossCallReturnLabel_52:
\ 000103 85..82 MOV DPL,?V0 + 6
\ 000106 85..83 MOV DPH,?V0 + 7
\ 000109 603F JZ ??afIncomingData_11
376 {
377 uint16 *pID = (uint16 *)(pList->pfnDescCB(
378 AF_DESCRIPTOR_PROFILE_ID, epDesc->endPoint ));
\ 00010B ; Setup parameters for indirect call
\ 00010B E0 MOVX A,@DPTR
\ 00010C 7802 MOV R0,#0x2
\ 00010E FC MOV R4,A
\ 00010F E8 MOV A,R0
\ 000110 12.... LCALL ?XSTACK_DISP0_8
\ 000113 E0 MOVX A,@DPTR
\ 000114 F9 MOV R1,A
\ 000115 A3 INC DPTR
\ 000116 E0 MOVX A,@DPTR
\ 000117 F583 MOV DPH,A
\ 000119 8982 MOV DPL,R1
\ 00011B A3 INC DPTR
\ 00011C A3 INC DPTR
\ 00011D A3 INC DPTR
\ 00011E A3 INC DPTR
\ 00011F A3 INC DPTR
\ 000120 E0 MOVX A,@DPTR
\ 000121 F9 MOV R1,A
\ 000122 A3 INC DPTR
\ 000123 E0 MOVX A,@DPTR
\ 000124 FA MOV R2,A
\ 000125 A3 INC DPTR
\ 000126 E0 MOVX A,@DPTR
\ 000127 8982 MOV DPL,R1
\ 000129 8A83 MOV DPH,R2
\ 00012B CC XCH A,R4
\ 00012C FA MOV R2,A
\ 00012D EC MOV A,R4
\ 00012E C8 XCH A,R0
\ 00012F F9 MOV R1,A
\ 000130 E8 MOV A,R0
\ 000131 12.... LCALL ?BCALL ; Banked call to: DPTR()
379 if ( pID )
\ 000134 EA MOV A,R2
\ 000135 7001 JNZ ??afIncomingData_12
\ 000137 EB MOV A,R3
\ ??afIncomingData_12:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -