DISCO-L072CZ-LRWAN1-base

Dependencies:   BufferedSerial LoRaWAN-lib-st-murata ST-DEVKIT-LRWAN mbed

Committer:
alphaemmeo
Date:
Mon Dec 04 14:28:30 2017 +0000
Revision:
1:dcf49b02bfd9
Parent:
0:60680ad16314
base porting

Who changed what in which revision?

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