📄 mac_api.h
字号:
#ifndef MAC_API_H
#define MAC_API_H
/**************************************************************************************************
Filename: mac_api.h
Revised: $Date: 2007-02-26 16:59:26 -0800 (Mon, 26 Feb 2007) $
Revision: $Revision: 13615 $
Description:
Public interface file for 802.15.4 MAC.
Copyright (c) 2006 by Texas Instruments, Inc.
All Rights Reserved. Permission to use, reproduce, copy, prepare
derivative works, modify, distribute, perform, display or sell this
software and/or its documentation for any purpose is prohibited
without the express written consent of Texas Instruments, Inc.
**************************************************************************************************/
#ifdef __cplusplus
extern "C" {
#endif
/* ------------------------------------------------------------------------------------------------
* Includes
* ------------------------------------------------------------------------------------------------
*/
#include "hal_types.h"
#include "saddr.h"
#include "sdata.h"
/* ------------------------------------------------------------------------------------------------
* Constants
* ------------------------------------------------------------------------------------------------
*/
/* Status */
#define MAC_SUCCESS 0x00 /* Operation successful */
#define MAC_BEACON_LOSS 0xE0 /* The beacon was lost following a synchronization request */
#define MAC_CHANNEL_ACCESS_FAILURE 0xE1 /* The operation or data request failed because of
activity on the channel */
#define MAC_COUNTER_ERROR 0xDB /* The frame counter puportedly applied by the originator of
the received frame is invalid */
#define MAC_DENIED 0xE2 /* The MAC was not able to enter low power mode. */
#define MAC_DISABLE_TRX_FAILURE 0xE3 /* Unused */
#define MAC_FRAME_TOO_LONG 0xE5 /* The received frame or frame resulting from an operation
or data request is too long to be processed by the MAC */
#define MAC_IMPROPER_KEY_TYPE 0xDC /* The key purportedly applied by the originator of the
received frame is not allowed */
#define MAC_IMPROPER_SECURITY_LEVEL 0xDD /* The security level purportedly applied by the originator of
the received frame does not meet the minimum security level */
#define MAC_INVALID_ADDRESS 0xF5 /* The data request failed because neither the source address nor
destination address parameters were present */
#define MAC_INVALID_GTS 0xE6 /* Unused */
#define MAC_INVALID_HANDLE 0xE7 /* The purge request contained an invalid handle */
#define MAC_INVALID_INDEX 0xF9 /* Unused */
#define MAC_INVALID_PARAMETER 0xE8 /* The API function parameter is out of range */
#define MAC_LIMIT_REACHED 0xFA /* The scan terminated because the PAN descriptor storage limit
was reached */
#define MAC_NO_ACK 0xE9 /* The operation or data request failed because no
acknowledgement was received */
#define MAC_NO_BEACON 0xEA /* The scan request failed because no beacons were received or the
orphan scan failed because no coordinator realignment was received */
#define MAC_NO_DATA 0xEB /* The associate request failed because no associate response was received
or the poll request did not return any data */
#define MAC_NO_SHORT_ADDRESS 0xEC /* The short address parameter of the start request was invalid */
#define MAC_ON_TIME_TOO_LONG 0xF6 /* Unused */
#define MAC_OUT_OF_CAP 0xED /* Unused */
#define MAC_PAN_ID_CONFLICT 0xEE /* A PAN identifier conflict has been detected and
communicated to the PAN coordinator */
#define MAC_PAST_TIME 0xF7 /* Unused */
#define MAC_READ_ONLY 0xFB /* A set request was issued with a read-only identifier */
#define MAC_REALIGNMENT 0xEF /* A coordinator realignment command has been received */
#define MAC_SCAN_IN_PROGRESS 0xFC /* The scan request failed because a scan is already in progress */
#define MAC_SECURITY_ERROR 0xE4 /* Cryptographic processing of the received secure frame failed */
#define MAC_SUPERFRAME_OVERLAP 0xFD /* The beacon start time overlapped the coordinator transmission time */
#define MAC_TRACKING_OFF 0xF8 /* The start request failed because the device is not tracking
the beacon of its coordinator */
#define MAC_TRANSACTION_EXPIRED 0xF0 /* The associate response, disassociate request, or indirect
data transmission failed because the peer device did not respond
before the transaction expired or was purged */
#define MAC_TRANSACTION_OVERFLOW 0xF1 /* The request failed because MAC data buffers are full */
#define MAC_TX_ACTIVE 0xF2 /* Unused */
#define MAC_UNAVAILABLE_KEY 0xF3 /* The operation or data request failed because the
security key is not available */
#define MAC_UNSUPPORTED_ATTRIBUTE 0xF4 /* The set or get request failed because the attribute is not supported */
#define MAC_UNSUPPORTED_LEGACY 0xDE /* The received frame was secured with legacy security which is
not supported */
#define MAC_UNSUPPORTED_SECURITY 0xDF /* The security of the received frame is not supported */
#define MAC_UNSUPPORTED 0x18 /* The operation is not supported in the current configuration */
#define MAC_BAD_STATE 0x19 /* The operation could not be performed in the current state */
#define MAC_NO_RESOURCES 0x1A /* The operation could not be completed because no
memory resources were available */
#define MAC_ACK_PENDING 0x1B /* For internal use only */
#define MAC_NO_TIME 0x1C /* For internal use only */
#define MAC_TX_ABORTED 0x1D /* For internal use only */
/* MAC Security Level */
#define MAC_SEC_LEVEL_NONE 0x00 /* No security is used */
#define MAC_SEC_LEVEL_MIC_32 0x01 /* MIC-32 authentication is used */
#define MAC_SEC_LEVEL_MIC_64 0x02 /* MIC-64 authentication is used */
#define MAC_SEC_LEVEL_MIC_128 0x03 /* MIC-128 authentication is used */
#define MAC_SEC_LEVEL_ENC 0x04 /* AES encryption is used */
#define MAC_SEC_LEVEL_ENC_MIC_32 0x05 /* AES encryption and MIC-32 authentication are used */
#define MAC_SEC_LEVEL_ENC_MIC_64 0x06 /* AES encryption and MIC-64 authentication are used */
#define MAC_SEC_LEVEL_ENC_MIC_128 0x07 /* AES encryption and MIC-128 authentication are used */
/* Key Identifier Mode */
#define MAC_KEY_ID_MODE_NONE 0x00 /* Key is is not used */
#define MAC_KEY_ID_MODE_IMPLICIT 0x00 /* Key is determined implicitly */
#define MAC_KEY_ID_MODE_1 0x01 /* Key is determined from the 1-byte key index */
#define MAC_KEY_ID_MODE_4 0x02 /* Key is determined from the 4-byte key index */
#define MAC_KEY_ID_MODE_8 0x03 /* Key is determined from the 8-byte key index */
/* Key identifier field length in bytes */
#define MAC_KEY_ID_IMPLICIT_LEN 0
#define MAC_KEY_ID_1_LEN 1
#define MAC_KEY_ID_4_LEN 5
#define MAC_KEY_ID_8_LEN 9
/* Key source maximum length in bytes */
#define MAC_KEY_SOURCE_MAX_LEN 8
/* Data constants */
#define MAC_MAX_FRAME_SIZE 102 /* Maximum application data length without security */
#define MAC_DATA_OFFSET 24 /* Bytes required for MAC header in data frame */
#define MAC_ENC_OFFSET 5 /* Data offset required for encryption header */
#define MAC_MIC_32_LEN 4 /* Length required for MIC-32 authentication */
#define MAC_MIC_64_LEN 8 /* Length required for MIC-64 authentication */
#define MAC_MIC_128_LEN 16 /* Length required for MIC-128 authentication */
/* TX Options */
#define MAC_TXOPTION_ACK 0x01 /* Acknowledged transmission. The MAC will attempt to retransmit
the frame until it is acknowledged */
#define MAC_TXOPTION_GTS 0x02 /* GTS transmission (unused) */
#define MAC_TXOPTION_INDIRECT 0x04 /* Indirect transmission. The MAC will queue the data and wait
for the destination device to poll for it. This can only be used
by a coordinator device */
#define MAC_TXOPTION_NO_RETRANS 0x10 /* This proprietary option prevents the frame from being retransmitted */
#define MAC_TXOPTION_NO_CNF 0x20 /* This proprietary option prevents a MAC_MCPS_DATA_CNF
event from being sent for this frame */
#define MAC_TXOPTION_ALT_BE 0x40 /* Use PIB value MAC_ALT_BE for the minimum backoff exponent */
#define MAC_TXOPTION_PWR_CHAN 0x80 /* Use the power and channel values in macDataReq_t
instead of the PIB values */
/* Channels */
#define MAC_CHAN_11 11
#define MAC_CHAN_12 12
#define MAC_CHAN_13 13
#define MAC_CHAN_14 14
#define MAC_CHAN_15 15
#define MAC_CHAN_16 16
#define MAC_CHAN_17 17
#define MAC_CHAN_18 18
#define MAC_CHAN_19 19
#define MAC_CHAN_20 20
#define MAC_CHAN_21 21
#define MAC_CHAN_22 22
#define MAC_CHAN_23 23
#define MAC_CHAN_24 24
#define MAC_CHAN_25 25
#define MAC_CHAN_26 26
#define MAC_CHAN_27 27
#define MAC_CHAN_28 28
/* This macro converts a channel to a mask */
#define MAC_CHAN_MASK(chan) ((uint32) 1 << (chan))
/* Channel Masks */
#define MAC_CHAN_11_MASK MAC_CHAN_MASK(MAC_CHAN_11)
#define MAC_CHAN_12_MASK MAC_CHAN_MASK(MAC_CHAN_12)
#define MAC_CHAN_13_MASK MAC_CHAN_MASK(MAC_CHAN_13)
#define MAC_CHAN_14_MASK MAC_CHAN_MASK(MAC_CHAN_14)
#define MAC_CHAN_15_MASK MAC_CHAN_MASK(MAC_CHAN_15)
#define MAC_CHAN_16_MASK MAC_CHAN_MASK(MAC_CHAN_16)
#define MAC_CHAN_17_MASK MAC_CHAN_MASK(MAC_CHAN_17)
#define MAC_CHAN_18_MASK MAC_CHAN_MASK(MAC_CHAN_18)
#define MAC_CHAN_19_MASK MAC_CHAN_MASK(MAC_CHAN_19)
#define MAC_CHAN_20_MASK MAC_CHAN_MASK(MAC_CHAN_20)
#define MAC_CHAN_21_MASK MAC_CHAN_MASK(MAC_CHAN_21)
#define MAC_CHAN_22_MASK MAC_CHAN_MASK(MAC_CHAN_22)
#define MAC_CHAN_23_MASK MAC_CHAN_MASK(MAC_CHAN_23)
#define MAC_CHAN_24_MASK MAC_CHAN_MASK(MAC_CHAN_24)
#define MAC_CHAN_25_MASK MAC_CHAN_MASK(MAC_CHAN_25)
#define MAC_CHAN_26_MASK MAC_CHAN_MASK(MAC_CHAN_26)
#define MAC_CHAN_27_MASK MAC_CHAN_MASK(MAC_CHAN_27)
#define MAC_CHAN_28_MASK MAC_CHAN_MASK(MAC_CHAN_28)
/* Channel Page */
#define MAC_CHANNEL_PAGE_0 0 /* 2.4 GHz band using O-QPSK */
#define MAC_CHANNEL_PAGE_1 1 /* 868 and 915 MHz bands using ASK */
#define MAC_CHANNEL_PAGE_2 2 /* 868 and 915 MHz bands using O-QPSK */
/* Capability Information */
#define MAC_CAPABLE_PAN_COORD 0x01 /* Device is capable of becoming a PAN coordinator */
#define MAC_CAPABLE_FFD 0x02 /* Device is an FFD */
#define MAC_CAPABLE_MAINS_POWER 0x04 /* Device is mains powered rather than battery powered */
#define MAC_CAPABLE_RX_ON_IDLE 0x08 /* Device has its receiver on when idle */
#define MAC_CAPABLE_SECURITY 0x40 /* Device is capable of sending and receiving secured frames */
#define MAC_CAPABLE_ALLOC_ADDR 0x80 /* Request allocation of a short address in the associate procedure */
/* Standard PIB Get and Set Attributes */
#define MAC_ACK_WAIT_DURATION 0x40 /* The maximum number of symbols to wait for an acknowledgment frame */
#define MAC_ASSOCIATION_PERMIT 0x41 /* TRUE if a coordinator is currently allowing association */
#define MAC_AUTO_REQUEST 0x42 /* TRUE if a device automatically sends a data request if its address
is listed in the beacon frame */
#define MAC_BATT_LIFE_EXT 0x43 /* TRUE if battery life extension is enabled */
#define MAC_BATT_LIFE_EXT_PERIODS 0x44 /* The number of backoff periods during which the receiver is
enabled following a beacon in battery life extension mode */
#define MAC_BEACON_PAYLOAD 0x45 /* The contents of the beacon payload */
#define MAC_BEACON_PAYLOAD_LENGTH 0x46 /* The length in bytes of the beacon payload */
#define MAC_BEACON_ORDER 0x47 /* How often the coordinator transmits a beacon */
#define MAC_BEACON_TX_TIME 0x48 /* The time the device transmitted its last beacon frame,
in backoff period units */
#define MAC_BSN 0x49 /* The beacon sequence number */
#define MAC_COORD_EXTENDED_ADDRESS 0x4A /* The extended address of the coordinator with which the device
is associated */
#define MAC_COORD_SHORT_ADDRESS 0x4B /* The short address assigned to the coordinator with which the
device is associated. A value of MAC_ADDR_USE_EXT indicates
that the coordinator is using its extended address */
#define MAC_DSN 0x4C /* The data or MAC command frame sequence number */
#define MAC_GTS_PERMIT 0x4D /* TRUE if the PAN coordinator accepts GTS requests */
#define MAC_MAX_CSMA_BACKOFFS 0x4E /* The maximum number of backoffs the CSMA-CA algorithm will attempt
before declaring a channel failure */
#define MAC_MIN_BE 0x4F /* The minimum value of the backoff exponent in the CSMA-CA algorithm.
If this value is set to 0, collision avoidance is disabled during
the first iteration of the algorithm. Also for the slotted version
of the CSMA-CA algorithm with the battery life extension enabled,
the minimum value of the backoff exponent will be at least 2 */
#define MAC_PAN_ID 0x50 /* The PAN identifier. If this value is 0xffff, the device is not
associated */
#define MAC_PROMISCUOUS_MODE 0x51 /* TRUE if the MAC is in promiscuous mode */
#define MAC_RX_ON_WHEN_IDLE 0x52 /* TRUE if the MAC enables its receiver during idle periods */
#define MAC_SHORT_ADDRESS 0x53 /* The short address that the device uses to communicate in the PAN.
If the device is a PAN coordinator, this value shall be set before
calling MAC_StartReq(). Otherwise the value is allocated during
association. Value MAC_ADDR_USE_EXT indicates that the device is
associated but not using a short address */
#define MAC_SUPERFRAME_ORDER 0x54 /* This specifies the length of the active portion of the superframe */
#define MAC_TRANSACTION_PERSISTENCE_TIME 0x55 /* The maximum time in beacon intervals that a transaction is stored by
a coordinator and indicated in the beacon */
#define MAC_ASSOCIATED_PAN_COORD 0x56 /* TRUE if the device is associated to the PAN coordinator */
#define MAC_MAX_BE 0x57 /* The maximum value of the backoff exponent in the CSMA-CA algorithm */
#define MAC_MAX_FRAME_TOTAL_WAIT_TIME 0x58 /* The maximum number of CAP symbols in a beacon-enabled PAN, or
symbols in a non beacon-enabled PAN, to wait for a frame intended
as a response to a data request frame */
#define MAC_MAX_FRAME_RETRIES 0x59 /* The maximum number of retries allowed after a transmission failure */
#define MAC_RESPONSE_WAIT_TIME 0x5A /* The maximum number of symbols a device shall wait for a response
command to be available following a request command in multiples
of aBaseSuperframeDuration */
#define MAC_SYNC_SYMBOL_OFFSET 0x5B /* The timestamp offset from SFD in symbols */
#define MAC_TIMESTAMP_SUPPORTED 0x5C /* TRUE if the MAC supports RX and TX timestamps */
#define MAC_SECURITY_ENABLED 0x5D /* TRUE if security is enabled */
/* Proprietary PIB Get and Set Attributes */
#define MAC_PHY_TRANSMIT_POWER 0xE0 /* The transmit power in units of -1 dBm */
#define MAC_LOGICAL_CHANNEL 0xE1 /* The logical channel */
#define MAC_EXTENDED_ADDRESS 0xE2 /* The extended address of the device */
#define MAC_ALT_BE 0xE3 /* alternate minimum backoff exponent */
/* Disassociate Reason */
#define MAC_DISASSOC_COORD 1 /* The coordinator wishes the device to disassociate */
#define MAC_DISASSOC_DEVICE 2 /* The device itself wishes to disassociate */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -