to be used with the DSPLoRa module (minor changes wrt transmit power)

Dependents:   DSP_LoRaWAN

Fork of LoRaWAN-lib by S P

Committer:
mluis
Date:
Tue Oct 20 13:21:26 2015 +0000
Revision:
0:91d1a7783bb9
Library creation synchronized with GitHub LoRaMac-node v3.4 (https://github.com/Lora-net/LoRaMac-node)

Who changed what in which revision?

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