diff --git a/esp32/include/peripherals/barometer.h b/esp32/include/peripherals/barometer.h index 5a67232..3898199 100644 --- a/esp32/include/peripherals/barometer.h +++ b/esp32/include/peripherals/barometer.h @@ -1,9 +1,7 @@ #pragma once -#include #include #include -#include #include #include @@ -11,29 +9,11 @@ #include -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(); - arr.add(pressure); - arr.add(altitude); - arr.add(temperature); - arr.add(success); - } - - void fromJson(JsonVariantConst v) override { - JsonArrayConst arr = v.as(); - 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 { diff --git a/esp32/include/peripherals/gesture.h b/esp32/include/peripherals/gesture.h index 4f093fe..1deeff0 100644 --- a/esp32/include/peripherals/gesture.h +++ b/esp32/include/peripherals/gesture.h @@ -1,7 +1,6 @@ #pragma once #include -#include 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(); - arr.add(static_cast(a.gesture)); - arr.add(a.success); - } - void fromJson(JsonVariantConst o) { - JsonArrayConst arr = o.as(); - gesture = static_cast(arr[0].as()); - success = arr[1].as(); - } }; class PAJ7620U2 { diff --git a/esp32/include/peripherals/imu.h b/esp32/include/peripherals/imu.h index 8af01f6..8c324c0 100644 --- a/esp32/include/peripherals/imu.h +++ b/esp32/include/peripherals/imu.h @@ -1,9 +1,7 @@ #pragma once -#include #include #include -#include #include #if FT_ENABLED(USE_MPU6050) @@ -16,30 +14,10 @@ #include -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(); - 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(); - 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 { diff --git a/esp32/include/peripherals/magnetometer.h b/esp32/include/peripherals/magnetometer.h index c9ca221..93ebdd4 100644 --- a/esp32/include/peripherals/magnetometer.h +++ b/esp32/include/peripherals/magnetometer.h @@ -1,9 +1,7 @@ #pragma once -#include #include #include -#include #include #include @@ -11,29 +9,10 @@ #include -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(); - 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(); - 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 { diff --git a/esp32/include/peripherals/peripherals.h b/esp32/include/peripherals/peripherals.h index 72c0668..dd18561 100644 --- a/esp32/include/peripherals/peripherals.h +++ b/esp32/include/peripherals/peripherals.h @@ -47,14 +47,8 @@ class Peripherals : public StatefulService { 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 { inline void endTransaction() { xSemaphoreGiveRecursive(_accessMutex); } - JsonDocument doc; - char message[MAX_ESP_IMU_SIZE]; #if FT_ENABLED(USE_MPU6050 || USE_BNO055) IMU _imu; #endif diff --git a/esp32/include/peripherals/sensor.hpp b/esp32/include/peripherals/sensor.hpp index a9ec8c6..990f240 100644 --- a/esp32/include/peripherals/sensor.hpp +++ b/esp32/include/peripherals/sensor.hpp @@ -1,30 +1,10 @@ #pragma once -#include - -struct SensorMessageBase { - bool success; - virtual void toJson(JsonVariant v) const = 0; - virtual void fromJson(JsonVariantConst v) = 0; - - virtual ~SensorMessageBase() = default; -}; - template class SensorBase { - static_assert(std::is_base_of::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: diff --git a/esp32/src/main.cpp b/esp32/src/main.cpp index 5ae0ba8..60018f4 100644 --- a/esp32/src/main.cpp +++ b/esp32/src/main.cpp @@ -155,7 +155,7 @@ void setupEventSocket() { socket.on([&](const socket_message_I2CScanDataRequest &data, int clientId) { peripherals.scanI2C(); socket_message_I2CScanData result = socket_message_I2CScanData_init_zero; - peripherals.getI2CResultProto(result); + peripherals.getI2CScanProto(result); socket.emit(result, clientId); }); diff --git a/esp32/src/peripherals/peripherals.cpp b/esp32/src/peripherals/peripherals.cpp index 5af6c6a..3a134a2 100644 --- a/esp32/src/peripherals/peripherals.cpp +++ b/esp32/src/peripherals/peripherals.cpp @@ -52,18 +52,7 @@ void Peripherals::updatePins() { } } -void Peripherals::getI2CResult(JsonVariant &root) { - char output[150]; - root["sda"] = state().sda; - root["scl"] = state().scl; - JsonArray addresses = root["addresses"].to(); - for (auto &address : addressList) { - addresses.add(address); - } - ESP_LOGI("Peripherals", "Emitting I2C scan results: %d", addressList.size()); -} - -void Peripherals::getI2CResultProto(socket_message_I2CScanData &data) { +void Peripherals::getI2CScanProto(socket_message_I2CScanData &data) { data.devices_count = 0; for (auto &address : addressList) { if (data.devices_count >= 16) break; @@ -196,29 +185,6 @@ gesture_t Peripherals::takeGesture() { float Peripherals::leftDistance() { return _left_distance; } float Peripherals::rightDistance() { return _right_distance; } -void Peripherals::getIMUResult(JsonVariant &root) { -#if FT_ENABLED(USE_MPU6050 || USE_BNO055) - JsonVariant imu = root["imu"].to(); - _imu.getResults(imu); -#endif -#if FT_ENABLED(USE_HMC5883) - JsonVariant mag = root["mag"].to(); - _mag.getResults(mag); -#endif -#if FT_ENABLED(USE_BMP180) - JsonVariant bmp = root["bmp"].to(); - _bmp.getResults(bmp); -#endif -} - -void Peripherals::getSonarResult(JsonVariant &root) { -#if FT_ENABLED(USE_USS) - JsonArray array = root.to(); - array[0] = _left_distance; - array[1] = _right_distance; -#endif -} - bool Peripherals::calibrateIMU() { #if FT_ENABLED(USE_MPU6050 || USE_BNO055) beginTransaction();