zdobject.lst

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

LST
1,256
字号
   \   000008   F9           MOV     R1,A
    293            ZStatus_t ret;
    294          
    295            ret = ZUnsupportedMode;
   \   000009   7E12         MOV     R6,#0x12
    296          
    297          #if defined(ZDO_COORDINATOR)
    298            if ( logicalType == NODETYPE_COORDINATOR )
   \   00000B   ED           MOV     A,R5
   \   00000C   7050         JNZ     ??ZDO_StartDevice_0
    299            {
    300              if ( startMode == MODE_HARD )
   \   00000E   7402         MOV     A,#0x2
   \   000010   6A           XRL     A,R2
   \   000011   7032         JNZ     ??ZDO_StartDevice_1
    301              {
    302                devState = DEV_COORD_STARTING;
   \   000013   7408         MOV     A,#0x8
   \   000015   90....       MOV     DPTR,#devState
   \   000018   F0           MOVX    @DPTR,A
    303                ret = NLME_NetworkFormationRequest( zgConfigPANID, zgDefaultChannelList,
    304                                                    zgDefaultStartingScanDuration, beaconOrder,
    305                                                    superframeOrder, false );
   \   000019                ; Setup parameters for call to function NLME_NetworkFormationRequest
   \   000019   75..00       MOV     ?V0 + 0,#0x0
   \   00001C   78..         MOV     R0,#?V0 + 0
   \   00001E   12....       LCALL   ?PUSH_XSTACK_I_ONE
   \   000021   90....       MOV     DPTR,#zgDefaultChannelList
   \   000024   12....       LCALL   ?PUSH_XSTACK8_X_FOUR
   \   000027   EC           MOV     A,R4
   \   000028   FD           MOV     R5,A
   \   000029   E9           MOV     A,R1
   \   00002A   FC           MOV     R4,A
   \   00002B   90....       MOV     DPTR,#zgDefaultStartingScanDuration
   \   00002E   E0           MOVX    A,@DPTR
   \   00002F   F9           MOV     R1,A
   \   000030   90....       MOV     DPTR,#zgConfigPANID
   \   000033   12....       LCALL   ?Subroutine40 & 0xFFFF
   \                     ??CrossCallReturnLabel_113:
   \   000036   90....       MOV     DPTR,#(NLME_NetworkFormationRequest & 0xffff)
   \   000039   74..         MOV     A,#((NLME_NetworkFormationRequest >> 16) & 0xff)
   \   00003B   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \   00003E   7405         MOV     A,#0x5
   \   000040   12....       LCALL   ?DEALLOC_XSTACK8
   \   000043   8017         SJMP    ??ZDO_StartDevice_2
    306              }
    307              else if ( startMode == MODE_RESUME )
   \                     ??ZDO_StartDevice_1:
   \   000045   7401         MOV     A,#0x1
   \   000047   6A           XRL     A,R2
   \   000048   7014         JNZ     ??ZDO_StartDevice_0
    308              {
    309                // Just start the coordinator
    310                devState = DEV_COORD_STARTING;
   \   00004A   7408         MOV     A,#0x8
   \   00004C   90....       MOV     DPTR,#devState
   \   00004F   F0           MOVX    @DPTR,A
    311                ret = NLME_StartRouterRequest( beaconOrder, beaconOrder, false );
   \   000050                ; Setup parameters for call to function NLME_StartRouterRequest
   \   000050   7B00         MOV     R3,#0x0
   \   000052   E9           MOV     A,R1
   \   000053   FA           MOV     R2,A
   \   000054   90....       MOV     DPTR,#(NLME_StartRouterRequest & 0xffff)
   \   000057   74..         MOV     A,#((NLME_StartRouterRequest >> 16) & 0xff)
   \   000059   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \                     ??ZDO_StartDevice_2:
   \   00005C   E9           MOV     A,R1
   \   00005D   FE           MOV     R6,A
    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 )
    324            {
    325              if ( (startMode == MODE_JOIN) || (startMode == MODE_REJOIN) )
    326              {
    327                devState = DEV_NWK_DISC;
    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 );
    334            #endif
    335              }
    336              else if ( startMode == MODE_RESUME )
    337              {
    338                if ( logicalType == NODETYPE_ROUTER )
    339                {
    340                  ZMacScanCnf_t scanCnf;
    341                  devState = DEV_NWK_ORPHAN;
    342          
    343                  /* if router and nvram is available, fake successful orphan scan */
    344                  scanCnf.hdr.Status = ZSUCCESS;
    345                  scanCnf.ScanType = ZMAC_ORPHAN_SCAN;
    346                  scanCnf.UnscannedChannels = 0;
    347                  scanCnf.ResultListSize = 0;
    348                  nwk_ScanJoiningOrphan(&scanCnf);
    349          
    350                  ret = ZSuccess;
    351                }
    352                else
    353                {
    354                  devState = DEV_NWK_ORPHAN;
    355                  ret = NLME_OrphanJoinRequest( zgDefaultChannelList,
    356                                                zgDefaultStartingScanDuration );
    357                }
    358              }
    359              else
    360              {
    361          #if defined( LCD_SUPPORTED )
    362                HalLcdWriteScreen( "StartDevice ERR", "MODE unknown" );
    363          #endif
    364              }
    365            }
    366          #endif  //!ZDO COORDINATOR || SOFT_START
    367          
    368            // configure the Security Manager for type of device
    369            ZDSecMgrConfig();
   \                     ??ZDO_StartDevice_0:
   \   00005E                ; Setup parameters for call to function ZDSecMgrConfig
   \   00005E   90....       MOV     DPTR,#(ZDSecMgrConfig & 0xffff)
   \   000061   74..         MOV     A,#((ZDSecMgrConfig >> 16) & 0xff)
   \   000063   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    370          
    371            if ( ret != ZSuccess )
   \   000066   EE           MOV     A,R6
   \   000067   6010         JZ      ??ZDO_StartDevice_3
    372              osal_start_timer( ZDO_NETWORK_INIT, NWK_RETRY_DELAY );
   \   000069                ; Setup parameters for call to function osal_start_timer
   \   000069   7CE8         MOV     R4,#-0x18
   \   00006B   7D03         MOV     R5,#0x3
   \   00006D   7A01         MOV     R2,#0x1
   \   00006F   7B00         MOV     R3,#0x0
   \   000071   90....       MOV     DPTR,#(osal_start_timer & 0xffff)
   \   000074   74..         MOV     A,#((osal_start_timer >> 16) & 0xff)
   \   000076   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    373          }
   \                     ??ZDO_StartDevice_3:
   \   000079   7F01         MOV     R7,#0x1
   \   00007B   02....       LJMP    ?BANKED_LEAVE_XDATA

   \                                 In segment BANKED_CODE, align 1, keep-with-next
   \                     ?Subroutine40:
   \   000000   12....       LCALL   ?Subroutine57 & 0xFFFF
   \                     ??CrossCallReturnLabel_164:
   \   000003   22           RET

   \                                 In segment BANKED_CODE, align 1, keep-with-next
   \                     ?Subroutine57:
   \   000000   E0           MOVX    A,@DPTR
   \   000001   FA           MOV     R2,A
   \   000002   A3           INC     DPTR
   \   000003   E0           MOVX    A,@DPTR
   \   000004   FB           MOV     R3,A
   \   000005   22           RET
    374          
    375          /*********************************************************************
    376           * @fn      ZDO_UpdateNwkStatus()
    377           *
    378           * @brief
    379           *
    380           *   This function will send an update message to each registered
    381           *   application endpoint/interface about a network status change.
    382           *
    383           * @param   none
    384           *
    385           * @return  none
    386           */

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    387          void ZDO_UpdateNwkStatus( devStates_t state )
   \                     ZDO_UpdateNwkStatus:
    388          {
   \   000000   74F4         MOV     A,#-0xc
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 12
   \   000005                ; Auto size: 0
   \   000005   89..         MOV     ?V0 + 0,R1
    389            // Endpoint/Interface descriptor list.
    390            epList_t *epDesc = epList;
   \   000007   90....       MOV     DPTR,#epList
   \   00000A   12....       LCALL   ?Subroutine41 & 0xFFFF
    391            byte bufLen = sizeof(osal_event_hdr_t);
    392            osal_event_hdr_t *msgPtr;
    393          
    394            ZDAppNwkAddr.addr.shortAddr = NLME_GetShortAddr();
   \                     ??CrossCallReturnLabel_118:
   \   00000D                ; Setup parameters for call to function NLME_GetShortAddr
   \   00000D   90....       MOV     DPTR,#(NLME_GetShortAddr & 0xffff)
   \   000010   74..         MOV     A,#((NLME_GetShortAddr >> 16) & 0xff)
   \   000012   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \   000015   90....       MOV     DPTR,#ZDAppNwkAddr
   \   000018   EA           MOV     A,R2
   \   000019   F0           MOVX    @DPTR,A
   \   00001A   A3           INC     DPTR
   \   00001B   EB           MOV     A,R3
   \   00001C   F0           MOVX    @DPTR,A
    395            (void)NLME_GetExtAddr();  // Load the saveExtAddr pointer.
   \   00001D                ; Setup parameters for call to function NLME_GetExtAddr
   \   00001D   90....       MOV     DPTR,#(NLME_GetExtAddr & 0xffff)
   \   000020   74..         MOV     A,#((NLME_GetExtAddr >> 16) & 0xff)
   \   000022   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \   000025   803F         SJMP    ??CrossCallReturnLabel_119
    396          
    397            while ( epDesc )
    398            {
    399              if ( epDesc->epDesc->endPoint != ZDO_EP )
   \                     ??ZDO_UpdateNwkStatus_0:
   \   000027   8E82         MOV     DPL,R6
   \   000029   8F83         MOV     DPH,R7
   \   00002B   12....       LCALL   ?Subroutine26 & 0xFFFF
   \                     ??CrossCallReturnLabel_69:
   \   00002E   6027         JZ      ??ZDO_UpdateNwkStatus_1
    400              {
    401                msgPtr = (osal_event_hdr_t *)osal_msg_allocate( bufLen );
   \   000030                ; Setup parameters for call to function osal_msg_allocate
   \   000030   7A02         MOV     R2,#0x2
   \   000032   7B00         MOV     R3,#0x0
   \   000034   90....       MOV     DPTR,#(osal_msg_allocate & 0xffff)
   \   000037   74..         MOV     A,#((osal_msg_allocate >> 16) & 0xff)
   \   000039   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    402                if ( msgPtr )
   \   00003C   EA           MOV     A,R2
   \   00003D   7001         JNZ     ??ZDO_UpdateNwkStatus_2
   \   00003F   EB           MOV     A,R3
   \                     ??ZDO_UpdateNwkStatus_2:
   \   000040   6015         JZ      ??ZDO_UpdateNwkStatus_1
    403                {
    404                  msgPtr->event = ZDO_STATE_CHANGE; // Command ID
   \   000042   74D1         MOV     A,#-0x2f
   \   000044   8A82         MOV     DPL,R2
   \   000046   8B83         MOV     DPH,R3
   \   000048   F0           MOVX    @DPTR,A
    405                  msgPtr->status = (byte)state;
   \   000049   A3           INC     DPTR
   \   00004A   E5..         MOV     A,?V0 + 0
   \   00004C   F0           MOVX    @DPTR,A
    406          
    407                  osal_msg_send( *(epDesc->epDesc->task_id), (byte *)msgPtr );
   \   00004D                ; Setup parameters for call to function osal_msg_send
   \   00004D   8E82         MOV     DPL,R6
   \   00004F   8F83         MOV     DPH,R7
   \   000051   12....       LCALL   ?Subroutine16 & 0xFFFF
   \                     ??CrossCallReturnLabel_53:

⌨️ 快捷键说明

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