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

📄 af.lst

📁 cc2430应用实例
💻 LST
📖 第 1 页 / 共 5 页
字号:
    115          
    116          /*********************************************************************
    117           * LOCAL FUNCTIONS
    118           */
    119          
    120          #if ( AF_KVP_SUPPORT )
    121          static void afBuildKVPIncoming( aps_FrameFormat_t *aff, endPointDesc_t *epDesc,
    122                          zAddrType_t *SrcAddress, uint8 LinkQuality, byte SecurityUse );
    123          #endif
    124          
    125          static void afBuildMSGIncoming( aps_FrameFormat_t *aff, endPointDesc_t *epDesc,
    126                          zAddrType_t *SrcAddress, uint8 LinkQuality, byte SecurityUse,
    127                          uint32 timestamp );
    128          
    129          #if ( AF_KVP_SUPPORT )
    130          static afMultiHdr_t *multiInit( afAddrType_t *dstAddr,
    131                               byte srcEndPoint, uint16 clusterID, byte FrameType,
    132                               byte txOptions, bool DiscoverRoute, byte RadiusCounter );
    133          
    134          static bool multiAppend( afMultiHdr_t *hdr, byte bufLen, byte *buf,
    135                 byte CommandType, byte AttribDataType, uint16 AttribId, byte ErrorCode );
    136          
    137          static afStatus_t multiSend( afMultiHdr_t *hdr, byte *seqNum, byte radius );
    138          #endif
    139          
    140          #if ( AF_V1_SUPPORT )
    141          static afStatus_t afDataRequest( afAddrType_t *dstAddr, endPointDesc_t *srcEP,
    142                                     uint16 cID, uint16 len, uint8 *buf, uint8 *transID,
    143                                     uint8 options, uint8 radius );
    144          #endif
    145          
    146          static epList_t *afFindEndPointDescList( byte EndPoint );
    147          
    148          static pDescCB afGetDescCB( endPointDesc_t *epDesc );
    149          
    150          /*********************************************************************
    151           * NETWORK LAYER CALLBACKS
    152           */
    153          
    154          /*********************************************************************
    155           * PUBLIC FUNCTIONS
    156           */
    157          
    158          /*********************************************************************
    159           * @fn      afInit
    160           *
    161           * @brief   Initialization function for the AF.
    162           *
    163           * @param   none
    164           *
    165           * @return  none
    166           */

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    167          void afInit( void )
   \                     afInit:
    168          {
   \   000000   C082         PUSH    DPL
   \   000002   C083         PUSH    DPH
   \   000004                ; Saved register size: 2
   \   000004                ; Auto size: 0
    169            // Start with no endpoint defined
    170            epList = NULL;
   \   000004   90....       MOV     DPTR,#epList
   \   000007   E4           CLR     A
   \   000008   F0           MOVX    @DPTR,A
   \   000009   A3           INC     DPTR
   \   00000A   F0           MOVX    @DPTR,A
    171          }
   \   00000B   02....       LJMP    ?Subroutine30 & 0xFFFF

   \                                 In segment BANKED_CODE, align 1, keep-with-next
   \                     ?Subroutine30:
   \   000000   D083         POP     DPH
   \   000002   D082         POP     DPL
   \   000004   02....       LJMP    ?BRET
    172          
    173          /*********************************************************************
    174           * @fn      afRegisterExtended
    175           *
    176           * @brief   Register an Application's EndPoint description.
    177           *
    178           * @param   epDesc - pointer to the Application's endpoint descriptor.
    179           * @param   descFn - pointer to descriptor callback function
    180           *
    181           * NOTE:  The memory that epDesc is pointing to must exist after this call.
    182           *
    183           * @return  Pointer to epList_t on success, NULL otherwise.
    184           */

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    185          epList_t *afRegisterExtended( endPointDesc_t *epDesc, pDescCB descFn )
   \                     afRegisterExtended:
    186          {
   \   000000   74F2         MOV     A,#-0xe
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 14
   \   000005                ; Auto size: 0
   \   000005   EA           MOV     A,R2
   \   000006   FE           MOV     R6,A
   \   000007   EB           MOV     A,R3
   \   000008   FF           MOV     R7,A
   \   000009   740E         MOV     A,#0xe
   \   00000B   12....       LCALL   ?XSTACK_DISP0_8
   \   00000E   E0           MOVX    A,@DPTR
   \   00000F   F5..         MOV     ?V0 + 0,A
   \   000011   A3           INC     DPTR
   \   000012   E0           MOVX    A,@DPTR
   \   000013   F5..         MOV     ?V0 + 1,A
   \   000015   A3           INC     DPTR
   \   000016   E0           MOVX    A,@DPTR
   \   000017   F5..         MOV     ?V0 + 2,A
    187            epList_t *ep;
    188            epList_t *epSearch;
    189          
    190            ep = osal_mem_alloc( sizeof ( epList_t ) );
   \   000019                ; Setup parameters for call to function osal_mem_alloc
   \   000019   7A0A         MOV     R2,#0xa
   \   00001B   7B00         MOV     R3,#0x0
   \   00001D   90....       MOV     DPTR,#(osal_mem_alloc & 0xffff)
   \   000020   74..         MOV     A,#((osal_mem_alloc >> 16) & 0xff)
   \   000022   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    191            if ( ep )
   \   000025   EA           MOV     A,R2
   \   000026   7001         JNZ     ??afRegisterExtended_0
   \   000028   EB           MOV     A,R3
   \                     ??afRegisterExtended_0:
   \   000029   6063         JZ      ??afRegisterExtended_1
    192            {
    193              // Fill in the new list entry
    194              ep->epDesc = epDesc;
   \   00002B   8A82         MOV     DPL,R2
   \   00002D   8B83         MOV     DPH,R3
   \   00002F   EE           MOV     A,R6
   \   000030   F0           MOVX    @DPTR,A
   \   000031   A3           INC     DPTR
   \   000032   EF           MOV     A,R7
   \   000033   12....       LCALL   ?Subroutine2 & 0xFFFF
    195              #if !defined ( REFLECTOR )
    196              ep->reflectorAddr = NWK_PAN_COORD_ADDR;
    197              #else
    198              ep->reflectorAddr = INVALID_NODE_ADDR;
   \                     ??CrossCallReturnLabel_2:
   \   000036   74FE         MOV     A,#-0x2
   \   000038   F0           MOVX    @DPTR,A
   \   000039   A3           INC     DPTR
   \   00003A   74FF         MOV     A,#-0x1
   \   00003C   F0           MOVX    @DPTR,A
    199              #endif
    200              // Default to allow Match Descriptor.
    201              ep->flags = eEP_AllowMatch;
   \   00003D   7401         MOV     A,#0x1
   \   00003F   8A82         MOV     DPL,R2
   \   000041   8B83         MOV     DPH,R3
   \   000043   A3           INC     DPTR
   \   000044   A3           INC     DPTR
   \   000045   A3           INC     DPTR
   \   000046   A3           INC     DPTR
   \   000047   12....       LCALL   ?Subroutine1 & 0xFFFF
    202          #if ( AF_KVP_SUPPORT )
    203              ep->flags |= ((epDesc->endPoint == ZDO_EP) ? 0 : eEP_UsesKVP);
    204          #endif
    205              ep->pfnDescCB = descFn;
   \                     ??CrossCallReturnLabel_101:
   \   00004A   E5..         MOV     A,?V0 + 0
   \   00004C   F0           MOVX    @DPTR,A
   \   00004D   A3           INC     DPTR
   \   00004E   E5..         MOV     A,?V0 + 1
   \   000050   F0           MOVX    @DPTR,A
   \   000051   A3           INC     DPTR
   \   000052   E5..         MOV     A,?V0 + 2
   \   000054   12....       LCALL   ?Subroutine1 & 0xFFFF
    206              ep->nextDesc = NULL;
   \                     ??CrossCallReturnLabel_102:
   \   000057   A3           INC     DPTR
   \   000058   A3           INC     DPTR
   \   000059   A3           INC     DPTR
   \   00005A   E4           CLR     A
   \   00005B   F0           MOVX    @DPTR,A
   \   00005C   A3           INC     DPTR
   \   00005D   F0           MOVX    @DPTR,A
    207          
    208              // Does a list exist?
    209              if ( epList == NULL )
   \   00005E   90....       MOV     DPTR,#epList
   \   000061   E0           MOVX    A,@DPTR
   \   000062   7002         JNZ     ??afRegisterExtended_2
   \   000064   A3           INC     DPTR
   \   000065   E0           MOVX    A,@DPTR
   \                     ??afRegisterExtended_2:
   \   000066   90....       MOV     DPTR,#epList
   \   000069   601E         JZ      ??afRegisterExtended_3
    210                epList = ep;  // Make this the first entry
    211              else
    212              {
    213                // Look for the end of the list
    214                epSearch = epList;
    215                while( epSearch->nextDesc != NULL )
    216                  epSearch = epSearch->nextDesc;
   \                     ??afRegisterExtended_4:
   \   00006B   12....       LCALL   ?Subroutine19 & 0xFFFF
   \                     ??CrossCallReturnLabel_54:
   \   00006E   A3           INC     DPTR
   \   00006F   A3           INC     DPTR
   \   000070   A3           INC     DPTR
   \   000071   A3           INC     DPTR
   \   000072   A3           INC     DPTR
   \   000073   A3           INC     DPTR
   \   000074   A3           INC     DPTR
   \   000075   A3           INC     DPTR
   \   000076   E0           MOVX    A,@DPTR
   \   000077   7002         JNZ     ??afRegisterExtended_5
   \   000079   A3           INC     DPTR
   \   00007A   E0           MOVX    A,@DPTR
   \                     ??afRegisterExtended_5:
   \   00007B   8882         MOV     DPL,R0
   \   00007D   8983         MOV     DPH,R1
   \   00007F   A3           INC     DPTR
   \   000080   A3           INC     DPTR
   \   000081   A3           INC     DPTR
   \   000082   A3           INC     DPTR
   \   000083   A3           INC     DPTR
   \   000084   A3           INC     DPTR
   \   000085   A3           INC     DPTR
   \   000086   A3           INC     DPTR
   \   000087   70E2         JNZ     ??afRegisterExtended_4
    217          
    218                // Add new entry to end of list
    219                epSearch->nextDesc = ep;
   \                     ??afRegisterExtended_3:
   \   000089   EA           MOV     A,R2
   \   00008A   F0           MOVX    @DPTR,A
   \   00008B   A3           INC     DPTR
   \   00008C   EB           MOV     A,R3
   \   00008D   F0           MOVX    @DPTR,A
    220              }
    221            }
    222          
    223            return ep;
   \                     ??afRegisterExtended_1:
   \   00008E                REQUIRE ?Subroutine31
   \   00008E                ; // Fall through to label ?Subroutine31
    224          }

   \                                 In segment BANKED_CODE, align 1, keep-with-next
   \                     ?Subroutine31:
   \   000000   7F06         MOV     R7,#0x6
   \   000002   02....       LJMP    ?BANKED_LEAVE_XDATA

   \                                 In segment BANKED_CODE, align 1, keep-with-next
   \                     ?Subroutine1:
   \   000000   F0           MOVX    @DPTR,A

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -