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
Diff: app/LoRaApp.cpp
- Revision:
- 18:18408c3c2d0c
- Parent:
- 15:39a23f5affd1
--- a/app/LoRaApp.cpp Sun Apr 16 23:12:47 2017 +0000 +++ b/app/LoRaApp.cpp Mon Apr 24 13:47:27 2017 +0000 @@ -37,7 +37,7 @@ { BuffAddr = memptr; memset( BuffAddr, 0, LORAWAN_APP_DATA_MAX_SIZE ); - BuffPtr = 0; + BuffPtr = 0; } Application::~Application( ) @@ -46,11 +46,8 @@ void Application::ApplicationAppendData( uint8_t *pData, uint8_t len ) { - if( ( BuffPtr + len ) <= LORAWAN_APP_DATA_SIZE ) - { - memcpy( BuffAddr + BuffPtr, pData, len ); - BuffPtr += len; - } + memcpy( BuffAddr + BuffPtr, pData, len ); + BuffPtr += len; } void Application::ApplicationPtrPos( uint8_t ptrPos ) @@ -70,7 +67,7 @@ uint16_t altitudeGps = atoi( Gps.NmeaGpsData.NmeaAltitude ); if( ( BuffPtr + 8 ) <= LORAWAN_APP_DATA_SIZE ) - { + { BuffAddr[BuffPtr++] = ( Gps.LatitudeBinary >> 16 ) & 0xFF; BuffAddr[BuffPtr++] = ( Gps.LatitudeBinary >> 8 ) & 0xFF; BuffAddr[BuffPtr++] = Gps.LatitudeBinary & 0xFF; @@ -84,54 +81,22 @@ } // 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; - + 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 } 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 - } - 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; } @@ -141,7 +106,7 @@ { int32_t i, j; - // Populate Tx Buffer with increasing byte values starting from 0x00, 0x01, 0x02 ... + // Populate Tx Buffer with increasing byte values starting from 0x00, 0x01, 0x02 ... for( i = BuffPtr, j = 0; i < LORAWAN_APP_DATA_SIZE; i++ ) { BuffAddr[i] = j++; @@ -159,7 +124,7 @@ statusReg = Mma8451q.read_single( MMA8451_PL_STATUS ); /* Display Orientation of NAMote on Serial Port */ - SerialAcclMetrDisplay( statusReg ); + //SerialAcclMetrDisplay( statusReg ); // If Orientation of the Mote changed then let Green LED ON if( ( statusReg & 0x80 ) != 0 ) @@ -188,14 +153,14 @@ { BuffAddr[BuffPtr++] = 0; // horizontal = false BuffAddr[BuffPtr++] = 0x11; // vertical = true - } - } - + } + } + break; - } + } case AppAcclSenet: - { + { uint8_t statusReg; // Read the PS_STATUS register @@ -204,7 +169,7 @@ /* 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 Orientation of the Mote changed then populate Upper Nibble of 0th Byte of Tx Buffer if( ( statusReg & 0x40 ) != 0 ) { AppLed = 0; @@ -216,81 +181,23 @@ AppLed = 1; CtrlLED( Green, LED_ON ); BuffAddr[BuffPtr++] = 10; // vertical - } - - break; - } - - case AppAcclSensor: - { - uint8_t statusReg; - int8_t regVal; - int16_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; - uint8_t *p = (uint8_t *) &PushButtonCnt; + uint8_t *p = ( uint8_t * )&PushButtonCnt; PushButtonCnt = LoRaMacUplinkStatus.UplinkCounter; - - memcpy( &BuffAddr[BuffPtr], p, sizeof(uint16_t) ); - + + memcpy( &BuffAddr[BuffPtr], p, sizeof( uint16_t ) ); break; } default: - { + { break; } } @@ -359,6 +266,10 @@ TimerInit( &LedTimer, OnGreenLedTimerEvent ); break; } + default: + { + break; + } } } @@ -394,6 +305,10 @@ GreenLed = LED_ON; break; } + default: + { + break; + } } } @@ -439,6 +354,10 @@ } break; } + default: + { + break; + } } } @@ -482,19 +401,19 @@ void CheckOrientation( void ) { uint8_t statusReg; - + // Read the PS_STATUS register statusReg = Mma8451q.read_single( MMA8451_PL_STATUS ); - // If Orientation of the Mote changed then populate Upper Nibble of 0th Byte of Tx Buffer + // If Orientation of the Mote changed then populate Upper Nibble of 0th Byte of Tx Buffer if( ( statusReg & 0x40 ) != 0 ) - { + { CtrlLED( Green, LED_OFF ); VerticalStatus = false; // horizontal } else - { + { CtrlLED( Green, LED_ON ); VerticalStatus = true; // vertical - } -} \ No newline at end of file + } +}