zdobject.lst
来自「TI的基于ZIGBEE2006的协议栈」· LST 代码 · 共 1,256 行 · 第 1/5 页
LST
1,256 行
\ 000008 F9 MOV R1,A
293 ZStatus_t ret;
294
295 ret = ZUnsupportedMode;
\ 000009 7E12 MOV R6,#0x12
296
297 #if defined(ZDO_COORDINATOR)
298 if ( logicalType == NODETYPE_COORDINATOR )
\ 00000B ED MOV A,R5
\ 00000C 7050 JNZ ??ZDO_StartDevice_0
299 {
300 if ( startMode == MODE_HARD )
\ 00000E 7402 MOV A,#0x2
\ 000010 6A XRL A,R2
\ 000011 7032 JNZ ??ZDO_StartDevice_1
301 {
302 devState = DEV_COORD_STARTING;
\ 000013 7408 MOV A,#0x8
\ 000015 90.... MOV DPTR,#devState
\ 000018 F0 MOVX @DPTR,A
303 ret = NLME_NetworkFormationRequest( zgConfigPANID, zgDefaultChannelList,
304 zgDefaultStartingScanDuration, beaconOrder,
305 superframeOrder, false );
\ 000019 ; Setup parameters for call to function NLME_NetworkFormationRequest
\ 000019 75..00 MOV ?V0 + 0,#0x0
\ 00001C 78.. MOV R0,#?V0 + 0
\ 00001E 12.... LCALL ?PUSH_XSTACK_I_ONE
\ 000021 90.... MOV DPTR,#zgDefaultChannelList
\ 000024 12.... LCALL ?PUSH_XSTACK8_X_FOUR
\ 000027 EC MOV A,R4
\ 000028 FD MOV R5,A
\ 000029 E9 MOV A,R1
\ 00002A FC MOV R4,A
\ 00002B 90.... MOV DPTR,#zgDefaultStartingScanDuration
\ 00002E E0 MOVX A,@DPTR
\ 00002F F9 MOV R1,A
\ 000030 90.... MOV DPTR,#zgConfigPANID
\ 000033 12.... LCALL ?Subroutine40 & 0xFFFF
\ ??CrossCallReturnLabel_113:
\ 000036 90.... MOV DPTR,#(NLME_NetworkFormationRequest & 0xffff)
\ 000039 74.. MOV A,#((NLME_NetworkFormationRequest >> 16) & 0xff)
\ 00003B 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 00003E 7405 MOV A,#0x5
\ 000040 12.... LCALL ?DEALLOC_XSTACK8
\ 000043 8017 SJMP ??ZDO_StartDevice_2
306 }
307 else if ( startMode == MODE_RESUME )
\ ??ZDO_StartDevice_1:
\ 000045 7401 MOV A,#0x1
\ 000047 6A XRL A,R2
\ 000048 7014 JNZ ??ZDO_StartDevice_0
308 {
309 // Just start the coordinator
310 devState = DEV_COORD_STARTING;
\ 00004A 7408 MOV A,#0x8
\ 00004C 90.... MOV DPTR,#devState
\ 00004F F0 MOVX @DPTR,A
311 ret = NLME_StartRouterRequest( beaconOrder, beaconOrder, false );
\ 000050 ; Setup parameters for call to function NLME_StartRouterRequest
\ 000050 7B00 MOV R3,#0x0
\ 000052 E9 MOV A,R1
\ 000053 FA MOV R2,A
\ 000054 90.... MOV DPTR,#(NLME_StartRouterRequest & 0xffff)
\ 000057 74.. MOV A,#((NLME_StartRouterRequest >> 16) & 0xff)
\ 000059 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ ??ZDO_StartDevice_2:
\ 00005C E9 MOV A,R1
\ 00005D FE MOV R6,A
312 }
313 else
314 {
315 #if defined( LCD_SUPPORTED )
316 HalLcdWriteScreen( "StartDevice ERR", "MODE unknown" );
317 #endif
318 }
319 }
320 #endif // !ZDO_COORDINATOR
321
322 #if !defined ( ZDO_COORDINATOR ) || defined( SOFT_START )
323 if ( logicalType == NODETYPE_ROUTER || logicalType == NODETYPE_DEVICE )
324 {
325 if ( (startMode == MODE_JOIN) || (startMode == MODE_REJOIN) )
326 {
327 devState = DEV_NWK_DISC;
328
329 #if defined( MANAGED_SCAN )
330 ZDOManagedScan_Next();
331 ret = NLME_NetworkDiscoveryRequest( managedScanChannelMask, BEACON_ORDER_15_MSEC );
332 #else
333 ret = NLME_NetworkDiscoveryRequest( zgDefaultChannelList, zgDefaultStartingScanDuration );
334 #endif
335 }
336 else if ( startMode == MODE_RESUME )
337 {
338 if ( logicalType == NODETYPE_ROUTER )
339 {
340 ZMacScanCnf_t scanCnf;
341 devState = DEV_NWK_ORPHAN;
342
343 /* if router and nvram is available, fake successful orphan scan */
344 scanCnf.hdr.Status = ZSUCCESS;
345 scanCnf.ScanType = ZMAC_ORPHAN_SCAN;
346 scanCnf.UnscannedChannels = 0;
347 scanCnf.ResultListSize = 0;
348 nwk_ScanJoiningOrphan(&scanCnf);
349
350 ret = ZSuccess;
351 }
352 else
353 {
354 devState = DEV_NWK_ORPHAN;
355 ret = NLME_OrphanJoinRequest( zgDefaultChannelList,
356 zgDefaultStartingScanDuration );
357 }
358 }
359 else
360 {
361 #if defined( LCD_SUPPORTED )
362 HalLcdWriteScreen( "StartDevice ERR", "MODE unknown" );
363 #endif
364 }
365 }
366 #endif //!ZDO COORDINATOR || SOFT_START
367
368 // configure the Security Manager for type of device
369 ZDSecMgrConfig();
\ ??ZDO_StartDevice_0:
\ 00005E ; Setup parameters for call to function ZDSecMgrConfig
\ 00005E 90.... MOV DPTR,#(ZDSecMgrConfig & 0xffff)
\ 000061 74.. MOV A,#((ZDSecMgrConfig >> 16) & 0xff)
\ 000063 12.... LCALL ?BCALL ; Banked call to: DPTR()
370
371 if ( ret != ZSuccess )
\ 000066 EE MOV A,R6
\ 000067 6010 JZ ??ZDO_StartDevice_3
372 osal_start_timer( ZDO_NETWORK_INIT, NWK_RETRY_DELAY );
\ 000069 ; Setup parameters for call to function osal_start_timer
\ 000069 7CE8 MOV R4,#-0x18
\ 00006B 7D03 MOV R5,#0x3
\ 00006D 7A01 MOV R2,#0x1
\ 00006F 7B00 MOV R3,#0x0
\ 000071 90.... MOV DPTR,#(osal_start_timer & 0xffff)
\ 000074 74.. MOV A,#((osal_start_timer >> 16) & 0xff)
\ 000076 12.... LCALL ?BCALL ; Banked call to: DPTR()
373 }
\ ??ZDO_StartDevice_3:
\ 000079 7F01 MOV R7,#0x1
\ 00007B 02.... LJMP ?BANKED_LEAVE_XDATA
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine40:
\ 000000 12.... LCALL ?Subroutine57 & 0xFFFF
\ ??CrossCallReturnLabel_164:
\ 000003 22 RET
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine57:
\ 000000 E0 MOVX A,@DPTR
\ 000001 FA MOV R2,A
\ 000002 A3 INC DPTR
\ 000003 E0 MOVX A,@DPTR
\ 000004 FB MOV R3,A
\ 000005 22 RET
374
375 /*********************************************************************
376 * @fn ZDO_UpdateNwkStatus()
377 *
378 * @brief
379 *
380 * This function will send an update message to each registered
381 * application endpoint/interface about a network status change.
382 *
383 * @param none
384 *
385 * @return none
386 */
\ In segment BANKED_CODE, align 1, keep-with-next
387 void ZDO_UpdateNwkStatus( devStates_t state )
\ ZDO_UpdateNwkStatus:
388 {
\ 000000 74F4 MOV A,#-0xc
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 12
\ 000005 ; Auto size: 0
\ 000005 89.. MOV ?V0 + 0,R1
389 // Endpoint/Interface descriptor list.
390 epList_t *epDesc = epList;
\ 000007 90.... MOV DPTR,#epList
\ 00000A 12.... LCALL ?Subroutine41 & 0xFFFF
391 byte bufLen = sizeof(osal_event_hdr_t);
392 osal_event_hdr_t *msgPtr;
393
394 ZDAppNwkAddr.addr.shortAddr = NLME_GetShortAddr();
\ ??CrossCallReturnLabel_118:
\ 00000D ; Setup parameters for call to function NLME_GetShortAddr
\ 00000D 90.... MOV DPTR,#(NLME_GetShortAddr & 0xffff)
\ 000010 74.. MOV A,#((NLME_GetShortAddr >> 16) & 0xff)
\ 000012 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 000015 90.... MOV DPTR,#ZDAppNwkAddr
\ 000018 EA MOV A,R2
\ 000019 F0 MOVX @DPTR,A
\ 00001A A3 INC DPTR
\ 00001B EB MOV A,R3
\ 00001C F0 MOVX @DPTR,A
395 (void)NLME_GetExtAddr(); // Load the saveExtAddr pointer.
\ 00001D ; Setup parameters for call to function NLME_GetExtAddr
\ 00001D 90.... MOV DPTR,#(NLME_GetExtAddr & 0xffff)
\ 000020 74.. MOV A,#((NLME_GetExtAddr >> 16) & 0xff)
\ 000022 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 000025 803F SJMP ??CrossCallReturnLabel_119
396
397 while ( epDesc )
398 {
399 if ( epDesc->epDesc->endPoint != ZDO_EP )
\ ??ZDO_UpdateNwkStatus_0:
\ 000027 8E82 MOV DPL,R6
\ 000029 8F83 MOV DPH,R7
\ 00002B 12.... LCALL ?Subroutine26 & 0xFFFF
\ ??CrossCallReturnLabel_69:
\ 00002E 6027 JZ ??ZDO_UpdateNwkStatus_1
400 {
401 msgPtr = (osal_event_hdr_t *)osal_msg_allocate( bufLen );
\ 000030 ; Setup parameters for call to function osal_msg_allocate
\ 000030 7A02 MOV R2,#0x2
\ 000032 7B00 MOV R3,#0x0
\ 000034 90.... MOV DPTR,#(osal_msg_allocate & 0xffff)
\ 000037 74.. MOV A,#((osal_msg_allocate >> 16) & 0xff)
\ 000039 12.... LCALL ?BCALL ; Banked call to: DPTR()
402 if ( msgPtr )
\ 00003C EA MOV A,R2
\ 00003D 7001 JNZ ??ZDO_UpdateNwkStatus_2
\ 00003F EB MOV A,R3
\ ??ZDO_UpdateNwkStatus_2:
\ 000040 6015 JZ ??ZDO_UpdateNwkStatus_1
403 {
404 msgPtr->event = ZDO_STATE_CHANGE; // Command ID
\ 000042 74D1 MOV A,#-0x2f
\ 000044 8A82 MOV DPL,R2
\ 000046 8B83 MOV DPH,R3
\ 000048 F0 MOVX @DPTR,A
405 msgPtr->status = (byte)state;
\ 000049 A3 INC DPTR
\ 00004A E5.. MOV A,?V0 + 0
\ 00004C F0 MOVX @DPTR,A
406
407 osal_msg_send( *(epDesc->epDesc->task_id), (byte *)msgPtr );
\ 00004D ; Setup parameters for call to function osal_msg_send
\ 00004D 8E82 MOV DPL,R6
\ 00004F 8F83 MOV DPH,R7
\ 000051 12.... LCALL ?Subroutine16 & 0xFFFF
\ ??CrossCallReturnLabel_53:
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?