application layer with: button, LED, pot, tempSense

Dependencies:   mbed SX1272Lib

Fork of LoRaWAN-demo-72-bootcamp by Semtech

Use with sx1272 shield with grove peripherals connected:

D8 D9: ButtonRX TXA3 A4: TempSense
D6 D7:SCL SDA : LEDA1 A2: Pot

Button

Sends to different payloads: short press (under 1 sec)
long press: held down > 1 sec.

serial console keys

115200bps, 8N1
Enter key not used
Keys '0' to '3': cayenne channel number
'0': pot (rotary sensor)
'1': temperature
' 2': digital out
'3': analog out

Committer:
Wayne Roberts
Date:
Tue Feb 20 22:16:57 2018 +0000
Revision:
14:f8c7c85fc8e8
Parent:
9:0083afd69815
add frame count to digital input

Who changed what in which revision?

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