// 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/geometry/struct/Twist3dStruct.h" namespace { constexpr size_t kDxOff = 0; constexpr size_t kDyOff = kDxOff + 8; constexpr size_t kDzOff = kDyOff + 8; constexpr size_t kRxOff = kDzOff + 8; constexpr size_t kRyOff = kRxOff + 8; constexpr size_t kRzOff = kRyOff + 8; } // namespace using StructType = wpi::Struct; frc::Twist3d StructType::Unpack(std::span data) { return frc::Twist3d{ units::meter_t{wpi::UnpackStruct(data)}, units::meter_t{wpi::UnpackStruct(data)}, units::meter_t{wpi::UnpackStruct(data)}, units::radian_t{wpi::UnpackStruct(data)}, units::radian_t{wpi::UnpackStruct(data)}, units::radian_t{wpi::UnpackStruct(data)}, }; } void StructType::Pack(std::span data, const frc::Twist3d& value) { wpi::PackStruct(data, value.dx.value()); wpi::PackStruct(data, value.dy.value()); wpi::PackStruct(data, value.dz.value()); wpi::PackStruct(data, value.rx.value()); wpi::PackStruct(data, value.ry.value()); wpi::PackStruct(data, value.rz.value()); }