mirror of
https://github.com/BotChain-Robots/firmware.git
synced 2026-07-08 17:47:21 +02:00
Work on sensor
This commit is contained in:
@@ -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")
|
||||
|
||||
31
components/flatbuffers/SensorMessageBuilder.cpp
Normal file
31
components/flatbuffers/SensorMessageBuilder.cpp
Normal 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() };
|
||||
}
|
||||
}
|
||||
24
components/flatbuffers/include/SensorMessageBuilder.h
Normal file
24
components/flatbuffers/include/SensorMessageBuilder.h
Normal 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
|
||||
@@ -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;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user