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

📄 hh_mac.h

📁 zigbee中心节点源代码
💻 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 + -