![]() |
SX126x-Arduino
2.0.1
|
Radio driver API definition. More...
#include <math.h>#include <string.h>#include "boards/mcu/board.h"#include "radio/radio.h"#include "sx126x.h"#include "boards/sx126x/sx126x-board.h"#include "boards/mcu/timer.h"Data Structures | |
| struct | FskBandwidth_t |
| struct | RadioPublicNetwork_t |
Functions | |
| void | RadioInit (RadioEvents_t *events) |
| Initializes the radio. More... | |
| void | RadioReInit (RadioEvents_t *events) |
| Initializes the radio after deep sleep of the CPU. More... | |
| RadioState_t | RadioGetStatus (void) |
| void | RadioSetModem (RadioModems_t modem) |
| Configures the radio with the given modem. More... | |
| void | RadioSetChannel (uint32_t freq) |
| Sets the channel frequency. More... | |
| bool | RadioIsChannelFree (RadioModems_t modem, uint32_t freq, int16_t rssiThresh, uint32_t maxCarrierSenseTime) |
| Checks if the channel is free for the given time. More... | |
| uint32_t | RadioRandom (void) |
| Generates a 32 bits random value based on the RSSI readings. More... | |
| void | RadioSetRxConfig (RadioModems_t modem, uint32_t bandwidth, uint32_t datarate, uint8_t coderate, uint32_t bandwidthAfc, uint16_t preambleLen, uint16_t symbTimeout, bool fixLen, uint8_t payloadLen, bool crcOn, bool FreqHopOn, uint8_t HopPeriod, bool iqInverted, bool rxContinuous) |
| Sets the reception parameters. More... | |
| void | RadioSetTxConfig (RadioModems_t modem, int8_t power, uint32_t fdev, uint32_t bandwidth, uint32_t datarate, uint8_t coderate, uint16_t preambleLen, bool fixLen, bool crcOn, bool FreqHopOn, uint8_t HopPeriod, bool iqInverted, uint32_t timeout) |
| Sets the transmission parameters. More... | |
| bool | RadioCheckRfFrequency (uint32_t frequency) |
| Checks if the given RF frequency is supported by the hardware. More... | |
| uint32_t | RadioTimeOnAir (RadioModems_t modem, uint8_t pktLen) |
| Computes the packet time on air in ms for the given payload. More... | |
| void | RadioSend (uint8_t *buffer, uint8_t size) |
| Sends the buffer of size. Prepares the packet to be sent and sets the radio in transmission. More... | |
| void | RadioSleep (void) |
| Sets the radio in sleep mode. More... | |
| void | RadioStandby (void) |
| Sets the radio in standby mode. More... | |
| void | RadioRx (uint32_t timeout) |
| Sets the radio in reception mode for the given time. More... | |
| void | RadioSetCadParams (uint8_t cadSymbolNum, uint8_t cadDetPeak, uint8_t cadDetMin, uint8_t cadExitMode, uint32_t cadTimeout) |
| Set Channel Activity Detection parameters. More... | |
| void | RadioStartCad (void) |
| Start a Channel Activity Detection. More... | |
| void | RadioSetTxContinuousWave (uint32_t freq, int8_t power, uint16_t time) |
| Sets the radio in continuous wave transmission mode. More... | |
| int16_t | RadioRssi (RadioModems_t modem) |
| Reads the current RSSI value. More... | |
| void | RadioWrite (uint16_t addr, uint8_t data) |
| Writes the radio register at the specified address. More... | |
| uint8_t | RadioRead (uint16_t addr) |
| Reads the radio register at the specified address. More... | |
| void | RadioWriteBuffer (uint16_t addr, uint8_t *buffer, uint8_t size) |
| Writes multiple radio registers starting at address. More... | |
| void | RadioReadBuffer (uint16_t addr, uint8_t *buffer, uint8_t size) |
| Reads multiple radio registers starting at address. More... | |
| void | RadioSetMaxPayloadLength (RadioModems_t modem, uint8_t max) |
| Sets the maximum payload length. More... | |
| void | RadioSetPublicNetwork (bool enable) |
| Sets the network to public or private. Updates the sync byte. More... | |
| uint32_t | RadioGetWakeupTime (void) |
| Gets the time required for the board plus radio to get out of sleep.[ms]. More... | |
| void | RadioBgIrqProcess (void) |
| Process radio irq in background task (nRF52 & ESP32) More... | |
| void | RadioIrqProcess (void) |
| Process radio irq. More... | |
| void | RadioIrqProcessAfterDeepSleep (void) |
| Process radio irq after deep sleep of the CPU. More... | |
| void | RadioRxBoosted (uint32_t timeout) |
| Sets the radio in reception mode with Max LNA gain for the given time. More... | |
| void | RadioSetRxDutyCycle (uint32_t rxTime, uint32_t sleepTime) |
| Sets the Rx duty cycle management parameters. More... | |
| void | RadioOnDioIrq (void) |
| DIO 0 IRQ callback. More... | |
| void | RadioOnTxTimeoutIrq (void) |
| Tx timeout timer callback. More... | |
| void | RadioOnRxTimeoutIrq (void) |
| Rx timeout timer callback. More... | |
| static uint8_t | RadioGetFskBandwidthRegValue (uint32_t bandwidth) |
| void | RadioTx (uint32_t timeout) |
| void | RadioWriteFifo (uint8_t *buffer, uint8_t size) |
| void | RadioReadFifo (uint8_t *buffer, uint8_t size) |
Variables | |
| TimerEvent_t | TxTimeoutTimer |
| TimerEvent_t | RxTimeoutTimer |
| const struct Radio_s | Radio |
| Radio driver. More... | |
| const FskBandwidth_t | FskBandwidths [] |
| const RadioLoRaBandwidths_t | Bandwidths [] = {LORA_BW_125, LORA_BW_250, LORA_BW_500} |
| static double | RadioLoRaSymbTime [3][6] |
| uint8_t | MaxPayloadLength = 0xFF |
| uint32_t | TxTimeout = 0 |
| uint32_t | RxTimeout = 0 |
| bool | RxContinuous = false |
| PacketStatus_t | RadioPktStatus |
| uint8_t | RadioRxPayload [255] |
| bool | IrqFired = false |
| bool | TimerRxTimeout = false |
| bool | TimerTxTimeout = false |
| RadioModems_t | _modem |
| static RadioPublicNetwork_t | RadioPublicNetwork = {false} |
| static RadioEvents_t * | RadioEvents |
| SX126x_t | SX126x |
| Radio hardware and global parameters. More... | |
Radio driver API definition.
| void RadioInit | ( | RadioEvents_t * | events | ) |
Initializes the radio.
| events | Structure containing the driver callback functions |
| void RadioReInit | ( | RadioEvents_t * | events | ) |
Initializes the radio after deep sleep of the CPU.
| events | Structure containing the driver callback functions |
| RadioState_t RadioGetStatus | ( | void | ) |
Return current radio status
| Radio | status.[RF_IDLE, RF_RX_RUNNING, RF_TX_RUNNING] |
| void RadioSetModem | ( | RadioModems_t | modem | ) |
Configures the radio with the given modem.
| modem | Modem to be used [0: FSK, 1: LoRa] |
| void RadioSetChannel | ( | uint32_t | freq | ) |
Sets the channel frequency.
| freq | Channel RF frequency |
| bool RadioIsChannelFree | ( | RadioModems_t | modem, |
| uint32_t | freq, | ||
| int16_t | rssiThresh, | ||
| uint32_t | maxCarrierSenseTime | ||
| ) |
Checks if the channel is free for the given time.
| modem | Radio modem to be used [0: FSK, 1: LoRa] |
| freq | Channel RF frequency |
| rssiThresh | RSSI threshold |
| maxCarrierSenseTime | Max time while the RSSI is measured |
| isFree | [true: Channel is free, false: Channel is not free] |
| uint32_t RadioRandom | ( | void | ) |
Generates a 32 bits random value based on the RSSI readings.
| randomValue | 32 bits random value |
| void RadioSetRxConfig | ( | RadioModems_t | modem, |
| uint32_t | bandwidth, | ||
| uint32_t | datarate, | ||
| uint8_t | coderate, | ||
| uint32_t | bandwidthAfc, | ||
| uint16_t | preambleLen, | ||
| uint16_t | symbTimeout, | ||
| bool | fixLen, | ||
| uint8_t | payloadLen, | ||
| bool | crcOn, | ||
| bool | FreqHopOn, | ||
| uint8_t | HopPeriod, | ||
| bool | iqInverted, | ||
| bool | rxContinuous | ||
| ) |
Sets the reception parameters.
| modem | Radio modem to be used [0: FSK, 1: LoRa] |
| bandwidth | Sets the bandwidth FSK : >= 2600 and <= 250000 Hz LoRa: [0: 125 kHz, 1: 250 kHz, 2: 500 kHz, 3: Reserved] |
| datarate | Sets the Datarate FSK : 600..300000 bits/s LoRa: [6: 64, 7: 128, 8: 256, 9: 512, 10: 1024, 11: 2048, 12: 4096 chips] |
| coderate | Sets the coding rate (LoRa only) FSK : N/A ( set to 0 ) LoRa: [1: 4/5, 2: 4/6, 3: 4/7, 4: 4/8] |
| bandwidthAfc | Sets the AFC Bandwidth (FSK only) FSK : >= 2600 and <= 250000 Hz LoRa: N/A ( set to 0 ) |
| preambleLen | Sets the Preamble length FSK : Number of bytes LoRa: Length in symbols (the hardware adds 4 more symbols) |
| symbTimeout | Sets the RxSingle timeout value FSK : timeout in number of bytes LoRa: timeout in symbols |
| fixLen | Fixed length packets [0: variable, 1: fixed] |
| payloadLen | Sets payload length when fixed length is used |
| crcOn | Enables/Disables the CRC [0: OFF, 1: ON] |
| FreqHopOn | Enables disables the intra-packet frequency hopping FSK : N/A ( set to 0 ) LoRa: [0: OFF, 1: ON] |
| HopPeriod | Number of symbols between each hop FSK : N/A ( set to 0 ) LoRa: Number of symbols |
| iqInverted | Inverts IQ signals (LoRa only) FSK : N/A ( set to 0 ) LoRa: [0: not inverted, 1: inverted] |
| rxContinuous | Sets the reception in continuous mode [false: single mode, true: continuous mode] |
| void RadioSetTxConfig | ( | RadioModems_t | modem, |
| int8_t | power, | ||
| uint32_t | fdev, | ||
| uint32_t | bandwidth, | ||
| uint32_t | datarate, | ||
| uint8_t | coderate, | ||
| uint16_t | preambleLen, | ||
| bool | fixLen, | ||
| bool | crcOn, | ||
| bool | FreqHopOn, | ||
| uint8_t | HopPeriod, | ||
| bool | iqInverted, | ||
| uint32_t | timeout | ||
| ) |
Sets the transmission parameters.
| modem | Radio modem to be used [0: FSK, 1: LoRa] |
| power | Sets the output power [dBm] |
| fdev | Sets the frequency deviation (FSK only) FSK : [Hz] LoRa: 0 |
| bandwidth | Sets the bandwidth (LoRa only) FSK : 0 LoRa: [0: 125 kHz, 1: 250 kHz, 2: 500 kHz, 3: Reserved] |
| datarate | Sets the Datarate FSK : 600..300000 bits/s LoRa: [6: 64, 7: 128, 8: 256, 9: 512, 10: 1024, 11: 2048, 12: 4096 chips] |
| coderate | Sets the coding rate (LoRa only) FSK : N/A ( set to 0 ) LoRa: [1: 4/5, 2: 4/6, 3: 4/7, 4: 4/8] |
| preambleLen | Sets the preamble length FSK : Number of bytes LoRa: Length in symbols (the hardware adds 4 more symbols) |
| fixLen | Fixed length packets [0: variable, 1: fixed] |
| crcOn | Enables disables the CRC [0: OFF, 1: ON] |
| FreqHopOn | Enables disables the intra-packet frequency hopping FSK : N/A ( set to 0 ) LoRa: [0: OFF, 1: ON] |
| HopPeriod | Number of symbols between each hop FSK : N/A ( set to 0 ) LoRa: Number of symbols |
| iqInverted | Inverts IQ signals (LoRa only) FSK : N/A ( set to 0 ) LoRa: [0: not inverted, 1: inverted] |
| timeout | Transmission timeout [ms] |
| bool RadioCheckRfFrequency | ( | uint32_t | frequency | ) |
Checks if the given RF frequency is supported by the hardware.
| frequency | RF frequency to be checked |
| isSupported | [true: supported, false: unsupported] |
| uint32_t RadioTimeOnAir | ( | RadioModems_t | modem, |
| uint8_t | pktLen | ||
| ) |
Computes the packet time on air in ms for the given payload.
| modem | Radio modem to be used [0: FSK, 1: LoRa] |
| pktLen | Packet payload length |
| airTime | Computed airTime (ms) for the given packet payload length |
| void RadioSend | ( | uint8_t * | buffer, |
| uint8_t | size | ||
| ) |
Sends the buffer of size. Prepares the packet to be sent and sets the radio in transmission.
| buffer Buffer pointer | |
| size Buffer size | |
| buffer | Buffer pointer |
| size | Buffer size |
| void RadioSleep | ( | void | ) |
Sets the radio in sleep mode.
| void RadioStandby | ( | void | ) |
Sets the radio in standby mode.
| void RadioRx | ( | uint32_t | timeout | ) |
Sets the radio in reception mode for the given time.
| timeout | Reception timeout [ms] [0: continuous, others timeout] |
| void RadioSetCadParams | ( | uint8_t | cadSymbolNum, |
| uint8_t | cadDetPeak, | ||
| uint8_t | cadDetMin, | ||
| uint8_t | cadExitMode, | ||
| uint32_t | cadTimeout | ||
| ) |
Set Channel Activity Detection parameters.
| cadSymbolNum | The number of symbol to use for CAD operations [LORA_CAD_01_SYMBOL, LORA_CAD_02_SYMBOL, LORA_CAD_04_SYMBOL, LORA_CAD_08_SYMBOL, LORA_CAD_16_SYMBOL] |
| cadDetPeak | Limit for detection of SNR peak used in the CAD |
| cadDetMin | Set the minimum symbol recognition for CAD |
| cadExitMode | Operation to be done at the end of CAD action [LORA_CAD_ONLY, LORA_CAD_RX, LORA_CAD_LBT] |
| cadTimeout | Defines the timeout value to abort the CAD activity |
| void RadioStartCad | ( | void | ) |
Start a Channel Activity Detection.
| void RadioSetTxContinuousWave | ( | uint32_t | freq, |
| int8_t | power, | ||
| uint16_t | time | ||
| ) |
Sets the radio in continuous wave transmission mode.
| freq Channel RF frequency | |
| power Sets the output power [dBm] | |
| time Transmission mode timeout [s] | |
| freq | Channel RF frequency |
| power | Sets the output power [dBm] |
| time | Transmission mode timeout [s] |
| int16_t RadioRssi | ( | RadioModems_t | modem | ) |
Reads the current RSSI value.
| rssiValue | Current RSSI value in [dBm] |
| void RadioWrite | ( | uint16_t | addr, |
| uint8_t | data | ||
| ) |
Writes the radio register at the specified address.
| addr Register address | |
| data New register value | |
| addr | Register address |
| data | New register value |
| uint8_t RadioRead | ( | uint16_t | addr | ) |
Reads the radio register at the specified address.
| addr Register address |
| data | Register value |
| addr | Register address |
| void RadioWriteBuffer | ( | uint16_t | addr, |
| uint8_t * | buffer, | ||
| uint8_t | size | ||
| ) |
Writes multiple radio registers starting at address.
| addr | First Radio register address |
| buffer | Buffer containing the new register's values |
| size | Number of registers to be written |
| void RadioReadBuffer | ( | uint16_t | addr, |
| uint8_t * | buffer, | ||
| uint8_t | size | ||
| ) |
Reads multiple radio registers starting at address.
| addr | First Radio register address |
| buffer | Buffer where to copy the registers data |
| size | Number of registers to be read |
| void RadioSetMaxPayloadLength | ( | RadioModems_t | modem, |
| uint8_t | max | ||
| ) |
Sets the maximum payload length.
| modem | Radio modem to be used [0: FSK, 1: LoRa] |
| max | Maximum payload length in bytes |
| void RadioSetPublicNetwork | ( | bool | enable | ) |
Sets the network to public or private. Updates the sync byte.
| enable | if true, it enables a public network |
| uint32_t RadioGetWakeupTime | ( | void | ) |
Gets the time required for the board plus radio to get out of sleep.[ms].
| time | Radio plus board wakeup time in ms. |
| void RadioBgIrqProcess | ( | void | ) |
Process radio irq in background task (nRF52 & ESP32)
< Update operating mode state to a value lower than MODE_STDBY_XOSC
< Update operating mode state to a value lower than MODE_STDBY_XOSC
< Update operating mode state to a value lower than MODE_STDBY_XOSC
< Update operating mode state to a value lower than MODE_STDBY_XOSC
< Update operating mode state to a value lower than MODE_STDBY_XOSC
< Update operating mode state to a value lower than MODE_STDBY_XOSC
| void RadioIrqProcess | ( | void | ) |
Process radio irq.
| void RadioIrqProcessAfterDeepSleep | ( | void | ) |
Process radio irq after deep sleep of the CPU.
| void RadioRxBoosted | ( | uint32_t | timeout | ) |
Sets the radio in reception mode with Max LNA gain for the given time.
| timeout | Reception timeout [ms] [0: continuous, others timeout] |
| void RadioSetRxDutyCycle | ( | uint32_t | rxTime, |
| uint32_t | sleepTime | ||
| ) |
Sets the Rx duty cycle management parameters.
| rxTime | Structure describing reception timeout value |
| sleepTime | Structure describing sleep timeout value |
| void RadioOnDioIrq | ( | void | ) |
DIO 0 IRQ callback.
| void RadioOnTxTimeoutIrq | ( | void | ) |
Tx timeout timer callback.
| void RadioOnRxTimeoutIrq | ( | void | ) |
Rx timeout timer callback.
|
static |
Returns the known FSK bandwidth registers value
| bandwidth | Bandwidth value in Hz |
| regValue | Bandwidth register value. |
| void RadioTx | ( | uint32_t | timeout | ) |
| void RadioWriteFifo | ( | uint8_t * | buffer, |
| uint8_t | size | ||
| ) |
| void RadioReadFifo | ( | uint8_t * | buffer, |
| uint8_t | size | ||
| ) |
| TimerEvent_t TxTimeoutTimer |
| TimerEvent_t RxTimeoutTimer |
| const struct Radio_s Radio |
Radio driver.
Radio driver structure initialization
| const FskBandwidth_t FskBandwidths[] |
Precomputed FSK bandwidth registers values
| const RadioLoRaBandwidths_t Bandwidths[] = {LORA_BW_125, LORA_BW_250, LORA_BW_500} |
|
static |
| uint8_t MaxPayloadLength = 0xFF |
| uint32_t TxTimeout = 0 |
| uint32_t RxTimeout = 0 |
| bool RxContinuous = false |
| PacketStatus_t RadioPktStatus |
| uint8_t RadioRxPayload[255] |
| bool IrqFired = false |
| bool TimerRxTimeout = false |
| bool TimerTxTimeout = false |
| RadioModems_t _modem |
|
static |
|
static |
Radio callbacks variable
| SX126x_t SX126x |
Radio hardware and global parameters.
Radio hardware and global parameters
1.8.18