Sensor Demo for CTIA

Dependencies:   LoRaWAN-lib SX1272Lib lib_gps lib_mma8451q lib_mpl3115a2 mbed

Fork of LoRaWAN-NAMote72-Application-Demo by Semtech

Files at this revision

API Documentation at this revision

Comitter:
ubhat
Date:
Tue Aug 30 03:57:19 2016 +0000
Parent:
13:238b23d4025c
Commit message:
Add Application for Sensor

Changed in this revision

app/Config.h Show annotated file Show diff for this revision Revisions of this file
app/LoRaApp.cpp Show annotated file Show diff for this revision Revisions of this file
app/LoRaEventProc.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/app/Config.h	Fri Aug 19 00:29:34 2016 +0000
+++ b/app/Config.h	Tue Aug 30 03:57:19 2016 +0000
@@ -45,7 +45,7 @@
  * \remark 1 : Confirmed messages enabled. Must receive ACK from network server
            0 : Confirmed messages disabled. 
  */
-#define LORAWAN_CONFIRMED_MSG_ON                    0
+#define LORAWAN_CONFIRMED_MSG_ON                    1
 
 /*!
  * LoRaWAN Adaptive Data Rate
@@ -63,7 +63,7 @@
 /*!
  * LoRaWAN application port
  */
-#define LORAWAN_APP_PORT                            13
+#define LORAWAN_APP_PORT                            5
 
 /*!
  * LoRaWAN User defined Tx Power
@@ -142,6 +142,8 @@
  */
 #define LORAWAN_APP_DATA_SIZE                       11
 
+#define BAT_VAL_PERCENT
+
 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
 
 
--- a/app/LoRaApp.cpp	Fri Aug 19 00:29:34 2016 +0000
+++ b/app/LoRaApp.cpp	Tue Aug 30 03:57:19 2016 +0000
@@ -86,6 +86,7 @@
             if( ( BuffPtr + 2 ) <= LORAWAN_APP_DATA_SIZE )
             {                
                 volatile uint8_t stat;
+                float val;
 
                 Mpl3115a2.SetModeBarometer();
                 Mpl3115a2.ToggleOneShot( );
@@ -93,11 +94,14 @@
                 stat = Mpl3115a2.read(STATUS_REG);       
                 while( (stat & 0x04) != 0x04 ) {
                     wait(0.01);   
-                    stat = Mpl3115a2.read(STATUS_REG);
+                    stat = Mpl3115a2.read(STATUS_REG);                  
                 }
+
+                val = Mpl3115a2.ReadBarometer()/100.0;
                 
-                BuffAddr[BuffPtr++] = Mpl3115a2.read(OUT_P_MSB_REG);
-                BuffAddr[BuffPtr++] = Mpl3115a2.read(OUT_P_CSB_REG);
+                BuffAddr[BuffPtr++] = ( ( uint16_t ) val >> 8 ) & 0xFF;
+                BuffAddr[BuffPtr++] = ( ( uint16_t ) val ) & 0xFF;
+                
             }
             break;
         }
@@ -118,7 +122,13 @@
         {  
             if( ( BuffPtr + 1 ) <= LORAWAN_APP_DATA_SIZE )
             {
+#ifdef BAT_VAL_PERCENT
+                uint16_t value;
+                value = BoardGetBatteryLevel();
+                BuffAddr[BuffPtr++] = ( value * 100 ) >> 8;  // Bat level in %
+#else
                 BuffAddr[BuffPtr++] = BoardGetBatteryLevel( );              // Per LoRaWAN spec; 0 = Charging; 1...254 = level, 255 = N/A
+#endif                
             }
             break;
         }
@@ -210,7 +220,9 @@
 
         case AppAcclSensor:
         {   
-            uint8_t statusReg; 
+            uint8_t statusReg;
+            uint8_t regVal;
+            uint16_t axesData;
 
             // Read the PS_STATUS register
             statusReg = Mma8451q.read_single( MMA8451_PL_STATUS );
@@ -229,10 +241,34 @@
             } 
 
             // Read and populate device orientation in Tx Buffer
-            if( ( BuffPtr + 2 ) <= LORAWAN_APP_DATA_SIZE )
+            if( ( BuffPtr + 6 ) <= LORAWAN_APP_DATA_SIZE )
             {
-                Mma8451q.read(MMA8451_OUT_X_MSB, &BuffAddr[BuffPtr], 6);
-                BuffPtr += 6;
+                uint8_t addr;
+                addr = MMA8451_OUT_X_MSB;
+
+                // Read X-axis Data
+                regVal = Mma8451q.read_single( addr++ );
+                axesData = regVal << 8;
+                regVal = Mma8451q.read_single( addr++ );
+                axesData |= regVal;             
+                BuffAddr[BuffPtr++] = ( axesData >> 10 ) & 0xFF; 
+                BuffAddr[BuffPtr++] = ( axesData >> 2 ) & 0xFF; 
+
+                // Read Y-axis Data
+                regVal = Mma8451q.read_single( addr++ );
+                axesData = regVal << 8;
+                regVal = Mma8451q.read_single( addr++ );
+                axesData |= regVal;             
+                BuffAddr[BuffPtr++] = ( axesData >> 10 ) & 0xFF; 
+                BuffAddr[BuffPtr++] = ( axesData >> 2 ) & 0xFF; 
+
+                // Read Z-axis Data
+                regVal = Mma8451q.read_single( addr++ );
+                axesData = regVal << 8;
+                regVal = Mma8451q.read_single( addr++ );
+                axesData |= regVal;             
+                BuffAddr[BuffPtr++] = ( axesData >> 10 ) & 0xFF; 
+                BuffAddr[BuffPtr++] = ( axesData >> 2 ) & 0xFF; 
             }
             
             break;
--- a/app/LoRaEventProc.cpp	Fri Aug 19 00:29:34 2016 +0000
+++ b/app/LoRaEventProc.cpp	Tue Aug 30 03:57:19 2016 +0000
@@ -268,6 +268,7 @@
     default:
         {
             // Schedule next packet transmission
+            TxDutyCycleTime = APP_TX_DUTYCYCLE + randr( -APP_TX_DUTYCYCLE_RND, APP_TX_DUTYCYCLE_RND );
             TimerSetValue( &TxNextPacketTimer, TxDutyCycleTime );
             TimerStart( &TxNextPacketTimer );
             break;