Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: LoRaWAN-lib SX1272Lib lib_gps lib_mma8451q lib_mpl3115a2 mbed
Fork of LoRaWAN-NAMote72-Application-Demo by
Diff: app/LoRaEventProc.cpp
- Revision:
- 0:69f2e28d12c1
- Child:
- 5:6ffeac53b7cb
diff -r 000000000000 -r 69f2e28d12c1 app/LoRaEventProc.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/app/LoRaEventProc.cpp Tue May 17 00:21:55 2016 +0000
@@ -0,0 +1,178 @@
+/*
+ / _____) _ | |
+( (____ _____ ____ _| |_ _____ ____| |__
+ \____ \| ___ | (_ _) ___ |/ ___) _ \
+ _____) ) ____| | | || |_| ____( (___| | | |
+(______/|_____)_|_|_| \__)_____)\____)_| |_|
+ (C)2015 Semtech
+
+Description: Define events during Join, Tx & Rx
+ Prepare TX packet by appending with appropriate application data
+
+License: Revised BSD License, see LICENSE.TXT file include in the project
+
+Maintainer: Uttam Bhat
+*/
+
+#include "LoRaEventProc.h"
+
+bool AppLed = 0;
+
+/*!
+ * \brief Prepares the payload of the frame based on application port
+ */
+void PrepareLoRaFrame( uint8_t port )
+{
+
+ switch( port )
+ {
+ case 5:
+ {
+ uint8_t tmp;
+ uint8_t tmpLength;
+ uint8_t ptrIndex = 0;
+
+ // Point the pointer to position index of Tx Buffer
+ LoRaApp.ApplicationPtrPos( ptrIndex );
+
+ tmp = ( AppLed != 0 ) ? 0x0F : 0x00;
+ tmpLength = 1;
+
+ LoRaApp.ApplicationAppendData( &tmp, tmpLength ); // Populate lower nibble of 0th Byte with LED state
+
+ /*!
+ * Read Temperature
+ * Appends 1 Byte to TX buffer
+ */
+ LoRaApp.ApplicationCall( AppTemp );
+
+ /*!
+ * Read Battery
+ * Appends 1 Byte to TX buffer
+ */
+ LoRaApp.ApplicationCall( AppBat );
+
+ /*!
+ * Read GPS coordinates
+ * Appends 8 Bytes (3 bytes longitude, 3 bytes latitude, 2 bytes altitude) to TX buffer
+ */
+ LoRaApp.ApplicationCall( AppGps );
+
+ /*!
+ * Read Accelerometer
+ * Appends 2 Bytes to TX buffer
+ * Value Orientation
+ * 0x99 0x00 horizontal + faceup
+ * 0x66 0x00 horizontal + facedown
+ * 0x00 0x11 vertical
+ */
+ LoRaApp.ApplicationCall( AppAccl ); // Generate Accelerometer data bytes
+
+ /*!
+ * Generate Ramp data bytes
+ * Appends incremental values of 1 Byte each to TX buffer until Full
+ */
+ LoRaApp.ApplicationCall( AppRamp );
+
+ break;
+ }
+
+ // Senet M2X ORIENTATION Demo
+ // Set LORAWAN_APP_DATA_SIZE to 2
+ case 6:
+ {
+ uint8_t ptrIndex = 1;
+
+ //Point the pointer to position index of Tx Buffer
+ LoRaApp.ApplicationPtrPos( ptrIndex );
+
+ LoRaApp.ApplicationCall( AppAcclSenet ); // Generate Accelerometer data bytes
+
+
+
+ break;
+ }
+
+ /* Senet GPS Demo
+ Data Format (in Hex):
+ [01, 02, Lattitude (3 bytes), Longitude (3 Bytes), Elevation (2 bytes), Tx Power (1 byte)]
+ */
+ case 7:
+ {
+ uint8_t ptrIndex = 0;
+ uint8_t tmp[] = {0x01, 0x02};
+
+ //Point the pointer to position index of Tx Buffer
+ LoRaApp.ApplicationPtrPos( ptrIndex );
+
+ LoRaApp.ApplicationAppendData( tmp, 2 );
+
+ LoRaApp.ApplicationCall( AppGps ); // Generate Accelerometer data bytes
+
+ uint8_t pow = 30 - 2*(( uint8_t ) LoRaMacUplinkStatus.TxPower);
+ LoRaApp.ApplicationAppendData( &pow, 1 );
+
+ break;
+ }
+
+ default:
+ break;
+ }
+}
+
+/*!
+ * \brief What to do during JOIN process ? blink/toggle LED etc.
+ */
+void JoinEvent( void )
+{
+ // CtrlLED is defined in LoRaBoardAppIf.h
+ // param 1: LED color (Red, Yellow or Green)
+ // param 2: LED_ON or LED_OFF
+ CtrlLED( Red, LED_ON );
+}
+
+
+/*!
+ * \brief What to do during TX ? blink/toggle LED etc.
+ */
+void TxEvent( void )
+{
+ int blinkTime = 25000;
+
+ // Blink Red LED for 25msec
+ BlinkLED( Red, blinkTime );
+}
+
+void RxEvent()
+{
+ // Toggle yellow LED
+ ToggleLED( Yellow );
+
+ // If Rx Data is 0x01 turn on Green LED else if 0x0 Turn Green LED off
+ if( LoRaMacDownlinkStatus.BufferSize == 1 )
+ {
+ if( LoRaMacDownlinkStatus.Buffer[0] == 0x01 )
+ {
+ AppLed = 1;
+ }
+ else
+ {
+ if( LoRaMacDownlinkStatus.Buffer[0] == 0x00 )
+ {
+ AppLed = 0;
+ }
+ }
+ }
+
+ if( AppLed != 0 )
+ {
+ // Turn USR_LED ON
+ CtrlLED( Usr, LED_ON );
+ }
+ else
+ {
+ // Turn USR_LED OFF
+ CtrlLED( Usr, LED_OFF );
+ }
+}
+
