|
Zephyr API Documentation 4.4.0-rc1
A Scalable Open Source RTOS
|
Interfaces for LoRa transceivers. More...
Files | |
| file | lora.h |
| Main header file for LoRa driver API. | |
Data Structures | |
| struct | lora_modem_config |
| Structure containing the configuration of a LoRa modem. More... | |
Enumerations | |
| enum | lora_signal_bandwidth { BW_7_KHZ = 7 , BW_10_KHZ = 10 , BW_15_KHZ = 15 , BW_20_KHZ = 20 , BW_31_KHZ = 31 , BW_41_KHZ = 41 , BW_62_KHZ = 62 , BW_125_KHZ = 125 , BW_200_KHZ = 200 , BW_250_KHZ = 250 , BW_400_KHZ = 400 , BW_500_KHZ = 500 , BW_800_KHZ = 800 , BW_1000_KHZ = 1000 , BW_1600_KHZ = 1600 } |
| LoRa signal bandwidth. More... | |
| enum | lora_datarate { SF_5 = 5 , SF_6 = 6 , SF_7 = 7 , SF_8 = 8 , SF_9 = 9 , SF_10 = 10 , SF_11 = 11 , SF_12 = 12 } |
| LoRa data-rate. More... | |
| enum | lora_coding_rate { CR_4_5 = 1 , CR_4_6 = 2 , CR_4_7 = 3 , CR_4_8 = 4 } |
| LoRa coding rate. More... | |
| enum | lora_cad_symbol_num { LORA_CAD_SYMB_1 = 1 , LORA_CAD_SYMB_2 = 2 , LORA_CAD_SYMB_4 = 4 , LORA_CAD_SYMB_8 = 8 , LORA_CAD_SYMB_16 = 16 } |
| Number of symbols used for Channel Activity Detection. More... | |
| enum | lora_cad_mode { LORA_CAD_MODE_NONE = 0 , LORA_CAD_MODE_RX , LORA_CAD_MODE_LBT } |
| Channel Activity Detection mode. More... | |
Functions | |
| static int | lora_config (const struct device *dev, struct lora_modem_config *config) |
| Configure the LoRa modem. | |
| static uint32_t | lora_airtime (const struct device *dev, uint32_t data_len) |
| Query the airtime of a packet with a given length. | |
| static int | lora_send (const struct device *dev, uint8_t *data, uint32_t data_len) |
| Send data over LoRa. | |
| static int | lora_send_async (const struct device *dev, uint8_t *data, uint32_t data_len, struct k_poll_signal *async) |
| Asynchronously send data over LoRa. | |
| static int | lora_recv (const struct device *dev, uint8_t *data, uint8_t size, k_timeout_t timeout, int16_t *rssi, int8_t *snr) |
| Receive data over LoRa. | |
| static int | lora_recv_async (const struct device *dev, lora_recv_cb cb, void *user_data) |
| Receive data asynchronously over LoRa. | |
| static int | lora_cad (const struct device *dev, k_timeout_t timeout) |
| Perform Channel Activity Detection. | |
| static int | lora_cad_async (const struct device *dev, lora_cad_cb cb, void *user_data) |
| Perform Channel Activity Detection asynchronously. | |
| static int | lora_recv_duty_cycle (const struct device *dev, k_timeout_t rx_period, k_timeout_t sleep_period, lora_recv_cb cb, void *user_data) |
| Start receive duty cycling (wake-on-radio). | |
| static int | lora_test_cw (const struct device *dev, uint32_t frequency, int8_t tx_power, uint16_t duration) |
| Transmit an unmodulated continuous wave at a given frequency. | |
Interfaces for LoRa transceivers.
| enum lora_cad_mode |
#include <zephyr/drivers/lora.h>
Channel Activity Detection mode.
Controls whether send/recv operations perform CAD before the actual operation.
| Enumerator | |
|---|---|
| LORA_CAD_MODE_NONE | No CAD (default). |
| LORA_CAD_MODE_RX | CAD before receive: lora_recv() performs CAD first and returns 0 immediately if no activity is detected. For continuous low-power listening, prefer lora_recv_duty_cycle instead. |
| LORA_CAD_MODE_LBT | Listen Before Talk: lora_send() performs CAD before transmitting and returns -EBUSY if the channel is busy. |
| enum lora_cad_symbol_num |
#include <zephyr/drivers/lora.h>
Number of symbols used for Channel Activity Detection.
More symbols improve detection reliability at the cost of increased latency and power consumption.
| Enumerator | |
|---|---|
| LORA_CAD_SYMB_1 | 1 symbol |
| LORA_CAD_SYMB_2 | 2 symbols |
| LORA_CAD_SYMB_4 | 4 symbols |
| LORA_CAD_SYMB_8 | 8 symbols |
| LORA_CAD_SYMB_16 | 16 symbols |
| enum lora_coding_rate |
#include <zephyr/drivers/lora.h>
LoRa coding rate.
This enumeration defines the LoRa coding rate, used for forward error correction (FEC).
The coding rate is expressed as 4/x, where a lower denominator (e.g., 4/5) means less redundancy, resulting in a higher data rate but reduced robustness. Higher redundancy (e.g., 4/8) improves error tolerance at the cost of data rate.
| enum lora_datarate |
#include <zephyr/drivers/lora.h>
LoRa data-rate.
This enumeration represents the data rate of a LoRa signal, expressed as a Spreading Factor (SF).
The Spreading Factor determines how many chirps are used to encode each symbol (2^SF chips per symbol). Higher values result in lower data rates but increased range and robustness.
#include <zephyr/drivers/lora.h>
LoRa signal bandwidth.
This enumeration defines the bandwidth of a LoRa signal.
The bandwidth determines how much spectrum is used to transmit data. Wider bandwidths enable higher data rates but typically reduce sensitivity and range.
#include <zephyr/drivers/lora.h>
Query the airtime of a packet with a given length.
| dev | LoRa device |
| data_len | Length of the data |
|
inlinestatic |
#include <zephyr/drivers/lora.h>
Perform Channel Activity Detection.
Checks whether a LoRa signal is present on the channel using the modem configuration previously set by lora_config (including CAD parameters).
| dev | LoRa device |
| timeout | Maximum time to wait for CAD to complete |
|
inlinestatic |
#include <zephyr/drivers/lora.h>
Perform Channel Activity Detection asynchronously.
Starts a single CAD operation using the CAD parameters from lora_config. When complete, invokes cb with the result.
Cancel a pending operation by calling this function again with cb = NULL.
| dev | LoRa device |
| cb | Callback invoked on completion. NULL to cancel. |
| user_data | User data passed to callback |
|
inlinestatic |
#include <zephyr/drivers/lora.h>
Configure the LoRa modem.
| dev | LoRa device |
| config | Data structure containing the intended configuration for the modem |
|
inlinestatic |
#include <zephyr/drivers/lora.h>
Receive data over LoRa.
| dev | LoRa device |
| data | Buffer to hold received data |
| size | Size of the buffer to hold the received data. Max size allowed is 255. |
| timeout | Duration to wait for a packet. |
| rssi | RSSI of received data |
| snr | SNR of received data |
|
inlinestatic |
#include <zephyr/drivers/lora.h>
Receive data asynchronously over LoRa.
Receive packets continuously under the configuration previously setup by lora_config.
Reception is cancelled by calling this function again with cb = NULL. This can be done within the callback handler.
| dev | Modem to receive data on. |
| cb | Callback to run on receiving data. If NULL, any pending asynchronous receptions will be cancelled. |
| user_data | User data passed to callback |
|
inlinestatic |
#include <zephyr/drivers/lora.h>
Start receive duty cycling (wake-on-radio).
The radio autonomously alternates between sleep and listening for a LoRa preamble. When a valid packet is received, cb is invoked. The duty cycle continues until cancelled by calling this function with cb = NULL.
The transmitter must use a preamble longer than (sleep_period + rx_period) to guarantee detection.
| dev | LoRa device |
| rx_period | Listen window duration |
| sleep_period | Sleep duration between listen windows |
| cb | Callback on packet reception. NULL to cancel. |
| user_data | User data passed to callback |
#include <zephyr/drivers/lora.h>
Send data over LoRa.
| dev | LoRa device |
| data | Data to be sent |
| data_len | Length of the data to be sent |
|
inlinestatic |
#include <zephyr/drivers/lora.h>
Asynchronously send data over LoRa.
| dev | LoRa device |
| data | Data to be sent |
| data_len | Length of the data to be sent |
| async | A pointer to a valid and ready to be signaled struct k_poll_signal. (Note: if NULL this function will not notify the end of the transmission). |
|
inlinestatic |
#include <zephyr/drivers/lora.h>
Transmit an unmodulated continuous wave at a given frequency.
| dev | LoRa device |
| frequency | Output frequency (Hertz) |
| tx_power | TX power (dBm) |
| duration | Transmission duration in seconds. |