zdobject.lst

来自「用IAR开发的ZIGBEE网络路由例子」· LST 代码 · 共 1,291 行 · 第 1/5 页

LST
1,291
字号
    149          
    150          #if defined ( ZDO_COORDINATOR )
    151            ZDMatchEndDeviceBind_t *matchED = (ZDMatchEndDeviceBind_t *)NULL;
    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_DeviceJoiningInit
   \   000004   90....       MOV     DPTR,#(NLME_DeviceJoiningInit & 0xffff)
   \   000007   74..         MOV     A,#((NLME_DeviceJoiningInit >> 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   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    198          }
   \   000014                REQUIRE ?Subroutine24
   \   000014                ; // Fall through to label ?Subroutine24

   \                                 In segment BANKED_CODE, align 1, keep-with-next
   \                     ?Subroutine24:
   \   000000   D083         POP     DPH
   \   000002   D082         POP     DPL
   \   000004   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   74F4         MOV     A,#-0xc
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 12
   \   000005                ; Auto size: 11
   \   000005   74F5         MOV     A,#-0xb
   \   000007   12....       LCALL   ?ALLOC_XSTACK8
    293            ZStatus_t ret;
    294          
    295            ret = ZUnsupportedMode;
   \   00000A   7E12         MOV     R6,#0x12
    296          
    297          #if defined(ZDO_COORDINATOR)
    298            if ( logicalType == NODETYPE_COORDINATOR )
    299            {
    300              if ( startMode == MODE_HARD )
    301              {
    302                devState = DEV_COORD_STARTING;
    303                ret = NLME_NetworkFormationRequest( zgConfigPANID, zgDefaultChannelList,
    304                                                    zgDefaultStartingScanDuration, beaconOrder,
    305                                                    superframeOrder, false );
    306              }
    307              else if ( startMode == MODE_RESUME )
    308              {
    309                // Just start the coordinator
    310                devState = DEV_COORD_STARTING;
    311                ret = NLME_StartRouterRequest( beaconOrder, beaconOrder, false );
    312              }
    313              else
    314              {
    315          #if defined( LCD_SUPPORTED )
    316                HalLcdWriteScreen( "StartDevice ERR", "MODE unknown" );
    317          #endif
    318              }
    319            }
    320          #endif  // !ZDO_COORDINATOR
    321          
    322          #if !defined ( ZDO_COORDINATOR ) || defined( SOFT_START )
    323            if ( logicalType == NODETYPE_ROUTER || logicalType == NODETYPE_DEVICE )
   \   00000C   7401         MOV     A,#0x1
   \   00000E   69           XRL     A,R1
   \   00000F   6008         JZ      ??ZDO_StartDevice_0
   \   000011   7402         MOV     A,#0x2
   \   000013   69           XRL     A,R1
   \   000014   6003         JZ      $+5
   \   000016   02....       LJMP    ??ZDO_StartDevice_1 & 0xFFFF
    324            {
    325              if ( (startMode == MODE_JOIN) || (startMode == MODE_REJOIN) )
   \                     ??ZDO_StartDevice_0:
   \   000019   EA           MOV     A,R2
   \   00001A   6005         JZ      ??ZDO_StartDevice_2
   \   00001C   7403         MOV     A,#0x3
   \   00001E   6A           XRL     A,R2
   \   00001F   7017         JNZ     ??ZDO_StartDevice_3
    326              {
    327                devState = DEV_NWK_DISC;
   \                     ??ZDO_StartDevice_2:
   \   000021   7402         MOV     A,#0x2
   \   000023   12....       LCALL   ?Subroutine1 & 0xFFFF
    328          
    329            #if defined( MANAGED_SCAN )
    330                ZDOManagedScan_Next();
    331                ret = NLME_NetworkDiscoveryRequest( managedScanChannelMask, BEACON_ORDER_15_MSEC );
    332            #else
    333                ret = NLME_NetworkDiscoveryRequest( zgDefaultChannelList, zgDefaultStartingScanDuration );
   \                     ??CrossCallReturnLabel_2:
   \   000026   12....       LCALL   ?L_MOV_X
   \   000029   AA..         MOV     R2,?V0 + 0
   \   00002B   AB..         MOV     R3,?V0 + 1
   \   00002D   AC..         MOV     R4,?V0 + 2
   \   00002F   AD..         MOV     R5,?V0 + 3
   \   000031   90....       MOV     DPTR,#(NLME_NetworkDiscoveryRequest & 0xffff)
   \   000034   74..         MOV     A,#((NLME_NetworkDiscoveryRequest >> 16) & 0xff)
   \   000036   8063         SJMP    ??ZDO_StartDevice_4
    334            #endif
    335              }
    336              else if ( startMode == MODE_RESUME )
   \                     ??ZDO_StartDevice_3:
   \   000038   7401         MOV     A,#0x1
   \   00003A   6A           XRL     A,R2
   \   00003B   7063         JNZ     ??ZDO_StartDevice_1
    337              {
    338                if ( logicalType == NODETYPE_ROUTER )
   \   00003D   7401         MOV     A,#0x1
   \   00003F   69           XRL     A,R1
   \   000040   7044         JNZ     ??ZDO_StartDevice_5
    339                {
    340                  ZMacScanCnf_t scanCnf;
    341                  devState = DEV_NWK_ORPHAN;
   \   000042   740A         MOV     A,#0xa

⌨️ 快捷键说明

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