Microchip® Advanced Software Framework

2/src/per_mode_initiator.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include "app_init.h"
#include "tfa.h"
#include "tal_internal.h"
#include "tal_helper_2.h"
#include "tal_pib.h"
#include "app_frame_format.h"
#include "sio2host.h"
#include "sio2ncp.h"
#include "perf_api.h"
#include "conf_board.h"
#include "user_interface.h"

Data Structures

struct  set_param_cb_t
 Structure used for updating the parameters after sending them to peer. More...
 

Macros

#define BIT_COUNT   (32)
 
#define CONTINUOUS_TX_MODE   (0x07)
 
#define DEFAULT_FRAME_LENGTH   (20)
 
#define DEFAULT_NO_OF_TEST_FRAMES   (100)
 
#define DISCONNECT_PEER   (0x0C)
 
#define IDENTIFY_PEER   (0x08)
 
#define INVALID_VALUE   (0xff)
 
#define MAX_REG_ADDRESS   (0x3ffe)
 
#define MAX_SCAN_DURATION   (14)
 
#define MICRO_SEC_MULTIPLIER   (1.0 / 1000000)
 
#define MILLI_VOLT_MULTIPLIER   (1.0 / 1000)
 
#define MIN_REG_ADDRESS   (0x0000)
 
#define NO_OF_REGISTERS   (256)
 
#define NO_RX_DESENSITIZE_LEVEL   (0x00)
 
#define PEER_INFO_RSP_WAIT   (0x0B)
 
#define PER_TEST_START   (0x0E)
 
#define PULSE_CW_TX_TIME_IN_MICRO_SEC   (50000)
 
#define RANGE_TEST_START   (0x0F)
 
#define RANGE_TEST_STOP   (0x11)
 
#define RANGE_TEST_TX   (0x10)
 
#define RANGE_TST_PKT_SEQ_POS   (11)
 
#define RANGE_TX_BEACON_INTERVAL   (3000000)
 
#define RANGE_TX_BEACON_START_INTERVAL   (100000)
 
#define RX_DESENSITIZE_LEVEL   (0x08)
 
#define SET_DEFAULT_CONFIG_PEER   (0x0D)
 
#define SET_PARAMETER   (0x04)
 
#define TEST_FRAMES_SENT   (0x02)
 
#define TIMEOUT_FOR_RES_IN_MICRO_SEC_FOR_LDR   (500000)
 
#define TIMEOUT_FOR_RESPONSE_IN_MICRO_SEC   (2000000)
 
#define TIMEOUT_FOR_RESULT_RES_IN_MICRO_SEC   (300000)
 
#define TRX_RESET   (0)
 
#define TX_OP_MODE   (0x01)
 
#define WAIT_FOR_TEST_RES   (0x03)
 

Functions

static float calculate_net_data_rate (trx_id_t trx, float per_test_duration_sec)
 Function to calculate net data rate for the current PER test. More...
 
static float calculate_time_duration (trx_id_t trx)
 Function to Calculate the time taken for PER Test. More...
 
uint8_t check_error_conditions (trx_id_t trx)
 Function to check the error conditions before. More...
 
static void config_ack_request (trx_id_t trx, bool config_value)
 To set or reset ACK request value. More...
 
static void config_csma (trx_id_t trx, bool config_value)
 To configure CSMA Setting in the transceiver. More...
 
static void config_frame_retry (trx_id_t trx, bool config_value)
 To configure frame retry Setting. More...
 
static void config_per_test_parameters (trx_id_t trx)
 Function to set trx configure parameters. More...
 
static void config_rx_desensitization (trx_id_t trx, bool config_value)
 To configure rx desensitization level in the transceiver. More...
 
static void configure_frame_sending (trx_id_t trx)
 To Configure the frame sending. More...
 
static void configure_range_test_frame_sending (trx_id_t trx)
 To Configure the frame sending. More...
 
void disconnect_peer_node (trx_id_t trx)
 Function to request the peer to get disconnected from source node. More...
 
void dump_trx_register_values (trx_id_t trx, uint16_t start_reg_addr, uint16_t end_reg_addr)
 Read a set of registers. More...
 
 FLASH_DECLARE (uint8_t perf_config_param_size[])
 
void get_board_details (trx_id_t trx)
 prints the hardware details More...
 
void get_current_configuration (trx_id_t trx)
 To Get the updated/latest values of all configurable parameters on source and peer node. More...
 
void get_sensor_data (trx_id_t trx)
 To get the Sensor data like Battery voltage. More...
 
void identify_peer_node (trx_id_t trx)
 Identifying peer node. More...
 
void initiate_per_test (trx_id_t trx)
 Initiates the test procedure. More...
 
void initiate_range_test (trx_id_t trx)
 Initiates the Range test procedure. More...
 
void per_mode_initiator_ed_end_cb (trx_id_t trx, uint8_t energy_level)
 User call back function after ED Scan completion. More...
 
void per_mode_initiator_init (trx_id_t trx, void *parameter)
 Initialize the application in PER Measurement mode as Initiator. More...
 
void per_mode_initiator_rx_cb (trx_id_t trx, frame_info_t *frame)
 Callback that is called if data has been received by trx in the PER_FOUND_PER_INITIATOR state. More...
 
void per_mode_initiator_task (trx_id_t trx)
 Application task for PER Measurement mode as initiator. More...
 
void per_mode_initiator_tx_done_cb (trx_id_t trx, retval_t status, frame_info_t *frame)
 Callback that is called once tx is done in the PER_FOUND_PER_INITIATOR state . More...
 
void perf_get_req (trx_id_t trx, uint8_t param_type_data)
 Function to get the various configuration parameters for PER Test. More...
 
void perf_set_req (trx_id_t trx, uint8_t set_param_type, param_value_t *param_value)
 
More...
 
void perf_set_sun_page (trx_id_t trx, uint8_t *param_val)
 
More...
 
static void range_test_timer_handler_rf09_cb (void *parameter)
 This function is called periodically by the range test timer to initiate the transmission of range test packets to the receptor. More...
 
static void range_test_timer_handler_rf24_cb (void *parameter)
 This function is called periodically by the range test timer to initiate the transmission of range test packets to the receptor. More...
 
void read_trx_registers (trx_id_t trx, uint16_t reg_addr)
 Stop sending a CW signal on current channel page. More...
 
static void recover_all_settings (trx_id_t trx)
 Recover all user settings before Start of CW transmission. More...
 
static void save_all_settings (trx_id_t trx)
 Save all user settings before Start of CW transmission. More...
 
static bool send_disconnect_command (trx_id_t trx)
 Function used to send disconnect peer node command. More...
 
static bool send_identify_command (trx_id_t trx)
 Function used to send identify peer node command. More...
 
static void send_parameters_changed (trx_id_t trx, uint8_t param, uint16_t val)
 Function to send the parameters which has been updated to the receptor node. More...
 
static bool send_peer_info_req (trx_id_t trx)
 Function to configure and send the peer node info request. More...
 
static bool send_per_test_start_cmd (trx_id_t trx)
 
static bool send_range_test_marker_rsp (trx_id_t trx)
 Function to send the response packet for the marker sent from the receptor. More...
 
static bool send_range_test_start_cmd (trx_id_t trx)
 Function to send the range test start command to the receptor to start the mode in the receptor. More...
 
static bool send_range_test_stop_cmd (trx_id_t trx)
 Function to send the range test stop command to the receptor to stop the mode in the receptor. More...
 
static bool send_result_req (trx_id_t trx)
 Function used to request PER test result. More...
 
static bool send_set_default_config_command (trx_id_t trx)
 Function used to send set default config peer command. More...
 
static void send_sun_page_changed (trx_id_t trx)
 
static void set_channel_app (trx_id_t trx, uint16_t channel)
 To set the Channel. More...
 
static void set_channel_page (trx_id_t trx, uint8_t channel_page)
 To set the Channel Page. More...
 
void set_default_configuration (trx_id_t trx)
 To set the default values of all configurable parameters on source and peer node. More...
 
static void set_parameter_on_transmitter_node (trx_id_t trx, retval_t status)
 Set the parameters like channel,tx power etc on transmitter node. More...
 
static void set_phy_frame_length (trx_id_t trx, uint16_t frame_len)
 To set PER Test frame length. More...
 
static void set_transceiver_state (trx_id_t trx, uint8_t transceiver_state)
 Set Transceiver state as per the state given. More...
 
static void set_tx_power (trx_id_t trx, uint8_t tx_power_format, int8_t power_value)
 To set the Tx power of the Transceiver. More...
 
void start_ed_scan (trx_id_t trx, uint8_t ed_scan_duration, uint32_t channel_sel_mask)
 To start the ED scan. More...
 
static void start_range_test (trx_id_t trx)
 
static void start_test (trx_id_t trx)
 
static void stop_pulse_cb (void *callback_parameter)
 
void stop_range_test (trx_id_t trx)
 Function to Stop the range Test in PER Mode. More...
 
static void toggle_trx_sleep (trx_id_t trx)
 To toggle between sleep /deep state. More...
 
static void wait_for_reply_timer_handler_cb (void *parameter)
 Wait for reply timer handler is called if any command sent on air times out before any response message is received. More...
 
void write_trx_registers (trx_id_t trx, uint16_t reg_addr, uint8_t reg_val)
 write Transceiver registers More...
 
Functions for User Request Primitives
uint8_t get_param_length (uint8_t parameter_type)
 

Variables

static uint16_t channel_before_scan [NUM_TRX]
 
trx_config_params_t curr_trx_config_params [NUM_TRX]
 
trx_config_params_t default_trx_config_params [NUM_TRX]
 
static uint32_t end_time [NUM_TRX]
 
static uint32_t frame_access_failure [NUM_TRX]
 
static uint32_t frame_failure [NUM_TRX]
 
static uint32_t frame_no_ack [NUM_TRX]
 
static uint32_t frames_to_transmit [NUM_TRX]
 
static uint32_t fw_feature_mask = 0
 This is variable is to keep track of the specific features supported. More...
 
static uint8_t last_tx_power_format_set [NUM_TRX]
 
static uint16_t no_of_roll_overs [NUM_TRX]
 
static uint8_t num_channels [NUM_TRX]
 
static uint8_t op_mode [NUM_TRX] = {TX_OP_MODE, TX_OP_MODE}
 
static bool peer_found [NUM_TRX] = {false, false}
 
static uint32_t range_test_frame_cnt [NUM_TRX] = {0, 0}
 
static bool range_test_in_progress [NUM_TRX] = {false, false}
 
static uint32_t restart_time [NUM_TRX]
 
static uint32_t scan_channel_mask [NUM_TRX]
 
static uint8_t scan_duration [NUM_TRX]
 
static bool scanning [NUM_TRX] = {false, false}
 
static uint8_t seq_num_initiator [NUM_TRX]
 
static set_param_cb_t set_param_cb [NUM_TRX]
 
static uint32_t start_time [NUM_TRX]
 
sun_phy_t sun_page [NUM_TRX]
 
static uint8_t * sun_page_param_val [NUM_TRX]
 
phy_t sun_phy_page_set [NUM_TRX]
 
static bool trx_sleep_status [NUM_TRX] = {false, false}
 

static void wait_for_reply_timer_handler_cb ( void *  parameter)
static

Wait for reply timer handler is called if any command sent on air times out before any response message is received.

This function handles all the scenarios if the remote node is not accessible

Parameters
parameterpass parameters to timer handler

References app_reset(), NO_PEER_FOUND, NUL_VAL, NULL, op_mode, PARAM_CRC_ON_PEER, PEER_INFO_RSP_WAIT, START_MODE_PER, TX_OP_MODE, UNABLE_TO_CONTACT_PEER, usr_per_test_end_indication(), usr_perf_get_confirm(), usr_perf_start_confirm(), and WAIT_FOR_TEST_RES.

Referenced by per_mode_initiator_init(), and per_mode_initiator_task().