zdobject.s51

来自「TI的基于ZIGBEE2006的协议栈」· S51 代码 · 共 1,570 行 · 第 1/5 页

S51
1,570
字号
//  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 )

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
//  151   ZDMatchEndDeviceBind_t *matchED = (ZDMatchEndDeviceBind_t *)NULL;
matchED:
        DS 2
//  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_CoordinatorInit
        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_CoordinatorInit
        MOV	DPTR,#(NLME_CoordinatorInit & 0xffff)
        MOV	A,#((NLME_CoordinatorInit >> 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)
        CFI EndBlock cfiBlock0
        REQUIRE ?Subroutine62
        ; // Fall through to label ?Subroutine62
//  198 }

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine62:
        CFI Block cfiBlock1 Using cfiCommon0
        CFI NoFunction
        CFI CFA_SP SP+-5
        CFI DPL0 Frame(CFA_SP, 4)
        CFI DPH0 Frame(CFA_SP, 5)
        LCALL	?BCALL               ; Banked call to: DPTR()
??Subroutine62_0:
        POP	DPH
        CFI CFA_SP SP+-4
        CFI DPH0 SameValue
        POP	DPL
        CFI CFA_SP SP+-3
        CFI DPL0 SameValue
        LJMP	?BRET
        CFI EndBlock cfiBlock1
//  199 
//  200 #if defined ( MANAGED_SCAN )
//  201 /*********************************************************************
//  202  * @fn      ZDOManagedScan_Next()
//  203  *
//  204  * @brief   Setup a managed scan.
//  205  *
//  206  * @param   none
//  207  *
//  208  * @return  none
//  209  */
//  210 static void ZDOManagedScan_Next( void )
//  211 {
//  212   // Is it the first time
//  213   if ( managedScanNextChannel == 0 && managedScanTimesPerChannel == 0 )
//  214   {
//  215     // Setup the defaults
//  216     managedScanNextChannel  = 1;
//  217 
//  218     while( managedScanNextChannel && (zgDefaultChannelList & managedScanNextChannel) == 0 )
//  219       managedScanNextChannel <<= 1;
//  220 
//  221     managedScanChannelMask = managedScanNextChannel;
//  222     managedScanTimesPerChannel = MANAGEDSCAN_TIMES_PRE_CHANNEL;
//  223   }
//  224   else
//  225   {
//  226     // Do we need to go to the next channel
//  227     if ( managedScanTimesPerChannel == 0 )
//  228     {
//  229       // Find next active channel
//  230       managedScanChannelMask  = managedScanNextChannel;
//  231       managedScanTimesPerChannel = MANAGEDSCAN_TIMES_PRE_CHANNEL;
//  232     }
//  233     else
//  234     {
//  235       managedScanTimesPerChannel--;
//  236 
//  237       if ( managedScanTimesPerChannel == 0 )
//  238       {
//  239         managedScanNextChannel  <<= 1;
//  240         while( managedScanNextChannel && (zgDefaultChannelList & managedScanNextChannel) == 0 )
//  241           managedScanNextChannel <<= 1;
//  242 
//  243         if ( managedScanNextChannel == 0 )
//  244           zdoDiscCounter  = NUM_DISC_ATTEMPTS + 1; // Stop
//  245       }
//  246     }
//  247   }
//  248 }
//  249 #endif // MANAGED_SCAN
//  250 
//  251 /*********************************************************************
//  252  * @fn      ZDODeviceSetup()
//  253  *
//  254  * @brief   Call set functions depending on the type of device compiled.
//  255  *
//  256  * @param   none
//  257  *
//  258  * @return  none
//  259  */
//  260 static void ZDODeviceSetup( void )
//  261 {
//  262 #if defined( ZDO_COORDINATOR )
//  263   NLME_CoordinatorInit();
//  264 #endif
//  265 
//  266 #if defined ( REFLECTOR )
//  267   #if defined ( ZDO_COORDINATOR )
//  268     APS_ReflectorInit( APS_REFLECTOR_PUBLIC );
//  269   #else
//  270     APS_ReflectorInit( APS_REFLECTOR_PRIVATE );
//  271   #endif
//  272 #endif
//  273 
//  274 #if !defined( ZDO_COORDINATOR ) || defined( SOFT_START )
//  275   NLME_DeviceJoiningInit();
//  276 #endif
//  277 }
//  278 
//  279 /*********************************************************************
//  280  * @fn          ZDO_StartDevice
//  281  *
//  282  * @brief       This function starts a device in a network.
//  283  *
//  284  * @param       logicalType     - Device type to start
//  285  *              startMode       - indicates mode of device startup
//  286  *              beaconOrder     - indicates time betwen beacons
//  287  *              superframeOrder - indicates length of active superframe
//  288  *
//  289  * @return      none
//  290  */

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  291 void ZDO_StartDevice( byte logicalType, devStartModes_t startMode, byte beaconOrder, byte superframeOrder )
ZDO_StartDevice:
        CFI Block cfiBlock2 Using cfiCommon0
        CFI Function ZDO_StartDevice
//  292 {
        FUNCALL ZDO_StartDevice, NLME_NetworkFormationRequest
        LOCFRAME XSTACK, 14, STACK
        ARGFRAME XSTACK, 14, STACK
        FUNCALL ZDO_StartDevice, NLME_StartRouterRequest
        LOCFRAME XSTACK, 9, STACK
        ARGFRAME XSTACK, 9, STACK
        FUNCALL ZDO_StartDevice, ZDSecMgrConfig
        LOCFRAME XSTACK, 9, STACK
        ARGFRAME XSTACK, 9, STACK
        FUNCALL ZDO_StartDevice, osal_start_timer
        LOCFRAME XSTACK, 9, STACK
        ARGFRAME XSTACK, 9, STACK
        MOV	A,#-0x9
        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 V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 9)
        ; Saved register size: 9
        ; Auto size: 0
        MOV	A,R1
        MOV	R5,A
        MOV	A,R3
        MOV	R1,A
//  293   ZStatus_t ret;
//  294 
//  295   ret = ZUnsupportedMode;
        MOV	R6,#0x12
//  296 
//  297 #if defined(ZDO_COORDINATOR)
//  298   if ( logicalType == NODETYPE_COORDINATOR )
        MOV	A,R5
        JNZ	??ZDO_StartDevice_0
//  299   {
//  300     if ( startMode == MODE_HARD )
        MOV	A,#0x2
        XRL	A,R2
        JNZ	??ZDO_StartDevice_1
//  301     {
//  302       devState = DEV_COORD_STARTING;
        MOV	A,#0x8
        MOV	DPTR,#devState
        MOVX	@DPTR,A
//  303       ret = NLME_NetworkFormationRequest( zgConfigPANID, zgDefaultChannelList,
//  304                                           zgDefaultStartingScanDuration, beaconOrder,
//  305                                           superframeOrder, false );
        ; Setup parameters for call to function NLME_NetworkFormationRequest
        MOV	?V0 + 0,#0x0
        MOV	R0,#?V0 + 0
        LCALL	?PUSH_XSTACK_I_ONE
        CFI CFA_XSP16 add(XSP16, 10)
        MOV	DPTR,#zgDefaultChannelList
        LCALL	?PUSH_XSTACK8_X_FOUR
        CFI CFA_XSP16 add(XSP16, 14)
        MOV	A,R4
        MOV	R5,A
        MOV	A,R1
        MOV	R4,A
        MOV	DPTR,#zgDefaultStartingScanDuration
        MOVX	A,@DPTR

⌨️ 快捷键说明

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