Mistake on this page?
Report an issue in GitHub or email us
Public Member Functions | Protected Member Functions
LoRaPHY Class Reference

LoRaPHY Class Parent class for LoRa regional PHY implementations. More...

#include <LoRaPHY.h>

Inheritance diagram for LoRaPHY:
NonCopyable< LoRaPHY >

Public Member Functions

void initialize (LoRaWANTimeHandler *lora_time)
 Initialize LoRaPHY. More...
 
void set_radio_instance (LoRaRadio &radio)
 Stores a reference to Radio object. More...
 
void put_radio_to_sleep (void)
 Puts radio in sleep mode. More...
 
void put_radio_to_standby (void)
 Puts radio in standby mode. More...
 
void handle_receive (void)
 Puts radio in receive mode. More...
 
void handle_send (uint8_t *buf, uint8_t size)
 Delegates MAC layer request to transmit packet. More...
 
void setup_public_network_mode (bool set)
 Enables/Disables public network mode. More...
 
uint32_t get_radio_rng ()
 Provides a random number from radio. More...
 
void calculate_backoff (bool joined, bool last_tx_was_join_req, bool dc_enabled, uint8_t channel, lorawan_time_t elapsed_time, lorawan_time_t tx_toa)
 calculate_backoff Calculates and applies duty cycle back-off time. More...
 
bool mask_bit_test (const uint16_t *mask, unsigned bit)
 Tests if a channel is on or off in the channel mask. More...
 
void mask_bit_set (uint16_t *mask, unsigned bit)
 Tests if a channel is on or off in the channel mask. More...
 
void mask_bit_clear (uint16_t *mask, unsigned bit)
 Tests if a channel is on or off in the channel mask. More...
 
virtual uint8_t request_new_channel (int8_t channel_id, channel_params_t *new_channel)
 Entertain a new channel request MAC command. More...
 
virtual void set_last_tx_done (uint8_t channel, bool joined, lorawan_time_t last_tx_done_time)
 Process PHY layer state after a successful transmission. More...
 
virtual void restore_default_channels ()
 Enables default channels only. More...
 
virtual void apply_cf_list (const uint8_t *payload, uint8_t size)
 Processes the incoming CF-list. More...
 
bool get_next_ADR (bool restore_channel_mask, int8_t &dr_out, int8_t &tx_power_out, uint32_t &adr_ack_counter)
 Calculates the next datarate to set, when ADR is on or off. More...
 
virtual bool rx_config (rx_config_params_t *config)
 Configure radio reception. More...
 
virtual void compute_rx_win_params (int8_t datarate, uint8_t min_rx_symbols, uint32_t rx_error, rx_config_params_t *rx_conf_params)
 Computing Receive Windows. More...
 
virtual bool tx_config (tx_config_params_t *tx_config, int8_t *tx_power, lorawan_time_t *tx_toa)
 Configure radio transmission. More...
 
virtual uint8_t link_ADR_request (adr_req_params_t *params, int8_t *dr_out, int8_t *tx_power_out, uint8_t *nb_rep_out, uint8_t *nb_bytes_parsed)
 Processes a Link ADR Request. More...
 
virtual uint8_t accept_rx_param_setup_req (rx_param_setup_req_t *params)
 Accept or rejects RxParamSetupReq MAC command. More...
 
virtual bool accept_tx_param_setup_req (uint8_t ul_dwell_time, uint8_t dl_dwell_time)
 accept_tx_param_setup_req Makes decision whether to accept or reject TxParamSetupReq MAC command. More...
 
virtual uint8_t dl_channel_request (uint8_t channel_id, uint32_t rx1_frequency)
 Processes a DlChannelReq MAC command. More...
 
virtual int8_t get_alternate_DR (uint8_t nb_trials)
 Alternates the datarate of the channel for the join request. More...
 
virtual lorawan_status_t set_next_channel (channel_selection_params_t *nextChanParams, uint8_t *channel, lorawan_time_t *time, lorawan_time_t *aggregatedTimeOff)
 Searches and sets the next available channel. More...
 
virtual lorawan_status_t add_channel (const channel_params_t *new_channel, uint8_t id)
 Adds a channel to the channel list. More...
 
virtual bool remove_channel (uint8_t channel_id)
 Removes a channel from the channel list. More...
 
virtual void set_tx_cont_mode (cw_mode_params_t *continuous_wave, uint32_t frequency=0)
 Puts the radio into continuous wave mode. More...
 
virtual uint8_t apply_DR_offset (int8_t dr, int8_t dr_offset)
 Computes new data rate according to the given offset. More...
 
void reset_to_default_values (loramac_protocol_params *params, bool init=false)
 reset_to_default_values resets some parameters to default values More...
 
int8_t get_next_lower_tx_datarate (int8_t datarate)
 get_next_lower_tx_datarate Gets the next lower datarate More...
 
uint8_t get_minimum_rx_datarate ()
 get_minimum_rx_datarate Gets the minimum RX datarate supported by a device More...
 
uint8_t get_minimum_tx_datarate ()
 get_minimum_tx_datarate Gets the minimum TX datarate supported by a device More...
 
uint8_t get_default_tx_datarate ()
 get_default_tx_datarate Gets the default TX datarate More...
 
uint8_t get_default_max_tx_datarate ()
 get_default_max_tx_datarate Gets the maximum achievable data rate for LoRa modulation. More...
 
uint8_t get_default_tx_power ()
 get_default_tx_power Gets the default TX power More...
 
uint8_t get_max_payload (uint8_t datarate, bool use_repeater=false)
 get_max_payload Gets maximum amount in bytes which device can send More...
 
uint16_t get_maximum_frame_counter_gap ()
 get_maximum_frame_counter_gap Gets maximum frame counter gap More...
 
uint32_t get_ack_timeout ()
 get_ack_timeout Gets timeout value for ACK to be received More...
 
uint32_t get_default_rx2_frequency ()
 get_default_rx2_frequency Gets default RX2 frequency More...
 
uint8_t get_default_rx2_datarate ()
 get_default_rx2_datarate Gets default RX2 datarate More...
 
uint16_t * get_channel_mask (bool get_default=false)
 get_channel_mask Gets the channel mask More...
 
uint8_t get_max_nb_channels ()
 get_max_nb_channels Gets maximum number of channels supported More...
 
channel_params_tget_phy_channels ()
 get_phy_channels Gets PHY channels More...
 
bool is_custom_channel_plan_supported ()
 is_custom_channel_plan_supported Checks if custom channel plan is supported More...
 
uint32_t get_rx_time_on_air (uint8_t modem, uint16_t pkt_len)
 get_rx_time_on_air(...) calculates the time the received spent on air More...
 
bool verify_rx_datarate (uint8_t datarate)
 verify_rx_datarate Verifies that given RX datarate is valid More...
 
bool verify_tx_datarate (uint8_t datarate, bool use_default=false)
 verify_tx_datarate Verifies that given TX datarate is valid More...
 
bool verify_tx_power (uint8_t tx_power)
 verify_tx_power Verifies that given TX power is valid More...
 
bool verify_duty_cycle (bool cycle)
 verify_duty_cycle Verifies that given cycle is valid More...
 
bool verify_nb_join_trials (uint8_t nb_join_trials)
 verify_nb_join_trials Verifies that given number of trials is valid More...
 

Protected Member Functions

int lookup_band_for_frequency (uint32_t freq) const
 Looks up corresponding band for a frequency. More...
 
virtual bool verify_frequency_for_band (uint32_t freq, uint8_t band) const
 Verifies, if a frequency is within a given band. More...
 
bool val_in_range (int8_t value, int8_t min, int8_t max)
 Verifies, if a value is in a given range. More...
 
bool verify_channel_DR (uint16_t *channelsMask, int8_t dr)
 Verifies, if a datarate is available on an active channel. More...
 
bool disable_channel (uint16_t *channel_mask, uint8_t id, uint8_t max_channels)
 Disables a channel in a given channels mask. More...
 
uint8_t count_bits (uint16_t mask, uint8_t nb_bits)
 Counts number of bits on in a given mask. More...
 
uint8_t num_active_channels (uint16_t *channel_mask, uint8_t start_idx, uint8_t stop_idx)
 Counts the number of active channels in a given channels mask. More...
 
void copy_channel_mask (uint16_t *dest_mask, uint16_t *src_mask, uint8_t len)
 Copy channel masks. More...
 
lorawan_time_t update_band_timeoff (bool joined, bool dutyCycle, band_t *bands, uint8_t nb_bands)
 Updates the time-offs of the bands. More...
 
uint8_t parse_link_ADR_req (const uint8_t *payload, uint8_t payload_size, link_adr_params_t *adr_params)
 Parses the parameter of an LinkAdrRequest. More...
 
uint8_t verify_link_ADR_req (verify_adr_params_t *verify_params, int8_t *dr, int8_t *tx_pow, uint8_t *nb_rep)
 Verifies and updates the datarate, the TX power and the number of repetitions of a LinkAdrRequest. More...
 
void get_rx_window_params (float t_symbol, uint8_t min_rx_symbols, float rx_error, float wakeup_time, uint32_t *window_length, uint32_t *window_length_ms, int32_t *window_offset, uint8_t phy_dr)
 Computes the RX window timeout and the RX window offset. More...
 
int8_t compute_tx_power (int8_t txPowerIndex, float maxEirp, float antennaGain)
 Computes the txPower, based on the max EIRP and the antenna gain. More...
 
int32_t get_random (int32_t min, int32_t max)
 Provides a random number in the range provided. More...
 
int8_t get_next_lower_dr (int8_t dr, int8_t min_dr)
 Get next lower data rate. More...
 
uint8_t get_bandwidth (uint8_t dr_index)
 Get channel bandwidth depending upon data rate table index. More...
 

Detailed Description

LoRaPHY Class Parent class for LoRa regional PHY implementations.

Definition at line 46 of file LoRaPHY.h.

Member Function Documentation

virtual uint8_t accept_rx_param_setup_req ( rx_param_setup_req_t params)
virtual

Accept or rejects RxParamSetupReq MAC command.

The function processes a RX parameter setup request in response to server MAC command for RX setup.

Parameters
[in]paramsA pointer to rx parameter setup request.
Returns
The status of the operation, according to the LoRaWAN specification.
virtual bool accept_tx_param_setup_req ( uint8_t  ul_dwell_time,
uint8_t  dl_dwell_time 
)
virtual

accept_tx_param_setup_req Makes decision whether to accept or reject TxParamSetupReq MAC command.

Parameters
ul_dwell_timeThe uplink dwell time.
dl_dwell_timeThe downlink dwell time.
Returns
True to let the MAC know that the request is accepted and MAC can apply TX parameters received form Network Server. Otherwise false is returned.
virtual lorawan_status_t add_channel ( const channel_params_t new_channel,
uint8_t  id 
)
virtual

Adds a channel to the channel list.

Verifies the channel parameters and if everything is found legitimate, adds that particular channel to the channel list and updates the channel mask.

Parameters
[in]new_channelA pointer to the parameters for the new channel.
[in]idChannel ID
Returns
LORAWAN_STATUS_OK if everything goes fine, negative error code otherwise.
virtual void apply_cf_list ( const uint8_t *  payload,
uint8_t  size 
)
virtual

Processes the incoming CF-list.

Handles the payload containing CF-list and enables channels defined therein.

Parameters
payloadPayload to process.
sizeSize of the payload.
virtual uint8_t apply_DR_offset ( int8_t  dr,
int8_t  dr_offset 
)
virtual

Computes new data rate according to the given offset.

Parameters
[in]drThe current datarate.
[in]dr_offsetThe offset to be applied.
Returns
The computed datarate.
void calculate_backoff ( bool  joined,
bool  last_tx_was_join_req,
bool  dc_enabled,
uint8_t  channel,
lorawan_time_t  elapsed_time,
lorawan_time_t  tx_toa 
)

calculate_backoff Calculates and applies duty cycle back-off time.

Explicitly updates the band time-off.

Parameters
joinedSet to true, if the node has already joined a network, otherwise false.
last_tx_was_join_reqSet to true, if the last uplink was a join request.
dc_enabledSet to true, if the duty cycle is enabled, otherwise false.
channelThe current channel index.
elapsed_timeElapsed time since the start of the node.
tx_toaTime-on-air of the last transmission.
virtual void compute_rx_win_params ( int8_t  datarate,
uint8_t  min_rx_symbols,
uint32_t  rx_error,
rx_config_params_t rx_conf_params 
)
virtual

Computing Receive Windows.

The algorithm tries to calculate the length of receive windows (i.e., the minimum time it should remain to acquire a lock on the Preamble for synchronization) and the error offset which compensates for the system timing errors. Basic idea behind the algorithm is to optimize for the reception of last 'min_rx_symbols' symbols out of transmitted Premable symbols. The algorithm compensates for the clock drifts, tick granularity and system wake up time (from sleep state) by opening the window early for the lower SFs. For higher SFs, the symbol time is large enough that we can afford to open late (hence the positive offset). The table below shows the calculated values for SF7 to SF12 with 125 kHz bandwidth.

+-—+–—+----——+---——+-------------------——+----------------——+-------------------——+ | SF | BW (kHz) | rx_error (ms) | wake_up (ms) | min_rx_symbols | window_timeout(symb) | window_offset(ms) | +-—+–—+----——+---——+-------------------——+----------------——+-------------------——+ | 7 | 125 | 5 | 5 | 5 | 18 | -7 | | 8 | 125 | 5 | 5 | 5 | 10 | -4 | | 9 | 125 | 5 | 5 | 5 | 6 | 2 | | 10 | 125 | 5 | 5 | 5 | 6 | 14 | | 11 | 125 | 5 | 5 | 5 | 6 | 39 | | 12 | 125 | 5 | 5 | 5 | 6 | 88 | +-—+–—+----——+---——+-------------------——+----------------——+-------------------——+

For example for SF7, the receive window will open at downlink start time plus the offset calculated and will remain open for the length window_timeout.

        Symbol time = 1.024 ms
        Downlink start: T = Tx + 1s (+/- 20 us)
                          |
                          |
                          |
                          |
                          |
                          +---+---+---+---+---+---+---+---+
                          |       8 Preamble Symbols      |
                          +---+---+---+---+---+---+---+---+

| RX Window start time = T +/- Offset +—+—+—+—+—+—+—+—+—+—+—+—+—+—+—+—+—+—+ | | | | | | | | | | | | | | | | | | | +—+—+—+—+—+—+—+—+—+—+—+—+—+—+—+—+—+—+

Similarly for SF12:

        Symbol time = 32.768 ms
        Downlink start: T = Tx + 1s (+/- 20 us)
           |
           |
           |
           |
           |
           +---+---+---+---+---+---+---+---+
           |       8 Preamble Symbols      |
           +---+---+---+---+---+---+---+---+
                      | RX Window start time = T +/- Offset
                      +---+---+---+---+---+---+
                      |   |   |   |   |   |   |
                      +---+---+---+---+---+---+

Computes the RX window timeout and offset.

Parameters
[in]datarateThe RX window datarate index to be used.
[in]min_rx_symbolsThe minimum number of symbols required to detect an RX frame.
[in]rx_errorThe maximum timing error of the receiver in milliseconds. The receiver will turn on in a [-rxError : +rxError] ms interval around RxOffset.
[out]rx_conf_paramsPointer to the structure that needs to be filled with receive window parameters.
int8_t compute_tx_power ( int8_t  txPowerIndex,
float  maxEirp,
float  antennaGain 
)
protected

Computes the txPower, based on the max EIRP and the antenna gain.

void copy_channel_mask ( uint16_t *  dest_mask,
uint16_t *  src_mask,
uint8_t  len 
)
protected

Copy channel masks.

uint8_t count_bits ( uint16_t  mask,
uint8_t  nb_bits 
)
protected

Counts number of bits on in a given mask.

bool disable_channel ( uint16_t *  channel_mask,
uint8_t  id,
uint8_t  max_channels 
)
protected

Disables a channel in a given channels mask.

virtual uint8_t dl_channel_request ( uint8_t  channel_id,
uint32_t  rx1_frequency 
)
virtual

Processes a DlChannelReq MAC command.

Parameters
channel_idThe channel ID to add the frequency.
rx1_frequencyThe alternative frequency for the Rx1 window.
Returns
The status of the operation, according to the LoRaWAN specification.
uint32_t get_ack_timeout ( )

get_ack_timeout Gets timeout value for ACK to be received

Returns
ACK timeout
virtual int8_t get_alternate_DR ( uint8_t  nb_trials)
virtual

Alternates the datarate of the channel for the join request.

Parameters
nb_trialsNumber of trials to be made on one given data rate.
Returns
The datarate to apply .
uint8_t get_bandwidth ( uint8_t  dr_index)
protected

Get channel bandwidth depending upon data rate table index.

uint16_t* get_channel_mask ( bool  get_default = false)

get_channel_mask Gets the channel mask

Parameters
get_defaultIf true the default mask is returned, otherwise the current mask is returned
Returns
A channel mask
uint8_t get_default_max_tx_datarate ( )

get_default_max_tx_datarate Gets the maximum achievable data rate for LoRa modulation.

This will always be the highest data rate achievable with LoRa as defined in the regional specifications.

Returns
Maximum achievable data rate with LoRa modulation.
uint8_t get_default_rx2_datarate ( )

get_default_rx2_datarate Gets default RX2 datarate

Returns
RX2 datarate
uint32_t get_default_rx2_frequency ( )

get_default_rx2_frequency Gets default RX2 frequency

Returns
RX2 frequency
uint8_t get_default_tx_datarate ( )

get_default_tx_datarate Gets the default TX datarate

Returns
default TX datarate
uint8_t get_default_tx_power ( )

get_default_tx_power Gets the default TX power

Returns
Default TX power
uint8_t get_max_nb_channels ( )

get_max_nb_channels Gets maximum number of channels supported

Returns
Number of channels
uint8_t get_max_payload ( uint8_t  datarate,
bool  use_repeater = false 
)

get_max_payload Gets maximum amount in bytes which device can send

Parameters
datarateA datarate to use
use_repeaterIf true repeater table is used, otherwise payloads table is used
Returns
Maximum number of bytes for payload
uint16_t get_maximum_frame_counter_gap ( )

get_maximum_frame_counter_gap Gets maximum frame counter gap

Returns
Maximum frame counter gap
uint8_t get_minimum_rx_datarate ( )

get_minimum_rx_datarate Gets the minimum RX datarate supported by a device

Returns
Minimum RX datarate
uint8_t get_minimum_tx_datarate ( )

get_minimum_tx_datarate Gets the minimum TX datarate supported by a device

Returns
Minimum TX datarate
bool get_next_ADR ( bool  restore_channel_mask,
int8_t &  dr_out,
int8_t &  tx_power_out,
uint32_t &  adr_ack_counter 
)

Calculates the next datarate to set, when ADR is on or off.

Parameters
restore_channel_maskA boolean set restore channel mask in case of failure.
dr_outThe calculated datarate for the next TX.
tx_power_outThe TX power for the next TX.
adr_ack_counterThe calculated ADR acknowledgement counter.
Returns
True, if an ADR request should be performed.
int8_t get_next_lower_dr ( int8_t  dr,
int8_t  min_dr 
)
protected

Get next lower data rate.

int8_t get_next_lower_tx_datarate ( int8_t  datarate)

get_next_lower_tx_datarate Gets the next lower datarate

Parameters
datarateCurrent TX datarate
Returns
Lower datarate than given one or minimum if lower cannot be found anymore
channel_params_t* get_phy_channels ( )

get_phy_channels Gets PHY channels

Returns
PHY channels
uint32_t get_radio_rng ( )

Provides a random number from radio.

Returns a 32-bit random unsigned integer value based upon RSSI measurements.

Returns
a 32-bit long random number
int32_t get_random ( int32_t  min,
int32_t  max 
)
protected

Provides a random number in the range provided.

uint32_t get_rx_time_on_air ( uint8_t  modem,
uint16_t  pkt_len 
)

get_rx_time_on_air(...) calculates the time the received spent on air

Returns
time spent on air in milliseconds
void get_rx_window_params ( float  t_symbol,
uint8_t  min_rx_symbols,
float  rx_error,
float  wakeup_time,
uint32_t *  window_length,
uint32_t *  window_length_ms,
int32_t *  window_offset,
uint8_t  phy_dr 
)
protected

Computes the RX window timeout and the RX window offset.

void handle_receive ( void  )

Puts radio in receive mode.

Requests the radio driver to enter receive mode.

void handle_send ( uint8_t *  buf,
uint8_t  size 
)

Delegates MAC layer request to transmit packet.

Parameters
bufa pointer to the data which needs to be transmitted
sizesize of the data in bytes
void initialize ( LoRaWANTimeHandler lora_time)

Initialize LoRaPHY.

LoRaMac calls this to initialize LoRaPHY.

Parameters
lora_timea pointer to LoRaWANTimeHandler object
bool is_custom_channel_plan_supported ( )

is_custom_channel_plan_supported Checks if custom channel plan is supported

Returns
True if custom channel plan is supported, false otherwise
virtual uint8_t link_ADR_request ( adr_req_params_t params,
int8_t *  dr_out,
int8_t *  tx_power_out,
uint8_t *  nb_rep_out,
uint8_t *  nb_bytes_parsed 
)
virtual

Processes a Link ADR Request.

Parameters
[in]paramsA pointer ADR request parameters.
[out]dr_outThe datarate applied.
[out]tx_power_outThe TX power applied.
[out]nb_rep_outThe number of repetitions to apply.
[out]nb_bytes_parsedThe number of bytes parsed.
Returns
The status of the operation, according to the LoRaMAC specification.
int lookup_band_for_frequency ( uint32_t  freq) const
protected

Looks up corresponding band for a frequency.

Returns -1 if not in any band.

void mask_bit_clear ( uint16_t *  mask,
unsigned  bit 
)

Tests if a channel is on or off in the channel mask.

void mask_bit_set ( uint16_t *  mask,
unsigned  bit 
)

Tests if a channel is on or off in the channel mask.

bool mask_bit_test ( const uint16_t *  mask,
unsigned  bit 
)

Tests if a channel is on or off in the channel mask.

uint8_t num_active_channels ( uint16_t *  channel_mask,
uint8_t  start_idx,
uint8_t  stop_idx 
)
protected

Counts the number of active channels in a given channels mask.

uint8_t parse_link_ADR_req ( const uint8_t *  payload,
uint8_t  payload_size,
link_adr_params_t adr_params 
)
protected

Parses the parameter of an LinkAdrRequest.

void put_radio_to_sleep ( void  )

Puts radio in sleep mode.

Requests the radio driver to enter sleep mode.

void put_radio_to_standby ( void  )

Puts radio in standby mode.

Requests the radio driver to enter standby mode.

virtual bool remove_channel ( uint8_t  channel_id)
virtual

Removes a channel from the channel list.

Parameters
[in]channel_idIndex of the channel to be removed
Returns
True, if the channel was removed successfully.
virtual uint8_t request_new_channel ( int8_t  channel_id,
channel_params_t new_channel 
)
virtual

Entertain a new channel request MAC command.

MAC command subsystem processes the new channel request coming form the network server and then MAC layer asks the PHY layer to entertain the request.

Parameters
channel_idThe channel ID.
new_channelA pointer to the new channel's parameters.
Returns
bit mask, according to the LoRaWAN spec 1.0.2.
void reset_to_default_values ( loramac_protocol_params params,
bool  init = false 
)

reset_to_default_values resets some parameters to default values

Parameters
paramsPointer to MAC protocol parameters which will be reset
initIf true, most of the values will be modified
virtual void restore_default_channels ( )
virtual

Enables default channels only.

Falls back to a channel mask where only default channels are enabled, all other channels are disabled.

virtual bool rx_config ( rx_config_params_t config)
virtual

Configure radio reception.

Parameters
[in]configA pointer to the RX configuration.
Returns
True, if the configuration was applied successfully.
virtual void set_last_tx_done ( uint8_t  channel,
bool  joined,
lorawan_time_t  last_tx_done_time 
)
virtual

Process PHY layer state after a successful transmission.

set_last_tx_done Updates times of the last transmission for the particular channel and band upon which last transmission took place.

Parameters
channelThe channel in use.
joinedBoolean telling if node has joined the network.
last_tx_done_timeThe last TX done time.
virtual lorawan_status_t set_next_channel ( channel_selection_params_t nextChanParams,
uint8_t *  channel,
lorawan_time_t time,
lorawan_time_t aggregatedTimeOff 
)
virtual

Searches and sets the next available channel.

If there are multiple channels found available, one of them is selected randomly.

Parameters
[in]nextChanParamsParameters for the next channel.
[out]channelThe next channel to use for TX.
[out]timeThe time to wait for the next transmission according to the duty cycle.
[out]aggregatedTimeOffUpdates the aggregated time off.
Returns
Function status [1: OK, 0: Unable to find a channel on the current datarate].
void set_radio_instance ( LoRaRadio radio)

Stores a reference to Radio object.

Application is responsible for constructing a 'LoRaRadio' object which is passed down to the PHY layer.

Parameters
radioa reference to radio driver object
virtual void set_tx_cont_mode ( cw_mode_params_t continuous_wave,
uint32_t  frequency = 0 
)
virtual

Puts the radio into continuous wave mode.

Parameters
[in]continuous_waveA pointer to the function parameters.
[in]frequencyFrequency to transmit at
void setup_public_network_mode ( bool  set)

Enables/Disables public network mode.

Public and private LoRaWAN network constitute different preambles and Net IDs. This API isused to tell the radio which network mode is in use.

Parameters
settrue or false
virtual bool tx_config ( tx_config_params_t tx_config,
int8_t *  tx_power,
lorawan_time_t tx_toa 
)
virtual

Configure radio transmission.

Parameters
[in]tx_configStructure containing tx parameters.
[out]tx_powerThe TX power which will be set.
[out]tx_toaThe time-on-air of the frame.
Returns
True, if the configuration was applied successfully.
lorawan_time_t update_band_timeoff ( bool  joined,
bool  dutyCycle,
band_t bands,
uint8_t  nb_bands 
)
protected

Updates the time-offs of the bands.

bool val_in_range ( int8_t  value,
int8_t  min,
int8_t  max 
)
protected

Verifies, if a value is in a given range.

bool verify_channel_DR ( uint16_t *  channelsMask,
int8_t  dr 
)
protected

Verifies, if a datarate is available on an active channel.

bool verify_duty_cycle ( bool  cycle)

verify_duty_cycle Verifies that given cycle is valid

Parameters
cycleCycle to check
Returns
True if valid, false otherwise
virtual bool verify_frequency_for_band ( uint32_t  freq,
uint8_t  band 
) const
protectedvirtual

Verifies, if a frequency is within a given band.

uint8_t verify_link_ADR_req ( verify_adr_params_t verify_params,
int8_t *  dr,
int8_t *  tx_pow,
uint8_t *  nb_rep 
)
protected

Verifies and updates the datarate, the TX power and the number of repetitions of a LinkAdrRequest.

bool verify_nb_join_trials ( uint8_t  nb_join_trials)

verify_nb_join_trials Verifies that given number of trials is valid

Parameters
nb_join_trialsNumber to check
Returns
True if valid, false otherwise
bool verify_rx_datarate ( uint8_t  datarate)

verify_rx_datarate Verifies that given RX datarate is valid

Parameters
datarateDatarate to check
Returns
true if given datarate is valid, false otherwise
bool verify_tx_datarate ( uint8_t  datarate,
bool  use_default = false 
)

verify_tx_datarate Verifies that given TX datarate is valid

Parameters
datarateDatarate to check
use_defaultIf true validation is done against default value
Returns
true if given datarate is valid, false otherwise
bool verify_tx_power ( uint8_t  tx_power)

verify_tx_power Verifies that given TX power is valid

Parameters
tx_powerPower to check
Returns
True if valid, false otherwise
Important Information for this Arm website

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies. If you are not happy with the use of these cookies, please review our Cookie Policy to learn how they can be disabled. By disabling cookies, some features of the site will not work.