📄 zdobject.lst
字号:
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine10:
\ 000000 EA MOV A,R2
\ 000001 F0 MOVX @DPTR,A
\ 000002 A3 INC DPTR
\ 000003 EB MOV A,R3
\ 000004 F0 MOVX @DPTR,A
\ 000005 22 RET
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine64:
\ 000000 E0 MOVX A,@DPTR
\ 000001 F8 MOV R0,A
\ 000002 12.... LCALL ?Subroutine66 & 0xFFFF
\ ??CrossCallReturnLabel_199:
\ 000005 22 RET
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine66:
\ 000000 A3 INC DPTR
\ 000001 E0 MOVX A,@DPTR
\ 000002 F583 MOV DPH,A
\ 000004 8882 MOV DPL,R0
\ 000006 22 RET
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 */
\ In segment BANKED_CODE, align 1, keep-with-next
485 static byte ZDO_CompareClusterLists( byte numList1, uint16 *list1,
\ ??ZDO_CompareClusterLists:
486 byte numList2, uint16 *list2, uint16 *pMatches )
487 {
\ 000000 74F0 MOV A,#-0x10
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 16
\ 000005 ; Auto size: 0
\ 000005 89.. MOV ?V0 + 2,R1
\ 000007 8A.. MOV ?V0 + 6,R2
\ 000009 8B.. MOV ?V0 + 7,R3
\ 00000B 7410 MOV A,#0x10
\ 00000D 12.... LCALL ?XSTACK_DISP0_8
\ 000010 12.... LCALL ?Subroutine41 & 0xFFFF
\ ??CrossCallReturnLabel_120:
\ 000013 7412 MOV A,#0x12
\ 000015 12.... LCALL ?XSTACK_DISP0_8
\ 000018 12.... LCALL ?Subroutine42 & 0xFFFF
488 byte x, y;
489 uint16 z;
490 byte numMatches = 0;
\ ??CrossCallReturnLabel_127:
\ 00001B 7D00 MOV R5,#0x0
491
492 // Check the first in against the seconds out
493 for ( x = 0; x < numList1; x++ )
\ 00001D 8D.. MOV ?V0 + 3,R5
\ 00001F 804E SJMP ??ZDO_CompareClusterLists_1
494 {
495 for ( y = 0; y < numList2; y++ )
496 {
497 z = list2[y];
\ ??ZDO_CompareClusterLists_2:
\ 000021 E5.. MOV A,?V0 + 4
\ 000023 C3 CLR C
\ 000024 33 RLC A
\ 000025 F8 MOV R0,A
\ 000026 E4 CLR A
\ 000027 33 RLC A
\ 000028 F9 MOV R1,A
\ 000029 EA MOV A,R2
\ 00002A 28 ADD A,R0
\ 00002B F582 MOV DPL,A
\ 00002D EB MOV A,R3
\ 00002E 12.... LCALL ?Subroutine56 & 0xFFFF
498 if ( list1[x] == z )
\ ??CrossCallReturnLabel_162:
\ 000031 E5.. MOV A,?V0 + 3
\ 000033 C3 CLR C
\ 000034 33 RLC A
\ 000035 F8 MOV R0,A
\ 000036 E4 CLR A
\ 000037 33 RLC A
\ 000038 F9 MOV R1,A
\ 000039 E5.. MOV A,?V0 + 6
\ 00003B 28 ADD A,R0
\ 00003C F582 MOV DPL,A
\ 00003E E5.. MOV A,?V0 + 7
\ 000040 39 ADDC A,R1
\ 000041 F583 MOV DPH,A
\ 000043 E0 MOVX A,@DPTR
\ 000044 65.. XRL A,?V0 + 0
\ 000046 7004 JNZ ??ZDO_CompareClusterLists_3
\ 000048 A3 INC DPTR
\ 000049 E0 MOVX A,@DPTR
\ 00004A 65.. XRL A,?V0 + 1
\ ??ZDO_CompareClusterLists_3:
\ 00004C 7017 JNZ ??ZDO_CompareClusterLists_4
499 pMatches[numMatches++] = z;
\ 00004E ED MOV A,R5
\ 00004F C3 CLR C
\ 000050 33 RLC A
\ 000051 F8 MOV R0,A
\ 000052 E4 CLR A
\ 000053 33 RLC A
\ 000054 F9 MOV R1,A
\ 000055 EE MOV A,R6
\ 000056 28 ADD A,R0
\ 000057 F582 MOV DPL,A
\ 000059 EF MOV A,R7
\ 00005A 39 ADDC A,R1
\ 00005B F583 MOV DPH,A
\ 00005D E5.. MOV A,?V0 + 0
\ 00005F F0 MOVX @DPTR,A
\ 000060 A3 INC DPTR
\ 000061 E5.. MOV A,?V0 + 1
\ 000063 F0 MOVX @DPTR,A
\ 000064 0D INC R5
500 }
\ ??ZDO_CompareClusterLists_4:
\ 000065 05.. INC ?V0 + 4
\ ??ZDO_CompareClusterLists_5:
\ 000067 E5.. MOV A,?V0 + 4
\ 000069 C3 CLR C
\ 00006A 9C SUBB A,R4
\ 00006B 40B4 JC ??ZDO_CompareClusterLists_2
\ 00006D 05.. INC ?V0 + 3
\ ??ZDO_CompareClusterLists_1:
\ 00006F E5.. MOV A,?V0 + 3
\ 000071 C3 CLR C
\ 000072 95.. SUBB A,?V0 + 2
\ 000074 5005 JNC ??ZDO_CompareClusterLists_6
\ 000076 75..00 MOV ?V0 + 4,#0x0
\ 000079 80EC SJMP ??ZDO_CompareClusterLists_5
501 }
502
503 return ( numMatches );
\ ??ZDO_CompareClusterLists_6:
\ 00007B ED MOV A,R5
\ 00007C F9 MOV R1,A
\ 00007D 80.. SJMP ??Subroutine69_0
504 }
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine69:
\ 000000 12.... LCALL ?DEALLOC_XSTACK8
\ ??Subroutine69_0:
\ 000003 7F08 MOV R7,#0x8
\ 000005 02.... LJMP ?BANKED_LEAVE_XDATA
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine56:
\ 000000 39 ADDC A,R1
\ ??Subroutine56_0:
\ 000001 F583 MOV DPH,A
\ ??Subroutine56_1:
\ 000003 E0 MOVX A,@DPTR
\ 000004 F5.. MOV ?V0 + 0,A
\ 000006 A3 INC DPTR
\ 000007 E0 MOVX A,@DPTR
\ 000008 F5.. MOV ?V0 + 1,A
\ 00000A 22 RET
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 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -