This file contains TAL API function declarations.
Copyright (c) 2013-2018 Microchip Technology Inc. and its subsidiaries.
#include <stdint.h>
#include <stdbool.h>
#include "pal.h"
#include "tal_config.h"
#include "tal_generic.h"
#include "bmm.h"
#include "stack_config.h"
#include "return_val.h"
#include "tal_types.h"
#include "mac_build_config.h"
#include "qmm.h"
Data Structures | |
struct | frame_info_tag |
Globally used frame information structure. More... | |
struct | tal_pib_tag |
Macros | |
#define | BAND_2400 (1) |
2.4 GHz (channels 11 through 26) More... | |
#define | BAND_900 (0) |
868 / 910 MHz (channels 0 through 10) using BPSK More... | |
#define | BAND_MULTIPLE (2) |
450 / 900 MHz and 2.4 GHz - Multiple band support More... | |
#define | mac_i_pan_coordinator (0x0B) |
Attribute id of mac_i_pan_coordinator PIB. More... | |
#define | MAX_CHANNEL (26) |
Maximum channel. More... | |
#define | MAX_FRAME_DURATION |
Maximum number of symbols in a frame for the current PHY. More... | |
#define | MAX_SYMBOL_TIME (0x0FFFFFFF) |
The maximum time in symbols for a 32 bit timer. More... | |
#define | MIN_CHANNEL (11) |
Minimum channel. More... | |
#define | NO_OF_SYMBOLS_PREAMBLE_SFD |
Number of symbols forming the synchronization header (SHR) for the current PHY. More... | |
#define | NO_SYMBOLS_PREAMBLE (8) |
Number of symbols included in the preamble. More... | |
#define | NO_SYMBOLS_SFD (2) |
Number of symbols included in the SFD field. More... | |
#define | NUM_TRX 1 |
#define | RF_BAND BAND_2400 |
RF band. More... | |
#define | SYMBOL_MASK (0x0FFFFFFF) |
Symbol mask for ignoring most significant nibble. More... | |
#define | SYMBOLS_PER_OCTET (2) |
Symbols per octet. More... | |
#define | TAL_BIT_MASK(ADDR, MASK, POS) MASK |
Get bit mask from sub register definition. More... | |
#define | TAL_BIT_POS(ADDR, MASK, POS) POS |
Get bit position from sub register definition. More... | |
#define | TAL_CONVERT_SYMBOLS_TO_US(symbols) |
Conversion of symbols to microseconds. More... | |
#define | TAL_CONVERT_US_TO_SYMBOLS(time) ((time) >> 4) |
Conversion of microseconds to symbols. More... | |
#define | TAL_GET_BEACON_INTERVAL_TIME(BO) ((1UL * aBaseSuperframeDuration) << (BO)) |
Beacon Interval time in symbols. More... | |
#define | TAL_GET_SUPERFRAME_DURATION_TIME(SO) ((1UL * aBaseSuperframeDuration) << (SO)) |
Superframe Duration time in symbols. More... | |
#define | VALID_CHANNEL_MASK (0x07FFF800UL) |
Valid channel masks for scanning. More... | |
Typedefs | |
typedef enum csma_mode_tag | csma_mode_t |
CSMA Mode supported by transceiver. More... | |
typedef struct frame_info_tag | frame_info_t |
Globally used frame information structure. More... | |
typedef enum sleep_mode_tag | sleep_mode_t |
Sleep Mode supported by transceiver. More... | |
typedef __PACK__DATA__ struct tal_pib_tag | tal_pib_t |
Enumerations | |
enum | csma_mode_tag { NO_CSMA_NO_IFS, NO_CSMA_WITH_IFS, CSMA_UNSLOTTED, CSMA_SLOTTED } |
CSMA Mode supported by transceiver. More... | |
enum | SHORTENUM { ASSOCIATIONREQUEST = (0x01), ASSOCIATIONRESPONSE, DISASSOCIATIONNOTIFICATION, DATAREQUEST, PANIDCONFLICTNOTIFICAION, ORPHANNOTIFICATION, BEACONREQUEST, COORDINATORREALIGNMENT, GTSREQUEST, ORPHANREALIGNMENT, BEACON_MESSAGE, DATAREQUEST_IMPL_POLL, NULL_FRAME, MCPS_MESSAGE } |
MAC Message types. More... | |
enum | sleep_mode_tag { SLEEP_MODE_1 } |
Sleep Mode supported by transceiver. More... | |
Functions | |
static uint32_t | tal_add_time_symbols (uint32_t a, uint32_t b) |
Adds two time values. More... | |
void | tal_generate_rand_seed (void) |
Generates a 16-bit random number used as initial seed for srand() More... | |
retval_t | tal_init (void) |
Initializes the TAL. More... | |
retval_t | tal_pib_get (uint8_t attribute, uint8_t *value) |
Gets a TAL PIB attribute. More... | |
retval_t | tal_pib_set (uint8_t attribute, pib_value_t *value) |
Sets a TAL PIB attribute. More... | |
retval_t | tal_reset (bool set_default_pib) |
Resets TAL state machine and sets the default PIB values if requested. More... | |
uint8_t | tal_rx_enable (uint8_t state) |
Switches receiver on or off. More... | |
void | tal_rx_frame_cb (frame_info_t *rx_frame) |
User call back function for frame reception. More... | |
static uint32_t | tal_sub_time_symbols (uint32_t a, uint32_t b) |
Subtract two time values. More... | |
void | tal_task (void) |
TAL task handling. More... | |
retval_t | tal_trx_sleep (sleep_mode_t mode) |
Sets the transceiver to sleep. More... | |
retval_t | tal_trx_wakeup (void) |
Wakes up the transceiver from sleep. More... | |
retval_t | tal_tx_frame (frame_info_t *tx_frame, csma_mode_t csma_mode, bool perform_frame_retry) |
Requests to TAL to transmit frame. More... | |
void | tal_tx_frame_done_cb (retval_t status, frame_info_t *frame) |
User call back function for frame transmission. More... | |
Variables | |
tal_pib_t | tal_pib |
#define BAND_2400 (1) |
2.4 GHz (channels 11 through 26)
#define BAND_900 (0) |
868 / 910 MHz (channels 0 through 10) using BPSK
#define BAND_MULTIPLE (2) |
450 / 900 MHz and 2.4 GHz - Multiple band support
#define mac_i_pan_coordinator (0x0B) |
Attribute id of mac_i_pan_coordinator PIB.
Referenced by mlme_start_request(), tal_pib_get(), and tal_pib_set().
#define MAX_CHANNEL (26) |
Maximum channel.
Referenced by per_mode_initiator_ed_end_cb(), and start_ed_scan().
#define MAX_FRAME_DURATION |
Maximum number of symbols in a frame for the current PHY.
This value is the base for the PHY PIB attribute phyMaxFrameDuration.
Referenced by apply_channel_page_configuration(), and recalc_macMaxFrameTotalWaitTime().
#define MAX_SYMBOL_TIME (0x0FFFFFFF) |
The maximum time in symbols for a 32 bit timer.
Referenced by tal_sub_time_symbols().
#define MIN_CHANNEL (11) |
Minimum channel.
Referenced by per_mode_initiator_ed_end_cb(), and start_ed_scan().
#define NO_OF_SYMBOLS_PREAMBLE_SFD |
Number of symbols forming the synchronization header (SHR) for the current PHY.
This value is the base for the PHY PIB attribute phySHRDuration.
Referenced by apply_channel_page_configuration().
#define NO_SYMBOLS_PREAMBLE (8) |
Number of symbols included in the preamble.
#define NO_SYMBOLS_SFD (2) |
Number of symbols included in the SFD field.
#define NUM_TRX 1 |
#define RF_BAND BAND_2400 |
RF band.
#define SYMBOL_MASK (0x0FFFFFFF) |
Symbol mask for ignoring most significant nibble.
Referenced by tal_add_time_symbols(), and tal_sub_time_symbols().
#define SYMBOLS_PER_OCTET (2) |
Symbols per octet.
Referenced by apply_channel_page_configuration(), calc_frame_transmit_duration(), calculate_transaction_duration(), and tx_done_handling().
#define TAL_BIT_MASK | ( | ADDR, | |
MASK, | |||
POS | |||
) | MASK |
Get bit mask from sub register definition.
#define TAL_BIT_POS | ( | ADDR, | |
MASK, | |||
POS | |||
) | POS |
Get bit position from sub register definition.
#define TAL_CONVERT_SYMBOLS_TO_US | ( | symbols | ) |
Conversion of symbols to microseconds.
Referenced by csma_backoff_calculation(), handle_gts_data_req(), mac_process_tal_tx_status(), mac_t_gts_cb(), perform_cca_twice(), process_data_ind_not_transient(), send_frame(), start_beacon_loss_timer(), start_ed_scan(), tal_convert_symbols_to_us_def(), tfa_cca_perform(), tfa_ed_sample(), and tx_done_handling().
#define TAL_CONVERT_US_TO_SYMBOLS | ( | time | ) | ((time) >> 4) |
Conversion of microseconds to symbols.
Referenced by check_beacon_reception(), csma_backoff_calculation(), process_data_ind_not_transient(), process_incoming_frame(), tal_convert_us_to_symbols_def(), and tal_tx_frame().
#define TAL_GET_BEACON_INTERVAL_TIME | ( | BO | ) | ((1UL * aBaseSuperframeDuration) << (BO)) |
Beacon Interval time in symbols.
Referenced by check_beacon_reception(), process_data_ind_not_transient(), start_beacon_loss_timer(), and tal_tx_frame().
#define TAL_GET_SUPERFRAME_DURATION_TIME | ( | SO | ) | ((1UL * aBaseSuperframeDuration) << (SO)) |
Superframe Duration time in symbols.
Referenced by csma_backoff_calculation(), handle_gts_data_req(), mac_t_gts_cb(), and process_data_ind_not_transient().
#define VALID_CHANNEL_MASK (0x07FFF800UL) |
Valid channel masks for scanning.
typedef enum csma_mode_tag csma_mode_t |
CSMA Mode supported by transceiver.
typedef struct frame_info_tag frame_info_t |
Globally used frame information structure.
typedef enum sleep_mode_tag sleep_mode_t |
Sleep Mode supported by transceiver.
typedef __PACK__DATA__ struct tal_pib_tag tal_pib_t |
enum csma_mode_tag |
enum SHORTENUM |
enum sleep_mode_tag |
|
inlinestatic |
Adds two time values.
This function adds two time values
a | Time value 1 |
b | Time value 2 |
References SYMBOL_MASK.
Referenced by check_beacon_reception(), csma_backoff_calculation(), process_data_ind_not_transient(), and tal_tx_frame().
uint8_t tal_rx_enable | ( | uint8_t | state | ) |
Switches receiver on or off.
This function switches the receiver on (PHY_RX_ON) or off (PHY_TRX_OFF).
state | New state of receiver |
References CMD_RX_AACK_ON, CMD_RX_ON, CMD_TRX_OFF, NULL, PHY_TRX_OFF, RX_ON, set_trx_state(), TAL_BUSY, TAL_IDLE, tal_pib, tal_rx_buffer, tal_rx_on_required, TAL_SLOTTED_CSMA, tal_state, and TRX_OFF.
Referenced by mac_soft_reset(), mlme_set(), mlme_start_request(), process_data_ind_not_transient(), and wait_for_event_init().
|
inlinestatic |
Subtract two time values.
This function subtracts two time values taking care of roll over.
a | Time value 1 |
b | Time value 2 |
References MAX_SYMBOL_TIME, and SYMBOL_MASK.
Referenced by csma_backoff_calculation(), process_data_ind_not_transient(), and tal_tx_frame().
void tal_task | ( | void | ) |
TAL task handling.
This function
References Assert, CMD_RX_AACK_ON, CMD_RX_ON, NULL, process_incoming_frame(), set_trx_state(), slotted_csma_state_handling(), TAL_IDLE, tal_incoming_frame_queue, tal_pib, tal_rx_buffer, tal_rx_on_required, TAL_SLOTTED_CSMA, tal_state, TAL_TX_AUTO, TAL_TX_DONE, and tx_done_handling().
Referenced by performance_analyzer_task(), and wpan_task().
retval_t tal_trx_sleep | ( | sleep_mode_t | mode | ) |
Sets the transceiver to sleep.
This function sets the transceiver to sleep state.
mode | Defines sleep mode of transceiver SLEEP or PHY_TRX_OFF) |
References CMD_DEEP_SLEEP, CMD_SLEEP, CMD_TRX_OFF, MAC_INVALID_PARAMETER, MAC_SUCCESS, mode, pal_timer_source_select(), pal_timer_stop(), set_trx_state(), SLEEP_MODE_1, stb_restart(), TAL_BUSY, TAL_IDLE, tal_rx_on_required, tal_state, TAL_TRX_ASLEEP, tal_trx_status, TMR_CLK_SRC_DURING_TRX_SLEEP, TRX_DEEP_SLEEP, TRX_OFF, and TRX_SLEEP.
Referenced by mac_trx_init_sleep(), mlme_set(), toggle_trx_sleep(), and trx_config().
retval_t tal_trx_wakeup | ( | void | ) |
Wakes up the transceiver from sleep.
This function awakes the transceiver from sleep state.
References Assert, CMD_TRX_OFF, FAILURE, FUNC_PTR, MAC_SUCCESS, NULL, pal_timer_source_select(), pal_timer_start(), set_trx_state(), TAL_TRX_AWAKE, tal_trx_status, TIMEOUT_RELATIVE, TMR_CLK_SRC_DURING_TRX_AWAKE, TRX_DEEP_SLEEP, TRX_OFF, and TRX_SLEEP.
Referenced by mac_trx_wakeup(), mlme_set(), stb_ccm_secure(), tal_pib_set(), toggle_trx_sleep(), and trx_config().
retval_t tal_tx_frame | ( | frame_info_t * | tx_frame, |
csma_mode_t | csma_mode, | ||
bool | perform_frame_retry | ||
) |
Requests to TAL to transmit frame.
This function is called by the MAC to deliver a frame to the TAL to be transmitted by the transceiver.
tx_frame | Pointer to the frame_info_t structure or to frame array to be transmitted |
csma_mode | Indicates mode of csma-ca to be performed for this frame |
perform_frame_retry | Indicates whether to retries are to be performed for this frame |
References aUnitBackoffPeriod, calculate_transaction_duration(), CSMA_SLOTTED, last_frame_length, MAC_CHANNEL_ACCESS_FAILURE, mac_frame_ptr, MAC_INVALID_PARAMETER, MAC_SUCCESS, frame_info_tag::mpdu, NO_CSMA_WITH_IFS, NON_BEACON_NWK, NULL, pal_get_current_time(), send_frame(), slotted_csma_start(), tal_add_time_symbols(), TAL_BUSY, TAL_CONVERT_US_TO_SYMBOLS, tal_frame_to_tx, TAL_GET_BEACON_INTERVAL_TIME, TAL_IDLE, tal_pib, tal_state, tal_sub_time_symbols(), and transaction_duration_periods.
Referenced by mac_tx_gts_data(), mcps_data_request(), mlme_gts_request(), per_mode_initiator_task(), per_mode_receptor_task(), range_test_timer_handler_cb(), and transmit_frame().
tal_pib_t tal_pib |
Referenced by apply_channel_page_configuration(), build_data_frame(), check_beacon_reception(), configure_frame_sending(), configure_pibs(), configure_pkt_stream_frames(), configure_range_test_frame_sending(), csma_backoff_calculation(), csma_param_init(), get_board_details(), get_node_info(), handle_gts_data_req(), handle_gts_sync_loss(), handle_received_frame_irq(), init_tal_pib(), limit_tx_pwr(), mac_coord_realignment_command_tx_success(), mac_gts_allocate(), mac_parse_bcn_gts_info(), mac_process_tal_data_ind(), mac_sleep_trans(), mac_t_gts_cb(), mcps_data_request(), mlme_get(), mlme_gts_request(), mlme_start_request(), parse_mpdu(), process_data_ind_not_transient(), process_incoming_frame(), recalc_macMaxFrameTotalWaitTime(), reset_gts_expiry(), send_frame(), send_peer_conf(), set_default_tx_pwr(), slotted_csma_start(), slotted_csma_state_handling(), start_beacon_loss_timer(), start_ed_scan(), tal_get_rssi_base_val(), tal_init(), tal_pib_get(), tal_pib_set(), tal_rx_enable(), tal_task(), tal_tx_frame(), tfa_continuous_tx_start(), tfa_pib_set(), transmit_frame(), tx_done_handling(), validate_tx_power(), and write_all_tal_pib_to_trx().