123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467 |
- #ifndef MAC_COMMON_H_INCLUDED
- #define MAC_COMMON_H_INCLUDED
- #include <stdint.h>
- #include "phy_common.h"
- #if (CONFIG_SECURE == 1)
- #include "mac_security.h"
- #endif
- #if (CONFIG_BEACON_ENABLED == 1)
- #define macAckWaitDuration 864
- #else
- #define macAckWaitDuration 544
- #endif
- #define aMaxBeaconOverhead 75
- #define aUnitBackoffPeriod 20UL
- #define aBaseSlotDuration 60UL
- #define aNumSuperframeSlots 16UL
- #define aBaseSuperframeDuration (aBaseSlotDuration * aNumSuperframeSlots)
- #define aMaxBeaconPayloadLength (aMaxPHYPacketSize - aMaxBeaconOverhead)
- #define aMaxMPDUUnsecuredOverhead 25
- #define aMaxMACSafePayloadSize (aMaxPHYPacketSize - aMaxMPDUUnsecuredOverhead)
- #define aMinMPDUOverhead 9
- #define aMaxMACPayloadSize (aMaxPHYPacketSize - aMinMPDUOverhead)
- #define aMaxSIFSFrameSize 18
- #define aMinCAPLength 440
- #define aGTSDescPersistenceTime 4
- #define aMaxLostBeacons 4
- #define MAC_MIN_BATT_LIFE_EXT_PERIODS 6
- #define MAC_MAX_BATT_LIFE_EXT_PERIODS 41
- #define MAC_MIN_BEACON_ORDER 0
- #define MAC_MAX_BEACON_ORDER 15
- #define MAC_MIN_MAX_CSMA_BACKOFFS 0
- #define MAC_MAX_MAX_CSMA_BACKOFFS 5
- #define MAC_MIN_MIN_BE 0
- #define MAC_MIN_MAX_BE 3
- #define MAC_MAX_MAX_BE 8
- #define MAC_MIN_SUPERFRAME_ORDER 0
- #define MAC_MAX_SUPERFRAME_ORDER 15
- #define MAC_MIN_MAX_FRAME_RETRIES 0
- #define MAC_MAX_MAX_FRAME_RETRIES 7
- #define MAC_MIN_RESPONSE_WAIT_TIME 2
- #define MAC_MAX_RESPONSE_WAIT_TIME 64
- #define MAC_SHORT_ADDRESS_NOT_SET 0xFFFF
- #define MAC_EXTENDED_ADDRESS_NOT_SET 0xFFFFFFFFFFFFFFFFULL
- #define MAC_NO_BEACONS 15
- #define MAC_BROADCAST_SHORT_ADDRESS 0xFFFF
- #define MAC_BROADCAST_PANID 0xFFFF
- #define MAC_EXTENDED_ADDRESS_ONLY 0xFFFE
- #define MAC_FINAL_CAP_SLOT_NBPAN 15
- #define MAC_SLOT_AMOUNT 16
- #define MAC_SECURITY_KEY_INDEX_NOT_SET 0xFF
- #define MAC_ADDR_SHORT_LEN 2
- #define MAC_ADDR_EXTENDED_LEN 8
- #define MAC_PAN_ID_LEN 2
- #define MAC_MFR_SIZE 2
- #if (CONFIG_SECURE == 1)
- #define MAC_MAX_AUX_HEADER_SIZE 14
- #else
- #define MAC_MAX_AUX_HEADER_SIZE 0
- #endif
- #define MAC_MAX_MHR_SIZE (PHY_MAX_HEADER_SIZE + \
- 2 + \
- 1 + \
- 2 * (sizeof(uint16_t) + (sizeof(uint64_t))) + \
- MAC_MAX_AUX_HEADER_SIZE)
- #define MAC_MAX_BCN_MHR_SIZE (PHY_MAX_HEADER_SIZE + \
- 2 + \
- 1 + \
- sizeof(uint16_t) + \
- sizeof(uint64_t) + \
- MAC_MAX_AUX_HEADER_SIZE)
- #if (CONFIG_SECURE == 1)
- #define MAC_MEMORY_RESERVE (MAC_MAX_MHR_SIZE + MAX_MIC_SIZE + MAC_MFR_SIZE)
- #else
- #define MAC_MEMORY_RESERVE (MAC_MAX_MHR_SIZE + MAC_MFR_SIZE)
- #endif
- #define MAC_MAX_MSDU_OFFSET MAC_MAX_MHR_SIZE
- typedef enum
- {
- MAC_BEACON,
- MAC_DATA,
- MAC_ACK,
- MAC_COMMAND
- } mac_frame_type_t;
- typedef union
- {
- uint16_t short_address;
- uint64_t long_address;
- } mac_addr_t;
- typedef enum
- {
- MAC_ADDR_NONE = 0,
- MAC_ADDR_SHORT = 2,
- MAC_ADDR_LONG = 3
- } mac_addr_mode_t;
- typedef enum
- {
- MAC_FRAME_VERSION_2003,
- MAC_FRAME_VERSION_2006
- } mac_frame_version_t;
- typedef enum
- {
- MAC_SUCCESS = 0x00,
- MAC_COUNTER_ERROR = 0xDB,
- MAC_IMPROPER_KEY_TYPE = 0xDC,
- MAC_IMPROPER_SECURITY_LEVEL = 0xDD,
- MAC_UNSUPPORTED_LEGACY = 0xDE,
- MAC_UNSUPPORTED_SECURITY = 0xDF,
- MAC_BEACON_LOSS = 0xE0,
- MAC_CHANNEL_ACCESS_FAILURE = 0xE1,
- MAC_DENIED = 0xE2,
- MAC_DISABLE_TRX_FAILURE = 0xE3,
- MAC_SECURITY_ERROR = 0xE4,
- MAC_FRAME_TOO_LONG = 0xE5,
- MAC_INVALID_GTS = 0xE6,
- MAC_INVALID_HANDLE = 0xE7,
- MAC_INVALID_PARAMETER = 0xE8,
- MAC_NO_ACK = 0xE9,
- MAC_NO_BEACON = 0xEA,
- MAC_NO_DATA = 0xEB,
- MAC_NO_SHORT_ADDRESS = 0xEC,
- MAC_OUT_OF_CAP = 0xED,
- MAC_PAN_ID_CONFLICT = 0xEE,
- MAC_REALIGNMENT = 0xEF,
- MAC_TRANSACTION_EXPIRED = 0xF0,
- MAC_TRANSACTION_OVERFLOW = 0xF1,
- MAC_TX_ACTIVE = 0xF2,
- MAC_UNAVAILABLE_KEY = 0xF3,
- MAC_UNSUPPORTED_ATTRIBUTE = 0xF4,
- MAC_INVALID_ADDRESS = 0xF5,
- MAC_ON_TIME_TOO_LONG = 0xF6,
- MAC_PAST_TIME = 0xF7,
- MAC_TRACKING_OFF = 0xF8,
- MAC_INVALID_INDEX = 0xF9,
- MAC_LIMIT_REACHED = 0xFA,
- MAC_READ_ONLY = 0xFB,
- MAC_SCAN_IN_PROGRESS = 0xFC,
- MAC_SUPERFRAME_OVERLAP = 0xFD,
-
- MAC_IS_NOT_AVAILABLE = 0xFF
- } mac_status_t;
- typedef struct
- {
-
- uint8_t * p_payload;
-
- uint8_t payload_offset;
- } mac_payload_descriptor_t;
- typedef enum
- {
- MAC_CMD_ASSOC_REQ = 0x01,
- MAC_CMD_ASSOC_RESP = 0x02,
- MAC_CMD_DISASSOC_NTF = 0x03,
- MAC_CMD_DATA_REQ = 0x04,
- MAC_CMD_PANID_CONFLICT_NTF = 0x05,
- MAC_CMD_ORPHAN_NTF = 0x06,
- MAC_CMD_BEACON_REQ = 0x07,
- MAC_CMD_COORD_REALIGN = 0x08,
- MAC_CMD_GTS_REQ = 0x09
- } mac_command_id_t;
- #endif
|