From cec0d7c66b20b00fcd5f29e3c0f20680a980f471 Mon Sep 17 00:00:00 2001 From: Nuno Marques Date: Mon, 10 Jun 2024 14:50:39 -0700 Subject: [PATCH] src: drivers: uavcan: allow to set the fuel type through a parameter --- .../uavcan/sensors/fuel_tank_status.cpp | 6 ++++-- .../uavcan/sensors/fuel_tank_status.hpp | 3 +++ src/drivers/uavcan/uavcan_params.c | 18 ++++++++++++++++++ 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/drivers/uavcan/sensors/fuel_tank_status.cpp b/src/drivers/uavcan/sensors/fuel_tank_status.cpp index 998b85c5fc..3a8e743444 100644 --- a/src/drivers/uavcan/sensors/fuel_tank_status.cpp +++ b/src/drivers/uavcan/sensors/fuel_tank_status.cpp @@ -39,7 +39,6 @@ #include "fuel_tank_status.hpp" #include -#include const char *const UavcanFuelTankStatusBridge::NAME = "fuel_tank_status"; @@ -72,8 +71,11 @@ void UavcanFuelTankStatusBridge::fuel_tank_status_sub_cb(const _max_fuel_capacity *= 1000.0f; // convert to ml report.maximum_fuel_capacity = _max_fuel_capacity; - report.fuel_type = fuel_tank_status_s::MAV_FUEL_TYPE_LIQUID; + // Fetching fuel type + param_get(param_find("UAVCAN_ECU_FUELT"), &_fuel_type); + + report.fuel_type = static_cast(_fuel_type); report.consumed_fuel = NAN; // only the remaining fuel is measured report.fuel_consumption_rate = msg.fuel_consumption_rate_cm3pm / 60.0f; // convert to ml/s report.percent_remaining = msg.available_fuel_volume_percent; diff --git a/src/drivers/uavcan/sensors/fuel_tank_status.hpp b/src/drivers/uavcan/sensors/fuel_tank_status.hpp index 49f43efb68..ca58666c3c 100644 --- a/src/drivers/uavcan/sensors/fuel_tank_status.hpp +++ b/src/drivers/uavcan/sensors/fuel_tank_status.hpp @@ -42,6 +42,8 @@ #include "sensor_bridge.hpp" #include +#include + class UavcanFuelTankStatusBridge : public UavcanSensorBridgeBase { public: @@ -67,4 +69,5 @@ private: uavcan::Subscriber _sub_fuel_tank_status_data; float _max_fuel_capacity{0.0f}; + int32_t _fuel_type{fuel_tank_status_s::MAV_FUEL_TYPE_UNKNOWN}; }; diff --git a/src/drivers/uavcan/uavcan_params.c b/src/drivers/uavcan/uavcan_params.c index 36afcfb332..ad8765470c 100644 --- a/src/drivers/uavcan/uavcan_params.c +++ b/src/drivers/uavcan/uavcan_params.c @@ -111,6 +111,24 @@ PARAM_DEFINE_FLOAT(UAVCAN_RNG_MAX, 200.0f); */ PARAM_DEFINE_FLOAT(UAVCAN_ECU_MAXF, 15.0f); +/** + * UAVCAN fuel tank fuel type + * + * This parameter defines the type of fuel used in the vehicle's fuel tank. + * + * 0: Unknown + * 1: Liquid (e.g., gasoline, diesel) + * 2: Gas (e.g., hydrogen, methane, propane) + * + * @min 0 + * @max 2 + * @value 0 Unknown + * @value 1 Liquid + * @value 2 Gas + * @group UAVCAN + */ +PARAM_DEFINE_INT32(UAVCAN_ECU_FUELT, 1); + /** * UAVCAN ANTI_COLLISION light operating mode *