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

📄 mac_tx_engine.h

📁 zigbee location examples
💻 H
字号:
/*******************************************************************************************************
 *                                                                                                     *
 *        **********                                                                                   *
 *       ************                                                                                  *
 *      ***        ***                                                                                 *
 *      ***   +++   ***                                                                                *
 *      ***   + +   ***                                                                                *
 *      ***   +                         CHIPCON CC2430 INTEGRATED 802.15.4 MAC AND PHY                 *
 *      ***   + +   ***                                   TX Engine                                    *
 *      ***   +++   ***                                                                                *
 *      ***        ***                                                                                 *
 *       ************                                                                                  *
 *        **********                                                                                   *
 *                                                                                                     *
 *******************************************************************************************************
 * CONFIDENTIAL                                                                                        *
 * The use of this file is restricted by the signed MAC software license agreement.                    *
 *                                                                                                     *
 * Copyright Chipcon AS, 2005                                                                          *
 *******************************************************************************************************
 * This module contains the MAC TX engine, which is used to transmit all RF packets.                   *
 *******************************************************************************************************/
#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 */


#define MTX_START_CSP_DELAY             2    // Backoff periods
//-------------------------------------------------------------------------------------------------------




/*******************************************************************************************************
 *******************************************************************************************************
 **************************                  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_PROCESS_SECURITY          1
#define MTX_STATE_RETRY_TRANSMISSION        2
#define MTX_STATE_PREPARE_STARTUP           3
#define MTX_STATE_SWITCHED_TO_UNSLOTTED     4
#define MTX_STATE_WAIT                      5

// mtxStartTransmission
#define MTX_STATE_PREPARE_PACKET            0
#define MTX_STATE_START_TRANSMISSION        1

// 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
#define MTX_STATUS_OUT_OF_CAP               8
#define MTX_STATUS_WAITING_FOR_ACK          9
#define MTX_STATUS_WAIT_FOR_NEXT_BEACON     10
//-------------------------------------------------------------------------------------------------------




/*******************************************************************************************************
 *******************************************************************************************************
 **************************                   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
    BYTE status;

    // Variables used when the CSMA-CA mechanism is resumed after the beacon
    BOOL waitForBeacon;
    BOOL beaconSearchEnabled;
    BOOL beaconSearchTimeout;

    BOOL searchForBeacon; // The TX engine has initiated a search for the beacon
    BYTE  randomBackoff;
    UINT8 cspTimeout;
    BOOL  beaconTransmissionInProgress;

    // A permanently reserved task used to start the transmission (mtxStartTransmission(...))
    UINT8 startTxTask;

} MAC_TX_INFO;
extern MAC_TX_INFO mtxInfo;
//-------------------------------------------------------------------------------------------------------




/*******************************************************************************************************
 *******************************************************************************************************
 **************************               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, BOOL securityEnable, BYTE addrMode,
                                WORD panId, ADDRESS   *pAddr);
UINT8 msecProcessSecurityCounters(MAC_TX_PACKET   *pPacket, BYTE   *pPayload);
//-------------------------------------------------------------------------------------------------------


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

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

// Startup time
ROOT void mtxCreateStartTask(void);
UINT8 mtxCalcCspTimeout(void);

// Timeout
void mtxAckTimeout(void) ;

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

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

// RF interrupt handlers
ROOT void mtxCspStopped(BOOL txStarted);
ROOT void mtxTxDone (void);
//-------------------------------------------------------------------------------------------------------


#endif

⌨️ 快捷键说明

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