Clean ups, and more features
This commit is contained in:
+4
-4
@@ -100,7 +100,7 @@ static const uint16_t oda_app_ids[] {
|
|||||||
|
|
||||||
static const char* const ECCtext[] {
|
static const char* const ECCtext[] {
|
||||||
"Bundesrepublik Deutschland", // 0
|
"Bundesrepublik Deutschland", // 0
|
||||||
"Ελληνική Δημοκρατία / (Hellenic Republic)", // 1
|
"Ελληνική Δημοκρατία [Hellenic Republic]", // 1
|
||||||
"Kingdom of Morroco", // 2
|
"Kingdom of Morroco", // 2
|
||||||
"Republica Moldova", // 3
|
"Republica Moldova", // 3
|
||||||
"People's Democratic Republic of Algeria", // 4
|
"People's Democratic Republic of Algeria", // 4
|
||||||
@@ -297,8 +297,8 @@ static const char* const ECCtext[] {
|
|||||||
"Islamic Republic of Iran", // 195
|
"Islamic Republic of Iran", // 195
|
||||||
"Japan", // 196
|
"Japan", // 196
|
||||||
"Republic of Kiribati", // 197
|
"Republic of Kiribati", // 197
|
||||||
"Democratic People's Republic of Korea (North Korea)", // 198
|
"Democratic People's Republic of Korea [North Korea]", // 198
|
||||||
"Republic of Korea (South Korea)", // 199
|
"Republic of Korea [South Korea]", // 199
|
||||||
"Lao People's Democratic Republic", // 200
|
"Lao People's Democratic Republic", // 200
|
||||||
"中华人民共和国(澳门) [PRC, M]", // 201
|
"中华人民共和国(澳门) [PRC, M]", // 201
|
||||||
"Malaysia", // 202
|
"Malaysia", // 202
|
||||||
@@ -316,7 +316,7 @@ static const char* const ECCtext[] {
|
|||||||
"Republic of Singapore", // 214
|
"Republic of Singapore", // 214
|
||||||
"Solomon Islands", // 215
|
"Solomon Islands", // 215
|
||||||
"Democratic Socialist Republic of Sri Lanka", // 216
|
"Democratic Socialist Republic of Sri Lanka", // 216
|
||||||
"Republic of China (Taiwan)", // 217
|
"Republic of China [Taiwan]", // 217
|
||||||
"Kingdom of Thailand", // 218
|
"Kingdom of Thailand", // 218
|
||||||
"Kingdom of Tonga", // 219
|
"Kingdom of Tonga", // 219
|
||||||
"Republic of Vanuatu", // 220
|
"Republic of Vanuatu", // 220
|
||||||
|
|||||||
+43
-43
@@ -265,17 +265,17 @@
|
|||||||
#define ITEM10 210
|
#define ITEM10 210
|
||||||
|
|
||||||
// EEPROM index defines
|
// EEPROM index defines
|
||||||
#define EE_PRESETS_CNT 99 // When set > 99 change the complete EEPROM adressing!
|
#define EE_PRESETS_CNT 99 // When set > 99 change the complete EEPROM adressing!
|
||||||
#define EE_CHECKBYTE_VALUE 20 // 0 ~ 255,add new entry, change for new value
|
#define EE_CHECKBYTE_VALUE 20 // 0 ~ 255,add new entry, change for new value
|
||||||
#define EE_PRESETS_FREQUENCY 0 // Default value when memory channel should be skipped!
|
#define EE_PRESETS_FREQUENCY 0 // Default value when memory channel should be skipped!
|
||||||
#define EE_TOTAL_CNT 2287 // Total occupied eeprom bytes
|
#define EE_TOTAL_CNT 2287 // Total occupied eeprom bytes
|
||||||
|
|
||||||
#define EE_PRESETS_BAND_START 0 // 99 * 1 byte
|
#define EE_PRESETS_BAND_START 0 // 99 * 1 byte
|
||||||
#define EE_PRESET_BW_START 99 // 99 * 1 byte
|
#define EE_PRESET_BW_START 99 // 99 * 1 byte
|
||||||
#define EE_PRESET_MS_START 198 // 99 * 1 byte
|
#define EE_PRESET_MS_START 198 // 99 * 1 byte
|
||||||
#define EE_PRESETS_FREQUENCY_START 297 // 99 * 4 bytes
|
#define EE_PRESETS_FREQUENCY_START 297 // 99 * 4 bytes
|
||||||
#define EE_PRESETS_RDSPI_START 693 // 99 * 5 bytes
|
#define EE_PRESETS_RDSPI_START 693 // 99 * 5 bytes
|
||||||
#define EE_PRESETS_RDSPS_START 1188 // 99 * 9 bytes
|
#define EE_PRESETS_RDSPS_START 1188 // 99 * 9 bytes
|
||||||
|
|
||||||
#define EE_UINT16_FREQUENCY_FM 2079
|
#define EE_UINT16_FREQUENCY_FM 2079
|
||||||
#define EE_BYTE_VOLSET 2083
|
#define EE_BYTE_VOLSET 2083
|
||||||
@@ -356,40 +356,40 @@
|
|||||||
#define EE_BYTE_FMSCANSENS 2201
|
#define EE_BYTE_FMSCANSENS 2201
|
||||||
#define EE_BYTE_FREQFONT 2202
|
#define EE_BYTE_FREQFONT 2202
|
||||||
// Empty space, this was not used
|
// Empty space, this was not used
|
||||||
#define EE_BYTE_XDRGTKMUTE 2204
|
#define EE_BYTE_XDRGTKMUTE 2204
|
||||||
#define EE_BYTE_FMAGC 2205
|
#define EE_BYTE_FMAGC 2205
|
||||||
#define EE_BYTE_AMAGC 2206
|
#define EE_BYTE_AMAGC 2206
|
||||||
#define EE_BYTE_FMSI 2207
|
#define EE_BYTE_FMSI 2207
|
||||||
#define EE_BYTE_SCANSTART 2208
|
#define EE_BYTE_SCANSTART 2208
|
||||||
#define EE_BYTE_SCANSTOP 2209
|
#define EE_BYTE_SCANSTOP 2209
|
||||||
#define EE_BYTE_SCANHOLD 2210
|
#define EE_BYTE_SCANHOLD 2210
|
||||||
#define EE_BYTE_SCANMEM 2211
|
#define EE_BYTE_SCANMEM 2211
|
||||||
#define EE_BYTE_SCANCANCEL 2212
|
#define EE_BYTE_SCANCANCEL 2212
|
||||||
#define EE_BYTE_SCANMUTE 2213
|
#define EE_BYTE_SCANMUTE 2213
|
||||||
#define EE_BYTE_AUTOSQUELCH 2214
|
#define EE_BYTE_AUTOSQUELCH 2214
|
||||||
#define EE_BYTE_LONGBANDPRESS 2215
|
#define EE_BYTE_LONGBANDPRESS 2215
|
||||||
#define EE_BYTE_SHOWCLOCK 2216
|
#define EE_BYTE_SHOWCLOCK 2216
|
||||||
#define EE_BYTE_SHOWLONGPS 2217
|
#define EE_BYTE_SHOWLONGPS 2217
|
||||||
#define EE_UINT16_MEMSTARTFREQ 2218
|
#define EE_UINT16_MEMSTARTFREQ 2218
|
||||||
#define EE_UINT16_MEMSTOPFREQ 2222
|
#define EE_UINT16_MEMSTOPFREQ 2222
|
||||||
#define EE_BYTE_MEMSTARTPOS 2226
|
#define EE_BYTE_MEMSTARTPOS 2226
|
||||||
#define EE_BYTE_MEMSTOPPOS 2227
|
#define EE_BYTE_MEMSTOPPOS 2227
|
||||||
#define EE_BYTE_MEMPIONLY 2228
|
#define EE_BYTE_MEMPIONLY 2228
|
||||||
#define EE_BYTE_MEMDOUBLEPI 2229
|
#define EE_BYTE_MEMDOUBLEPI 2229
|
||||||
// blank space
|
// blank space
|
||||||
#define EE_BYTE_WAITONLYONSIGNAL 2253
|
#define EE_BYTE_WAITONLYONSIGNAL 2253
|
||||||
#define EE_UINT16_CALTOUCH1 2254
|
#define EE_UINT16_CALTOUCH1 2254
|
||||||
#define EE_UINT16_CALTOUCH2 2258
|
#define EE_UINT16_CALTOUCH2 2258
|
||||||
#define EE_UINT16_CALTOUCH3 2262
|
#define EE_UINT16_CALTOUCH3 2262
|
||||||
#define EE_UINT16_CALTOUCH4 2266
|
#define EE_UINT16_CALTOUCH4 2266
|
||||||
#define EE_UINT16_CALTOUCH5 2270
|
#define EE_UINT16_CALTOUCH5 2270
|
||||||
#define EE_BYTE_INVERTDISPLAY 2274
|
#define EE_BYTE_INVERTDISPLAY 2274
|
||||||
#define EE_BYTE_NTPOFFSET 2275
|
#define EE_BYTE_TIMEZONE 2275
|
||||||
#define EE_BYTE_AUTOLOG 2276
|
#define EE_BYTE_AUTOLOG 2276
|
||||||
#define EE_BYTE_AUTODST 2277
|
#define EE_BYTE_AUTODST 2277
|
||||||
#define EE_BYTE_CLOCKAMPM 2278
|
#define EE_BYTE_CLOCKAMPM 2278
|
||||||
#define EE_UINT16_LOGCOUNTER 2279
|
#define EE_UINT16_LOGCOUNTER 2279
|
||||||
#define EE_UINT16_PICTLOCK 2283
|
#define EE_UINT16_PICTLOCK 2283
|
||||||
// End of EEPROM index defines
|
// End of EEPROM index defines
|
||||||
|
|
||||||
// Memory channel database
|
// Memory channel database
|
||||||
|
|||||||
+1
-1
@@ -229,7 +229,7 @@ extern int8_t MPold;
|
|||||||
extern int8_t USold;
|
extern int8_t USold;
|
||||||
extern int8_t LevelOffset;
|
extern int8_t LevelOffset;
|
||||||
extern int8_t LowLevelSet;
|
extern int8_t LowLevelSet;
|
||||||
extern int8_t NTPoffset;
|
extern int8_t Timezone;
|
||||||
extern int8_t CN;
|
extern int8_t CN;
|
||||||
extern int8_t CNold;
|
extern int8_t CNold;
|
||||||
extern int8_t VolSet;
|
extern int8_t VolSet;
|
||||||
|
|||||||
+22
-22
@@ -319,7 +319,7 @@ static const char* const Languages[22][297] PROGMEM = {
|
|||||||
"Can't add entry!\nLogbook is full!", // 291
|
"Can't add entry!\nLogbook is full!", // 291
|
||||||
"Autologger", // 292
|
"Autologger", // 292
|
||||||
"Auto DST on NTP time", // 293
|
"Auto DST on NTP time", // 293
|
||||||
"Set NTP time offset", // 294
|
"Set time zone", // 294
|
||||||
"The logbook contains over 130 entries, which the viewer cannot process. Please download the CSV file to process it.", // 295
|
"The logbook contains over 130 entries, which the viewer cannot process. Please download the CSV file to process it.", // 295
|
||||||
"Canada" // 296
|
"Canada" // 296
|
||||||
},
|
},
|
||||||
@@ -618,7 +618,7 @@ static const char* const Languages[22][297] PROGMEM = {
|
|||||||
"Toevoegen mislukt!\nLogboek is vol!", // 291
|
"Toevoegen mislukt!\nLogboek is vol!", // 291
|
||||||
"Automatisch loggen", // 292
|
"Automatisch loggen", // 292
|
||||||
"Auto zomertijd\nop NTP tijd", // 293
|
"Auto zomertijd\nop NTP tijd", // 293
|
||||||
"NTP tijdverschil\ninstellen", // 294
|
"Tijdzone", // 294
|
||||||
"Het logboek bevat meer dan 130 items, die de viewer niet kan verwerken. Download alstublieft het CSV-bestand om het te bekijken.", // 295
|
"Het logboek bevat meer dan 130 items, die de viewer niet kan verwerken. Download alstublieft het CSV-bestand om het te bekijken.", // 295
|
||||||
"Canada" // 296
|
"Canada" // 296
|
||||||
},
|
},
|
||||||
@@ -917,7 +917,7 @@ static const char* const Languages[22][297] PROGMEM = {
|
|||||||
"Wykaz pełny!", // 291
|
"Wykaz pełny!", // 291
|
||||||
"Autologowanie stacji", // 292
|
"Autologowanie stacji", // 292
|
||||||
"Auto czas letni wg NTP", // 293
|
"Auto czas letni wg NTP", // 293
|
||||||
"Ustaw odchyl. czasu NTP", // 294
|
"Strefa czasowa", // 294
|
||||||
"Wykaz zawiera ponad 130 wpisów, których przeglądarka nie może pokazać. Pobierz plik CSV, aby je przetworzyć.", // 295
|
"Wykaz zawiera ponad 130 wpisów, których przeglądarka nie może pokazać. Pobierz plik CSV, aby je przetworzyć.", // 295
|
||||||
"Kanada" // 296
|
"Kanada" // 296
|
||||||
},
|
},
|
||||||
@@ -1216,7 +1216,7 @@ static const char* const Languages[22][297] PROGMEM = {
|
|||||||
"Ne mogu dodati unos!\nDnevnik je pun!", // 291
|
"Ne mogu dodati unos!\nDnevnik je pun!", // 291
|
||||||
"Autologger", // 292
|
"Autologger", // 292
|
||||||
"Auto DST na NTP vremenu", // 293
|
"Auto DST na NTP vremenu", // 293
|
||||||
"Postavi NTP pomak vremena", // 294
|
"postaviti pomak vremenske zone", // 294
|
||||||
"Dnevnik sadrži preko 130 unosa, koje preglednik ne može obraditi. Preuzmite CSV datoteku za obradu.", // 295
|
"Dnevnik sadrži preko 130 unosa, koje preglednik ne može obraditi. Preuzmite CSV datoteku za obradu.", // 295
|
||||||
"Canada" // 296
|
"Canada" // 296
|
||||||
},
|
},
|
||||||
@@ -1515,7 +1515,7 @@ static const char* const Languages[22][297] PROGMEM = {
|
|||||||
"Αδυναμία προσθήκης!\nΒιβλίο γεμάτο!", // 291
|
"Αδυναμία προσθήκης!\nΒιβλίο γεμάτο!", // 291
|
||||||
"Αυτόματη καταγραφή", // 292
|
"Αυτόματη καταγραφή", // 292
|
||||||
"Αυτόματο DST\nσε ώρα NTP", // 293
|
"Αυτόματο DST\nσε ώρα NTP", // 293
|
||||||
"Ολίσθηση ώρας NTP", // 294
|
"Ορισμός ζώνης ώρας", // 294
|
||||||
"Το βιβλίο περιέχει πάνω από 130 καταγραφές, και είναι αδύνατη η επεξεργασία τους από το χρήστη. Κάντε λήψη του αρχείου CSV για να το επεξεργαστείτε.", // 295
|
"Το βιβλίο περιέχει πάνω από 130 καταγραφές, και είναι αδύνατη η επεξεργασία τους από το χρήστη. Κάντε λήψη του αρχείου CSV για να το επεξεργαστείτε.", // 295
|
||||||
"Καναδάς" // 296
|
"Καναδάς" // 296
|
||||||
},
|
},
|
||||||
@@ -1814,7 +1814,7 @@ static const char* const Languages[22][297] PROGMEM = {
|
|||||||
"Nu se poate adăuga!\nJurnalul este plin!", // 291
|
"Nu se poate adăuga!\nJurnalul este plin!", // 291
|
||||||
"Autologger", // 292
|
"Autologger", // 292
|
||||||
"Auto DST pe ora NTP", // 293
|
"Auto DST pe ora NTP", // 293
|
||||||
"Setează offsetul pentru ora NTP", // 294
|
"Setați fusul orar", // 294
|
||||||
"Jurnalul conține peste 130 de intrări, pe care vizualizatorul nu le poate procesa. Te rog descarcă fișierul CSV pentru a le procesa.", // 295
|
"Jurnalul conține peste 130 de intrări, pe care vizualizatorul nu le poate procesa. Te rog descarcă fișierul CSV pentru a le procesa.", // 295
|
||||||
"Canada" // 296
|
"Canada" // 296
|
||||||
},
|
},
|
||||||
@@ -2113,7 +2113,7 @@ static const char* const Languages[22][297] PROGMEM = {
|
|||||||
"Logbucheintrag nicht möglich\nLogbuch ist voll!", // 291
|
"Logbucheintrag nicht möglich\nLogbuch ist voll!", // 291
|
||||||
"Automatisch loggen", // 292
|
"Automatisch loggen", // 292
|
||||||
"Auto-Sommerzeit\nüber NTP", // 293
|
"Auto-Sommerzeit\nüber NTP", // 293
|
||||||
"NTP-Zeitversatz\neinstellen", // 294
|
"Zeitzone einstellen", // 294
|
||||||
"Das Logbuch enthält mehr als 130 Einträge, was das Anzeigeprogramm nicht verarbeiten kann. Bitte lade die CSV-Datei zum Verarbeiten herunter.", // 295
|
"Das Logbuch enthält mehr als 130 Einträge, was das Anzeigeprogramm nicht verarbeiten kann. Bitte lade die CSV-Datei zum Verarbeiten herunter.", // 295
|
||||||
"Kanada" // 296
|
"Kanada" // 296
|
||||||
},
|
},
|
||||||
@@ -2412,7 +2412,7 @@ static const char* const Languages[22][297] PROGMEM = {
|
|||||||
"Nelze přidat položku!\nLogbook je plný!", // 291
|
"Nelze přidat položku!\nLogbook je plný!", // 291
|
||||||
"Automatický logger", // 292
|
"Automatický logger", // 292
|
||||||
"Auto DST u NTP času", // 293
|
"Auto DST u NTP času", // 293
|
||||||
"Nastavte časový posun NTP", // 294
|
"Nastavit časové pásmo", // 294
|
||||||
"Logbook obsahuje více než 130 položek, které prohlížeč nedokáže zpracovat. Pro zpracování všech položek si stáhněte CSV soubor.", // 295
|
"Logbook obsahuje více než 130 položek, které prohlížeč nedokáže zpracovat. Pro zpracování všech položek si stáhněte CSV soubor.", // 295
|
||||||
"Canada" // 296
|
"Canada" // 296
|
||||||
},
|
},
|
||||||
@@ -2711,7 +2711,7 @@ static const char* const Languages[22][297] PROGMEM = {
|
|||||||
"Nem adható hozzá!\nLogbook megtelt!", // 291
|
"Nem adható hozzá!\nLogbook megtelt!", // 291
|
||||||
"Auto logoló", // 292
|
"Auto logoló", // 292
|
||||||
"Auto nyári idő(DST)\nNTP idő szerint", // 293
|
"Auto nyári idő(DST)\nNTP idő szerint", // 293
|
||||||
"NTP időeltolás beállítása", // 294
|
"Állítsa be az időzónát", // 294
|
||||||
"A napló több mint 130 bejegyzést tartalmaz, amelyeket a megtekintő nem tud feldolgozni. Kérlek, töltsd le a CSV fájlt a megtekintéshez.", // 295
|
"A napló több mint 130 bejegyzést tartalmaz, amelyeket a megtekintő nem tud feldolgozni. Kérlek, töltsd le a CSV fájlt a megtekintéshez.", // 295
|
||||||
"Kanada" // 296
|
"Kanada" // 296
|
||||||
},
|
},
|
||||||
@@ -3010,7 +3010,7 @@ static const char* const Languages[22][297] PROGMEM = {
|
|||||||
"Impossible d'ajouter l'entrée!\nJournal de bord plein!", // 291
|
"Impossible d'ajouter l'entrée!\nJournal de bord plein!", // 291
|
||||||
"Log automatique", // 292
|
"Log automatique", // 292
|
||||||
"DST automatique\nsur l'heure NTP", // 293
|
"DST automatique\nsur l'heure NTP", // 293
|
||||||
"Décalage horaire NTP", // 294
|
"Définir le fuseau horaire", // 294
|
||||||
"Le journal de bord contient plus de 130 entrées que la liste ne peut pas afficher. Veuillez télécharger le fichier CSV.", // 295
|
"Le journal de bord contient plus de 130 entrées que la liste ne peut pas afficher. Veuillez télécharger le fichier CSV.", // 295
|
||||||
"Canada" // 296
|
"Canada" // 296
|
||||||
},
|
},
|
||||||
@@ -3309,7 +3309,7 @@ static const char* const Languages[22][297] PROGMEM = {
|
|||||||
"Не може да се добави запис!\nДневникът е пълен!", // 291
|
"Не може да се добави запис!\nДневникът е пълен!", // 291
|
||||||
"Автоматичен дневник", // 292
|
"Автоматичен дневник", // 292
|
||||||
"Автоматично лятно\nвреме по NTP", // 293
|
"Автоматично лятно\nвреме по NTP", // 293
|
||||||
"Отместване на NTP", // 294
|
"Задаване на часова зона", // 294
|
||||||
"Дневникът съдържа над 130 записа, които не могат да бъдат обработени. Моля, изтеглете CSV файла за обработка.", // 295
|
"Дневникът съдържа над 130 записа, които не могат да бъдат обработени. Моля, изтеглете CSV файла за обработка.", // 295
|
||||||
"Канада" // 296
|
"Канада" // 296
|
||||||
},
|
},
|
||||||
@@ -3608,7 +3608,7 @@ static const char* const Languages[22][297] PROGMEM = {
|
|||||||
"Смещение времени NTP", // 291
|
"Смещение времени NTP", // 291
|
||||||
"Автологгер", // 292
|
"Автологгер", // 292
|
||||||
"Автоматическое летнее время по NTP", // 293
|
"Автоматическое летнее время по NTP", // 293
|
||||||
"Смещение времени NTP", // 294
|
"Установить часовой пояс", // 294
|
||||||
"В логе более 130 записей, которые программа просмотра не может обработать. Загрузите файл CSV для его обработки.", // 295
|
"В логе более 130 записей, которые программа просмотра не может обработать. Загрузите файл CSV для его обработки.", // 295
|
||||||
"Канада" // 296
|
"Канада" // 296
|
||||||
},
|
},
|
||||||
@@ -3907,7 +3907,7 @@ static const char* const Languages[22][297] PROGMEM = {
|
|||||||
"Твій журнал повний!", // 291
|
"Твій журнал повний!", // 291
|
||||||
"Автореєстратор", // 292
|
"Автореєстратор", // 292
|
||||||
"Автоматичний літній\nчас за NTP", // 293
|
"Автоматичний літній\nчас за NTP", // 293
|
||||||
"Встановити зміщення\nчасу NTP", // 294
|
"Встановити часовий пояс", // 294
|
||||||
"Журнал містить понад 130 записів, які оглядач не може обробити. Будь ласка, завантажте файл CSV, щоб обробити його.", // 295
|
"Журнал містить понад 130 записів, які оглядач не може обробити. Будь ласка, завантажте файл CSV, щоб обробити його.", // 295
|
||||||
"Канада" // 296
|
"Канада" // 296
|
||||||
},
|
},
|
||||||
@@ -4206,7 +4206,7 @@ static const char* const Languages[22][297] PROGMEM = {
|
|||||||
"Impossibile aggiungere voce!\nRegistro dei log pieno!", // 291
|
"Impossibile aggiungere voce!\nRegistro dei log pieno!", // 291
|
||||||
"Autologger", // 292
|
"Autologger", // 292
|
||||||
"Auto DST su tempo NTP", // 293
|
"Auto DST su tempo NTP", // 293
|
||||||
"Imposta offset orario NTP", // 294
|
"Imposta il fuso orario", // 294
|
||||||
"Registro dei log con + di 130 voci, il visualizzatore non può gestirle. Scarica il file CSV per gestirlo.", // 295
|
"Registro dei log con + di 130 voci, il visualizzatore non può gestirle. Scarica il file CSV per gestirlo.", // 295
|
||||||
"Canada" // 296
|
"Canada" // 296
|
||||||
},
|
},
|
||||||
@@ -4505,7 +4505,7 @@ static const char* const Languages[22][297] PROGMEM = {
|
|||||||
"log记录已满!", // 291
|
"log记录已满!", // 291
|
||||||
"自动记录日志", // 292
|
"自动记录日志", // 292
|
||||||
"联网自动同步本机时间", // 293
|
"联网自动同步本机时间", // 293
|
||||||
"设置NTP时区", // 294
|
"设置时区", // 294
|
||||||
"该日志包含超过130个条目,观看者无法处理。请下载CSV文件进行处理。", // 295
|
"该日志包含超过130个条目,观看者无法处理。请下载CSV文件进行处理。", // 295
|
||||||
"加拿大" // 296
|
"加拿大" // 296
|
||||||
},
|
},
|
||||||
@@ -4804,7 +4804,7 @@ static const char* const Languages[22][297] PROGMEM = {
|
|||||||
"Kan ikke lagre!\nLoggbok er full!", // 291
|
"Kan ikke lagre!\nLoggbok er full!", // 291
|
||||||
"Autologger", // 292
|
"Autologger", // 292
|
||||||
"Auto sommertid med NTP", // 293
|
"Auto sommertid med NTP", // 293
|
||||||
"Angi NTP-tidsforskyvning", // 294
|
"Angi tidssone", // 294
|
||||||
"Loggbok har over 130 oppføringer.\nLast ned CSV for behandling.", // 295
|
"Loggbok har over 130 oppføringer.\nLast ned CSV for behandling.", // 295
|
||||||
"Canada" // 296
|
"Canada" // 296
|
||||||
},
|
},
|
||||||
@@ -5103,7 +5103,7 @@ static const char* const Languages[22][297] PROGMEM = {
|
|||||||
"¡Registro lleno!\nNo se puede añadir", // 291
|
"¡Registro lleno!\nNo se puede añadir", // 291
|
||||||
"Autoregistro", // 292
|
"Autoregistro", // 292
|
||||||
"DST automático (NTP)", // 293
|
"DST automático (NTP)", // 293
|
||||||
"Ajustar\ndesplazamiento NTP", // 294
|
"Establecer zona horaria", // 294
|
||||||
"El registro tiene +130 entradas.\nDescargue el CSV.", // 295
|
"El registro tiene +130 entradas.\nDescargue el CSV.", // 295
|
||||||
"Canadá" // 296
|
"Canadá" // 296
|
||||||
},
|
},
|
||||||
@@ -5402,7 +5402,7 @@ static const char* const Languages[22][297] PROGMEM = {
|
|||||||
"Não é possível adicionar!\nO livro está cheio!", // 291
|
"Não é possível adicionar!\nO livro está cheio!", // 291
|
||||||
"Registrador automático", // 292
|
"Registrador automático", // 292
|
||||||
"DST automático\nno horário NTP", // 293
|
"DST automático\nno horário NTP", // 293
|
||||||
"Definir deslocamento\nde tempo NTP", // 294
|
"Definir fuso horário", // 294
|
||||||
"O diário de bordo contém mais de 130 entradas que o espectador não consegue processar. Descarregue o ficheiro CSV para processá-lo.", // 295
|
"O diário de bordo contém mais de 130 entradas que o espectador não consegue processar. Descarregue o ficheiro CSV para processá-lo.", // 295
|
||||||
"Canadá" // 296
|
"Canadá" // 296
|
||||||
},
|
},
|
||||||
@@ -5701,7 +5701,7 @@ static const char* const Languages[22][297] PROGMEM = {
|
|||||||
"Ne može se dodati!\nDnevnik je pun!", // 291
|
"Ne može se dodati!\nDnevnik je pun!", // 291
|
||||||
"Automatski logger", // 292
|
"Automatski logger", // 292
|
||||||
"Auto DST na\nNTP vremenu", // 293
|
"Auto DST na\nNTP vremenu", // 293
|
||||||
"Postavite NTP\nvremenski offset", // 294
|
"Podesite vremensku zonu", // 294
|
||||||
"Dnevnik sadrži više od 130 unosa, što viewer ne može obraditi. Preuzmite CSV fajl za obradu.", // 295
|
"Dnevnik sadrži više od 130 unosa, što viewer ne može obraditi. Preuzmite CSV fajl za obradu.", // 295
|
||||||
"Canada" // 296
|
"Canada" // 296
|
||||||
},
|
},
|
||||||
@@ -6000,7 +6000,7 @@ static const char* const Languages[22][297] PROGMEM = {
|
|||||||
"Ei voida lisätä merkintää!\nLokikirja on täynnä!", // 291
|
"Ei voida lisätä merkintää!\nLokikirja on täynnä!", // 291
|
||||||
"Autolokikirja", // 292
|
"Autolokikirja", // 292
|
||||||
"Auto DST\nNTP-ajassa", // 293
|
"Auto DST\nNTP-ajassa", // 293
|
||||||
"Aseta\nNTP-aikasiirto", // 294
|
"Aseta aikavyöhyke", // 294
|
||||||
"Lokikirja sisältää yli 130 merkintää, joita katselija ei pysty käsittelemään. Lataa CSV-tiedosto sen käsittelemiseksi.", // 295
|
"Lokikirja sisältää yli 130 merkintää, joita katselija ei pysty käsittelemään. Lataa CSV-tiedosto sen käsittelemiseksi.", // 295
|
||||||
"Kanada" // 296
|
"Kanada" // 296
|
||||||
},
|
},
|
||||||
@@ -6299,7 +6299,7 @@ static const char* const Languages[22][297] PROGMEM = {
|
|||||||
"Kan ikke tilføje!\nLogbogen er fuld!", // 291
|
"Kan ikke tilføje!\nLogbogen er fuld!", // 291
|
||||||
"Autologger", // 292
|
"Autologger", // 292
|
||||||
"Auto DST på\nNTP-tid", // 293
|
"Auto DST på\nNTP-tid", // 293
|
||||||
"Indstil NTP-tidsforskel", // 294
|
"Indstil tidszone", // 294
|
||||||
"Logbogen indeholder over 130 poster, som fremviseren ikke kan behandle. Download CSV-filen for at behandle den.", // 295
|
"Logbogen indeholder over 130 poster, som fremviseren ikke kan behandle. Download CSV-filen for at behandle den.", // 295
|
||||||
"Canada" // 296
|
"Canada" // 296
|
||||||
},
|
},
|
||||||
@@ -6598,7 +6598,7 @@ static const char* const Languages[22][297] PROGMEM = {
|
|||||||
"Kan inte spara!\nLoggboken är full!", // 291
|
"Kan inte spara!\nLoggboken är full!", // 291
|
||||||
"Autologgning", // 292
|
"Autologgning", // 292
|
||||||
"Auto NTP sommartid", // 293
|
"Auto NTP sommartid", // 293
|
||||||
"Ange NTP tidszon", // 294
|
"Ställ in tidszon", // 294
|
||||||
"Loggboken har mer än 130 poster, vilket visaren inte kan hantera. Ladda ner CSV för behandling.", // 295
|
"Loggboken har mer än 130 poster, vilket visaren inte kan hantera. Ladda ner CSV för behandling.", // 295
|
||||||
"Kanada" // 296
|
"Kanada" // 296
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -12,4 +12,4 @@ extern ESP32Time rtc;
|
|||||||
extern bool rx_rtc_avail;
|
extern bool rx_rtc_avail;
|
||||||
|
|
||||||
bool init_rtc();
|
bool init_rtc();
|
||||||
void set_time(time_t time);
|
void set_time(time_t time, int8_t offset);
|
||||||
+1
-7
@@ -1,28 +1,22 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "globals.h"
|
#include "globals.h"
|
||||||
|
#include "core.h"
|
||||||
|
|
||||||
void doTouchEvent(uint16_t x, uint16_t y);
|
void doTouchEvent(uint16_t x, uint16_t y);
|
||||||
|
|
||||||
extern void BuildDisplay();
|
extern void BuildDisplay();
|
||||||
extern void BuildBWSelector();
|
extern void BuildBWSelector();
|
||||||
extern void SelectBand();
|
|
||||||
extern void BuildAdvancedRDS();
|
extern void BuildAdvancedRDS();
|
||||||
extern void doBandToggle();
|
extern void doBandToggle();
|
||||||
extern void doTuneMode();
|
extern void doTuneMode();
|
||||||
extern void doStereoToggle();
|
|
||||||
extern void cancelDXScan();
|
|
||||||
extern void doBW();
|
|
||||||
extern void drawButton(const char* text, byte button_number, bool active, bool selected);
|
extern void drawButton(const char* text, byte button_number, bool active, bool selected);
|
||||||
extern void KeyDown();
|
extern void KeyDown();
|
||||||
extern void KeyUp();
|
extern void KeyUp();
|
||||||
extern void ButtonPress();
|
extern void ButtonPress();
|
||||||
extern void DoMenu();
|
extern void DoMenu();
|
||||||
extern void ModeButtonPress();
|
|
||||||
extern void toggleiMSEQ();
|
extern void toggleiMSEQ();
|
||||||
extern void showBWSelector();
|
extern void showBWSelector();
|
||||||
extern void updateiMS();
|
extern void updateiMS();
|
||||||
extern void updateEQ();
|
extern void updateEQ();
|
||||||
extern void DataPrint(String string);
|
|
||||||
extern void BuildAFScreen();
|
extern void BuildAFScreen();
|
||||||
extern void ShowFreq(int mode);
|
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ void TFT_eSPI::pushBlock(uint16_t color, uint32_t len) {
|
|||||||
SPI_BUSY_CHECK;
|
SPI_BUSY_CHECK;
|
||||||
|
|
||||||
uint32_t i = 0;
|
uint32_t i = 0;
|
||||||
if (rem) { // len was not multiple of 32
|
if(rem) { // len was not multiple of 32
|
||||||
for (i = 0; i < rem; i += 2) *spi_w++ = color32;
|
for (i = 0; i < rem; i += 2) *spi_w++ = color32;
|
||||||
*_spi_mosi_dlen = (rem << 4) - 1; // << 4 = * 16
|
*_spi_mosi_dlen = (rem << 4) - 1; // << 4 = * 16
|
||||||
*_spi_cmd = SPI_USR;
|
*_spi_cmd = SPI_USR;
|
||||||
@@ -343,11 +343,11 @@ void TFT_eSPI::init() {
|
|||||||
gpio_set_level((gpio_num_t)TFT_RST, 1);
|
gpio_set_level((gpio_num_t)TFT_RST, 1);
|
||||||
delay(3);
|
delay(3);
|
||||||
gpio_set_level((gpio_num_t)TFT_RST, 0);
|
gpio_set_level((gpio_num_t)TFT_RST, 0);
|
||||||
delay(12);
|
delay(10);
|
||||||
gpio_set_level((gpio_num_t)TFT_RST, 1);
|
gpio_set_level((gpio_num_t)TFT_RST, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
delay(34); // Wait for reset to complete
|
delay(25); // Wait for reset to complete
|
||||||
|
|
||||||
begin_tft_write();
|
begin_tft_write();
|
||||||
|
|
||||||
|
|||||||
@@ -1,16 +1,5 @@
|
|||||||
/*!
|
#pragma once
|
||||||
* @file WC_AP_HTML.h
|
|
||||||
*
|
|
||||||
* HTML snippets to build the Access Point portal and the Parameters Portal.
|
|
||||||
*
|
|
||||||
* Written by Stuart Blair
|
|
||||||
*
|
|
||||||
* GNU General Public License v3.0 licence, all text here must be included in any redistribution and you should receive a copy of the license file.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef WC_AP_HTML
|
|
||||||
#define WC_AP_HTML ///< Define to stop re-inclusion
|
|
||||||
/*! \def char AP_HTTP_HEAD[] PROGMEM
|
/*! \def char AP_HTTP_HEAD[] PROGMEM
|
||||||
Start of HTML output
|
Start of HTML output
|
||||||
*/
|
*/
|
||||||
@@ -72,6 +61,4 @@ const char AP_HTTP_END[] PROGMEM = "</div></body></html>";
|
|||||||
/** HTML snippet for our custom parameters portal form */
|
/** HTML snippet for our custom parameters portal form */
|
||||||
const char AP_HTTP_PORTAL_PARAM_OPTIONS[] PROGMEM = "<form action=\"/params\" method=\"get\"><button>Configure Parameters</button></form><br/><form action=\"/i\" method=\"get\"><button>Info</button></form><br/>";
|
const char AP_HTTP_PORTAL_PARAM_OPTIONS[] PROGMEM = "<form action=\"/params\" method=\"get\"><button>Configure Parameters</button></form><br/><form action=\"/i\" method=\"get\"><button>Info</button></form><br/>";
|
||||||
/** HTML snippet for our custom parameters save */
|
/** HTML snippet for our custom parameters save */
|
||||||
const char AP_HTTP_FORM_PARAM_START[] PROGMEM ="<form method=\"get\" action=\"wifisave\">";
|
const char AP_HTTP_FORM_PARAM_START[] PROGMEM ="<form method=\"get\" action=\"wifisave\">";
|
||||||
|
|
||||||
#endif
|
|
||||||
+60
-722
File diff suppressed because it is too large
Load Diff
+29
-131
@@ -1,85 +1,28 @@
|
|||||||
/*!
|
#pragma once
|
||||||
@file WiFiConnect.h
|
|
||||||
|
|
||||||
This is the documentation for WiFiConnect for the Arduino platform.
|
|
||||||
It is a WiFi connection manager for use with the popular ESP8266 and ESP32 chips.
|
|
||||||
It contains a captive portal to allow easy connection and changing of WiFi netwoks
|
|
||||||
via a web based interface and allows for additional user parameters.
|
|
||||||
|
|
||||||
You can view the project at <a href="https://github.com/smurf0969/WiFiConnect">https://github.com/smurf0969/WiFiConnect</a>.
|
|
||||||
Further information is also available in the project <a href="https://github.com/smurf0969/WiFiConnect/wiki">Wiki</a>.
|
|
||||||
|
|
||||||
This is a heavily customised version from the origional <a href="https://github.com/tzapu/WiFiManager">WiFiManager</a>
|
|
||||||
developed by https://github.com/tzapu .
|
|
||||||
|
|
||||||
This library depends on <a href="https://github.com/esp8266/Arduino">
|
|
||||||
ESP8266 Arduino Core</a> and <a href="https://github.com/espressif/arduino-esp32">ESP32 Arduino Core</a> being present on your system.
|
|
||||||
Please make sure you have installed the latest version before using this library.
|
|
||||||
|
|
||||||
Written by Stuart Blair.
|
|
||||||
|
|
||||||
GNU General Public License v3.0 licence, all text here must be included in any redistribution and you should receive a copy of the license file.
|
|
||||||
|
|
||||||
*/
|
|
||||||
#ifndef WiFiConnect_h
|
|
||||||
#define WiFiConnect_h
|
|
||||||
#include <Arduino.h>
|
#include <Arduino.h>
|
||||||
#if defined(ESP8266)
|
|
||||||
#include <ESP8266WiFi.h>
|
|
||||||
#include <ESP8266WebServer.h>
|
|
||||||
#else
|
|
||||||
#include <WiFi.h>
|
#include <WiFi.h>
|
||||||
#include <FS.h>
|
#include <FS.h>
|
||||||
using fs::FS;
|
using fs::FS;
|
||||||
#include <WebServer.h>
|
#include <WebServer.h>
|
||||||
#endif
|
|
||||||
#include <DNSServer.h>
|
#include <DNSServer.h>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
#if defined(ESP8266)
|
|
||||||
extern "C" {
|
|
||||||
#include "user_interface.h"
|
|
||||||
}
|
|
||||||
#define ESP_getChipId() (ESP.getChipId()) ///< Gets an ID from the chip
|
|
||||||
#else
|
|
||||||
#include <esp_wifi.h>
|
#include <esp_wifi.h>
|
||||||
#define ESP_getChipId() ((uint32_t)ESP.getEfuseMac())///< Gets an ID from the chip
|
#define ESP_getChipId() ((uint32_t)ESP.getEfuseMac())///< Gets an ID from the chip
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "WC_AP_HTML.h"
|
#include "WC_AP_HTML.h"
|
||||||
#include "WiFiConnectParam.h"
|
#include "WiFiConnectParam.h"
|
||||||
/** Options for how a access point should continue if no WiFi connected */
|
|
||||||
enum AP_Continue {
|
|
||||||
AP_NONE, ///< No action, continues to run code
|
|
||||||
AP_LOOP, ///< Stalls execution with an infinate loop
|
|
||||||
AP_RESTART, ///< Restarts the chip, allowing it to try to setup again. Handy for sensors when wifi is lost.
|
|
||||||
AP_RESET, ///< Same as AP_RESTART
|
|
||||||
AP_WAIT // Keep the AP and webserver running, sit quietly and be patient.
|
|
||||||
};
|
|
||||||
/**************************************************************************/
|
|
||||||
/*!
|
|
||||||
@brief Class that helps to connect to WiFi networks, that also has
|
|
||||||
captive portal web interface for configuration.
|
|
||||||
This is the base class for WiFiConntectOLED which displays
|
|
||||||
information on a OLED display.
|
|
||||||
*/
|
|
||||||
/**************************************************************************/
|
|
||||||
class WiFiConnect {
|
class WiFiConnect {
|
||||||
public:
|
public:
|
||||||
/// Create WiFiConnect class
|
|
||||||
WiFiConnect();
|
WiFiConnect();
|
||||||
|
|
||||||
boolean startConfigurationPortal();
|
boolean startConfigurationPortal();
|
||||||
boolean startConfigurationPortal(AP_Continue apcontinue);
|
boolean startConfigurationPortal(const char* apName, const char* apPassword = NULL, bool paramsMode = false);
|
||||||
boolean startConfigurationPortal(AP_Continue apcontinue, const char* apName, const char* apPassword = NULL, bool paramsMode = false);
|
|
||||||
|
|
||||||
boolean startParamsPortal();
|
|
||||||
boolean startParamsPortal(AP_Continue apcontinue);
|
|
||||||
boolean startParamsPortal(AP_Continue apcontinue, const char* apName, const char* apPassword = NULL);
|
|
||||||
|
|
||||||
void addParameter(WiFiConnectParam *p);
|
void addParameter(WiFiConnectParam *p);
|
||||||
|
|
||||||
void setAPName(const char* apName);
|
void setAPName(const char* apName);
|
||||||
const char* getAPName();
|
const char* getAPName();
|
||||||
|
|
||||||
void resetSettings();
|
void resetSettings();
|
||||||
@@ -87,83 +30,46 @@ class WiFiConnect {
|
|||||||
boolean autoConnect();
|
boolean autoConnect();
|
||||||
boolean autoConnect(const char* ssidName, const char* ssidPassword = NULL, WiFiMode_t acWiFiMode = WIFI_STA);
|
boolean autoConnect(const char* ssidName, const char* ssidPassword = NULL, WiFiMode_t acWiFiMode = WIFI_STA);
|
||||||
|
|
||||||
|
void setAPStaticIPConfig(IPAddress ip, IPAddress gw, IPAddress sn);
|
||||||
//sets a custom ip /gateway /subnet configuration
|
void setSTAStaticIPConfig(IPAddress ip, IPAddress gw, IPAddress sn);
|
||||||
void setAPStaticIPConfig(IPAddress ip, IPAddress gw, IPAddress sn);
|
|
||||||
//sets config for a static IP
|
|
||||||
void setSTAStaticIPConfig(IPAddress ip, IPAddress gw, IPAddress sn);
|
|
||||||
|
|
||||||
//called when AP mode and config portal is started
|
|
||||||
void setAPCallback( void (*func)(WiFiConnect*) );
|
|
||||||
//called when settings have been changed and connection was successful
|
|
||||||
void setSaveConfigCallback( void (*func)() );
|
|
||||||
|
|
||||||
void setDebug(boolean isDebug);
|
|
||||||
|
|
||||||
void setRetryAttempts(int attempts);
|
void setRetryAttempts(int attempts);
|
||||||
void setConnectionTimeoutSecs(int timeout);
|
void setConnectionTimeoutSecs(int timeout);
|
||||||
void setAPModeTimeoutMins(int mins);
|
void setAPModeTimeoutMins(int mins);
|
||||||
|
|
||||||
boolean captivePortal();
|
boolean captivePortal();
|
||||||
|
|
||||||
//helpers
|
//helpers
|
||||||
const char* statusToString(int state);
|
const char* statusToString(int state);
|
||||||
int getRSSIasQuality(int RSSI);
|
int getRSSIasQuality(int RSSI);
|
||||||
boolean isIp(String str);
|
boolean isIp(String str);
|
||||||
String toStringIp(IPAddress ip);
|
String toStringIp(IPAddress ip);
|
||||||
virtual void displayTurnOFF(int ms = 5000); ///< Virtual method overriden in WiFiConnectOLED
|
|
||||||
virtual void displayLoop(); ///< Virtual method overriden in WiFiConnectOLED
|
|
||||||
virtual void displayON(); ///< Virtual method overriden in WiFiConnectOLED
|
|
||||||
protected:
|
|
||||||
boolean _debug = false; ///< Flag to determine wheter to output mesages or not
|
|
||||||
template <typename Generic>
|
|
||||||
void DEBUG_WC(Generic text);
|
|
||||||
virtual void displayConnecting(int attempt, int totalAttempts); ///< Virtual method overriden in WiFiConnectOLED
|
|
||||||
virtual void displayConnected(); ///< Virtual method overriden in WiFiConnectOLED
|
|
||||||
virtual void displayAP(); ///< Virtual method overriden in WiFiConnectOLED
|
|
||||||
virtual void displayParams(); ///< Virtual method overriden in WiFiConnectOLED
|
|
||||||
virtual void displayManualReset(); ///< Virtual method overriden in WiFiConnectOLED
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
|
||||||
int _retryAttempts = 3; ///< Number of attempts when trying to connect to WiFi network
|
int _retryAttempts = 3; ///< Number of attempts when trying to connect to WiFi network
|
||||||
int _connectionTimeoutSecs = 10; ///< How log to wait for the connection to succeed or fail
|
int _connectionTimeoutSecs = 10; ///< How log to wait for the connection to succeed or fail
|
||||||
int _apTimeoutMins = 3; ///< The amount of minutes of inactivity before the access point exits it routine
|
int _apTimeoutMins = 3; ///< The amount of minutes of inactivity before the access point exits it routine
|
||||||
// DNS server
|
|
||||||
const byte DNS_PORT = 53; ///< Standard DNS Port number
|
long _lastAPPage = 0;
|
||||||
|
int _minimumQuality = 8;
|
||||||
long _lastAPPage = 0; ///< The last time a page was accessed in the portal. Used for the inactivity timeout.
|
int _paramsCount = 0;
|
||||||
boolean _removeDuplicateAPs = true; ///< Flag to remove duplicate networks from scan results.
|
boolean _readyToConnect = false;
|
||||||
int _minimumQuality = 8; ///< The minimum netqork quality to be included in scan results.
|
String _ssid = " ";
|
||||||
int _paramsCount = 0; ///< The amount of custom parameters added via addParameter
|
String _password = " ";
|
||||||
boolean _readyToConnect = false; ///< Flag used in access point to determine if it should try to connect to the network.
|
|
||||||
String _ssid = " "; ///< Tempory holder for the network ssid
|
|
||||||
String _password = " "; ///< Tempory holder for the network password
|
|
||||||
|
|
||||||
WiFiConnectParam* _params[WiFiConnect_MAX_PARAMS]; ///< Array to hold custom parameters
|
WiFiConnectParam* _params[WiFiConnect_MAX_PARAMS]; ///< Array to hold custom parameters
|
||||||
|
|
||||||
std::unique_ptr<DNSServer> dnsServer; ///< DNS Server for captive portal to redirect to Access Point
|
std::unique_ptr<DNSServer> dnsServer;
|
||||||
#ifdef ESP8266
|
std::unique_ptr<WebServer> server;
|
||||||
std::unique_ptr<ESP8266WebServer> server; ///< Web server for serving access point pages
|
|
||||||
#else
|
|
||||||
std::unique_ptr<WebServer> server; ///< Web server for serving access point pages
|
|
||||||
#endif
|
|
||||||
|
|
||||||
char _apName[33] ; ///< Holder for the access point name
|
char _apName[33];
|
||||||
char _apPassword[65] ; ///< Holder for the access point password
|
char _apPassword[65];
|
||||||
|
|
||||||
IPAddress _ap_static_ip; ///< Variable for holding Static IP Address for the access point
|
IPAddress _ap_static_ip; ///< Variable for holding Static IP Address for the access point
|
||||||
IPAddress _ap_static_gw; ///< Variable for holding Static Gateway IP Address for the access point
|
IPAddress _ap_static_gw; ///< Variable for holding Static Gateway IP Address for the access point
|
||||||
IPAddress _ap_static_sn; ///< Variable for holding Static Subnet Mask IP Address for the access point
|
IPAddress _ap_static_sn; ///< Variable for holding Static Subnet Mask IP Address for the access point
|
||||||
IPAddress _sta_static_ip; ///< Variable for holding Static IP Address for the network connection
|
IPAddress _sta_static_ip; ///< Variable for holding Static IP Address for the network connection
|
||||||
IPAddress _sta_static_gw; ///< Variable for holding Static Gateway IP Address for the network connection
|
IPAddress _sta_static_gw; ///< Variable for holding Static Gateway IP Address for the network connection
|
||||||
IPAddress _sta_static_sn; ///< Variable for holding Static Subnet Mask IP Address for the network connection
|
IPAddress _sta_static_sn; ///< Variable for holding Static Subnet Mask IP Address for the network connection
|
||||||
|
|
||||||
void (*_apcallback)(WiFiConnect*) = NULL;
|
|
||||||
void (*_savecallback)() = NULL;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void handleRoot();
|
void handleRoot();
|
||||||
void handleParamRoot();
|
void handleParamRoot();
|
||||||
@@ -176,14 +82,6 @@ class WiFiConnect {
|
|||||||
void handleNotFound();
|
void handleNotFound();
|
||||||
|
|
||||||
template <class T>
|
template <class T>
|
||||||
auto optionalIPFromString(T *obj, const char *s) -> decltype( obj->fromString(s) ) {
|
auto optionalIPFromString(T *obj, const char *s) -> decltype(obj->fromString(s)) { return obj->fromString(s); }
|
||||||
return obj->fromString(s);
|
bool optionalIPFromString(...) {return false;}
|
||||||
}
|
|
||||||
auto optionalIPFromString(...) -> bool {
|
|
||||||
DEBUG_WC("NO fromString METHOD ON IPAddress, you need ESP8266 core 2.1.0 or newer for Custom IP configuration to work.");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|||||||
@@ -1,41 +1,5 @@
|
|||||||
/*!
|
|
||||||
@file WiFiConnectParam.cpp
|
|
||||||
|
|
||||||
WiFi Connection Manager with Captive Portal
|
|
||||||
|
|
||||||
Introduction
|
|
||||||
|
|
||||||
This is the documentation for WiFiConnect for the Arduino platform.
|
|
||||||
It is a WiFi connection manager for use with the popular ESP8266 and ESP32 chips.
|
|
||||||
It contains a captive portal to allow easy connection and changing of WiFi netwoks
|
|
||||||
via a web based interface and allows for additional user parameters.
|
|
||||||
It can also display messages via a OLED screen see WiFiConnectOLED class.
|
|
||||||
|
|
||||||
This is a heavily customised version from the original <a href="https://github.com/tzapu/WiFiManager">WiFiManager</a>
|
|
||||||
developed by https://github.com/tzapu .
|
|
||||||
|
|
||||||
Dependencies
|
|
||||||
|
|
||||||
This library depends on <a href="https://github.com/esp8266/Arduino">
|
|
||||||
ESP8266 Arduino Core</a> and <a href="https://github.com/espressif/arduino-esp32">ESP32 Arduino Core</a> being present on your system.
|
|
||||||
Please make sure you have installed the latest version before using this library.
|
|
||||||
|
|
||||||
|
|
||||||
Written by Stuart Blair.
|
|
||||||
|
|
||||||
License
|
|
||||||
|
|
||||||
GNU General Public License v3.0 licence, all text here must be included in any redistribution and you should receive a copy of the license file.
|
|
||||||
|
|
||||||
*/
|
|
||||||
#include "WiFiConnectParam.h"
|
#include "WiFiConnectParam.h"
|
||||||
/**************************************************************************/
|
|
||||||
/*!
|
|
||||||
@brief Class object initialiser
|
|
||||||
@param custom
|
|
||||||
Custom HTML to be displayed in the access point for this item.
|
|
||||||
*/
|
|
||||||
/**************************************************************************/
|
|
||||||
WiFiConnectParam::WiFiConnectParam(const char *custom) {
|
WiFiConnectParam::WiFiConnectParam(const char *custom) {
|
||||||
_id = NULL;
|
_id = NULL;
|
||||||
_placeholder = NULL;
|
_placeholder = NULL;
|
||||||
@@ -44,55 +8,14 @@ WiFiConnectParam::WiFiConnectParam(const char *custom) {
|
|||||||
|
|
||||||
_customHTML = custom;
|
_customHTML = custom;
|
||||||
}
|
}
|
||||||
/**************************************************************************/
|
|
||||||
/*!
|
|
||||||
@brief Class object initialiser
|
|
||||||
@param id
|
|
||||||
The unique ID for the html input box markup for this item
|
|
||||||
@param placeholder
|
|
||||||
Text to be displayed as the input box placeholder for this item
|
|
||||||
@param defaultValue
|
|
||||||
Default text to be displayed in the input box for this item
|
|
||||||
@param length
|
|
||||||
The maximum input text length for this item
|
|
||||||
*/
|
|
||||||
/**************************************************************************/
|
|
||||||
WiFiConnectParam::WiFiConnectParam(const char *id, const char *placeholder, const char *defaultValue, int length) {
|
WiFiConnectParam::WiFiConnectParam(const char *id, const char *placeholder, const char *defaultValue, int length) {
|
||||||
init(id, placeholder, defaultValue, length, "");
|
init(id, placeholder, defaultValue, length, "");
|
||||||
}
|
}
|
||||||
/**************************************************************************/
|
|
||||||
/*!
|
|
||||||
@brief Class object initialiser
|
|
||||||
@param id
|
|
||||||
The unique ID for the html input box markup for this item
|
|
||||||
@param placeholder
|
|
||||||
Text to be displayed as the input box placeholder for this item
|
|
||||||
@param defaultValue
|
|
||||||
Default text to be displayed in the input box for this item
|
|
||||||
@param length
|
|
||||||
The maximum input text length for this item
|
|
||||||
@param custom
|
|
||||||
Custom HTML to be displayed in the access point for this item.
|
|
||||||
*/
|
|
||||||
/**************************************************************************/
|
|
||||||
WiFiConnectParam::WiFiConnectParam(const char *id, const char *placeholder, const char *defaultValue, int length, const char *custom) {
|
WiFiConnectParam::WiFiConnectParam(const char *id, const char *placeholder, const char *defaultValue, int length, const char *custom) {
|
||||||
init(id, placeholder, defaultValue, length, custom);
|
init(id, placeholder, defaultValue, length, custom);
|
||||||
}
|
}
|
||||||
/**************************************************************************/
|
|
||||||
/*!
|
|
||||||
@brief Initialiser method
|
|
||||||
@param id
|
|
||||||
The unique ID for the html input box markup for this item
|
|
||||||
@param placeholder
|
|
||||||
Text to be displayed as the input box placeholder for this item
|
|
||||||
@param defaultValue
|
|
||||||
Default text to be displayed in the input box for this item
|
|
||||||
@param length
|
|
||||||
The maximum input text length for this item
|
|
||||||
@param custom
|
|
||||||
Custom HTML to be displayed in the access point for this item.
|
|
||||||
*/
|
|
||||||
/**************************************************************************/
|
|
||||||
void WiFiConnectParam::init(const char *id, const char *placeholder, const char *defaultValue, int length, const char *custom) {
|
void WiFiConnectParam::init(const char *id, const char *placeholder, const char *defaultValue, int length, const char *custom) {
|
||||||
_id = id;
|
_id = id;
|
||||||
_placeholder = placeholder;
|
_placeholder = placeholder;
|
||||||
@@ -101,66 +24,32 @@ void WiFiConnectParam::init(const char *id, const char *placeholder, const char
|
|||||||
|
|
||||||
_customHTML = custom;
|
_customHTML = custom;
|
||||||
}
|
}
|
||||||
/**************************************************************************/
|
|
||||||
/*!
|
|
||||||
@brief Method to change the current value of the item
|
|
||||||
@param newValue
|
|
||||||
The new string value for the item
|
|
||||||
*/
|
|
||||||
/**************************************************************************/
|
|
||||||
void WiFiConnectParam::setValue(const char *newValue){
|
void WiFiConnectParam::setValue(const char *newValue){
|
||||||
if(_length>0){
|
if(_length > 0) {
|
||||||
_value = new char[_length + 1];
|
// you know what was here in upstream
|
||||||
for (int i = 0; i < _length; i++) {
|
_value = new char[_length + 1];
|
||||||
_value[i] = 0;
|
for (int i = 0; i < _length; i++) _value[i] = 0;
|
||||||
}
|
if (newValue != NULL) strncpy(_value, newValue, _length);
|
||||||
if (newValue != NULL) {
|
|
||||||
strncpy(_value, newValue, _length);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/**************************************************************************/
|
|
||||||
/*!
|
|
||||||
@brief Function to get the current value of the item
|
|
||||||
@return The current value
|
|
||||||
*/
|
|
||||||
/**************************************************************************/
|
|
||||||
const char* WiFiConnectParam::getValue() {
|
const char* WiFiConnectParam::getValue() {
|
||||||
return _value;
|
return _value;
|
||||||
}
|
}
|
||||||
/**************************************************************************/
|
|
||||||
/*!
|
|
||||||
@brief Function to get the current id of the item
|
|
||||||
@return The current id
|
|
||||||
*/
|
|
||||||
/**************************************************************************/
|
|
||||||
const char* WiFiConnectParam::getID() {
|
const char* WiFiConnectParam::getID() {
|
||||||
return _id;
|
return _id;
|
||||||
}
|
}
|
||||||
/**************************************************************************/
|
|
||||||
/*!
|
|
||||||
@brief Function to get the current placeholder text of the item
|
|
||||||
@return The current placeholder text
|
|
||||||
*/
|
|
||||||
/**************************************************************************/
|
|
||||||
const char* WiFiConnectParam::getPlaceholder() {
|
const char* WiFiConnectParam::getPlaceholder() {
|
||||||
return _placeholder;
|
return _placeholder;
|
||||||
}
|
}
|
||||||
/**************************************************************************/
|
|
||||||
/*!
|
|
||||||
@brief Function to get the maximum length allowed for the value of the item
|
|
||||||
@return The current maximum value length
|
|
||||||
*/
|
|
||||||
/**************************************************************************/
|
|
||||||
int WiFiConnectParam::getValueLength() {
|
int WiFiConnectParam::getValueLength() {
|
||||||
return _length;
|
return _length;
|
||||||
}
|
}
|
||||||
/**************************************************************************/
|
|
||||||
/*!
|
|
||||||
@brief Function to get the current custom html markup of the item
|
|
||||||
@return The current custom html markup
|
|
||||||
*/
|
|
||||||
/**************************************************************************/
|
|
||||||
const char* WiFiConnectParam::getCustomHTML() {
|
const char* WiFiConnectParam::getCustomHTML() {
|
||||||
return _customHTML;
|
return _customHTML;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,46 +1,11 @@
|
|||||||
/*!
|
#pragma once
|
||||||
@file WiFiConnectParam.h
|
|
||||||
|
|
||||||
WiFi Connection Manager with Captive Portal
|
|
||||||
|
|
||||||
Introduction
|
|
||||||
|
|
||||||
This is the documentation for WiFiConnect for the Arduino platform.
|
|
||||||
It is a WiFi connection manager for use with the popular ESP8266 and ESP32 chips.
|
|
||||||
It contains a captive portal to allow easy connection and changing of WiFi netwoks
|
|
||||||
via a web based interface and allows for additional user parameters.
|
|
||||||
It can also display messages via a OLED screen see WiFiConnectOLED class.
|
|
||||||
|
|
||||||
This is a heavily customised version from the original <a href="https://github.com/tzapu/WiFiManager">WiFiManager</a>
|
|
||||||
developed by https://github.com/tzapu .
|
|
||||||
|
|
||||||
Dependencies
|
|
||||||
|
|
||||||
This library depends on <a href="https://github.com/esp8266/Arduino">
|
|
||||||
ESP8266 Arduino Core</a> and <a href="https://github.com/espressif/arduino-esp32">ESP32 Arduino Core</a> being present on your system.
|
|
||||||
Please make sure you have installed the latest version before using this library.
|
|
||||||
|
|
||||||
|
|
||||||
Written by Stuart Blair.
|
|
||||||
|
|
||||||
License
|
|
||||||
|
|
||||||
GNU General Public License v3.0 licence, all text here must be included in any redistribution and you should receive a copy of the license file.
|
|
||||||
|
|
||||||
*/
|
|
||||||
#ifndef WIFI_CONNECT_PARAM
|
|
||||||
#define WIFI_CONNECT_PARAM
|
|
||||||
|
|
||||||
#ifndef WiFiConnect_MAX_PARAMS
|
#ifndef WiFiConnect_MAX_PARAMS
|
||||||
#define WiFiConnect_MAX_PARAMS 10 ///< The maximum size of the param array and how many custom parameters we may have
|
#define WiFiConnect_MAX_PARAMS 10 ///< The maximum size of the param array and how many custom parameters we may have
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <Arduino.h>
|
#include <Arduino.h>
|
||||||
/**************************************************************************/
|
|
||||||
/*!
|
|
||||||
@brief Class that stores a custom parameter
|
|
||||||
*/
|
|
||||||
/**************************************************************************/
|
|
||||||
class WiFiConnectParam {
|
class WiFiConnectParam {
|
||||||
public:
|
public:
|
||||||
WiFiConnectParam(const char *custom);
|
WiFiConnectParam(const char *custom);
|
||||||
@@ -50,19 +15,17 @@ class WiFiConnectParam {
|
|||||||
const char *getID();
|
const char *getID();
|
||||||
const char *getValue();
|
const char *getValue();
|
||||||
const char *getPlaceholder();
|
const char *getPlaceholder();
|
||||||
int getValueLength();
|
int getValueLength();
|
||||||
const char *getCustomHTML();
|
const char *getCustomHTML();
|
||||||
void setValue(const char *newValue);
|
void setValue(const char *newValue);
|
||||||
private:
|
private:
|
||||||
const char *_id;
|
const char *_id;
|
||||||
const char *_placeholder;
|
const char *_placeholder;
|
||||||
char *_value;
|
char *_value;
|
||||||
int _length;
|
int _length;
|
||||||
const char *_customHTML;
|
const char *_customHTML;
|
||||||
|
|
||||||
void init(const char *id, const char *placeholder, const char *defaultValue, int length, const char *custom);
|
void init(const char *id, const char *placeholder, const char *defaultValue, int length, const char *custom);
|
||||||
|
|
||||||
friend class WiFiConnect; ///< Declarion for WiFiConnect class
|
friend class WiFiConnect; ///< Declarion for WiFiConnect class
|
||||||
|
|
||||||
};
|
};
|
||||||
#endif
|
|
||||||
|
|||||||
+1
-1
@@ -50,7 +50,7 @@ void NTPupdate() {
|
|||||||
time_t currentTime = getNtpTime();
|
time_t currentTime = getNtpTime();
|
||||||
|
|
||||||
if (currentTime) {
|
if (currentTime) {
|
||||||
set_time(currentTime);
|
set_time(currentTime, Timezone);
|
||||||
rtcset = true;
|
rtcset = true;
|
||||||
NTPupdated = true;
|
NTPupdated = true;
|
||||||
radio.rds.ctupdate = false;
|
radio.rds.ctupdate = false;
|
||||||
|
|||||||
+1
-1
@@ -1270,7 +1270,7 @@ void TEF6686::readRDS(byte showrdserrors) {
|
|||||||
rds.offset = timeoffset;
|
rds.offset = timeoffset;
|
||||||
rtcset = true;
|
rtcset = true;
|
||||||
|
|
||||||
if (!NTPupdated) set_time(rdstime + timeoffset);
|
if (!NTPupdated) set_time(rdstime, timeoffset);
|
||||||
} else rds.hasCT = false;
|
} else rds.hasCT = false;
|
||||||
lastrdstime = rdstime;
|
lastrdstime = rdstime;
|
||||||
lasttimeoffset = timeoffset;
|
lasttimeoffset = timeoffset;
|
||||||
|
|||||||
+16
-2
@@ -967,7 +967,7 @@ void total_pc_control() {
|
|||||||
if(len < 3 + datalen + 1) break; // Validate buffer size
|
if(len < 3 + datalen + 1) break; // Validate buffer size
|
||||||
|
|
||||||
Wire.beginTransmission(addr);
|
Wire.beginTransmission(addr);
|
||||||
Wire.write(data + 3, len - 3);
|
Wire.write(data + 3, datalen);
|
||||||
auto out = Wire.endTransmission(false);
|
auto out = Wire.endTransmission(false);
|
||||||
|
|
||||||
uint8_t recvlen = Wire.requestFrom(addr, data[3+datalen]);
|
uint8_t recvlen = Wire.requestFrom(addr, data[3+datalen]);
|
||||||
@@ -987,7 +987,7 @@ void total_pc_control() {
|
|||||||
case 4: { // Version
|
case 4: { // Version
|
||||||
Serial.write(2);
|
Serial.write(2);
|
||||||
Serial.write(4);
|
Serial.write(4);
|
||||||
Serial.write(1);
|
Serial.write(2);
|
||||||
} break;
|
} break;
|
||||||
case 5: { // Reboot
|
case 5: { // Reboot
|
||||||
Serial.write(1);
|
Serial.write(1);
|
||||||
@@ -1006,6 +1006,20 @@ void total_pc_control() {
|
|||||||
Serial.flush();
|
Serial.flush();
|
||||||
Serial.updateBaudRate(clock);
|
Serial.updateBaudRate(clock);
|
||||||
} break;
|
} break;
|
||||||
|
case 7: { // Write to EEPROM
|
||||||
|
if(len < 4) break;
|
||||||
|
EEPROM.writeBytes((data[1] << 8) | data[2], data + 3, len - 3);
|
||||||
|
EEPROM.commit();
|
||||||
|
Serial.write(1);
|
||||||
|
Serial.write(7);
|
||||||
|
} break;
|
||||||
|
case 8: { // Read from EEPROM
|
||||||
|
if(len < 4) break;
|
||||||
|
auto address = (data[1] << 8) | data[2];
|
||||||
|
Serial.write(data[3] + 1);
|
||||||
|
Serial.write(8);
|
||||||
|
for(uint16_t i = 0; i < data[3]; i++) Serial.write(EEPROM.read(address + i));
|
||||||
|
} break;
|
||||||
case 0xff: { // Another wake command
|
case 0xff: { // Another wake command
|
||||||
Serial.write(1);
|
Serial.write(1);
|
||||||
Serial.write(0xff);
|
Serial.write(0xff);
|
||||||
|
|||||||
@@ -846,7 +846,6 @@ void endMenu() {
|
|||||||
menuitem = 0;
|
menuitem = 0;
|
||||||
saveData();
|
saveData();
|
||||||
if (af == 2) radio.rds.afreg = true; else radio.rds.afreg = false;
|
if (af == 2) radio.rds.afreg = true; else radio.rds.afreg = false;
|
||||||
Serial.end();
|
|
||||||
if (wifi) remoteip = IPAddress(WiFi.localIP()[0], WiFi.localIP()[1], WiFi.localIP()[2], subnetclient);
|
if (wifi) remoteip = IPAddress(WiFi.localIP()[0], WiFi.localIP()[1], WiFi.localIP()[2], subnetclient);
|
||||||
|
|
||||||
Serial.flush();
|
Serial.flush();
|
||||||
|
|||||||
+1
-1
@@ -217,7 +217,7 @@ int8_t MPold = 0;
|
|||||||
int8_t USold = 0;
|
int8_t USold = 0;
|
||||||
int8_t LevelOffset;
|
int8_t LevelOffset;
|
||||||
int8_t LowLevelSet;
|
int8_t LowLevelSet;
|
||||||
int8_t NTPoffset;
|
int8_t Timezone;
|
||||||
int8_t CN;
|
int8_t CN;
|
||||||
int8_t CNold;
|
int8_t CNold;
|
||||||
RTC_DATA_ATTR int8_t VolSet;
|
RTC_DATA_ATTR int8_t VolSet;
|
||||||
|
|||||||
+9
-9
@@ -1393,7 +1393,7 @@ void ShowOneLine(byte position, byte item, bool selected) {
|
|||||||
|
|
||||||
FullLineSprite.setTextDatum(TR_DATUM);
|
FullLineSprite.setTextDatum(TR_DATUM);
|
||||||
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
|
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
|
||||||
FullLineSprite.drawString((NTPoffset > -1 ? "+" : "") + String(NTPoffset, DEC), 298, 2);
|
FullLineSprite.drawString((Timezone > -1 ? "+" : "") + String(Timezone), 298, 2);
|
||||||
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
|
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
|
||||||
FullLineSprite.drawString("GMT", 258, 2);
|
FullLineSprite.drawString("GMT", 258, 2);
|
||||||
break;
|
break;
|
||||||
@@ -2491,7 +2491,7 @@ void ShowOneButton(byte position, byte item, bool selected) {
|
|||||||
|
|
||||||
PSSprite.setTextDatum(TL_DATUM);
|
PSSprite.setTextDatum(TL_DATUM);
|
||||||
PSSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
|
PSSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
|
||||||
PSSprite.drawString((NTPoffset > -1 ? "+" : "") + String(NTPoffset, DEC), 77, 15);
|
PSSprite.drawString((Timezone > -1 ? "+" : "") + String(Timezone), 77, 15);
|
||||||
PSSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
|
PSSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
|
||||||
PSSprite.setTextDatum(TR_DATUM);
|
PSSprite.setTextDatum(TR_DATUM);
|
||||||
PSSprite.drawString("GMT", 73, 15);
|
PSSprite.drawString("GMT", 73, 15);
|
||||||
@@ -4171,11 +4171,11 @@ void MenuUpDown(bool dir) {
|
|||||||
|
|
||||||
case ITEM7:
|
case ITEM7:
|
||||||
if (dir) {
|
if (dir) {
|
||||||
NTPoffset++;
|
Timezone++;
|
||||||
if (NTPoffset > 12) NTPoffset = -12;
|
if (Timezone > 12) Timezone = -12;
|
||||||
} else {
|
} else {
|
||||||
NTPoffset--;
|
Timezone--;
|
||||||
if (NTPoffset < -12) NTPoffset = 12;
|
if (Timezone < -12) Timezone = 12;
|
||||||
}
|
}
|
||||||
|
|
||||||
OneBigLineSprite.setTextDatum(TR_DATUM);
|
OneBigLineSprite.setTextDatum(TR_DATUM);
|
||||||
@@ -4183,7 +4183,7 @@ void MenuUpDown(bool dir) {
|
|||||||
OneBigLineSprite.drawString("GMT", 135, 0);
|
OneBigLineSprite.drawString("GMT", 135, 0);
|
||||||
OneBigLineSprite.setTextDatum(TL_DATUM);
|
OneBigLineSprite.setTextDatum(TL_DATUM);
|
||||||
OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
|
OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
|
||||||
OneBigLineSprite.drawString((NTPoffset > -1 ? "+" : "") + String(NTPoffset), 155, 0);
|
OneBigLineSprite.drawString((Timezone > -1 ? "+" : "") + String(Timezone), 155, 0);
|
||||||
OneBigLineSprite.pushSprite(24, 118);
|
OneBigLineSprite.pushSprite(24, 118);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -5225,7 +5225,7 @@ void DoMenu() {
|
|||||||
wc.addParameter(&XDRGTK_key_input);
|
wc.addParameter(&XDRGTK_key_input);
|
||||||
setWiFiConnectParam = true;
|
setWiFiConnectParam = true;
|
||||||
}
|
}
|
||||||
wc.startConfigurationPortal(AP_WAIT);
|
wc.startConfigurationPortal();
|
||||||
XDRGTK_key = XDRGTK_key_input.getValue();
|
XDRGTK_key = XDRGTK_key_input.getValue();
|
||||||
EEPROM.writeString(EE_STRING_XDRGTK_KEY, XDRGTK_key);
|
EEPROM.writeString(EE_STRING_XDRGTK_KEY, XDRGTK_key);
|
||||||
EEPROM.commit();
|
EEPROM.commit();
|
||||||
@@ -5269,7 +5269,7 @@ void DoMenu() {
|
|||||||
OneBigLineSprite.drawString("GMT", 135, 0);
|
OneBigLineSprite.drawString("GMT", 135, 0);
|
||||||
OneBigLineSprite.setTextDatum(TL_DATUM);
|
OneBigLineSprite.setTextDatum(TL_DATUM);
|
||||||
OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
|
OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
|
||||||
OneBigLineSprite.drawString((NTPoffset > -1 ? "+" : "") + String(NTPoffset), 155, 0);
|
OneBigLineSprite.drawString((Timezone > -1 ? "+" : "") + String(Timezone), 155, 0);
|
||||||
OneBigLineSprite.pushSprite(24, 118);
|
OneBigLineSprite.pushSprite(24, 118);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -255,14 +255,14 @@ String getCurrentDateTime(bool inUTC) {
|
|||||||
int utcOffsetHours = 0;
|
int utcOffsetHours = 0;
|
||||||
|
|
||||||
if (!inUTC) {
|
if (!inUTC) {
|
||||||
currentEpoch += (NTPupdated ? NTPoffset * 3600 : radio.rds.offset); // Apply GMT offset if NTPupdated, else RDS offset
|
currentEpoch += (NTPupdated ? Timezone * 3600 : radio.rds.offset); // Apply GMT offset if NTPupdated, else RDS offset
|
||||||
|
|
||||||
if (NTPupdated && autoDST) {
|
if (NTPupdated && autoDST) {
|
||||||
struct tm tempTimeInfo;
|
struct tm tempTimeInfo;
|
||||||
localtime_r(¤tEpoch, &tempTimeInfo);
|
localtime_r(¤tEpoch, &tempTimeInfo);
|
||||||
if (isDST(mktime(&tempTimeInfo))) currentEpoch += 3600;
|
if (isDST(mktime(&tempTimeInfo))) currentEpoch += 3600;
|
||||||
}
|
}
|
||||||
} else utcOffsetHours = (NTPupdated ? NTPoffset : radio.rds.offset / 3600);
|
} else utcOffsetHours = (NTPupdated ? Timezone : radio.rds.offset / 3600);
|
||||||
|
|
||||||
localtime_r(¤tEpoch, &timeInfo);
|
localtime_r(¤tEpoch, &timeInfo);
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -118,7 +118,7 @@ void saveData() {
|
|||||||
EEPROM.writeByte(EE_BYTE_MEMPIONLY, mempionly);
|
EEPROM.writeByte(EE_BYTE_MEMPIONLY, mempionly);
|
||||||
EEPROM.writeByte(EE_BYTE_MEMDOUBLEPI, memdoublepi);
|
EEPROM.writeByte(EE_BYTE_MEMDOUBLEPI, memdoublepi);
|
||||||
EEPROM.writeByte(EE_BYTE_WAITONLYONSIGNAL, scanholdonsignal);
|
EEPROM.writeByte(EE_BYTE_WAITONLYONSIGNAL, scanholdonsignal);
|
||||||
EEPROM.writeByte(EE_BYTE_NTPOFFSET, NTPoffset);
|
EEPROM.writeByte(EE_BYTE_TIMEZONE, Timezone);
|
||||||
EEPROM.writeByte(EE_BYTE_AUTOLOG, autolog);
|
EEPROM.writeByte(EE_BYTE_AUTOLOG, autolog);
|
||||||
EEPROM.writeByte(EE_BYTE_AUTODST, autoDST);
|
EEPROM.writeByte(EE_BYTE_AUTODST, autoDST);
|
||||||
EEPROM.writeByte(EE_BYTE_CLOCKAMPM, clockampm);
|
EEPROM.writeByte(EE_BYTE_CLOCKAMPM, clockampm);
|
||||||
@@ -231,7 +231,7 @@ void loadData() {
|
|||||||
TouchCalData[3] = EEPROM.readUInt(EE_UINT16_CALTOUCH4);
|
TouchCalData[3] = EEPROM.readUInt(EE_UINT16_CALTOUCH4);
|
||||||
TouchCalData[4] = EEPROM.readUInt(EE_UINT16_CALTOUCH5);
|
TouchCalData[4] = EEPROM.readUInt(EE_UINT16_CALTOUCH5);
|
||||||
invertdisplay = EEPROM.readByte(EE_BYTE_INVERTDISPLAY);
|
invertdisplay = EEPROM.readByte(EE_BYTE_INVERTDISPLAY);
|
||||||
NTPoffset = EEPROM.readByte(EE_BYTE_NTPOFFSET);
|
Timezone = EEPROM.readByte(EE_BYTE_TIMEZONE);
|
||||||
autolog = EEPROM.readByte(EE_BYTE_AUTOLOG);
|
autolog = EEPROM.readByte(EE_BYTE_AUTOLOG);
|
||||||
autoDST = EEPROM.readByte(EE_BYTE_AUTODST);
|
autoDST = EEPROM.readByte(EE_BYTE_AUTODST);
|
||||||
clockampm = EEPROM.readByte(EE_BYTE_CLOCKAMPM);
|
clockampm = EEPROM.readByte(EE_BYTE_CLOCKAMPM);
|
||||||
@@ -338,7 +338,7 @@ void DefaultSettings() {
|
|||||||
EEPROM.writeUInt(EE_UINT16_CALTOUCH3, 300);
|
EEPROM.writeUInt(EE_UINT16_CALTOUCH3, 300);
|
||||||
EEPROM.writeUInt(EE_UINT16_CALTOUCH4, 3450);
|
EEPROM.writeUInt(EE_UINT16_CALTOUCH4, 3450);
|
||||||
EEPROM.writeUInt(EE_UINT16_CALTOUCH5, 3);
|
EEPROM.writeUInt(EE_UINT16_CALTOUCH5, 3);
|
||||||
EEPROM.writeByte(EE_BYTE_NTPOFFSET, 1);
|
EEPROM.writeByte(EE_BYTE_TIMEZONE, 0);
|
||||||
EEPROM.writeByte(EE_BYTE_AUTOLOG, 1);
|
EEPROM.writeByte(EE_BYTE_AUTOLOG, 1);
|
||||||
EEPROM.writeByte(EE_BYTE_AUTODST, 1);
|
EEPROM.writeByte(EE_BYTE_AUTODST, 1);
|
||||||
EEPROM.writeByte(EE_BYTE_CLOCKAMPM, 0);
|
EEPROM.writeByte(EE_BYTE_CLOCKAMPM, 0);
|
||||||
|
|||||||
+1
-1
@@ -490,8 +490,8 @@ void showCT() {
|
|||||||
char dateStr[9];
|
char dateStr[9];
|
||||||
time_t t = rtc.getEpoch();
|
time_t t = rtc.getEpoch();
|
||||||
|
|
||||||
|
t += Timezone * 3600; // Convert offset from hours to seconds
|
||||||
if (NTPupdated) {
|
if (NTPupdated) {
|
||||||
t += NTPoffset * 3600; // Convert offset from hours to seconds
|
|
||||||
if (autoDST && isDST(t)) t += 3600;
|
if (autoDST && isDST(t)) t += 3600;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+9
-1
@@ -1,4 +1,6 @@
|
|||||||
#include "rtc.hpp"
|
#include "rtc.hpp"
|
||||||
|
#include "globals.h"
|
||||||
|
#include "nonvolatile.h"
|
||||||
|
|
||||||
// the hardware rtc driver was made with the support of Wh1teRabbitHU's implementation
|
// the hardware rtc driver was made with the support of Wh1teRabbitHU's implementation
|
||||||
|
|
||||||
@@ -120,8 +122,14 @@ bool init_rtc() {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_time(time_t time) {
|
void set_time(time_t time, int8_t offset) {
|
||||||
rtc.setTime(time);
|
rtc.setTime(time);
|
||||||
|
if(Timezone != offset) {
|
||||||
|
EEPROM.writeByte(EE_BYTE_TIMEZONE, offset);
|
||||||
|
EEPROM.commit();
|
||||||
|
Timezone = offset;
|
||||||
|
}
|
||||||
|
|
||||||
if(!rx_rtc_avail) return;
|
if(!rx_rtc_avail) return;
|
||||||
struct tm* timeinfo = gmtime(&time);
|
struct tm* timeinfo = gmtime(&time);
|
||||||
writeToModule(0x1F, 64);
|
writeToModule(0x1F, 64);
|
||||||
|
|||||||
Reference in New Issue
Block a user