🔥 Remove json from sensor implementations
This commit is contained in:
@@ -1,9 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <list>
|
||||
#include <SPI.h>
|
||||
#include <Wire.h>
|
||||
#include <ArduinoJson.h>
|
||||
#include <utils/math_utils.h>
|
||||
|
||||
#include <Adafruit_BMP085_U.h>
|
||||
@@ -11,29 +9,11 @@
|
||||
|
||||
#include <peripherals/sensor.hpp>
|
||||
|
||||
struct BarometerMsg : public SensorMessageBase {
|
||||
struct BarometerMsg {
|
||||
float pressure {-1};
|
||||
float altitude {-1};
|
||||
float temperature {-1};
|
||||
bool success {false};
|
||||
|
||||
void toJson(JsonVariant v) const override {
|
||||
JsonArray arr = v.to<JsonArray>();
|
||||
arr.add(pressure);
|
||||
arr.add(altitude);
|
||||
arr.add(temperature);
|
||||
arr.add(success);
|
||||
}
|
||||
|
||||
void fromJson(JsonVariantConst v) override {
|
||||
JsonArrayConst arr = v.as<JsonArrayConst>();
|
||||
pressure = arr[0] | -1.0f;
|
||||
altitude = arr[1] | -1.0f;
|
||||
temperature = arr[2] | -1.0f;
|
||||
success = arr[3] | false;
|
||||
}
|
||||
|
||||
friend void toJson(JsonVariant v, BarometerMsg const& a) { a.toJson(v); }
|
||||
};
|
||||
|
||||
class Barometer : public SensorBase<BarometerMsg> {
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
#include <Wire.h>
|
||||
#include <ArduinoJson.h>
|
||||
|
||||
enum gesture_t : uint16_t {
|
||||
eGestureNone = 0x0000,
|
||||
@@ -21,16 +20,6 @@ enum orient_t : uint8_t { kRot0 = 0, kRot90, kRot180, kRot270 };
|
||||
struct GestureMsg {
|
||||
gesture_t gesture {eGestureNone};
|
||||
bool success {false};
|
||||
friend void toJson(JsonVariant v, GestureMsg const& a) {
|
||||
JsonArray arr = v.to<JsonArray>();
|
||||
arr.add(static_cast<uint16_t>(a.gesture));
|
||||
arr.add(a.success);
|
||||
}
|
||||
void fromJson(JsonVariantConst o) {
|
||||
JsonArrayConst arr = o.as<JsonArrayConst>();
|
||||
gesture = static_cast<gesture_t>(arr[0].as<uint16_t>());
|
||||
success = arr[1].as<bool>();
|
||||
}
|
||||
};
|
||||
|
||||
class PAJ7620U2 {
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <list>
|
||||
#include <SPI.h>
|
||||
#include <Wire.h>
|
||||
#include <ArduinoJson.h>
|
||||
#include <utils/math_utils.h>
|
||||
|
||||
#if FT_ENABLED(USE_MPU6050)
|
||||
@@ -16,30 +14,10 @@
|
||||
|
||||
#include <peripherals/sensor.hpp>
|
||||
|
||||
struct IMUAnglesMsg : public SensorMessageBase {
|
||||
struct IMUAnglesMsg {
|
||||
float rpy[3] {0, 0, 0};
|
||||
float temperature {-1};
|
||||
bool success {false};
|
||||
|
||||
void toJson(JsonVariant v) const override {
|
||||
JsonArray arr = v.to<JsonArray>();
|
||||
arr.add(rpy[0]);
|
||||
arr.add(rpy[1]);
|
||||
arr.add(rpy[2]);
|
||||
arr.add(temperature);
|
||||
arr.add(success);
|
||||
}
|
||||
|
||||
void fromJson(JsonVariantConst v) override {
|
||||
JsonArrayConst arr = v.as<JsonArrayConst>();
|
||||
rpy[0] = arr[0] | -1.0f;
|
||||
rpy[1] = arr[1] | -1.0f;
|
||||
rpy[2] = arr[2] | -1.0f;
|
||||
temperature = arr[3] | -1.0f;
|
||||
success = arr[4] | false;
|
||||
}
|
||||
|
||||
friend void toJson(JsonVariant v, IMUAnglesMsg const& a) { a.toJson(v); }
|
||||
};
|
||||
|
||||
class IMU : public SensorBase<IMUAnglesMsg> {
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <list>
|
||||
#include <SPI.h>
|
||||
#include <Wire.h>
|
||||
#include <ArduinoJson.h>
|
||||
#include <utils/math_utils.h>
|
||||
|
||||
#include <Adafruit_HMC5883_U.h>
|
||||
@@ -11,29 +9,10 @@
|
||||
|
||||
#include <peripherals/sensor.hpp>
|
||||
|
||||
struct MagnetometerMsg : public SensorMessageBase {
|
||||
struct MagnetometerMsg {
|
||||
float rpy[3] {0, 0, 0};
|
||||
float heading {-1};
|
||||
|
||||
void toJson(JsonVariant v) const override {
|
||||
JsonArray arr = v.to<JsonArray>();
|
||||
arr.add(rpy[0]);
|
||||
arr.add(rpy[1]);
|
||||
arr.add(rpy[2]);
|
||||
arr.add(heading);
|
||||
arr.add(success);
|
||||
}
|
||||
|
||||
void fromJson(JsonVariantConst v) override {
|
||||
JsonArrayConst arr = v.as<JsonArrayConst>();
|
||||
rpy[0] = arr[0] | 0.0f;
|
||||
rpy[1] = arr[1] | 0.0f;
|
||||
rpy[2] = arr[2] | 0.0f;
|
||||
heading = arr[3] | -1.0f;
|
||||
success = arr[4] | false;
|
||||
}
|
||||
|
||||
friend void toJson(JsonVariant v, MagnetometerMsg const& a) { a.toJson(v); }
|
||||
bool success {false};
|
||||
};
|
||||
|
||||
class Magnetometer : public SensorBase<MagnetometerMsg> {
|
||||
|
||||
@@ -47,14 +47,8 @@ class Peripherals : public StatefulService<PeripheralsConfiguration> {
|
||||
|
||||
void scanI2C(uint8_t lower = 1, uint8_t higher = 127);
|
||||
|
||||
void getI2CResult(JsonVariant &root);
|
||||
void getI2CResultProto(socket_message_I2CScanData &data);
|
||||
|
||||
void getIMUResult(JsonVariant &root);
|
||||
void getI2CScanProto(socket_message_I2CScanData &data);
|
||||
void getIMUProto(socket_message_IMUData &data);
|
||||
|
||||
void getSonarResult(JsonVariant &root);
|
||||
|
||||
void getSettingsProto(socket_message_PeripheralSettingsData &data);
|
||||
|
||||
/* IMU FUNCTIONS */
|
||||
@@ -92,8 +86,6 @@ class Peripherals : public StatefulService<PeripheralsConfiguration> {
|
||||
|
||||
inline void endTransaction() { xSemaphoreGiveRecursive(_accessMutex); }
|
||||
|
||||
JsonDocument doc;
|
||||
char message[MAX_ESP_IMU_SIZE];
|
||||
#if FT_ENABLED(USE_MPU6050 || USE_BNO055)
|
||||
IMU _imu;
|
||||
#endif
|
||||
|
||||
@@ -1,30 +1,10 @@
|
||||
#pragma once
|
||||
|
||||
#include <ArduinoJson.h>
|
||||
|
||||
struct SensorMessageBase {
|
||||
bool success;
|
||||
virtual void toJson(JsonVariant v) const = 0;
|
||||
virtual void fromJson(JsonVariantConst v) = 0;
|
||||
|
||||
virtual ~SensorMessageBase() = default;
|
||||
};
|
||||
|
||||
template <class T>
|
||||
class SensorBase {
|
||||
static_assert(std::is_base_of<SensorMessageBase, T>::value, "T must inherit from SensorMessageBase");
|
||||
|
||||
public:
|
||||
SensorBase() {}
|
||||
|
||||
virtual bool initialize() = 0;
|
||||
|
||||
virtual bool update() = 0;
|
||||
|
||||
virtual void getResults(JsonVariant &root) { _msg.toJson(root); }
|
||||
|
||||
virtual T getResult() { return _msg; }
|
||||
|
||||
virtual bool isActive() { return _msg.success; }
|
||||
|
||||
protected:
|
||||
|
||||
Reference in New Issue
Block a user