mirror of
https://github.com/BotChain-Robots/control.git
synced 2026-03-10 00:32:26 +01:00
Oled implementation (#1)
This commit is contained in:
@@ -7,16 +7,17 @@
|
||||
namespace Flatbuffers {
|
||||
const Messaging::AngleControlMessage *
|
||||
AngleControlMessageBuilder::parse_angle_control_message(const uint8_t *buffer) {
|
||||
return flatbuffers::GetRoot<Messaging::AngleControlMessage>(buffer);
|
||||
return flatbuffers::GetRoot<Messaging::AngleControlMessage>(buffer);
|
||||
}
|
||||
|
||||
SerializedMessage AngleControlMessageBuilder::build_angle_control_message(const int16_t angle) {
|
||||
builder_.Clear();
|
||||
SerializedMessage
|
||||
AngleControlMessageBuilder::build_angle_control_message(const int16_t angle) {
|
||||
builder_.Clear();
|
||||
|
||||
const auto message = Messaging::CreateAngleControlMessage(builder_, angle);
|
||||
const auto message = Messaging::CreateAngleControlMessage(builder_, angle);
|
||||
|
||||
builder_.Finish(message);
|
||||
builder_.Finish(message);
|
||||
|
||||
return {builder_.GetBufferPointer(), builder_.GetSize()};
|
||||
return {builder_.GetBufferPointer(), builder_.GetSize()};
|
||||
}
|
||||
} // namespace Flatbuffers
|
||||
|
||||
@@ -12,38 +12,41 @@ namespace Flatbuffers {
|
||||
SerializedMessage RobotConfigurationBuilder::build_robot_configuration(
|
||||
const std::vector<ModuleInstance> &modules,
|
||||
const std::vector<ModuleConnectionInstance> &connections) {
|
||||
builder_.Clear();
|
||||
builder_.Clear();
|
||||
|
||||
std::vector<flatbuffers::Offset<RobotModule>> module_vector;
|
||||
std::vector<flatbuffers::Offset<Frontend::ModuleConnection>> connection_vector;
|
||||
std::vector<flatbuffers::Offset<RobotModule>> module_vector;
|
||||
std::vector<flatbuffers::Offset<Frontend::ModuleConnection>>
|
||||
connection_vector;
|
||||
|
||||
for (const auto &connection : connections) {
|
||||
connection_vector.push_back(Frontend::CreateModuleConnection(
|
||||
builder_, connection.from_module_id, connection.to_module_id, connection.from_socket,
|
||||
connection.to_socket, connection.orientation));
|
||||
}
|
||||
for (const auto &connection : connections) {
|
||||
connection_vector.push_back(Frontend::CreateModuleConnection(
|
||||
builder_, connection.from_module_id, connection.to_module_id,
|
||||
connection.from_socket, connection.to_socket, connection.orientation));
|
||||
}
|
||||
|
||||
for (const auto &module : modules) {
|
||||
// todo: this only works for motors right now
|
||||
auto motor_state = CreateMotorState(builder_, module.angle);
|
||||
const flatbuffers::Offset<void> config_union = motor_state.Union();
|
||||
module_vector.push_back(CreateRobotModule(builder_, module.id, module.type,
|
||||
ModuleState_MotorState, config_union));
|
||||
}
|
||||
for (const auto &module : modules) {
|
||||
// todo: this only works for motors right now
|
||||
auto motor_state = CreateMotorState(builder_, module.angle);
|
||||
const flatbuffers::Offset<void> config_union = motor_state.Union();
|
||||
module_vector.push_back(CreateRobotModule(builder_, module.id, module.type,
|
||||
ModuleState_MotorState,
|
||||
config_union));
|
||||
}
|
||||
|
||||
const auto connection_vector_fb = builder_.CreateVector(connection_vector);
|
||||
const auto module_vector_fb = builder_.CreateVector(module_vector);
|
||||
const auto connection_vector_fb = builder_.CreateVector(connection_vector);
|
||||
const auto module_vector_fb = builder_.CreateVector(module_vector);
|
||||
|
||||
const auto message =
|
||||
Frontend::CreateRobotConfiguration(builder_, module_vector_fb, connection_vector_fb);
|
||||
const auto message = Frontend::CreateRobotConfiguration(
|
||||
builder_, module_vector_fb, connection_vector_fb);
|
||||
|
||||
builder_.Finish(message);
|
||||
builder_.Finish(message);
|
||||
|
||||
return {builder_.GetBufferPointer(), builder_.GetSize()};
|
||||
return {builder_.GetBufferPointer(), builder_.GetSize()};
|
||||
}
|
||||
|
||||
const Frontend::RobotConfiguration *
|
||||
RobotConfigurationBuilder::parse_robot_configuration(const std::uint8_t *buffer) {
|
||||
return flatbuffers::GetRoot<Frontend::RobotConfiguration>(buffer);
|
||||
RobotConfigurationBuilder::parse_robot_configuration(
|
||||
const std::uint8_t *buffer) {
|
||||
return flatbuffers::GetRoot<Frontend::RobotConfiguration>(buffer);
|
||||
}
|
||||
} // namespace Flatbuffers
|
||||
|
||||
@@ -3,8 +3,9 @@
|
||||
|
||||
namespace Flatbuffers {
|
||||
|
||||
const Messaging::SensorMessage *SensorMessageBuilder::parse_sensor_message(const uint8_t *buffer) {
|
||||
return flatbuffers::GetRoot<Messaging::SensorMessage>(buffer);
|
||||
const Messaging::SensorMessage *
|
||||
SensorMessageBuilder::parse_sensor_message(const uint8_t *buffer) {
|
||||
return flatbuffers::GetRoot<Messaging::SensorMessage>(buffer);
|
||||
}
|
||||
|
||||
} // namespace Flatbuffers
|
||||
|
||||
21
src/flatbuffers/TextControlMessageBuilder.cpp
Normal file
21
src/flatbuffers/TextControlMessageBuilder.cpp
Normal file
@@ -0,0 +1,21 @@
|
||||
//
|
||||
// Created by Johnathon Slightham on 2025-06-30.
|
||||
//
|
||||
|
||||
#include "flatbuffers/TextControlMessageBuilder.h"
|
||||
|
||||
namespace Flatbuffers {
|
||||
|
||||
SerializedMessage
|
||||
TextControlMessageBuilder::build_text_control_message(std::string &t) {
|
||||
builder_.Clear();
|
||||
|
||||
auto text_offset = builder_.CreateString(t);
|
||||
const auto message =
|
||||
Messaging::CreateTextControlMessage(builder_, text_offset);
|
||||
|
||||
builder_.Finish(message);
|
||||
|
||||
return {builder_.GetBufferPointer(), builder_.GetSize()};
|
||||
}
|
||||
} // namespace Flatbuffers
|
||||
@@ -7,32 +7,34 @@
|
||||
#include "flatbuffers/SerializedMessage.h"
|
||||
|
||||
namespace Flatbuffers {
|
||||
SerializedMessage
|
||||
TopologyMessageBuilder::build_topology_message(const uint8_t module_id,
|
||||
const ModuleType module_type,
|
||||
const std::vector<uint8_t> &channel_to_module,
|
||||
const std::vector<int8_t> &orientation_to_module) {
|
||||
builder_.Clear();
|
||||
SerializedMessage TopologyMessageBuilder::build_topology_message(
|
||||
const uint8_t module_id, const ModuleType module_type,
|
||||
const std::vector<uint8_t> &channel_to_module,
|
||||
const std::vector<int8_t> &orientation_to_module) {
|
||||
builder_.Clear();
|
||||
|
||||
const auto orientation_to_module_vector = builder_.CreateVector(orientation_to_module);
|
||||
const auto channel_to_module_vector = builder_.CreateVector(channel_to_module);
|
||||
const auto orientation_to_module_vector =
|
||||
builder_.CreateVector(orientation_to_module);
|
||||
const auto channel_to_module_vector =
|
||||
builder_.CreateVector(channel_to_module);
|
||||
|
||||
const auto message =
|
||||
Messaging::CreateTopologyMessage(builder_, module_id, module_type, channel_to_module.size(),
|
||||
channel_to_module_vector, orientation_to_module_vector);
|
||||
const auto message = Messaging::CreateTopologyMessage(
|
||||
builder_, module_id, module_type, channel_to_module.size(),
|
||||
channel_to_module_vector, orientation_to_module_vector);
|
||||
|
||||
builder_.Finish(message);
|
||||
builder_.Finish(message);
|
||||
|
||||
return {builder_.GetBufferPointer(), builder_.GetSize()};
|
||||
return {builder_.GetBufferPointer(), builder_.GetSize()};
|
||||
}
|
||||
|
||||
const Messaging::TopologyMessage *
|
||||
TopologyMessageBuilder::parse_topology_message(const uint8_t *buffer) {
|
||||
return flatbuffers::GetRoot<Messaging::TopologyMessage>(buffer);
|
||||
return flatbuffers::GetRoot<Messaging::TopologyMessage>(buffer);
|
||||
}
|
||||
|
||||
bool TopologyMessageBuilder::is_valid_topology_message(const uint8_t *buffer, size_t size) {
|
||||
flatbuffers::Verifier verifier(buffer, size);
|
||||
return Messaging::VerifyTopologyMessageBuffer(verifier);
|
||||
bool TopologyMessageBuilder::is_valid_topology_message(const uint8_t *buffer,
|
||||
size_t size) {
|
||||
flatbuffers::Verifier verifier(buffer, size);
|
||||
return Messaging::VerifyTopologyMessageBuffer(verifier);
|
||||
}
|
||||
} // namespace Flatbuffers
|
||||
|
||||
Reference in New Issue
Block a user