summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Mode/Mode.cpp10
-rw-r--r--Mode/Mode.h3
-rw-r--r--libs/SensorHandler/SensorHandler.cpp33
-rw-r--r--libs/SensorHandler/SensorHandler.h24
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