📄 hh_mac.h
字号:
#ifndef _HH_MAC_H_
#define _HH_MAC_H_
//MAC enumerations
#define MAC_SUCCESS 0x00
#define MAC_BEACON_LOSS 0xe0
#define MAC_CHANNEL_ACCESS_FAILURE 0xe1
#define MAC_DENIED 0xe2
#define MAC_DISABLE_TRX_FAILURE 0xe3
#define MAC_FAILED_SECURITY_CHECK 0xe4
#define MAC_FRAME_TOO_LONG 0xe5
#define MAC_INVALID_GTS 0xe6
#define MAC_INVALID_HANDLE 0xe7
#define MAC_INVALID_PARAMETER 0xe8
#define MAC_NO_ACK 0xe9
#define MAC_NO_BEACON 0xea
#define MAC_NO_DATA 0xeb
#define MAC_NO_SHORT_ADDRESS 0xec
#define MAC_OUT_OF_CAP 0xed
#define MAC_PAN_ID_CONFLICT 0xee
#define MAC_REALIGNMENT 0xef
#define MAC_TRANSACTION_EXPIRED 0xf0
#define MAC_TRANSACTION_OVERFLOW 0xf1
#define MAC_TX_ACTIVE 0xf2
#define MAC_UNAVAILABLE 0xf3
#define MAC_UNSUPPORTED_ATTRIBUTE 0xf4
//MAC constants
#define MAC_aBaseSlotDuration 60
#define MAC_aNumSuperframeSlots 16
#define MAC_aBaseSuperframeDuration (MAC_aBaseSlotDuration * MAC_aNumSuperframeSlots)
#define MAC_aResponseWaitTime (32 * MAC_aBaseSuperframeDuration)
#define MAC_aExtendedAddress 0
#define MAC_aMaxBE 5
#define MAC_aMaxBeaconOverhead 75
#define MAC_aMaxBeaconPayloadLength (PHY_aMaxPHYPacketSize - MAC_aMaxBeaconOverhead)
#define MAC_aGTSDescPersistenceTime 4
#define MAC_aMaxFrameOverhead 25
#define MAC_aMaxMACFrameSize (PHY_aMaxPHYPacketSize - MAC_aMaxFrameOverhead)
#define MAC_aMaxFrameResponseTime 1220
#define MAC_aMaxFrameRetries 3
#define MAC_aMaxLostBeacons 4
#define MAC_aMaxSIFSFrameSize 18
#define MAC_aMinCAPLength 440
#define MAC_aMinLIFSPeriod 40
#define MAC_aMinSIFSPeriod 12
#define MAC_aUnitBackoffPeriod 20
//MAC PIB attribute id
#define MAC_macAckWaitDuration 0x40
#define MAC_macAssociationPermit 0x41
#define MAC_macAutoRequest 0x42
#define MAC_macBattLifeExt 0x43
#define MAC_macBattLifeExtPeriods 0x44
#define MAC_macBeaconPayload 0x45
#define MAC_macBeaconPayloadLength 0x46
#define MAC_macBeaconOrder 0x47
#define MAC_macBeaconTxTime 0x48
#define MAC_macBSN 0x49
#define MAC_macCoordExtendedAddress 0x4a
#define MAC_macCoordShortAddress 0x4b
#define MAC_macDSN 0x4c
#define MAC_macGTSPermit 0x4d
#define MAC_macMaxCSMABackoffs 0x4e
#define MAC_macMinBE 0x4f
#define MAC_macPANId 0x50
#define MAC_macPromiscuousMode 0x51
#define MAC_macRxOnWhenIdle 0x52
#define MAC_macShortAddress 0x53
#define MAC_macSuperframeOrder 0x54
#define MAC_macTransactionPersistenceTime 0x55
#define MAC_macACLEntryDescriptorSet 0x70
#define MAC_macACLEntryDescriptorSetSize 0x71
#define MAC_macDefaultSecurity 0x72
#define MAC_macACLDefaultSecurityMaterialLength 0x73
#define MAC_macACLDefaultSecurityMaterial 0x74
#define MAC_macDefaultSecuritySuite 0x75
#define MAC_macSecurityMode 0x76
#define MAC_macTxGTSId
#define MAC_macUpperLayerType
#define MAC_macRxGTSId
#define MAC_macSnoozePermit
//MAC structures
// Data frame overhead ((frame control field, data sequence number, PAN ID, destination and source) + (frame check sequence))
// Note that the length byte itself is not included included in the frame length
#define MAC_aDataFrameOverheadSize ((2 + 1 + 2 + 2 + 2) + (2))
#define MAC_aDataFramePayloadSize (PHY_aMaxPHYPacketSize - MAC_aDataFrameOverheadSize)
// Ack frame ((frame control field, data sequence number) + (frame check sequence))
#define MAC_aAckFrameSize ((2 + 1) + (2))
#define MAC_aMaxFrameOverheadSize 25
#define MAC_aMaxFramePayloadSize (PHY_aMaxPHYPacketSize - MAC_aMaxFrameOverheadSize)
// Frame control field
#define MAC_FCF_BEACON 0x0
#define MAC_FCF_DATA 0x1
#define MAC_FCF_ACKNOWLEDGMENT 0x2
#define MAC_FCF_MACCOMMAND 0x3
#define MAC_FCF_SECURITYENABLED 3
#define MAC_FCF_FRAMEPENDING 4
#define MAC_FCF_ACKREQUEST 5
#define MAC_FCF_INTRAPAN 6
#define MAC_FCF_SHORTADDR 0x8800
#define MAC_FCF_EXTENDEDADDR 0xcc00
// Frame check sequence
#define MAC_FCS_CRCOK 0x80
//TxOption
#define MAC_TXOPTION_ACKTRANSMISSION 0x01
#define MAC_TXOPTION_GTSTRANSMISSION 0x02
#define MAC_TXOPTION_INDIRECTTRANSMISSION 0x04
#define MAC_TXOPTION_SECURITYTRANSMISSION 0x08
//beacon loader 0.98304/16=0.06144
#define superFrameSpcefication 0xd766
#define GTSspecificationfield 0x04
#define GISdirectionsField 0x00
#define PendingAddressSpecificationField 0x00
#define DeviceShortAdressing1 0x5678
#define DeviceShortAdressing2 0x1235
#define DeviceShortAdressing3 0x1236
#define DeviceShortAdressing4 0x1237
#define GTSstartingSlotAndLength1 0x82
#define GTSstartingSlotAndLength2 0xA2
#define GTSstartingSlotAndLength3 0xC2
#define GTSstartingSlotAndLength4 0xE2
typedef struct {
BOOL ackReceived;
// UINT8 frameType;
// BOOL securityEnabled;
// BOOL framePending;
// BOOL ackRequest;
// BOOL intraPan;
// UINT8 destAddrMode;
// UINT8 srcAddrMode;
WORD frameControlField;
BYTE dataSeqNumber;
// WORD destPanId;
WORD panId;
WORD destAddr;
// WORD srcPanId;
WORD srcAddr;
UINT8 msduLength;
BYTE msdu[MAC_aMaxFramePayloadSize];
WORD frameCheckSeq;
BOOL msduStatus;
} MACRxFrameInfo;
extern MACRxFrameInfo gMACRxFrameInfo;
//extern volatile MACRxFrameInfo gMACRxFrameInfo;
typedef struct {
// BOOL ackRequest;
// UINT8 frameType;
// BOOL securityEnabled;
// BOOL framePending;
// BOOL ackRequest;
// BOOL intraPan;
// UINT8 destAddrMode;
// UINT8 srcAddrMode;
WORD frameControlField;
UINT8 dataSeqNumber;
// WORD destPanId;
WORD panId;
WORD destAddr;
// WORD srcPanId;
WORD srcAddr;
UINT8 msduLength;
BYTE msdu[MAC_aMaxFramePayloadSize];
WORD frameCheckSeq;
BOOL msduStatus;
} MACTxFrameInfo;
extern MACTxFrameInfo gMACTxFrameInfo;
//extern volatile MACTxFrameInfo gMACTxFrameInfo;
//MAC function prototypes
//note that parameters(destAddrMode and srcAddrMode) must be equal to 2 for 16 bit short address mode;
UINT8 MCPSDATA_request(WORD macFrameControlField, BYTE dataSeqNumber, WORD panId, WORD destAddr, WORD srcAddr, UINT8 msduLength, BYTE *msdu, BYTE txOption);
void MCPSDATA_indication(void);
UINT8 Beacon_MCPSDATA_request(WORD macFrameControlField, BYTE dataSeqNumber, WORD panId, WORD destAddr, WORD srcAddr, UINT8 msduLength, BYTE *msdu, BYTE txOption);
//MLMEASSOCIATE_request(UINT8 logicalChannel, UNIT8 coordAddrMode, WORD coordPanId, WORD coordAddress, capabilityInformation, BOOL securityEnable);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -