Transmits data using Slotted CSMA/CA mechanism.
|
enum | csma_state_tag {
CSMA_IDLE = 0,
BACKOFF_WAITING_FOR_CCA_TIMER,
BACKOFF_WAITING_FOR_BEACON,
CSMA_ACCESS_FAILURE,
FRAME_SENDING,
TX_DONE_SUCCESS,
TX_DONE_FRAME_PENDING,
TX_DONE_NO_ACK,
NO_BEACON_TRACKING,
CSMA_HANDLE_BEACON,
CSMA_IDLE = 0,
BACKOFF_WAITING_FOR_CCA_TIMER,
BACKOFF_WAITING_FOR_BEACON,
CSMA_ACCESS_FAILURE,
FRAME_SENDING,
TX_DONE_SUCCESS,
TX_DONE_FRAME_PENDING,
TX_DONE_NO_ACK,
NO_BEACON_TRACKING,
CSMA_HANDLE_BEACON
} |
|
#define ACK_FRAME_LEN (0x05) |
#define CCA_GUARD_DURATION_US |
#define CONVERT_OCTETS_TO_SYM |
( |
|
octets | ) |
(2 * octets) |
#define CSMA_BEACON_LOSS_GUARD_TIME_US (2000) |
#define PRE_BEACON_GUARD_TIME_US (1000) |
Enumerator |
---|
CSMA_IDLE |
|
BACKOFF_WAITING_FOR_CCA_TIMER |
|
BACKOFF_WAITING_FOR_BEACON |
|
CSMA_ACCESS_FAILURE |
|
FRAME_SENDING |
|
TX_DONE_SUCCESS |
|
TX_DONE_FRAME_PENDING |
|
TX_DONE_NO_ACK |
|
NO_BEACON_TRACKING |
|
CSMA_HANDLE_BEACON |
|
CSMA_IDLE |
|
BACKOFF_WAITING_FOR_CCA_TIMER |
|
BACKOFF_WAITING_FOR_BEACON |
|
CSMA_ACCESS_FAILURE |
|
FRAME_SENDING |
|
TX_DONE_SUCCESS |
|
TX_DONE_FRAME_PENDING |
|
TX_DONE_NO_ACK |
|
NO_BEACON_TRACKING |
|
CSMA_HANDLE_BEACON |
|
static void beacon_loss_timer_cb |
( |
void * |
parameter | ) |
|
|
static |
static void calculate_transaction_duration |
( |
void |
| ) |
|
|
static |
Calculates the entire transaction duration.
References ACK_FRAME_LEN, aMaxSIFSFrameSize, aTurnaroundTime, aUnitBackoffPeriod, CONVERT_OCTETS_TO_SYM, FCF_ACK_REQUEST, mac_frame_ptr, macMinLIFSPeriod_def, macMinSIFSPeriod_def, frame_info_tag::mpdu, PHY_OVERHEAD, PL_POS_FCF_1, tal_frame_to_tx, and transaction_duration_periods.
Referenced by slotted_csma_start(), and tal_tx_frame().
static void cca_timer_handler_cb |
( |
void * |
parameter | ) |
|
|
static |
static bool check_beacon_reception |
( |
void |
| ) |
|
|
static |
static void csma_backoff_calculation |
( |
void |
| ) |
|
|
static |
Calculates backoff duration and handles the start of the CCA.
References Assert, aUnitBackoffPeriod, BACKOFF_WAITING_FOR_BEACON, BACKOFF_WAITING_FOR_CCA_TIMER, BE, CCA_GUARD_DURATION_US, CCA_PREPARATION_DURATION_US, cca_starttime_us, cca_timer_handler_cb(), CSMA_ACCESS_FAILURE, FUNC_PTR, MAC_SUCCESS, NB, NULL, pal_add_time_us(), pal_get_current_time(), pal_sub_time_us(), pal_timer_start(), PAL_TMR_INVALID_TIMEOUT, PIN_BACKOFF_START, PRE_BEACON_GUARD_TIME_US, remaining_backoff_periods, SLEEP_TO_TRX_OFF_TYP_US, start_beacon_loss_timer(), tal_add_time_symbols(), TAL_CONVERT_SYMBOLS_TO_US, TAL_CONVERT_US_TO_SYMBOLS, TAL_CSMA_CCA, tal_csma_state, TAL_GET_SUPERFRAME_DURATION_TIME, tal_pib, TAL_RADIO_WAKEUP_TIME_SYM, tal_sub_time_symbols(), TIMEOUT_ABSOLUTE, and transaction_duration_periods.
Referenced by slotted_csma_start(), and slotted_csma_state_handling().
static void csma_param_init |
( |
void |
| ) |
|
|
inlinestatic |
static uint8_t perform_cca_twice |
( |
void |
| ) |
|
|
static |
Performs CCA twice.
References Assert, aUnitBackoffPeriod, CCA_CH_IDLE, CCA_COMPLETED, CCA_DURATION_SYM, CCA_PRE_START_DURATION_US, CCA_PREPARATION_DURATION_US, CCA_START, cca_starttime_us, CMD_PLL_ON, CMD_RX_AACK_ON, CMD_RX_ON, CMD_TRX_OFF, pal_add_time_us(), pal_get_current_time(), pal_timer_delay(), PHY_BUSY, PHY_IDLE, PIN_CCA_END, PIN_CCA_START, PLL_ON, RG_IRQ_STATUS, RX_DISABLE, RX_ENABLE, set_trx_state(), SLEEP_TO_TRX_OFF_TYP_US, SR_CCA_DONE, SR_CCA_REQUEST, SR_CCA_STATUS, SR_RX_PDT_DIS, TAL_CONVERT_SYMBOLS_TO_US, tal_trx_status, trx_bit_read, trx_bit_write, TRX_OFF_TO_PLL_ON_TIME_US, trx_reg_write, and TRX_SLEEP.
Referenced by cca_timer_handler_cb().
static void send_frame_at_next_backoff_boundary |
( |
void |
| ) |
|
|
static |
static void start_beacon_loss_timer |
( |
void |
| ) |
|
|
static |
Starts the beacon loss timer.
References aMaxLostBeacons, Assert, beacon_loss_timer_cb(), CSMA_BEACON_LOSS_GUARD_TIME_US, FUNC_PTR, MAC_SUCCESS, NULL, pal_timer_start(), PAL_TMR_ALREADY_RUNNING, PAL_TMR_INVALID_TIMEOUT, PIN_BEACON_LOSS_TIMER_START, TAL_CONVERT_SYMBOLS_TO_US, TAL_CSMA_BEACON_LOSS_TIMER, TAL_GET_BEACON_INTERVAL_TIME, tal_pib, and TIMEOUT_RELATIVE.
Referenced by csma_backoff_calculation().
Finalizes the CSMA procedure.
- Parameters
-
status | Result of the slotted transmission |
References Assert, CSMA_IDLE, mac_frame_ptr, pal_is_timer_running(), PIN_CSMA_END, TAL_CSMA_BEACON_LOSS_TIMER, tal_csma_state, TAL_IDLE, TAL_SLOTTED_CSMA, tal_state, and tal_tx_frame_done_cb().
Referenced by slotted_csma_state_handling().
uint32_t cca_starttime_us |
|
static |
uint8_t number_of_tx_retries |
|
static |
uint8_t remaining_backoff_periods |
|
static |
uint8_t transaction_duration_periods |
|
static |