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

📄 zdapp.lst

📁 用IAR开发的ZIGBEE网络路由例子
💻 LST
📖 第 1 页 / 共 5 页
字号:
    525            // Check leave control reset settings
    526            ZDApp_LeaveCtrlStartup( &devState, &startDelay );
   \   000023                ; Setup parameters for call to function ZDApp_LeaveCtrlStartup
   \   000023   85..82       MOV     DPL,?XSP + 0
   \   000026   85..83       MOV     DPH,?XSP + 1
   \   000029   AC82         MOV     R4,DPL
   \   00002B   AD83         MOV     R5,DPH
   \   00002D   7A..         MOV     R2,#(devState & 0xff)
   \   00002F   7B..         MOV     R3,#((devState >> 8) & 0xff)
   \   000031   90....       MOV     DPTR,#(ZDApp_LeaveCtrlStartup & 0xffff)
   \   000034   74..         MOV     A,#((ZDApp_LeaveCtrlStartup >> 16) & 0xff)
   \   000036   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    527          
    528            // Leave may make the hold state come back
    529            if ( devState == DEV_HOLD )
   \   000039   90....       MOV     DPTR,#devState
   \   00003C   E0           MOVX    A,@DPTR
   \   00003D   7004         JNZ     ??ZDOInitDevice_0
    530              return ( ZDO_INITDEV_LEAVE_NOT_STARTED );   // Don't join - (one time).
   \   00003F   7902         MOV     R1,#0x2
   \   000041   802F         SJMP    ??ZDOInitDevice_1
    531          
    532          #if defined ( NV_RESTORE )
    533            // Get Keypad directly to see if a reset nv is needed.
    534            // Hold down the SW_BYPASS_NV key (defined in OnBoard.h)
    535            // while booting to skip past NV Restore.
    536            if ( HalKeyRead() == SW_BYPASS_NV )
    537              networkStateNV = ZDO_INITDEV_NEW_NETWORK_STATE;
    538            else
    539            {
    540              // Determine if NV should be restored
    541              networkStateNV = ZDApp_ReadNetworkRestoreState();
    542            }
    543          
    544            if ( networkStateNV == ZDO_INITDEV_RESTORED_NETWORK_STATE )
    545            {
    546              networkStateNV = ZDApp_RestoreNetworkState();
    547            }
    548            else
    549            {
    550              // Wipe out the network state in NV
    551              NLME_InitNV();
    552              NLME_SetDefaultNV();
    553              ZDAppSetupProtoVersion();
    554            }
    555          #endif
    556          
    557            if ( networkStateNV == ZDO_INITDEV_NEW_NETWORK_STATE )
    558            {
    559              ZDAppDetermineDeviceType();
    560          
    561              // Only delay if joining network - not restoring network state
    562              extendedDelay = (uint16)((NWK_START_DELAY + startDelay)
    563                        + (osal_rand() & EXTENDED_JOINING_RANDOM_MASK));
   \                     ??ZDOInitDevice_0:
   \   000043                ; Setup parameters for call to function osal_rand
   \   000043   90....       MOV     DPTR,#(osal_rand & 0xffff)
   \   000046   74..         MOV     A,#((osal_rand >> 16) & 0xff)
   \   000048   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \   00004B   8A..         MOV     ?V0 + 0,R2
   \   00004D   A8..         MOV     R0,?V0 + 0
   \   00004F   85..82       MOV     DPL,?XSP + 0
   \   000052   85..83       MOV     DPH,?XSP + 1
   \   000055   747F         MOV     A,#0x7f
   \   000057   58           ANL     A,R0
   \   000058   F8           MOV     R0,A
   \   000059   E0           MOVX    A,@DPTR
   \   00005A   28           ADD     A,R0
   \   00005B   F8           MOV     R0,A
   \   00005C   A3           INC     DPTR
   \   00005D   E0           MOVX    A,@DPTR
   \   00005E   3400         ADDC    A,#0x0
   \   000060   F9           MOV     R1,A
   \   000061   7464         MOV     A,#0x64
   \   000063   28           ADD     A,R0
   \   000064   FA           MOV     R2,A
   \   000065   E4           CLR     A
   \   000066   39           ADDC    A,R1
   \   000067   FB           MOV     R3,A
    564            }
    565          
    566            // Trigger the network start
    567            ZDApp_NetworkInit( extendedDelay );
   \   000068                ; Setup parameters for call to function ZDApp_NetworkInit
   \   000068   90....       MOV     DPTR,#(ZDApp_NetworkInit & 0xffff)
   \   00006B   74..         MOV     A,#((ZDApp_NetworkInit >> 16) & 0xff)
   \   00006D   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    568          
    569            return ( networkStateNV );
   \   000070   7901         MOV     R1,#0x1
   \                     ??ZDOInitDevice_1:
   \   000072   02....       LJMP    ?Subroutine28 & 0xFFFF
    570          }
    571          
    572          /*********************************************************************
    573           * @fn      ZDApp_ReadNetworkRestoreState
    574           *
    575           * @brief   Read the ZCD_NV_STARTUP_OPTION NV Item to state whether
    576           *          or not to restore the network state.
    577           *          If the read value has the ZCD_STARTOPT_DEFAULT_NETWORK_STATE
    578           *          bit set return the ZDO_INITDEV_NEW_NETWORK_STATE.
    579           *
    580           * @param   none
    581           *
    582           * @return  ZDO_INITDEV_NEW_NETWORK_STATE
    583           *          or ZDO_INITDEV_RESTORED_NETWORK_STATE based on whether or
    584           *          not ZCD_STARTOPT_DEFAULT_NETWORK_STATE bit is set in
    585           *          ZCD_NV_STARTUP_OPTION
    586           */

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    587          uint8 ZDApp_ReadNetworkRestoreState( void )
   \                     ZDApp_ReadNetworkRestoreState:
    588          {
   \   000000   74F7         MOV     A,#-0x9
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 9
   \   000005                ; Auto size: 0
    589            uint8 networkStateNV = ZDO_INITDEV_RESTORED_NETWORK_STATE;
   \   000005   7E00         MOV     R6,#0x0
    590          
    591            // Look for the New Network State option.
    592            if ( zgReadStartupOptions() & ZCD_STARTOPT_DEFAULT_NETWORK_STATE )
   \   000007                ; Setup parameters for call to function zgReadStartupOptions
   \   000007   90....       MOV     DPTR,#(zgReadStartupOptions & 0xffff)
   \   00000A   74..         MOV     A,#((zgReadStartupOptions >> 16) & 0xff)
   \   00000C   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \   00000F   E9           MOV     A,R1
   \   000010   A2E1         MOV     C,0xE0 /* A   */.1
   \   000012   5001         JNC     ??ZDApp_ReadNetworkRestoreState_0
    593            {
    594              networkStateNV = ZDO_INITDEV_NEW_NETWORK_STATE;
   \   000014   0E           INC     R6
    595            }
    596          
    597            return ( networkStateNV );
   \                     ??ZDApp_ReadNetworkRestoreState_0:
   \   000015   EE           MOV     A,R6
   \   000016   F9           MOV     R1,A
   \   000017   80..         SJMP    ??Subroutine29_0
    598          }

   \                                 In segment BANKED_CODE, align 1, keep-with-next
   \                     ?Subroutine29:
   \   000000   12....       LCALL   ?DEALLOC_XSTACK8
   \                     ??Subroutine29_0:
   \   000003   7F01         MOV     R7,#0x1
   \   000005   02....       LJMP    ?BANKED_LEAVE_XDATA
    599          
    600          /*********************************************************************
    601           * @fn      ZDAppDetermineDeviceType()
    602           *
    603           * @brief   Determines the type of device to start.  Right now
    604           *          this only works with the SOFT_START feature.  So it doesn't
    605           *          support the end device type.
    606           *
    607           *          Looks at zgDeviceLogicalType and determines what type of
    608           *          device to start.  The types are:
    609           *            ZG_DEVICETYPE_COORDINATOR
    610           *            ZG_DEVICETYPE_ROUTER
    611           *            ZG_DEVICETYPE_ENDDEVICE - not supported yet.
    612           *            ZG_DEVICETYPE_SOFT - looks for coordinator, if one doesn't
    613           *               exist, becomes one.  This option is should only be used
    614           *               if the system is manually configured and you are insured
    615           *               that the first device is started before all the other
    616           *               devices are started.
    617           *
    618           * @param   none
    619           *
    620           * @return  none
    621           */

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    622          void ZDAppDetermineDeviceType( void )
   \                     ZDAppDetermineDeviceType:
    623          {
   \   000000                ; Saved register size: 0
   \   000000                ; Auto size: 0
    624            if ( zgDeviceLogicalType == ZG_DEVICETYPE_ENDDEVICE )
   \   000000   02....       LJMP    ?BRET
    625              return;
    626          
    627          #if defined ( SOFT_START )
    628            if ( zgDeviceLogicalType == ZG_DEVICETYPE_COORDINATOR )
    629            {
    630              devStartMode = MODE_HARD;     // Start as a coordinator
    631              ZDO_Config_Node_Descriptor.LogicalType = NODETYPE_COORDINATOR;
    632            }
    633            else
    634            {
    635              if ( zgDeviceLogicalType == ZG_DEVICETYPE_ROUTER )
    636              {
    637                softStartAllowCoord = FALSE;  // Don't allow coord to start
    638                continueJoining = TRUE;
    639              }
    640              devStartMode = MODE_JOIN;     // Assume joining
    641            }
    642          #endif // SOFT_START
    643          }
    644          
    645          /*********************************************************************
    646           * @fn      ZDApp_NetworkStartEvt()
    647           *
    648           * @brief   Process the Network Start Event
    649           *
    650           * @param   none
    651           *
    652           * @return  none
    653           */

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    654          void ZDApp_NetworkStartEvt( void )
   \                     ZDApp_NetworkStartEvt:
    655          {
   \   000000   C082         PUSH    DPL
   \   000002   C083         PUSH    DPH
   \   000004                ; Saved register size: 2
   \   000004                ; Auto size: 0
    656            if ( nwkStatus == ZSuccess )
   \   000004   90....       MOV     DPTR,#nwkStatus
   \   000007   E0           MOVX    A,@DPTR
   \   000008   7017         JNZ     ??ZDApp_NetworkStartEvt_0
    657            {
    658              // Successfully started a ZigBee network
    659              if ( devState == DEV_COORD_STARTING )
   \   00000A   90....       MOV     DPTR,#devState
   \   00000D   E0           MOVX    A,@DPTR
   \   00000E   6408         XRL     A,#0x8
   \   000010   7003         JNZ     ??ZDApp_NetworkStartEvt_1
    660              {
    661                devState = DEV_ZB_COORD;
   \   000012   7409         MOV     A,#0x9
   \   000014   F0           MOVX    @DPTR,A
    662          
    663          #if ( SECURE != 0 )
    664                // Initialize keys
    665                SSP_UpdateNwkKey( (byte*)zgPreConfigKey, 0 );
    666                SSP_SwitchNwkKey( 0 );
    667          #endif
    668              }
    669          
    670              osal_pwrmgr_device( PWRMGR_ALWAYS_ON );
   \                     ??ZDApp_NetworkStartEvt_1:
   \   000015                ; Setup parameters for call to function osal_pwrmgr_device
   \   000015   7900         MOV     R1,#0x0
   \   000017   90....       MOV     DPTR,#(osal_pwrmgr_device & 0xffff)
   \   00001A   74..         MOV     A,#((osal_pwrmgr_device >> 16) & 0xff)
   \   00001C   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    671              osal_set_event( ZDAppTaskID, ZDO_STATE_CHANGE_EVT );
   \   00001F                ; Setup parameters for call to function osal_set_event
   \   00001F   8039         SJMP    ??ZDApp_NetworkStartEvt_2
    672            }
    673            e

⌨️ 快捷键说明

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