📄 zdobject.s51
字号:
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 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 cfiBlock6 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
MOVX A,@DPTR
MOV R6,A
INC DPTR
MOVX A,@DPTR
MOV R7,A
// 392 byte bufLen = sizeof(osal_event_hdr_t);
// 393 osal_event_hdr_t *msgPtr;
// 394
// 395 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
LCALL ?Subroutine3 & 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_6:
; 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
// 403
// 404 while ( epDesc )
// 405 {
// 406 if ( epDesc->epDesc->endPoint != ZDO_EP )
??ZDO_UpdateNwkStatus_1:
MOV DPL,R6
MOV DPH,R7
LCALL ?Subroutine11 & 0xFFFF
??CrossCallReturnLabel_31:
JZ ??ZDO_UpdateNwkStatus_2
// 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_3
MOV A,R3
??ZDO_UpdateNwkStatus_3:
JZ ??ZDO_UpdateNwkStatus_2
// 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 ?Subroutine6 & 0xFFFF
??CrossCallReturnLabel_20:
LCALL ?BCALL ; Banked call to: DPTR()
// 415 }
// 416 }
// 417 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
// 418 }
??ZDO_UpdateNwkStatus_0:
MOV A,R6
JNZ ??ZDO_UpdateNwkStatus_4
MOV A,R7
??ZDO_UpdateNwkStatus_4:
JNZ ??ZDO_UpdateNwkStatus_1
// 419 }
LJMP ?Subroutine25 & 0xFFFF
CFI EndBlock cfiBlock6
// 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 */
// 485 static byte ZDO_CompareClusterLists( byte numList1, uint16 *list1,
// 486 byte numList2, uint16 *list2, uint16 *pMatches )
// 487 {
// 488 byte x, y;
// 489 uint16 z;
// 490 byte numMatches = 0;
// 491
// 492 // Check the first in against the seconds out
// 493 for ( x = 0; x < numList1; x++ )
// 494 {
// 495 for ( y = 0; y < numList2; y++ )
// 496 {
// 497 z = list2[y];
// 498 if ( list1[x] == z )
// 499 pMatches[numMatches++] = z;
// 500 }
// 501 }
// 502
// 503 return ( numMatches );
// 504 }
// 505 #endif // REFLECTOR || ZDO_COORDINATOR
// 506
// 507 #if defined ( REFLECTOR )
// 508 /*********************************************************************
// 509 * @fn ZDO_DoEndDeviceBind
// 510 *
// 511 * @brief Process the End Device Bind Req from ZDApp
// 512 *
// 513 * @param bindReq - Bind Request Information
// 514 * @param SecurityUse - Security enable/disable
// 515 *
// 516 * @return none
// 517 */
// 518 void ZDO_DoEndDeviceBind( ZDEndDeviceBind_t *bindReq )
// 519 {
// 520 uint8 numMatches;
// 521 uint8 Status;
// 522 BindingEntry_t *pBind;
// 523 AddrMgrEntry_t addrEntry;
// 524 zAddrType_t SrcAddr;
// 525
// 526 SrcAddr.addrMode = Addr16Bit;
// 527 SrcAddr.addr.shortAddr = bindReq->srcAddr;
// 528
// 529 // Ask for IEEE address
// 530 if ( (bindReq->srcAddr != ZDAppNwkAddr.addr.shortAddr) )
// 531 {
// 532 addrEntry.user = ADDRMGR_USER_BINDING;
// 533 addrEntry.nwkAddr = bindReq->srcAddr;
// 534 Status = AddrMgrEntryLookupNwk( &addrEntry );
// 535 if ( Status == TRUE)
// 536 {
// 537 // Add a reference to entry
// 538 AddrMgrEntryAddRef( &addrEntry );
// 539 }
// 540 else
// 541 {
// 542 // If we have the extended address
// 543 if ( NLME_GetProtocolVersion() != ZB_PROT_V1_0 )
// 544 {
// 545 osal_cpyExtAddr( addrEntry.extAddr, bindReq->ieeeAddr );
// 546 }
// 547
// 548 // Not in address manager?
// 549 AddrMgrEntryUpdate( &addrEntry ); // Add it
// 550 }
// 551
// 552 if ( AddrMgrExtAddrValid( addrEntry.extAddr ) == FALSE )
// 553 {
// 554 ZDP_IEEEAddrReq( bindReq->srcAddr, ZDP_ADDR_REQTYPE_SINGLE, 0, false );
// 555 }
// 556 }
// 557
// 558 if ( ZDO_EDBind ) // End Device Bind in progress
// 559 {
// 560 Status = ZDP_NO_MATCH;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -