zephyr/drivers/lora/hal_common.c
Andreas Sandberg 69fac5c498 drivers: lora: Move board support to a separate file
The implementation of the board support routines is shared between all
LoRa drivers that use LoRaMAC-Node. Move them from the SX1276
implementation to a separate source file to facilitate reuse. Make
this source file conditional on CONFIG_HAS_SEMTECH_RADIO_DRIVERS since
it will be used by all LoRaMAC-Node-based drivers.

Signed-off-by: Andreas Sandberg <andreas@sandberg.pp.se>
2020-06-11 07:15:34 -04:00

84 lines
1.2 KiB
C

/*
* Copyright (c) 2019 Manivannan Sadhasivam
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <zephyr.h>
#include <timer.h>
static uint32_t saved_time;
static void timer_callback(struct k_timer *_timer)
{
ARG_UNUSED(_timer);
TimerIrqHandler();
}
K_TIMER_DEFINE(lora_timer, timer_callback, NULL);
uint32_t RtcGetTimerValue(void)
{
return k_uptime_get_32();
}
uint32_t RtcGetTimerElapsedTime(void)
{
return (k_uptime_get_32() - saved_time);
}
uint32_t RtcGetMinimumTimeout(void)
{
return 1;
}
void RtcStopAlarm(void)
{
k_timer_stop(&lora_timer);
}
void RtcSetAlarm(uint32_t timeout)
{
k_timer_start(&lora_timer, K_MSEC(timeout), K_NO_WAIT);
}
uint32_t RtcSetTimerContext(void)
{
saved_time = k_uptime_get_32();
return saved_time;
}
/* For us, 1 tick = 1 milli second. So no need to do any conversion here */
uint32_t RtcGetTimerContext(void)
{
return saved_time;
}
void DelayMsMcu(uint32_t ms)
{
k_sleep(K_MSEC(ms));
}
uint32_t RtcMs2Tick(uint32_t milliseconds)
{
return milliseconds;
}
uint32_t RtcTick2Ms(uint32_t tick)
{
return tick;
}
void BoardCriticalSectionBegin(uint32_t *mask)
{
*mask = irq_lock();
}
void BoardCriticalSectionEnd(uint32_t *mask)
{
irq_unlock(*mask);
}