diff --git a/esp32/include/msgs/i2c_scan_msg.hpp b/esp32/include/msgs/i2c_scan_msg.hpp new file mode 100644 index 0000000..49aeb13 --- /dev/null +++ b/esp32/include/msgs/i2c_scan_msg.hpp @@ -0,0 +1,17 @@ +#pragma once +#include +#include + +struct I2CScanMsg { + std::vector addresses; + + friend void toJson(JsonVariant v, I2CScanMsg const& c) { + JsonArray arr = v.to(); + for (uint8_t addr : c.addresses) arr.add(addr); + } + + void fromJson(JsonVariantConst o) { + addresses.clear(); + for (JsonVariantConst val : o.as()) addresses.push_back(val.as()); + } +}; \ No newline at end of file diff --git a/esp32/include/msgs/motion_angles_msg.hpp b/esp32/include/msgs/motion_angles_msg.hpp new file mode 100644 index 0000000..7cf05d5 --- /dev/null +++ b/esp32/include/msgs/motion_angles_msg.hpp @@ -0,0 +1,20 @@ +#pragma once +#include + +struct MotionAnglesMsg { + float angles[12]; + + friend void toJson(JsonVariant v, MotionAnglesMsg const &m) { + JsonArray arr = v.to(); + for (int i = 0; i < 12; i++) { + arr.add(m.angles[i]); + } + } + + void fromJson(JsonVariantConst o) { + JsonArrayConst arr = o.as(); + for (int i = 0; i < 12 && i < arr.size(); i++) { + angles[i] = arr[i].as(); + } + } +}; \ No newline at end of file diff --git a/esp32/include/msgs/motion_input_msg.hpp b/esp32/include/msgs/motion_input_msg.hpp new file mode 100644 index 0000000..3946e6b --- /dev/null +++ b/esp32/include/msgs/motion_input_msg.hpp @@ -0,0 +1,28 @@ +#pragma once +#include + +struct MotionInputMsg { + float lx, ly, rx, ry, h, s, s1; + + friend void toJson(JsonVariant v, MotionInputMsg const &m) { + JsonArray arr = v.to(); + arr.add(m.lx); + arr.add(m.ly); + arr.add(m.rx); + arr.add(m.ry); + arr.add(m.h); + arr.add(m.s); + arr.add(m.s1); + } + + void fromJson(JsonVariantConst o) { + JsonArrayConst arr = o.as(); + lx = arr[0].as(); + ly = arr[1].as(); + rx = arr[2].as(); + ry = arr[3].as(); + h = arr[4].as(); + s = arr[5].as(); + s1 = arr[6].as(); + } +}; \ No newline at end of file diff --git a/esp32/include/msgs/motion_mode_msg.hpp b/esp32/include/msgs/motion_mode_msg.hpp new file mode 100644 index 0000000..ab87563 --- /dev/null +++ b/esp32/include/msgs/motion_mode_msg.hpp @@ -0,0 +1,10 @@ +#pragma once +#include + +struct MotionModeMsg { + int mode; + + friend void toJson(JsonVariant v, MotionModeMsg const &m) { v.set(m.mode); } + + void fromJson(JsonVariantConst o) { mode = o.as(); } +}; \ No newline at end of file diff --git a/esp32/include/msgs/motion_position_msg.hpp b/esp32/include/msgs/motion_position_msg.hpp new file mode 100644 index 0000000..3be9de2 --- /dev/null +++ b/esp32/include/msgs/motion_position_msg.hpp @@ -0,0 +1,26 @@ +#pragma once +#include + +struct MotionPositionMsg { + float omega, phi, psi, xm, ym, zm; + + friend void toJson(JsonVariant v, MotionPositionMsg const &m) { + JsonArray arr = v.to(); + arr.add(m.omega); + arr.add(m.phi); + arr.add(m.psi); + arr.add(m.xm); + arr.add(m.ym); + arr.add(m.zm); + } + + void fromJson(JsonVariantConst o) { + JsonArrayConst arr = o.as(); + omega = arr[0].as(); + phi = arr[1].as(); + psi = arr[2].as(); + xm = arr[3].as(); + ym = arr[4].as(); + zm = arr[5].as(); + } +}; \ No newline at end of file diff --git a/esp32/include/msgs/topics.def b/esp32/include/msgs/topics.def index 7ac3182..a78b9d3 100644 --- a/esp32/include/msgs/topics.def +++ b/esp32/include/msgs/topics.def @@ -1,5 +1,9 @@ -#define TOPIC_LIST \ - X(Imu, ImuMsg) \ - X(Mode, ModeMsg) \ - X(Command, CommandMsg) \ - X(Servo, ServoMsg)\ +#define TOPIC_LIST \ + X(Imu, ImuMsg) \ + X(Mode, ModeMsg) \ + X(Command, CommandMsg) \ + X(Servo, ServoMsg) \ + X(MotionInput, MotionInputMsg) \ + X(MotionAngles, MotionAnglesMsg) \ + X(MotionPosition, MotionPositionMsg) \ + X(MotionMode, MotionModeMsg) diff --git a/esp32/include/topic.hpp b/esp32/include/topic.hpp index a4c13e8..ae90dda 100644 --- a/esp32/include/topic.hpp +++ b/esp32/include/topic.hpp @@ -3,6 +3,10 @@ #include "msgs/command_msg.hpp" #include "msgs/mode_msg.hpp" #include "msgs/servo_msg.hpp" +#include "msgs/motion_input_msg.hpp" +#include "msgs/motion_angles_msg.hpp" +#include "msgs/motion_position_msg.hpp" +#include "msgs/motion_mode_msg.hpp" #include "msgs/topics.def" enum class Topic : uint8_t {