📄 mac_general.h
字号:
#if MAC_OPT_SEQUENTIAL_FRESHNESS
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];
//----------------------------------------------------------------------------------------------------------
// 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 + -