当前位置: > 华清远见教育科技集团 > 嵌入式学习 > 讲师博文 > Zstack之Mac层初始化说明
Zstack之Mac层初始化说明
时间:2016-12-13作者:华清远见

ZMacInit( );调用ZigBee协议栈中的MAC层API用于初始化MAC层。

uint8 ZMacInit( void )
        {
            uint8 stat;

#if defined( ZCL_KEY_ESTABLISH )
            /* Set the callback function for 16 byte random seed */
      &nbsnbsp;     MAC_SetRandomSeedCB( SSP_StoreRandomSeedNV);
        #endif

    MAC_Init( ); //初始化MAC子系统,该函数需要在软件系统开始并且在MAC 的API函数被使用之前进行调用
            MAC_InitDevice();//初始化MAC与网络进行连接。该函数用于初始化设备为RFD。需要在数据实体或管理实体API调用之前执行

#if !defined NONWK
            if ( ZG_BUILD_RTR_TYPE )
             {
                 MAC_InitCoord( );//初始化MAC,作为协调器进行操作。该函数用于初始化设备为FFD。
             }
        #endif

    // 初始化MAC
            stat = ZMacReset( TRUE );

    // Turn off interrupts
            osal_int_disable( INTS_ALL );
            return ( stat );
        }

关键在于zMacReset用于复位MAC,实现为:uint8 ZMacReset( bool SetDefaultPIB )
        {
          byte stat;  
          byte value;
          stat = MAC_MlmeResetReq( SetDefaultPIB );//复位MAC层,函数在系统将setDefaultPib设置为TRUE之前进行调用。

  // Don't send PAN ID conflict
          value = FALSE;
          MAC_MlmeSetReq( MAC_ASSOCIATED_PAN_COORD, &value );//该函数用于设置属性值
          MAC_MlmeSetReq( MAC_EXTENDED_ADDRESS, &aExtendedAddress );
          if (ZMac_ScanBuf)
          {
            osal_mem_free(ZMac_ScanBuf);
            ZMac_ScanBuf = NULL;
          }
          return ( stat );
        }

发表评论
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)