zdobject.lst

来自「TI的基于ZIGBEE2006的协议栈」· LST 代码 · 共 1,256 行 · 第 1/5 页

LST
1,256
字号
     85          
     86          #if defined ( ZDO_COORDINATOR )
     87          enum
     88          {
     89            ZDMATCH_INIT,           // Initialized
     90            ZDMATCH_WAIT_REQ,       // Received first request, waiting for second
     91            ZDMATCH_SENDING_BINDS   // Received both requests, sending unbind/binds
     92          };
     93          
     94          enum
     95          {
     96            ZDMATCH_REASON_START,
     97            ZDMATCH_REASON_TIMEOUT,
     98            ZDMATCH_REASON_UNBIND_RSP,
     99            ZDMATCH_REASON_BIND_RSP
    100          };
    101          
    102          enum
    103          {
    104            ZDMATCH_SENDING_NOT,
    105            ZDMATCH_SENDING_UNBIND,
    106            ZDMATCH_SENDING_BIND
    107          };
    108          
    109          typedef struct
    110          {
    111            ZDEndDeviceBind_t ed1;
    112            ZDEndDeviceBind_t ed2;
    113            uint8  state;            // One of the above states
    114            uint8  sending;         // 0 - not sent, 1 - unbind, 2 bind - expecting response
    115            uint8  transSeq;
    116            uint8  ed1numMatched;
    117            uint16 *ed1Matched;
    118            uint8  ed2numMatched;
    119            uint16 *ed2Matched;
    120          } ZDMatchEndDeviceBind_t;
    121          #endif
    122          
    123          /*********************************************************************
    124           * GLOBAL VARIABLES
    125           */
    126          
    127          /*********************************************************************
    128           * EXTERNAL VARIABLES
    129           */
    130          
    131          /*********************************************************************
    132           * EXTERNAL FUNCTIONS
    133           */
    134          
    135          /*********************************************************************
    136           * LOCAL VARIABLES
    137           */

   \                                 In segment XDATA_Z, align 1, keep-with-next
   \   000000                REQUIRE __INIT_XDATA_Z
    138          static uint16 ZDOBuildBuf[26];  // temp area to build data without allocation
   \                     ??ZDOBuildBuf:
   \   000000                DS 52
    139          
    140          #if defined ( REFLECTOR )
    141          static ZDO_EDBind_t *ZDO_EDBind;     // Null when not used
    142          #endif
    143          
    144          #if defined ( MANAGED_SCAN )
    145            uint32 managedScanNextChannel = 0;
    146            uint32 managedScanChannelMask = 0;
    147            uint8  managedScanTimesPerChannel = 0;
    148          #endif
    149          
    150          #if defined ( ZDO_COORDINATOR )

   \                                 In segment XDATA_Z, align 1, keep-with-next
   \   000000                REQUIRE __INIT_XDATA_Z
    151            ZDMatchEndDeviceBind_t *matchED = (ZDMatchEndDeviceBind_t *)NULL;
   \                     matchED:
   \   000000                DS 2
    152          #endif
    153          
    154          /*********************************************************************
    155           * LOCAL FUNCTIONS
    156           */
    157          static void ZDODeviceSetup( void );
    158          static uint16 *ZDO_CreateAlignedUINT16List(uint8 num, uint8 *buf);
    159          #if defined ( MANAGED_SCAN )
    160            static void ZDOManagedScan_Next( void );
    161          #endif
    162          #if defined ( REFLECTOR )
    163            static void ZDO_RemoveEndDeviceBind( void );
    164            static void ZDO_SendEDBindRsp( byte TransSeq, zAddrType_t *dstAddr, byte Status, byte secUse );
    165          #endif
    166          #if defined ( REFLECTOR ) || defined( ZDO_COORDINATOR )
    167            static byte ZDO_CompareClusterLists( byte numList1, uint16 *list1,
    168                                          byte numList2, uint16 *list2, uint16 *pMatches );
    169          #endif
    170          #if defined ( ZDO_COORDINATOR )
    171            static void ZDO_RemoveMatchMemory( void );
    172            static uint8 ZDO_CopyMatchInfo( ZDEndDeviceBind_t *destReq, ZDEndDeviceBind_t *srcReq );
    173            static uint8 ZDMatchSendState( uint8 reason, uint8 status, uint8 TransSeq );
    174            static void ZDO_EndDeviceBindMatchTimeoutCB( void );
    175          #endif
    176          
    177          /*********************************************************************
    178           * @fn          ZDO_Init
    179           *
    180           * @brief       ZDObject and ZDProfile initialization.
    181           *
    182           * @param       none
    183           *
    184           * @return      none
    185           */

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    186          void ZDO_Init( void )
   \                     ZDO_Init:
    187          {
   \   000000   C082         PUSH    DPL
   \   000002   C083         PUSH    DPH
   \   000004                ; Saved register size: 2
   \   000004                ; Auto size: 0
    188            // Initialize ZD items
    189            #if defined ( REFLECTOR )
    190            ZDO_EDBind = NULL;
    191            #endif
    192          
    193            // Setup the device - type of device to create.
    194            ZDODeviceSetup();
   \   000004                ; Setup parameters for call to function NLME_CoordinatorInit
   \   000004   90....       MOV     DPTR,#(NLME_CoordinatorInit & 0xffff)
   \   000007   74..         MOV     A,#((NLME_CoordinatorInit >> 16) & 0xff)
   \   000009   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    195          
    196            // Initialize ZigBee Device Security Manager
    197            ZDSecMgrInit();
   \   00000C                ; Setup parameters for call to function ZDSecMgrInit
   \   00000C   90....       MOV     DPTR,#(ZDSecMgrInit & 0xffff)
   \   00000F   74..         MOV     A,#((ZDSecMgrInit >> 16) & 0xff)
   \   000011                REQUIRE ?Subroutine62
   \   000011                ; // Fall through to label ?Subroutine62
    198          }

   \                                 In segment BANKED_CODE, align 1, keep-with-next
   \                     ?Subroutine62:
   \   000000   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \                     ??Subroutine62_0:
   \   000003   D083         POP     DPH
   \   000005   D082         POP     DPL
   \   000007   02....       LJMP    ?BRET
    199          
    200          #if defined ( MANAGED_SCAN )
    201          /*********************************************************************
    202           * @fn      ZDOManagedScan_Next()
    203           *
    204           * @brief   Setup a managed scan.
    205           *
    206           * @param   none
    207           *
    208           * @return  none
    209           */
    210          static void ZDOManagedScan_Next( void )
    211          {
    212            // Is it the first time
    213            if ( managedScanNextChannel == 0 && managedScanTimesPerChannel == 0 )
    214            {
    215              // Setup the defaults
    216              managedScanNextChannel  = 1;
    217          
    218              while( managedScanNextChannel && (zgDefaultChannelList & managedScanNextChannel) == 0 )
    219                managedScanNextChannel <<= 1;
    220          
    221              managedScanChannelMask = managedScanNextChannel;
    222              managedScanTimesPerChannel = MANAGEDSCAN_TIMES_PRE_CHANNEL;
    223            }
    224            else
    225            {
    226              // Do we need to go to the next channel
    227              if ( managedScanTimesPerChannel == 0 )
    228              {
    229                // Find next active channel
    230                managedScanChannelMask  = managedScanNextChannel;
    231                managedScanTimesPerChannel = MANAGEDSCAN_TIMES_PRE_CHANNEL;
    232              }
    233              else
    234              {
    235                managedScanTimesPerChannel--;
    236          
    237                if ( managedScanTimesPerChannel == 0 )
    238                {
    239                  managedScanNextChannel  <<= 1;
    240                  while( managedScanNextChannel && (zgDefaultChannelList & managedScanNextChannel) == 0 )
    241                    managedScanNextChannel <<= 1;
    242          
    243                  if ( managedScanNextChannel == 0 )
    244                    zdoDiscCounter  = NUM_DISC_ATTEMPTS + 1; // Stop
    245                }
    246              }
    247            }
    248          }
    249          #endif // MANAGED_SCAN
    250          
    251          /*********************************************************************
    252           * @fn      ZDODeviceSetup()
    253           *
    254           * @brief   Call set functions depending on the type of device compiled.
    255           *
    256           * @param   none
    257           *
    258           * @return  none
    259           */
    260          static void ZDODeviceSetup( void )
    261          {
    262          #if defined( ZDO_COORDINATOR )
    263            NLME_CoordinatorInit();
    264          #endif
    265          
    266          #if defined ( REFLECTOR )
    267            #if defined ( ZDO_COORDINATOR )
    268              APS_ReflectorInit( APS_REFLECTOR_PUBLIC );
    269            #else
    270              APS_ReflectorInit( APS_REFLECTOR_PRIVATE );
    271            #endif
    272          #endif
    273          
    274          #if !defined( ZDO_COORDINATOR ) || defined( SOFT_START )
    275            NLME_DeviceJoiningInit();
    276          #endif
    277          }
    278          
    279          /*********************************************************************
    280           * @fn          ZDO_StartDevice
    281           *
    282           * @brief       This function starts a device in a network.
    283           *
    284           * @param       logicalType     - Device type to start
    285           *              startMode       - indicates mode of device startup
    286           *              beaconOrder     - indicates time betwen beacons
    287           *              superframeOrder - indicates length of active superframe
    288           *
    289           * @return      none
    290           */

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    291          void ZDO_StartDevice( byte logicalType, devStartModes_t startMode, byte beaconOrder, byte superframeOrder )
   \                     ZDO_StartDevice:
    292          {
   \   000000   74F7         MOV     A,#-0x9
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 9
   \   000005                ; Auto size: 0
   \   000005   E9           MOV     A,R1
   \   000006   FD           MOV     R5,A
   \   000007   EB           MOV     A,R3

⌨️ 快捷键说明

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