mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-25 01:41:43 +00:00
[wpimath] Add remaining struct and protobuf implementations (#5953)
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
// Copyright (c) FIRST and other WPILib contributors.
|
||||
// Open Source Software; you can modify and/or share it under the terms of
|
||||
// the WPILib BSD license file in the root directory of this project.
|
||||
|
||||
#include "frc/spline/proto/CubicHermiteSplineProto.h"
|
||||
|
||||
#include <wpi/ProtoHelper.h>
|
||||
|
||||
#include "spline.pb.h"
|
||||
|
||||
google::protobuf::Message* wpi::Protobuf<frc::CubicHermiteSpline>::New(
|
||||
google::protobuf::Arena* arena) {
|
||||
return wpi::CreateMessage<wpi::proto::ProtobufCubicHermiteSpline>(arena);
|
||||
}
|
||||
|
||||
frc::CubicHermiteSpline wpi::Protobuf<frc::CubicHermiteSpline>::Unpack(
|
||||
const google::protobuf::Message& msg) {
|
||||
auto m = static_cast<const wpi::proto::ProtobufCubicHermiteSpline*>(&msg);
|
||||
return frc::CubicHermiteSpline{
|
||||
wpi::UnpackProtobufArray<double, 2>(m->x_initial()),
|
||||
wpi::UnpackProtobufArray<double, 2>(m->x_final()),
|
||||
wpi::UnpackProtobufArray<double, 2>(m->y_initial()),
|
||||
wpi::UnpackProtobufArray<double, 2>(m->y_final())};
|
||||
}
|
||||
|
||||
void wpi::Protobuf<frc::CubicHermiteSpline>::Pack(
|
||||
google::protobuf::Message* msg, const frc::CubicHermiteSpline& value) {
|
||||
auto m = static_cast<wpi::proto::ProtobufCubicHermiteSpline*>(msg);
|
||||
wpi::PackProtobufArray(m->mutable_x_initial(),
|
||||
value.GetInitialControlVector().x);
|
||||
wpi::PackProtobufArray(m->mutable_x_final(), value.GetFinalControlVector().x);
|
||||
wpi::PackProtobufArray(m->mutable_y_initial(),
|
||||
value.GetInitialControlVector().y);
|
||||
wpi::PackProtobufArray(m->mutable_y_final(), value.GetFinalControlVector().y);
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
// Copyright (c) FIRST and other WPILib contributors.
|
||||
// Open Source Software; you can modify and/or share it under the terms of
|
||||
// the WPILib BSD license file in the root directory of this project.
|
||||
|
||||
#include "frc/spline/proto/QuinticHermiteSplineProto.h"
|
||||
|
||||
#include <wpi/ProtoHelper.h>
|
||||
|
||||
#include "spline.pb.h"
|
||||
|
||||
google::protobuf::Message* wpi::Protobuf<frc::QuinticHermiteSpline>::New(
|
||||
google::protobuf::Arena* arena) {
|
||||
return wpi::CreateMessage<wpi::proto::ProtobufQuinticHermiteSpline>(arena);
|
||||
}
|
||||
|
||||
frc::QuinticHermiteSpline wpi::Protobuf<frc::QuinticHermiteSpline>::Unpack(
|
||||
const google::protobuf::Message& msg) {
|
||||
auto m = static_cast<const wpi::proto::ProtobufQuinticHermiteSpline*>(&msg);
|
||||
return frc::QuinticHermiteSpline{
|
||||
wpi::UnpackProtobufArray<double, 3>(m->x_initial()),
|
||||
wpi::UnpackProtobufArray<double, 3>(m->x_final()),
|
||||
wpi::UnpackProtobufArray<double, 3>(m->y_initial()),
|
||||
wpi::UnpackProtobufArray<double, 3>(m->y_final())};
|
||||
}
|
||||
|
||||
void wpi::Protobuf<frc::QuinticHermiteSpline>::Pack(
|
||||
google::protobuf::Message* msg, const frc::QuinticHermiteSpline& value) {
|
||||
auto m = static_cast<wpi::proto::ProtobufQuinticHermiteSpline*>(msg);
|
||||
wpi::PackProtobufArray(m->mutable_x_initial(),
|
||||
value.GetInitialControlVector().x);
|
||||
wpi::PackProtobufArray(m->mutable_x_final(), value.GetFinalControlVector().x);
|
||||
wpi::PackProtobufArray(m->mutable_y_initial(),
|
||||
value.GetInitialControlVector().y);
|
||||
wpi::PackProtobufArray(m->mutable_y_final(), value.GetFinalControlVector().y);
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
// Copyright (c) FIRST and other WPILib contributors.
|
||||
// Open Source Software; you can modify and/or share it under the terms of
|
||||
// the WPILib BSD license file in the root directory of this project.
|
||||
|
||||
#include "frc/spline/struct/CubicHermiteSplineStruct.h"
|
||||
|
||||
namespace {
|
||||
constexpr size_t kXInitialOff = 0;
|
||||
constexpr size_t kXFinalOff = kXInitialOff + 2 * 8;
|
||||
constexpr size_t kYInitialOff = kXFinalOff + 2 * 8;
|
||||
constexpr size_t kYFinalOff = kYInitialOff + 2 * 8;
|
||||
} // namespace
|
||||
|
||||
frc::CubicHermiteSpline wpi::Struct<frc::CubicHermiteSpline>::Unpack(
|
||||
std::span<const uint8_t> data) {
|
||||
return frc::CubicHermiteSpline{
|
||||
wpi::UnpackStructArray<double, kXInitialOff, 2>(data),
|
||||
wpi::UnpackStructArray<double, kXFinalOff, 2>(data),
|
||||
wpi::UnpackStructArray<double, kYInitialOff, 2>(data),
|
||||
wpi::UnpackStructArray<double, kYFinalOff, 2>(data)};
|
||||
}
|
||||
|
||||
void wpi::Struct<frc::CubicHermiteSpline>::Pack(
|
||||
std::span<uint8_t> data, const frc::CubicHermiteSpline& value) {
|
||||
wpi::PackStructArray<kXInitialOff, 2>(data,
|
||||
value.GetInitialControlVector().x);
|
||||
wpi::PackStructArray<kXFinalOff, 2>(data, value.GetFinalControlVector().x);
|
||||
wpi::PackStructArray<kYInitialOff, 2>(data,
|
||||
value.GetInitialControlVector().y);
|
||||
wpi::PackStructArray<kYFinalOff, 2>(data, value.GetFinalControlVector().y);
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
// Copyright (c) FIRST and other WPILib contributors.
|
||||
// Open Source Software; you can modify and/or share it under the terms of
|
||||
// the WPILib BSD license file in the root directory of this project.
|
||||
|
||||
#include "frc/spline/struct/QuinticHermiteSplineStruct.h"
|
||||
|
||||
namespace {
|
||||
constexpr size_t kXInitialOff = 0;
|
||||
constexpr size_t kXFinalOff = kXInitialOff + 3 * 8;
|
||||
constexpr size_t kYInitialOff = kXFinalOff + 3 * 8;
|
||||
constexpr size_t kYFinalOff = kYInitialOff + 3 * 8;
|
||||
} // namespace
|
||||
|
||||
frc::QuinticHermiteSpline wpi::Struct<frc::QuinticHermiteSpline>::Unpack(
|
||||
std::span<const uint8_t> data) {
|
||||
return frc::QuinticHermiteSpline{
|
||||
wpi::UnpackStructArray<double, kXInitialOff, 3>(data),
|
||||
wpi::UnpackStructArray<double, kXFinalOff, 3>(data),
|
||||
wpi::UnpackStructArray<double, kYInitialOff, 3>(data),
|
||||
wpi::UnpackStructArray<double, kYFinalOff, 3>(data)};
|
||||
}
|
||||
|
||||
void wpi::Struct<frc::QuinticHermiteSpline>::Pack(
|
||||
std::span<uint8_t> data, const frc::QuinticHermiteSpline& value) {
|
||||
wpi::PackStructArray<kXInitialOff, 3>(data,
|
||||
value.GetInitialControlVector().x);
|
||||
wpi::PackStructArray<kXFinalOff, 3>(data, value.GetFinalControlVector().x);
|
||||
wpi::PackStructArray<kYInitialOff, 3>(data,
|
||||
value.GetInitialControlVector().y);
|
||||
wpi::PackStructArray<kYFinalOff, 3>(data, value.GetFinalControlVector().y);
|
||||
}
|
||||
Reference in New Issue
Block a user