Semtech LoRaWAN-demo configured for 915MHz operation and multi-radio support (SX1276/SX1272)

Dependencies:   mbed LoRaWAN-lib SX1272Lib SX1276Lib

Fork of LoRaWAN-demo-72 by Semtech

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers timer.cpp Source File

timer.cpp

00001 /*
00002  / _____)             _              | |
00003 ( (____  _____ ____ _| |_ _____  ____| |__
00004  \____ \| ___ |    (_   _) ___ |/ ___)  _ \
00005  _____) ) ____| | | || |_| ____( (___| | | |
00006 (______/|_____)_|_|_| \__)_____)\____)_| |_|
00007     (C)2013 Semtech
00008 
00009 Description: Timer objects and scheduling management
00010 
00011 License: Revised BSD License, see LICENSE.TXT file include in the project
00012 
00013 Maintainer: Miguel Luis and Gregory Cristian
00014 */
00015 #include "board.h"
00016 
00017 Timer TimeCounter;
00018 Ticker LoadTimeCounter;
00019 
00020 volatile uint32_t CurrentTime = 0;
00021 
00022 void TimerResetTimeCounter( void )
00023 {
00024     CurrentTime = CurrentTime + TimeCounter.read_us( ) / 1e3;
00025     TimeCounter.reset( );
00026     TimeCounter.start( );
00027 }
00028 
00029 void TimerTimeCounterInit( void )
00030 {
00031     TimeCounter.start( );
00032     LoadTimeCounter.attach( mbed::callback( &TimerResetTimeCounter ), 10 );
00033 }
00034 
00035 TimerTime_t TimerGetCurrentTime( void )
00036 {
00037     CurrentTime += TimeCounter.read_us( ) / 1e3;
00038     TimeCounter.reset( );
00039     TimeCounter.start( );
00040     return ( ( TimerTime_t )CurrentTime );
00041 }
00042 
00043 TimerTime_t TimerGetElapsedTime( TimerTime_t savedTime )
00044 {
00045     CurrentTime += TimeCounter.read_us( ) / 1e3;
00046     TimeCounter.reset( );
00047     TimeCounter.start( );
00048     return ( TimerTime_t )( CurrentTime - savedTime );
00049 }
00050 
00051 TimerTime_t TimerGetFutureTime( TimerTime_t eventInFuture )
00052 {
00053     CurrentTime += TimeCounter.read_us( ) / 1e3;
00054     TimeCounter.reset( );
00055     TimeCounter.start( );
00056     return ( TimerTime_t )( CurrentTime + eventInFuture );
00057 }
00058 
00059 void TimerInit( TimerEvent_t *obj, void ( *callback )( void ) )
00060 {
00061     obj->value = 0;
00062     obj->Callback = callback;
00063 }
00064 
00065 void TimerStart( TimerEvent_t *obj )
00066 {
00067     obj->Timer.attach_us( mbed::callback( obj->Callback ), obj->value * 1e3 );
00068 }
00069 
00070 void TimerStop( TimerEvent_t *obj )
00071 {
00072     obj->Timer.detach( );
00073 }
00074 
00075 void TimerSetValue( TimerEvent_t *obj, uint32_t value )
00076 {
00077     obj->value = value;
00078 }