From 3bddf4dfd1cf54c78d299682e790cde2e4f5bad7 Mon Sep 17 00:00:00 2001 From: Harald Barth Date: Mon, 7 Aug 2023 19:45:45 +0200 Subject: [PATCH 01/11] Make 4.2.69 the 5.0.0 release --- GITHUB_SHA.h | 2 +- version.h | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/GITHUB_SHA.h b/GITHUB_SHA.h index a889ba7..9d4f5f6 100644 --- a/GITHUB_SHA.h +++ b/GITHUB_SHA.h @@ -1 +1 @@ -#define GITHUB_SHA "devel-202308041244Z" +#define GITHUB_SHA "master-202308071744Z" diff --git a/version.h b/version.h index eb2d068..3eafa76 100644 --- a/version.h +++ b/version.h @@ -3,7 +3,8 @@ #include "StringFormatter.h" -#define VERSION "4.2.69" +#define VERSION "5.0.0" +// 5.0.0 - Make 4.2.69 the 5.0.0 release // 4.2.69 - Bugfix: Make work in DC mode // 4.2.68 - Rename track mode OFF to NONE // 4.2.67 - AVR: Pin specific timer register seting From fd58a749ef2ac71b85539b2e9b18fecaa48c5441 Mon Sep 17 00:00:00 2001 From: Harald Barth Date: Mon, 7 Aug 2023 19:45:45 +0200 Subject: [PATCH 02/11] Committing a SHA --- GITHUB_SHA.h | 2 +- version.h | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/GITHUB_SHA.h b/GITHUB_SHA.h index a889ba7..ae005b5 100644 --- a/GITHUB_SHA.h +++ b/GITHUB_SHA.h @@ -1 +1 @@ -#define GITHUB_SHA "devel-202308041244Z" +#define GITHUB_SHA "3bddf4d" diff --git a/version.h b/version.h index eb2d068..3eafa76 100644 --- a/version.h +++ b/version.h @@ -3,7 +3,8 @@ #include "StringFormatter.h" -#define VERSION "4.2.69" +#define VERSION "5.0.0" +// 5.0.0 - Make 4.2.69 the 5.0.0 release // 4.2.69 - Bugfix: Make work in DC mode // 4.2.68 - Rename track mode OFF to NONE // 4.2.67 - AVR: Pin specific timer register seting From 085762e80078e793abb57ae6313ae294631d7f6b Mon Sep 17 00:00:00 2001 From: peteGSX Date: Fri, 18 Aug 2023 18:52:34 +1000 Subject: [PATCH 03/11] Add OPCODE list to DCCEXParser.cpp --- DCCEXParser.cpp | 73 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) diff --git a/DCCEXParser.cpp b/DCCEXParser.cpp index aaf733c..7610d45 100644 --- a/DCCEXParser.cpp +++ b/DCCEXParser.cpp @@ -25,6 +25,79 @@ * You should have received a copy of the GNU General Public License * along with CommandStation. If not, see . */ + +/* +List of single character OPCODEs in use for reference. + +When determining a new OPCODE for a new feature, refer to this list as the source of truth. + +Once a new OPCODE is decided upon, update this list. + + Character, Usage + /, |EX-R| interactive commands + -, Remove from reminder table + =, |TM| configuration + !, Emergency stop + @, Reserved for future use - LCD messages to JMRI + #, Request number of supported cabs/locos; heartbeat + +, WiFi AT commands + ?, Reserved for future use + 0, Track power off + 1, Track power on + a, DCC accessory control + A, + b, Write CV bit on main + B, Write CV bit + c, Request current command + C, + d, + D, Diagnostic commands + e, Erase EEPROM + E, Store configuration in EEPROM + f, Loco decoder function control (deprecated) + F, Loco decoder function control + g, + G, + h, + H, Turnout state broadcast + i, Reserved for future use - Turntable object broadcast + I, Reserved for future use - Turntable object command and control + j, Throttle responses + J, Throttle queries + k, Reserved for future use - Potentially Railcom + K, Reserved for future use - Potentially Railcom + l, Loco speedbyte/function map broadcast + L, + m, + M, Write DCC packet + n, + N, + o, + O, Output broadcast + p, Broadcast power state + P, Write DCC packet + q, Sensor deactivated + Q, Sensor activated + r, Broadcast address read on programming track + R, Read CVs + s, Display status + S, Sensor configuration + t, Cab/loco update command + T, Turnout configuration/control + u, Reserved for user commands + U, Reserved for user commands + v, + V, Verify CVs + w, Write CV on main + W, Write CV + x, + X, Invalid command + y, + Y, Output broadcast + z, + Z, Output configuration/control +*/ + #include "StringFormatter.h" #include "DCCEXParser.h" #include "DCC.h" From 6cd7002e911f3bd09421e4570a7fc6129bc8a193 Mon Sep 17 00:00:00 2001 From: Harald Barth Date: Thu, 24 Aug 2023 10:03:29 +0200 Subject: [PATCH 04/11] Bugfix: execute 30ms off time before rejoin --- DCCACK.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DCCACK.cpp b/DCCACK.cpp index 1b339ee..8a074b4 100644 --- a/DCCACK.cpp +++ b/DCCACK.cpp @@ -351,7 +351,7 @@ void DCCACK::callback(int value) { switch (callbackState) { case AFTER_READ: - if (ackManagerRejoin && autoPowerOff) { + if (ackManagerRejoin && !autoPowerOff) { progDriver->setPower(POWERMODE::OFF); callbackStart=millis(); callbackState=WAITING_30; From 42f3c7c12836a545bc6ca7e6e3577e9d9fa31b2f Mon Sep 17 00:00:00 2001 From: Harald Barth Date: Thu, 24 Aug 2023 10:05:31 +0200 Subject: [PATCH 05/11] version number update --- version.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/version.h b/version.h index 3eafa76..a6e05ac 100644 --- a/version.h +++ b/version.h @@ -3,7 +3,8 @@ #include "StringFormatter.h" -#define VERSION "5.0.0" +#define VERSION "5.0.1" +// 5.0.1 - Bugfix: execute 30ms off time before rejoin // 5.0.0 - Make 4.2.69 the 5.0.0 release // 4.2.69 - Bugfix: Make work in DC mode // 4.2.68 - Rename track mode OFF to NONE From 210d96a3e37c75ef50f59ab0f0bab1abd7746124 Mon Sep 17 00:00:00 2001 From: Harald Barth Date: Fri, 25 Aug 2023 19:07:57 +0200 Subject: [PATCH 06/11] Bugfix: ESP32 30ms off time --- TrackManager.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/TrackManager.cpp b/TrackManager.cpp index 0f69235..91c78ea 100644 --- a/TrackManager.cpp +++ b/TrackManager.cpp @@ -53,7 +53,7 @@ bool TrackManager::progTrackSyncMain=false; bool TrackManager::progTrackBoosted=false; int16_t TrackManager::joinRelay=UNUSED_PIN; #ifdef ARDUINO_ARCH_ESP32 -byte TrackManager::tempProgTrack=MAX_TRACKS+1; +byte TrackManager::tempProgTrack=MAX_TRACKS+1; // MAX_TRACKS+1 is the unused flag #endif #ifdef ANALOG_READ_INTERRUPT @@ -505,7 +505,12 @@ void TrackManager::setJoin(bool joined) { } } else { if (tempProgTrack != MAX_TRACKS+1) { + // as setTrackMode with TRACK_MODE_PROG defaults to + // power off, we will take the current power state + // of our track and then preserve that state. + POWERMODE tPTmode = track[tempProgTrack]->getPower(); //get current power status of this track setTrackMode(tempProgTrack, TRACK_MODE_PROG); + track[tempProgTrack]->setPower(tPTmode); //set track status as it was before tempProgTrack = MAX_TRACKS+1; } } From c55fa9f9d29f29968db96e45c21fef6e6c9c04fc Mon Sep 17 00:00:00 2001 From: Harald Barth Date: Fri, 25 Aug 2023 19:08:58 +0200 Subject: [PATCH 07/11] version number update --- version.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/version.h b/version.h index a6e05ac..d52902a 100644 --- a/version.h +++ b/version.h @@ -3,7 +3,8 @@ #include "StringFormatter.h" -#define VERSION "5.0.1" +#define VERSION "5.0.2" +// 5.0.2 - Bugfix: ESP32 30ms off time // 5.0.1 - Bugfix: execute 30ms off time before rejoin // 5.0.0 - Make 4.2.69 the 5.0.0 release // 4.2.69 - Bugfix: Make work in DC mode From b3cafd126e51f2fe954a031fa54dc36fb5c19089 Mon Sep 17 00:00:00 2001 From: Harald Barth Date: Wed, 30 Aug 2023 23:26:20 +0200 Subject: [PATCH 08/11] sample file corrections --- myHal.cpp_example.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/myHal.cpp_example.txt b/myHal.cpp_example.txt index d93ea5c..5533554 100644 --- a/myHal.cpp_example.txt +++ b/myHal.cpp_example.txt @@ -24,6 +24,7 @@ //#include "IO_TouchKeypad.h // Touch keypad with 16 keys //#include "IO_EXTurntable.h" // Turntable-EX turntable controller //#include "IO_EXFastClock.h" // FastClock driver +//#include "IO_PCA9555.h" // 16-bit I/O expander (NXP & Texas Instruments). //========================================================================== // The function halSetup() is invoked from CS if it exists within the build. @@ -51,7 +52,7 @@ void halSetup() { // Create a 20x4 LCD display device as display number 2 // (line 0 is written by EX-RAIL 'SCREEN(2, 0, "text")'). - // HALDisplay(2, 0x27, 20, 4); + // HALDisplay::create(2, 0x27, 20, 4); //======================================================================= From 46289fa78cc1db6dd02b52da36a405aa662ef2a9 Mon Sep 17 00:00:00 2001 From: Harald Barth Date: Fri, 11 Aug 2023 00:07:02 +0200 Subject: [PATCH 09/11] Check bad AT firmware version --- WifiInterface.cpp | 16 +++++++++++++++- version.h | 3 ++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/WifiInterface.cpp b/WifiInterface.cpp index 7511af6..ab36957 100644 --- a/WifiInterface.cpp +++ b/WifiInterface.cpp @@ -200,7 +200,21 @@ wifiSerialState WifiInterface::setup2(const FSH* SSid, const FSH* password, // Display the AT version information StringFormatter::send(wifiStream, F("AT+GMR\r\n")); - checkForOK(2000, true, false); // Makes this visible on the console + if (checkForOK(2000, F("AT version:"), true, false)) { + char version[] = "0.0.0.0"; + for (int i=0; i<8;i++) { + while(!wifiStream->available()); + version[i]=wifiStream->read(); + StringFormatter::printEscape(version[i]); + if ((version[0] == '0') || + (version[0] == '2' && version[2] == '0') || + (version[0] == '2' && version[2] == '2' && version[4] == '0' && version[6] == '0')) { + SSid = F("DCCEX_SAYS_BROKEN_FIRMWARE"); + forceAP = true; + } + } + } + checkForOK(2000, true, false); #ifdef DONT_TOUCH_WIFI_CONF DIAG(F("DONT_TOUCH_WIFI_CONF was set: Using existing config")); diff --git a/version.h b/version.h index d52902a..a76aef2 100644 --- a/version.h +++ b/version.h @@ -3,7 +3,8 @@ #include "StringFormatter.h" -#define VERSION "5.0.2" +#define VERSION "5.0.3" +// 5.0.3 - Check bad AT firmware version // 5.0.2 - Bugfix: ESP32 30ms off time // 5.0.1 - Bugfix: execute 30ms off time before rejoin // 5.0.0 - Make 4.2.69 the 5.0.0 release From 9333beda4941b739d50bc47d5ec22390a77b1fa6 Mon Sep 17 00:00:00 2001 From: Harald Barth Date: Sun, 24 Sep 2023 20:54:17 +0200 Subject: [PATCH 10/11] correct return when requesting D RAM --- DCCEXParser.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DCCEXParser.cpp b/DCCEXParser.cpp index 7610d45..fe21549 100644 --- a/DCCEXParser.cpp +++ b/DCCEXParser.cpp @@ -985,7 +985,7 @@ bool DCCEXParser::parseD(Print *stream, int16_t params, int16_t p[]) case HASH_KEYWORD_RAM: // StringFormatter::send(stream, F("Free memory=%d\n"), DCCTimer::getMinimumFreeMemory()); - break; + return true; #ifndef DISABLE_PROG case HASH_KEYWORD_ACK: // From bef4b2ec35063a85bc9603d3952e67e6eba1577c Mon Sep 17 00:00:00 2001 From: Asbelos Date: Mon, 9 Oct 2023 18:09:48 +0100 Subject: [PATCH 11/11] fix default roster --- DCCEXParser.cpp | 2 +- version.h | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/DCCEXParser.cpp b/DCCEXParser.cpp index fe21549..7b4836e 100644 --- a/DCCEXParser.cpp +++ b/DCCEXParser.cpp @@ -121,7 +121,7 @@ Once a new OPCODE is decided upon, update this list. for (int16_t i=0;;i+=sizeof(flashList[0])) { \ int16_t value=GETHIGHFLASHW(flashList,i); \ if (value==INT16_MAX) break; \ - if (value != 0) StringFormatter::send(stream,F(" %d"),value); \ + StringFormatter::send(stream,F(" %d"),value); \ } diff --git a/version.h b/version.h index a76aef2..1610054 100644 --- a/version.h +++ b/version.h @@ -3,7 +3,8 @@ #include "StringFormatter.h" -#define VERSION "5.0.3" +#define VERSION "5.0.4" +// 5.0.4 - Bugfix: misses default roster. // 5.0.3 - Check bad AT firmware version // 5.0.2 - Bugfix: ESP32 30ms off time // 5.0.1 - Bugfix: execute 30ms off time before rejoin