From ac792bcde3ba57338113239f7e30379769760b79 Mon Sep 17 00:00:00 2001 From: pbz Date: Wed, 29 Jul 2026 13:04:19 -0400 Subject: [PATCH 01/12] Add artifact upload step for refloat.vescpkg Add step to upload refloat.vescpkg artifact --- .github/workflows/ci.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fcdbf73d..6b5758e5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,3 +26,9 @@ jobs: uses: ./.github/actions/build with: cache-auth-token: '${{ secrets.CACHIX_AUTH_TOKEN }}' + + - name: Upload refloat.vescpkg + uses: actions/upload-artifact@v4 + with: + name: refloat-package + path: refloat.vescpkg From 81fafc1fd1725b92944fff33908fe9512d698fca Mon Sep 17 00:00:00 2001 From: pbz Date: Wed, 29 Jul 2026 13:23:54 -0400 Subject: [PATCH 02/12] Reverse stop ERPM to 2000 and threshold to 400000 --- package_README.md | 3 +++ src/main.c | 4 ++-- version | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/package_README.md b/package_README.md index c42e70cd..353eb806 100644 --- a/package_README.md +++ b/package_README.md @@ -2,6 +2,9 @@ A full-featured self-balancing skateboard package. +## Experiments +Playing with reverse stop config for anti ghosting protection + ## New in 1.2 - BMS alerting support (Pushback and Haptic) - Speed-based alerting (Pushback and Haptic) diff --git a/src/main.c b/src/main.c index 5d997d20..7ebaa37d 100644 --- a/src/main.c +++ b/src/main.c @@ -205,7 +205,7 @@ static void configure(Data *d) { } // Feature: Reverse Stop - d->reverse_tolerance = 20000; + d->reverse_tolerance = 400000; d->reverse_stop_step_size = 100.0 / d->float_conf.hertz; // Speed above which to warn users about an impending full switch fault @@ -531,7 +531,7 @@ static void calculate_setpoint_target(Data *d) { } } } - } else if (d->float_conf.fault_reversestop_enabled && d->motor.erpm < -200 && + } else if (d->float_conf.fault_reversestop_enabled && d->motor.erpm < -2000 && !d->state.darkride) { // Detecting reverse stop takes priority over any error condition SAT if (d->state.sat >= SAT_PB_HIGH_VOLTAGE) { diff --git a/version b/version index 0495c4a8..14ea9f60 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.2.3 +1.2.3x From 1148c67665444fa6fa48dc9671030586de2921fe Mon Sep 17 00:00:00 2001 From: pbz Date: Wed, 29 Jul 2026 13:28:24 -0400 Subject: [PATCH 03/12] Change version number to something valid --- version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version b/version index 14ea9f60..e8ea05db 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.2.3x +1.2.4 From c37b9f0136ccce2174f0345b91127cf55e064776 Mon Sep 17 00:00:00 2001 From: pbz Date: Thu, 30 Jul 2026 00:11:58 -0400 Subject: [PATCH 04/12] Add reverse tolerance configuration --- src/conf/datatypes.h | 1 + src/conf/settings.xml | 20 ++++++++++++++++++++ src/main.c | 2 +- 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/conf/datatypes.h b/src/conf/datatypes.h index a03c68a6..3b43ce0a 100644 --- a/src/conf/datatypes.h +++ b/src/conf/datatypes.h @@ -229,6 +229,7 @@ typedef struct { bool enable_quickstop; bool fault_darkride_enabled; bool fault_reversestop_enabled; + float reverse_tolerance; float tiltback_duty_angle; float tiltback_duty_speed; float tiltback_duty; diff --git a/src/conf/settings.xml b/src/conf/settings.xml index 5f747b10..e31d3501 100644 --- a/src/conf/settings.xml +++ b/src/conf/settings.xml @@ -521,6 +521,24 @@ p, li { white-space: pre-wrap; } CFG_DFLT_FAULT_REVERSESTOP_ENABLED 0 + + Reverse Stop Tolerance + 2 + 1 + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> + p, li { white-space: pre-wrap; } + </style></head><body> + <p>ERPM deadzone before Reverse Stop begins to slow the board.</p> + </body></html> + CFG_DFLT_REVERSE_TOLERANCE + 1000000 + 0 + 5000 + 400000 + erpm + 7 + Pushback Angle 1 @@ -3944,6 +3962,7 @@ p, li { white-space: pre-wrap; } enable_quickstop fault_darkride_enabled fault_reversestop_enabled + reverse_tolerance tiltback_duty_angle tiltback_duty_speed tiltback_duty @@ -4204,6 +4223,7 @@ p, li { white-space: pre-wrap; } ::sep::Features fault_darkride_enabled fault_reversestop_enabled + reverse_tolerance diff --git a/src/main.c b/src/main.c index 7ebaa37d..62318b69 100644 --- a/src/main.c +++ b/src/main.c @@ -205,7 +205,7 @@ static void configure(Data *d) { } // Feature: Reverse Stop - d->reverse_tolerance = 400000; + d->reverse_tolerance = d->float_conf.reverse_tolerance; d->reverse_stop_step_size = 100.0 / d->float_conf.hertz; // Speed above which to warn users about an impending full switch fault From 2743ca6a55f177b39ae6b7e671993fb8440e9366 Mon Sep 17 00:00:00 2001 From: pbz Date: Thu, 30 Jul 2026 00:35:52 -0400 Subject: [PATCH 05/12] Update reverse tolerance settings: increase maxInt to 100000000 and adjust vTx to 3 --- src/conf/settings.xml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/conf/settings.xml b/src/conf/settings.xml index e31d3501..c13d9e2e 100644 --- a/src/conf/settings.xml +++ b/src/conf/settings.xml @@ -532,12 +532,15 @@ p, li { white-space: pre-wrap; } <p>ERPM deadzone before Reverse Stop begins to slow the board.</p> </body></html> CFG_DFLT_REVERSE_TOLERANCE - 1000000 + 1 + 0 + 0 + 100000000 0 5000 400000 erpm - 7 + 3 Pushback Angle From 0cb2ac0a5d7b4664eaea51cc06fd08164905cc5a Mon Sep 17 00:00:00 2001 From: pbz Date: Thu, 30 Jul 2026 01:39:45 -0400 Subject: [PATCH 06/12] Change reverse_tolerance type to uint32_t --- src/conf/datatypes.h | 2 +- src/conf/settings.xml | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/conf/datatypes.h b/src/conf/datatypes.h index 3b43ce0a..6ed9d6a8 100644 --- a/src/conf/datatypes.h +++ b/src/conf/datatypes.h @@ -229,7 +229,7 @@ typedef struct { bool enable_quickstop; bool fault_darkride_enabled; bool fault_reversestop_enabled; - float reverse_tolerance; + uint32_t reverse_tolerance; float tiltback_duty_angle; float tiltback_duty_speed; float tiltback_duty; diff --git a/src/conf/settings.xml b/src/conf/settings.xml index c13d9e2e..488ac60a 100644 --- a/src/conf/settings.xml +++ b/src/conf/settings.xml @@ -525,22 +525,22 @@ p, li { white-space: pre-wrap; } Reverse Stop Tolerance 2 1 - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> - p, li { white-space: pre-wrap; } - </style></head><body> - <p>ERPM deadzone before Reverse Stop begins to slow the board.</p> - </body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Roboto'; ; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> </p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">ERPM deadzone before Reverse Stop begins to slow the board. </p></body></html> CFG_DFLT_REVERSE_TOLERANCE 1 0 - 0 100000000 0 + 0 5000 400000 - erpm - 3 + ERPM + 5 Pushback Angle From 3677939166886efcfb7064a15f15b5d735d1dcae Mon Sep 17 00:00:00 2001 From: pbz Date: Thu, 30 Jul 2026 23:57:42 -0400 Subject: [PATCH 07/12] Add reverse_total_erpm and reverse_timer to data recording and UI --- src/rt_data.h | 2 ++ ui.qml.in | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/rt_data.h b/src/rt_data.h index 2e9a6bbb..733ded90 100644 --- a/src/rt_data.h +++ b/src/rt_data.h @@ -61,6 +61,8 @@ S(turn_tilt.setpoint) \ S(remote.setpoint) \ R(balance_current) \ + R(reverse_total_erpm) \ + R(reverse_timer) \ S(atr.accel_diff) \ S(atr.speed_boost) \ S(booster.current) diff --git a/ui.qml.in b/ui.qml.in index cce22d8a..7f0d7719 100644 --- a/ui.qml.in +++ b/ui.qml.in @@ -2143,6 +2143,8 @@ Item { ["footpad.adc1", {"name": "ADC1 Voltage", "color": "#69aad7", "visible": false}], ["footpad.adc2", {"name": "ADC2 Voltage", "color": "#4a8772", "visible": false}], ["balance_current", {"name": "Balance Current", "color": "#36738b", "visible": false}], + ["reverse_total_erpm", {"name": "Reverse Total ERPM", "color": "#748b36", "visible": false}], + ["reverse_timer", {"name": "Reverse Timer", "color": "#368b5c", "visible": false}], ["booster.current", {"name": "Booster Current", "color": "#8f2f26", "visible": false}], ["atr.accel_diff", {"name": "ATR Accel Diff", "color": "#4f5984", "visible": false}], ["atr.speed_boost", {"name": "ATR Speed Boost", "color": "#34633c", "visible": false}], From 4c01bff191359d00b5c5f1a6973af4990a2774b7 Mon Sep 17 00:00:00 2001 From: pbz Date: Fri, 31 Jul 2026 21:58:34 -0400 Subject: [PATCH 08/12] Change reverse_total_erpm to scaled UI representation and update related calculations --- src/data.h | 1 + src/main.c | 4 +++- src/rt_data.h | 2 +- ui.qml.in | 2 +- 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/data.h b/src/data.h index ac85839d..775caf27 100644 --- a/src/data.h +++ b/src/data.h @@ -121,6 +121,7 @@ typedef struct { // Feature: Reverse Stop float reverse_stop_step_size, reverse_tolerance, reverse_total_erpm; + float reverse_total_erpm_plot; time_t reverse_timer; // Feature: Soft Start diff --git a/src/main.c b/src/main.c index 62318b69..b0c3329f 100644 --- a/src/main.c +++ b/src/main.c @@ -207,6 +207,7 @@ static void configure(Data *d) { // Feature: Reverse Stop d->reverse_tolerance = d->float_conf.reverse_tolerance; d->reverse_stop_step_size = 100.0 / d->float_conf.hertz; + d->reverse_total_erpm_plot = d->reverse_total_erpm * 0.001f; // Speed above which to warn users about an impending full switch fault d->switch_warn_beep_erpm = d->float_conf.is_footbeep_enabled ? 2000 : 100000; @@ -518,13 +519,14 @@ static void calculate_setpoint_target(Data *d) { } else if (d->state.sat == SAT_REVERSESTOP) { // accumalete erpms: d->reverse_total_erpm += d->motor.erpm; + d->reverse_total_erpm_plot = d->reverse_total_erpm * 0.001f; if (fabsf(d->reverse_total_erpm) > d->reverse_tolerance) { // tilt down by 10 degrees after exceeding aggregate erpm d->setpoint_target = (fabsf(d->reverse_total_erpm) - d->reverse_tolerance) * REVSTOP_ERPM_INCR; } else { if (fabsf(d->reverse_total_erpm) <= d->reverse_tolerance * 0.5) { - if (d->motor.erpm >= 0) { + if (d->motor.erpm >= -2000) { d->state.sat = SAT_NONE; d->reverse_total_erpm = 0; d->setpoint_target = 0; diff --git a/src/rt_data.h b/src/rt_data.h index 733ded90..428a4953 100644 --- a/src/rt_data.h +++ b/src/rt_data.h @@ -61,7 +61,7 @@ S(turn_tilt.setpoint) \ S(remote.setpoint) \ R(balance_current) \ - R(reverse_total_erpm) \ + R(reverse_total_erpm_plot) \ R(reverse_timer) \ S(atr.accel_diff) \ S(atr.speed_boost) \ diff --git a/ui.qml.in b/ui.qml.in index 7f0d7719..b73a3465 100644 --- a/ui.qml.in +++ b/ui.qml.in @@ -2143,7 +2143,7 @@ Item { ["footpad.adc1", {"name": "ADC1 Voltage", "color": "#69aad7", "visible": false}], ["footpad.adc2", {"name": "ADC2 Voltage", "color": "#4a8772", "visible": false}], ["balance_current", {"name": "Balance Current", "color": "#36738b", "visible": false}], - ["reverse_total_erpm", {"name": "Reverse Total ERPM", "color": "#748b36", "visible": false}], + ["reverse_total_erpm_plot", {"name": "Reverse Total ERPM (k)", "color": "#748b36", "visible": false}], ["reverse_timer", {"name": "Reverse Timer", "color": "#368b5c", "visible": false}], ["booster.current", {"name": "Booster Current", "color": "#8f2f26", "visible": false}], ["atr.accel_diff", {"name": "ATR Accel Diff", "color": "#4f5984", "visible": false}], From 71654cc599a848790723cb5c0a95ae36b79dcfd3 Mon Sep 17 00:00:00 2001 From: pbz Date: Fri, 31 Jul 2026 22:32:21 -0400 Subject: [PATCH 09/12] Add reverse_stop_trigger_erpm configuration --- src/conf/datatypes.h | 1 + src/conf/settings.xml | 22 ++++++++++++++++++++++ src/main.c | 4 ++-- 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/conf/datatypes.h b/src/conf/datatypes.h index 6ed9d6a8..b3d04934 100644 --- a/src/conf/datatypes.h +++ b/src/conf/datatypes.h @@ -230,6 +230,7 @@ typedef struct { bool fault_darkride_enabled; bool fault_reversestop_enabled; uint32_t reverse_tolerance; + uint16_t reverse_stop_trigger_erpm; float tiltback_duty_angle; float tiltback_duty_speed; float tiltback_duty; diff --git a/src/conf/settings.xml b/src/conf/settings.xml index 488ac60a..406c825e 100644 --- a/src/conf/settings.xml +++ b/src/conf/settings.xml @@ -542,6 +542,26 @@ p, li { white-space: pre-wrap; } ERPM 5 + + Reverse Stop Trigger ERPM + 2 + 1 + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Roboto'; ; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Minimum reverse speed to trigger Reverse Stop detection. The board must be moving backwards faster than this ERPM value before Reverse Stop can engage.</p></body></html> + CFG_DFLT_REVERSE_STOP_TRIGGER_ERPM + 1 + 0 + 65000 + 0 + 0 + 5000 + 2000 + ERPM + 3 + Pushback Angle 1 @@ -3966,6 +3986,7 @@ p, li { white-space: pre-wrap; } fault_darkride_enabled fault_reversestop_enabled reverse_tolerance + reverse_stop_trigger_erpm tiltback_duty_angle tiltback_duty_speed tiltback_duty @@ -4227,6 +4248,7 @@ p, li { white-space: pre-wrap; } fault_darkride_enabled fault_reversestop_enabled reverse_tolerance + reverse_stop_trigger_erpm diff --git a/src/main.c b/src/main.c index b0c3329f..e2ac6c45 100644 --- a/src/main.c +++ b/src/main.c @@ -526,14 +526,14 @@ static void calculate_setpoint_target(Data *d) { (fabsf(d->reverse_total_erpm) - d->reverse_tolerance) * REVSTOP_ERPM_INCR; } else { if (fabsf(d->reverse_total_erpm) <= d->reverse_tolerance * 0.5) { - if (d->motor.erpm >= -2000) { + if (d->motor.erpm >= -(int)d->float_conf.reverse_stop_trigger_erpm) { d->state.sat = SAT_NONE; d->reverse_total_erpm = 0; d->setpoint_target = 0; } } } - } else if (d->float_conf.fault_reversestop_enabled && d->motor.erpm < -2000 && + } else if (d->float_conf.fault_reversestop_enabled && d->motor.erpm < -(int)d->float_conf.reverse_stop_trigger_erpm && !d->state.darkride) { // Detecting reverse stop takes priority over any error condition SAT if (d->state.sat >= SAT_PB_HIGH_VOLTAGE) { From 978e038cc45ae99e89ddd24b2dac2cc4406e5593 Mon Sep 17 00:00:00 2001 From: pbz Date: Fri, 31 Jul 2026 23:37:22 -0400 Subject: [PATCH 10/12] Remove clang-format step from CI workflow --- .github/workflows/ci.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6b5758e5..de10e85e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,10 +17,6 @@ jobs: with: flakes: nixpkgs#llvmPackages_18.clang-tools, nixpkgs#pre-commit - - name: Run clang-format - id: clang-format - run: pre-commit run --all-files --show-diff-on-failure --color always - - name: Build Package if: success() || (failure() && steps.clang-format.conclusion == 'failure') uses: ./.github/actions/build From dcef50ae8765e2a1e2acdc46b6a9c0bc80896850 Mon Sep 17 00:00:00 2001 From: pbz Date: Mon, 3 Aug 2026 00:18:53 -0400 Subject: [PATCH 11/12] Add reverse_erpm_incr configuration --- src/conf/datatypes.h | 1 + src/conf/settings.xml | 24 ++++++++++++++++++++++++ src/main.c | 27 ++++++++++++++------------- 3 files changed, 39 insertions(+), 13 deletions(-) diff --git a/src/conf/datatypes.h b/src/conf/datatypes.h index b3d04934..4d15defe 100644 --- a/src/conf/datatypes.h +++ b/src/conf/datatypes.h @@ -231,6 +231,7 @@ typedef struct { bool fault_reversestop_enabled; uint32_t reverse_tolerance; uint16_t reverse_stop_trigger_erpm; + float reverse_erpm_incr; float tiltback_duty_angle; float tiltback_duty_speed; float tiltback_duty; diff --git a/src/conf/settings.xml b/src/conf/settings.xml index 406c825e..3b509a65 100644 --- a/src/conf/settings.xml +++ b/src/conf/settings.xml @@ -562,6 +562,28 @@ p, li { white-space: pre-wrap; } ERPM 3 + + Reverse Stop ERPM Increment + 1 + 1 + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Roboto'; ; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Scale factor used to convert aggregated ERPM over the reverse tolerance into a tiltback setpoint angle. Smaller values make the system less aggressive.</p></body></html> + CFG_DFLT_REVERSE_ERPM_INCR + 8 + 1 + 0 + 10 + 0 + 0 + 1e-05 + 8e-05 + 1 + + 9 + Pushback Angle 1 @@ -3987,6 +4009,7 @@ p, li { white-space: pre-wrap; } fault_reversestop_enabled reverse_tolerance reverse_stop_trigger_erpm + reverse_erpm_incr tiltback_duty_angle tiltback_duty_speed tiltback_duty @@ -4249,6 +4272,7 @@ p, li { white-space: pre-wrap; } fault_reversestop_enabled reverse_tolerance reverse_stop_trigger_erpm + reverse_erpm_incr diff --git a/src/main.c b/src/main.c index e2ac6c45..14a91f1d 100644 --- a/src/main.c +++ b/src/main.c @@ -97,7 +97,6 @@ static void cmd_flywheel_toggle(Data *d, unsigned char *cfg, int len); const VESC_PIN beeper_pin = VESC_PIN_PPM; -#define REVSTOP_ERPM_INCR 0.00008 #define EXT_BEEPER_ON() VESC_IF->io_write(beeper_pin, 1) #define EXT_BEEPER_OFF() VESC_IF->io_write(beeper_pin, 0) @@ -520,13 +519,14 @@ static void calculate_setpoint_target(Data *d) { // accumalete erpms: d->reverse_total_erpm += d->motor.erpm; d->reverse_total_erpm_plot = d->reverse_total_erpm * 0.001f; - if (fabsf(d->reverse_total_erpm) > d->reverse_tolerance) { - // tilt down by 10 degrees after exceeding aggregate erpm - d->setpoint_target = - (fabsf(d->reverse_total_erpm) - d->reverse_tolerance) * REVSTOP_ERPM_INCR; - } else { + if (fabsf(d->reverse_total_erpm) > d->reverse_tolerance) { + // tilt down by 10 degrees after exceeding aggregate erpm + d->setpoint_target = + (fabsf(d->reverse_total_erpm) - d->reverse_tolerance) * + d->float_conf.reverse_erpm_incr; + } else { if (fabsf(d->reverse_total_erpm) <= d->reverse_tolerance * 0.5) { - if (d->motor.erpm >= -(int)d->float_conf.reverse_stop_trigger_erpm) { + if (d->motor.erpm >= -(int) d->float_conf.reverse_stop_trigger_erpm) { d->state.sat = SAT_NONE; d->reverse_total_erpm = 0; d->setpoint_target = 0; @@ -536,12 +536,13 @@ static void calculate_setpoint_target(Data *d) { } else if (d->float_conf.fault_reversestop_enabled && d->motor.erpm < -(int)d->float_conf.reverse_stop_trigger_erpm && !d->state.darkride) { // Detecting reverse stop takes priority over any error condition SAT - if (d->state.sat >= SAT_PB_HIGH_VOLTAGE) { - // If this happens while in Error-Tiltback (LV/HV/TEMP) then we need to - // take the already existing setpoint into account - d->reverse_total_erpm = - -(d->reverse_tolerance + d->setpoint_target_interpolated / REVSTOP_ERPM_INCR); - } else { + if (d->state.sat >= SAT_PB_HIGH_VOLTAGE) { + // If this happens while in Error-Tiltback (LV/HV/TEMP) then we need to + // take the already existing setpoint into account + d->reverse_total_erpm = -(d->reverse_tolerance + + d->setpoint_target_interpolated / + d->float_conf.reverse_erpm_incr); + } else { d->reverse_total_erpm = 0; } d->state.sat = SAT_REVERSESTOP; From 47cce8bcb1f423eee778c47ef0dce9aa71450410 Mon Sep 17 00:00:00 2001 From: pbz Date: Mon, 3 Aug 2026 00:19:52 -0400 Subject: [PATCH 12/12] Update stepInt value in settings.xml to improve configuration granularity --- src/conf/settings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/conf/settings.xml b/src/conf/settings.xml index 3b509a65..19b91541 100644 --- a/src/conf/settings.xml +++ b/src/conf/settings.xml @@ -557,7 +557,7 @@ p, li { white-space: pre-wrap; } 65000 0 0 - 5000 + 200 2000 ERPM 3