From 583017c22ebb4fd6e60c0d6839de8f66ffdb1479 Mon Sep 17 00:00:00 2001 From: "Jasper v. Blanckenburg" Date: Sat, 18 Mar 2023 23:05:52 +0100 Subject: [PATCH] Read AMS min voltage & max temp as 16 bit ints --- Core/Src/vehicle.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/Core/Src/vehicle.c b/Core/Src/vehicle.c index 40fd469..f390940 100644 --- a/Core/Src/vehicle.c +++ b/Core/Src/vehicle.c @@ -18,8 +18,8 @@ #define CAN_ID_SHUNT_CURRENT 0x521 #define CAN_ID_SHUNT_VOLTAGE2 0x523 #define CAN_ID_SHUNT_VOLTAGE3 0x524 -#define CAN_AMS_STATUS_VOLTAGE_FACTOR (1e-3 * 0x100) -#define CAN_AMS_STATUS_TEMP_FACTOR (0.0625 * 0x10) +#define CAN_AMS_STATUS_VOLTAGE_FACTOR 1e-4 +#define CAN_AMS_STATUS_TEMP_FACTOR 0.0625 VehicleState vehicle_state = {0}; @@ -50,8 +50,11 @@ void ftcan_msg_received_cb(uint16_t id, size_t datalen, const uint8_t *data) { case CAN_ID_AMS_STATUS: vehicle_state.ts_state = data[0] & 0x7F; vehicle_state.soc = data[1]; - vehicle_state.min_cell_volt = data[2] * CAN_AMS_STATUS_VOLTAGE_FACTOR; - vehicle_state.max_cell_temp = data[3] * CAN_AMS_STATUS_TEMP_FACTOR; + const uint8_t *ptr = &data[2]; + vehicle_state.min_cell_volt = + ftcan_unmarshal_unsigned(&ptr, 2) * CAN_AMS_STATUS_VOLTAGE_FACTOR; + vehicle_state.max_cell_temp = + ftcan_unmarshal_signed(&ptr, 2) * CAN_AMS_STATUS_TEMP_FACTOR; msg = VEH_UPD_AMS; break; case CAN_ID_AS_MISSION_FB: