diff options
-rw-r--r-- | Mode/Mode.cpp | 10 | ||||
-rw-r--r-- | Mode/Mode.h | 3 | ||||
-rw-r--r-- | libs/SensorHandler/SensorHandler.cpp | 33 | ||||
-rw-r--r-- | libs/SensorHandler/SensorHandler.h | 24 |
4 files changed, 45 insertions, 25 deletions
diff --git a/Mode/Mode.cpp b/Mode/Mode.cpp index 73292dc..059ddb3 100644 --- a/Mode/Mode.cpp +++ b/Mode/Mode.cpp @@ -36,7 +36,8 @@ Mode::Mode(DOGS102* lcd, ButtonHandler* buttons, mDot* dot, LoRaHandler* lora) _next_tx(0), _send_data(false), _gpsUART(PA_2, PA_3), - _mdot_gps(&_gpsUART) + _mdot_gps(&_gpsUART), + _mdot_sensors() {} Mode::~Mode() {} @@ -152,6 +153,13 @@ void Mode::updateData(DataItem& data, DataType type, bool status) { data.power = _power; } +void Mode::updateSensors(SensorItem& data) { + data.accel_data = _mdot_sensors.getAcceleration(); + data.baro_data = _mdot_sensors.getBarometer(); + data.lux_data = _mdot_sensors.getLight(); + data.pressure = _mdot_sensors.getPressure(); +} + uint32_t Mode::getIndex(DataType type) { uint32_t index = 0; mDot::mdot_file file; diff --git a/Mode/Mode.h b/Mode/Mode.h index 5d41ed1..d97dfb1 100644 --- a/Mode/Mode.h +++ b/Mode/Mode.h @@ -9,6 +9,7 @@ #include "ISL29011.h" #include "MMA845x.h" #include "MPL3115A2.h" +#include "SensorHandler.h" class Mode { public: @@ -47,6 +48,7 @@ class Mode { bool deleteDataFile(); bool appendDataFile(const DataItem& data); void updateData(DataItem& data, DataType type, bool status); + void updateSensors(SensorItem& data); uint32_t getIndex(DataType type); std::vector<uint8_t> formatSurveyData(DataItem& data); @@ -71,6 +73,7 @@ class Mode { bool _send_data; mts::MTSSerial _gpsUART; GPSPARSER _mdot_gps; + SensorHandler _mdot_sensors; }; #endif diff --git a/libs/SensorHandler/SensorHandler.cpp b/libs/SensorHandler/SensorHandler.cpp index 151028a..6b25f7e 100644 --- a/libs/SensorHandler/SensorHandler.cpp +++ b/libs/SensorHandler/SensorHandler.cpp @@ -5,15 +5,8 @@ * @version 1.0 * */ + #include "SensorHandler.h" -#include "mbed.h" -#include "MMA845x.h" -#include "MPL3115A2.h" -#include "ISL29011.h" -#include "DOGS102.h" -#include "rtos.h" -#include <string> -#include <vector> SensorHandler::SensorHandler() : _getSensorThread(&SensorHandler::startSensorThread,this), @@ -23,7 +16,7 @@ SensorHandler::SensorHandler() _lightSensor(_mDoti2c) { _getSensorThread.signal_set(START_THREAD); - + return; } SensorHandler::~SensorHandler(void) @@ -62,6 +55,8 @@ void SensorHandler::startSensorThread(void const *p) void SensorHandler::readSensors() { + uint8_t result; + _getSensorThread.signal_wait(START_THREAD); while(1){ // Test Accelerometer XYZ data ready bit to see if acquisition complete do { @@ -70,7 +65,7 @@ void SensorHandler::readSensors() } while ((result & MMA845x::XYZDR) == 0 ); // Retrieve accelerometer data - accel_data = _accelerometer.getXYZ(); + _accelerometerData = _accelerometer.getXYZ(); // Trigger a Pressure reading _barometricSensor.setParameters(MPL3115A2::DATA_NORMAL, MPL3115A2::DM_BAROMETER, MPL3115A2::OR_16, @@ -84,7 +79,7 @@ void SensorHandler::readSensors() } while ((result & MPL3115A2::PTDR) == 0 ); // Retrieve barometric pressure - pressure = _barometricSensor.getBaroData() >> 12; // convert 32 bit signed to 20 bit unsigned value + _pressure = _barometricSensor.getBaroData() >> 12; // convert 32 bit signed to 20 bit unsigned value // Trigger a Altitude reading _barometricSensor.setParameters(MPL3115A2::DATA_NORMAL, MPL3115A2::DM_ALTIMETER, MPL3115A2::OR_16, @@ -98,22 +93,26 @@ void SensorHandler::readSensors() } while ((result & MPL3115A2::PTDR) == 0 ); // Retrieve temperature - baro_data = _barometricSensor.getAllData(false); + _barometerData = _barometricSensor.getAllData(false); // Retrieve light level - lux_data = _lightSensor.getData(); + _light = _lightSensor.getData(); } } -MMA845x_DATA getAcceleration(){ +MMA845x_DATA SensorHandler::getAcceleration(){ + return _accelerometerData; } -uint16_t getLight(){ +uint16_t SensorHandler::getLight(){ + return _light; } -uint_32t getPressure(){ +uint32_t SensorHandler::getPressure(){ + return _pressure; } -MPL3115A2_DATA getTemp(){ +MPL3115A2_DATA SensorHandler::getBarometer(){ + return _barometerData; } diff --git a/libs/SensorHandler/SensorHandler.h b/libs/SensorHandler/SensorHandler.h index 23e31a0..73f9c0f 100644 --- a/libs/SensorHandler/SensorHandler.h +++ b/libs/SensorHandler/SensorHandler.h @@ -10,29 +10,39 @@ #define SENSORHANDLER_H #include "mbed.h" +#include "MMA845x.h" +#include "MPL3115A2.h" +#include "ISL29011.h" +#include "DOGS102.h" #include "rtos.h" -#include "MTSSerial.h" #include <string> #include <vector> -#include <ctime> #define START_THREAD 1 class SensorHandler { public: - MMA845x_DATA getAcceleration(); - uint16_t getLight(); - uint_32t getPressure(); - MPL3115A2_DATA getTemp(); + SensorHandler(void); + ~SensorHandler(void); + MMA845x_DATA getAcceleration(void); + uint16_t getLight(void); + uint32_t getPressure(void); + MPL3115A2_DATA getBarometer(void); private: Thread _getSensorThread; + static void startSensorThread (void const *p); void readSensors(void); + void initSensors(void); I2C _mDoti2c; MMA845x _accelerometer; MPL3115A2 _barometricSensor; ISL29011 _lightSensor; -} + MMA845x_DATA _accelerometerData; + MPL3115A2_DATA _barometerData; + uint16_t _light; + uint32_t _pressure; +}; #endif //SENSORHANDLER_H |