Sensor Demo for CTIA
Dependencies: LoRaWAN-lib SX1272Lib lib_gps lib_mma8451q lib_mpl3115a2 mbed
Fork of LoRaWAN-NAMote72-Application-Demo by
Diff: app/LoRaApp.cpp
- Revision:
- 14:172b8e37168c
- Parent:
- 13:238b23d4025c
--- 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;