⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 af.lst

📁 cc2430应用实例
💻 LST
📖 第 1 页 / 共 5 页
字号:
    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 + -