Compare commits
10 Commits
22a62e3d1e
...
1.02
Author | SHA1 | Date | |
---|---|---|---|
e6f1283aae | |||
a92b1edfd9 | |||
4cce7c1c86 | |||
0a1625e9b8 | |||
c24829ed70 | |||
a102405596 | |||
1b7157dbdc | |||
cad34d6b84 | |||
701bf9f457 | |||
0a895a00b9 |
@@ -77,31 +77,28 @@
|
||||
<hr />
|
||||
<p>
|
||||
<h4>aktueller Punktestand</h4>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-borderless table-dark">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="text-center" scope="col">%NAME_FAC_1%</th>
|
||||
<th class="text-center" scope="col">%NAME_FAC_2%</th>
|
||||
<th class="text-center" scope="col">%NAME_FAC_3%</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="mx-auto"><img src="static/img/logo_fac1.png" class="rounded mx-auto img-fluid d-block"
|
||||
alt="..."></td>
|
||||
<td class="mx-auto"><img src="static/img/logo_fac2.png" class="rounded mx-auto img-fluid d-block"
|
||||
alt="..."></td>
|
||||
<td class="mx-auto"><img src="static/img/logo_fac3.png" class="rounded mx-auto img-fluid d-block"
|
||||
alt="..."></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="text-center">%POINTS_FAC_1%</td>
|
||||
<td class="text-center">%POINTS_FAC_2%</td>
|
||||
<td class="text-center">%POINTS_FAC_3%</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col text-center %FACTION_1_ACTIVE% text-white p-3">%NAME_FAC_1%</div>
|
||||
<div class="col text-center %FACTION_2_ACTIVE% text-white p-3">%NAME_FAC_2%</div>
|
||||
<div class="col text-center %FACTION_3_ACTIVE% text-white p-3">%NAME_FAC_3%</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col bg-dark text-white p-3"><img src="static/img/logo_fac1.png"
|
||||
class="rounded mx-auto img-fluid d-block" alt="...">
|
||||
</div>
|
||||
<div class="col bg-dark text-white p-3"><img src="static/img/logo_fac2.png"
|
||||
class="rounded mx-auto img-fluid d-block" alt="...">
|
||||
</div>
|
||||
<div class="col bg-dark text-white p-3"><img src="static/img/logo_fac3.png"
|
||||
class="rounded mx-auto img-fluid d-block" alt="...">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col text-center bg-secondary text-white p-3">%POINTS_FAC_1%</div>
|
||||
<div class="col text-center bg-secondary text-white p-3">%POINTS_FAC_2%</div>
|
||||
<div class="col text-center bg-secondary text-white p-3">%POINTS_FAC_3%</div>
|
||||
</div>
|
||||
</div>
|
||||
</p>
|
||||
<!-- Div GroupFaction Points -->
|
||||
@@ -219,13 +216,55 @@
|
||||
<label for="factionreboot_cont" class="control-label col-4">active Faction Recovery</label>
|
||||
<div class="col-8">
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="checkbox" name="factionreboot_cont" id="factionreboot_cont" %FACTIONREBOOT_CHECKED%>
|
||||
<input class="form-check-input" type="checkbox" name="factionreboot_cont" id="factionreboot_cont"
|
||||
%FACTIONREBOOT_CHECKED%>
|
||||
<label class="form-check-label" for="factionreboot_cont">
|
||||
aktive Faktion beim booten wiederherstellen ?
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<h4>Faktionsbezeichnungen</h4>
|
||||
<div class="alert alert-primary alert-dismissable show fade" role="alert">
|
||||
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
<strong>Achtung!</strong><br>
|
||||
Faktionsbezeichnungen können nur aus ASCII-Zeichen bestehen, also A-Z, a-z und 0-9
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="faction_1_name" class="control-label col-4">Faktion 1</label>
|
||||
<div class="col-8">
|
||||
<div class="input-group">
|
||||
<input id="faction_1_name" name="faction_1_name" value="%NAME_FAC_1%" type="text" class="form-control" pattern="[A-Za-z0-9 _-]{1,32}">
|
||||
<div class="input-group-append">
|
||||
<span class="input-group-text">max 32 Zeichen</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="faction_2_name" class="control-label col-4">Faktion 2</label>
|
||||
<div class="col-8">
|
||||
<div class="input-group">
|
||||
<input id="faction_2_name" name="faction_2_name" value="%NAME_FAC_2%" type="text" class="form-control" pattern="[A-Za-z0-9 _-]{1,32}">
|
||||
<div class="input-group-append">
|
||||
<span class="input-group-text">max 32 Zeichen</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="faction_3_name" class="control-label col-4">Faktion 3</label>
|
||||
<div class="col-8">
|
||||
<div class="input-group">
|
||||
<input id="faction_3_name" name="faction_3_name" value="%NAME_FAC_3%" type="text" class="form-control" pattern="[A-Za-z0-9 _-]{1,32}">
|
||||
<div class="input-group-append">
|
||||
<span class="input-group-text">max 32 Zeichen</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<div class="col text-center">
|
||||
<button name="settingssave" type="submit" class="btn btn-outline-primary">Übernehmen</button>
|
||||
@@ -254,6 +293,10 @@
|
||||
<td>Hostname</td>
|
||||
<td>%HOSTNAME%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Device-ID</td>
|
||||
<td>%DEVICENAME_ID%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Battery Voltage</td>
|
||||
<td>%BAT_VOLTAGE%V</td>
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 34 KiB |
Binary file not shown.
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 37 KiB |
@@ -10,6 +10,7 @@
|
||||
#include "common.h"
|
||||
#include "debugger.h"
|
||||
|
||||
#define I2C_EE_ADDRESS 0x50
|
||||
#define EEPROM_SIZE_BYTES I2C_DEVICESIZE_24LC64
|
||||
#define EEPROM_ENDURANCE 1000000
|
||||
|
||||
@@ -51,9 +52,9 @@ typedef struct
|
||||
uint8_t EEPROM_Version;
|
||||
batteryType_t batteryType;
|
||||
bool active_faction_on_reboot;
|
||||
char Faction_1_Name[32];
|
||||
char Faction_2_Name[32];
|
||||
char Faction_3_Name[32];
|
||||
char Faction_1_Name[33];
|
||||
char Faction_2_Name[33];
|
||||
char Faction_3_Name[33];
|
||||
uint32_t checksum;
|
||||
} configData_t;
|
||||
|
||||
|
@@ -27,8 +27,8 @@ upload_speed = 921600
|
||||
build_flags=
|
||||
!python git_rev_macro.py
|
||||
-DATOMIC_FS_UPDATE
|
||||
-DFEATURE_ENABLE_WIFI_CLIENT
|
||||
-DFEATURE_ENABLE_LORA
|
||||
;-DFEATURE_ENABLE_WIFI_CLIENT
|
||||
;-DFEATURE_ENABLE_LORA
|
||||
;-DCAPTIVE
|
||||
-DWIFI_AP_IP_GW=10,0,0,1
|
||||
-DADMIN_PASSWORD=${wifi_cred.admin_password}
|
||||
@@ -37,9 +37,6 @@ build_flags=
|
||||
-DWIFI_AP_SSID=${wifi_cred.wifi_ap_ssid}
|
||||
-DWIFI_AP_PASSWORD=${wifi_cred.wifi_ap_password}
|
||||
-DDEVICE_NAME='"Dark Emergency Timer"'
|
||||
-DFACTION_1_NAME='"GOF"'
|
||||
-DFACTION_2_NAME='"KGG"'
|
||||
-DFACTION_3_NAME='"MILIZ"'
|
||||
|
||||
;build_type = debug
|
||||
|
||||
|
@@ -293,7 +293,7 @@ void Debug_printHelp()
|
||||
{
|
||||
char buff[64];
|
||||
|
||||
for (int i = sizeof(helpCmd) / 63; i < sizeof(helpCmd) / 63; i++)
|
||||
for (unsigned int i = sizeof(helpCmd) / 63; i < sizeof(helpCmd) / 63; i++)
|
||||
{
|
||||
memcpy_P(buff, (helpCmd + (i * 63)), 63);
|
||||
buff[63] = 0;
|
||||
|
@@ -1,6 +1,6 @@
|
||||
#include "eeprom.h"
|
||||
|
||||
I2C_eeprom ee(0x50, EEPROM_SIZE_BYTES);
|
||||
I2C_eeprom ee(I2C_EE_ADDRESS, EEPROM_SIZE_BYTES);
|
||||
|
||||
configData_t ConfigData;
|
||||
persistenceData_t PersistenceData;
|
||||
@@ -15,6 +15,7 @@ void InitEEPROM()
|
||||
ee.begin();
|
||||
eeAvailable = checkEEPROMavailable();
|
||||
eeAvailable = ValidateEEPROM_Version();
|
||||
Serial.printf("Initialized EEPROM at Address 0x%02X\n", I2C_EE_ADDRESS);
|
||||
}
|
||||
|
||||
void EEPROM_Process()
|
||||
@@ -75,12 +76,12 @@ void EEPROM_Process()
|
||||
|
||||
void StoreConfig_EEPROM()
|
||||
{
|
||||
ConfigData.checksum = 0;
|
||||
ConfigData.checksum = Checksum_EEPROM((uint8_t *)&ConfigData, sizeof(ConfigData));
|
||||
|
||||
if (eeAvailable == false)
|
||||
return;
|
||||
|
||||
ConfigData.checksum = 0;
|
||||
ConfigData.checksum = Checksum_EEPROM((uint8_t *)&ConfigData, sizeof(ConfigData));
|
||||
|
||||
ee.updateBlock(startofConfigData, (uint8_t *)&ConfigData, sizeof(ConfigData));
|
||||
}
|
||||
|
||||
@@ -111,9 +112,6 @@ void GetConfig_EEPROM()
|
||||
|
||||
void StorePersistence_EEPROM()
|
||||
{
|
||||
PersistenceData.checksum = 0;
|
||||
PersistenceData.checksum = Checksum_EEPROM((uint8_t *)&PersistenceData, sizeof(PersistenceData));
|
||||
|
||||
if (eeAvailable == false)
|
||||
return;
|
||||
|
||||
@@ -122,6 +120,9 @@ void StorePersistence_EEPROM()
|
||||
else
|
||||
PersistenceData.writeCycleCounter++;
|
||||
|
||||
PersistenceData.checksum = 0;
|
||||
PersistenceData.checksum = Checksum_EEPROM((uint8_t *)&PersistenceData, sizeof(PersistenceData));
|
||||
|
||||
ee.updateBlock(globals.eePersistanceAdress, (uint8_t *)&PersistenceData, sizeof(PersistenceData));
|
||||
}
|
||||
|
||||
@@ -162,6 +163,7 @@ void FormatConfig_EEPROM()
|
||||
Serial.println("Formatting Config-Partition");
|
||||
ConfigData = ConfigData_defaults;
|
||||
StoreConfig_EEPROM();
|
||||
GetConfig_EEPROM();
|
||||
}
|
||||
|
||||
void FormatPersistence_EEPROM()
|
||||
@@ -170,8 +172,9 @@ void FormatPersistence_EEPROM()
|
||||
return;
|
||||
|
||||
Serial.println("Formatting Persistance-Partition");
|
||||
memset(&PersistenceData, 0, sizeof(PersistenceData));
|
||||
PersistenceData = {0};
|
||||
StorePersistence_EEPROM();
|
||||
GetPersistence_EEPROM();
|
||||
}
|
||||
|
||||
void MovePersistencePage_EEPROM(boolean reset)
|
||||
@@ -277,7 +280,7 @@ bool ValidateEEPROM_Version()
|
||||
|
||||
if (EEPROMVersionOnChip < ConfigData_defaults.EEPROM_Version)
|
||||
{
|
||||
Serial.printf("EEPROM Image Version is %d, but %d expected - trying to migrate\n");
|
||||
Serial.printf("EEPROM Image Version is %d, but %d expected - trying to migrate\n", EEPROMVersionOnChip, ConfigData_defaults.EEPROM_Version);
|
||||
if (!MigrateEEPROM(EEPROMVersionOnChip))
|
||||
{
|
||||
Serial.print("Error\n");
|
||||
@@ -322,26 +325,28 @@ bool MigrateEEPROM(uint8_t fromVersion)
|
||||
// } persistenceData_t;
|
||||
|
||||
case 1:
|
||||
// Migrate Persistance-Data
|
||||
ee.readBlock(0, (uint8_t *)&persistanceMarker_onChip, sizeof(uint16_t));
|
||||
if (persistanceMarker_onChip < startofPersistence)
|
||||
{
|
||||
ee.readBlock(persistanceMarker_onChip + 0, (uint8_t *)&PersistenceData.writeCycleCounter, 4);
|
||||
ee.readBlock(persistanceMarker_onChip + 4, (uint8_t *)&PersistenceData.faction_1_timer, 4);
|
||||
ee.readBlock(persistanceMarker_onChip + 8, (uint8_t *)&PersistenceData.faction_2_timer, 4);
|
||||
ee.readBlock(persistanceMarker_onChip + 12, (uint8_t *)&PersistenceData.faction_3_timer, 4);
|
||||
ee.readBlock(persistanceMarker_onChip + 16, (uint8_t *)&PersistenceData.activeFaction, 4);
|
||||
ee.readBlock(persistanceMarker_onChip + 20, (uint8_t *)&PersistenceData.checksum, 4);
|
||||
MovePersistencePage_EEPROM(true);
|
||||
StorePersistence_EEPROM();
|
||||
}
|
||||
|
||||
// Migrate Config-Data and set defaults for Values which doesn't exists in this earlier Version
|
||||
ConfigData.EEPROM_Version = ConfigData_defaults.EEPROM_Version;
|
||||
strncpy(ConfigData.Faction_1_Name, ConfigData_defaults.Faction_1_Name, sizeof(ConfigData.Faction_1_Name));
|
||||
strncpy(ConfigData.Faction_2_Name, ConfigData_defaults.Faction_2_Name, sizeof(ConfigData.Faction_2_Name));
|
||||
strncpy(ConfigData.Faction_3_Name, ConfigData_defaults.Faction_3_Name, sizeof(ConfigData.Faction_3_Name));
|
||||
ee.readBlock(17, (uint8_t *)&ConfigData.batteryType, 4);
|
||||
ee.readBlock(21, (uint8_t *)ConfigData.active_faction_on_reboot, 1);
|
||||
|
||||
// Migrate Persistance-Data
|
||||
ee.readBlock(0, (uint8_t *)&persistanceMarker_onChip, sizeof(uint16_t));
|
||||
if (persistanceMarker_onChip < startofPersistence)
|
||||
{
|
||||
ee.readBlock(persistanceMarker_onChip + 0, (uint8_t *)PersistenceData.writeCycleCounter, 4);
|
||||
ee.readBlock(persistanceMarker_onChip + 4, (uint8_t *)PersistenceData.faction_1_timer, 4);
|
||||
ee.readBlock(persistanceMarker_onChip + 8, (uint8_t *)PersistenceData.faction_2_timer, 4);
|
||||
ee.readBlock(persistanceMarker_onChip + 12, (uint8_t *)PersistenceData.faction_3_timer, 4);
|
||||
ee.readBlock(persistanceMarker_onChip + 16, (uint8_t *)PersistenceData.activeFaction, 4);
|
||||
ee.readBlock(persistanceMarker_onChip + 20, (uint8_t *)PersistenceData.checksum, 4);
|
||||
MovePersistencePage_EEPROM(true);
|
||||
}
|
||||
ee.readBlock(21, (uint8_t *)&ConfigData.active_faction_on_reboot, 1);
|
||||
StoreConfig_EEPROM();
|
||||
|
||||
return true;
|
||||
break;
|
||||
|
@@ -99,7 +99,6 @@ void setup()
|
||||
InitEEPROM();
|
||||
GetConfig_EEPROM();
|
||||
GetPersistence_EEPROM();
|
||||
Serial.print("EE-Init done\n");
|
||||
|
||||
if (i2c_io.begin())
|
||||
{
|
||||
@@ -290,19 +289,19 @@ void SevenSeg_Output()
|
||||
disp_FAC_1.refresh();
|
||||
snprintf(sevenSegBuff, sizeof(sevenSegBuff), "%4d", PersistenceData.faction_1_timer / 60);
|
||||
disp_FAC_1.display(String(sevenSegBuff), false, false);
|
||||
disp_FAC_1.setDp((PersistenceData.activeFaction == FACTION_1) && (millis() % 1000 > 500));
|
||||
disp_FAC_1.setDp((PersistenceData.activeFaction == FACTION_1) && (millis() % 1000 > 500) ? 0x08 : 0x00);
|
||||
|
||||
disp_FAC_2.setBrightness(PersistenceData.activeFaction == FACTION_2 ? 5 : 1);
|
||||
disp_FAC_2.refresh();
|
||||
snprintf(sevenSegBuff, sizeof(sevenSegBuff), "%4d", PersistenceData.faction_2_timer / 60);
|
||||
disp_FAC_2.display(String(sevenSegBuff), false, false);
|
||||
disp_FAC_2.setDp((PersistenceData.activeFaction == FACTION_2) && (millis() % 1000 > 500));
|
||||
disp_FAC_2.setDp((PersistenceData.activeFaction == FACTION_2) && (millis() % 1000 > 500) ? 0x08 : 0x00);
|
||||
|
||||
disp_FAC_3.setBrightness(PersistenceData.activeFaction == FACTION_3 ? 5 : 1);
|
||||
disp_FAC_3.refresh();
|
||||
snprintf(sevenSegBuff, sizeof(sevenSegBuff), "%4d", PersistenceData.faction_3_timer / 60);
|
||||
disp_FAC_3.display(String(sevenSegBuff), false, false);
|
||||
disp_FAC_3.setDp((PersistenceData.activeFaction == FACTION_3) && (millis() % 1000 > 500));
|
||||
disp_FAC_3.setDp((PersistenceData.activeFaction == FACTION_3) && (millis() % 1000 > 500) ? 0x08 : 0x00);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -345,7 +344,7 @@ void tmrCallback_InputGetter()
|
||||
|
||||
if (keysPressed > 1)
|
||||
{
|
||||
Serial.println("ERROR: More than one Flag active - setting no Faction active");
|
||||
Debug_pushMessage("ERROR: More than one Flag active - setting no Faction active");
|
||||
PersistenceData.activeFaction = NONE;
|
||||
return;
|
||||
}
|
||||
@@ -354,7 +353,7 @@ void tmrCallback_InputGetter()
|
||||
{
|
||||
if (PersistenceData.activeFaction != FACTION_1)
|
||||
{
|
||||
Serial.println("Faction 1 captured !");
|
||||
Debug_pushMessage("Faction 1 captured !");
|
||||
globals.requestEEAction = EE_PDS_SAVE;
|
||||
}
|
||||
PersistenceData.activeFaction = FACTION_1;
|
||||
@@ -364,7 +363,7 @@ void tmrCallback_InputGetter()
|
||||
{
|
||||
if (PersistenceData.activeFaction != FACTION_2)
|
||||
{
|
||||
Serial.println("Faction 2 captured !");
|
||||
Debug_pushMessage("Faction 2 captured !");
|
||||
globals.requestEEAction = EE_PDS_SAVE;
|
||||
}
|
||||
PersistenceData.activeFaction = FACTION_2;
|
||||
@@ -374,7 +373,7 @@ void tmrCallback_InputGetter()
|
||||
{
|
||||
if (PersistenceData.activeFaction != FACTION_3)
|
||||
{
|
||||
Serial.println("Faction 3 captured !");
|
||||
Debug_pushMessage("Faction 3 captured !");
|
||||
globals.requestEEAction = EE_PDS_SAVE;
|
||||
}
|
||||
PersistenceData.activeFaction = FACTION_3;
|
||||
@@ -565,17 +564,17 @@ void ProcessKeyCombos(bool *btnState)
|
||||
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);
|
||||
Debug_pushMessage("KeyCombo 2: %d | 3: %d\n", keyCount_Fac2, keyCount_Fac3);
|
||||
|
||||
if (keyCount_Fac2 == 2 && keyCount_Fac3 == 0)
|
||||
{
|
||||
Serial.println("KeyCombo: WiFi AP ON");
|
||||
Debug_pushMessage("KeyCombo: WiFi AP ON");
|
||||
OverrideDisplay(5000, "NET ", " ", " ");
|
||||
toggleWiFiAP(false);
|
||||
}
|
||||
else if (keyCount_Fac2 == 4 && keyCount_Fac3 == 0)
|
||||
{
|
||||
Serial.printf("KeyCombo: Reset Timer\n");
|
||||
Debug_pushMessage("KeyCombo: Reset Timer\n");
|
||||
if (globals.systemStatus == sysStat_Startup)
|
||||
{
|
||||
OverrideDisplay(5000, "RST ", " ", " ");
|
||||
@@ -588,7 +587,7 @@ void ProcessKeyCombos(bool *btnState)
|
||||
else
|
||||
{
|
||||
OverrideDisplay(5000, "ERR ", " ", " ");
|
||||
Serial.printf("ERROR: only %d seconds after Startup!\n", STARTUP_DELAY_MS / 1000);
|
||||
Debug_pushMessage("ERROR: only %d seconds after Startup!\n", STARTUP_DELAY_MS / 1000);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -33,10 +33,10 @@ void OLED_Process()
|
||||
display.setCursor(0, 0);
|
||||
display.printf("LiPo: %d%%\n", globals.battery_level);
|
||||
display.print(PersistenceData.activeFaction == FACTION_1 ? "> " : " ");
|
||||
display.printf("%-5s: %02d:%02d:%02d\n", FACTION_1_NAME, PersistenceData.faction_1_timer / 3600, (PersistenceData.faction_1_timer / 60) % 60, PersistenceData.faction_1_timer % 60);
|
||||
display.printf("%-5s: %02d:%02d:%02d\n", PersistenceData.faction_1_timer, PersistenceData.faction_1_timer / 3600, (PersistenceData.faction_1_timer / 60) % 60, PersistenceData.faction_1_timer % 60);
|
||||
display.print(PersistenceData.activeFaction == FACTION_2 ? "> " : " ");
|
||||
display.printf("%-5s: %02d:%02d:%02d\n", FACTION_2_NAME, PersistenceData.faction_2_timer / 3600, (PersistenceData.faction_2_timer / 60) % 60, PersistenceData.faction_2_timer % 60);
|
||||
display.printf("%-5s: %02d:%02d:%02d\n", PersistenceData.faction_2_timer, PersistenceData.faction_2_timer / 3600, (PersistenceData.faction_2_timer / 60) % 60, PersistenceData.faction_2_timer % 60);
|
||||
display.print(PersistenceData.activeFaction == FACTION_3 ? "> " : " ");
|
||||
display.printf("%-5s: %02d:%02d:%02d\n", FACTION_3_NAME, PersistenceData.faction_3_timer / 3600, (PersistenceData.faction_3_timer / 60) % 60, PersistenceData.faction_3_timer % 60);
|
||||
display.printf("%-5s: %02d:%02d:%02d\n", PersistenceData.faction_3_timer, PersistenceData.faction_3_timer / 3600, (PersistenceData.faction_3_timer / 60) % 60, PersistenceData.faction_3_timer % 60);
|
||||
display.display();
|
||||
}
|
@@ -84,6 +84,8 @@ String processor(const String &var)
|
||||
return String(globals.battery_level);
|
||||
if (var == "DEVICENAME")
|
||||
return String(globals.DeviceName);
|
||||
if (var == "DEVICENAME_ID")
|
||||
return String(globals.DeviceName_ID);
|
||||
if (var == "BATTERY_TYPE")
|
||||
return String(ConfigData.batteryType);
|
||||
if (var == "BAT_VOLTAGE")
|
||||
@@ -180,14 +182,21 @@ String processor(const String &var)
|
||||
if (var == "ACTIVE_FACTION")
|
||||
return String(PersistenceData.activeFaction);
|
||||
|
||||
if (var == "FACTION_1_ACTIVE")
|
||||
return String(PersistenceData.activeFaction == FACTION_1 ? "bg-primary" : "bg-secondary");
|
||||
if (var == "FACTION_2_ACTIVE")
|
||||
return String(PersistenceData.activeFaction == FACTION_2 ? "bg-primary" : "bg-secondary");
|
||||
if (var == "FACTION_3_ACTIVE")
|
||||
return String(PersistenceData.activeFaction == FACTION_3 ? "bg-primary" : "bg-secondary");
|
||||
|
||||
if (var == "NAME_FAC_1")
|
||||
return FACTION_1_NAME;
|
||||
return String(ConfigData.Faction_1_Name);
|
||||
|
||||
if (var == "NAME_FAC_2")
|
||||
return FACTION_2_NAME;
|
||||
return String(ConfigData.Faction_2_Name);
|
||||
|
||||
if (var == "NAME_FAC_3")
|
||||
return FACTION_3_NAME;
|
||||
return String(ConfigData.Faction_3_Name);
|
||||
|
||||
if (var == "BATTERY_SELECT_OPTIONS")
|
||||
{
|
||||
@@ -273,6 +282,19 @@ void WebserverPOST_Callback(AsyncWebServerRequest *request)
|
||||
ConfigData.active_faction_on_reboot = false;
|
||||
}
|
||||
|
||||
if (p->name() == "faction_1_name")
|
||||
{
|
||||
strncpy(ConfigData.Faction_1_Name, p->value().c_str(), sizeof(ConfigData.Faction_1_Name));
|
||||
}
|
||||
if (p->name() == "faction_2_name")
|
||||
{
|
||||
strncpy(ConfigData.Faction_2_Name, p->value().c_str(), sizeof(ConfigData.Faction_2_Name));
|
||||
}
|
||||
if (p->name() == "faction_3_name")
|
||||
{
|
||||
strncpy(ConfigData.Faction_3_Name, p->value().c_str(), sizeof(ConfigData.Faction_3_Name));
|
||||
}
|
||||
|
||||
if (p->name() == "settingssave")
|
||||
globals.requestEEAction = EE_CFG_SAVE;
|
||||
// end: POST Form Settings
|
||||
@@ -385,6 +407,9 @@ void WebserverEERestore_Callback(AsyncWebServerRequest *request, const String &f
|
||||
|
||||
ConfigData.batteryType = (batteryType_t)doc["config"]["batteryType"].as<uint32_t>();
|
||||
ConfigData.EEPROM_Version = doc["config"]["EEPROM_Version"].as<uint32_t>();
|
||||
strncpy(ConfigData.Faction_1_Name, doc["config"]["Faction_1_Name"].as<String>().c_str(), sizeof(ConfigData.Faction_1_Name));
|
||||
strncpy(ConfigData.Faction_2_Name, doc["config"]["Faction_2_Name"].as<String>().c_str(), sizeof(ConfigData.Faction_2_Name));
|
||||
strncpy(ConfigData.Faction_3_Name, doc["config"]["Faction_3_Name"].as<String>().c_str(), sizeof(ConfigData.Faction_3_Name));
|
||||
|
||||
PersistenceData.writeCycleCounter = doc["persis"]["writeCycleCounter"].as<uint16_t>();
|
||||
PersistenceData.activeFaction = (factions_t)doc["persis"]["activeFaction"].as<uint32_t>();
|
||||
@@ -434,6 +459,9 @@ void WebServerEEJSON_Callback(AsyncWebServerRequest *request)
|
||||
|
||||
config["EEPROM_Version"] = ConfigData.EEPROM_Version;
|
||||
config["batteryType"] = ConfigData.batteryType;
|
||||
config["Faction_1_Name"] = ConfigData.Faction_1_Name;
|
||||
config["Faction_2_Name"] = ConfigData.Faction_2_Name;
|
||||
config["Faction_3_Name"] = ConfigData.Faction_3_Name;
|
||||
sprintf(buffer, "0x%08X", ConfigData.checksum);
|
||||
config["checksum"] = buffer;
|
||||
|
||||
|
Reference in New Issue
Block a user