From d481c4c271827bd09a6554b5dc732340c0aea082 Mon Sep 17 00:00:00 2001 From: Matthew Kennedy Date: Mon, 18 Sep 2023 03:50:35 -0400 Subject: [PATCH] can VSS scaling #253 --- firmware/controllers/algo/engine_configuration.cpp | 1 + firmware/controllers/can/can_vss.cpp | 2 +- firmware/integration/rusefi_config.txt | 3 ++- firmware/tunerstudio/rusefi.input | 3 ++- 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/firmware/controllers/algo/engine_configuration.cpp b/firmware/controllers/algo/engine_configuration.cpp index 9d461f28f3..06cea18c5f 100644 --- a/firmware/controllers/algo/engine_configuration.cpp +++ b/firmware/controllers/algo/engine_configuration.cpp @@ -431,6 +431,7 @@ static void setDefaultEngineConfiguration() { engineConfiguration->canSleepPeriodMs = 50; engineConfiguration->canReadEnabled = true; engineConfiguration->canWriteEnabled = true; + engineConfiguration->canVssScaling = 1.0f; // Don't enable, but set default address engineConfiguration->verboseCanBaseAddress = CAN_DEFAULT_BASE; diff --git a/firmware/controllers/can/can_vss.cpp b/firmware/controllers/can/can_vss.cpp index 959c5ed60d..93924f508d 100644 --- a/firmware/controllers/can/can_vss.cpp +++ b/firmware/controllers/can/can_vss.cpp @@ -82,7 +82,7 @@ void processCanRxVss(const CANRxFrame& frame, efitick_t nowNt) { } if (auto speed = processCanRxVssImpl(frame)) { - canSpeed.setValidValue(speed.Value, nowNt); + canSpeed.setValidValue(speed.Value * engineConfiguration->canVssScaling, nowNt); #if EFI_DYNO_VIEW updateDynoViewCan(); diff --git a/firmware/integration/rusefi_config.txt b/firmware/integration/rusefi_config.txt index 46869f6bf8..e64ed64c00 100644 --- a/firmware/integration/rusefi_config.txt +++ b/firmware/integration/rusefi_config.txt @@ -1548,11 +1548,12 @@ pin_input_mode_e[LUA_DIGITAL_INPUT_COUNT iterate] luaDigitalInputPinModes; switch_input_pin_e[RANGE_INPUT_COUNT iterate] tcu_rangeInput; pin_input_mode_e[RANGE_INPUT_COUNT iterate] tcu_rangeInputMode; + uint16_t autoscale canVssScaling;Scale the reported vehicle speed value from CAN. Example: Parameter set to 1.1, CAN VSS reports 50kph, ECU will report 55kph instead.;"ratio", 0.0001, 0, 0.5, 1.5, 4 ! ! Just a shortcut to facilitate compatible configuration changes, i.e. a change which does not touch FLASH_DATA_VERSION and thus does not require manual tune migration ! -uint8_t[190] mainUnusedEnd;;"units", 1, 0, 0, 1, 0 +uint8_t[186] mainUnusedEnd;;"units", 1, 0, 0, 1, 0 ! end of engine_configuration_s end_struct diff --git a/firmware/tunerstudio/rusefi.input b/firmware/tunerstudio/rusefi.input index ddde50074e..83264580c8 100644 --- a/firmware/tunerstudio/rusefi.input +++ b/firmware/tunerstudio/rusefi.input @@ -3724,7 +3724,8 @@ cmd_set_engine_type_default = "@@TS_IO_TEST_COMMAND_char@@@@ts_command_e_TS_ dialog = speedSensorCan, "CAN Vehicle Speed" field = "Enable CAN VSS", enableCanVss, { canReadEnabled } - field = "VSS CAN message type", canVssNbcType, { enableCanVss } + field = "CAN VSS type", canVssNbcType, { enableCanVss } + field = "CAN VSS scaling", canVssScaling, { canReadEnabled } dialog = speedSensorLeft, "", yAxis panel = speedSensorAnalog, { enableCanVss == 0 }