Microchip® Advanced Software Framework

tal.c File Reference

Copyright (c) 2013-2018 Microchip Technology Inc.

and its subsidiaries.

#include <stdint.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdlib.h>
#include "pal.h"
#include "return_val.h"
#include "tal.h"
#include "ieee_const.h"
#include "tal_pib.h"
#include "tal_irq_handler.h"
#include "at86rf232.h"
#include "stack_config.h"
#include "bmm.h"
#include "qmm.h"
#include "tal_rx.h"
#include "tal_tx.h"
#include "tal_constants.h"
#include "tal_internal.h"
#include "mac_build_config.h"

Macros

#define PLL_LOCK_ATTEMPTS   (3)
 

Functions

tal_trx_status_t set_trx_state (trx_cmd_t trx_cmd)
 Sets transceiver state. More...
 
static void switch_pll_on (void)
 Switches the PLL on. More...
 
void tal_task (void)
 TAL task handling. More...
 

Variables

uint8_t last_frame_length
 
frame_info_tmac_frame_ptr
 Frame pointer for the frame structure provided by the MCL. More...
 
volatile bool tal_awake_end_flag
 
uint8_t * tal_frame_to_tx
 Pointer to the 15.4 frame created by the TAL to be handed over to the transceiver. More...
 
queue_t tal_incoming_frame_queue
 Queue that contains all frames that are uploaded from the trx, but have not be processed by the MCL yet. More...
 
tal_pib_t tal_pib
 
buffer_ttal_rx_buffer = NULL
 Pointer to receive buffer that can be used to upload a frame from the trx. More...
 
bool tal_rx_on_required
 Indicates if the transceiver needs to switch on its receiver by tal_task(), because it could not be switched on due to buffer shortage. More...
 
tal_state_t tal_state
 Current state of the TAL state machine. More...
 
tal_trx_status_t tal_trx_status
 Current state of the transceiver. More...
 

#define PLL_LOCK_ATTEMPTS   (3)

void tal_task ( void  )

TAL task handling.

This function

  • Checks and allocates the receive buffer.
  • Processes the TAL incoming frame queue.
  • Implements the TAL state machine.

References Assert, bmm_buffer_alloc(), CMD_RX_AACK_ON, CMD_RX_ON, ed_scan_done(), LARGE_BUFFER_SIZE, process_incoming_frame(), qmm_queue_remove(), set_trx_state(), queue_tag::size, TAL_ED_DONE, TAL_ED_RUNNING, TAL_IDLE, tal_pib, tal_rx_on_required, tal_state, TAL_TX_AUTO, TAL_TX_DONE, and tx_done_handling().

Referenced by performance_analyzer_task().

uint8_t last_frame_length
frame_info_t* mac_frame_ptr

Frame pointer for the frame structure provided by the MCL.

Referenced by handle_tx_end_irq(), tal_tx_frame(), and tx_done_handling().

volatile bool tal_awake_end_flag
uint8_t* tal_frame_to_tx

Pointer to the 15.4 frame created by the TAL to be handed over to the transceiver.

Referenced by send_frame(), tal_tx_frame(), and tx_done_handling().

queue_t tal_incoming_frame_queue

Queue that contains all frames that are uploaded from the trx, but have not be processed by the MCL yet.

Referenced by handle_received_frame_irq(), tal_init(), and tal_reset().

buffer_t* tal_rx_buffer = NULL

Pointer to receive buffer that can be used to upload a frame from the trx.

Referenced by handle_received_frame_irq(), handle_tx_end_irq(), tal_init(), tal_pib_set(), and tal_rx_enable().

bool tal_rx_on_required

Indicates if the transceiver needs to switch on its receiver by tal_task(), because it could not be switched on due to buffer shortage.

Referenced by handle_received_frame_irq(), handle_tx_end_irq(), internal_tal_reset(), tal_pib_set(), tal_rx_enable(), tal_task(), and tal_trx_sleep().