From 9bc369d4b6b7fa4e7aa9f2c9e12fc25dc604edb2 Mon Sep 17 00:00:00 2001 From: Paul Clark Date: Sat, 6 Dec 2025 11:22:43 +0000 Subject: [PATCH 1/2] Add settings.defaultDoubleTapInterval_ms Beneficial for older fingers on EVK On Torch and Torch X2, default to 1000ms --- Firmware/RTK_Everywhere/Tasks.ino | 9 +++++++-- Firmware/RTK_Everywhere/menuSystem.ino | 15 +++++++++++++-- Firmware/RTK_Everywhere/settings.h | 2 ++ 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/Firmware/RTK_Everywhere/Tasks.ino b/Firmware/RTK_Everywhere/Tasks.ino index ef8cf6841..bfcb202ad 100644 --- a/Firmware/RTK_Everywhere/Tasks.ino +++ b/Firmware/RTK_Everywhere/Tasks.ino @@ -2017,9 +2017,14 @@ void buttonCheckTask(void *e) { // Record the time of the most recent two button releases // This allows us to detect single and double presses - unsigned long doubleTapInterval = 250; // User must press and release twice within this to create a double tap - if (present.imu_im19 && (present.display_type == DISPLAY_MAX_NONE)) + // User must press and release twice within this to create a double tap + // 250ms is OK for youngsters. 500ms is better for older fingers + // Remember that this also limits how fast you can scroll through the display menu + // Set settings.defaultDoubleTapInterval_ms to the minimum for your fingers + unsigned long doubleTapInterval = settings.defaultDoubleTapInterval_ms; + + if ((productVariant == RTK_TORCH) || (productVariant == RTK_TORCH_X2)) doubleTapInterval = 1000; // We are only interested in double taps, so use a longer interval unsigned long previousButtonRelease = 0; diff --git a/Firmware/RTK_Everywhere/menuSystem.ino b/Firmware/RTK_Everywhere/menuSystem.ino index 4afc6a639..3ce96aa2c 100644 --- a/Firmware/RTK_Everywhere/menuSystem.ino +++ b/Firmware/RTK_Everywhere/menuSystem.ino @@ -532,11 +532,13 @@ void menuDebugHardware() systemPrint("19) Print CLI Debugging: "); systemPrintf("%s\r\n", settings.debugCLI ? "Enabled" : "Disabled"); - systemPrintf("20) Delay between CLI LIST prints over BLE: %d\r\n", settings.cliBlePrintDelay_ms); + systemPrintf("20) Delay between CLI LIST prints over BLE: %dms\r\n", settings.cliBlePrintDelay_ms); systemPrint("21) Print GNSS Config Debugging: "); systemPrintf("%s\r\n", settings.debugGnssConfig ? "Enabled" : "Disabled"); + systemPrintf("22) Default Double-Tap Interval: %dms\r\n", settings.defaultDoubleTapInterval_ms); + systemPrintln("e) Erase LittleFS"); systemPrintln("t) Test Screen"); @@ -667,11 +669,20 @@ void menuDebugHardware() settings.cliBlePrintDelay_ms = newDelay; } } - else if (incoming == 21) { settings.debugGnssConfig ^= 1; } + else if (incoming == 22) + { + systemPrintf("Enter default double-tap interval (milliseconds, %d to %d): ", 250, 1000); + int newInterval = getUserInputNumber(); // Returns EXIT, TIMEOUT, or long + if ((newInterval != INPUT_RESPONSE_GETNUMBER_EXIT) && (newInterval != INPUT_RESPONSE_GETNUMBER_TIMEOUT)) + { + if ((newInterval >= 250) && (newInterval <= 1000)) + settings.defaultDoubleTapInterval_ms = newInterval; + } + } else if (incoming == 'e') { diff --git a/Firmware/RTK_Everywhere/settings.h b/Firmware/RTK_Everywhere/settings.h index 04d068d40..dcced343d 100644 --- a/Firmware/RTK_Everywhere/settings.h +++ b/Firmware/RTK_Everywhere/settings.h @@ -787,6 +787,7 @@ struct Settings // Hardware bool enableExternalHardwareEventLogging = false; // Log when INT/TM2 pin goes low uint16_t spiFrequency = 16; // By default, use 16MHz SPI + uint32_t defaultDoubleTapInterval_ms = 250; // HTTP bool debugHttpClientData = false; // Debug the HTTP Client (ZTP) data flow @@ -1433,6 +1434,7 @@ const RTK_Settings_Entry rtkSettingsEntries[] = // Hardware { 1, 1, 0, 1, 1, 1, 0, 1, 0, NON, 0, _bool, 0, & settings.enableExternalHardwareEventLogging, "enableExternalHardwareEventLogging", nullptr, }, { 0, 0, 0, 1, 1, 1, 0, 1, 1, ALL, 0, _uint16_t, 0, & settings.spiFrequency, "spiFrequency", nullptr, }, + { 0, 1, 0, 1, 1, 1, 1, 1, 1, ALL, 1, _uint32_t, 0, & settings.defaultDoubleTapInterval_ms, "defaultDoubleTapInterval", nullptr, }, // HTTP { 0, 0, 0, 1, 1, 1, 1, 1, 1, ALL, 1, _bool, 0, & settings.debugHttpClientData, "debugHttpClientData", nullptr, }, From 0c1bba18016b6a56d1e189c8ee02d0cd58de597d Mon Sep 17 00:00:00 2001 From: Paul Clark Date: Sat, 6 Dec 2025 11:25:15 +0000 Subject: [PATCH 2/2] Alphabetize --- Firmware/RTK_Everywhere/settings.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Firmware/RTK_Everywhere/settings.h b/Firmware/RTK_Everywhere/settings.h index dcced343d..cb1828a04 100644 --- a/Firmware/RTK_Everywhere/settings.h +++ b/Firmware/RTK_Everywhere/settings.h @@ -785,9 +785,9 @@ struct Settings int uartReceiveBufferSize = 1024 * 2; // This buffer is filled automatically as the UART receives characters // Hardware + uint32_t defaultDoubleTapInterval_ms = 250; bool enableExternalHardwareEventLogging = false; // Log when INT/TM2 pin goes low uint16_t spiFrequency = 16; // By default, use 16MHz SPI - uint32_t defaultDoubleTapInterval_ms = 250; // HTTP bool debugHttpClientData = false; // Debug the HTTP Client (ZTP) data flow @@ -1432,9 +1432,9 @@ const RTK_Settings_Entry rtkSettingsEntries[] = { 0, 1, 0, 1, 1, 1, 1, 1, 1, ALL, 1, _uint16_t, 0, & settings.measurementRateMs, "measurementRateMs", nullptr, }, // Hardware + { 0, 1, 0, 1, 1, 1, 1, 1, 1, ALL, 1, _uint32_t, 0, & settings.defaultDoubleTapInterval_ms, "defaultDoubleTapInterval", nullptr, }, { 1, 1, 0, 1, 1, 1, 0, 1, 0, NON, 0, _bool, 0, & settings.enableExternalHardwareEventLogging, "enableExternalHardwareEventLogging", nullptr, }, { 0, 0, 0, 1, 1, 1, 0, 1, 1, ALL, 0, _uint16_t, 0, & settings.spiFrequency, "spiFrequency", nullptr, }, - { 0, 1, 0, 1, 1, 1, 1, 1, 1, ALL, 1, _uint32_t, 0, & settings.defaultDoubleTapInterval_ms, "defaultDoubleTapInterval", nullptr, }, // HTTP { 0, 0, 0, 1, 1, 1, 1, 1, 1, ALL, 1, _bool, 0, & settings.debugHttpClientData, "debugHttpClientData", nullptr, },