fix(track-core): sync track proto fields
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
#include "app_track_decoder.hpp"
|
||||
|
||||
#include <algorithm>
|
||||
#include <cstddef>
|
||||
#include <cstdint>
|
||||
|
||||
namespace app::track {
|
||||
@@ -47,6 +48,18 @@ TrackSchemeDecoder TrackSchemeDecoder::from_proto(const proto_type &proto) {
|
||||
return scheme;
|
||||
}
|
||||
|
||||
TrackSchemeDecoder::proto_type TrackSchemeDecoder::to_proto() const {
|
||||
proto_type proto = track_app_TrackScheme_init_default;
|
||||
proto.id = id;
|
||||
proto.has_color = true;
|
||||
proto.color = color.to_proto();
|
||||
const auto data = std::span<uint8_t>(proto.data.bytes);
|
||||
const auto count = std::min(data.size(), binary.size());
|
||||
std::ranges::copy(binary.begin(), binary.begin() + static_cast<std::ptrdiff_t>(count), data.begin());
|
||||
proto.data.size = count;
|
||||
return proto;
|
||||
}
|
||||
|
||||
expected<track_core::DecodedScheme, error_t> TrackSchemeDecoder::decode_core() const {
|
||||
using ue = unexpected<error_t>;
|
||||
if (binary.empty()) {
|
||||
@@ -67,6 +80,13 @@ TrackSchemeMgr::Add TrackSchemeMgr::Add::from_proto(const proto_type &proto) {
|
||||
return add;
|
||||
}
|
||||
|
||||
TrackSchemeMgr::Add::proto_type TrackSchemeMgr::Add::to_proto() const {
|
||||
proto_type proto = track_app_TrackSchemeMgrAdd_init_default;
|
||||
proto.has_scheme = true;
|
||||
proto.scheme = scheme_decoder.to_proto();
|
||||
return proto;
|
||||
}
|
||||
|
||||
TrackSchemeMgr TrackSchemeMgr::from_proto(const proto_type &proto) {
|
||||
TrackSchemeMgr mgmt;
|
||||
switch (proto.which_msg) {
|
||||
@@ -82,4 +102,20 @@ TrackSchemeMgr TrackSchemeMgr::from_proto(const proto_type &proto) {
|
||||
return mgmt;
|
||||
}
|
||||
|
||||
TrackSchemeMgr::proto_type TrackSchemeMgr::to_proto() const {
|
||||
proto_type proto = track_app_TrackSchemeMgr_init_default;
|
||||
std::visit(app::utils::overloads{
|
||||
[](Unknown) {},
|
||||
[&](const Add &add) {
|
||||
proto.which_msg = track_app_TrackSchemeMgr_add_tag;
|
||||
proto.msg.add = add.to_proto();
|
||||
},
|
||||
[&](Clear) {
|
||||
proto.which_msg = track_app_TrackSchemeMgr_clear_tag;
|
||||
proto.msg.clear = track_app_TrackSchemeMgrClear_init_default;
|
||||
}},
|
||||
choice);
|
||||
return proto;
|
||||
}
|
||||
|
||||
} // namespace app::track
|
||||
|
||||
@@ -53,7 +53,7 @@ track_core::TrackState to_core(app::track::TrackState state) {
|
||||
return track_core::TrackState::stop;
|
||||
case track_app_TrackState_RUN:
|
||||
return track_core::TrackState::run;
|
||||
case track_app_TrackState_TEST_RAINBOW:
|
||||
case track_app_TrackState_TEST_RAINBOW_CONTINUOUS:
|
||||
return track_core::TrackState::test_rainbow;
|
||||
case track_app_TrackState_TEST_BLINK:
|
||||
return track_core::TrackState::test_blink;
|
||||
|
||||
@@ -15,8 +15,8 @@ const char *to_str(TrackState status) {
|
||||
return "STOP";
|
||||
case track_app_TrackState_RUN:
|
||||
return "RUN";
|
||||
case track_app_TrackState_TEST_RAINBOW:
|
||||
return "TEST_RAINBOW";
|
||||
case track_app_TrackState_TEST_RAINBOW_CONTINUOUS:
|
||||
return "TEST_RAINBOW_CONTINUOUS";
|
||||
case track_app_TrackState_TEST_BLINK:
|
||||
return "TEST_BLINK";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user