Work on sensor

This commit is contained in:
2026-01-08 15:46:39 -05:00
parent 5741409466
commit 498c21cffe
14 changed files with 165 additions and 67 deletions

View File

@@ -1,2 +1,2 @@
idf_component_register(SRCS "MPIMessageBuilder.cpp" "AngleControlMessageBuilder.cpp" "TopologyMessageBuilder.cpp"
idf_component_register(SRCS "MPIMessageBuilder.cpp" "AngleControlMessageBuilder.cpp" "TopologyMessageBuilder.cpp" "SensorMessageBuilder.cpp"
INCLUDE_DIRS "include")

View File

@@ -0,0 +1,31 @@
//
// Created by Johnathon Slightham on 2025-06-30.
//
#include "SensorMessageBuilder.h"
#include "SerializedMessage.h"
#include "flatbuffers_generated/SensorMessage_generated.h"
namespace Flatbuffers {
SerializedMessage SensorMessageBuilder::build_sensor_message(std::vector<SensorValueInstance>& values) {
builder_.Clear();
std::vector<flatbuffers::Offset<void>> values_vec;
std::vector<uint8_t> sensor_values_vec;
for (const auto& v : values) {
values_vec.push_back(Messaging::CreateAngle(builder_, v.angle).Union());
sensor_values_vec.push_back(Messaging::SensorValue_Angle);
}
auto values_fb_vec = builder_.CreateVector(values_vec);
const auto values_type_fb_vec = builder_.CreateVector(sensor_values_vec);
const auto message = Messaging::CreateSensorMessage(builder_, values_type_fb_vec, values_fb_vec);
builder_.Finish(message);
return { builder_.GetBufferPointer(), builder_.GetSize() };
}
}

View File

@@ -0,0 +1,24 @@
#ifndef SENSORMESSAGEBUILDER_H
#define SENSORMESSAGEBUILDER_H
#include "SerializedMessage.h"
#include "flatbuffers_generated/SensorMessage_generated.h"
namespace Flatbuffers {
struct SensorValueInstance {
uint16_t angle; // todo: change to a variant
};
class SensorMessageBuilder{
public:
SensorMessageBuilder() : builder_(128) {}
SerializedMessage build_sensor_message(std::vector<SensorValueInstance>& values);
private:
flatbuffers::FlatBufferBuilder builder_;
};
}
#endif //SENSORMESSAGEBUILDER_H

View File

@@ -5,10 +5,12 @@
#ifndef SERIALIZEDMESSAGE_H
#define SERIALIZEDMESSAGE_H
#include <cstdint>
namespace Flatbuffers {
struct SerializedMessage {
void* data;
size_t size;
std::size_t size;
};
}