7#ifndef ZEPHYR_INCLUDE_DRIVERS_LORA_H_
8#define ZEPHYR_INCLUDE_DRIVERS_LORA_H_
79typedef int (*lora_api_config)(
const struct device *dev,
88typedef int (*lora_api_send)(
const struct device *dev,
97typedef int (*lora_api_send_async)(
const struct device *dev,
118typedef int (*lora_api_recv_async)(
const struct device *dev, lora_recv_cb cb);
126typedef int (*lora_api_test_cw)(
const struct device *dev,
uint32_t frequency,
129struct lora_driver_api {
130 lora_api_config config;
132 lora_api_send_async send_async;
134 lora_api_recv_async recv_async;
135 lora_api_test_cw test_cw;
151 const struct lora_driver_api *api =
152 (
const struct lora_driver_api *)dev->
api;
154 return api->config(dev, config);
170 const struct lora_driver_api *api =
171 (
const struct lora_driver_api *)dev->
api;
173 return api->send(dev,
data, data_len);
194 const struct lora_driver_api *api =
195 (
const struct lora_driver_api *)dev->
api;
197 return api->send_async(dev,
data, data_len, async);
218 const struct lora_driver_api *api =
219 (
const struct lora_driver_api *)dev->
api;
221 return api->recv(dev,
data, size,
timeout, rssi, snr);
240 const struct lora_driver_api *api =
241 (
const struct lora_driver_api *)dev->
api;
243 return api->recv_async(dev, cb);
261 const struct lora_driver_api *api =
262 (
const struct lora_driver_api *)dev->
api;
264 if (api->test_cw == NULL) {
268 return api->test_cw(dev, frequency, tx_power, duration);
ZTEST_BMEM int timeout
Definition: main.c:31
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.
Definition: lora.h:258
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.
Definition: lora.h:214
lora_datarate
Definition: lora.h:31
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.
Definition: lora.h:190
static int lora_recv_async(const struct device *dev, lora_recv_cb cb)
Receive data asynchronously over LoRa.
Definition: lora.h:238
lora_coding_rate
Definition: lora.h:41
lora_signal_bandwidth
Definition: lora.h:25
static int lora_config(const struct device *dev, struct lora_modem_config *config)
Configure the LoRa modem.
Definition: lora.h:148
static int lora_send(const struct device *dev, uint8_t *data, uint32_t data_len)
Send data over LoRa.
Definition: lora.h:167
@ SF_12
Definition: lora.h:38
@ SF_8
Definition: lora.h:34
@ SF_11
Definition: lora.h:37
@ SF_10
Definition: lora.h:36
@ SF_9
Definition: lora.h:35
@ SF_6
Definition: lora.h:32
@ SF_7
Definition: lora.h:33
@ CR_4_5
Definition: lora.h:42
@ CR_4_6
Definition: lora.h:43
@ CR_4_8
Definition: lora.h:45
@ CR_4_7
Definition: lora.h:44
@ BW_250_KHZ
Definition: lora.h:27
@ BW_125_KHZ
Definition: lora.h:26
@ BW_500_KHZ
Definition: lora.h:28
#define ENOSYS
Definition: errno.h:83
static ssize_t send(int sock, const void *buf, size_t len, int flags)
Definition: socket.h:61
static ssize_t recv(int sock, void *buf, size_t max_len, int flags)
Definition: socket.h:66
__UINT32_TYPE__ uint32_t
Definition: stdint.h:90
__UINT8_TYPE__ uint8_t
Definition: stdint.h:88
__UINT16_TYPE__ uint16_t
Definition: stdint.h:89
__INT8_TYPE__ int8_t
Definition: stdint.h:72
__INT16_TYPE__ int16_t
Definition: stdint.h:73
Runtime device structure (in ROM) per driver instance.
Definition: device.h:456
const void * api
Definition: device.h:462
Definition: kernel.h:5459
Kernel timeout type.
Definition: sys_clock.h:65
uint32_t frequency
Definition: lora.h:49
enum lora_signal_bandwidth bandwidth
Definition: lora.h:50
bool tx
Definition: lora.h:55
int8_t tx_power
Definition: lora.h:54
enum lora_coding_rate coding_rate
Definition: lora.h:52
uint16_t preamble_len
Definition: lora.h:53
enum lora_datarate datarate
Definition: lora.h:51
static fdata_t data[2]
Definition: test_fifo_contexts.c:15