diff --git a/Software/src/common.h b/Software/src/common.h index 676904d..49cd65e 100644 --- a/Software/src/common.h +++ b/Software/src/common.h @@ -13,6 +13,7 @@ #define HOST_NAME "AirsoftTimer_%08X" #define SHUTDOWN_DELAY_MS 5000 +#define RESETABLE_AFTER_STARTUP_MS 30000 #define GPIO_LORA_TX D3 #define GPIO_LORA_RX D4 diff --git a/Software/src/main.cpp b/Software/src/main.cpp index d6efff5..788c7f5 100644 --- a/Software/src/main.cpp +++ b/Software/src/main.cpp @@ -253,13 +253,13 @@ void SevenSeg_Output() if (millis() % 3000 < 1500) snprintf(sevenSegBuff, sizeof(sevenSegBuff), "%4d", globals.battery_level); else - snprintf(sevenSegBuff, sizeof(sevenSegBuff), "%2d.%1d", (globals.loadvoltage_mV / 1000), ((globals.loadvoltage_mV % 1000) / 100)); + snprintf(sevenSegBuff, sizeof(sevenSegBuff), "%3d.%1d", (globals.loadvoltage_mV / 1000), ((globals.loadvoltage_mV % 1000) / 100)); disp_FAC_1.setBrightness(1); - disp_FAC_1.display(" BAT"); + disp_FAC_1.display(" Bat"); disp_FAC_2.setBrightness(1); - disp_FAC_2.display("LOW "); + disp_FAC_2.display("low "); disp_FAC_3.setBrightness(1); disp_FAC_3.display(String(sevenSegBuff)); @@ -503,20 +503,11 @@ void ProcessKeyCombos(bool *btnState) static keyStatus_t keyStatus_Fac2 = KEY_RELEASED; static uint8_t keyCount_Fac2 = 0; static keyStatus_t keyStatus_Fac3 = KEY_RELEASED; + static uint8_t keyCount_Fac3 = 0; - if (btnState[2] == FAC_3_TRG_PRESSED) + if (btnState[0] == FAC_1_TRG_PRESSED) { - keyStatus_Fac3 = KEY_PRESSED; - - // Process FactionKey 1 ComboCounter - if (btnState[0] == FAC_1_TRG_PRESSED && keyStatus_Fac1 == KEY_RELEASED) - { - keyStatus_Fac1 = KEY_PRESSED; - keyCount_Fac1++; - } - - if (btnState[0] != FAC_1_TRG_PRESSED) - keyStatus_Fac1 = KEY_RELEASED; + keyStatus_Fac1 = KEY_PRESSED; // Process FactionKey 2 ComboCounter if (btnState[1] == FAC_2_TRG_PRESSED && keyStatus_Fac2 == KEY_RELEASED) @@ -527,22 +518,50 @@ void ProcessKeyCombos(bool *btnState) if (btnState[1] != FAC_2_TRG_PRESSED) keyStatus_Fac2 = KEY_RELEASED; + + // Process FactionKey 3 ComboCounter + if (btnState[2] == FAC_3_TRG_PRESSED && keyStatus_Fac3 == KEY_RELEASED) + { + keyStatus_Fac3 = KEY_PRESSED; + keyCount_Fac3++; + } + + if (btnState[2] != FAC_3_TRG_PRESSED) + keyStatus_Fac3 = KEY_RELEASED; } - if (btnState[2] != FAC_3_TRG_PRESSED && keyStatus_Fac3 == KEY_PRESSED) + if (btnState[0] != FAC_1_TRG_PRESSED && keyStatus_Fac1 == KEY_PRESSED) { - if (keyCount_Fac1 > 0 || keyCount_Fac2 > 0) - Serial.printf("KeyCombo 1: %d | 2: %d\n", keyCount_Fac1, keyCount_Fac2); + if (keyCount_Fac2 > 0 || keyCount_Fac3 > 0) + Serial.printf("KeyCombo 2: %d | 3: %d\n", keyCount_Fac2, keyCount_Fac3); - if (keyCount_Fac1 == 2 && keyCount_Fac2 == 2) + if (keyCount_Fac2 == 2 && keyCount_Fac3 == 0) { Serial.println("KeyCombo: WiFi AP ON"); OverrideDisplay("NET ", 5000); toggleWiFiAP(false); } + else if (keyCount_Fac2 == 4 && keyCount_Fac3 == 0) + { + Serial.printf("KeyCombo: Reset Timer\n"); + if (millis() < RESETABLE_AFTER_STARTUP_MS) + { + OverrideDisplay("RST ", 5000); + PersistenceData.faction_1_timer = 0; + PersistenceData.faction_2_timer = 0; + PersistenceData.faction_3_timer = 0; + PersistenceData.activeFaction = NONE; + globals.requestEEAction = EE_PDS_SAVE; + } + else + { + OverrideDisplay("ERR ", 5000); + Serial.printf("ERROR: only %d seconds after Startup!\n", RESETABLE_AFTER_STARTUP_MS / 1000); + } + } - keyCount_Fac1 = 0; keyCount_Fac2 = 0; + keyCount_Fac3 = 0; keyStatus_Fac1 = KEY_RELEASED; keyStatus_Fac2 = KEY_RELEASED; keyStatus_Fac3 = KEY_RELEASED;