#include <stdint.h>
#include <stdbool.h>
#include "pal.h"
#include "tal_config.h"
#include "bmm.h"
#include "stack_config.h"
#include "return_val.h"
#include "tal_types.h"
#include "mac_build_config.h"
Data Structures | |
struct | frame_info_tag |
Globally used frame information structure. More... | |
union | pib_value_t |
PIB attribute value type. More... | |
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 | mac_i_pan_coordinator (0x0B) |
Attribute id of mac_i_pan_coordinator PIB. More... | |
#define | MAX_FRAME_DURATION (NO_OF_SYMBOLS_PREAMBLE_SFD + (aMaxPHYPacketSize + 1) * SYMBOLS_PER_OCTET) |
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 | NO_OF_SYMBOLS_PREAMBLE_SFD (NO_SYMBOLS_PREAMBLE + NO_SYMBOLS_SFD) |
Number of symbols forming the synchronization header (SHR) for the current PHY. More... | |
#define | NO_SYMBOLS_PREAMBLE (8) |
#define | NO_SYMBOLS_SFD (2) |
#define | RF_BAND BAND_2400 |
#define | SYMBOL_MASK (0x0FFFFFFF) |
Symbol mask for ingnoring most significant nibble. More... | |
#define | SYMBOLS_PER_OCTET (2) |
4 bits form one symbol since O-QPSK is used More... | |
#define | TAL_CONVERT_SYMBOLS_TO_US(symbols) ((uint32_t)(symbols) << 4) |
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... | |
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... | |
Functions | |
static uint32_t | tal_add_time_symbols (uint32_t a, uint32_t b) |
Adds two time values. More... | |
void | tal_ed_end_cb (uint8_t energy_level) |
User call back function for finished ED Scan. More... | |
retval_t | tal_ed_start (uint8_t scan_duration) |
Starts ED Scan. 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... | |
void | tal_tx_beacon (frame_info_t *tx_frame) |
Beacon frame transmission. 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 | |
bool | tal_pib_BattLifeExt |
Indication of whether battery life extension is enabled or not. More... | |
uint8_t | tal_pib_BeaconOrder |
Beacon order. More... | |
uint32_t | tal_pib_BeaconTxTime |
Holds the time at which last beacon was transmitted or received. More... | |
uint8_t | tal_pib_CCAMode |
CCA Mode. More... | |
uint8_t | tal_pib_CurrentChannel |
Current RF channel to be used for all transmissions and receptions. More... | |
uint8_t | tal_pib_CurrentPage |
Current channel page. More... | |
uint64_t | tal_pib_IeeeAddress |
64-bit (IEEE) address of the node. More... | |
uint8_t | tal_pib_MaxBE |
The maximum value of the backoff exponent BE in the CSMA-CA algorithm. More... | |
uint8_t | tal_pib_MaxCSMABackoffs |
The maximum number of back-offs the CSMA-CA algorithm will attempt before declaring a CSMA_CA failure. More... | |
uint16_t | tal_pib_MaxFrameDuration |
Maximum number of symbols in a frame: = phySHRDuration + ceiling([aMaxPHYPacketSize + 1] x phySymbolsPerOctet) More... | |
uint8_t | tal_pib_MaxFrameRetries |
The maximum number of retries allowed after a transmission failure. More... | |
uint8_t | tal_pib_MinBE |
The minimum value of the backoff exponent BE in the CSMA-CA algorithm. More... | |
uint16_t | tal_pib_PANId |
16-bit PAN ID More... | |
bool | tal_pib_PrivatePanCoordinator |
Indicates if the node is a PAN coordinator or not. More... | |
uint16_t | tal_pib_ShortAddress |
16-bit short address of the node. More... | |
uint8_t | tal_pib_SHRDuration |
Duration of the synchronization header (SHR) in symbols for the current PHY. More... | |
uint8_t | tal_pib_SuperFrameOrder |
Superframe order. More... | |
uint32_t | tal_pib_SupportedChannels |
Supported channels. More... | |
uint8_t | tal_pib_SymbolsPerOctet |
Number of symbols per octet for the current PHY. More... | |
uint8_t | tal_pib_TransmitPower |
Default value of transmit power of transceiver using IEEE defined format of phyTransmitPower. More... | |
#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 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_FRAME_DURATION (NO_OF_SYMBOLS_PREAMBLE_SFD + (aMaxPHYPacketSize + 1) * SYMBOLS_PER_OCTET) |
Maximum number of symbols in a frame for the current PHY.
This value is the base for the PHY PIB attribute phyMaxFrameDuration.
Referenced by recalc_macMaxFrameTotalWaitTime().
#define MAX_SYMBOL_TIME (0x0FFFFFFF) |
The maximum time in symbols for a 32 bit timer.
Referenced by tal_sub_time_symbols().
#define NO_OF_SYMBOLS_PREAMBLE_SFD (NO_SYMBOLS_PREAMBLE + NO_SYMBOLS_SFD) |
Number of symbols forming the synchronization header (SHR) for the current PHY.
This value is the base for the PHY PIB attribute phySHRDuration.
#define NO_SYMBOLS_PREAMBLE (8) |
#define NO_SYMBOLS_SFD (2) |
#define RF_BAND BAND_2400 |
#define SYMBOL_MASK (0x0FFFFFFF) |
Symbol mask for ingnoring most significant nibble.
Referenced by tal_add_time_symbols(), and tal_sub_time_symbols().
#define SYMBOLS_PER_OCTET (2) |
4 bits form one symbol since O-QPSK is used
Referenced by tx_done_handling().
#define TAL_CONVERT_SYMBOLS_TO_US | ( | symbols | ) | ((uint32_t)(symbols) << 4) |
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().
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.
enum csma_mode_tag |
enum SHORTENUM |
MAC Message types.
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().
retval_t tal_ed_start | ( | uint8_t | scan_duration | ) |
Starts ED Scan.
This function starts an ED Scan for the scan duration specified by the MAC layer.
scan_duration | Specifies the ED scan duration in symbols |
Referenced by per_mode_initiator_ed_end_cb(), and start_ed_scan().
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 |
|
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
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) |
retval_t tal_trx_wakeup | ( | void | ) |
Wakes up the transceiver from sleep.
This function awakes the transceiver from sleep state.
void tal_tx_beacon | ( | frame_info_t * | tx_frame | ) |
Beacon frame transmission.
tx_frame | Pointer to the frame_info_t structure |
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 |
bool tal_pib_BattLifeExt |
Indication of whether battery life extension is enabled or not.
uint8_t tal_pib_BeaconOrder |
Beacon order.
uint32_t tal_pib_BeaconTxTime |
Holds the time at which last beacon was transmitted or received.
uint8_t tal_pib_CCAMode |
CCA Mode.
uint8_t tal_pib_CurrentChannel |
Current RF channel to be used for all transmissions and receptions.
uint8_t tal_pib_CurrentPage |
Current channel page.
uint64_t tal_pib_IeeeAddress |
64-bit (IEEE) address of the node.
Referenced by main().
uint8_t tal_pib_MaxBE |
The maximum value of the backoff exponent BE in the CSMA-CA algorithm.
uint8_t tal_pib_MaxCSMABackoffs |
The maximum number of back-offs the CSMA-CA algorithm will attempt before declaring a CSMA_CA failure.
uint16_t tal_pib_MaxFrameDuration |
Maximum number of symbols in a frame: = phySHRDuration + ceiling([aMaxPHYPacketSize + 1] x phySymbolsPerOctet)
uint8_t tal_pib_MaxFrameRetries |
The maximum number of retries allowed after a transmission failure.
uint8_t tal_pib_MinBE |
The minimum value of the backoff exponent BE in the CSMA-CA algorithm.
uint16_t tal_pib_PANId |
16-bit PAN ID
bool tal_pib_PrivatePanCoordinator |
Indicates if the node is a PAN coordinator or not.
uint16_t tal_pib_ShortAddress |
16-bit short address of the node.
uint8_t tal_pib_SHRDuration |
Duration of the synchronization header (SHR) in symbols for the current PHY.
uint8_t tal_pib_SuperFrameOrder |
Superframe order.
uint32_t tal_pib_SupportedChannels |
Supported channels.
uint8_t tal_pib_SymbolsPerOctet |
Number of symbols per octet for the current PHY.
uint8_t tal_pib_TransmitPower |
Default value of transmit power of transceiver using IEEE defined format of phyTransmitPower.