Oled implementation (#1)

This commit is contained in:
2026-02-07 15:05:45 -05:00
committed by GitHub
parent 048e39016a
commit 33c3ebad53
46 changed files with 1790 additions and 1260 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View 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

View File

@@ -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