Use std::bit_cast (#7567)

Backport #7492

Co-authored-by: Tyler Veness <calcmogul@gmail.com>
This commit is contained in:
Ryan Blue
2024-12-22 16:34:16 -05:00
committed by GitHub
parent d631fa8e4b
commit 0c99073b94
7 changed files with 33 additions and 34 deletions

View File

@@ -4,11 +4,11 @@
#include "XRP.h"
#include <bit>
#include <string>
#include <fmt/format.h>
#include <wpi/Endian.h>
#include <wpi/MathExtras.h>
#include <wpi/json.h>
using namespace wpilibxrp;
@@ -245,7 +245,7 @@ void XRP::SetupMotorTag(wpi::raw_uv_ostream& buf) {
// Convert the value
wpi::support::endian::write32be(value,
wpi::bit_cast<uint32_t>(motor.second));
std::bit_cast<uint32_t>(motor.second));
buf << value[0] << value[1] << value[2] << value[3];
}
}
@@ -261,7 +261,7 @@ void XRP::SetupServoTag(wpi::raw_uv_ostream& buf) {
// Convert the value
wpi::support::endian::write32be(value,
wpi::bit_cast<uint32_t>(servo.second));
std::bit_cast<uint32_t>(servo.second));
buf << value[0] << value[1] << value[2] << value[3];
}
}
@@ -283,17 +283,17 @@ void XRP::ReadGyroTag(std::span<const uint8_t> packet) {
packet = packet.subspan(2); // Skip past the size and tag
float rate_x =
wpi::bit_cast<float>(wpi::support::endian::read32be(&packet[0]));
std::bit_cast<float>(wpi::support::endian::read32be(&packet[0]));
float rate_y =
wpi::bit_cast<float>(wpi::support::endian::read32be(&packet[4]));
std::bit_cast<float>(wpi::support::endian::read32be(&packet[4]));
float rate_z =
wpi::bit_cast<float>(wpi::support::endian::read32be(&packet[8]));
std::bit_cast<float>(wpi::support::endian::read32be(&packet[8]));
float angle_x =
wpi::bit_cast<float>(wpi::support::endian::read32be(&packet[12]));
std::bit_cast<float>(wpi::support::endian::read32be(&packet[12]));
float angle_y =
wpi::bit_cast<float>(wpi::support::endian::read32be(&packet[16]));
std::bit_cast<float>(wpi::support::endian::read32be(&packet[16]));
float angle_z =
wpi::bit_cast<float>(wpi::support::endian::read32be(&packet[20]));
std::bit_cast<float>(wpi::support::endian::read32be(&packet[20]));
// Make the json object
wpi::json gyroJson;
@@ -314,11 +314,11 @@ void XRP::ReadAccelTag(std::span<const uint8_t> packet) {
packet = packet.subspan(2); // Skip past the size and tag
float accel_x =
wpi::bit_cast<float>(wpi::support::endian::read32be(&packet[0]));
std::bit_cast<float>(wpi::support::endian::read32be(&packet[0]));
float accel_y =
wpi::bit_cast<float>(wpi::support::endian::read32be(&packet[4]));
std::bit_cast<float>(wpi::support::endian::read32be(&packet[4]));
float accel_z =
wpi::bit_cast<float>(wpi::support::endian::read32be(&packet[8]));
std::bit_cast<float>(wpi::support::endian::read32be(&packet[8]));
wpi::json accelJson;
accelJson["type"] = "Accel";
@@ -409,7 +409,7 @@ void XRP::ReadAnalogTag(std::span<const uint8_t> packet) {
packet = packet.subspan(3);
float voltage =
wpi::bit_cast<float>(wpi::support::endian::read32be(&packet[0]));
std::bit_cast<float>(wpi::support::endian::read32be(&packet[0]));
wpi::json analogJson;
analogJson["type"] = "AI";