mQ Branch for NA mote testing

Dependencies:   LoRaWAN-lib SX1272Lib-mQ lib_gps lib_mma8451q lib_mpl3115a2 mbed

Fork of LoRaWAN-NAMote72-Application-Demo by Semtech

Revision:
13:6b6f4be13633
Parent:
7:92f4f419f91f
Child:
14:f687ec277e1b
--- a/app/LoRaApp.cpp	Fri Aug 05 20:45:12 2016 +0000
+++ b/app/LoRaApp.cpp	Tue Aug 30 06:35:16 2016 +0000
@@ -81,22 +81,54 @@
         }
 
         // Appends 1 Byte to TX buffer
+        case AppPrsr:
+        {               
+            if( ( BuffPtr + 2 ) <= LORAWAN_APP_DATA_SIZE )
+            {                
+                volatile uint8_t stat;
+                float val;
+
+                Mpl3115a2.SetModeBarometer();
+                Mpl3115a2.ToggleOneShot( );
+                   
+                stat = Mpl3115a2.read(STATUS_REG);       
+                while( (stat & 0x04) != 0x04 ) {
+                    wait(0.01);   
+                    stat = Mpl3115a2.read(STATUS_REG);                  
+                }
+
+                val = Mpl3115a2.ReadBarometer()/100.0;
+                
+                BuffAddr[BuffPtr++] = ( ( uint16_t ) val >> 8 ) & 0xFF;
+                BuffAddr[BuffPtr++] = ( ( uint16_t ) val ) & 0xFF;
+                
+            }
+            break;
+        }
+
+        // Appends 1 Byte to TX buffer
         case AppTemp:
         {           
             Mpl3115a2.ReadTemperature( );
             if( ( BuffPtr + 1 ) <= LORAWAN_APP_DATA_SIZE )
             {
-                BuffAddr[BuffPtr++] = ( int32_t )Mpl3115a2.Temperature;     // Signed degrees Celcius in half degree units. So, +/-63 °C                         
+                BuffAddr[BuffPtr++] = ( int32_t )Mpl3115a2.Temperature;     // Signed degrees Celcius in half degree units. So, +/-63 °C                         
             }
             break;
-        }
+        }       
 
         // Appends 1 Byte to TX buffer
         case AppBat:
         {  
             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;
         }
@@ -186,6 +218,62 @@
             break;
         }
 
+        case AppAcclSensor:
+        {   
+            uint8_t statusReg;
+            uint8_t regVal;
+            uint16_t axesData;
+
+            // Read the PS_STATUS register
+            statusReg = Mma8451q.read_single( MMA8451_PL_STATUS );
+
+            /* Display Orientation of NAMote on Serial Port */
+            SerialAcclMetrDisplay( statusReg );
+
+            // If Orientation of the Mote changed then populate Upper Nibble of 0th Byte of Tx Buffer                       
+            if( ( statusReg & 0x80 ) != 0 )
+            {                   
+                CtrlLED( Green, LED_ON );                
+            }
+            else
+            {                
+                CtrlLED( Green, LED_OFF );
+            } 
+
+            // Read and populate device orientation in Tx Buffer
+            if( ( BuffPtr + 6 ) <= LORAWAN_APP_DATA_SIZE )
+            {
+                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;
+        }
+
         case AppPushButton:
         {   
             uint16_t PushButtonCnt;