flatbuffer wrapper for movement sets

This commit is contained in:
superkor
2026-01-15 02:14:48 -05:00
parent 66b0153d61
commit 4b9eaefb28
5 changed files with 121 additions and 47 deletions

View File

@@ -0,0 +1,29 @@
// Justin Chow created file >:)
#ifndef MOVEMENTSETBUILDER
#define MOVEMENTSETBUILDER
#define MAX_MOVEMENTS_IN_SET 255 //max number movements in `MovementEntry.num_movements` can hold
#include <vector>
#include "SerializedMessage.h"
#include "flatbuffers_generated/Movement_generated.h"
#include "flatbuffers/flatbuffers.h"
namespace Flatbuffers {
class MovementSetBuilder {
public:
MovementSetBuilder() : builder_(MAX_MOVEMENTS_IN_SET*sizeof(Movement::MovementEntry)) {}
SerializedMessage build_movement_set(const std::vector<flatbuffers::Offset<Movement::MovementEntry>>& set);
flatbuffers::Offset<Movement::MovementEntry> build_movement_entry(uint16_t board_id, uint8_t module_type, uint16_t value_action,
const Movement::ConditionBlob& condition, uint8_t ack, uint16_t ack_ttl_ms, uint16_t post_delay_ms);
Movement::ConditionBlob build_condition_blob(uint16_t value, uint8_t cond, uint8_t module_type, uint8_t in_use);
private:
flatbuffers::FlatBufferBuilder builder_;
};
}
#endif //MOVEMENTSETBUILDER