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

📄 mac_tx_engine.h

📁 ucos在NEC平台下的移植
💻 H
字号:
#ifndef MAC_TX_ENGINE_H
#define MAC_TX_ENGINE_H
/*******************************************************************************************************
 *******************************************************************************************************
 **************************               CONSTANTS AND MACROS                **************************
 *******************************************************************************************************
 *******************************************************************************************************/


//-------------------------------------------------------------------------------------------------------
// Bits to be used with MAC_TX_PACKET.txMode
#define MTX_MODE_USE_CSMACA_BM          0x01 /* Transmitted using CSMA-CA */
#define MTX_MODE_FORCE_UNSLOTTED_BM     0x02 /* Force unslotted transmission in a beacon network */
#define MTX_MODE_MAC_INTERNAL_BM        0x04 /* The packet is transmitted by the MAC layer */
#define MTX_MODE_SCAN_RELATED_BM        0x08 /* This packet is related to channel scanning */
//-------------------------------------------------------------------------------------------------------




/*******************************************************************************************************
 *******************************************************************************************************
 **************************                  STATE MACHINES                   **************************
 *******************************************************************************************************
 *******************************************************************************************************/


//-------------------------------------------------------------------------------------------------------
// Return values for csmaSetStartupTime(...)
#define MTX_SST_SUCCESS                     0
#define MTX_SST_RESOURCE_SHORTAGE           1
#define MTX_SST_INDIRECT_PACKET_TOO_LATE    2

// mtxScheduleTransmission
#define MTX_STATE_INIT_TRANSMISSION         0
#define MTX_STATE_INIT_CSMACA               1
#define MTX_STATE_SET_STARTUP_TIME          2
#define MTX_STATE_WAIT                      3

// mtxStartTransmission
#define MTX_STATE_TURN_ON_RX                0
#define MTX_STATE_PREPARE                   1
#define MTX_STATE_CCA                       2
#define MTX_STATE_START_TRANSMISSION        3
                                            
// TX status                                
#define MTX_STATUS_WAITING                  0
#define MTX_STATUS_TRANSMISSION_STARTED     1
#define MTX_STATUS_TX_FINISHED              2
#define MTX_STATUS_CHANNEL_ACCESS_FAILURE   3
#define MTX_STATUS_ACK_TIMEOUT              4
#define MTX_STATUS_ACK_RECEIVED             5
#define MTX_STATUS_ACK_HANDLER_CREATED      6
#define MTX_STATUS_FINISHED                 7
//-------------------------------------------------------------------------------------------------------




/*******************************************************************************************************
 *******************************************************************************************************
 **************************                   MODULE DATA                     **************************
 *******************************************************************************************************
 *******************************************************************************************************/


//-------------------------------------------------------------------------------------------------------
// Internal module data
typedef struct {
    // A pointer to the active packet (this pointer can be used by mcpsPurgeRequest() to check
    // whether or not the packet is in the CSMA-CA mechanism
    MAC_TX_PACKET *pPacket;

    // CSMA-CA "state machine"
    UINT8 be;            // Backoff exponent
    UINT8 nb;            // Number of backoffs
    
    // The status which is reported after the packet has been scheduled
    UINT8 status;
    
    /* Variables used when the CSMA-CA mechanism is resumed after the beacon*/
    ZBOOL waitForBeacon;
    ZBOOL searchForBeacon; // The TX engine has initiated a search for the beacon
    INT8 randomBackoff;
    
    // A permanently reserved task used to start the transmission (mtxStartTransmission(...))
    UINT8 startTxTask;
    
} MAC_TX_INFO;
//-------------------------------------------------------------------------------------------------------




/*******************************************************************************************************
 *******************************************************************************************************
 **************************               FUNCTION PROTOTYPES                 **************************
 *******************************************************************************************************
 *******************************************************************************************************/


//-------------------------------------------------------------------------------------------------------
// msecFindSecurityMaterial and msecProcessSecurityCounters function prototypes. Moved from 
// mac_security.h because of type definition conflicts between these files and function headers
void msecFindTxSecurityMaterial(MAC_TX_PACKET *pPacket, ZBOOL securityEnable, BYTE addrMode, WORD panId, ADDRESS *pAddr);
UINT8 msecProcessSecurityCounters(MAC_TX_PACKET *pPacket, BYTE *pPayload);
//-------------------------------------------------------------------------------------------------------


//-------------------------------------------------------------------------------------------------------
// Entry function
void mtxScheduleTransmission(void *pTask);

void mtxFinishTransmission(MAC_ENUM status, MAC_TX_PACKET *pPacket);
    
// Transmission functions (CCA + TX on + FIFO writing)
void mtxStartTransmission(void *pTask);

// Beacon location (when not tracking in a beacon network)
void mtxLocateBeaconTimeout(void);

// Startup time
void mtxCreateStartTask(void);
ZBOOL mtxStartAfterDelay(UINT8 delay);
BYTE mtxSetStartupTime(void);

// Timeout
void mtxPacketTimeout(void);

// Resume transmission after beacon reception/transmission (out of CAP in the last superframe)
void mtxResumeAfterBeacon(void);
void mtxResumeAfterBeaconCallback(void);
void mtxResumeAfterBeaconTask(void *pTask);

// Generates a properly formatted comm-status indication (for TX) to the higher layer
void mtxCommStatusIndication(MAC_TX_PACKET *pPacket, BYTE status);
//-------------------------------------------------------------------------------------------------------


#endif




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -