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

📄 zdobject.s51

📁 cc2430应用实例
💻 S51
📖 第 1 页 / 共 5 页
字号:
        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 ?Subroutine21
        ; // Fall through to label ?Subroutine21

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine21:
        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
        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_NetworkDiscoveryRequest
        LOCFRAME XSTACK, 23, STACK
        ARGFRAME XSTACK, 23, STACK
        FUNCALL ZDO_StartDevice, nwk_ScanJoiningOrphan
        LOCFRAME XSTACK, 23, STACK
        ARGFRAME XSTACK, 23, STACK
        FUNCALL ZDO_StartDevice, NLME_OrphanJoinRequest
        LOCFRAME XSTACK, 23, STACK
        ARGFRAME XSTACK, 23, STACK
        FUNCALL ZDO_StartDevice, ZDSecMgrConfig
        LOCFRAME XSTACK, 23, STACK
        ARGFRAME XSTACK, 23, STACK
        FUNCALL ZDO_StartDevice, osal_start_timer
        LOCFRAME XSTACK, 23, STACK
        ARGFRAME XSTACK, 23, 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: 11
        MOV	A,#-0xb
        LCALL	?ALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 23)
//  293   ZStatus_t ret;
//  294 
//  295   ret = ZUnsupportedMode;
        MOV	R6,#0x12
//  296 
//  297 #if defined(ZDO_COORDINATOR)
//  298   if ( logicalType == NODETYPE_COORDINATOR )
//  299   {
//  300     if ( startMode == MODE_HARD )
//  301     {
//  302       devState = DEV_COORD_STARTING;
//  303       ret = NLME_NetworkFormationRequest( zgConfigPANID, zgDefaultChannelList,
//  304                                           zgDefaultStartingScanDuration, beaconOrder,
//  305                                           superframeOrder, false );
//  306     }
//  307     else if ( startMode == MODE_RESUME )
//  308     {
//  309       // Just start the coordinator
//  310       devState = DEV_COORD_STARTING;
//  311       ret = NLME_StartRouterRequest( beaconOrder, beaconOrder, false );
//  312     }
//  313     else
//  314     {
//  315 #if defined( LCD_SUPPORTED )
//  316       HalLcdWriteScreen( "StartDevice ERR", "MODE unknown" );
//  317 #endif
//  318     }
//  319   }
//  320 #endif  // !ZDO_COORDINATOR
//  321 
//  322 #if !defined ( ZDO_COORDINATOR ) || defined( SOFT_START )
//  323   if ( logicalType == NODETYPE_ROUTER || logicalType == NODETYPE_DEVICE )
        MOV	A,#0x1
        XRL	A,R1
        JZ	??ZDO_StartDevice_0
        MOV	A,#0x2
        XRL	A,R1
        JZ	$+5
        LJMP	??ZDO_StartDevice_1 & 0xFFFF
//  324   {
//  325     if ( (startMode == MODE_JOIN) || (startMode == MODE_REJOIN) )
??ZDO_StartDevice_0:
        MOV	A,R2
        JZ	??ZDO_StartDevice_2
        MOV	A,#0x3
        XRL	A,R2
        JNZ	??ZDO_StartDevice_3
//  326     {
//  327       devState = DEV_NWK_DISC;
??ZDO_StartDevice_2:
        MOV	A,#0x2
        LCALL	?Subroutine1 & 0xFFFF
//  328 
//  329   #if defined( MANAGED_SCAN )
//  330       ZDOManagedScan_Next();
//  331       ret = NLME_NetworkDiscoveryRequest( managedScanChannelMask, BEACON_ORDER_15_MSEC );
//  332   #else
//  333       ret = NLME_NetworkDiscoveryRequest( zgDefaultChannelList, zgDefaultStartingScanDuration );
??CrossCallReturnLabel_2:
        LCALL	?L_MOV_X
        MOV	R2,?V0 + 0
        MOV	R3,?V0 + 1
        MOV	R4,?V0 + 2
        MOV	R5,?V0 + 3
        MOV	DPTR,#(NLME_NetworkDiscoveryRequest & 0xffff)
        MOV	A,#((NLME_NetworkDiscoveryRequest >> 16) & 0xff)
        SJMP	??ZDO_StartDevice_4
//  334   #endif
//  335     }
//  336     else if ( startMode == MODE_RESUME )
??ZDO_StartDevice_3:
        MOV	A,#0x1
        XRL	A,R2
        JNZ	??ZDO_StartDevice_1
//  337     {
//  338       if ( logicalType == NODETYPE_ROUTER )
        MOV	A,#0x1
        XRL	A,R1
        JNZ	??ZDO_StartDevice_5
//  339       {
//  340         ZMacScanCnf_t scanCnf;
//  341         devState = DEV_NWK_ORPHAN;
        MOV	A,#0xa
        MOV	DPTR,#devState
        MOVX	@DPTR,A
//  342 
//  343         /* if router and nvram is available, fake successful orphan scan */
//  344         scanCnf.hdr.Status = ZSUCCESS;
        MOV	A,#0x1
        LCALL	?XSTACK_DISP0_8
        CLR	A
        MOVX	@DPTR,A
//  345         scanCnf.ScanType = ZMAC_ORPHAN_SCAN;
        MOV	A,#0x2
        LCALL	?XSTACK_DISP0_8
        MOV	A,#0x3
        MOVX	@DPTR,A
//  346         scanCnf.UnscannedChannels = 0;
        MOV	DPTR,#__Constant_0
        MOV	R0,#?V0 + 0
        LCALL	?L_MOV_X
        MOV	A,#0x4
        LCALL	?XSTACK_DISP0_8
        MOV	R0,#?V0 + 0
        LCALL	?L_MOV_TO_X
//  347         scanCnf.ResultListSize = 0;
        MOV	A,#0x8
        LCALL	?XSTACK_DISP0_8
        CLR	A
        MOVX	@DPTR,A
//  348         nwk_ScanJoiningOrphan(&scanCnf);
        ; Setup parameters for call to function nwk_ScanJoiningOrphan
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOV	R2,DPL
        MOV	R3,DPH
        MOV	DPTR,#(nwk_ScanJoiningOrphan & 0xffff)
        MOV	A,#((nwk_ScanJoiningOrphan >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  349 
//  350         ret = ZSuccess;
        MOV	R6,#0x0
        SJMP	??ZDO_StartDevice_1
//  351       }
//  352       else
//  353       {
//  354         devState = DEV_NWK_ORPHAN;
??ZDO_StartDevice_5:
        MOV	A,#0xa
        LCALL	?Subroutine1 & 0xFFFF
//  355         ret = NLME_OrphanJoinRequest( zgDefaultChannelList,
//  356                                       zgDefaultStartingScanDuration );
??CrossCallReturnLabel_3:
        LCALL	?L_MOV_X
        MOV	R2,?V0 + 0
        MOV	R3,?V0 + 1
        MOV	R4,?V0 + 2
        MOV	R5,?V0 + 3
        MOV	DPTR,#(NLME_OrphanJoinRequest & 0xffff)
        MOV	A,#((NLME_OrphanJoinRequest >> 16) & 0xff)
??ZDO_StartDevice_4:
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	A,R1
        MOV	R6,A
//  357       }
//  358     }
//  359     else
//  360     {
//  361 #if defined( LCD_SUPPORTED )
//  362       HalLcdWriteScreen( "StartDevice ERR", "MODE unknown" );
//  363 #endif
//  364     }
//  365   }
//  366 #endif  //!ZDO COORDINATOR || SOFT_START
//  367 
//  368   // configure the Security Manager for type of device
//  369   ZDSecMgrConfig();
??ZDO_StartDevice_1:
        ; Setup parameters for call to function ZDSecMgrConfig
        MOV	DPTR,#(ZDSecMgrConfig & 0xffff)
        MOV	A,#((ZDSecMgrConfig >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  370 
//  371   if ( ret != ZSuccess )
        MOV	A,R6
        JZ	??ZDO_StartDevice_6
//  372     osal_start_timer( ZDO_NETWORK_INIT, NWK_RETRY_DELAY );
        ; Setup parameters for call to function osal_start_timer
        MOV	R4,#-0x18

⌨️ 快捷键说明

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