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

📄 mt_nwk.s51

📁 cc2430应用实例
💻 S51
📖 第 1 页 / 共 3 页
字号:
//   67  * LOCAL FUNCTIONS
//   68  */
//   69 #if defined ( MT_NWK_FUNC )  //NWK commands
//   70 uint8 MT_Nwk_DataRequest( uint16 dstAddr, uint8 nsduLen, uint8* nsdu,
//   71                          uint8 nsduHandle, uint16 nsduHandleOptions,
//   72                          uint8 secure, uint8 discoverRoute,
//   73                          uint8 radius);
//   74 
//   75 uint8 MT_Nwk_DataRequest( uint16 dstAddr, uint8 nsduLen, uint8* nsdu,
//   76                          uint8 nsduHandle, uint16 nsduHandleOptions,
//   77                          uint8 secure, uint8 discoverRoute,
//   78                          uint8 radius)
//   79 {
//   80     uint8               status;
//   81     NLDE_DataReqAlloc_t dra;
//   82     NLDE_DataReq_t*     req;
//   83 
//   84 
//   85     dra.overhead = sizeof(NLDE_DataReq_t);
//   86     dra.nsduLen  = nsduLen;
//   87     dra.secure   = secure;
//   88 
//   89     req = NLDE_DataReqAlloc(&dra);
//   90 
//   91     if ( req != NULL )
//   92     {
//   93       osal_memcpy(req->nfd.nsdu, nsdu, nsduLen);
//   94 
//   95       req->nfd.dstAddr           = dstAddr;
//   96       req->nfd.nsduHandleOptions = nsduHandleOptions;
//   97       req->nfd.discoverRoute     = discoverRoute;
//   98       req->nfd.radius            = radius;
//   99 
//  100       status = NLDE_DataReq( req );
//  101     }
//  102     else
//  103     {
//  104       status = ZMemError;
//  105     }
//  106 
//  107     return status;
//  108 }
//  109 #endif // defined ( MT_NWK_FUNC )
//  110 
//  111 /*********************************************************************
//  112  * @fn      MT_NwkCommandProcessing
//  113  *
//  114  * @brief
//  115  *
//  116  *   Process all the NWK commands that are issued by test tool
//  117  *
//  118  * @param   cmd_id - Command ID
//  119  * @param   len    - Length of received SPI data message
//  120  * @param   pData  - pointer to received SPI data message
//  121  *
//  122  * @return  void
//  123  */

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  124 void MT_NwkCommandProcessing( uint16 cmd_id , byte len , byte *pData )
MT_NwkCommandProcessing:
        CFI Block cfiBlock0 Using cfiCommon0
        CFI Function MT_NwkCommandProcessing
//  125 {
        FUNCALL MT_NwkCommandProcessing, NLME_PermitJoiningRequest
        LOCFRAME XSTACK, 10, STACK
        ARGFRAME XSTACK, 10, STACK
        MOV	A,#-0xa
        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 V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 10)
        ; Saved register size: 10
        ; Auto size: 0
//  126   byte ret;
//  127 #if defined ( MT_NWK_FUNC )
//  128   uint8 dummyExPANID[Z_EXTADDR_LEN] = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF };
//  129   uint16 dstAddr;
//  130 #endif
//  131 #if defined ( MT_NWK_FUNC )  //NWK commands
//  132   byte attr;
//  133   byte index;
//  134   byte dataLen;
//  135   byte *dataPtr;
//  136   uint32 channelList;
//  137   byte databuf[SPI_RESP_LEN_NWK_DEFAULT + NWK_DEFAULT_GET_RESPONSE_LEN];
//  138 #if defined( ZDO_COORDINATOR )
//  139 	uint16 panId;
//  140 #else
//  141   byte i,j;
//  142 #endif
//  143 #endif // MT_NWK_FUNC
//  144 
//  145   len = SPI_0DATA_MSG_LEN + SPI_RESP_LEN_NWK_DEFAULT;
//  146 	ret = (byte)ZSuccess;
//  147 
//  148   switch (cmd_id)
        MOV	?V0 + 0,R2
        MOV	?V0 + 1,R3
        MOV	R0,#?V0 + 0
        LCALL	?US_SWITCH_DENSE
`?<Jumptable for MT_NwkCommandProcessing>_0`:
        DW        259
        DB        0
        DW        ??MT_NwkCommandProcessing_0
        DW        ??MT_NwkCommandProcessing_1
//  149   {
//  150 #if defined( RTR_NWK )
//  151     case SPI_CMD_NLME_PERMIT_JOINING_REQ:
//  152       //The only information is PermitDuration
//  153       ret = (byte)NLME_PermitJoiningRequest( *pData );
??MT_NwkCommandProcessing_1:
        ; Setup parameters for call to function NLME_PermitJoiningRequest
        MOV	DPL,R4
        MOV	DPH,R5
        MOVX	A,@DPTR
        MOV	R1,A
        MOV	DPTR,#(NLME_PermitJoiningRequest & 0xffff)
        MOV	A,#((NLME_PermitJoiningRequest >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  154       break;
//  155 #endif
//  156 
//  157 #if defined ( MT_NWK_FUNC )  //NWK commands
//  158     case SPI_CMD_NWK_INIT:
//  159       nwk_init( NWK_TaskID );
//  160       break;
//  161 
//  162     case SPI_CMD_NLDE_DATA_REQ:
//  163       //First read the DstAddr
//  164       dstAddr = BUILD_UINT16( pData[1], pData[0] );
//  165       pData += sizeof( dstAddr );
//  166 
//  167       //Get the NSDU details
//  168       dataLen = *pData++;
//  169       dataPtr = pData;
//  170 
//  171       /* For now, skip a length of ZTEST_DEFAULT_DATA_LEN, instead of dataLen.
//  172          In future ZTOOL releases the data buffer will be only as long as dataLen */
//  173 
//  174       //pData += dataLen;
//  175       pData += ZTEST_DEFAULT_DATA_LEN;
//  176 
//  177       /* pData[0] = NSDUHandlde
//  178          pData[1] = NSDUHandleOptions
//  179          pData[3] = SecurityEnable
//  180          pData[4] = DiscoverRoute
//  181          pData[5] = RadiusCounter */
//  182 
//  183       ret = (byte)MT_Nwk_DataRequest( dstAddr, dataLen, dataPtr, pData[0],
//  184                                       BUILD_UINT16( pData[2], pData[1] ),
//  185                                       pData[3], pData[4], pData[5]);
//  186       break;
//  187 
//  188 #if defined( ZDO_COORDINATOR )
//  189     case SPI_CMD_NLME_INIT_COORD_REQ:
//  190 			panId = BUILD_UINT16( pData[1], pData[0] );
//  191 			
//  192 			MT_ReverseBytes( &pData[2], 4 );
//  193 			channelList = osal_build_uint32( &pData[2], 4 );
//  194 
//  195 			ret = (byte)NLME_NetworkFormationRequest( panId, channelList, pData[6], pData[7],
//  196                                                       pData[8], pData[9] );
//  197       break;
//  198 #endif  // ZDO
//  199 
//  200 #if defined( RTR_NWK )
//  201     case SPI_CMD_NLME_START_ROUTER_REQ:
//  202       // NOTE: first two parameters are not used, see NLMEDE.h for details
//  203       ret = (byte)NLME_StartRouterRequest( pData[0], pData[1], pData[2] );
//  204     break;
//  205 #endif  // RTR
//  206 
//  207     case SPI_CMD_NLME_JOIN_REQ:
//  208 		  ret = (byte)NLME_JoinRequest( dummyExPANID, BUILD_UINT16( pData[1], pData[0] ), pData[2], pData[3] );
//  209       if ( pData[3] & CAPINFO_RCVR_ON_IDLE )
//  210       {
//  211         // The receiver is on, turn network layer polling off.
//  212         NLME_SetPollRate( 0 );
//  213         NLME_SetQueuedPollRate( 0 );
//  214         NLME_SetResponseRate( 0 );
//  215       }
//  216       break;
//  217 
//  218     case SPI_CMD_NLME_LEAVE_REQ:
//  219       {
//  220         NLME_LeaveReq_t req;
//  221         // if extAddr is all zeros, it means null pointer..
//  222         for( index = 0; ( ( index < Z_EXTADDR_LEN ) &&
//  223                         ( pData[index] == 0 ) ) ; index++ );
//  224         if ( index == Z_EXTADDR_LEN )
//  225         {
//  226           req.extAddr = NULL;
//  227         }
//  228         else
//  229         {
//  230           MT_ReverseBytes( pData, Z_EXTADDR_LEN );
//  231           req.extAddr = pData;
//  232         }
//  233         pData += Z_EXTADDR_LEN;
//  234 
//  235         req.removeChildren = FALSE;
//  236         req.rejoin         = FALSE;
//  237         req.silent         = FALSE;
//  238         ret = (byte)NLME_LeaveReq( &req );
//  239       }
//  240       break;
//  241 
//  242     case SPI_CMD_NLME_RESET_REQ:
//  243       //Its a direct call to reset NWK
//  244       ret = (byte)NLME_ResetRequest();
//  245       break;
//  246 
//  247     case SPI_CMD_NLME_GET_REQ:
//  248       attr = *pData++;
//  249       index = *pData;
//  250 			databuf[0] = (byte)NLME_GetRequest( (ZNwkAttributes_t )attr, index, &databuf[1] );
//  251       len = SPI_0DATA_MSG_LEN + SPI_RESP_LEN_NWK_DEFAULT + NWK_DEFAULT_GET_RESPONSE_LEN;
//  252       MT_BuildAndSendZToolResponse( len, (SPI_RESPONSE_BIT | SPI_CMD_NLME_GET_REQ),
//  253             (SPI_RESP_LEN_NWK_DEFAULT + NWK_DEFAULT_GET_RESPONSE_LEN), databuf );
//  254       return;   // Don't return to this function
//  255 
//  256     case SPI_CMD_NLME_SET_REQ:
//  257       ret = (byte)NLME_SetRequest( (ZNwkAttributes_t)pData[0], pData[1], &pData[2] );
//  258       osal_start_timerEx( ZDAppTaskID, ZDO_NWK_UPDATE_NV, 1000 );
//  259       break;
//  260 
//  261     case SPI_CMD_NLME_NWK_DISC_REQ:
//  262       MT_ReverseBytes( pData, 4 );
//  263       ret = (byte)NLME_NetworkDiscoveryRequest( osal_build_uint32( pData, 4 ), pData[4] );
//  264       break;
//  265 
//  266 #if !defined( ZDO_COORDINATOR )
//  267     case SPI_CMD_NLME_ORPHAN_JOIN_REQ:
//  268       // Channel list bit mask
//  269       MT_ReverseBytes( pData, 4 );
//  270       channelList = osal_build_uint32( pData, 4 );
//  271 
//  272       // Count number of channels
//  273       j = attr = 0;
//  274       for ( i = 0; i < ED_SCAN_MAXCHANNELS; i++ )
//  275       {
//  276         if ( channelList & (1 << i) )
//  277         {
//  278            j++;
//  279            attr = i;
//  280         }
//  281       }
//  282 
//  283       // If only one channel specified...
//  284       if ( j == 1 )
//  285       {
//  286         _NIB.scanDuration = pData[4];
//  287         _NIB.nwkLogicalChannel = attr;
//  288         _NIB.channelList = channelList;
//  289         if ( !_NIB.CapabilityInfo )
//  290           _NIB.CapabilityInfo = ZDO_Config_Node_Descriptor.CapabilityFlags;
//  291 
//  292         devState = DEV_NWK_ORPHAN;
//  293         ret = (byte)NLME_OrphanJoinRequest( channelList, pData[4] );
//  294       }
//  295       else
//  296         ret = ZNwkInvalidParam;
//  297       break;
//  298 #endif  // !ZDO
//  299 	
//  300 #if defined (RTR_NWK)
//  301     case SPI_CMD_NLME_ROUTE_DISC_REQ:
//  302       ret = (byte)NLME_RouteDiscoveryRequest( BUILD_UINT16( pData[1], pData[0] ), pData[2] );
//  303       break;
//  304 			
//  305     case SPI_CMD_NLME_DIRECT_JOIN_REQ:
//  306       MT_ReverseBytes( pData, 8 );
//  307       ret = (byte)NLME_DirectJoinRequest( pData, pData[8] );
//  308     break;
//  309 #endif	// RTR
//  310 
//  311 #endif // MT_NWK_FUNC
//  312 
//  313     default:
//  314       ret = (byte)ZUnsupportedMode;
//  315       break;
//  316   }
//  317 
//  318 #if defined ( MT_NWK_FUNC )
//  319 	MT_SendSPIRespMsg( ret, cmd_id, len, SPI_RESP_LEN_NWK_DEFAULT );
//  320 #endif	
//  321   (void)len;
//  322   (void)ret;
//  323 }
??MT_NwkCommandProcessing_0:
        MOV	R7,#0x2
        LJMP	?BANKED_LEAVE_XDATA
        CFI EndBlock cfiBlock0

        END
//  324 
//  325 #if defined ( MT_NWK_CB_FUNC )             //NWK callback commands
//  326 /*********************************************************************
//  327  * @fn          nwk_MTCallbackSubDataConfirm
//  328  *
//  329  * @brief       Process the callback subscription for NLDE-DATA.confirm
//  330  *
//  331  * @param       nsduHandle  - APS handle
//  332  * @param       Status      - result of data request
//  333  *
//  334  * @return      none

⌨️ 快捷键说明

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