⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zdobject.s51

📁 用IAR开发的ZIGBEE网络路由例子
💻 S51
📖 第 1 页 / 共 5 页
字号:
        CFI EndCommon cfiCommon1
        
        EXTERN NLME_DeviceJoiningInit
        FUNCTION NLME_DeviceJoiningInit,0202H
        ARGFRAME ISTACK, 2, STACK
        EXTERN ZDSecMgrInit
        FUNCTION ZDSecMgrInit,0202H
        ARGFRAME ISTACK, 2, STACK
        EXTERN NLME_NetworkDiscoveryRequest
        FUNCTION NLME_NetworkDiscoveryRequest,0202H
        ARGFRAME XSTACK, 23, STACK
        EXTERN nwk_ScanJoiningOrphan
        FUNCTION nwk_ScanJoiningOrphan,0202H
        ARGFRAME XSTACK, 23, STACK
        EXTERN NLME_OrphanJoinRequest
        FUNCTION NLME_OrphanJoinRequest,0202H
        ARGFRAME XSTACK, 23, STACK
        EXTERN ZDSecMgrConfig
        FUNCTION ZDSecMgrConfig,0202H
        ARGFRAME XSTACK, 23, STACK
        EXTERN osal_start_timer
        FUNCTION osal_start_timer,0202H
        ARGFRAME XSTACK, 23, STACK
        EXTERN NLME_GetShortAddr
        FUNCTION NLME_GetShortAddr,0202H
        ARGFRAME XSTACK, 12, STACK
        EXTERN NLME_GetExtAddr
        FUNCTION NLME_GetExtAddr,0202H
        ARGFRAME XSTACK, 12, STACK
        EXTERN osal_msg_allocate
        FUNCTION osal_msg_allocate,0202H
        ARGFRAME XSTACK, 30, STACK
        EXTERN osal_msg_send
        FUNCTION osal_msg_send,0202H
        ARGFRAME XSTACK, 30, STACK
        EXTERN osal_mem_alloc
        FUNCTION osal_mem_alloc,0202H
        ARGFRAME XSTACK, 23, STACK
        EXTERN NLME_GetProtocolVersion
        FUNCTION NLME_GetProtocolVersion,0202H
        ARGFRAME XSTACK, 14, STACK
        EXTERN ZDP_NodeDescMsg
        FUNCTION ZDP_NodeDescMsg,0202H
        ARGFRAME XSTACK, 15, STACK
        EXTERN ZDP_GenericRsp
        FUNCTION ZDP_GenericRsp,0202H
        ARGFRAME XSTACK, 20, STACK
        EXTERN ZDP_PowerDescMsg
        FUNCTION ZDP_PowerDescMsg,0202H
        ARGFRAME XSTACK, 15, STACK
        EXTERN afFindSimpleDesc
        FUNCTION afFindSimpleDesc,0202H
        ARGFRAME XSTACK, 16, STACK
        EXTERN ZDP_SimpleDescMsg
        FUNCTION ZDP_SimpleDescMsg,0202H
        ARGFRAME XSTACK, 20, STACK
        EXTERN osal_mem_free
        FUNCTION osal_mem_free,0202H
        ARGFRAME XSTACK, 30, STACK
        EXTERN afNumEndPoints
        FUNCTION afNumEndPoints,0202H
        ARGFRAME XSTACK, 16, STACK
        EXTERN afEndPoints
        FUNCTION afEndPoints,0202H
        ARGFRAME XSTACK, 16, STACK
        EXTERN ZDP_EPRsp
        FUNCTION ZDP_EPRsp,0202H
        ARGFRAME XSTACK, 37, STACK
        EXTERN NLME_IsAddressBroadcast
        FUNCTION NLME_IsAddressBroadcast,0202H
        ARGFRAME XSTACK, 30, STACK
        EXTERN osal_memcpy
        FUNCTION osal_memcpy,0202H
        ARGFRAME XSTACK, 33, STACK
        EXTERN ZDApp_NwkAddrRspCB
        FUNCTION ZDApp_NwkAddrRspCB,0202H
        ARGFRAME XSTACK, 29, STACK
        EXTERN ZDApp_MatchDescRspCB
        FUNCTION ZDApp_MatchDescRspCB,0202H
        ARGFRAME XSTACK, 14, STACK
        EXTERN ZDApp_EndDeviceBindRsp
        FUNCTION ZDApp_EndDeviceBindRsp,0202H
        ARGFRAME ISTACK, 2, STACK
        EXTERN ZDAppNwkAddr
        EXTERN ZDO_Config_Node_Descriptor
        EXTERN ZDO_Config_Power_Descriptor
        EXTERN devState
        EXTERN epList
        EXTERN zgDefaultChannelList
        EXTERN zgDefaultStartingScanDuration

// E:\解决\路由\Components\stack\zdo\ZDObject.c
//    1 /*********************************************************************
//    2     Filename:       ZDObject.c
//    3     Revised:        $Date: 2007-05-14 17:34:18 -0700 (Mon, 14 May 2007) $
//    4     Revision:       $Revision: 14296 $
//    5 
//    6     Description:
//    7 
//    8       This Zigbee Device Object.
//    9 
//   10     Notes:
//   11 
//   12     Copyright (c) 2006 by Texas Instruments, Inc.
//   13     All Rights Reserved.  Permission to use, reproduce, copy, prepare
//   14     derivative works, modify, distribute, perform, display or sell this
//   15     software and/or its documentation for any purpose is prohibited
//   16     without the express written consent of Texas Instruments, Inc.
//   17 *********************************************************************/
//   18 
//   19 /*********************************************************************
//   20  * INCLUDES
//   21  */
//   22 #include "ZComdef.h"
//   23 #include "OSAL.h"
//   24 #include "OSAL_Nv.h"
//   25 #include "rtg.h"
//   26 #include "NLMEDE.h"
//   27 #include "nwk_globals.h"
//   28 #include "APS.h"
//   29 #include "APSMEDE.h"
//   30 #include "AssocList.h"
//   31 #include "BindingTable.h"
//   32 #include "AddrMgr.h"
//   33 #include "AF.h"
//   34 #include "ZDObject.h"
//   35 #include "ZDProfile.h"
//   36 #include "ZDConfig.h"
//   37 #include "ZDCache.h"
//   38 #include "ZDSecMgr.h"
//   39 #include "ZDApp.h"
//   40 #include "nwk_util.h"   // NLME_IsAddressBroadcast()
//   41 #include "ZGlobals.h"
//   42 
//   43 #if defined( LCD_SUPPORTED )
//   44   #include "OnBoard.h"
//   45 #endif
//   46 
//   47 /* HAL */
//   48 #include "hal_lcd.h"
//   49 
//   50 /*********************************************************************
//   51  * MACROS
//   52  */
//   53 
//   54 /*********************************************************************
//   55  * CONSTANTS
//   56  */
//   57 // NLME Stub Implementations
//   58 #define ZDO_ProcessMgmtPermitJoinTimeout NLME_PermitJoiningTimeout
//   59 
//   60 // Status fields used by ZDO_ProcessMgmtRtgReq
//   61 #define ZDO_MGMT_RTG_ENTRY_ACTIVE             0x00
//   62 #define ZDO_MGMT_RTG_ENTRY_DISCOVERY_UNDERWAY 0x01
//   63 #define ZDO_MGMT_RTG_ENTRY_DISCOVERY_FAILED   0x02
//   64 #define ZDO_MGMT_RTG_ENTRY_INACTIVE           0x03
//   65 
//   66 /*********************************************************************
//   67  * TYPEDEFS
//   68  */
//   69 #if defined ( REFLECTOR )
//   70 typedef struct
//   71 {
//   72   byte SrcTransSeq;
//   73   zAddrType_t SrcAddr;
//   74   uint16 LocalCoordinator;
//   75   byte epIntf;
//   76   uint16 ProfileID;
//   77   byte numInClusters;
//   78   uint16 *inClusters;
//   79   byte numOutClusters;
//   80   uint16 *outClusters;
//   81   byte SecurityUse;
//   82   byte status;
//   83 } ZDO_EDBind_t;
//   84 #endif // defined ( REFLECTOR )
//   85 
//   86 #if defined ( ZDO_COORDINATOR )
//   87 enum
//   88 {
//   89   ZDMATCH_INIT,           // Initialized
//   90   ZDMATCH_WAIT_REQ,       // Received first request, waiting for second
//   91   ZDMATCH_SENDING_BINDS   // Received both requests, sending unbind/binds
//   92 };
//   93 
//   94 enum
//   95 {
//   96   ZDMATCH_REASON_START,
//   97   ZDMATCH_REASON_TIMEOUT,
//   98   ZDMATCH_REASON_UNBIND_RSP,
//   99   ZDMATCH_REASON_BIND_RSP
//  100 };
//  101 
//  102 enum
//  103 {
//  104   ZDMATCH_SENDING_NOT,
//  105   ZDMATCH_SENDING_UNBIND,
//  106   ZDMATCH_SENDING_BIND
//  107 };
//  108 
//  109 typedef struct
//  110 {
//  111   ZDEndDeviceBind_t ed1;
//  112   ZDEndDeviceBind_t ed2;
//  113   uint8  state;            // One of the above states
//  114   uint8  sending;         // 0 - not sent, 1 - unbind, 2 bind - expecting response
//  115   uint8  transSeq;
//  116   uint8  ed1numMatched;
//  117   uint16 *ed1Matched;
//  118   uint8  ed2numMatched;
//  119   uint16 *ed2Matched;
//  120 } ZDMatchEndDeviceBind_t;
//  121 #endif
//  122 
//  123 /*********************************************************************
//  124  * GLOBAL VARIABLES
//  125  */
//  126 
//  127 /*********************************************************************
//  128  * EXTERNAL VARIABLES
//  129  */
//  130 
//  131 /*********************************************************************
//  132  * EXTERNAL FUNCTIONS
//  133  */
//  134 
//  135 /*********************************************************************
//  136  * LOCAL VARIABLES
//  137  */

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
//  138 static uint16 ZDOBuildBuf[26];  // temp area to build data without allocation
??ZDOBuildBuf:
        DS 52
//  139 
//  140 #if defined ( REFLECTOR )
//  141 static ZDO_EDBind_t *ZDO_EDBind;     // Null when not used
//  142 #endif
//  143 
//  144 #if defined ( MANAGED_SCAN )
//  145   uint32 managedScanNextChannel = 0;
//  146   uint32 managedScanChannelMask = 0;
//  147   uint8  managedScanTimesPerChannel = 0;
//  148 #endif
//  149 
//  150 #if defined ( ZDO_COORDINATOR )
//  151   ZDMatchEndDeviceBind_t *matchED = (ZDMatchEndDeviceBind_t *)NULL;
//  152 #endif
//  153 
//  154 /*********************************************************************
//  155  * LOCAL FUNCTIONS
//  156  */
//  157 static void ZDODeviceSetup( void );
//  158 static uint16 *ZDO_CreateAlignedUINT16List(uint8 num, uint8 *buf);
//  159 #if defined ( MANAGED_SCAN )
//  160   static void ZDOManagedScan_Next( void );
//  161 #endif
//  162 #if defined ( REFLECTOR )
//  163   static void ZDO_RemoveEndDeviceBind( void );
//  164   static void ZDO_SendEDBindRsp( byte TransSeq, zAddrType_t *dstAddr, byte Status, byte secUse );
//  165 #endif
//  166 #if defined ( REFLECTOR ) || defined( ZDO_COORDINATOR )
//  167   static byte ZDO_CompareClusterLists( byte numList1, uint16 *list1,
//  168                                 byte numList2, uint16 *list2, uint16 *pMatches );
//  169 #endif
//  170 #if defined ( ZDO_COORDINATOR )
//  171   static void ZDO_RemoveMatchMemory( void );
//  172   static uint8 ZDO_CopyMatchInfo( ZDEndDeviceBind_t *destReq, ZDEndDeviceBind_t *srcReq );
//  173   static uint8 ZDMatchSendState( uint8 reason, uint8 status, uint8 TransSeq );
//  174   static void ZDO_EndDeviceBindMatchTimeoutCB( void );
//  175 #endif
//  176 
//  177 /*********************************************************************
//  178  * @fn          ZDO_Init
//  179  *
//  180  * @brief       ZDObject and ZDProfile initialization.
//  181  *
//  182  * @param       none
//  183  *
//  184  * @return      none
//  185  */

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  186 void ZDO_Init( void )
ZDO_Init:
        CFI Block cfiBlock0 Using cfiCommon0
        CFI Function ZDO_Init
//  187 {
        FUNCALL ZDO_Init, NLME_DeviceJoiningInit
        LOCFRAME ISTACK, 2, STACK
        ARGFRAME ISTACK, 2, STACK
        FUNCALL ZDO_Init, ZDSecMgrInit
        LOCFRAME ISTACK, 2, STACK
        ARGFRAME ISTACK, 2, STACK
        PUSH	DPL
        CFI DPL0 Frame(CFA_SP, 4)
        CFI CFA_SP SP+-4
        PUSH	DPH
        CFI DPH0 Frame(CFA_SP, 5)
        CFI CFA_SP SP+-5
        ; Saved register size: 2
        ; Auto size: 0
//  188   // Initialize ZD items
//  189   #if defined ( REFLECTOR )
//  190   ZDO_EDBind = NULL;
//  191   #endif
//  192 
//  193   // Setup the device - type of device to create.
//  194   ZDODeviceSetup();
        ; Setup parameters for call to function NLME_DeviceJoiningInit
        MOV	DPTR,#(NLME_DeviceJoiningInit & 0xffff)
        MOV	A,#((NLME_DeviceJoiningInit >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  195 
//  196   // Initialize ZigBee Device Security Manager
//  197   ZDSecMgrInit();
        ; Setup parameters for call to function ZDSecMgrInit
        MOV	DPTR,#(ZDSecMgrInit & 0xffff)
        MOV	A,#((ZDSecMgrInit >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        CFI EndBlock cfiBlock0
//  198 }
        REQUIRE ?Subroutine24
        ; // Fall through to label ?Subroutine24

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine24:
        CFI Block cfiBlock1 Using cfiCommon0
        CFI NoFunction
        CFI CFA_SP SP+-5
        CFI DPL0 Frame(CFA_SP, 4)
        CFI DPH0 Frame(CFA_SP, 5)
        POP	DPH
        CFI CFA_SP SP+-4
        CFI DPH0 SameValue
        POP	DPL

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -