Skip to content

Commit 11a8a20

Browse files
committed
Merge remote-tracking branch 'upstream/main'
2 parents 59c03db + 35ec47b commit 11a8a20

File tree

14 files changed

+389
-528
lines changed

14 files changed

+389
-528
lines changed

README.md

Lines changed: 114 additions & 108 deletions
Large diffs are not rendered by default.

img/cp_setup.png

11.1 KB
Loading

img/cps-frag.png

-3.33 KB
Loading

install/README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ If you are using a fresh ESP32 board, please see [dashgauges-A10001986.ino](http
1010

1111
*Important: After a firmware update, the "empty" LED might blink for short while after reboot. Do NOT unplug the device during this time.*
1212

13-
## Audio data installation
13+
## Sound-pack installation
1414

15-
The audio data is not updated as often as the firmware itself. If you have previously installed the latest version of the sound-pack, you normally don't have to re-install the audio data when you update the firmware. Only if either a new version of the sound-pack is released, or your device is quiet after a firmware update, a re-installation is needed.
15+
The sound-pack is not updated as often as the firmware itself. If you have previously installed the latest version of the sound-pack, you normally don't have to re-install it when you update the firmware. Only if the "Empty" LED signals "SOS" (three short blinks, three long blinks, three short blicks) during boot, a re-installation/update is needed.
1616

1717
The first step is to download "install/sound-pack-xxxxxxxx.zip" and extract it. It contains one file named "DGA.bin".
1818

@@ -26,4 +26,4 @@ Then there are two alternative ways to proceed. Note that both methods *require
2626
- insert this SD card into the slot and
2727
- power up the Dash Gauges; the audio data will be installed automatically.
2828

29-
See also [here](https://github.com/realA10001986/Dash-Gauges/blob/main/README.md#audio-data-installation).
29+
See also [here](https://github.com/realA10001986/Dash-Gauges/blob/main/README.md#sound-pack-installation).
608 Bytes
Binary file not shown.

src/dashgauges-A10001986.ino

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,11 @@
115115

116116
/* Changelog
117117
*
118+
* 2025/09/22 (A10001986) [1.22]
119+
* - Config Portal: Re-order settings; remove non-checkbox-code
120+
* - Fix TCD hostname length field
121+
* 2025/09/20 (A10001986)
122+
* - Config Portal: Add "install sound pack" banner to main menu
118123
* 2025/09/19 (A10001986) [1.21]
119124
* - Extend mp3 upload by allowing multiple (max 16) mp3 files to be uploaded
120125
* at once. The DGA.bin file can be uploaded at the same time as well.

src/dg_global.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
*** Version Strings ***
1616
*************************************************************************/
1717

18-
#define DG_VERSION "V1.21"
19-
#define DG_VERSION_EXTRA "SEP192025"
18+
#define DG_VERSION "V1.22"
19+
#define DG_VERSION_EXTRA "SEP222025"
2020

2121
//#define DG_DBG // debug output on Serial
2222

src/dg_settings.cpp

Lines changed: 54 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -441,27 +441,41 @@ static bool read_settings(File configFile)
441441

442442
wd |= CopyCheckValidNumParm(json["aRef"], settings.autoRefill, sizeof(settings.autoRefill), 0, 360, DEF_AUTO_REFILL);
443443
wd |= CopyCheckValidNumParm(json["aMut"], settings.autoMute, sizeof(settings.autoMute), 0, 360, DEF_AUTO_MUTE);
444+
wd |= CopyCheckValidNumParm(json["playALsnd"], settings.playALsnd, sizeof(settings.playALsnd), 0, 1, DEF_PLAY_ALM_SND);
444445
wd |= CopyCheckValidNumParm(json["ssTimer"], settings.ssTimer, sizeof(settings.ssTimer), 0, 999, DEF_SS_TIMER);
446+
447+
wd |= CopyCheckValidNumParm(json["lIdle"], settings.lIdle, sizeof(settings.lIdle), 0, 100, DEF_L_GAUGE_IDLE);
448+
wd |= CopyCheckValidNumParm(json["cIdle"], settings.cIdle, sizeof(settings.cIdle), 0, 100, DEF_C_GAUGE_IDLE);
449+
wd |= CopyCheckValidNumParm(json["rIdle"], settings.rIdle, sizeof(settings.rIdle), 0, 100, DEF_R_GAUGE_IDLE);
450+
wd |= CopyCheckValidNumParm(json["lEmpty"], settings.lEmpty, sizeof(settings.lEmpty), 0, 100, DEF_L_GAUGE_EMPTY);
451+
wd |= CopyCheckValidNumParm(json["cEmpty"], settings.cEmpty, sizeof(settings.cEmpty), 0, 100, DEF_C_GAUGE_EMPTY);
452+
wd |= CopyCheckValidNumParm(json["rEmpty"], settings.rEmpty, sizeof(settings.rEmpty), 0, 100, DEF_R_GAUGE_EMPTY);
453+
454+
wd |= CopyCheckValidNumParm(json["drPri"], settings.drPri, sizeof(settings.drPri), 0, 1, DEF_DR_PRI);
455+
wd |= CopyCheckValidNumParm(json["drPPo"], settings.drPPo, sizeof(settings.drPPo), 0, 1, DEF_DR_PPO);
456+
wd |= CopyCheckValidNumParm(json["drRoe"], settings.drRoe, sizeof(settings.drRoe), 0, 1, DEF_DR_ROE);
457+
458+
wd |= CopyCheckValidNumParm(json["lTh"], settings.lThreshold, sizeof(settings.lThreshold), 0, 99, 0);
459+
wd |= CopyCheckValidNumParm(json["cTh"], settings.cThreshold, sizeof(settings.cThreshold), 0, 99, 0);
460+
wd |= CopyCheckValidNumParm(json["rTh"], settings.rThreshold, sizeof(settings.rThreshold), 0, 99, 0);
461+
462+
wd |= CopyCheckValidNumParm(json["shuffle"], settings.shuffle, sizeof(settings.shuffle), 0, 1, DEF_SHUFFLE);
445463

446464
if(json["hostName"]) {
447465
memset(settings.hostName, 0, sizeof(settings.hostName));
448466
strncpy(settings.hostName, json["hostName"], sizeof(settings.hostName) - 1);
449467
} else wd = true;
468+
wd |= CopyCheckValidNumParm(json["wifiConRetries"], settings.wifiConRetries, sizeof(settings.wifiConRetries), 1, 10, DEF_WIFI_RETRY);
469+
wd |= CopyCheckValidNumParm(json["wifiConTimeout"], settings.wifiConTimeout, sizeof(settings.wifiConTimeout), 7, 25, DEF_WIFI_TIMEOUT);
470+
450471
if(json["systemID"]) {
451472
memset(settings.systemID, 0, sizeof(settings.systemID));
452473
strncpy(settings.systemID, json["systemID"], sizeof(settings.systemID) - 1);
453474
} else wd = true;
454-
455475
if(json["appw"]) {
456476
memset(settings.appw, 0, sizeof(settings.appw));
457477
strncpy(settings.appw, json["appw"], sizeof(settings.appw) - 1);
458478
} else wd = true;
459-
460-
wd |= CopyCheckValidNumParm(json["wifiConRetries"], settings.wifiConRetries, sizeof(settings.wifiConRetries), 1, 10, DEF_WIFI_RETRY);
461-
wd |= CopyCheckValidNumParm(json["wifiConTimeout"], settings.wifiConTimeout, sizeof(settings.wifiConTimeout), 7, 25, DEF_WIFI_TIMEOUT);
462-
463-
wd |= CopyCheckValidNumParm(json["TCDpresent"], settings.TCDpresent, sizeof(settings.TCDpresent), 0, 1, DEF_TCD_PRES);
464-
wd |= CopyCheckValidNumParm(json["noETTOLead"], settings.noETTOLead, sizeof(settings.noETTOLead), 0, 1, DEF_NO_ETTO_LEAD);
465479

466480
if(json["tcdIP"]) {
467481
memset(settings.tcdIP, 0, sizeof(settings.tcdIP));
@@ -472,29 +486,6 @@ static bool read_settings(File configFile)
472486
wd |= CopyCheckValidNumParm(json["useFPO"], settings.useFPO, sizeof(settings.useFPO), 0, 1, DEF_USE_FPO);
473487
wd |= CopyCheckValidNumParm(json["bttfnTT"], settings.bttfnTT, sizeof(settings.bttfnTT), 0, 1, DEF_BTTFN_TT);
474488

475-
wd |= CopyCheckValidNumParm(json["lIdle"], settings.lIdle, sizeof(settings.lIdle), 0, 100, DEF_L_GAUGE_IDLE);
476-
wd |= CopyCheckValidNumParm(json["cIdle"], settings.cIdle, sizeof(settings.cIdle), 0, 100, DEF_C_GAUGE_IDLE);
477-
wd |= CopyCheckValidNumParm(json["rIdle"], settings.rIdle, sizeof(settings.rIdle), 0, 100, DEF_R_GAUGE_IDLE);
478-
wd |= CopyCheckValidNumParm(json["lEmpty"], settings.lEmpty, sizeof(settings.lEmpty), 0, 100, DEF_L_GAUGE_EMPTY);
479-
wd |= CopyCheckValidNumParm(json["cEmpty"], settings.cEmpty, sizeof(settings.cEmpty), 0, 100, DEF_C_GAUGE_EMPTY);
480-
wd |= CopyCheckValidNumParm(json["rEmpty"], settings.rEmpty, sizeof(settings.rEmpty), 0, 100, DEF_R_GAUGE_EMPTY);
481-
482-
wd |= CopyCheckValidNumParm(json["drPri"], settings.drPri, sizeof(settings.drPri), 0, 1, DEF_DR_PRI);
483-
wd |= CopyCheckValidNumParm(json["drPPo"], settings.drPPo, sizeof(settings.drPPo), 0, 1, DEF_DR_PPO);
484-
wd |= CopyCheckValidNumParm(json["drRoe"], settings.drRoe, sizeof(settings.drRoe), 0, 1, DEF_DR_ROE);
485-
486-
wd |= CopyCheckValidNumParm(json["lTh"], settings.lThreshold, sizeof(settings.lThreshold), 0, 99, 0);
487-
wd |= CopyCheckValidNumParm(json["cTh"], settings.cThreshold, sizeof(settings.cThreshold), 0, 99, 0);
488-
wd |= CopyCheckValidNumParm(json["rTh"], settings.rThreshold, sizeof(settings.rThreshold), 0, 99, 0);
489-
490-
wd |= CopyCheckValidNumParm(json["playALsnd"], settings.playALsnd, sizeof(settings.playALsnd), 0, 1, DEF_PLAY_ALM_SND);
491-
492-
#ifdef DG_HAVEDOORSWITCH
493-
wd |= CopyCheckValidNumParm(json["dsPlay"], settings.dsPlay, sizeof(settings.dsPlay), 0, 1, DEF_DS_PLAY);
494-
wd |= CopyCheckValidNumParm(json["dsCOnC"], settings.dsCOnC, sizeof(settings.dsCOnC), 0, 1, DEF_DS_NC);
495-
wd |= CopyCheckValidNumParm(json["dsDelay"], settings.dsDelay, sizeof(settings.dsDelay), 0, 5000, DEF_DS_DELAY);
496-
#endif
497-
498489
#ifdef DG_HAVEMQTT
499490
wd |= CopyCheckValidNumParm(json["useMQTT"], settings.useMQTT, sizeof(settings.useMQTT), 0, 1, 0);
500491
if(json["mqttServer"]) {
@@ -507,10 +498,17 @@ static bool read_settings(File configFile)
507498
} else wd = true;
508499
#endif
509500

510-
wd |= CopyCheckValidNumParm(json["shuffle"], settings.shuffle, sizeof(settings.shuffle), 0, 1, DEF_SHUFFLE);
511-
501+
wd |= CopyCheckValidNumParm(json["TCDpresent"], settings.TCDpresent, sizeof(settings.TCDpresent), 0, 1, DEF_TCD_PRES);
502+
wd |= CopyCheckValidNumParm(json["noETTOLead"], settings.noETTOLead, sizeof(settings.noETTOLead), 0, 1, DEF_NO_ETTO_LEAD);
503+
512504
wd |= CopyCheckValidNumParm(json["CfgOnSD"], settings.CfgOnSD, sizeof(settings.CfgOnSD), 0, 1, DEF_CFG_ON_SD);
513505
//wd |= CopyCheckValidNumParm(json["sdFreq"], settings.sdFreq, sizeof(settings.sdFreq), 0, 1, DEF_SD_FREQ);
506+
507+
#ifdef DG_HAVEDOORSWITCH
508+
wd |= CopyCheckValidNumParm(json["dsPlay"], settings.dsPlay, sizeof(settings.dsPlay), 0, 1, DEF_DS_PLAY);
509+
wd |= CopyCheckValidNumParm(json["dsCOnC"], settings.dsCOnC, sizeof(settings.dsCOnC), 0, 1, DEF_DS_NC);
510+
wd |= CopyCheckValidNumParm(json["dsDelay"], settings.dsDelay, sizeof(settings.dsDelay), 0, 5000, DEF_DS_DELAY);
511+
#endif
514512

515513
wd |= CopyCheckValidNumParm(json["gaugeIDA"], settings.gaugeIDA, sizeof(settings.gaugeIDA), 0, gauges.max_id_small, DEF_GAUGE_TYPE);
516514
wd |= CopyCheckValidNumParm(json["gaugeIDB"], settings.gaugeIDB, sizeof(settings.gaugeIDB), 0, gauges.max_id_small, DEF_GAUGE_TYPE);
@@ -545,22 +543,8 @@ void write_settings()
545543

546544
json["aRef"] = (const char *)settings.autoRefill;
547545
json["aMut"] = (const char *)settings.autoMute;
546+
json["playALsnd"] = (const char *)settings.playALsnd;
548547
json["ssTimer"] = (const char *)settings.ssTimer;
549-
550-
json["hostName"] = (const char *)settings.hostName;
551-
json["systemID"] = (const char *)settings.systemID;
552-
json["appw"] = (const char *)settings.appw;
553-
json["wifiConRetries"] = (const char *)settings.wifiConRetries;
554-
json["wifiConTimeout"] = (const char *)settings.wifiConTimeout;
555-
556-
json["TCDpresent"] = (const char *)settings.TCDpresent;
557-
json["noETTOLead"] = (const char *)settings.noETTOLead;
558-
559-
json["tcdIP"] = (const char *)settings.tcdIP;
560-
//json["useGPSS"] = (const char *)settings.useGPSS;
561-
json["useNM"] = (const char *)settings.useNM;
562-
json["useFPO"] = (const char *)settings.useFPO;
563-
json["bttfnTT"] = (const char *)settings.bttfnTT;
564548

565549
json["lIdle"] = (const char *)settings.lIdle;
566550
json["cIdle"] = (const char *)settings.cIdle;
@@ -576,25 +560,39 @@ void write_settings()
576560
json["cTh"] = (const char *)settings.cThreshold;
577561
json["rTh"] = (const char *)settings.rThreshold;
578562

579-
json["playALsnd"] = (const char *)settings.playALsnd;
580-
581-
#ifdef DG_HAVEDOORSWITCH
582-
json["dsPlay"] = (const char *)settings.dsPlay;
583-
json["dsCOnC"] = (const char *)settings.dsCOnC;
584-
json["dsDelay"] = (const char *)settings.dsDelay;
585-
#endif
563+
json["shuffle"] = (const char *)settings.shuffle;
564+
565+
json["hostName"] = (const char *)settings.hostName;
566+
json["wifiConRetries"] = (const char *)settings.wifiConRetries;
567+
json["wifiConTimeout"] = (const char *)settings.wifiConTimeout;
586568

569+
json["systemID"] = (const char *)settings.systemID;
570+
json["appw"] = (const char *)settings.appw;
571+
572+
json["tcdIP"] = (const char *)settings.tcdIP;
573+
//json["useGPSS"] = (const char *)settings.useGPSS;
574+
json["useNM"] = (const char *)settings.useNM;
575+
json["useFPO"] = (const char *)settings.useFPO;
576+
json["bttfnTT"] = (const char *)settings.bttfnTT;
577+
587578
#ifdef DG_HAVEMQTT
588579
json["useMQTT"] = (const char *)settings.useMQTT;
589580
json["mqttServer"] = (const char *)settings.mqttServer;
590581
json["mqttUser"] = (const char *)settings.mqttUser;
591582
#endif
592-
593-
json["shuffle"] = (const char *)settings.shuffle;
594583

584+
json["TCDpresent"] = (const char *)settings.TCDpresent;
585+
json["noETTOLead"] = (const char *)settings.noETTOLead;
586+
595587
json["CfgOnSD"] = (const char *)settings.CfgOnSD;
596588
//json["sdFreq"] = (const char *)settings.sdFreq;
597589

590+
#ifdef DG_HAVEDOORSWITCH
591+
json["dsPlay"] = (const char *)settings.dsPlay;
592+
json["dsCOnC"] = (const char *)settings.dsCOnC;
593+
json["dsDelay"] = (const char *)settings.dsDelay;
594+
#endif
595+
598596
json["gaugeIDA"] = (const char *)settings.gaugeIDA;
599597
json["gaugeIDB"] = (const char *)settings.gaugeIDB;
600598
json["gaugeIDC"] = (const char *)settings.gaugeIDC;

src/dg_settings.h

Lines changed: 37 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -66,64 +66,48 @@ extern uint8_t musFolderNum;
6666
// Default settings
6767
#define DEF_AUTO_REFILL 0 // Default auto-refill: 0=Never (1-360 seconds)
6868
#define DEF_AUTO_MUTE 0 // Default audio mute: 0=Never (1-360 seconds)
69+
#define DEF_PLAY_ALM_SND 0 // 1: Play TCD-alarm sound, 0: do not
6970
#define DEF_SS_TIMER 0 // "Screen saver" timeout in minutes; 0=off
7071

71-
#define DEF_HOSTNAME "gauges"
72-
#define DEF_WIFI_RETRY 3 // 1-10; Default: 3 retries
73-
#define DEF_WIFI_TIMEOUT 7 // 7-25; Default: 7 seconds
74-
75-
#define DEF_TCD_PRES 0 // 0: No TCD connected, 1: connected via GPIO
76-
#define DEF_NO_ETTO_LEAD 0 // 0: TCD signals TT with ETTO_LEAD lead time; 1 without
77-
78-
#define DEF_TCD_IP "" // TCD ip address for BTTFN
79-
#define DEF_USE_GPSS 0 // 0: Ignore GPS speed; 1: Use it for chase speed
80-
#define DEF_USE_NM 0 // 0: Ignore TCD night mode; 1: Follow TCD night mode
81-
#define DEF_USE_FPO 0 // 0: Ignore TCD fake power; 1: Follow TCD fake power
82-
#define DEF_BTTFN_TT 1 // 0: '0' TT button triggers stand-alone TT; 1: Button triggers BTTFN-wide TT
83-
8472
#define DEF_L_GAUGE_IDLE 28 // Default "full" percentages of analog gauges
8573
#define DEF_C_GAUGE_IDLE 28
8674
#define DEF_R_GAUGE_IDLE 65
8775
#define DEF_L_GAUGE_EMPTY 0 // Default "empty" percentages of analog gauges
8876
#define DEF_C_GAUGE_EMPTY 0
8977
#define DEF_R_GAUGE_EMPTY 0
90-
9178
#define DEF_DR_PRI 1 // 0: Meter jumps to zero after TT; 1: slowly drain during TT
9279
#define DEF_DR_PPO 1 // 0: Meter jumps to zero after TT; 1: slowly drain during TT
9380
#define DEF_DR_ROE 1 // 0: Meter jumps to zero after TT; 1: slowly drain during TT
9481

95-
#define DEF_PLAY_ALM_SND 0 // 1: Play TCD-alarm sound, 0: do not
82+
#define DEF_SHUFFLE 0 // Music Player: Do not shuffle by default
9683

97-
#define DEF_DS_PLAY 1 // 0: don't play door sounds, 1: do
98-
#define DEF_DS_NC 0 // 0: door switch is NO, 1: door switch is NC
99-
#define DEF_DS_DELAY 0 // door switch sound delay
84+
#define DEF_HOSTNAME "gauges"
85+
#define DEF_WIFI_RETRY 3 // 1-10; Default: 3 retries
86+
#define DEF_WIFI_TIMEOUT 7 // 7-25; Default: 7 seconds
10087

101-
#define DEF_SHUFFLE 0 // Music Player: Do not shuffle by default
88+
#define DEF_TCD_IP "" // TCD ip address for BTTFN
89+
#define DEF_USE_GPSS 0 // 0: Ignore GPS speed; 1: Use it for chase speed
90+
#define DEF_USE_NM 0 // 0: Ignore TCD night mode; 1: Follow TCD night mode
91+
#define DEF_USE_FPO 0 // 0: Ignore TCD fake power; 1: Follow TCD fake power
92+
#define DEF_BTTFN_TT 1 // 0: '0' TT button triggers stand-alone TT; 1: Button triggers BTTFN-wide TT
93+
94+
#define DEF_TCD_PRES 0 // 0: No TCD connected, 1: connected via GPIO
95+
#define DEF_NO_ETTO_LEAD 0 // 0: TCD signals TT with ETTO_LEAD lead time; 1 without
10296

10397
#define DEF_CFG_ON_SD 1 // Default: Save secondary settings on SD card
10498
#define DEF_SD_FREQ 0 // SD/SPI frequency: Default 16MHz
10599

100+
#define DEF_DS_PLAY 1 // 0: don't play door sounds, 1: do
101+
#define DEF_DS_NC 0 // 0: door switch is NO, 1: door switch is NC
102+
#define DEF_DS_DELAY 0 // door switch sound delay
103+
106104
#define DEF_GAUGE_TYPE 0 // Default gauge type; to protect the hardware, this is zero by default (=NONE)
107105

108106
struct Settings {
109107
char autoRefill[6] = MS(DEF_AUTO_REFILL);
110108
char autoMute[6] = MS(DEF_AUTO_MUTE);
109+
char playALsnd[4] = MS(DEF_PLAY_ALM_SND);
111110
char ssTimer[6] = MS(DEF_SS_TIMER);
112-
113-
char hostName[32] = DEF_HOSTNAME;
114-
char systemID[8] = "";
115-
char appw[10] = "";
116-
char wifiConRetries[4] = MS(DEF_WIFI_RETRY);
117-
char wifiConTimeout[4] = MS(DEF_WIFI_TIMEOUT);
118-
119-
char TCDpresent[4] = MS(DEF_TCD_PRES);
120-
char noETTOLead[4] = MS(DEF_NO_ETTO_LEAD);
121-
122-
char tcdIP[16] = DEF_TCD_IP;
123-
//char useGPSS[4] = MS(DEF_USE_GPSS);
124-
char useNM[4] = MS(DEF_USE_NM);
125-
char useFPO[4] = MS(DEF_USE_FPO);
126-
char bttfnTT[4] = MS(DEF_BTTFN_TT);
127111

128112
char lIdle[6] = MS(DEF_L_GAUGE_IDLE);
129113
char cIdle[6] = MS(DEF_C_GAUGE_IDLE);
@@ -139,23 +123,36 @@ struct Settings {
139123
char cThreshold[6] = "0";
140124
char rThreshold[6] = "0";
141125

142-
char playALsnd[4] = MS(DEF_PLAY_ALM_SND);
126+
char shuffle[4] = MS(DEF_SHUFFLE);
127+
128+
char hostName[32] = DEF_HOSTNAME;
129+
char systemID[8] = "";
130+
char appw[10] = "";
131+
char wifiConRetries[4] = MS(DEF_WIFI_RETRY);
132+
char wifiConTimeout[4] = MS(DEF_WIFI_TIMEOUT);
143133

144-
char dsPlay[4] = MS(DEF_DS_PLAY);
145-
char dsCOnC[4] = MS(DEF_DS_NC);
146-
char dsDelay[6] = MS(DEF_DS_DELAY);
134+
char tcdIP[32] = DEF_TCD_IP;
135+
//char useGPSS[4] = MS(DEF_USE_GPSS);
136+
char useNM[4] = MS(DEF_USE_NM);
137+
char useFPO[4] = MS(DEF_USE_FPO);
138+
char bttfnTT[4] = MS(DEF_BTTFN_TT);
147139

148140
#ifdef DG_HAVEMQTT
149141
char useMQTT[4] = "0";
150142
char mqttServer[80] = ""; // ip or domain [:port]
151143
char mqttUser[128] = ""; // user[:pass] (UTF8)
152-
#endif
144+
#endif
153145

154-
char shuffle[4] = MS(DEF_SHUFFLE);
146+
char TCDpresent[4] = MS(DEF_TCD_PRES);
147+
char noETTOLead[4] = MS(DEF_NO_ETTO_LEAD);
155148

156149
char CfgOnSD[4] = MS(DEF_CFG_ON_SD);
157150
char sdFreq[4] = MS(DEF_SD_FREQ);
158151

152+
char dsPlay[4] = MS(DEF_DS_PLAY);
153+
char dsCOnC[4] = MS(DEF_DS_NC);
154+
char dsDelay[6] = MS(DEF_DS_DELAY);
155+
159156
char gaugeIDA[4] = MS(DEF_GAUGE_TYPE);
160157
char gaugeIDB[4] = MS(DEF_GAUGE_TYPE);
161158
char gaugeIDC[4] = MS(DEF_GAUGE_TYPE);

0 commit comments

Comments
 (0)