📄 mt_nwk.s51
字号:
// 67 * LOCAL FUNCTIONS
// 68 */
// 69 #if defined ( MT_NWK_FUNC ) //NWK commands
// 70 uint8 MT_Nwk_DataRequest( uint16 dstAddr, uint8 nsduLen, uint8* nsdu,
// 71 uint8 nsduHandle, uint16 nsduHandleOptions,
// 72 uint8 secure, uint8 discoverRoute,
// 73 uint8 radius);
// 74
// 75 uint8 MT_Nwk_DataRequest( uint16 dstAddr, uint8 nsduLen, uint8* nsdu,
// 76 uint8 nsduHandle, uint16 nsduHandleOptions,
// 77 uint8 secure, uint8 discoverRoute,
// 78 uint8 radius)
// 79 {
// 80 uint8 status;
// 81 NLDE_DataReqAlloc_t dra;
// 82 NLDE_DataReq_t* req;
// 83
// 84
// 85 dra.overhead = sizeof(NLDE_DataReq_t);
// 86 dra.nsduLen = nsduLen;
// 87 dra.secure = secure;
// 88
// 89 req = NLDE_DataReqAlloc(&dra);
// 90
// 91 if ( req != NULL )
// 92 {
// 93 osal_memcpy(req->nfd.nsdu, nsdu, nsduLen);
// 94
// 95 req->nfd.dstAddr = dstAddr;
// 96 req->nfd.nsduHandleOptions = nsduHandleOptions;
// 97 req->nfd.discoverRoute = discoverRoute;
// 98 req->nfd.radius = radius;
// 99
// 100 status = NLDE_DataReq( req );
// 101 }
// 102 else
// 103 {
// 104 status = ZMemError;
// 105 }
// 106
// 107 return status;
// 108 }
// 109 #endif // defined ( MT_NWK_FUNC )
// 110
// 111 /*********************************************************************
// 112 * @fn MT_NwkCommandProcessing
// 113 *
// 114 * @brief
// 115 *
// 116 * Process all the NWK commands that are issued by test tool
// 117 *
// 118 * @param cmd_id - Command ID
// 119 * @param len - Length of received SPI data message
// 120 * @param pData - pointer to received SPI data message
// 121 *
// 122 * @return void
// 123 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 124 void MT_NwkCommandProcessing( uint16 cmd_id , byte len , byte *pData )
MT_NwkCommandProcessing:
CFI Block cfiBlock0 Using cfiCommon0
CFI Function MT_NwkCommandProcessing
// 125 {
FUNCALL MT_NwkCommandProcessing, NLME_PermitJoiningRequest
LOCFRAME XSTACK, 10, STACK
ARGFRAME XSTACK, 10, STACK
MOV A,#-0xa
LCALL ?BANKED_ENTER_XDATA
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 10)
; Saved register size: 10
; Auto size: 0
// 126 byte ret;
// 127 #if defined ( MT_NWK_FUNC )
// 128 uint8 dummyExPANID[Z_EXTADDR_LEN] = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF };
// 129 uint16 dstAddr;
// 130 #endif
// 131 #if defined ( MT_NWK_FUNC ) //NWK commands
// 132 byte attr;
// 133 byte index;
// 134 byte dataLen;
// 135 byte *dataPtr;
// 136 uint32 channelList;
// 137 byte databuf[SPI_RESP_LEN_NWK_DEFAULT + NWK_DEFAULT_GET_RESPONSE_LEN];
// 138 #if defined( ZDO_COORDINATOR )
// 139 uint16 panId;
// 140 #else
// 141 byte i,j;
// 142 #endif
// 143 #endif // MT_NWK_FUNC
// 144
// 145 len = SPI_0DATA_MSG_LEN + SPI_RESP_LEN_NWK_DEFAULT;
// 146 ret = (byte)ZSuccess;
// 147
// 148 switch (cmd_id)
MOV ?V0 + 0,R2
MOV ?V0 + 1,R3
MOV R0,#?V0 + 0
LCALL ?US_SWITCH_DENSE
`?<Jumptable for MT_NwkCommandProcessing>_0`:
DW 259
DB 0
DW ??MT_NwkCommandProcessing_0
DW ??MT_NwkCommandProcessing_1
// 149 {
// 150 #if defined( RTR_NWK )
// 151 case SPI_CMD_NLME_PERMIT_JOINING_REQ:
// 152 //The only information is PermitDuration
// 153 ret = (byte)NLME_PermitJoiningRequest( *pData );
??MT_NwkCommandProcessing_1:
; Setup parameters for call to function NLME_PermitJoiningRequest
MOV DPL,R4
MOV DPH,R5
MOVX A,@DPTR
MOV R1,A
MOV DPTR,#(NLME_PermitJoiningRequest & 0xffff)
MOV A,#((NLME_PermitJoiningRequest >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 154 break;
// 155 #endif
// 156
// 157 #if defined ( MT_NWK_FUNC ) //NWK commands
// 158 case SPI_CMD_NWK_INIT:
// 159 nwk_init( NWK_TaskID );
// 160 break;
// 161
// 162 case SPI_CMD_NLDE_DATA_REQ:
// 163 //First read the DstAddr
// 164 dstAddr = BUILD_UINT16( pData[1], pData[0] );
// 165 pData += sizeof( dstAddr );
// 166
// 167 //Get the NSDU details
// 168 dataLen = *pData++;
// 169 dataPtr = pData;
// 170
// 171 /* For now, skip a length of ZTEST_DEFAULT_DATA_LEN, instead of dataLen.
// 172 In future ZTOOL releases the data buffer will be only as long as dataLen */
// 173
// 174 //pData += dataLen;
// 175 pData += ZTEST_DEFAULT_DATA_LEN;
// 176
// 177 /* pData[0] = NSDUHandlde
// 178 pData[1] = NSDUHandleOptions
// 179 pData[3] = SecurityEnable
// 180 pData[4] = DiscoverRoute
// 181 pData[5] = RadiusCounter */
// 182
// 183 ret = (byte)MT_Nwk_DataRequest( dstAddr, dataLen, dataPtr, pData[0],
// 184 BUILD_UINT16( pData[2], pData[1] ),
// 185 pData[3], pData[4], pData[5]);
// 186 break;
// 187
// 188 #if defined( ZDO_COORDINATOR )
// 189 case SPI_CMD_NLME_INIT_COORD_REQ:
// 190 panId = BUILD_UINT16( pData[1], pData[0] );
// 191
// 192 MT_ReverseBytes( &pData[2], 4 );
// 193 channelList = osal_build_uint32( &pData[2], 4 );
// 194
// 195 ret = (byte)NLME_NetworkFormationRequest( panId, channelList, pData[6], pData[7],
// 196 pData[8], pData[9] );
// 197 break;
// 198 #endif // ZDO
// 199
// 200 #if defined( RTR_NWK )
// 201 case SPI_CMD_NLME_START_ROUTER_REQ:
// 202 // NOTE: first two parameters are not used, see NLMEDE.h for details
// 203 ret = (byte)NLME_StartRouterRequest( pData[0], pData[1], pData[2] );
// 204 break;
// 205 #endif // RTR
// 206
// 207 case SPI_CMD_NLME_JOIN_REQ:
// 208 ret = (byte)NLME_JoinRequest( dummyExPANID, BUILD_UINT16( pData[1], pData[0] ), pData[2], pData[3] );
// 209 if ( pData[3] & CAPINFO_RCVR_ON_IDLE )
// 210 {
// 211 // The receiver is on, turn network layer polling off.
// 212 NLME_SetPollRate( 0 );
// 213 NLME_SetQueuedPollRate( 0 );
// 214 NLME_SetResponseRate( 0 );
// 215 }
// 216 break;
// 217
// 218 case SPI_CMD_NLME_LEAVE_REQ:
// 219 {
// 220 NLME_LeaveReq_t req;
// 221 // if extAddr is all zeros, it means null pointer..
// 222 for( index = 0; ( ( index < Z_EXTADDR_LEN ) &&
// 223 ( pData[index] == 0 ) ) ; index++ );
// 224 if ( index == Z_EXTADDR_LEN )
// 225 {
// 226 req.extAddr = NULL;
// 227 }
// 228 else
// 229 {
// 230 MT_ReverseBytes( pData, Z_EXTADDR_LEN );
// 231 req.extAddr = pData;
// 232 }
// 233 pData += Z_EXTADDR_LEN;
// 234
// 235 req.removeChildren = FALSE;
// 236 req.rejoin = FALSE;
// 237 req.silent = FALSE;
// 238 ret = (byte)NLME_LeaveReq( &req );
// 239 }
// 240 break;
// 241
// 242 case SPI_CMD_NLME_RESET_REQ:
// 243 //Its a direct call to reset NWK
// 244 ret = (byte)NLME_ResetRequest();
// 245 break;
// 246
// 247 case SPI_CMD_NLME_GET_REQ:
// 248 attr = *pData++;
// 249 index = *pData;
// 250 databuf[0] = (byte)NLME_GetRequest( (ZNwkAttributes_t )attr, index, &databuf[1] );
// 251 len = SPI_0DATA_MSG_LEN + SPI_RESP_LEN_NWK_DEFAULT + NWK_DEFAULT_GET_RESPONSE_LEN;
// 252 MT_BuildAndSendZToolResponse( len, (SPI_RESPONSE_BIT | SPI_CMD_NLME_GET_REQ),
// 253 (SPI_RESP_LEN_NWK_DEFAULT + NWK_DEFAULT_GET_RESPONSE_LEN), databuf );
// 254 return; // Don't return to this function
// 255
// 256 case SPI_CMD_NLME_SET_REQ:
// 257 ret = (byte)NLME_SetRequest( (ZNwkAttributes_t)pData[0], pData[1], &pData[2] );
// 258 osal_start_timerEx( ZDAppTaskID, ZDO_NWK_UPDATE_NV, 1000 );
// 259 break;
// 260
// 261 case SPI_CMD_NLME_NWK_DISC_REQ:
// 262 MT_ReverseBytes( pData, 4 );
// 263 ret = (byte)NLME_NetworkDiscoveryRequest( osal_build_uint32( pData, 4 ), pData[4] );
// 264 break;
// 265
// 266 #if !defined( ZDO_COORDINATOR )
// 267 case SPI_CMD_NLME_ORPHAN_JOIN_REQ:
// 268 // Channel list bit mask
// 269 MT_ReverseBytes( pData, 4 );
// 270 channelList = osal_build_uint32( pData, 4 );
// 271
// 272 // Count number of channels
// 273 j = attr = 0;
// 274 for ( i = 0; i < ED_SCAN_MAXCHANNELS; i++ )
// 275 {
// 276 if ( channelList & (1 << i) )
// 277 {
// 278 j++;
// 279 attr = i;
// 280 }
// 281 }
// 282
// 283 // If only one channel specified...
// 284 if ( j == 1 )
// 285 {
// 286 _NIB.scanDuration = pData[4];
// 287 _NIB.nwkLogicalChannel = attr;
// 288 _NIB.channelList = channelList;
// 289 if ( !_NIB.CapabilityInfo )
// 290 _NIB.CapabilityInfo = ZDO_Config_Node_Descriptor.CapabilityFlags;
// 291
// 292 devState = DEV_NWK_ORPHAN;
// 293 ret = (byte)NLME_OrphanJoinRequest( channelList, pData[4] );
// 294 }
// 295 else
// 296 ret = ZNwkInvalidParam;
// 297 break;
// 298 #endif // !ZDO
// 299
// 300 #if defined (RTR_NWK)
// 301 case SPI_CMD_NLME_ROUTE_DISC_REQ:
// 302 ret = (byte)NLME_RouteDiscoveryRequest( BUILD_UINT16( pData[1], pData[0] ), pData[2] );
// 303 break;
// 304
// 305 case SPI_CMD_NLME_DIRECT_JOIN_REQ:
// 306 MT_ReverseBytes( pData, 8 );
// 307 ret = (byte)NLME_DirectJoinRequest( pData, pData[8] );
// 308 break;
// 309 #endif // RTR
// 310
// 311 #endif // MT_NWK_FUNC
// 312
// 313 default:
// 314 ret = (byte)ZUnsupportedMode;
// 315 break;
// 316 }
// 317
// 318 #if defined ( MT_NWK_FUNC )
// 319 MT_SendSPIRespMsg( ret, cmd_id, len, SPI_RESP_LEN_NWK_DEFAULT );
// 320 #endif
// 321 (void)len;
// 322 (void)ret;
// 323 }
??MT_NwkCommandProcessing_0:
MOV R7,#0x2
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock0
END
// 324
// 325 #if defined ( MT_NWK_CB_FUNC ) //NWK callback commands
// 326 /*********************************************************************
// 327 * @fn nwk_MTCallbackSubDataConfirm
// 328 *
// 329 * @brief Process the callback subscription for NLDE-DATA.confirm
// 330 *
// 331 * @param nsduHandle - APS handle
// 332 * @param Status - result of data request
// 333 *
// 334 * @return none
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -