📄 nwkmacinterface.h
字号:
typedef struct nwkPollCnf_tag {
uint8_t status;
} nwkPollCnf_t;
// Type: gNwkErrorCnf_c,
typedef struct nwkErrorCnf_tag {
uint8_t status;
} nwkErrorCnf_t;
// Type: gNwkBeaconStartInd_c,
typedef struct nwkBeaconStartInd_tag {
uint8_t source;
} nwkBeaconStartInd_t;
// Type: gNwkMaintenanceScanCnf_c,
typedef struct nwkMaintenanceScanCnf_tag {
uint8_t status;
} nwkMaintenanceScanCnf_t;
// MLME to NWK message
typedef struct nwkMessage_tag {
primMlmeToNwk_t msgType;
union {
nwkAssociateInd_t associateInd;
nwkAssociateCnf_t associateCnf;
nwkDisassociateInd_t disassociateInd;
nwkDisassociateCnf_t disassociateCnf;
nwkBeaconNotifyInd_t beaconNotifyInd;
nwkGetCnf_t getCnf; // Not used
nwkGtsInd_t gtsInd;
nwkGtsCnf_t gtsCnf;
nwkOrphanInd_t orphanInd;
nwkResetCnf_t resetCnf; // Not used
nwkRxEnableCnf_t rxEnableCnf;
nwkScanCnf_t scanCnf;
nwkCommStatusInd_t commStatusInd;
nwkSetCnf_t setCnf; // Not used
nwkStartCnf_t startCnf;
nwkSyncLossInd_t syncLossInd;
nwkPollCnf_t pollCnf;
nwkErrorCnf_t errorCnf; // Test framework primitive.
nwkBeaconStartInd_t beaconStartInd;
nwkMaintenanceScanCnf_t maintenanceScanCnf;
} msgData;
} nwkMessage_t;
//-----------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------
// Primitives in the MCPS to NWK direction
//-----------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------
// Primitives in the MAC to NWK direction. All should be included no matter which
// features are implemented as the primitives are used to interface to Nwk.
enum {
gMcpsDataCnf_c,
gMcpsDataInd_c,
gMcpsPurgeCnf_c,
gMcpsPromInd_c, // Promiscuous mode "packet received indication"
gMcpsToNwkMaxPrimitives_c
};
typedef uint8_t primMcpsToNwk_t;
// Type: gMcpsDataCnf_c,
typedef struct mcpsDataCnf_tag {
uint8_t msduHandle;
uint8_t status;
} mcpsDataCnf_t;
// Type: gMcpsDataInd_c,
typedef struct mcpsDataInd_tag {
uint8_t dstAddr[8]; // First 0/2/8 bytes is the address as defined by dstAddrMode
uint8_t dstPanId[2]; // 16 bit word converted to little endian byte array
uint8_t dstAddrMode;
uint8_t srcAddr[8]; // First 0/2/8 bytes is the address as defined by srcAddrMode
uint8_t srcPanId[2]; // 16 bit word converted to little endian byte array
uint8_t srcAddrMode;
uint8_t msduLength; // 0-102 (101?)
uint8_t mpduLinkQuality;
bool_t securityUse;
uint8_t aclEntry;
uint8_t *pMsdu; // Data will start at this address inside the message.
} mcpsDataInd_t;
// Type: gMcpsPurgeCnf_c,
typedef struct mcpsPurgeCnf_tag {
uint8_t msduHandle;
uint8_t status;
} mcpsPurgeCnf_t;
// Type: gMcpsPromInd_c
typedef struct mcpsPromInd_tag {
uint8_t mpduLinkQuality;
uint8_t msduLength; // 5-121 (shortest frame is ACK frame. Longest frame is max length MAC frame)
uint8_t *pMsdu; // Data will start at this address inside the message.
} mcpsPromInd_t;
// MCPS to NWK message
typedef struct mcpsToNwkMessage_tag {
primMcpsToNwk_t msgType;
union {
mcpsDataCnf_t dataCnf;
mcpsDataInd_t dataInd;
mcpsPurgeCnf_t purgeCnf;
mcpsPromInd_t promInd;
void *dummyAlign; // Used for aligning union, so that mcpsToNwkMessage_t may be cast to nwkMessage_t (in PassMacMessageUp of PTC)
} msgData;
} mcpsToNwkMessage_t;
//-----------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------
// Primitives in the NWK to MLME direction
//-----------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------
// Primitives in the NWK to MAC direction. These must
// always exist even if the feature is not supported.
// The NWK layer may have a copy of these enums, and
// does not know if we disable some of them here.
enum {
gMlmeAssociateReq_c,
gMlmeAssociateRes_c,
gMlmeDisassociateReq_c,
gMlmeGetReq_c,
gMlmeGtsReq_c,
gMlmeOrphanRes_c,
gMlmeResetReq_c,
gMlmeRxEnableReq_c,
gMlmeScanReq_c,
gMlmeSetReq_c,
gMlmeStartReq_c,
gMlmeSyncReq_c,
gMlmePollReq_c,
gMlmeMaintenanceScanReq_c, // Proprietary primitive : Tree mode maintenance scan request
gMlmeInternalPanConflictDetected_c,
gMlmeMaxPrimitives_c
};
typedef uint8_t primNwkToMlme_t;
// Type: gMlmeAssociateReq_c
typedef struct mlmeAssociateReq_tag {
uint8_t coordAddress[8];
uint8_t coordPanId[2];
uint8_t coordAddrMode;
uint8_t logicalChannel;
bool_t securityEnable;
uint8_t capabilityInfo;
} mlmeAssociateReq_t;
// Type: gMlmeAssociateRes_c
typedef struct mlmeAssociateRes_tag {
uint8_t deviceAddress[8];
uint8_t assocShortAddress[2];
bool_t securityEnable;
uint8_t status;
} mlmeAssociateRes_t;
// Type: gMlmeDisassociateReq_c
typedef struct mlmeDisassociateReq_tag {
uint8_t deviceAddress[8];
bool_t securityEnable;
uint8_t disassociateReason;
} mlmeDisassociateReq_t;
// Type: gMlmeGetReq_c,
// Note: Only macBeaconPayloadLength number of
// bytes is returnd if getting macBeaconPayload.
typedef struct mlmeGetReq_tag {
uint8_t pibAttribute;
uint8_t *pibAttributeValue; // Not in spec.
} mlmeGetReq_t;
// Type: gMlmeGtsReq_c,
typedef struct mlmeGtsReq_tag {
bool_t securityEnable;
uint8_t gtsCharacteristics;
} mlmeGtsReq_t;
// Type: gMlmeOrphanRes_c,
typedef struct mlmeOrphanRes_tag {
uint8_t orphanAddress[8];
uint8_t shortAddress[2];
bool_t securityEnable;
bool_t associatedMember;
} mlmeOrphanRes_t;
// Type: gMlmeResetReq_c,
typedef struct mlmeResetReq_tag {
bool_t setDefaultPib;
} mlmeResetReq_t;
// Type: gMlmeRxEnableReq_c,
typedef struct mlmeRxEnableReq_tag {
bool_t deferPermit;
uint8_t rxOnTime[3];
uint8_t rxOnDuration[3];
} mlmeRxEnableReq_t;
// Type: gMlmeScanReq_c,
typedef struct mlmeScanReq_tag {
uint8_t scanType;
uint8_t scanChannels[4];
uint8_t scanDuration;
} mlmeScanReq_t;
// Type: gMlmeSetReq_c,
// Note: macBeaconPayloadLength must have been
// set before setting macBeaconPayload.
typedef struct mlmeSetReq_tag {
uint8_t pibAttribute;
uint8_t *pibAttributeValue;
} mlmeSetReq_t;
// Type: gMlmeStartReq_c,
typedef struct mlmeStartReq_tag {
uint8_t panId[2];
uint8_t logicalChannel;
uint8_t beaconOrder;
uint8_t superFrameOrder;
bool_t panCoordinator;
bool_t batteryLifeExt;
bool_t coordRealignment;
bool_t securityEnable;
} mlmeStartReq_t;
// Type: gMlmeSyncReq_c,
typedef struct mlmeSyncReq_tag {
uint8_t logicalChannel;
bool_t trackBeacon;
} mlmeSyncReq_t;
// Type: gMlmePollReq_c,
typedef struct mlmePollReq_tag {
uint8_t coordAddress[8];
uint8_t coordPanId[2];
uint8_t coordAddrMode;
bool_t securityEnable;
} mlmePollReq_t;
// NWK to MLME message
typedef struct mlmeMessage_tag {
primNwkToMlme_t msgType;
union {
mlmeAssociateReq_t associateReq;
mlmeAssociateRes_t associateRes;
mlmeDisassociateReq_t disassociateReq;
mlmeGetReq_t getReq;
mlmeGtsReq_t gtsReq;
mlmeOrphanRes_t orphanRes;
mlmeResetReq_t resetReq;
mlmeRxEnableReq_t rxEnableReq;
mlmeScanReq_t scanReq;
mlmeSetReq_t setReq;
mlmeStartReq_t startReq;
mlmeSyncReq_t syncReq;
mlmePollReq_t pollReq;
} msgData;
} mlmeMessage_t;
//-----------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------
// Primitives in the NWK to MCPS direction
//-----------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------
// Primitives in the NWK to MAC direction. All should be included no matter which
// features are implemented as the primitives are used to interface to Nwk.
enum {
gMcpsDataReq_c,
gMcpsPurgeReq_c,
gNwkToMcpsMaxPrimitives_c
};
typedef uint8_t primNwkToMcps_t;
// Type: gMcpsDataReq_c,
typedef struct mcpsDataReq_tag {
uint8_t dstAddr[8]; // First 0/2/8 bytes is the address as defined by dstAddrMode
uint8_t dstPanId[2]; // 16 bit word converted to little endian byte array
uint8_t dstAddrMode;
uint8_t srcAddr[8]; // First 0/2/8 bytes is the address as defined by srcAddrMode
uint8_t srcPanId[2]; // 16 bit word converted to little endian byte array
uint8_t srcAddrMode;
uint8_t msduLength; // 0-102
uint8_t msduHandle;
uint8_t txOptions;
uint8_t *pMsdu; // Data will start at this address
} mcpsDataReq_t;
// Type: gMcpsPurgeReq_c,
typedef struct mcpsPurgeReq_tag {
uint8_t msduHandle;
} mcpsPurgeReq_t;
// NWK to MCPS message
typedef struct nwkToMcpsMessage_tag {
primNwkToMcps_t msgType;
union {
mcpsDataReq_t dataReq;
mcpsPurgeReq_t purgeReq;
void * dummyAlign; // Used for alignment with mlmeGenericMsg_t
} msgData;
} nwkToMcpsMessage_t;
/************************************************************************************
*************************************************************************************
* Public functions
*************************************************************************************
************************************************************************************/
/************************************************************************************
* MAC main function. Must be called by the NWK loop until it returns FALSE. The
* function will examine the MAC input queues, and handle incoming/outgoing
* MAC/MCPS messages.
*
* Interface assumptions:
* None
*
* Return value:
* TRUE if there are more messages for the Mlme_Main function process.
* FALSE otherwise.
*
* Revision history:
* date Author Comments
* ------ ------ --------
* 170204 BPPED1 Created
*
************************************************************************************/
#if gSchedulerIntegration_d
void Mlme_Main(event_t event);
#else
bool_t Mlme_Main(void);
#endif /* gSchedulerIntegration_d */
/************************************************************************************
* NWK to MLME service access point provided by the MAC.
*
* Interface assumptions:
* pMsg must be allocated by MSG_Alloc(size) unless the primitive in question
* is Get/Set/Reset-Request.
*
* Return value:
* Standard error code
*
* Revision history:
* date Author Comments
* ------ ------ --------
* 170204 BPPED1 Created
*
************************************************************************************/
uint8_t NWK_MLME_SapHandler(mlmeMessage_t *pMsg);
/************************************************************************************
* NWK to MCPS service access point provided by the MAC.
*
* Interface assumptions:
* pMsg must be allocated by MSG_Alloc(size).
*
* Return value:
* Standard error code
*
* Revision history:
* date Author Comments
* ------ ------ --------
* 170204 BPPED1 Created
*
************************************************************************************/
uint8_t NWK_MCPS_SapHandler(nwkToMcpsMessage_t *pMsg);
/************************************************************************************
* MLME to NWK service access point provided by the NWK/Application.
*
* Interface assumptions:
* pMsg must be deallocated by MSG_Free(pMsg).
*
* Return value:
* Standard error code
*
* Revision history:
* date Author Comments
* ------ ------ --------
* 170204 BPPED1 Created
*
************************************************************************************/
uint8_t MLME_NWK_SapHandler(nwkMessage_t *pMsg);
/************************************************************************************
* MCPS to NWK service access point provided by the NWK/Application.
*
* Interface assumptions:
* pMsg must be deallocated by MSG_Free(pMsg).
*
* Return value:
* Standard error code
*
* Revision history:
* date Author Comments
* ------ ------ --------
* 170204 BPPED1 Created
*
************************************************************************************/
uint8_t MCPS_NWK_SapHandler(mcpsToNwkMessage_t *pMsg);
#endif /* _NWK_MAC_INTERFACE_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -