2024-07-29 07:55:44 -07:00
|
|
|
// 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.
|
|
|
|
|
|
2025-11-07 19:56:21 -05:00
|
|
|
#include "wpi/math/spline/struct/CubicHermiteSplineStruct.hpp"
|
2024-07-29 07:55:44 -07:00
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
2025-11-07 20:00:05 -05:00
|
|
|
wpi::math::CubicHermiteSpline wpi::util::Struct<wpi::math::CubicHermiteSpline>::Unpack(
|
2024-07-29 07:55:44 -07:00
|
|
|
std::span<const uint8_t> data) {
|
2025-11-07 20:00:05 -05:00
|
|
|
return wpi::math::CubicHermiteSpline{
|
|
|
|
|
wpi::util::UnpackStructArray<double, kXInitialOff, 2>(data),
|
|
|
|
|
wpi::util::UnpackStructArray<double, kXFinalOff, 2>(data),
|
|
|
|
|
wpi::util::UnpackStructArray<double, kYInitialOff, 2>(data),
|
|
|
|
|
wpi::util::UnpackStructArray<double, kYFinalOff, 2>(data)};
|
2024-07-29 07:55:44 -07:00
|
|
|
}
|
|
|
|
|
|
2025-11-07 20:00:05 -05:00
|
|
|
void wpi::util::Struct<wpi::math::CubicHermiteSpline>::Pack(
|
|
|
|
|
std::span<uint8_t> data, const wpi::math::CubicHermiteSpline& value) {
|
|
|
|
|
wpi::util::PackStructArray<kXInitialOff, 2>(data,
|
2024-07-29 07:55:44 -07:00
|
|
|
value.GetInitialControlVector().x);
|
2025-11-07 20:00:05 -05:00
|
|
|
wpi::util::PackStructArray<kXFinalOff, 2>(data, value.GetFinalControlVector().x);
|
|
|
|
|
wpi::util::PackStructArray<kYInitialOff, 2>(data,
|
2024-07-29 07:55:44 -07:00
|
|
|
value.GetInitialControlVector().y);
|
2025-11-07 20:00:05 -05:00
|
|
|
wpi::util::PackStructArray<kYFinalOff, 2>(data, value.GetFinalControlVector().y);
|
2024-07-29 07:55:44 -07:00
|
|
|
}
|