📄 mt_zdo.lst
字号:
143 break;
144 #endif
145
146 #if defined ( ZDO_IEEEADDR_REQUEST )
147 case SPI_CMD_ZDO_IEEE_ADDR_REQ:
148 shortAddr = BUILD_UINT16( pData[1], pData[0] );
149 pData += sizeof( shortAddr );
150 attr = *pData++; // RequestType
151 attr1 = *pData++; // StartIndex
152 x = *pData; // SecuritySuite
153 ret = (byte)ZDP_IEEEAddrReq( shortAddr, attr, attr1, x );
154 break;
155 #endif
156
157 #if defined ( ZDO_NODEDESC_REQUEST )
158 case SPI_CMD_ZDO_NODE_DESC_REQ:
159 // destination address
160 devAddr.addrMode = Addr16Bit;
161 devAddr.addr.shortAddr = BUILD_UINT16( pData[1], pData[0] );
162 pData += 2;
163
164 // Network address of interest
165 shortAddr = BUILD_UINT16( pData[1], pData[0] );
166 pData += 2;
167
168 attr = *pData;
169 ret = (byte)ZDP_NodeDescReq( &devAddr, shortAddr, attr );
170 break;
171 #endif
172
173 #if defined ( ZDO_POWERDESC_REQUEST )
174 case SPI_CMD_ZDO_POWER_DESC_REQ:
175 // destination address
176 devAddr.addrMode = Addr16Bit;
177 devAddr.addr.shortAddr = BUILD_UINT16( pData[1], pData[0] );
178 pData += 2;
179
180 // Network address of interest
181 shortAddr = BUILD_UINT16( pData[1], pData[0] );
182 pData += 2;
183
184 attr = *pData;
185 ret = (byte)ZDP_PowerDescReq( &devAddr, shortAddr, attr );
186 break;
187 #endif
188
189 #if defined ( ZDO_SIMPLEDESC_REQUEST )
190 case SPI_CMD_ZDO_SIMPLE_DESC_REQ:
191 // destination address
192 devAddr.addrMode = Addr16Bit;
193 devAddr.addr.shortAddr = BUILD_UINT16( pData[1], pData[0] );
194 pData += 2;
195
196 // Network address of interest
197 shortAddr = BUILD_UINT16( pData[1], pData[0] );
198 pData += 2;
199
200 attr = *pData++; // endpoint/interface
201 attr1 = *pData; // SecuritySuite
202 ret = (byte)ZDP_SimpleDescReq( &devAddr, shortAddr, attr, attr1 );
203 break;
204 #endif
205
206 #if defined ( ZDO_ACTIVEEP_REQUEST )
207 case SPI_CMD_ZDO_ACTIVE_EPINT_REQ:
208 // destination address
209 devAddr.addrMode = Addr16Bit;
210 devAddr.addr.shortAddr = BUILD_UINT16( pData[1], pData[0] );
211 pData += 2;
212
213 // Network address of interest
214 shortAddr = BUILD_UINT16( pData[1], pData[0] );
215 pData += 2;
216
217 attr = *pData; // SecuritySuite
218 ret = (byte)ZDP_ActiveEPReq( &devAddr, shortAddr, attr );
219 break;
220 #endif
221
222 #if defined ( ZDO_MATCH_REQUEST )
223 case SPI_CMD_ZDO_MATCH_DESC_REQ:
224 {
225 uint16 inC[16], outC[16];
226
227 // destination address
228 devAddr.addrMode = Addr16Bit;
229 devAddr.addr.shortAddr = BUILD_UINT16( pData[1], pData[0] );
230 pData += 2;
231
232 // Network address of interest
233 shortAddr = BUILD_UINT16( pData[1], pData[0] );
234 pData += 2;
235
236 uAttr = BUILD_UINT16( pData[1], pData[0] ); // Profile ID
237 pData += 2;
238
239 attr = *pData++; // NumInClusters
240 for (i=0; i<16; ++i) {
241 inC[i] = BUILD_UINT16(pData[1], pData[0]);
242 pData += 2;
243 }
244
245 attr1 = *pData++; // NumOutClusters
246 for (i=0; i<16; ++i) {
247 outC[i] = BUILD_UINT16(pData[1], pData[0]);
248 pData += 2;
249 }
250
251 i = *pData; // SecuritySuite
252
253 ret = (byte)ZDP_MatchDescReq( &devAddr, shortAddr, uAttr,
254 attr, inC, attr1, outC, i );
255 }
256 break;
257 #endif
258
259 #if defined ( ZDO_COMPLEXDESC_REQUEST )
260 case SPI_CMD_ZDO_COMPLEX_DESC_REQ:
261 // destination address
262 devAddr.addrMode = Addr16Bit;
263 devAddr.addr.shortAddr = BUILD_UINT16( pData[1], pData[0] );
264 pData += 2;
265
266 // Network address of interest
267 shortAddr = BUILD_UINT16( pData[1], pData[0] );
268 pData += 2;
269
270 attr = *pData; // SecuritySuite
271 ret = (byte)ZDP_ComplexDescReq( &devAddr, shortAddr, attr );
272 break;
273 #endif
274
275 #if defined ( ZDO_USERDESC_REQUEST )
276 case SPI_CMD_ZDO_USER_DESC_REQ:
277 // destination address
278 devAddr.addrMode = Addr16Bit;
279 devAddr.addr.shortAddr = BUILD_UINT16( pData[1], pData[0] );
280 pData += 2;
281
282 // Network address of interest
283 shortAddr = BUILD_UINT16( pData[1], pData[0] );
284 pData += 2;
285
286 attr = *pData; // SecuritySuite
287 ret = (byte)ZDP_UserDescReq( &devAddr, shortAddr, attr );
288 break;
289 #endif
290
291 #if defined ( ZDO_ENDDEVICEBIND_REQUEST )
292 case SPI_CMD_ZDO_END_DEV_BIND_REQ:
293 //TODO: When ZTool supports 16 bits the code below will need to take it into account
294 {
295 uint16 inC[16], outC[16];
296
297 // destination address
298 devAddr.addrMode = Addr16Bit;
299 devAddr.addr.shortAddr = BUILD_UINT16( pData[1], pData[0] );
300 pData += 2;
301
302 // Network address of interest
303 shortAddr = BUILD_UINT16( pData[1], pData[0] );
304 pData += 2;
305
306 x = *pData++; // EPInt
307
308 uAttr = BUILD_UINT16( pData[1], pData[0] ); // Profile ID
309 pData += 2;
310
311 attr = *pData++; // NumInClusters
312 for (i=0; i<16; ++i) {
313 inC[i] = BUILD_UINT16(pData[1], pData[0]);
314 pData += 2;
315 }
316
317 attr1 = *pData++; // NumOutClusters
318 for (i=0; i<16; ++i) {
319 outC[i] = BUILD_UINT16(pData[1], pData[0]);
320 pData += 2;
321 }
322
323 i = *pData; // SecuritySuite
324
325 ret = (byte)ZDP_EndDeviceBindReq( &devAddr, shortAddr, x, uAttr,
326 attr, inC, attr1, outC, i );
327 }
328 break;
329 #endif
330
331 #if defined ( ZDO_BIND_UNBIND_REQUEST )
332 case SPI_CMD_ZDO_BIND_REQ:
333 // destination address
334 devAddr.addrMode = Addr16Bit;
335 devAddr.addr.shortAddr = BUILD_UINT16( pData[1], pData[0] );
336 pData += 2;
337
338 MT_ReverseBytes( pData, Z_EXTADDR_LEN );
339 ptr = pData; // SrcAddress
340 pData += Z_EXTADDR_LEN;
341
342 attr = *pData++; // SrcEPInt
343
344 cID = BUILD_UINT16( pData[1], pData[0]); // ClusterID
345 pData += 2;
346
347 dstAddr.addrMode = *pData++;
348 if ( NLME_GetProtocolVersion() == ZB_PROT_V1_0 )
349 dstAddr.addrMode = Addr64Bit;
350
351 MT_ReverseBytes( pData, Z_EXTADDR_LEN );
352 if ( dstAddr.addrMode == Addr64Bit )
353 {
354 ptr1 = pData; // DstAddress
355 osal_cpyExtAddr( dstAddr.addr.extAddr, ptr1 );
356 }
357 else
358 {
359 dstAddr.addr.shortAddr = BUILD_UINT16( pData[0], pData[1] );
360 }
361
362 // The short address occupies lsb two bytes
363 pData += Z_EXTADDR_LEN;
364
365
366 attr1 = *pData++; // DstEPInt
367
368 x = *pData; // SecuritySuite
369
370 #if defined ( REFLECTOR )
371 if ( devAddr.addr.shortAddr == _NIB.nwkDevAddress )
372 {
373 ZDApp_BindReqCB( 0, &devAddr, ptr, attr, cID, &dstAddr, attr1, x );
374 ret = ZSuccess;
375 }
376 else
377 #endif
378 ret = (byte)ZDP_BindReq( &devAddr, ptr, attr, cID, &dstAddr, attr1, x );
379 break;
380 #endif
381
382 #if defined ( ZDO_BIND_UNBIND_REQUEST )
383 case SPI_CMD_ZDO_UNBIND_REQ:
384 // destination address
385 devAddr.addrMode = Addr16Bit;
386 devAddr.addr.shortAddr = BUILD_UINT16( pData[1], pData[0] );
387 pData += 2;
388
389 MT_ReverseBytes( pData, Z_EXTADDR_LEN );
390 ptr = pData; // SrcAddress
391 pData += Z_EXTADDR_LEN;
392
393 attr = *pData++; // SrcEPInt
394
395 cID = BUILD_UINT16( pData[1], pData[0]); // ClusterID
396 pData += 2;
397
398 dstAddr.addrMode = *pData++;
399 if ( NLME_GetProtocolVersion() == ZB_PROT_V1_0 )
400 dstAddr.addrMode = Addr64Bit;
401 MT_ReverseBytes( pData, Z_EXTADDR_LEN );
402 if ( dstAddr.addrMode == Addr64Bit )
403 {
404 ptr1 = pData; // DstAddress
405 osal_cpyExtAddr( dstAddr.addr.extAddr, ptr1 );
406 }
407 else
408 {
409 dstAddr.addr.shortAddr = BUILD_UINT16( pData[0], pData[1] );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -