1

Dependencies:   X_NUCLEO_IKS01A1 LoRaWAN-lib SX1276Lib mbed

Committer:
ubhat
Date:
Fri Aug 26 19:36:35 2016 +0000
Revision:
0:42863a11464a
SX1276 Shield based Applications

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ubhat 0:42863a11464a 1 /*
ubhat 0:42863a11464a 2 / _____) _ | |
ubhat 0:42863a11464a 3 ( (____ _____ ____ _| |_ _____ ____| |__
ubhat 0:42863a11464a 4 \____ \| ___ | (_ _) ___ |/ ___) _ \
ubhat 0:42863a11464a 5 _____) ) ____| | | || |_| ____( (___| | | |
ubhat 0:42863a11464a 6 (______/|_____)_|_|_| \__)_____)\____)_| |_|
ubhat 0:42863a11464a 7 (C)2013 Semtech
ubhat 0:42863a11464a 8
ubhat 0:42863a11464a 9 Description: Timer objects and scheduling management
ubhat 0:42863a11464a 10
ubhat 0:42863a11464a 11 License: Revised BSD License, see LICENSE.TXT file include in the project
ubhat 0:42863a11464a 12
ubhat 0:42863a11464a 13 Maintainer: Miguel Luis and Gregory Cristian
ubhat 0:42863a11464a 14 */
ubhat 0:42863a11464a 15 #include "board.h"
ubhat 0:42863a11464a 16
ubhat 0:42863a11464a 17 Timer TimeCounter;
ubhat 0:42863a11464a 18 Ticker LoadTimeCounter;
ubhat 0:42863a11464a 19
ubhat 0:42863a11464a 20 volatile uint32_t CurrentTime = 0;
ubhat 0:42863a11464a 21
ubhat 0:42863a11464a 22 void TimerResetTimeCounter( void )
ubhat 0:42863a11464a 23 {
ubhat 0:42863a11464a 24 CurrentTime = CurrentTime + TimeCounter.read_us( );
ubhat 0:42863a11464a 25 TimeCounter.reset( );
ubhat 0:42863a11464a 26 TimeCounter.start( );
ubhat 0:42863a11464a 27 }
ubhat 0:42863a11464a 28
ubhat 0:42863a11464a 29 void TimerTimeCounterInit( void )
ubhat 0:42863a11464a 30 {
ubhat 0:42863a11464a 31 TimeCounter.start( );
ubhat 0:42863a11464a 32 LoadTimeCounter.attach( &TimerResetTimeCounter, 10 );
ubhat 0:42863a11464a 33 }
ubhat 0:42863a11464a 34
ubhat 0:42863a11464a 35 TimerTime_t TimerGetCurrentTime( void )
ubhat 0:42863a11464a 36 {
ubhat 0:42863a11464a 37 CurrentTime += TimeCounter.read_us( );
ubhat 0:42863a11464a 38 TimeCounter.reset( );
ubhat 0:42863a11464a 39 TimeCounter.start( );
ubhat 0:42863a11464a 40 return ( ( TimerTime_t )CurrentTime );
ubhat 0:42863a11464a 41 }
ubhat 0:42863a11464a 42
ubhat 0:42863a11464a 43 TimerTime_t TimerGetElapsedTime( TimerTime_t savedTime )
ubhat 0:42863a11464a 44 {
ubhat 0:42863a11464a 45 CurrentTime += TimeCounter.read_us( );
ubhat 0:42863a11464a 46 TimeCounter.reset( );
ubhat 0:42863a11464a 47 TimeCounter.start( );
ubhat 0:42863a11464a 48 return ( TimerTime_t )( CurrentTime - savedTime );
ubhat 0:42863a11464a 49 }
ubhat 0:42863a11464a 50
ubhat 0:42863a11464a 51 TimerTime_t TimerGetFutureTime( TimerTime_t eventInFuture )
ubhat 0:42863a11464a 52 {
ubhat 0:42863a11464a 53 CurrentTime += TimeCounter.read_us( );
ubhat 0:42863a11464a 54 TimeCounter.reset( );
ubhat 0:42863a11464a 55 TimeCounter.start( );
ubhat 0:42863a11464a 56 return ( TimerTime_t )( CurrentTime + eventInFuture );
ubhat 0:42863a11464a 57 }
ubhat 0:42863a11464a 58
ubhat 0:42863a11464a 59 void TimerInit( TimerEvent_t *obj, void ( *callback )( void ) )
ubhat 0:42863a11464a 60 {
ubhat 0:42863a11464a 61 obj->value = 0;
ubhat 0:42863a11464a 62 obj->Callback = callback;
ubhat 0:42863a11464a 63 }
ubhat 0:42863a11464a 64
ubhat 0:42863a11464a 65 void TimerStart( TimerEvent_t *obj )
ubhat 0:42863a11464a 66 {
ubhat 0:42863a11464a 67 obj->Timer.attach_us( obj->Callback, obj->value );
ubhat 0:42863a11464a 68 }
ubhat 0:42863a11464a 69
ubhat 0:42863a11464a 70 void TimerStop( TimerEvent_t *obj )
ubhat 0:42863a11464a 71 {
ubhat 0:42863a11464a 72 obj->Timer.detach( );
ubhat 0:42863a11464a 73 }
ubhat 0:42863a11464a 74
ubhat 0:42863a11464a 75 void TimerSetValue( TimerEvent_t *obj, uint32_t value )
ubhat 0:42863a11464a 76 {
ubhat 0:42863a11464a 77 obj->value = value;
ubhat 0:42863a11464a 78 }