Reworked KeyCombo to support 2-Button-Variant

This commit is contained in:
Marcel Peterkau 2023-04-12 22:45:24 +02:00
parent 6b89ed9a8c
commit 53928a93b0
2 changed files with 40 additions and 20 deletions

View File

@ -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

View File

@ -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)
{
keyStatus_Fac3 = KEY_PRESSED;
// Process FactionKey 1 ComboCounter
if (btnState[0] == FAC_1_TRG_PRESSED && keyStatus_Fac1 == KEY_RELEASED)
if (btnState[0] == FAC_1_TRG_PRESSED)
{
keyStatus_Fac1 = KEY_PRESSED;
keyCount_Fac1++;
}
if (btnState[0] != FAC_1_TRG_PRESSED)
keyStatus_Fac1 = KEY_RELEASED;
// 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_PRESSED)
{
if (keyCount_Fac1 > 0 || keyCount_Fac2 > 0)
Serial.printf("KeyCombo 1: %d | 2: %d\n", keyCount_Fac1, keyCount_Fac2);
if (btnState[2] != FAC_3_TRG_PRESSED)
keyStatus_Fac3 = KEY_RELEASED;
}
if (keyCount_Fac1 == 2 && keyCount_Fac2 == 2)
if (btnState[0] != FAC_1_TRG_PRESSED && keyStatus_Fac1 == KEY_PRESSED)
{
if (keyCount_Fac2 > 0 || keyCount_Fac3 > 0)
Serial.printf("KeyCombo 2: %d | 3: %d\n", keyCount_Fac2, keyCount_Fac3);
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;