From ecc9a494d32b2e252993f3e129747316f602db7f Mon Sep 17 00:00:00 2001 From: Matteo Pignataro <matteo.pignataro@skywarder.eu> Date: Fri, 1 Sep 2023 19:46:09 +0200 Subject: [PATCH] [CanProtocolTypes] Added voltage sensor --- .../canbus/CanProtocol/CanProtocolTypes.h | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/shared/drivers/canbus/CanProtocol/CanProtocolTypes.h b/src/shared/drivers/canbus/CanProtocol/CanProtocolTypes.h index 0a171082e..6a5c80d7e 100644 --- a/src/shared/drivers/canbus/CanProtocol/CanProtocolTypes.h +++ b/src/shared/drivers/canbus/CanProtocol/CanProtocolTypes.h @@ -24,6 +24,7 @@ #include <actuators/Servo/ServoData.h> #include <sensors/SensorData.h> +#include <sensors/analog/BatteryVoltageSensorData.h> #include <sensors/analog/Pitot/PitotData.h> #include <cstring> @@ -111,6 +112,21 @@ inline Canbus::CanMessage toCanMessage(const ServoData& data) return message; } +inline Canbus::CanMessage toCanMessage(const BatteryVoltageSensorData& data) +{ + Canbus::CanMessage message; + + uint32_t voltage; + memcpy(&voltage, &(data.batVoltage), sizeof(voltage)); + + message.id = -1; + message.length = 1; + message.payload[0] = (data.voltageTimestamp & ~0x3) << 30; + message.payload[0] |= voltage; + + return message; +} + inline PitotData pitotDataFromCanMessage(const Canbus::CanMessage& msg) { PitotData data; @@ -174,4 +190,17 @@ inline ServoData servoDataFromCanMessage(const Canbus::CanMessage& msg) return data; } +inline BatteryVoltageSensorData voltageDataFromCanMessage( + const Canbus::CanMessage& msg) +{ + BatteryVoltageSensorData data; + + uint32_t voltage = msg.payload[0]; + memcpy(&(data.batVoltage), &voltage, sizeof(data.batVoltage)); + + data.voltageTimestamp = (msg.payload[0] >> 30) & ~0x3; + + return data; +} + } // namespace Boardcore -- GitLab