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

📄 mac_general.h

📁 ucos在NEC平台下的移植
💻 H
📖 第 1 页 / 共 2 页
字号:
//    DWORD externalFrameCounter;
//    BYTE externalKeySequenceCounter;
//#endif
//} SECURITY_MATERIAL;
//
//// Access Control List
//typedef struct {
//    QWORD extendedAddress;
//    WORD  shortAddress;
//    WORD  panId;
//    BYTE  securityMaterialLength;
//    SECURITY_MATERIAL securityMaterial;
//    BYTE securitySuite;
//} ACL_ENTRY;
//
//typedef ACL_ENTRY ACL_ENTRY_SET[MAC_OPT_ACL_SIZE];  --li

//----------------------------------------------------------------------------------------------------------
// MAC and PHY PAN information bases

// MAC PIB
typedef struct {
    BYTE macAckWaitDuration;
    ZBOOL macAssociationPermit;
    ZBOOL macAutoRequest;
    ZBOOL macBattLifeExt;
    BYTE macBattLifeExtPeriods;
    BYTE* pMacBeaconPayload;
    BYTE macBeaconPayloadLength;
    BYTE macBeaconOrder;
    DWORD macBeaconTxTime;
    BYTE macBSN;
    QWORD macCoordExtendedAddress;
    WORD macCoordShortAddress;
    BYTE macDSN;
    ZBOOL macGTSPermit;
    BYTE macMaxCsmaBackoffs;
    BYTE macMinBE;
    WORD macPANId;
    ZBOOL macPromiscuousMode;
    ZBOOL macRxOnWhenIdle;
    WORD macShortAddress;
    BYTE macSuperframeOrder;
    WORD macTransactionPersistenceTime;

    // ACL attributes
#if MAC_OPT_ACL_SIZE > 0
    ACL_ENTRY_SET* ppMacACLEntryDescriptorSet;
    BYTE macACLEntryDescriptorSetSize;
#endif

    // Security attributes
#if MAC_OPT_SECURITY
    ZBOOL macDefaultSecurity;
    BYTE macDefaultSecurityMaterialLength;
    SECURITY_MATERIAL* pMacDefaultSecurityMaterial;
    BYTE macDefaultSecuritySuite;
#endif

#if ((MAC_OPT_SECURITY) || (MAC_OPT_ACL_SIZE>0))
    BYTE macSecurityMode;
#endif
    ZBOOL macAssocatedPanCordinator;
} MAC_PIB;
extern MAC_PIB mpib;

// PHY PIB
typedef struct {
    UINT8 phyCurrentChannel;
    UINT8 phyTransmitPower;
    UINT8 phyCcaMode;
} PHY_PIB;
extern PHY_PIB ppib;




//-------------------------------------------------------------------------------------------------------
// Internal MAC state

// Bit masks
#define MAC_STATE_TX_DATA_REQUEST_BM    0x10
#define MAC_STATE_DATA_REQUEST_SENT_BM  0x20
#define MAC_STATE_SCAN_BM               0x40
#define MAC_STATE_ASSOC_BM              0x80

// The internal MAC states
typedef enum {
    MAC_STATE_DEFAULT = 0x00,
    
    MAC_STATE_TX_AUTO_DATA_REQUEST = MAC_STATE_TX_DATA_REQUEST_BM,
    MAC_STATE_TX_MANUAL_DATA_REQUEST,
    MAC_STATE_TX_ASSOC_DATA_REQUEST,
    
    MAC_STATE_AUTO_DATA_REQUEST_SENT = MAC_STATE_DATA_REQUEST_SENT_BM,
    MAC_STATE_MANUAL_DATA_REQUEST_SENT,
    MAC_STATE_ASSOC_DATA_REQUEST_SENT,
    
    MAC_STATE_ENERGY_SCAN = MAC_STATE_SCAN_BM,
    MAC_STATE_ACTIVE_OR_PASSIVE_SCAN,
    MAC_STATE_SCAN_RESULT_BUFFER_FULL,
    MAC_STATE_ORPHAN_SCAN,
    MAC_STATE_ORPHAN_REALIGNED,
    
    MAC_STATE_TX_ASSOC_REQUEST = MAC_STATE_ASSOC_BM,
    MAC_STATE_ASSOC_REQUEST_SENT
} MAC_STATE_TYPE;


// MAC_ENUM definition, for MAC internal use only
#define RESOURCE_SHORTAGE            0x01


// Temporary buffer for some PIB attributes (the PIB is updated when the next beacon is received or 
// transmitted). These are the category 4 attributes from mlmeSetRequest().
#define MPIB_UPD_BATT_LIFE_EXT_BM    0x01 
#define MPIB_UPD_BEACON_ORDER_BM     0x02 
#define MPIB_UPD_RX_ON_WHEN_IDLE_BM  0x04 
#define MPIB_UPD_SUPERFRAME_ORDER_BM 0x08 

// Data holding structure + a mask to tell which ones to update
typedef struct {
    ZBOOL macBattLifeExt;
    UINT8 macBeaconOrder;
    ZBOOL macRxOnWhenIdle;
    UINT8 macSuperframeOrder;
    BYTE updateMask;
} MAC_PIB_TEMP_BUFFER;

// Internal module data
typedef struct {
    volatile MAC_STATE_TYPE state;
    MAC_PIB_TEMP_BUFFER pibTempBuffer;
    BYTE flags;
} MAC_INFO;
extern MAC_INFO macInfo;
//----------------------------------------------------------------------------------------------------------


//----------------------------------------------------------------------------------------------------------
// Internal mac flags

// Access macros
#define SET_MF(n)           do { macInfo.flags |= n; } while (0)
#define CLEAR_MF(n)         do { macInfo.flags &= ~n; } while (0)
#define RESET_MF()          do { macInfo.flags = 0; } while (0)
#define GET_MF(n)           (!!(macInfo.flags & n))

// Bit definitions
#define MF_COORDINATOR      0x01 /* The device is a coordinator */
#define MF_PAN_COORDINATOR  0x02 /* The device is a PAN coordinator (set in addition to MF_COORDINATOR) */
#define MF_BEACON_SECURITY  0x04 /* Beacon security is enabled */
#define MF_TRANSMIT_BEACON  0x08 /* The device is currently transmitting beacons */
#define MF_SECURE_ASSOC     0x10 /* Set when performing a secure association */
//----------------------------------------------------------------------------------------------------------




/*******************************************************************************************************
 *******************************************************************************************************
 **************************               FUNCTION PROTOTYPES                 **************************
 *******************************************************************************************************
 *******************************************************************************************************/


//----------------------------------------------------------------------------------------------------------
// Changes the internal MAC state
ZBOOL macSetState(BYTE newState);
//----------------------------------------------------------------------------------------------------------


#endif




/*******************************************************************************************************
 * Revision history:
 *
 * $Log: mac_general.h,v $
 * Revision 1.7  2005/02/03 15:02:59  thl
 * added pib attribute MAC_ASSOCIATED_PAN_CORDINATOR.
 * used to disable/enable pan conflict message.
 *
 * Revision 1.6  2004/08/13 13:04:42  jol
 * CC2420 MAC Release v0.7
 *
 *
 *******************************************************************************************************/

⌨️ 快捷键说明

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