lora: Switch to new timeout API

Get rid of legacy timeout API and move to new timeout API for LoRa.
This involves changes to API, SX1276 driver and sample application.

Signed-off-by: Manivannan Sadhasivam <mani@kernel.org>
This commit is contained in:
Manivannan Sadhasivam 2020-05-01 20:34:52 +05:30 committed by Carles Cufí
commit 7be8debaab
4 changed files with 7 additions and 13 deletions

View file

@ -9,7 +9,6 @@
menuconfig LORA
bool "LoRa support [EXPERIMENTAL]"
depends on NEWLIB_LIBC
select LEGACY_TIMEOUT_API
help
Include LoRa drivers in the system configuration.

View file

@ -138,7 +138,7 @@ static void timer_callback(struct k_timer *_timer)
void RtcSetAlarm(u32_t timeout)
{
k_timer_start(&dev_data.timer, timeout, K_NO_WAIT);
k_timer_start(&dev_data.timer, K_MSEC(timeout), K_NO_WAIT);
}
u32_t RtcSetTimerContext(void)
@ -156,7 +156,7 @@ u32_t RtcGetTimerContext(void)
void DelayMsMcu(u32_t ms)
{
k_sleep(ms);
k_sleep(K_MSEC(ms));
}
u32_t RtcMs2Tick(uint32_t milliseconds)
@ -384,19 +384,14 @@ static void sx1276_rx_done(u8_t *payload, u16_t size, int16_t rssi, int8_t snr)
}
static int sx1276_lora_recv(struct device *dev, u8_t *data, u8_t size,
s32_t timeout, s16_t *rssi, s8_t *snr)
k_timeout_t timeout, s16_t *rssi, s8_t *snr)
{
int ret;
Radio.SetMaxPayloadLength(MODEM_LORA, 255);
Radio.Rx(0);
/*
* As per the API requirement, timeout value can be in ms/K_FOREVER/
* K_NO_WAIT. So, let's handle all cases.
*/
ret = k_sem_take(&dev_data.data_sem, timeout == K_FOREVER ? K_FOREVER :
timeout == K_NO_WAIT ? K_NO_WAIT : K_MSEC(timeout));
ret = k_sem_take(&dev_data.data_sem, timeout);
if (ret < 0) {
LOG_ERR("Receive timeout!");
return ret;

View file

@ -73,7 +73,7 @@ typedef int (*lora_api_send)(struct device *dev,
* @see lora_recv() for argument descriptions.
*/
typedef int (*lora_api_recv)(struct device *dev, u8_t *data, u8_t size,
s32_t timeout, s16_t *rssi, s8_t *snr);
k_timeout_t timeout, s16_t *rssi, s8_t *snr);
struct lora_driver_api {
lora_api_config config;
@ -132,7 +132,7 @@ static inline int lora_send(struct device *dev,
* @return Length of the data received on success, negative on error
*/
static inline int lora_recv(struct device *dev, u8_t *data, u8_t size,
s32_t timeout, s16_t *rssi, s8_t *snr)
k_timeout_t timeout, s16_t *rssi, s8_t *snr)
{
const struct lora_driver_api *api = dev->driver_api;

View file

@ -47,7 +47,7 @@ void main(void)
while (1) {
/* Block until data arrives */
len = lora_recv(lora_dev, data, MAX_DATA_LEN, SYS_FOREVER_MS,
len = lora_recv(lora_dev, data, MAX_DATA_LEN, K_FOREVER,
&rssi, &snr);
if (len < 0) {
LOG_ERR("LoRa receive failed");