📄 mac_api.h
字号:
/* Scan Type */
#define MAC_SCAN_ED 0 /* Energy detect scan. The device will tune to each channel and
perform and energy measurement. The list of channels and their
associated measurements will be returned at the end of the scan */
#define MAC_SCAN_ACTIVE 1 /* Active scan. The device tunes to each channel, sends a beacon
request and listens for beacons. The PAN descriptors are returned
at the end of the scan */
#define MAC_SCAN_PASSIVE 2 /* Passive scan. The device tunes to each channel and listens for
beacons. The PAN descriptors are returned at the end of the scan */
#define MAC_SCAN_ORPHAN 3 /* Orphan scan. The device tunes to each channel and sends an orphan
notification to try and find its coordinator. The status is returned
at the end of the scan */
/* Special address values */
#define MAC_ADDR_USE_EXT 0xFFFE /* Short address value indicating extended address is used */
#define MAC_SHORT_ADDR_BROADCAST 0xFFFF /* Broadcast short address */
#define MAC_SHORT_ADDR_NONE 0xFFFF /* Short address when there is no short address */
/* Comm status indication reasons */
#define MAC_COMM_ASSOCIATE_RSP 0 /* Event sent in response to MAC_AssociateRsp() */
#define MAC_COMM_ORPHAN_RSP 1 /* Event sent in response to MAC_OrphanRsp() */
#define MAC_COMM_RX_SECURE 2 /* Event sent as a result of receiving a secure frame */
/* Power Mode */
#define MAC_PWR_ON 0 /* MAC and radio hardware is powered on */
#define MAC_PWR_SLEEP_LITE 1 /* MAC and radio hardware are partially powered off */
#define MAC_PWR_SLEEP_DEEP 2 /* MAC and radio hardware are fully powered off */
/* MAC Callback Events */
#define MAC_MLME_ASSOCIATE_IND 1 /* Associate indication */
#define MAC_MLME_ASSOCIATE_CNF 2 /* Associate confirm */
#define MAC_MLME_DISASSOCIATE_IND 3 /* Disassociate indication */
#define MAC_MLME_DISASSOCIATE_CNF 4 /* Disassociate confirm */
#define MAC_MLME_BEACON_NOTIFY_IND 5 /* Beacon notify indication */
#define MAC_MLME_ORPHAN_IND 6 /* Orphan indication */
#define MAC_MLME_SCAN_CNF 7 /* Scan confirm */
#define MAC_MLME_START_CNF 8 /* Start confirm */
#define MAC_MLME_SYNC_LOSS_IND 9 /* Sync loss indication */
#define MAC_MLME_POLL_CNF 10 /* Poll confirm */
#define MAC_MLME_COMM_STATUS_IND 11 /* Communication status indication */
#define MAC_MCPS_DATA_CNF 12 /* Data confirm */
#define MAC_MCPS_DATA_IND 13 /* Data indication */
#define MAC_MCPS_PURGE_CNF 14 /* Purge confirm */
#define MAC_PWR_ON_CNF 15 /* Power on confirm */
#define MAC_MLME_POLL_IND 16 /* Poll indication */
/* ------------------------------------------------------------------------------------------------
* Macros
* ------------------------------------------------------------------------------------------------
*/
/* Returns the number of short addresses in the pending address specification */
#define MAC_PEND_NUM_SHORT(pendAddrSpec) ((pendAddrSpec) & 0x07)
/* Returns the number of extended addresses in the pending address specification */
#define MAC_PEND_NUM_EXT(pendAddrSpec) (((pendAddrSpec) & 0x70) >> 4)
/* Returns the length in bytes of the pending address fields in the beacon */
#define MAC_PEND_FIELDS_LEN(pendAddrSpec) ((MAC_PEND_NUM_SHORT(pendAddrSpec) * 2) + \
(MAC_PEND_NUM_EXT(pendAddrSpec) * 8))
/* The following macros are provided to help parse the superframe specification */
#define MAC_SFS_BEACON_ORDER(s) ((s) & 0x0F) /* returns the beacon order */
#define MAC_SFS_SUPERFRAME_ORDER(s) (((s) >> 4) & 0x0F) /* returns the beacon order */
#define MAC_SFS_FINAL_CAP_SLOT(s) (((s) >> 8) & 0x0F) /* returns the final CAP slot */
#define MAC_SFS_BLE(s) (((s) >> 12) & 0x01) /* returns the battery life extension bit */
#define MAC_SFS_PAN_COORDINATOR(s) (((s) >> 14) & 0x01) /* returns the PAN coordinator bit */
#define MAC_SFS_ASSOCIATION_PERMIT(s) ((s) >> 15) /* returns the association permit bit */
/* ------------------------------------------------------------------------------------------------
* Typedefs
* ------------------------------------------------------------------------------------------------
*/
/* MAC event header type */
typedef struct
{
uint8 event; /* MAC event */
uint8 status; /* MAC status */
} macEventHdr_t;
/* Common security type */
typedef struct
{
uint8 keySource[MAC_KEY_SOURCE_MAX_LEN]; /* Key source */
uint8 securityLevel; /* Security level */
uint8 keyIdMode; /* Key identifier mode */
uint8 keyIndex; /* Key index */
} macSec_t;
/* For internal use only */
typedef struct
{
uint32 timestamp;
uint16 timestamp2;
uint16 timeToLive;
uint8 frameType;
uint8 txOptions;
uint8 txMode;
uint8 txSched;
uint8 retries;
uint8 channel;
uint8 power;
} macTxIntData_t;
/* For internal use only */
typedef struct
{
uint8 frameType;
uint8 flags;
} macRxIntData_t;
/* Data request parameters type */
typedef struct
{
sAddr_t dstAddr; /* The address of the destination device */
uint16 dstPanId; /* The PAN ID of the destination device */
uint8 srcAddrMode; /* The source address mode */
uint8 msduHandle; /* Application-defined handle value associated with this data request */
uint8 txOptions; /* TX options bit mask */
uint8 channel; /* Transmit the data frame on this channel */
uint8 power; /* Transmit the data frame at this power level */
} macDataReq_t;
/* MCPS data request type */
typedef struct
{
macEventHdr_t hdr; /* Internal use only */
sData_t msdu; /* Data pointer and length */
macTxIntData_t internal; /* Internal use only */
macSec_t sec; /* Security parameters */
macDataReq_t mac; /* Data request parameters */
} macMcpsDataReq_t;
/* Data indication parameters type */
typedef struct
{
sAddr_t srcAddr; /* The address of the sending device */
sAddr_t dstAddr; /* The address of the destination device */
uint32 timestamp; /* The time, in backoffs, at which the data were received */
uint16 timestamp2; /* The time, in internal MAC timer units, at which the
data were received */
uint16 srcPanId; /* The PAN ID of the sending device */
uint16 dstPanId; /* The PAN ID of the destination device */
uint8 mpduLinkQuality; /* The link quality of the received data frame */
uint8 correlation; /* The raw correlation value of the received data frame */
int8 rssi; /* The received RF power in units dBm */
uint8 dsn; /* The data sequence number of the received frame */
} macDataInd_t;
/* MCPS data indication type */
typedef struct
{
macEventHdr_t hdr; /* Internal use only */
sData_t msdu; /* Data pointer and length */
macRxIntData_t internal; /* Internal use only */
macSec_t sec; /* Security parameters */
macDataInd_t mac; /* Data indication parameters */
} macMcpsDataInd_t;
/* MCPS data confirm type */
typedef struct
{
macEventHdr_t hdr; /* Contains the status of the data request operation */
uint8 msduHandle; /* Application-defined handle value associated with the data request */
macMcpsDataReq_t *pDataReq; /* Pointer to the data request buffer for this data confirm */
uint32 timestamp; /* The time, in backoffs, at which the frame was transmitted */
uint16 timestamp2; /* The time, in internal MAC timer units, at which the
frame was transmitted */
} macMcpsDataCnf_t;
/* MCPS purge confirm type */
typedef struct
{
macEventHdr_t hdr; /* Contains the status of the purge request operation */
uint8 msduHandle; /* Application-defined handle value associated with the data request */
} macMcpsPurgeCnf_t;
/* PAN descriptor type */
typedef struct
{
sAddr_t coordAddress; /* The address of the coordinator sending the beacon */
uint16 coordPanId; /* The PAN ID of the network */
uint16 superframeSpec; /* The superframe specification of the network */
uint8 logicalChannel; /* The logical channel of the network */
uint8 channelPage; /* The current channel page occupied by the network */
bool gtsPermit; /* TRUE if coordinator accepts GTS requests */
uint8 linkQuality; /* The link quality of the received beacon */
uint32 timestamp; /* The time at which the beacon was received, in backoffs */
bool securityFailure; /* Set to TRUE if there was an error in the security processing */
macSec_t sec; /* The security parameters for the received beacon frame */
} macPanDesc_t;
/* MLME associate request type */
typedef struct
{
uint8 logicalChannel; /* The channel on which to attempt association */
uint8 channelPage; /* The channel page on which to attempt association */
sAddr_t coordAddress; /* Address of the coordinator with which to associate */
uint16 coordPanId; /* The identifier of the PAN with which to associate */
uint8 capabilityInformation; /* The operational capabilities of this device */
macSec_t sec; /* The security parameters for this message */
} macMlmeAssociateReq_t;
/* MLME associate response type */
typedef struct
{
sAddrExt_t deviceAddress; /* The address of the device requesting association */
uint16 assocShortAddress; /* The short address allocated to the device */
uint8 status; /* The status of the association attempt */
macSec_t sec; /* The security parameters for this message */
} macMlmeAssociateRsp_t;
/* MLME disassociate request type */
typedef struct
{
sAddr_t deviceAddress; /* The address of the device with which to disassociate */
uint16 devicePanId; /* The PAN ID of the device */
uint8 disassociateReason; /* The disassociate reason */
bool txIndirect; /* Transmit Indirect */
macSec_t sec; /* The security parameters for this message */
} macMlmeDisassociateReq_t;
/* MLME orphan response type */
typedef struct
{
sAddrExt_t orphanAddress; /* The extended address of the device sending the orphan notification */
uint16 shortAddress; /* The short address of the orphaned device */
bool associatedMember; /* Set to TRUE if the orphaned device is associated with this coordinator */
macSec_t sec; /* The security parameters for this message */
} macMlmeOrphanRsp_t;
/* MLME poll request type */
typedef struct
{
sAddr_t coordAddress; /* The address of the coordinator device to poll */
uint16 coordPanId; /* The PAN ID of the coordinator */
macSec_t sec; /* The security parameters for this message */
} macMlmePollReq_t;
/* MLME scan request type */
typedef struct
{
uint32 scanChannels; /* Bit mask indicating which channels to scan */
uint8 scanType; /* The type of scan */
uint8 scanDuration; /* The exponent used in the scan duration calculation */
uint8 channelPage; /* The channel page on which to perform the scan */
uint8 maxResults; /* The maximum number of PAN descriptor results */
macSec_t sec; /* The security parameters for orphan scan */
union {
uint8 *pEnergyDetect; /* Pointer to a buffer to store energy detect measurements */
macPanDesc_t *pPanDescriptor; /* Pointer to a buffer to store PAN descriptors */
} result;
} macMlmeScanReq_t;
/* MLME start request type */
typedef struct
{
uint32 startTime; /* The time to begin transmitting beacons relative to the received beacon */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -