2017-11-27 11:28:33 +00:00
|
|
|
/**
|
|
|
|
/ _____) _ | |
|
|
|
|
( (____ _____ ____ _| |_ _____ ____| |__
|
|
|
|
\____ \| ___ | (_ _) ___ |/ ___) _ \
|
|
|
|
_____) ) ____| | | || |_| ____( (___| | | |
|
|
|
|
(______/|_____)_|_|_| \__)_____)\____)_| |_|
|
|
|
|
(C)2013 Semtech
|
|
|
|
|
|
|
|
Description: Timer objects and scheduling management
|
|
|
|
|
|
|
|
License: Revised BSD License, see LICENSE.TXT file include in the project
|
|
|
|
|
|
|
|
Maintainer: Miguel Luis and Gregory Cristian
|
|
|
|
|
|
|
|
|
|
|
|
Copyright (c) 2017, Arm Limited and affiliates.
|
|
|
|
|
|
|
|
SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include "lorawan/system/LoRaWANTimer.h"
|
|
|
|
|
2018-01-05 13:03:22 +00:00
|
|
|
LoRaWANTimeHandler::LoRaWANTimeHandler()
|
|
|
|
: _queue(NULL)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
LoRaWANTimeHandler::~LoRaWANTimeHandler()
|
|
|
|
{
|
|
|
|
}
|
2017-11-27 11:28:33 +00:00
|
|
|
|
2018-01-05 13:03:22 +00:00
|
|
|
void LoRaWANTimeHandler::TimerTimeCounterInit(events::EventQueue *queue)
|
2017-11-27 11:28:33 +00:00
|
|
|
{
|
2017-12-21 10:37:53 +00:00
|
|
|
_queue = queue;
|
2017-11-27 11:28:33 +00:00
|
|
|
}
|
|
|
|
|
2018-01-05 13:03:22 +00:00
|
|
|
TimerTime_t LoRaWANTimeHandler::TimerGetCurrentTime( void )
|
2017-11-27 11:28:33 +00:00
|
|
|
{
|
2017-12-21 10:37:53 +00:00
|
|
|
const uint32_t current_time = _queue->tick();
|
|
|
|
return (TimerTime_t)current_time;
|
2017-11-27 11:28:33 +00:00
|
|
|
}
|
|
|
|
|
2018-01-05 13:03:22 +00:00
|
|
|
TimerTime_t LoRaWANTimeHandler::TimerGetElapsedTime( TimerTime_t savedTime )
|
2017-11-27 11:28:33 +00:00
|
|
|
{
|
2017-12-21 10:37:53 +00:00
|
|
|
return TimerGetCurrentTime() - savedTime;
|
2017-11-27 11:28:33 +00:00
|
|
|
}
|
|
|
|
|
2018-01-05 08:47:09 +00:00
|
|
|
void LoRaWANTimeHandler::TimerInit( TimerEvent_t *obj, mbed::Callback<void()> callback)
|
2017-11-27 11:28:33 +00:00
|
|
|
{
|
|
|
|
obj->value = 0;
|
|
|
|
obj->Callback = callback;
|
|
|
|
}
|
|
|
|
|
2018-01-05 13:03:22 +00:00
|
|
|
void LoRaWANTimeHandler::TimerStart( TimerEvent_t *obj )
|
2017-11-27 11:28:33 +00:00
|
|
|
{
|
2018-01-05 15:38:11 +00:00
|
|
|
obj->Timer.get()->attach_us( mbed::callback( obj->Callback ), obj->value * 1000 );
|
2017-11-27 11:28:33 +00:00
|
|
|
}
|
|
|
|
|
2018-01-05 13:03:22 +00:00
|
|
|
void LoRaWANTimeHandler::TimerStop( TimerEvent_t *obj )
|
2017-11-27 11:28:33 +00:00
|
|
|
{
|
2018-01-05 15:38:11 +00:00
|
|
|
obj->Timer.get()->detach( );
|
2017-11-27 11:28:33 +00:00
|
|
|
}
|
|
|
|
|
2018-01-05 13:03:22 +00:00
|
|
|
void LoRaWANTimeHandler::TimerSetValue( TimerEvent_t *obj, uint32_t value )
|
2017-11-27 11:28:33 +00:00
|
|
|
{
|
|
|
|
obj->value = value;
|
|
|
|
}
|