📄 zdobject.s51
字号:
// 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:
; Setup parameters for call to function ZDSecMgrConfig
MOV DPTR,#(ZDSecMgrConfig & 0xffff)
MOV A,#((ZDSecMgrConfig >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 370
// 371 if ( ret != ZSuccess )
MOV A,R6
JZ ??ZDO_StartDevice_3
// 372 osal_start_timer( ZDO_NETWORK_INIT, NWK_RETRY_DELAY );
; Setup parameters for call to function osal_start_timer
MOV R4,#-0x18
MOV R5,#0x3
MOV R2,#0x1
MOV R3,#0x0
MOV DPTR,#(osal_start_timer & 0xffff)
MOV A,#((osal_start_timer >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 373 }
??ZDO_StartDevice_3:
MOV R7,#0x1
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock2
// 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 */
RSEG XDATA_Z:XDATA:NOROOT(0)
REQUIRE __INIT_XDATA_Z
// 387 uint16 a;
`a`:
DS 2
RSEG BANKED_CODE:CODE:NOROOT(0)
// 388 void ZDO_UpdateNwkStatus( devStates_t state )
ZDO_UpdateNwkStatus:
CFI Block cfiBlock3 Using cfiCommon0
CFI Function ZDO_UpdateNwkStatus
// 389 {
FUNCALL ZDO_UpdateNwkStatus, NLME_GetShortAddr
LOCFRAME XSTACK, 12, STACK
ARGFRAME XSTACK, 12, STACK
FUNCALL ZDO_UpdateNwkStatus, NLME_GetExtAddr
LOCFRAME XSTACK, 12, STACK
ARGFRAME XSTACK, 12, STACK
FUNCALL ZDO_UpdateNwkStatus, osal_msg_allocate
LOCFRAME XSTACK, 12, STACK
ARGFRAME XSTACK, 12, STACK
FUNCALL ZDO_UpdateNwkStatus, osal_msg_send
LOCFRAME XSTACK, 12, STACK
ARGFRAME XSTACK, 12, STACK
MOV A,#-0xc
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 V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 12)
; Saved register size: 12
; Auto size: 0
MOV ?V0 + 0,R1
// 390 // Endpoint/Interface descriptor list.
// 391 epList_t *epDesc = epList;
MOV DPTR,#epList
LCALL ?Subroutine42 & 0xFFFF
// 392 byte bufLen = sizeof(osal_event_hdr_t);
// 393 osal_event_hdr_t *msgPtr;
// 394
// 395 ZDAppNwkAddr.addr.shortAddr = NLME_GetShortAddr();
??CrossCallReturnLabel_125:
; Setup parameters for call to function NLME_GetShortAddr
MOV DPTR,#(NLME_GetShortAddr & 0xffff)
MOV A,#((NLME_GetShortAddr >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV DPTR,#ZDAppNwkAddr
LCALL ?Subroutine10 & 0xFFFF
// 396 /*
// 397 a=0x0003;
// 398 ZDAppNwkAddr.addr.shortAddr = a;
// 399 NLME_SetRequest(nwkShortAddress,2,&a);
// 400 MAC_MlmeSetReq(ZMacShortAddress, &a);
// 401 */
// 402 (void)NLME_GetExtAddr(); // Load the saveExtAddr pointer.
??CrossCallReturnLabel_25:
; Setup parameters for call to function NLME_GetExtAddr
MOV DPTR,#(NLME_GetExtAddr & 0xffff)
MOV A,#((NLME_GetExtAddr >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
SJMP ??CrossCallReturnLabel_126
// 403
// 404 while ( epDesc )
// 405 {
// 406 if ( epDesc->epDesc->endPoint != ZDO_EP )
??ZDO_UpdateNwkStatus_0:
MOV DPL,R6
MOV DPH,R7
LCALL ?Subroutine27 & 0xFFFF
??CrossCallReturnLabel_75:
JZ ??ZDO_UpdateNwkStatus_1
// 407 {
// 408 msgPtr = (osal_event_hdr_t *)osal_msg_allocate( bufLen );
; Setup parameters for call to function osal_msg_allocate
MOV R2,#0x2
MOV R3,#0x0
MOV DPTR,#(osal_msg_allocate & 0xffff)
MOV A,#((osal_msg_allocate >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 409 if ( msgPtr )
MOV A,R2
JNZ ??ZDO_UpdateNwkStatus_2
MOV A,R3
??ZDO_UpdateNwkStatus_2:
JZ ??ZDO_UpdateNwkStatus_1
// 410 {
// 411 msgPtr->event = ZDO_STATE_CHANGE; // Command ID
MOV A,#-0x2f
MOV DPL,R2
MOV DPH,R3
MOVX @DPTR,A
// 412 msgPtr->status = (byte)state;
INC DPTR
MOV A,?V0 + 0
MOVX @DPTR,A
// 413
// 414 osal_msg_send( *(epDesc->epDesc->task_id), (byte *)msgPtr );
; Setup parameters for call to function osal_msg_send
MOV DPL,R6
MOV DPH,R7
LCALL ?Subroutine17 & 0xFFFF
??CrossCallReturnLabel_59:
LCALL ?BCALL ; Banked call to: DPTR()
// 415 }
// 416 }
// 417 epDesc = epDesc->nextDesc;
??ZDO_UpdateNwkStatus_1:
MOV DPL,R6
MOV DPH,R7
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
LCALL ?Subroutine42 & 0xFFFF
// 418 }
??CrossCallReturnLabel_126:
MOV A,R6
JNZ ??ZDO_UpdateNwkStatus_3
MOV A,R7
??ZDO_UpdateNwkStatus_3:
JNZ ??ZDO_UpdateNwkStatus_0
// 419 }
LJMP ?Subroutine68 & 0xFFFF
CFI EndBlock cfiBlock3
// 420
// 421 #if defined ( REFLECTOR )
// 422 /*********************************************************************
// 423 * @fn ZDO_RemoveEndDeviceBind
// 424 *
// 425 * @brief Remove the end device bind
// 426 *
// 427 * @param none
// 428 *
// 429 * @return none
// 430 */
// 431 static void ZDO_RemoveEndDeviceBind( void )
// 432 {
// 433 if ( ZDO_EDBind )
// 434 {
// 435 // Free the RAM
// 436 if ( ZDO_EDBind->inClusters )
// 437 osal_mem_free( ZDO_EDBind->inClusters );
// 438 if ( ZDO_EDBind->outClusters )
// 439 osal_mem_free( ZDO_EDBind->outClusters );
// 440 osal_mem_free( ZDO_EDBind );
// 441 ZDO_EDBind = NULL;
// 442 }
// 443 }
// 444 #endif // REFLECTOR
// 445
// 446 #if defined ( REFLECTOR )
// 447 /*********************************************************************
// 448 * @fn ZDO_RemoveEndDeviceBind
// 449 *
// 450 * @brief Remove the end device bind
// 451 *
// 452 * @param none
// 453 *
// 454 * @return none
// 455 */
// 456 static void ZDO_SendEDBindRsp( byte TransSeq, zAddrType_t *dstAddr, byte Status, byte secUse )
// 457 {
// 458 ZDP_EndDeviceBindRsp( TransSeq, dstAddr, Status, secUse );
// 459
// 460 #if defined( LCD_SUPPORTED )
// 461 HalLcdWriteString( "End Device Bind", HAL_LCD_LINE_1 );
// 462 if ( Status == ZDP_SUCCESS )
// 463 HalLcdWriteString( "Success Sent", HAL_LCD_LINE_2 );
// 464 else
// 465 HalLcdWriteString( "Timeout", HAL_LCD_LINE_2 );
// 466 #endif
// 467
// 468 }
// 469 #endif // REFLECTOR
// 470
// 471 #if defined ( REFLECTOR ) || defined ( ZDO_COORDINATOR )
// 472 /*********************************************************************
// 473 * @fn ZDO_CompareClusterLists
// 474 *
// 475 * @brief Compare one list to another list
// 476 *
// 477 * @param numList1 - number of items in list 1
// 478 * @param list1 - first list of cluster IDs
// 479 * @param numList2 - number of items in list 2
// 480 * @param list2 - second list of cluster IDs
// 481 * @param pMatches - buffer to put matches
// 482 *
// 483 * @return number of matches
// 484 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 485 static byte ZDO_CompareClusterLists( byte numList1, uint16 *list1,
??ZDO_CompareClusterLists:
CFI Block cfiBlock4 Using cfiCommon0
CFI Function ??ZDO_CompareClusterLists
// 486 byte numList2, uint16 *list2, uint16 *pMatches )
// 487 {
MOV A,#-0x10
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 V7 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-16)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 16)
; Saved register size: 16
; Auto size: 0
MOV ?V0 + 2,R1
MOV ?V0 + 6,R2
MOV ?V0 + 7,R3
MOV A,#0x10
LCALL ?XSTACK_DISP0_8
LCALL ?Subroutine41 & 0xFFFF
??CrossCallReturnLabel_120:
MOV A,#0x12
LCALL ?XSTACK_DISP0_8
LCALL ?Subroutine42 & 0xFFFF
// 488 byte x, y;
// 489 uint16 z;
// 490 byte numMatches = 0;
??CrossCallReturnLabel_127:
MOV R5,#0x0
// 491
// 492 // Check the first in against the seconds out
// 493 for ( x = 0; x < numList1; x++ )
MOV ?V0 + 3,R5
SJMP ??ZDO_CompareClusterLists_1
// 494 {
// 495 for ( y = 0; y < numList2; y++ )
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -