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

📄 zdapp.s51

📁 用IAR开发的ZIGBEE网络路由例子
💻 S51
📖 第 1 页 / 共 5 页
字号:
//   37 #include "ZDConfig.h"
//   38 #include "ZDSecMgr.h"
//   39 #include "ZDApp.h"
//   40 #include "DebugTrace.h"
//   41 #include "nwk_util.h"
//   42 #include "OnBoard.h"

        ASEGN SFR_AN:DATA:NOROOT,0c9H
// unsigned char volatile __sfr WDCTL
WDCTL:
        DS 1
//   43 #include "ZGlobals.h"
//   44 
//   45 #if   ( SECURE != 0  )
//   46   #include "ssp.h"
//   47 #endif
//   48 
//   49 #if defined( MT_ZDO_FUNC )
//   50   #include "MT_ZDO.h"
//   51 #endif
//   52 
//   53 /* HAL */
//   54 #include "hal_led.h"
//   55 #include "hal_lcd.h"
//   56 #include "hal_key.h"
//   57 
//   58 #if defined( MT_MAC_FUNC ) || defined( MT_MAC_CB_FUNC )
//   59   #error "ERROR! MT_MAC functionalities should be disabled on ZDO devices"
//   60 #endif
//   61 /*********************************************************************
//   62  * MACROS
//   63  */
//   64 
//   65 /*********************************************************************
//   66  * CONSTANTS
//   67  */
//   68 #if !defined( NWK_START_DELAY )
//   69   #define NWK_START_DELAY             100   // in milliseconds
//   70 #endif
//   71 
//   72 #if !defined( EXTENDED_JOINING_RANDOM_MASK )
//   73   #define EXTENDED_JOINING_RANDOM_MASK 0x007F
//   74 #endif
//   75 
//   76 #if !defined( BEACON_REQUEST_DELAY )
//   77   #define BEACON_REQUEST_DELAY        100   // in milliseconds
//   78 #endif
//   79 
//   80 #if !defined( BEACON_REQ_DELAY_MASK )
//   81   #define BEACON_REQ_DELAY_MASK       0x007F
//   82 #endif
//   83 
//   84 #if defined (AUTO_SOFT_START)
//   85   #define MAX_RESUME_RETRY            3
//   86   #define NUM_DISC_ATTEMPTS           3
//   87 #else
//   88   #define MAX_RESUME_RETRY            1
//   89 #endif
//   90 
//   91 #define MAX_DEVICE_UNAUTH_TIMEOUT   5000  // 5 seconds
//   92 
//   93 // Beacon Order Settings (see NLMEDE.h)
//   94 #define DEFAULT_BEACON_ORDER        BEACON_ORDER_NO_BEACONS
//   95 #define DEFAULT_SUPERFRAME_ORDER    DEFAULT_BEACON_ORDER
//   96 
//   97 #if ( SECURE != 0 )
//   98   #if !defined( MAX_NWK_FRAMECOUNTER_CHANGES )
//   99     // The number of times the frame counter can change before
//  100     // saving to NV
//  101     #define MAX_NWK_FRAMECOUNTER_CHANGES    1000
//  102   #endif
//  103 #endif
//  104 
//  105 // Leave control bits
//  106 #define ZDAPP_LEAVE_CTRL_INIT 0
//  107 #define ZDAPP_LEAVE_CTRL_SET  1
//  108 #define ZDAPP_LEAVE_CTRL_RA   2
//  109 
//  110 // Standard time to update NWK NV data
//  111 #define ZDAPP_UPDATE_NWK_NV_TIME 100
//  112 
//  113 // Address Manager Stub Implementation
//  114 #define ZDApp_NwkWriteNVRequest AddrMgrWriteNVRequest
//  115 
//  116 /*********************************************************************
//  117  * TYPEDEFS
//  118  */
//  119 
//  120 /*********************************************************************
//  121  * GLOBAL VARIABLES
//  122  */
//  123 
//  124 #if defined( LCD_SUPPORTED )
//  125   byte MatchRsps = 0;
//  126 #endif
//  127 

        RSEG XDATA_I:XDATA:NOROOT(0)
//  128 byte zdoDiscCounter = 1;
zdoDiscCounter:
        DS 1
        REQUIRE `?<Initializer for zdoDiscCounter>`
        REQUIRE __INIT_XDATA_I
//  129 

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
//  130 zAddrType_t ZDAppNwkAddr;
ZDAppNwkAddr:
        DS 9
//  131 
//  132 #if defined ( ZDO_MGMT_NWKDISC_RESPONSE )
//  133   byte zdappMgmtNwkDiscRspTransSeq;
//  134   byte zdappMgmtNwkDiscReqInProgress = FALSE;
//  135   zAddrType_t zdappMgmtNwkDiscRspAddr;
//  136   byte zdappMgmtNwkDiscStartIndex;
//  137   byte zdappMgmtSavedNwkState;
//  138 #endif
//  139 
//  140 #if ( SECURE != 0 )
//  141   uint16 nwkFrameCounterChanges = 0;
//  142 #endif
//  143 
//  144 #if defined ( SOFT_START )
//  145   static uint8 softStartAllowCoord = TRUE;
//  146 #endif
//  147 

        RSEG XDATA_I:XDATA:NOROOT(0)
//  148 uint8 continueJoining = TRUE;
continueJoining:
        DS 1
        REQUIRE `?<Initializer for continueJoining>`
        REQUIRE __INIT_XDATA_I
//  149 

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
//  150 byte  _tmpRejoinState;
_tmpRejoinState:
        DS 1
//  151 
//  152 /*********************************************************************
//  153  * EXTERNAL VARIABLES
//  154  */
//  155 
//  156 /*********************************************************************
//  157  * EXTERNAL FUNCTIONS
//  158  */
//  159 
//  160 /*********************************************************************
//  161  * LOCAL FUNCTIONS
//  162  */
//  163 
//  164 void ZDApp_NetworkStartEvt( void );
//  165 void ZDApp_DeviceAuthEvt( void );
//  166 void ZDApp_SaveNetworkStateEvt( void );
//  167 
//  168 uint8 ZDApp_ReadNetworkRestoreState( void );
//  169 uint8 ZDApp_RestoreNetworkState( void );
//  170 void ZDAppDetermineDeviceType( void );
//  171 void ZDAppSetupProtoVersion( void );
//  172 void ZDApp_InitUserDesc( void );
//  173 void ZDAppCheckForHoldKey( void );
//  174 void ZDApp_ProcessOSALMsg( osal_event_hdr_t *msgPtr );
//  175 void ZDApp_ProcessNetworkJoin( void );
//  176 void ZDApp_SetCoordAddress( byte endPoint, byte dstEP );
//  177 void ZDApp_SendNewDstAddr( byte dstEP, zAddrType_t *dstAddr,
//  178                cId_t clusterID, byte removeFlag, byte task_id, byte endpoint );
//  179 
//  180 #if ( SECURE != 0 )
//  181   void ZDApp_SaveNwkKey( void );
//  182   byte ZDApp_RestoreNwkKey( void );
//  183 #endif
//  184 
//  185 void ZDApp_SendMsg( byte taskID, byte cmd, byte len, byte *buf );
//  186 
//  187 #if defined ( ZDO_BIND_UNBIND_RESPONSE ) && !defined ( REFLECTOR )
//  188   extern void ZDApp_AppBindReq( byte TransSeq, zAddrType_t *SrcAddr, byte *SrcAddress,
//  189                       byte SrcEndPoint, cId_t ClusterID, byte *DstAddress,
//  190                       byte DstEndPoint, byte SecurityUse, uint8 Type );
//  191 #endif
//  192 
//  193 void ZDApp_ResetTimerStart( uint16 delay );
//  194 void ZDApp_ResetTimerCancel( void );
//  195 void ZDApp_LeaveCtrlInit( void );
//  196 void ZDApp_LeaveCtrlSet( uint8 ra );
//  197 uint8 ZDApp_LeaveCtrlBypass( void );
//  198 void ZDApp_LeaveCtrlStartup( devStates_t* state, uint16* startDelay );
//  199 void ZDApp_LeaveReset( uint8 ra );
//  200 void ZDApp_LeaveUpdate( uint16 nwkAddr, uint8* extAddr,
//  201                         uint8 removeChildren );
//  202 void ZDApp_NodeProfileSync( ZDO_NetworkDiscoveryCfm_t* cfm );
//  203 
//  204 /*********************************************************************
//  205  * LOCAL VARIABLES
//  206  */
//  207 

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
//  208 byte ZDAppTaskID;
ZDAppTaskID:
        DS 1

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
//  209 byte nwkStatus;
nwkStatus:
        DS 1

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
//  210 endPointDesc_t *ZDApp_AutoFindMode_epDesc = (endPointDesc_t *)NULL;
ZDApp_AutoFindMode_epDesc:
        DS 2

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
//  211 uint8 ZDApp_LeaveCtrl;
ZDApp_LeaveCtrl:
        DS 1
//  212 
//  213 
//  214 
//  215 #if defined( ZDO_COORDINATOR ) && !defined( SOFT_START )
//  216   // Set the default to coodinator
//  217   devStartModes_t devStartMode = MODE_HARD;
//  218 #else

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
//  219   devStartModes_t devStartMode = MODE_JOIN;     // Assume joining
devStartMode:
        DS 1
//  220   //devStartModes_t devStartMode = MODE_RESUME; // if already "directly joined"
//  221                         // to parent. Set to make the device do an Orphan scan.
//  222 #endif
//  223 
//  224 #if defined ( ZDO_IEEEADDR_REQUEST )
//  225   static byte ZDApp_IEEEAddrRsp_TaskID = 0;  // Initialized to NO TASK
//  226 #endif
//  227 
//  228 #if defined ( ZDO_NWKADDR_REQUEST )

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
//  229   static byte ZDApp_NwkAddrRsp_TaskID = 0;  // Initialized to NO TASK
??ZDApp_NwkAddrRsp_TaskID:
        DS 1
//  230 #endif
//  231 

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
//  232 static byte ZDApp_MatchDescRsp_TaskID = 0;  // Initialized to NO TASK
??ZDApp_MatchDescRsp_TaskID:
        DS 1

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
//  233 static byte ZDApp_EndDeviceAnnounce_TaskID = 0;  // Initialized to NO TASK
??ZDApp_EndDeviceAnnounce_TaskID:
        DS 1
//  234 
//  235 #if defined ( ZDO_BIND_UNBIND_REQUEST )
//  236   static byte ZDApp_BindUnbindRsp_TaskID = TASK_NO_TASK;
//  237 #endif
//  238 
//  239 #if defined ( ZDO_BIND_UNBIND_RESPONSE ) && !defined ( REFLECTOR )
//  240   static byte ZDApp_BindReq_TaskID = 0;  // Initialized to NO TASK
//  241 #endif
//  242 
//  243 #if defined ( ZDO_MGMT_BIND_RESPONSE ) && !defined ( REFLECTOR )
//  244   static byte ZDApp_MgmtBindReq_TaskID = 0;  // Initialized to NO TASK
//  245 #endif
//  246 
//  247 #if !defined( ZDO_COORDINATOR ) || defined( SOFT_START )

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
//  248   static uint8 retryCnt;
??retryCnt:
        DS 1
//  249 #endif
//  250 
//  251 // a little awkward -- this is will hold the list of versions that are legal given other
//  252 // constraints such as NV value, macro values etc. list used in ZDO_NetworkDiscoveryConfirmCB()
//  253 // when a joining device is deciding which network to join.

        RSEG XDATA_I:XDATA:NOROOT(0)
//  254 static byte sPVerList[] = {ZB_PROT_V1_1, ZB_PROT_V1_0};
??sPVerList:
        DS 2
        REQUIRE `?<Initializer for sPVerList>`
        REQUIRE __INIT_XDATA_I
//  255 

        RSEG XDATA_I:XDATA:NOROOT(0)
//  256 endPointDesc_t ZDApp_epDesc =
ZDApp_epDesc:
        DS 6
        REQUIRE `?<Initializer for ZDApp_epDesc>`
        REQUIRE __INIT_XDATA_I
//  257 {
//  258   ZDO_EP,
//  259   &ZDAppTaskID,
//  260   (SimpleDescriptionFormat_t *)NULL,  // No Simple description for ZDO
//  261   (afNetworkLatencyReq_t)0            // No Network Latency req
//  262 };
//  263 
//  264 #if defined( HOLD_AUTO_START )
//  265   devStates_t devState = DEV_HOLD;
//  266 #else

        RSEG XDATA_I:XDATA:NOROOT(0)
//  267   devStates_t devState = DEV_INIT;
devState:
        DS 1
        REQUIRE `?<Initializer for devState>`
        REQUIRE __INIT_XDATA_I
//  268 #endif
//  269 
//  270   extern uint8 SampleApp_TaskID;
//  271 /*********************************************************************
//  272  * @fn      ZDApp_Init
//  273  *
//  274  * @brief   ZDApp Initialization function.
//  275  *
//  276  * @param   task_id - ZDApp Task ID
//  277  *
//  278  * @return  None
//  279  */

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  280 void ZDApp_Init( byte task_id )
ZDApp_Init:
        CFI Block cfiBlock0 Using cfiCommon0
        CFI Function ZDApp_Init
//  281 {
        FUNCALL ZDApp_Init, NLME_GetExtAddr
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME XSTACK, 1, STACK
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME XSTACK, 1, STACK
        FUNCALL ZDApp_Init, ZDO_Init
        LOCFRAME ISTACK, 2, STACK

⌨️ 快捷键说明

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