📄 zdapp.s51
字号:
// 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 + -