Mbed OS Reference
Loading...
Searching...
No Matches
STM32WL_LoRaRadio Class Reference
Inheritance diagram for STM32WL_LoRaRadio:
LoRaRadio

Public Member Functions

virtual void init_radio (radio_events_t *events)
 Registers radio events with the Mbed LoRaWAN stack and undergoes initialization steps if any. More...
 
virtual void radio_reset ()
 Resets the radio module. More...
 
virtual void sleep (void)
 Put the RF module in sleep mode. More...
 
virtual void standby (void)
 Sets the radio in standby mode. More...
 
void set_rx_config (radio_modems_t modem, uint32_t bandwidth, uint32_t datarate, uint8_t coderate, uint32_t bandwidth_afc, uint16_t preamble_len, uint16_t symb_timeout, bool fix_len, uint8_t payload_len, bool crc_on, bool freq_hop_on, uint8_t hop_period, bool iq_inverted, bool rx_continuous) override
 Sets reception parameters. More...
 
virtual void set_tx_config (radio_modems_t modem, int8_t power, uint32_t fdev, uint32_t bandwidth, uint32_t datarate, uint8_t coderate, uint16_t preamble_len, bool fix_len, bool crc_on, bool freq_hop_on, uint8_t hop_period, bool iq_inverted, uint32_t timeout)
 Sets the transmission parameters. More...
 
virtual void send (uint8_t *buffer, uint8_t size)
 Sends the buffer of size. More...
 
virtual void receive (uint32_t timeout)
 For backwards compatibility. More...
 
virtual void receive (void)
 Sets the radio to receive. More...
 
virtual void set_channel (uint32_t freq)
 Sets the carrier frequency. More...
 
virtual uint32_t random (void)
 Generates a 32 bits random value based on the RSSI readings. More...
 
radio_state_t get_status (void) override
 Gets the radio status. More...
 
virtual void set_max_payload_length (radio_modems_t modem, uint8_t max)
 Sets the maximum payload length. More...
 
virtual void set_public_network (bool enable)
 Sets the network to public or private. More...
 
virtual uint32_t time_on_air (radio_modems_t modem, uint8_t pkt_len)
 Computes the packet time on air for the given payload. More...
 
virtual bool perform_carrier_sense (radio_modems_t modem, uint32_t freq, int16_t rssi_threshold, uint32_t max_carrier_sense_time)
 Perform carrier sensing. More...
 
virtual void start_cad (void)
 Sets the radio in CAD mode. More...
 
virtual bool check_rf_frequency (uint32_t frequency)
 Check if the given RF is in range. More...
 
virtual void set_tx_continuous_wave (uint32_t freq, int8_t power, uint16_t time)
 Sets the radio in continuous wave transmission mode. More...
 
virtual void lock (void)
 Acquire exclusive access. More...
 
virtual void unlock (void)
 Release exclusive access. More...
 

Detailed Description

Definition at line 56 of file STM32WL_LoRaRadio.h.

Member Function Documentation

◆ init_radio()

virtual void init_radio ( radio_events_t events)
virtual

Registers radio events with the Mbed LoRaWAN stack and undergoes initialization steps if any.

Parameters
eventsStructure containing the driver callback functions

Implements LoRaRadio.

◆ radio_reset()

virtual void radio_reset ( )
virtual

Resets the radio module.

Implements LoRaRadio.

◆ sleep()

virtual void sleep ( void  )
virtual

Put the RF module in sleep mode.

Implements LoRaRadio.

◆ standby()

virtual void standby ( void  )
virtual

Sets the radio in standby mode.

Implements LoRaRadio.

◆ set_rx_config()

void set_rx_config ( radio_modems_t  modem,
uint32_t  bandwidth,
uint32_t  datarate,
uint8_t  coderate,
uint32_t  bandwidth_afc,
uint16_t  preamble_len,
uint16_t  symb_timeout,
bool  fix_len,
uint8_t  payload_len,
bool  crc_on,
bool  freq_hop_on,
uint8_t  hop_period,
bool  iq_inverted,
bool  rx_continuous 
)
overridevirtual

Sets reception parameters.

Parameters
modemThe radio modem [0: FSK, 1: LoRa].
bandwidthSets the bandwidth. FSK : >= 2600 and <= 250000 Hz LoRa: [0: 125 kHz, 1: 250 kHz, 2: 500 kHz, 3: Reserved]
datarateSets the datarate. FSK : 600..300000 bits/s LoRa: [6: 64, 7: 128, 8: 256, 9: 512, 10: 1024, 11: 2048, 12: 4096 chips]
coderateSets the coding rate (LoRa only). FSK : N/A ( set to 0 ) LoRa: [1: 4/5, 2: 4/6, 3: 4/7, 4: 4/8]
bandwidth_afcSets the AFC bandwidth (FSK only). FSK : >= 2600 and <= 250000 Hz LoRa: N/A (set to 0)
preamble_lenSets the preamble length (LoRa only). FSK : N/A (set to 0) LoRa: Length in symbols (the hardware adds four more symbols).
symb_timeoutSets the RxSingle timeout value. FSK : Timeout number of bytes LoRa: Timeout in symbols
fix_lenFixed length packets [0: variable, 1: fixed].
payload_lenSets the payload length when fixed length is used.
crc_onEnables/disables CRC [0: OFF, 1: ON].
freq_hop_onEnables/disables intra-packet frequency hopping [0: OFF, 1: ON] (LoRa only).
hop_periodThe number of symbols bewteen each hop (LoRa only).
iq_invertedInverts the IQ signals (LoRa only). FSK : N/A (set to 0) LoRa: [0: not inverted, 1: inverted]
rx_continuousSets the reception to continuous mode. [false: single mode, true: continuous mode]

Implements LoRaRadio.

◆ set_tx_config()

virtual void set_tx_config ( radio_modems_t  modem,
int8_t  power,
uint32_t  fdev,
uint32_t  bandwidth,
uint32_t  datarate,
uint8_t  coderate,
uint16_t  preamble_len,
bool  fix_len,
bool  crc_on,
bool  freq_hop_on,
uint8_t  hop_period,
bool  iq_inverted,
uint32_t  timeout 
)
virtual

Sets the transmission parameters.

Parameters
modemRadio modem to be used [0: FSK, 1: LoRa]
powerSets the output power [dBm]
fdevSets the frequency deviation ( FSK only ) FSK : [Hz] LoRa: 0
bandwidthSets the bandwidth ( LoRa only ) FSK : 0 LoRa: [0: 125 kHz, 1: 250 kHz, 2: 500 kHz, 3: Reserved]
datarateSets the Datarate FSK : 600..300000 bits/s LoRa: [6: 64, 7: 128, 8: 256, 9: 512, 10: 1024, 11: 2048, 12: 4096 chips]
coderateSets the coding rate ( LoRa only ) FSK : N/A ( set to 0 ) LoRa: [1: 4/5, 2: 4/6, 3: 4/7, 4: 4/8]
preamble_lenSets the preamble length
fix_lenFixed length packets [0: variable, 1: fixed]
crc_onEnables disables the CRC [0: OFF, 1: ON]
freq_hop_onEnables disables the intra-packet frequency hopping [0: OFF, 1: ON] (LoRa only)
hop_periodNumber of symbols bewteen each hop (LoRa only)
iq_invertedInverts IQ signals ( LoRa only ) FSK : N/A ( set to 0 ) LoRa: [0: not inverted, 1: inverted]
timeoutTransmission timeout [ms]

Implements LoRaRadio.

◆ send()

virtual void send ( uint8_t *  buffer,
uint8_t  size 
)
virtual

Sends the buffer of size.

Prepares the packet to be sent and sets the radio in transmission

Parameters
bufferBuffer pointer
sizeBuffer size

Implements LoRaRadio.

◆ receive() [1/2]

virtual void receive ( uint32_t  timeout)
virtual

For backwards compatibility.

Definition at line 142 of file STM32WL_LoRaRadio.h.

◆ receive() [2/2]

virtual void receive ( void  )
virtual

Sets the radio to receive.

All necessary configuration options for reception are set in 'set_rx_config(parameters)' API.

Implements LoRaRadio.

◆ set_channel()

virtual void set_channel ( uint32_t  freq)
virtual

Sets the carrier frequency.

Parameters
freqChannel RF frequency

Implements LoRaRadio.

◆ random()

virtual uint32_t random ( void  )
virtual

Generates a 32 bits random value based on the RSSI readings.

Remark this function sets the radio in LoRa modem mode and disables all interrupts. After calling this function either Radio.SetRxConfig or Radio.SetTxConfig functions must be called.

Returns
32 bits random value

Implements LoRaRadio.

◆ get_status()

radio_state_t get_status ( void  )
overridevirtual

Gets the radio status.

Returns
The current radio status (RF_IDLE, RF_RX_RUNNING, RF_TX_RUNNING, etc.)

Implements LoRaRadio.

◆ set_max_payload_length()

virtual void set_max_payload_length ( radio_modems_t  modem,
uint8_t  max 
)
virtual

Sets the maximum payload length.

Parameters
modemRadio modem to be used [0: FSK, 1: LoRa]
maxMaximum payload length in bytes

Implements LoRaRadio.

◆ set_public_network()

virtual void set_public_network ( bool  enable)
virtual

Sets the network to public or private.

Updates the sync byte. Applies to LoRa modem only

Parameters
enableif true, it enables a public network

Implements LoRaRadio.

◆ time_on_air()

virtual uint32_t time_on_air ( radio_modems_t  modem,
uint8_t  pkt_len 
)
virtual

Computes the packet time on air for the given payload.

Remark can only be called once SetRxConfig or SetTxConfig have been called

Parameters
modemRadio modem to be used [0: FSK, 1: LoRa]
pkt_lenPacket payload length
Returns
Computed airTime for the given packet payload length

Implements LoRaRadio.

◆ perform_carrier_sense()

virtual bool perform_carrier_sense ( radio_modems_t  modem,
uint32_t  freq,
int16_t  rssi_threshold,
uint32_t  max_carrier_sense_time 
)
virtual

Perform carrier sensing.

Checks for a certain time if the RSSI is above a given threshold. This threshold determines if there is already a transmission going on in the channel or not.

Parameters
modemType of the radio modem
freqCarrier frequency
rssi_thresholdThreshold value of RSSI
max_carrier_sense_timetime to sense the channel
Returns
true if there is no active transmission in the channel, false otherwise

Implements LoRaRadio.

◆ start_cad()

virtual void start_cad ( void  )
virtual

Sets the radio in CAD mode.

Implements LoRaRadio.

◆ check_rf_frequency()

virtual bool check_rf_frequency ( uint32_t  frequency)
virtual

Check if the given RF is in range.

Parameters
frequencyfrequency needed to be checked

Implements LoRaRadio.

◆ set_tx_continuous_wave()

virtual void set_tx_continuous_wave ( uint32_t  freq,
int8_t  power,
uint16_t  time 
)
virtual

Sets the radio in continuous wave transmission mode.

Parameters
freqChannel RF frequency
powerSets the output power [dBm]
timeTransmission mode timeout [s]

Implements LoRaRadio.

◆ lock()

virtual void lock ( void  )
virtual

Acquire exclusive access.

Implements LoRaRadio.

◆ unlock()

virtual void unlock ( void  )
virtual

Release exclusive access.

Implements LoRaRadio.