📄 zdobject.s51
字号:
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_6:
MOV A,#0xb
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 12)
LJMP ?Subroutine22 & 0xFFFF
CFI EndBlock cfiBlock2
RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine1:
CFI Block cfiCond3 Using cfiCommon0
CFI NoFunction
CFI Conditional ??CrossCallReturnLabel_3
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 23)
CFI Block cfiCond4 Using cfiCommon0
CFI (cfiCond4) NoFunction
CFI (cfiCond4) Conditional ??CrossCallReturnLabel_2
CFI (cfiCond4) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond4) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond4) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond4) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond4) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond4) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond4) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond4) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond4) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond4) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond4) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond4) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond4) CFA_SP SP+0
CFI (cfiCond4) CFA_XSP16 add(XSP16, 23)
CFI Block cfiPicker5 Using cfiCommon1
CFI (cfiPicker5) NoFunction
CFI (cfiPicker5) Picker
MOV DPTR,#devState
MOVX @DPTR,A
; Setup parameters for call to function NLME_NetworkDiscoveryRequest
; Setup parameters for call to function NLME_OrphanJoinRequest
MOV DPTR,#zgDefaultStartingScanDuration
MOVX A,@DPTR
MOV R1,A
MOV DPTR,#zgDefaultChannelList
MOV R0,#?V0 + 0
RET
CFI EndBlock cfiCond3
CFI EndBlock cfiCond4
CFI EndBlock cfiPicker5
// 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 BANKED_CODE:CODE:NOROOT(0)
// 387 void ZDO_UpdateNwkStatus( devStates_t state )
ZDO_UpdateNwkStatus:
CFI Block cfiBlock6 Using cfiCommon0
CFI Function ZDO_UpdateNwkStatus
// 388 {
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
// 389 // Endpoint/Interface descriptor list.
// 390 epList_t *epDesc = epList;
MOV DPTR,#epList
MOVX A,@DPTR
MOV R6,A
INC DPTR
MOVX A,@DPTR
MOV R7,A
// 391 byte bufLen = sizeof(osal_event_hdr_t);
// 392 osal_event_hdr_t *msgPtr;
// 393
// 394 ZDAppNwkAddr.addr.shortAddr = NLME_GetShortAddr();
; 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
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R3
MOVX @DPTR,A
// 395 (void)NLME_GetExtAddr(); // Load the saveExtAddr pointer.
; 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 ??ZDO_UpdateNwkStatus_0
// 396
// 397 while ( epDesc )
// 398 {
// 399 if ( epDesc->epDesc->endPoint != ZDO_EP )
??ZDO_UpdateNwkStatus_1:
MOV DPL,R6
MOV DPH,R7
LCALL ?Subroutine10 & 0xFFFF
??CrossCallReturnLabel_25:
JZ ??ZDO_UpdateNwkStatus_2
// 400 {
// 401 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()
// 402 if ( msgPtr )
MOV A,R2
JNZ ??ZDO_UpdateNwkStatus_3
MOV A,R3
??ZDO_UpdateNwkStatus_3:
JZ ??ZDO_UpdateNwkStatus_2
// 403 {
// 404 msgPtr->event = ZDO_STATE_CHANGE; // Command ID
MOV A,#-0x2f
MOV DPL,R2
MOV DPH,R3
MOVX @DPTR,A
// 405 msgPtr->status = (byte)state;
INC DPTR
MOV A,?V0 + 0
MOVX @DPTR,A
// 406
// 407 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 ?Subroutine5 & 0xFFFF
??CrossCallReturnLabel_14:
LCALL ?BCALL ; Banked call to: DPTR()
// 408 }
// 409 }
// 410 epDesc = epDesc->nextDesc;
??ZDO_UpdateNwkStatus_2:
MOV DPL,R6
MOV DPH,R7
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOVX A,@DPTR
MOV R6,A
INC DPTR
MOVX A,@DPTR
MOV R7,A
// 411 }
??ZDO_UpdateNwkStatus_0:
MOV A,R6
JNZ ??ZDO_UpdateNwkStatus_4
MOV A,R7
??ZDO_UpdateNwkStatus_4:
JNZ ??ZDO_UpdateNwkStatus_1
// 412 }
LJMP ?Subroutine22 & 0xFFFF
CFI EndBlock cfiBlock6
// 413
// 414 #if defined ( REFLECTOR )
// 415 /*********************************************************************
// 416 * @fn ZDO_RemoveEndDeviceBind
// 417 *
// 418 * @brief Remove the end device bind
// 419 *
// 420 * @param none
// 421 *
// 422 * @return none
// 423 */
// 424 static void ZDO_RemoveEndDeviceBind( void )
// 425 {
// 426 if ( ZDO_EDBind )
// 427 {
// 428 // Free the RAM
// 429 if ( ZDO_EDBind->inClusters )
// 430 osal_mem_free( ZDO_EDBind->inClusters );
// 431 if ( ZDO_EDBind->outClusters )
// 432 osal_mem_free( ZDO_EDBind->outClusters );
// 433 osal_mem_free( ZDO_EDBind );
// 434 ZDO_EDBind = NULL;
// 435 }
// 436 }
// 437 #endif // REFLECTOR
// 438
// 439 #if defined ( REFLECTOR )
// 440 /*********************************************************************
// 441 * @fn ZDO_RemoveEndDeviceBind
// 442 *
// 443 * @brief Remove the end device bind
// 444 *
// 445 * @param none
// 446 *
// 447 * @return none
// 448 */
// 449 static void ZDO_SendEDBindRsp( byte TransSeq, zAddrType_t *dstAddr, byte Status, byte secUse )
// 450 {
// 451 ZDP_EndDeviceBindRsp( TransSeq, dstAddr, Status, secUse );
// 452
// 453 #if defined( LCD_SUPPORTED )
// 454 HalLcdWriteString( "End Device Bind", HAL_LCD_LINE_1 );
// 455 if ( Status == ZDP_SUCCESS )
// 456 HalLcdWriteString( "Success Sent", HAL_LCD_LINE_2 );
// 457 else
// 458 HalLcdWriteString( "Timeout", HAL_LCD_LINE_2 );
// 459 #endif
// 460
// 461 }
// 462 #endif // REFLECTOR
// 463
// 464 #if defined ( REFLECTOR ) || defined ( ZDO_COORDINATOR )
// 465 /*********************************************************************
// 466 * @fn ZDO_CompareClusterLists
// 467 *
// 468 * @brief Compare one list to another list
// 469 *
// 470 * @param numList1 - number of items in list 1
// 471 * @param list1 - first list of cluster IDs
// 472 * @param numList2 - number of items in list 2
// 473 * @param list2 - second list of cluster IDs
// 474 * @param pMatches - buffer to put matches
// 475 *
// 476 * @return number of matches
// 477 */
// 478 static byte ZDO_CompareClusterLists( byte numList1, uint16 *list1,
// 479 byte numList2, uint16 *list2, uint16 *pMatches )
// 480 {
// 481 byte x, y;
// 482 uint16 z;
// 483 byte numMatches = 0;
// 484
// 485 // Check the first in against the seconds out
// 486 for ( x = 0; x < numList1; x++ )
// 487 {
// 488 for ( y = 0; y < numList2; y++ )
// 489 {
// 490 z = list2[y];
// 491 if ( list1[x] == z )
// 492 pMatches[numMatches++] = z;
// 493 }
// 494 }
// 495
// 496 return ( numMatches );
// 497 }
// 498 #endif // REFLECTOR || ZDO_COORDINATOR
// 499
// 500 #if defined ( REFLECTOR )
// 501 /*********************************************************************
// 502 * @fn ZDO_DoEndDeviceBind
// 503 *
// 504 * @brief Process the End Device Bind Req from ZDApp
// 505 *
// 506 * @param bindReq - Bind Request Information
// 507 * @param SecurityUse - Security enable/disable
// 508 *
// 509 * @return none
// 510 */
// 511 void ZDO_DoEndDeviceBind( ZDEndDeviceBind_t *bindReq )
// 512 {
// 513 uint8 numMatches;
// 514 uint8 Status;
// 515 BindingEntry_t *pBind;
// 516 AddrMgrEntry_t addrEntry;
// 517 zAddrType_t SrcAddr;
// 518
// 519 SrcAddr.addrMode = Addr16Bit;
// 520 SrcAddr.addr.shortAddr = bindReq->srcAddr;
// 521
// 522 // Ask for IEEE address
// 523 if ( (bindReq->srcAddr != ZDAppNwkAddr.addr.shortAddr) )
// 524 {
// 525 addrEntry.user = ADDRMGR_USER_BINDING;
// 526 addrEntry.nwkAddr = bindReq->srcAddr;
// 527 Status = AddrMgrEntryLookupNwk( &addrEntry );
// 528 if ( Status == TRUE)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -