From d12714d51e531c0fda8cd6d12a4457c45b964506 Mon Sep 17 00:00:00 2001 From: Fred Date: Tue, 20 Apr 2021 09:31:17 -0400 Subject: [PATCH 01/62] Update config.example.h Fix spelling of contain --- config.example.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config.example.h b/config.example.h index b4751b5..396d3dd 100644 --- a/config.example.h +++ b/config.example.h @@ -60,7 +60,7 @@ The configuration file for DCC-EX Command Station // is set (recommended), that password will be used for AP mode. // The AP mode password must be at least 8 characters long. // -// Your SSID may not conain ``"'' (double quote, ASCII 0x22). +// Your SSID may not contain ``"'' (double quote, ASCII 0x22). #define WIFI_SSID "Your network name" // // WIFI_PASSWORD is the network password for your home network or if From c27aa3a2d27d17198baa67dc93625a5cace6dc3e Mon Sep 17 00:00:00 2001 From: Fred Date: Tue, 20 Apr 2021 13:31:38 +0000 Subject: [PATCH 02/62] Committing a SHA --- GITHUB_SHA.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GITHUB_SHA.h b/GITHUB_SHA.h index f140b30..b7ca85d 100644 --- a/GITHUB_SHA.h +++ b/GITHUB_SHA.h @@ -1 +1 @@ -#define GITHUB_SHA "c4f45dd" +#define GITHUB_SHA "d12714d" From 6a5a8acd1786b44fe300cbf563507330b96e0bd8 Mon Sep 17 00:00:00 2001 From: LarryD <56610826+ldribin@users.noreply.github.com> Date: Tue, 27 Apr 2021 09:23:25 -0500 Subject: [PATCH 03/62] Add Release Notes Folder to CommandStationEX Repo and Release_Notes_v3.10.0.md file --- Release_Notes/Release_Notes_v3.10.0.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Release_Notes/Release_Notes_v3.10.0.md diff --git a/Release_Notes/Release_Notes_v3.10.0.md b/Release_Notes/Release_Notes_v3.10.0.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Release_Notes/Release_Notes_v3.10.0.md @@ -0,0 +1 @@ + From 5d0da81377c2ff5942457ddf65f62a226a65fe5b Mon Sep 17 00:00:00 2001 From: LarryD <56610826+ldribin@users.noreply.github.com> Date: Tue, 27 Apr 2021 14:23:45 +0000 Subject: [PATCH 04/62] Committing a SHA --- GITHUB_SHA.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GITHUB_SHA.h b/GITHUB_SHA.h index b7ca85d..63cbbf6 100644 --- a/GITHUB_SHA.h +++ b/GITHUB_SHA.h @@ -1 +1 @@ -#define GITHUB_SHA "d12714d" +#define GITHUB_SHA "6a5a8ac" From 3954e058c77a89f9844d56f7f565da13ce38f82f Mon Sep 17 00:00:00 2001 From: LarryD <56610826+ldribin@users.noreply.github.com> Date: Tue, 27 Apr 2021 09:26:03 -0500 Subject: [PATCH 05/62] Create initial version of Release_Notes_v3.1.0 --- Release_Notes/Release_Notes_v3.1.0.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Release_Notes/Release_Notes_v3.1.0.md diff --git a/Release_Notes/Release_Notes_v3.1.0.md b/Release_Notes/Release_Notes_v3.1.0.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Release_Notes/Release_Notes_v3.1.0.md @@ -0,0 +1 @@ + From dc200aab752c7fb931293bc4825de38bf7ff2143 Mon Sep 17 00:00:00 2001 From: LarryD <56610826+ldribin@users.noreply.github.com> Date: Tue, 27 Apr 2021 14:26:21 +0000 Subject: [PATCH 06/62] Committing a SHA --- GITHUB_SHA.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GITHUB_SHA.h b/GITHUB_SHA.h index 63cbbf6..0e452cf 100644 --- a/GITHUB_SHA.h +++ b/GITHUB_SHA.h @@ -1 +1 @@ -#define GITHUB_SHA "6a5a8ac" +#define GITHUB_SHA "3954e05" From 48524b11755b973d411214999ca19564f481fe0f Mon Sep 17 00:00:00 2001 From: LarryD <56610826+ldribin@users.noreply.github.com> Date: Tue, 27 Apr 2021 09:27:41 -0500 Subject: [PATCH 07/62] Create initial draft of Release_Notes_v3.0.0.md Will populate later from GitHub Release section for historical purposes. --- Release_Notes/Release_Notes_v3.0.0.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Release_Notes/Release_Notes_v3.0.0.md diff --git a/Release_Notes/Release_Notes_v3.0.0.md b/Release_Notes/Release_Notes_v3.0.0.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Release_Notes/Release_Notes_v3.0.0.md @@ -0,0 +1 @@ + From 51491ac1e0075440a38ed2f19cc48bfec4dd9443 Mon Sep 17 00:00:00 2001 From: LarryD <56610826+ldribin@users.noreply.github.com> Date: Tue, 27 Apr 2021 14:28:06 +0000 Subject: [PATCH 08/62] Committing a SHA --- GITHUB_SHA.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GITHUB_SHA.h b/GITHUB_SHA.h index 0e452cf..d6699e5 100644 --- a/GITHUB_SHA.h +++ b/GITHUB_SHA.h @@ -1 +1 @@ -#define GITHUB_SHA "3954e05" +#define GITHUB_SHA "48524b1" From e866fd1bd754d94ea97d3b858943b20008c944b4 Mon Sep 17 00:00:00 2001 From: LarryD <56610826+ldribin@users.noreply.github.com> Date: Tue, 27 Apr 2021 09:30:10 -0500 Subject: [PATCH 09/62] Delete Release_Notes_v3.10.0.md Delete Release_Notes file with accidental wrong version v3.10.0. --- Release_Notes/Release_Notes_v3.10.0.md | 1 - 1 file changed, 1 deletion(-) delete mode 100644 Release_Notes/Release_Notes_v3.10.0.md diff --git a/Release_Notes/Release_Notes_v3.10.0.md b/Release_Notes/Release_Notes_v3.10.0.md deleted file mode 100644 index 8b13789..0000000 --- a/Release_Notes/Release_Notes_v3.10.0.md +++ /dev/null @@ -1 +0,0 @@ - From 9ef0189ae83b3ff8fb2af0429f7d4e8bc3761791 Mon Sep 17 00:00:00 2001 From: LarryD <56610826+ldribin@users.noreply.github.com> Date: Tue, 27 Apr 2021 14:30:28 +0000 Subject: [PATCH 10/62] Committing a SHA --- GITHUB_SHA.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GITHUB_SHA.h b/GITHUB_SHA.h index d6699e5..8a316b7 100644 --- a/GITHUB_SHA.h +++ b/GITHUB_SHA.h @@ -1 +1 @@ -#define GITHUB_SHA "48524b1" +#define GITHUB_SHA "e866fd1" From 4756e767cf7d0073d8b51d9aae9805d646dbab7b Mon Sep 17 00:00:00 2001 From: LarryD <56610826+ldribin@users.noreply.github.com> Date: Tue, 27 Apr 2021 09:35:16 -0500 Subject: [PATCH 11/62] Add Release Note text to .md file for historical purposes --- Release_Notes/Release_Notes_v3.0.0.md | 84 +++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) diff --git a/Release_Notes/Release_Notes_v3.0.0.md b/Release_Notes/Release_Notes_v3.0.0.md index 8b13789..81d2968 100644 --- a/Release_Notes/Release_Notes_v3.0.0.md +++ b/Release_Notes/Release_Notes_v3.0.0.md @@ -1 +1,85 @@ + +The DCC-EX Team is pleased to release CommandStation-EX-v3.0.0 as a Production Release. This release is a major re-write of earlier versions. We've re-architected the code-base so that it can better handle new features going forward. Download the compressed files here: + +**Downloads (zip and tar.gz) below. These are named without version number in the folder name to make the Arduino IDE happy.** + +[CommandStation-EX.zip](https://github.com/DCC-EX/CommandStation-EX/files/5611333/CommandStation-EX.zip) +[CommandStation-EX.tar.gz](https://github.com/DCC-EX/CommandStation-EX/files/5611335/CommandStation-EX.tar.gz) + + +**Known Bugs:** + - **Consisting through JMRI** - currently does not work in this release. A number of testers were able to develop a work around. If interested enter a Support Ticket. + - **Wi-Fi** - works, but can be challenging to use if you want to switch between AP mode and STA station mode. + - **Pololu Motor Shield** - is supported with this release, but the user may have to play around with some timings to enable programming mode due to limitation in its current sensing circuitry + + **Summary of the key new features added to CommandStation-EX V3.0.0:** + - **WiFi Support** - AP and station modes supported. Auto-detection of an ESP8266 WiFi module with AT firmware on a Mega's serial port. Connection to JMRI and WiThrottle clients. + - **Withrottle Integrations** - Act as a host for four WiThrottle clients concurrently. + - **Add LCD/OLED support** - OLED supported on Mega only + - **Improved CV programming routines** - checks for length of CV pulse, and breaks out of the wait state once it has received an ACK, now reading one CV per second. + - **Improved current sensing** - rewrote current sensing routines for safer operation. Current thresholds based on milliamps, not magic numbers + - **Individual track power control** - Ability to toggle power on either or both tracks, and to "JOIN" the tracks and make them output the same waveform for multiple power districts. + - **Single or Dual-Pin PWM output** - Allows control of H-bridges with PH/EN or dual PWM inputs + - **New, simpler function command** - `````` command allows setting functions based on their number, not based on a code as in `````` + - **Function reminders** - Function reminders are sent in addition to speed reminders + - **Functions to F28** - All NMRA functions are now supported + - **Filters and user functions** - Ability to filter commands in the parser and execute custom code based on them + - **Diagnostic `````` commands** - See documentation for a full list of new diagnostic commands + - **Rewrote DCC++ Parser** - more efficient operation, accepts multi-char input and uses less RAM + - **Rewritten waveform generator** - capable of using any pin for DCC waveform out, eliminating the need for jumpers + - **Rewritten packet generator** - Simplify and make smaller, remove idea of "registers" from original code + - **Add free RAM messages** - Free RAM messages are now printed whenever there is a decerase in available RAM + - **Fix EEPROM bugs** + - **Number of locos discovery command** - ```<#>``` command + - **Support for more locomotives** - 20 locomotives on an UNO and 50 an a Mega. + - **Automatic slot managment** - slot variable in throttle/function commands are ignored and slot management is taken care of automatically. `````` command added to release locos from memory. + + +**Key Contributors** + +**Project Lead** +- Fred Decker - Holly Springs, North Carolina, USA (FlightRisk) + +**CommandStation-EX Developers** +- Chris Harlow - Bournemouth, UK (UKBloke) +- Harald Barth - Stockholm, Sweden (Haba) +- Fred Decker - Holly Springs, North Carolina, USA (FlightRisk) +- Dave Cutting - Logan, Utah, USA (Dave Cutting/ David Cutting) +- M Steve Todd - - Engine Driver and JMRI Interface +- Scott Catalanno - Pennsylvania +- Gregor Baues - Île-de-France, France (grbba) + +**exInstaller Software** +- Anthony W - Dayton, Ohio, USA (Dex, Dex++) + +**Website and Documentation** +- Mani Kumar - Bangalor, India (Mani / Mani Kumar) +- Fred Decker - Holly Springs, North Carolina, USA (FlightRisk) +- Dave Cutting - Logan, Utah, USA (Dave Cutting/ David Cutting) +- Roger Beschizza - Dorset, UK (Roger Beschizza) +- Keith Ledbetter - Chicago, Illinois, USA (Keith Ledbetter) +-Kevin Smith - (KCSmith) + +**Beta Testing / Release Management / Support** +- Larry Dribin - Release Management +- Keith Ledbetter +- BradVan der Elst +- Andrew Pye +- Mike Bowers +- Randy McKenzie +- Roberto Bravin +- Sim Brigden +- Alan Lautenslager +- Martin Bafver +- Mário André Silva +- Anthony Kochevar +- Gajanatha Kobbekaduwe +- Sumner Patterson +- Paul - Virginia, USA + +**Downloads (zip and tar.gz) below. These are named without version number in the folder name to make the Arduino IDE happy.** + +[CommandStation-EX.zip](https://github.com/DCC-EX/CommandStation-EX/files/5611333/CommandStation-EX.zip) +[CommandStation-EX.tar.gz](https://github.com/DCC-EX/CommandStation-EX/files/5611335/CommandStation-EX.tar.gz) + From b541614a19335a94db2694d15ce17d2f715cbce5 Mon Sep 17 00:00:00 2001 From: LarryD <56610826+ldribin@users.noreply.github.com> Date: Tue, 27 Apr 2021 14:35:32 +0000 Subject: [PATCH 12/62] Committing a SHA --- GITHUB_SHA.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GITHUB_SHA.h b/GITHUB_SHA.h index 8a316b7..04cc19c 100644 --- a/GITHUB_SHA.h +++ b/GITHUB_SHA.h @@ -1 +1 @@ -#define GITHUB_SHA "e866fd1" +#define GITHUB_SHA "4756e76" From 45eb7c80b658687cbbf2796fa876535515fb59c3 Mon Sep 17 00:00:00 2001 From: Fred Date: Tue, 27 Apr 2021 10:37:54 -0400 Subject: [PATCH 13/62] Frightrisk hostname fix (#144) * Fix esp8266 hostname in STA mode by checking for new version of the AT cmd instead of old cmd since some firmware still allows old commands * Add more old firmware checks and set oldCmd earlier * increment version number --- WifiInterface.cpp | 40 ++++++++++++++++++++-------------------- version.h | 4 +++- 2 files changed, 23 insertions(+), 21 deletions(-) diff --git a/WifiInterface.cpp b/WifiInterface.cpp index b53f388..bd7b7f2 100644 --- a/WifiInterface.cpp +++ b/WifiInterface.cpp @@ -171,16 +171,16 @@ wifiSerialState WifiInterface::setup2(const FSH* SSid, const FSH* password, #ifdef DONT_TOUCH_WIFI_CONF DIAG(F("DONT_TOUCH_WIFI_CONF was set: Using existing config")); #else - StringFormatter::send(wifiStream, F("AT+CWMODE=1\r\n")); // configure as "station" = WiFi client - checkForOK(1000, true); // Not always OK, sometimes "no change" - // Older ES versions have AT+CWJAP, newer ones have AT+CWJAP_CUR and AT+CWHOSTNAME - StringFormatter::send(wifiStream, F("AT+CWJAP?\r\n")); - if (checkForOK(2000, true)) { + StringFormatter::send(wifiStream, F("AT+CWJAP_CUR?\r\n")); + if (!(checkForOK(2000, true))) { oldCmd=true; while (wifiStream->available()) StringFormatter::printEscape( wifiStream->read()); /// THIS IS A DIAG IN DISGUISE } + StringFormatter::send(wifiStream, F("AT+CWMODE%s=1\r\n"), oldCmd ? "" : "_CUR"); // configure as "station" = WiFi client + checkForOK(1000, true); // Not always OK, sometimes "no change" + const char *yourNetwork = "Your network "; if (strncmp_P(yourNetwork, (const char*)SSid, 13) == 0 || strncmp_P("", (const char*)SSid, 13) == 0) { if (strncmp_P(yourNetwork, (const char*)password, 13) == 0) { @@ -199,40 +199,40 @@ wifiSerialState WifiInterface::setup2(const FSH* SSid, const FSH* password, } else { // SSID was configured, so we assume station (client) mode. if (oldCmd) { - // AT command early version supports CWJAP/CWSAP - StringFormatter::send(wifiStream, F("AT+CWJAP=\"%S\",\"%S\"\r\n"), SSid, password); - ipOK = checkForOK(WIFI_CONNECT_TIMEOUT, true); + // AT command early version supports CWJAP/CWSAP + StringFormatter::send(wifiStream, F("AT+CWJAP=\"%S\",\"%S\"\r\n"), SSid, password); + ipOK = checkForOK(WIFI_CONNECT_TIMEOUT, true); } else { // later version supports CWJAP_CUR StringFormatter::send(wifiStream, F("AT+CWHOSTNAME=\"%S\"\r\n"), hostname); // Set Host name for Wifi Client - checkForOK(2000, true); // dont care if not supported + checkForOK(2000, true); // dont care if not supported StringFormatter::send(wifiStream, F("AT+CWJAP_CUR=\"%S\",\"%S\"\r\n"), SSid, password); - ipOK = checkForOK(WIFI_CONNECT_TIMEOUT, true); + ipOK = checkForOK(WIFI_CONNECT_TIMEOUT, true); } if (ipOK) { - // But we really only have the ESSID and password correct + // But we really only have the ESSID and password correct // Let's check for IP (via DHCP) ipOK = false; - StringFormatter::send(wifiStream, F("AT+CIFSR\r\n")); - if (checkForOK(5000, F("+CIFSR:STAIP"), true,false)) - if (!checkForOK(1000, F("0.0.0.0"), true,false)) - ipOK = true; + StringFormatter::send(wifiStream, F("AT+CIFSR\r\n")); + if (checkForOK(5000, F("+CIFSR:STAIP"), true,false)) + if (!checkForOK(1000, F("0.0.0.0"), true,false)) + ipOK = true; } } if (!ipOK) { // If we have not managed to get this going in station mode, go for AP mode -// StringFormatter::send(wifiStream, F("AT+RST\r\n")); -// checkForOK(1000, true); // Not always OK, sometimes "no change" + // StringFormatter::send(wifiStream, F("AT+RST\r\n")); + // checkForOK(1000, true); // Not always OK, sometimes "no change" int i=0; do { // configure as AccessPoint. Try really hard as this is the - // last way out to get any Wifi connectivity. - StringFormatter::send(wifiStream, F("AT+CWMODE=2\r\n")); + // last way out to get any Wifi connectivity. + StringFormatter::send(wifiStream, F("AT+CWMODE%s=2\r\n"), oldCmd ? "" : "_CUR"); } while (!checkForOK(1000+i*500, true) && i++<10); while (wifiStream->available()) StringFormatter::printEscape( wifiStream->read()); /// THIS IS A DIAG IN DISGUISE @@ -262,7 +262,7 @@ wifiSerialState WifiInterface::setup2(const FSH* SSid, const FSH* password, oldCmd ? "" : "_CUR", macTail, macTail, channel); } else { // password configured by user - StringFormatter::send(wifiStream, F("AT+CWSAP%s=\"DCCEX_%s\",\"%S\",%d,4\r\n"), oldCmd ? "" : "_CUR", + StringFormatter::send(wifiStream, F("AT+CWSAP%s=\"DCCEX_%s\",\"%S\",%d,4\r\n"), oldCmd ? "" : "_CUR", macTail, password, channel); } } while (!checkForOK(WIFI_CONNECT_TIMEOUT, true) && i++<2); // do twice if necessary but ignore failure as AP mode may still be ok diff --git a/version.h b/version.h index 8ba0551..00acfd2 100644 --- a/version.h +++ b/version.h @@ -3,7 +3,9 @@ #include "StringFormatter.h" -#define VERSION "3.0.11" +#define VERSION "3.0.12" +// 3.0.12 fix esp8266 test for new firmware +// 3.0.11 ? // 3.0.10 Teensy Support // 3.0.9 rearranges serial newlines for the benefit of JMRI. // 3.0.8 Includes <* *> wraps around DIAGs for the benefit of JMRI. From 83e4e4f6ee80c07ef9cff808ef322cea6df65a15 Mon Sep 17 00:00:00 2001 From: Fred Date: Tue, 27 Apr 2021 14:38:18 +0000 Subject: [PATCH 14/62] Committing a SHA --- GITHUB_SHA.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GITHUB_SHA.h b/GITHUB_SHA.h index 04cc19c..ab24e37 100644 --- a/GITHUB_SHA.h +++ b/GITHUB_SHA.h @@ -1 +1 @@ -#define GITHUB_SHA "4756e76" +#define GITHUB_SHA "45eb7c8" From dbe682e5ba7b7018693bcb23e26baebe7c1457a9 Mon Sep 17 00:00:00 2001 From: LarryD <56610826+ldribin@users.noreply.github.com> Date: Tue, 27 Apr 2021 09:38:26 -0500 Subject: [PATCH 15/62] Add Release v3.1.0 draft content --- Release_Notes/Release_Notes_v3.1.0.md | 169 ++++++++++++++++++++++++++ 1 file changed, 169 insertions(+) diff --git a/Release_Notes/Release_Notes_v3.1.0.md b/Release_Notes/Release_Notes_v3.1.0.md index 8b13789..bd17f77 100644 --- a/Release_Notes/Release_Notes_v3.1.0.md +++ b/Release_Notes/Release_Notes_v3.1.0.md @@ -1 +1,170 @@ +DCC-EX Team is pleased to release CommandStation-EX-v3.1.0 as a Production Release. Release v3.1.0 is a minor release that adds additional features and fixes a number of bugs. The team is continually improving the architecture of DCC++EX to make it more flexible and optimizing the code so as to get more perfromance from the Arduino microprocessors. This release includes all of the Point Releases from v3.0.1 to v3.0.12. +- **Wi-Fi** - works, but can be challenging to use if you want to switch between AP mode and STA station mode. +- **Pololu Motor Shield** - is supported with this release, but the user may have to play around with some timings to enable programming mode due to limitation in its current sensing circuitry + +#### Summary of key features and/or bug fixes by Point Release + +**Summary of the key new features added to CommandStation-EX V3.0.12** + +- Fixed clear screen issue for nanoEvery and nanoWifi + +**Summary of the key new features added to CommandStation-EX V3.0.11** + +- Reorganized files for support of 128 speed steps + +**Summary of the key new features added to CommandStation-EX V3.0.10** + +- Includes support for the Arduino Teensy +- No functional change just changes to avoid complier warnings for Teensy/nanoEvery + +**Summary of the key new features added to CommandStation-EX V3.0.9** + +- Rearranges serial newlines for the benefit of JMRI + +**Summary of the key new features added to CommandStation-EX V3.0.8** + +- Wraps <* *> around DIAGS for the benefit of JMRI + +**Summary of the key new features added to CommandStation-EX V3.0.7** + +- Implemented support for older 28 apeed step decoders - Option to turn on 28 step speed decoders in addition to 128. If set, all locos will use 28 steps. +- Improved overload messages with raw values (relative to offset) + +**Summary of the key new features added to CommandStation-EX V3.0.6** + +- Prevent compiler warning about deprecated B constants +- Fix Bug that did not let us transmit 5 byte sized packets - 5 Byte commands like PoM (programming on main) were not being sent correctly +- Support for Huge function numbers (DCC BinaryStateControl) - Support Functions beyond F28 +- ESTOP all - New command to emergency stop all locos on the main track +- <- [cab]> estop and forget cab/all cabs - Stop and remove loco from the CS. Stops the repeating throttle messages +- `` command to reboot Arduino +- Automatic sensor offset detect +- Improved startup msgs from Motor Drivers (accuracy and auto sense factors) +- Drop post-write verify - No need to double check CV writes. Writes are now even faster. +- Allow current sense pin set to UNUSED_PIN - No need to ground an unused analog current pin. Produce startup warning and callback -2 for prog track cmds. + +**Summary of the key new features added to CommandStation-EX V3.0.5** + +- Fix Fn Key startup with loco ID and fix state change for F16-28 +- Removed ethernet mac config and made it automatic +- Show wifi ip and port on lcd +- Auto load config.example.h with warning +- Dropped example .ino files +- Corrected .ino comments +- Pololu fault pin handling +- Waveform speed/simplicity improvements +- Improved pin speed in waveform +- Portability to nanoEvery and UnoWifiRev2 CPUs +- Analog read speed improvements +- Drop need for DIO2 library +- Improved current check code +- Linear command +- Removed need for ArduinoTimers files +- Removed option to choose different timer +- Added EX-RAIL hooks for later +- Fixed Turnout list +- Allow command keywords in mixed case +- Dropped unused memstream +- PWM pin accuracy if requirements met + +**Summary of the key new features added to CommandStation-EX V3.0.4** + +- "Drive-Away" Feature - added so that throttles like Engine Driver can allow a loco to be programmed on a usable, electrically isolated programming track and then drive off onto the main track +- WiFi Startup Fixes + +**Summary of the key new features added to CommandStation-EX V3.0.3** + +- Command to write loco address and clear consist +- Command will allow for consist address +- Startup commands implemented + +**Summary of the key new features added to CommandStation-EX V3.0.2:** + +- Create new output for current in mA for `` command - New current response outputs current in mA, overlimit current, and maximum board capable current +- Simultaneously update JMRI to handle new current meter + +**Summary of the key new features added to CommandStation-EX V3.0.1:** + +- Add back fix for jitter +- Add Turnouts, Outputs and Sensors to `` command output + +**CommandStation-EX V3.0.0:** + +**Release v3.0.0 was a major rewrite if earlier versions of DCC++. The code base was re-architeced and core changes were made to the Waveform generator to reduce overhead and make better use of Arduino.** **Summary of the key new features added in Release v3.0.0 include:** + +- **New USB Browser Based Throttle** - WebThrottle-EX is a full front-end to controller to control the CS to run trains. +- **WiFi Support** - AP and station modes supported. Auto-detection of an ESP8266 WiFi module with AT firmware on a Mega's serial port. Connection to JMRI and WiThrottle clients. +- **Withrottle Integrations** - Act as a host for up to four WiThrottle clients concurrently. +- **Add LCD/OLED support** - OLED supported on Mega only +- **Improved CV programming routines** - checks for length of CV pulse, and breaks out of the wait state once it has received an ACK, now reading one CV per second. +- **Improved current sensing** - rewrote current sensing routines for safer operation. Current thresholds based on milliamps, not magic numbers +- **Individual track power control** - Ability to toggle power on either or both tracks, and to "JOIN" the tracks and make them output the same waveform for multiple power districts. +- **Single or Dual-Pin PWM output** - Allows control of H-bridges with PH/EN or dual PWM inputs +- **New, simpler function command** - `` command allows setting functions based on their number, not based on a code as in `` +- **Function reminders** - Function reminders are sent in addition to speed reminders +- **Functions to F28** - All NMRA functions are now supported +- **Filters and user functions** - Ability to filter commands in the parser and execute custom code based on them. (ex: Redirect Turnout commands via NRF24) +- **Diagnostic `` commands** - See documentation for a full list of new diagnostic commands +- **Rewrote DCC++ Parser** - more efficient operation, accepts multi-char input and uses less RAM +- **Rewritten waveform generator** - capable of using any pin for DCC waveform out, eliminating the need for jumpers +- **Rewritten packet generator** - Simplify and make smaller, remove idea of "registers" from original code +- **Add free RAM messages** - Free RAM messages are now printed whenever there is a decerase in available RAM +- **Fix EEPROM bugs** +- **Number of locos discovery command** - `<#>` command +- **Support for more locomotives** - 20 locomotives on an UNO and 50 an a Mega. +- **Automatic slot managment** - slot variable in throttle/function commands are ignored and slot management is taken care of automatically. `` command added to release locos from memory. + +**Key Contributors** + +**Project Lead** + +- Fred Decker - Holly Springs, North Carolina, USA (FlightRisk) + +**CommandStation-EX Developers** + +- Chris Harlow - Bournemouth, UK (UKBloke) +- Harald Barth - Stockholm, Sweden (Haba) +- Neil McKechnie - Worcestershire, UK (NeilMck) +- Fred Decker - Holly Springs, North Carolina, USA (FlightRisk) +- Dave Cutting - Logan, Utah, USA (Dave Cutting/ David Cutting) +- M Steve Todd - - Engine Driver and JMRI Interface +- Scott Catalanno - Pennsylvania +- Gregor Baues - Île-de-France, France (grbba) + +**exInstaller Software** + +- Anthony W - Dayton, Ohio, USA (Dex, Dex++) + +**Website and Documentation** + +- Mani Kumar - Bangalor, India (Mani / Mani Kumar) +- Fred Decker - Holly Springs, North Carolina, USA (FlightRisk) +- Dave Cutting - Logan, Utah, USA (Dave Cutting/ David Cutting) +- Roger Beschizza - Dorset, UK (Roger Beschizza) +- Keith Ledbetter - Chicago, Illinois, USA (Keith Ledbetter) +- Kevin Smith - (KCSmith) + +**WebThrotle-EX** + +- Fred Decker - Holly Springs, NC (FlightRisk/FrightRisk) +- Mani Kumar - Bangalor, India (Mani /Mani Kumar) +- Matt H - Somewhere in Europe + +**Beta Testing / Release Management / Support** + +- Larry Dribin - Release Management +- Keith Ledbetter +- BradVan der Elst +- Andrew Pye +- Mike Bowers +- Randy McKenzie +- Roberto Bravin +- Sim Brigden +- Alan Lautenslager +- Martin Bafver +- Mário André Silva +- Anthony Kochevar +- Gajanatha Kobbekaduwe +- Sumner Patterson +- Paul - Virginia, USA From 87481209ec396adcaee57666b171485955fce8b3 Mon Sep 17 00:00:00 2001 From: LarryD <56610826+ldribin@users.noreply.github.com> Date: Tue, 27 Apr 2021 14:38:50 +0000 Subject: [PATCH 16/62] Committing a SHA --- GITHUB_SHA.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GITHUB_SHA.h b/GITHUB_SHA.h index ab24e37..97343fd 100644 --- a/GITHUB_SHA.h +++ b/GITHUB_SHA.h @@ -1 +1 @@ -#define GITHUB_SHA "45eb7c8" +#define GITHUB_SHA "dbe682e" From bded5d3588d41bb1727c0ec671c3c1f001de965f Mon Sep 17 00:00:00 2001 From: Asbelos Date: Tue, 27 Apr 2021 15:45:26 +0100 Subject: [PATCH 17/62] 3.0.12 Fix Functions >127 (just a bug) (#146) * Fix Functions >127 * Update version.h * avoid freds fix Co-authored-by: Fred --- DCC.cpp | 10 +++++----- DCC.h | 8 ++++---- version.h | 5 +++-- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/DCC.cpp b/DCC.cpp index 0185ce9..b31d8c9 100644 --- a/DCC.cpp +++ b/DCC.cpp @@ -142,7 +142,7 @@ bool DCC::getThrottleDirection(int cab) { } // Set function to value on or off -void DCC::setFn( int cab, byte functionNumber, bool on) { +void DCC::setFn( int cab, int16_t functionNumber, bool on) { if (cab<=0 ) return; if (functionNumber>28) { @@ -159,7 +159,7 @@ void DCC::setFn( int cab, byte functionNumber, bool on) { else { b[nB++] = 0b11000000; // Binary State Control Instruction long form b[nB++] = (functionNumber & 0x7F) | (on ? 0x80 : 0); // low order bits and state flag - b[nB++] = functionNumber >>8 ; // high order bits + b[nB++] = functionNumber >>7 ; // high order bits } DCCWaveform::mainTrack.schedulePacket(b, nB, 4); return; @@ -183,7 +183,7 @@ void DCC::setFn( int cab, byte functionNumber, bool on) { // Change function according to how button was pressed, // typically in WiThrottle. // Returns new state or -1 if nothing was changed. -int DCC::changeFn( int cab, byte functionNumber, bool pressed) { +int DCC::changeFn( int cab, int16_t functionNumber, bool pressed) { int funcstate = -1; if (cab<=0 || functionNumber>28) return funcstate; int reg = lookupSpeedTable(cab); @@ -213,7 +213,7 @@ int DCC::changeFn( int cab, byte functionNumber, bool pressed) { return funcstate; } -int DCC::getFn( int cab, byte functionNumber) { +int DCC::getFn( int cab, int16_t functionNumber) { if (cab<=0 || functionNumber>28) return -1; // unknown int reg = lookupSpeedTable(cab); if (reg<0) return -1; @@ -224,7 +224,7 @@ int DCC::getFn( int cab, byte functionNumber) { // Set the group flag to say we have touched the particular group. // A group will be reminded only if it has been touched. -void DCC::updateGroupflags(byte & flags, int functionNumber) { +void DCC::updateGroupflags(byte & flags, int16_t functionNumber) { byte groupMask; if (functionNumber<=4) groupMask=FN_GROUP_1; else if (functionNumber<=8) groupMask=FN_GROUP_2; diff --git a/DCC.h b/DCC.h index 0f5c489..3473d6f 100644 --- a/DCC.h +++ b/DCC.h @@ -76,10 +76,10 @@ public: static void writeCVByteMain(int cab, int cv, byte bValue); static void writeCVBitMain(int cab, int cv, byte bNum, bool bValue); static void setFunction(int cab, byte fByte, byte eByte); - static void setFn(int cab, byte functionNumber, bool on); - static int changeFn(int cab, byte functionNumber, bool pressed); - static int getFn(int cab, byte functionNumber); - static void updateGroupflags(byte &flags, int functionNumber); + static void setFn(int cab, int16_t functionNumber, bool on); + static int changeFn(int cab, int16_t functionNumber, bool pressed); + static int getFn(int cab, int16_t functionNumber); + static void updateGroupflags(byte &flags, int16_t functionNumber); static void setAccessory(int aAdd, byte aNum, bool activate); static bool writeTextPacket(byte *b, int nBytes); static void setProgTrackSyncMain(bool on); // when true, prog track becomes driveable diff --git a/version.h b/version.h index 00acfd2..a2388ca 100644 --- a/version.h +++ b/version.h @@ -3,8 +3,9 @@ #include "StringFormatter.h" -#define VERSION "3.0.12" -// 3.0.12 fix esp8266 test for new firmware +#define VERSION "3.0.13" +// 3.0.13 Functions>127 fix +// 3.0.12 Fix HOSTNAME function for STA mode for WiFi // 3.0.11 ? // 3.0.10 Teensy Support // 3.0.9 rearranges serial newlines for the benefit of JMRI. From 1d6e6ec10e8e4898c5b252d03a3b9c39f350faae Mon Sep 17 00:00:00 2001 From: Asbelos Date: Tue, 27 Apr 2021 14:45:45 +0000 Subject: [PATCH 18/62] Committing a SHA --- GITHUB_SHA.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GITHUB_SHA.h b/GITHUB_SHA.h index 97343fd..1860e45 100644 --- a/GITHUB_SHA.h +++ b/GITHUB_SHA.h @@ -1 +1 @@ -#define GITHUB_SHA "dbe682e" +#define GITHUB_SHA "bded5d3" From d9a7eeeef361b8658523d462b05aeb9e2ba4f5ac Mon Sep 17 00:00:00 2001 From: LarryD <56610826+ldribin@users.noreply.github.com> Date: Tue, 27 Apr 2021 10:01:08 -0500 Subject: [PATCH 19/62] Rename file to all lower case --- .../{Release_Notes_v3.1.0.md => release_notes_v3.1.0.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Release_Notes/{Release_Notes_v3.1.0.md => release_notes_v3.1.0.md} (100%) diff --git a/Release_Notes/Release_Notes_v3.1.0.md b/Release_Notes/release_notes_v3.1.0.md similarity index 100% rename from Release_Notes/Release_Notes_v3.1.0.md rename to Release_Notes/release_notes_v3.1.0.md From 9073aadab7b690262748aae326e2a99b1eba730d Mon Sep 17 00:00:00 2001 From: LarryD <56610826+ldribin@users.noreply.github.com> Date: Tue, 27 Apr 2021 15:01:27 +0000 Subject: [PATCH 20/62] Committing a SHA --- GITHUB_SHA.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GITHUB_SHA.h b/GITHUB_SHA.h index 1860e45..ff62e24 100644 --- a/GITHUB_SHA.h +++ b/GITHUB_SHA.h @@ -1 +1 @@ -#define GITHUB_SHA "bded5d3" +#define GITHUB_SHA "d9a7eee" From d721ed5184a23f9342ac8a93257f45bfadb5520d Mon Sep 17 00:00:00 2001 From: LarryD <56610826+ldribin@users.noreply.github.com> Date: Tue, 27 Apr 2021 10:02:02 -0500 Subject: [PATCH 21/62] Rename file to all lower case. --- .../{Release_Notes_v3.0.0.md => release_notes_v3.0.0.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Release_Notes/{Release_Notes_v3.0.0.md => release_notes_v3.0.0.md} (100%) diff --git a/Release_Notes/Release_Notes_v3.0.0.md b/Release_Notes/release_notes_v3.0.0.md similarity index 100% rename from Release_Notes/Release_Notes_v3.0.0.md rename to Release_Notes/release_notes_v3.0.0.md From 9b4c374cd45d5d12c534da559b33781142158e9e Mon Sep 17 00:00:00 2001 From: LarryD <56610826+ldribin@users.noreply.github.com> Date: Tue, 27 Apr 2021 15:02:30 +0000 Subject: [PATCH 22/62] Committing a SHA --- GITHUB_SHA.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GITHUB_SHA.h b/GITHUB_SHA.h index ff62e24..04eb70f 100644 --- a/GITHUB_SHA.h +++ b/GITHUB_SHA.h @@ -1 +1 @@ -#define GITHUB_SHA "d9a7eee" +#define GITHUB_SHA "d721ed5" From 107e9d1d6261aae9297758f2d8f3e802bc286c07 Mon Sep 17 00:00:00 2001 From: Neil McKechnie <75813993+Neil-McK@users.noreply.github.com> Date: Fri, 7 May 2021 00:12:33 +0100 Subject: [PATCH 23/62] Fix turnout handling of EEPROM (#147) On activation, Turnout code was saving entire EEPROM twice, even if EEPROM save was switched off with the command. It's now been changed so that only the tStatus byte is updated, and only if the turnout has previously been saved into EEPROM. --- Turnouts.cpp | 7 +++++-- Turnouts.h | 2 ++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/Turnouts.cpp b/Turnouts.cpp index a5900b4..677e746 100644 --- a/Turnouts.cpp +++ b/Turnouts.cpp @@ -39,7 +39,6 @@ bool Turnout::activate(int n,bool state){ Turnout * tt=get(n); if (tt==NULL) return false; tt->activate(state); - EEStore::store(); turnoutlistHash++; return true; } @@ -68,7 +67,9 @@ void Turnout::activate(bool state) { PWMServoDriver::setServo(data.tStatus & STATUS_PWMPIN, (data.inactiveAngle+(state?data.moveAngle:0))); else DCC::setAccessory(data.address,data.subAddress, state); - EEStore::store(); + // Save state if stored in EEPROM + if (EEStore::eeStore->data.nTurnouts > 0 && num > 0) + EEPROM.put(num, data.tStatus); } /////////////////////////////////////////////////////////////////////////////// @@ -107,6 +108,7 @@ void Turnout::load(){ if (data.tStatus & STATUS_PWM) tt=create(data.id,data.tStatus & STATUS_PWMPIN, data.inactiveAngle,data.moveAngle); else tt=create(data.id,data.address,data.subAddress); tt->data.tStatus=data.tStatus; + tt->num=EEStore::pointer()+offsetof(TurnoutData,tStatus); // Save pointer to status byte within EEPROM EEStore::advance(sizeof(tt->data)); #ifdef EESTOREDEBUG tt->print(tt); @@ -126,6 +128,7 @@ void Turnout::store(){ #ifdef EESTOREDEBUG tt->print(tt); #endif + tt->num=EEStore::pointer()+offsetof(TurnoutData,tStatus); // Save pointer to tstatus byte within EEPROM EEPROM.put(EEStore::pointer(),tt->data); EEStore::advance(sizeof(tt->data)); tt=tt->nextTurnout; diff --git a/Turnouts.h b/Turnouts.h index d04c664..db97590 100644 --- a/Turnouts.h +++ b/Turnouts.h @@ -54,6 +54,8 @@ class Turnout { #ifdef EESTOREDEBUG void print(Turnout *tt); #endif +private: + int num; // EEPROM address of tStatus in TurnoutData struct, or zero if not stored. }; // Turnout #endif From ebbe698e514d5b867782d4b93509c1c1415bfd1e Mon Sep 17 00:00:00 2001 From: Neil McKechnie <75813993+Neil-McK@users.noreply.github.com> Date: Thu, 6 May 2021 23:12:48 +0000 Subject: [PATCH 24/62] Committing a SHA --- GITHUB_SHA.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GITHUB_SHA.h b/GITHUB_SHA.h index 04eb70f..90e6979 100644 --- a/GITHUB_SHA.h +++ b/GITHUB_SHA.h @@ -1 +1 @@ -#define GITHUB_SHA "d721ed5" +#define GITHUB_SHA "107e9d1" From 67c83665120f289ed752ae97547945bfad3a76d9 Mon Sep 17 00:00:00 2001 From: Asbelos Date: Fri, 7 May 2021 18:24:34 +0100 Subject: [PATCH 25/62] Fix auto rejoin after prog cmd (needs version n umber!) (#148) * ack down flank double check * ack gap properly reported * zero gap count; tolerate 2 samples per gap * Fix auto rejoin after prog cmd Moved more setup out of the BASELINE loop so its not checked every time while waiting for reset counter. Added REJOIN diag.. * Stable 100mS and off 30mS * Init powerOff after flag. Co-authored-by: Harald Barth --- DCC.cpp | 105 +++++++++++++++++++++++++++++++++++------------- DCC.h | 11 ++++- DCCWaveform.cpp | 32 ++++++++++++--- DCCWaveform.h | 7 +++- version.h | 4 +- 5 files changed, 123 insertions(+), 36 deletions(-) diff --git a/DCC.cpp b/DCC.cpp index b31d8c9..3677e44 100644 --- a/DCC.cpp +++ b/DCC.cpp @@ -691,9 +691,31 @@ byte DCC::ackManagerBitNum; bool DCC::ackReceived; bool DCC::ackManagerRejoin; +CALLBACK_STATE DCC::callbackState=READY; + ACK_CALLBACK DCC::ackManagerCallback; void DCC::ackManagerSetup(int cv, byte byteValueOrBitnum, ackOp const program[], ACK_CALLBACK callback) { + if (!DCCWaveform::progTrack.canMeasureCurrent()) { + callback(-2); + return; + } + + ackManagerRejoin=DCCWaveform::progTrackSyncMain; + if (ackManagerRejoin ) { + // Change from JOIN must zero resets packet. + setProgTrackSyncMain(false); + DCCWaveform::progTrack.sentResetsSincePacket = 0; + } + + DCCWaveform::progTrack.autoPowerOff=false; + if (DCCWaveform::progTrack.getPowerMode() == POWERMODE::OFF) { + DCCWaveform::progTrack.autoPowerOff=true; // power off afterwards + if (Diag::ACK) DIAG(F("Auto Prog power on")); + DCCWaveform::progTrack.setPowerMode(POWERMODE::ON); + DCCWaveform::progTrack.sentResetsSincePacket = 0; + } + ackManagerCv = cv; ackManagerProg = program; ackManagerByte = byteValueOrBitnum; @@ -703,8 +725,7 @@ void DCC::ackManagerSetup(int cv, byte byteValueOrBitnum, ackOp const program[] void DCC::ackManagerSetup(int wordval, ackOp const program[], ACK_CALLBACK callback) { ackManagerWord=wordval; - ackManagerProg = program; - ackManagerCallback = callback; + ackManagerSetup(0, 0, program, callback); } const byte RESET_MIN=8; // tuning of reset counter before sending message @@ -723,21 +744,9 @@ void DCC::ackManagerLoop() { // (typically waiting for a reset counter or ACK waiting, or when all finished.) switch (opcode) { case BASELINE: - ackManagerRejoin=DCCWaveform::progTrackSyncMain; - if (!DCCWaveform::progTrack.canMeasureCurrent()) { - callback(-2); - return; - } - setProgTrackSyncMain(false); - if (DCCWaveform::progTrack.getPowerMode() == POWERMODE::OFF) { - if (Diag::ACK) DIAG(F("Auto Prog power on")); - DCCWaveform::progTrack.setPowerMode(POWERMODE::ON); - DCCWaveform::progTrack.sentResetsSincePacket = 0; - DCCWaveform::progTrack.autoPowerOff=true; - return; - } - if (checkResets(DCCWaveform::progTrack.autoPowerOff ? 20 : 3)) return; + if (checkResets(DCCWaveform::progTrack.autoPowerOff || ackManagerRejoin ? 20 : 3)) return; DCCWaveform::progTrack.setAckBaseline(); + callbackState=READY; break; case W0: // write 0 bit case W1: // write 1 bit @@ -748,6 +757,7 @@ void DCC::ackManagerLoop() { byte message[] = {cv1(BIT_MANIPULATE, ackManagerCv), cv2(ackManagerCv), instruction }; DCCWaveform::progTrack.schedulePacket(message, sizeof(message), PROG_REPEATS); DCCWaveform::progTrack.setAckPending(); + callbackState=AFTER_WRITE; } break; @@ -758,6 +768,7 @@ void DCC::ackManagerLoop() { byte message[] = {cv1(WRITE_BYTE, ackManagerCv), cv2(ackManagerCv), ackManagerByte}; DCCWaveform::progTrack.schedulePacket(message, sizeof(message), PROG_REPEATS); DCCWaveform::progTrack.setAckPending(); + callbackState=AFTER_WRITE; } break; @@ -888,21 +899,61 @@ void DCC::ackManagerLoop() { ackManagerProg++; } } -void DCC::callback(int value) { - ackManagerProg=NULL; // no more steps to execute - if (DCCWaveform::progTrack.autoPowerOff) { - if (Diag::ACK) DIAG(F("Auto Prog power off")); - DCCWaveform::progTrack.doAutoPowerOff(); - } - // Restore <1 JOIN> to state before BASELINE - setProgTrackSyncMain(ackManagerRejoin); +void DCC::callback(int value) { + static unsigned long callbackStart; + // We are about to leave programming mode + // Rule 1: If we have written to a decoder we must maintain power for 100mS + // Rule 2: If we are re-joining the main track we must power off for 30mS + + switch (callbackState) { + case AFTER_WRITE: // first attempt to callback after a write operation + callbackStart=millis(); + callbackState=WAITING_100; + if (Diag::ACK) DIAG(F("Stable 100mS")); + break; + + case WAITING_100: // waiting for 100mS + if (millis()-callbackStart < 100) break; + // stable after power maintained for 100mS + + // If we are going to power off anyway, it doesnt matter + // but if we will keep the power on, we must off it for 30mS + if (DCCWaveform::progTrack.autoPowerOff) callbackState=READY; + else { // Need to cycle power off and on + DCCWaveform::progTrack.setPowerMode(POWERMODE::OFF); + callbackStart=millis(); + callbackState=WAITING_30; + if (Diag::ACK) DIAG(F("OFF 30mS")); + } + break; + + case WAITING_30: // waiting for 30mS with power off + if (millis()-callbackStart < 30) break; + //power has been off for 30mS + DCCWaveform::progTrack.setPowerMode(POWERMODE::ON); + callbackState=READY; + break; + + case READY: // ready after read, or write after power delay and off period. + // power off if we powered it on + if (DCCWaveform::progTrack.autoPowerOff) { + if (Diag::ACK) DIAG(F("Auto Prog power off")); + DCCWaveform::progTrack.doAutoPowerOff(); + } + // Restore <1 JOIN> to state before BASELINE + if (ackManagerRejoin) { + setProgTrackSyncMain(true); + if (Diag::ACK) DIAG(F("Auto JOIN")); + } - if (Diag::ACK) DIAG(F("Callback(%d)"),value); - (ackManagerCallback)( value); + ackManagerProg=NULL; // no more steps to execute + if (Diag::ACK) DIAG(F("Callback(%d)"),value); + (ackManagerCallback)( value); + } } - void DCC::displayCabList(Print * stream) { +void DCC::displayCabList(Print * stream) { int used=0; for (int reg = 0; reg < MAX_LOCOS; reg++) { diff --git a/DCC.h b/DCC.h index 3473d6f..1bdd5f0 100644 --- a/DCC.h +++ b/DCC.h @@ -54,6 +54,14 @@ enum ackOp : byte SKIPTARGET = 0xFF // jump to target }; +enum CALLBACK_STATE : byte { + AFTER_WRITE, // Start callback sequence after something was written to the decoder + WAITING_100, // Waiting for 100mS of stable power + WAITING_30, // waiting to 30ms of power off gap. + READY, // Ready to complete callback + }; + + // Allocations with memory implications..! // Base system takes approx 900 bytes + 8 per loco. Turnouts, Sensors etc are dynamically created #ifdef ARDUINO_AVR_UNO @@ -141,12 +149,13 @@ private: static bool ackReceived; static bool ackManagerRejoin; static ACK_CALLBACK ackManagerCallback; + static CALLBACK_STATE callbackState; static void ackManagerSetup(int cv, byte bitNumOrbyteValue, ackOp const program[], ACK_CALLBACK callback); static void ackManagerSetup(int wordval, ackOp const program[], ACK_CALLBACK callback); static void ackManagerLoop(); static bool checkResets( uint8_t numResets); static const int PROG_REPEATS = 8; // repeats of programming commands (some decoders need at least 8 to be reliable) - + // NMRA codes # static const byte SET_SPEED = 0x3f; static const byte WRITE_BYTE_MAIN = 0xEC; diff --git a/DCCWaveform.cpp b/DCCWaveform.cpp index 57f20a1..df88e5d 100644 --- a/DCCWaveform.cpp +++ b/DCCWaveform.cpp @@ -31,7 +31,10 @@ DCCWaveform DCCWaveform::progTrack(PREAMBLE_BITS_PROG, false); bool DCCWaveform::progTrackSyncMain=false; bool DCCWaveform::progTrackBoosted=false; int DCCWaveform::progTripValue=0; - +volatile uint8_t DCCWaveform::numAckGaps=0; +volatile uint8_t DCCWaveform::numAckSamples=0; +uint8_t DCCWaveform::trailingEdgeCounter=0; + void DCCWaveform::begin(MotorDriver * mainDriver, MotorDriver * progDriver) { mainTrack.motorDriver=mainDriver; progTrack.motorDriver=progDriver; @@ -290,13 +293,15 @@ void DCCWaveform::setAckPending() { ackPulseDuration=0; ackDetected=false; ackCheckStart=millis(); + numAckSamples=0; + numAckGaps=0; ackPending=true; // interrupt routines will now take note } byte DCCWaveform::getAck() { if (ackPending) return (2); // still waiting - if (Diag::ACK) DIAG(F("%S after %dmS max=%d/%dmA pulse=%duS"),ackDetected?F("ACK"):F("NO-ACK"), ackCheckDuration, - ackMaxCurrent,motorDriver->raw2mA(ackMaxCurrent), ackPulseDuration); + if (Diag::ACK) DIAG(F("%S after %dmS max=%d/%dmA pulse=%duS samples=%d gaps=%d"),ackDetected?F("ACK"):F("NO-ACK"), ackCheckDuration, + ackMaxCurrent,motorDriver->raw2mA(ackMaxCurrent), ackPulseDuration, numAckSamples, numAckGaps); if (ackDetected) return (1); // Yes we had an ack return(0); // pending set off but not detected means no ACK. } @@ -310,10 +315,15 @@ void DCCWaveform::checkAck() { } int current=motorDriver->getCurrentRaw(); + numAckSamples++; if (current > ackMaxCurrent) ackMaxCurrent=current; // An ACK is a pulse lasting between minAckPulseDuration and maxAckPulseDuration uSecs (refer @haba) if (current>ackThreshold) { + if (trailingEdgeCounter > 0) { + numAckGaps++; + trailingEdgeCounter = 0; + } if (ackPulseStart==0) ackPulseStart=micros(); // leading edge of pulse detected return; } @@ -321,9 +331,21 @@ void DCCWaveform::checkAck() { // not in pulse if (ackPulseStart==0) return; // keep waiting for leading edge + // if we reach to this point, we have // detected trailing edge of pulse - ackPulseDuration=micros()-ackPulseStart; - + if (trailingEdgeCounter == 0) { + ackPulseDuration=micros()-ackPulseStart; + } + + // but we do not trust it yet and return (which will force another + // measurement) and first the third time around with low current + // the ack detection will be finalized. + if (trailingEdgeCounter < 2) { + trailingEdgeCounter++; + return; + } + trailingEdgeCounter = 0; + if (ackPulseDuration>=minAckPulseDuration && ackPulseDuration<=maxAckPulseDuration) { ackCheckDuration=millis()-ackCheckStart; ackDetected=true; diff --git a/DCCWaveform.h b/DCCWaveform.h index 211281b..29d6a29 100644 --- a/DCCWaveform.h +++ b/DCCWaveform.h @@ -161,8 +161,11 @@ class DCCWaveform { unsigned int ackPulseDuration; // micros unsigned long ackPulseStart; // micros - unsigned int minAckPulseDuration = 2000; // micros + unsigned int minAckPulseDuration = 4000; // micros unsigned int maxAckPulseDuration = 8500; // micros - + + volatile static uint8_t numAckGaps; + volatile static uint8_t numAckSamples; + static uint8_t trailingEdgeCounter; }; #endif diff --git a/version.h b/version.h index a2388ca..208261b 100644 --- a/version.h +++ b/version.h @@ -3,10 +3,12 @@ #include "StringFormatter.h" -#define VERSION "3.0.13" +#define VERSION "3.0.14" +// 3.0.14 gap in ack tolerant fix, prog track power management over join fix. // 3.0.13 Functions>127 fix // 3.0.12 Fix HOSTNAME function for STA mode for WiFi // 3.0.11 ? +// 3.0.11 28 speedstep support // 3.0.10 Teensy Support // 3.0.9 rearranges serial newlines for the benefit of JMRI. // 3.0.8 Includes <* *> wraps around DIAGs for the benefit of JMRI. From 7b2647ad810d94324a6c54de4144682a9169437c Mon Sep 17 00:00:00 2001 From: Asbelos Date: Fri, 7 May 2021 17:24:58 +0000 Subject: [PATCH 26/62] Committing a SHA --- GITHUB_SHA.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GITHUB_SHA.h b/GITHUB_SHA.h index 90e6979..f6d950c 100644 --- a/GITHUB_SHA.h +++ b/GITHUB_SHA.h @@ -1 +1 @@ -#define GITHUB_SHA "107e9d1" +#define GITHUB_SHA "67c8366" From b3d02350f2a88e87709a87dbf7c08cde24703ea1 Mon Sep 17 00:00:00 2001 From: Harald Barth Date: Sun, 9 May 2021 20:04:16 +0200 Subject: [PATCH 27/62] only send function commands once, not 4 times --- DCC.cpp | 2 +- version.h | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/DCC.cpp b/DCC.cpp index 3677e44..aa9864d 100644 --- a/DCC.cpp +++ b/DCC.cpp @@ -126,7 +126,7 @@ void DCC::setFunctionInternal(int cab, byte byte1, byte byte2) { if (byte1!=0) b[nB++] = byte1; b[nB++] = byte2; - DCCWaveform::mainTrack.schedulePacket(b, nB, 3); // send packet 3 times + DCCWaveform::mainTrack.schedulePacket(b, nB, 0); } uint8_t DCC::getThrottleSpeed(int cab) { diff --git a/version.h b/version.h index 208261b..460ea93 100644 --- a/version.h +++ b/version.h @@ -3,7 +3,8 @@ #include "StringFormatter.h" -#define VERSION "3.0.14" +#define VERSION "3.0.15" +// 3.0.15 only send function commands once, not 4 times // 3.0.14 gap in ack tolerant fix, prog track power management over join fix. // 3.0.13 Functions>127 fix // 3.0.12 Fix HOSTNAME function for STA mode for WiFi From bce5acc8d071d68555dc249da0bac67d16d6e3ce Mon Sep 17 00:00:00 2001 From: Harald Barth Date: Sun, 9 May 2021 18:04:56 +0000 Subject: [PATCH 28/62] Committing a SHA --- GITHUB_SHA.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GITHUB_SHA.h b/GITHUB_SHA.h index f6d950c..864db94 100644 --- a/GITHUB_SHA.h +++ b/GITHUB_SHA.h @@ -1 +1 @@ -#define GITHUB_SHA "67c8366" +#define GITHUB_SHA "b3d0235" From fafaa7a1e1591c14962495dc8e977f29041abbb5 Mon Sep 17 00:00:00 2001 From: Asbelos Date: Tue, 11 May 2021 13:32:13 +0100 Subject: [PATCH 29/62] Remove cv1 bit 7 test in cmd --- DCC.cpp | 4 ---- version.h | 3 ++- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/DCC.cpp b/DCC.cpp index 3677e44..c9a1458 100644 --- a/DCC.cpp +++ b/DCC.cpp @@ -398,10 +398,6 @@ const ackOp FLASH READ_CV_PROG[] = { const ackOp FLASH LOCO_ID_PROG[] = { BASELINE, - SETCV, (ackOp)1, - SETBIT, (ackOp)7, - V0,WACK,NAKFAIL, // test CV 1 bit 7 is a zero... NAK means no loco found - SETCV, (ackOp)19, // CV 19 is consist setting SETBYTE, (ackOp)0, VB, WACK, ITSKIP, // ignore consist if cv19 is zero (no consist) diff --git a/version.h b/version.h index 208261b..39eab25 100644 --- a/version.h +++ b/version.h @@ -3,7 +3,8 @@ #include "StringFormatter.h" -#define VERSION "3.0.14" +#define VERSION "3.0.15" +// 3.0.15 Ignore CV1 bit 7 read rejected by decoder when identifying loco id. // 3.0.14 gap in ack tolerant fix, prog track power management over join fix. // 3.0.13 Functions>127 fix // 3.0.12 Fix HOSTNAME function for STA mode for WiFi From 1b1d8fceb4bd9f591c5e769082957d94998d14bd Mon Sep 17 00:00:00 2001 From: Asbelos Date: Tue, 11 May 2021 12:35:11 +0000 Subject: [PATCH 30/62] Committing a SHA --- GITHUB_SHA.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GITHUB_SHA.h b/GITHUB_SHA.h index 864db94..a911883 100644 --- a/GITHUB_SHA.h +++ b/GITHUB_SHA.h @@ -1 +1 @@ -#define GITHUB_SHA "b3d0235" +#define GITHUB_SHA "bb63a55" From 38b5c0cae24356b26230a87b56a82a9514f90f84 Mon Sep 17 00:00:00 2001 From: Fred Date: Thu, 13 May 2021 19:56:32 -0400 Subject: [PATCH 31/62] Update version.h --- version.h | 1 - 1 file changed, 1 deletion(-) diff --git a/version.h b/version.h index 17835de..c927e05 100644 --- a/version.h +++ b/version.h @@ -9,7 +9,6 @@ // 3.0.14 gap in ack tolerant fix, prog track power management over join fix. // 3.0.13 Functions>127 fix // 3.0.12 Fix HOSTNAME function for STA mode for WiFi -// 3.0.11 ? // 3.0.11 28 speedstep support // 3.0.10 Teensy Support // 3.0.9 rearranges serial newlines for the benefit of JMRI. From 05da109144c94ee86e2b543cb4c20e4df6572a7a Mon Sep 17 00:00:00 2001 From: Fred Date: Thu, 13 May 2021 23:56:48 +0000 Subject: [PATCH 32/62] Committing a SHA --- GITHUB_SHA.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GITHUB_SHA.h b/GITHUB_SHA.h index a911883..38e2ec6 100644 --- a/GITHUB_SHA.h +++ b/GITHUB_SHA.h @@ -1 +1 @@ -#define GITHUB_SHA "bb63a55" +#define GITHUB_SHA "38b5c0c" From ea85a33e0327fba41709f529634da8baa1f1c16c Mon Sep 17 00:00:00 2001 From: Fred Date: Thu, 13 May 2021 20:28:54 -0400 Subject: [PATCH 33/62] Update release_notes.md --- release_notes.md | 222 +++++++++++++++++++++++++++++------------------ 1 file changed, 137 insertions(+), 85 deletions(-) diff --git a/release_notes.md b/release_notes.md index d4ab952..07a3687 100644 --- a/release_notes.md +++ b/release_notes.md @@ -1,112 +1,164 @@ -The DCC-EX Team is pleased to release CommandStation-EX-v3.0.0 as a Production Release. This release is a major re-write of earlier versions. We've re-architected the code-base so that it can better handle new features going forward. +DCC-EX Team is pleased to release CommandStation-EX-v3.1.0 as a Production Release. Release v3.1.0 is a minor release that adds additional features and fixes a number of bugs. With the number of new features, this could have easily been a major release. The team is continually improving the architecture of DCC++EX to make it more flexible and optimizing the code so as to get more perfromance from the Arduino microprocessors. This release includes all of the Point Releases from v3.0.1 to v3.0.12. -**Known Bugs:** - - **Consisting through JMRI** - currently does not work in this release. You may use the command to do this manually. - - **Wi-Fi** - works, but can be challenging to use if you want to switch between AP mode and STA station mode. - - **Pololu Motor Shield** - is supported with this release, but the user may have to play around with some timings to enable programming mode due to limitation in its current sensing circuitry +**Known Issues** + +- **Wi-Fi** - works, but requires sending commands from a serial monitor if you want to switch between AP mode and STA station mode. +- **Pololu Motor Shield** - is supported with this release, but the user may have to adjust timings to enable programming mode due to limitation in its current sensing circuitry + +#### Summary of key features and/or bug fixes by Point Release + +**Summary of the key new features added to CommandStation-EX V3.0.16** + +- Ignore CV1 bit 7 read if rejected by a non NMRA compliant decoder when identifying loco id + +**Summary of the key new features added to CommandStation-EX V3.0.15** + +- Send function commands just once instead of repeating them 4 times + +**Summary of the key new features added to CommandStation-EX V3.0.14** + +- Add feature to tolerate decoders that incorrectly have gaps in their ACK pulse +- Provide proper track power management when joining and unjoining tracks with <1 JOIN> + +**Summary of the key new features added to CommandStation-EX V3.0.13** + +- Fix for CAB Functions greater than 127 + +**Summary of the key new features added to CommandStation-EX V3.0.12** + +- Fixed clear screen issue for nanoEvery and nanoWifi + +**Summary of the key new features added to CommandStation-EX V3.0.11** + +- Reorganized files for support of 128 speed steps + +**Summary of the key new features added to CommandStation-EX V3.0.10** + +- Added Support for the Teensy 3.2, 3.5, 3.6, 4.0 and 4.1 MCUs +- No functional change just changes to avoid complier warnings for Teensy/nanoEvery + +**Summary of the key new features added to CommandStation-EX V3.0.9** + +- Rearranges serial newlines for the benefit of JMRI +- Major update for efficiencies in displays (LCD, OLED) +- Add I2C Support functions + +**Summary of the key new features added to CommandStation-EX V3.0.8** + +- Wraps <* *> around DIAGS for the benefit of JMRI **Summary of the key new features added to CommandStation-EX V3.0.7** - - **Support for 28 Speed steps** - Option to turn on 28 step speed decoders in addition to 128. If set, all locos will use 28 steps. - - **Improved overload messages with raw values (relative to offset)** + +- Implemented support for older 28 apeed step decoders - Option to turn on 28 step speed decoders in addition to 128. If set, all locos will use 28 steps. +- Improved overload messages with raw values (relative to offset) **Summary of the key new features added to CommandStation-EX V3.0.6** - - **Prevent compiler warning about deprecated B constants** - - **Fix Bug that did not let us transmit 5 byte sized packets** - 5 Byte commands like PoM (programming on main) were not being sent correctly - - **Huge function numbers (DCC BinaryStateControl)** - Support Functions beyond F28 - - ** ESTOP all** - New command to emergency stop all locos on the main track - - **<- [cab]> estop and forget cab/all cabs** - Stop and remove loco from the CS. Stops the repeating throttle messages - - **```` command to reboot arduino** - - **Automatic sensor offset detect** - - - **Improved startup msgs from Motor Drivers (accuracy and auto sense factors)** - - - **Drop post-write verify** - No need to double check CV writes. Writes are now even faster. - - **Allow current sene pin set to UNUSED_PIN** - No need to ground an unused analog current pin. Produce startup warning and callback -2 for prog track cmds. +- Prevent compiler warning about deprecated B constants +- Fix Bug that did not let us transmit 5 byte sized packets - 5 Byte commands like PoM (programming on main) were not being sent correctly +- Support for Huge function numbers (DCC BinaryStateControl) - Support Functions beyond F28 +- ESTOP all - New command to emergency stop all locos on the main track +- <- [cab]> estop and forget cab/all cabs - Stop and remove loco from the CS. Stops the repeating throttle messages +- `` command to reboot Arduino +- Automatic sensor offset detect +- Improved startup msgs from Motor Drivers (accuracy and auto sense factors) +- Drop post-write verify - No need to double check CV writes. Writes are now even faster. +- Allow current sense pin set to UNUSED_PIN - No need to ground an unused analog current pin. Produce startup warning and callback -2 for prog track cmds. **Summary of the key new features added to CommandStation-EX V3.0.5** - - **Fix Fn Key startup with loco ID and fix state change for F16-28** - - removed ethernet mac config and made it automatic - - show wifi ip and port on lcd - - auto load config.example.h with warningh - - dropped example .ino files - - corrected .ino comments - - pololu fault pin handling - - waveform speed/simplicity improvements - - improved pin speed in waveform - - portability to nanoEvery and UnoWifiRev2 CPUs - - analog read speed improvements - - drop need for DIO2 library - - improved current check code - - linear command - - removed need for ArduinoTimers files - - removed - - Removed option to choose different timer - - Added EX-RAIL hooks for later - - fixed Turnout list - - allow command keywords in mixed case - - dropped unused memstream - - PWM pin accuracy if requirements met. + +- Fix Fn Key startup with loco ID and fix state change for F16-28 +- Removed ethernet mac config and made it automatic +- Show wifi ip and port on lcd +- Auto load config.example.h with warning +- Dropped example .ino files +- Corrected .ino comments +- Add Pololu fault pin handling +- Waveform speed/simplicity improvements +- Improved pin speed in waveform +- Portability to nanoEvery and UnoWifiRev2 CPUs +- Analog read speed improvements +- Drop need for DIO2 library +- Improved current check code +- Linear command +- Removed need for ArduinoTimers files +- Removed option to choose different timer +- Added EX-RAIL hooks for automation in future version +- Fixed Turnout list +- Allow command keywords in mixed case +- Dropped unused memstream +- PWM pin accuracy if requirements met **Summary of the key new features added to CommandStation-EX V3.0.4** - - **"Drive-Away" Feature added so that throttles like Engine Driver can allow a loco to be programmed on a usable, electrically isolated programming track and then drive off onto the main track. - - **WiFi Startup Fixes** - + +- "Drive-Away" Feature - added so that throttles like Engine Driver can allow a loco to be programmed on a usable, electrically isolated programming track and then drive off onto the main track +- WiFi Startup Fixes + **Summary of the key new features added to CommandStation-EX V3.0.3** - - ** command to write loco address and clear consist** - - ** command will allow for consist address** - - **Startup commands implemented** - + +- Command to write loco address and clear consist +- Command will allow for consist address +- Startup commands implemented + **Summary of the key new features added to CommandStation-EX V3.0.2:** -- **Create new output for current in mA for ```` command** - New current response outputs current in mA, overlimit current, and maximum board capable current -- **Simultaneously update JMRI to handle new current meter** + +- Create new output for current in mA for `` command - New current response outputs current in mA, overlimit current, and maximum board capable current +- Simultaneously update JMRI to handle new current meter **Summary of the key new features added to CommandStation-EX V3.0.1:** - - **Add back fix for jitter** - - **Add Turnouts, Outputs and Sensors to `````` command output** - **Summary of the key new features added to CommandStation-EX V3.0.0:** +- Add back fix for jitter +- Add Turnouts, Outputs and Sensors to `` command output - - **New USB Browser Based Throttle** - WebThrottle-EX is a full front-end to controller to control the CS to run trains. - - **WiFi Support** - AP and station modes supported. Auto-detection of an ESP8266 WiFi module with AT firmware on a Mega's serial port. Connection to JMRI and WiThrottle clients. - - **Withrottle Integrations** - Act as a host for up to four WiThrottle clients concurrently. - - **Add LCD/OLED support** - OLED supported on Mega only - - **Improved CV programming routines** - checks for length of CV pulse, and breaks out of the wait state once it has received an ACK, now reading one CV per second. - - **Improved current sensing** - rewrote current sensing routines for safer operation. Current thresholds based on milliamps, not magic numbers - - **Individual track power control** - Ability to toggle power on either or both tracks, and to "JOIN" the tracks and make them output the same waveform for multiple power districts. - - **Single or Dual-Pin PWM output** - Allows control of H-bridges with PH/EN or dual PWM inputs - - **New, simpler function command** - `````` command allows setting functions based on their number, not based on a code as in `````` - - **Function reminders** - Function reminders are sent in addition to speed reminders - - **Functions to F28** - All NMRA functions are now supported - - **Filters and user functions** - Ability to filter commands in the parser and execute custom code based on them. (ex: Redirect Turnout commands via NRF24) - - **Diagnostic `````` commands** - See documentation for a full list of new diagnostic commands - - **Rewrote DCC++ Parser** - more efficient operation, accepts multi-char input and uses less RAM - - **Rewritten waveform generator** - capable of using any pin for DCC waveform out, eliminating the need for jumpers - - **Rewritten packet generator** - Simplify and make smaller, remove idea of "registers" from original code - - **Add free RAM messages** - Free RAM messages are now printed whenever there is a decerase in available RAM - - **Fix EEPROM bugs** - - **Number of locos discovery command** - ```<#>``` command - - **Support for more locomotives** - 20 locomotives on an UNO and 50 an a Mega. - - **Automatic slot managment** - slot variable in throttle/function commands are ignored and slot management is taken care of automatically. `````` command added to release locos from memory. +**CommandStation-EX V3.0.0:** +**Release v3.0.0 was a major rewrite if earlier versions of DCC++. The code base was re-architeced and core changes were made to the Waveform generator to reduce overhead and make better use of Arduino.** **Summary of the key new features added in Release v3.0.0 include:** + +- **New USB Browser Based Throttle** - WebThrottle-EX is a full front-end to controller to control the CS to run trains. +- **WiFi Support** - AP and station modes supported. Auto-detection of an ESP8266 WiFi module with AT firmware on a Mega's serial port. Connection to JMRI and WiThrottle clients. +- **Withrottle Integrations** - Act as a host for up to four WiThrottle clients concurrently. +- **Add LCD/OLED support** - OLED supported on Mega only +- **Improved CV programming routines** - checks for length of CV pulse, and breaks out of the wait state once it has received an ACK, now reading one CV per second. +- **Improved current sensing** - rewrote current sensing routines for safer operation. Current thresholds based on milliamps, not magic numbers +- **Individual track power control** - Ability to toggle power on either or both tracks, and to "JOIN" the tracks and make them output the same waveform for multiple power districts. +- **Single or Dual-Pin PWM output** - Allows control of H-bridges with PH/EN or dual PWM inputs +- **New, simpler function command** - `` command allows setting functions based on their number, not based on a code as in `` +- **Function reminders** - Function reminders are sent in addition to speed reminders +- **Functions to F28** - All NMRA functions are now supported +- **Filters and user functions** - Ability to filter commands in the parser and execute custom code based on them. (ex: Redirect Turnout commands via NRF24) +- **Diagnostic `` commands** - See documentation for a full list of new diagnostic commands +- **Rewrote DCC++ Parser** - more efficient operation, accepts multi-char input and uses less RAM +- **Rewritten waveform generator** - capable of using any pin for DCC waveform out, eliminating the need for jumpers +- **Rewritten packet generator** - Simplify and make smaller, remove idea of "registers" from original code +- **Add free RAM messages** - Free RAM messages are now printed whenever there is a decerase in available RAM +- **Fix EEPROM bugs** +- **Number of locos discovery command** - `<#>` command +- **Support for more locomotives** - 20 locomotives on an UNO and 50 an a Mega. +- **Automatic slot managment** - slot variable in throttle/function commands are ignored and slot management is taken care of automatically. `` command added to release locos from memory. **Key Contributors** **Project Lead** + - Fred Decker - Holly Springs, North Carolina, USA (FlightRisk) **CommandStation-EX Developers** + - Chris Harlow - Bournemouth, UK (UKBloke) - Harald Barth - Stockholm, Sweden (Haba) - Neil McKechnie - Worcestershire, UK (NeilMck) - Fred Decker - Holly Springs, North Carolina, USA (FlightRisk) - Dave Cutting - Logan, Utah, USA (Dave Cutting/ David Cutting) - M Steve Todd - - Engine Driver and JMRI Interface -- Scott Catalanno - Pennsylvania +- Scott Catalano - Pennsylvania - Gregor Baues - Île-de-France, France (grbba) **exInstaller Software** + - Anthony W - Dayton, Ohio, USA (Dex, Dex++) **Website and Documentation** + - Mani Kumar - Bangalor, India (Mani / Mani Kumar) - Fred Decker - Holly Springs, North Carolina, USA (FlightRisk) - Dave Cutting - Logan, Utah, USA (Dave Cutting/ David Cutting) @@ -115,25 +167,25 @@ The DCC-EX Team is pleased to release CommandStation-EX-v3.0.0 as a Production R - Kevin Smith - (KCSmith) **WebThrotle-EX** + - Fred Decker - Holly Springs, NC (FlightRisk/FrightRisk) - Mani Kumar - Bangalor, India (Mani /Mani Kumar) - Matt H - Somewhere in Europe - - **Beta Testing / Release Management / Support** -- Larry Dribin - Release Management -- Keith Ledbetter -- BradVan der Elst -- Andrew Pye -- Mike Bowers + +- Larry Dribin - Release Management +- Keith Ledbetter +- BradVan der Elst +- Andrew Pye +- Mike Bowers - Randy McKenzie - Roberto Bravin - Sim Brigden - Alan Lautenslager -- Martin Bafver -- Mário André Silva -- Anthony Kochevar -- Gajanatha Kobbekaduwe -- Sumner Patterson +- Martin Bafver +- Mário André Silva +- Anthony Kochevar +- Gajanatha Kobbekaduwe +- Sumner Patterson - Paul - Virginia, USA From 7a68b0106d052c37c877a036e4e622fdaf7ff25d Mon Sep 17 00:00:00 2001 From: Fred Date: Fri, 14 May 2021 00:29:09 +0000 Subject: [PATCH 34/62] Committing a SHA --- GITHUB_SHA.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GITHUB_SHA.h b/GITHUB_SHA.h index 38e2ec6..2ea573f 100644 --- a/GITHUB_SHA.h +++ b/GITHUB_SHA.h @@ -1 +1 @@ -#define GITHUB_SHA "38b5c0c" +#define GITHUB_SHA "ea85a33" From 7cef3dad2ebbd36b88dd956efc51d4cc9ffa1691 Mon Sep 17 00:00:00 2001 From: Fred Date: Fri, 14 May 2021 13:29:45 -0400 Subject: [PATCH 35/62] Update release_notes.md --- release_notes.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/release_notes.md b/release_notes.md index 07a3687..da44cd6 100644 --- a/release_notes.md +++ b/release_notes.md @@ -176,7 +176,8 @@ DCC-EX Team is pleased to release CommandStation-EX-v3.1.0 as a Production Relea - Larry Dribin - Release Management - Keith Ledbetter -- BradVan der Elst +- Kevin Smith Rochester Hills, Michigan USA (KC Smith) +- Brad Van der Elst - Andrew Pye - Mike Bowers - Randy McKenzie From 87cc8afdf9393f455fdb1c0bd543c250243c6593 Mon Sep 17 00:00:00 2001 From: Fred Date: Fri, 14 May 2021 17:30:01 +0000 Subject: [PATCH 36/62] Committing a SHA --- GITHUB_SHA.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GITHUB_SHA.h b/GITHUB_SHA.h index 2ea573f..3065518 100644 --- a/GITHUB_SHA.h +++ b/GITHUB_SHA.h @@ -1 +1 @@ -#define GITHUB_SHA "ea85a33" +#define GITHUB_SHA "7cef3da" From 5984abe133cdf5bc7e53257862e226470f55752f Mon Sep 17 00:00:00 2001 From: Fred Date: Fri, 14 May 2021 13:33:56 -0400 Subject: [PATCH 37/62] Update release_notes.md --- release_notes.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/release_notes.md b/release_notes.md index da44cd6..ac61338 100644 --- a/release_notes.md +++ b/release_notes.md @@ -164,7 +164,7 @@ DCC-EX Team is pleased to release CommandStation-EX-v3.1.0 as a Production Relea - Dave Cutting - Logan, Utah, USA (Dave Cutting/ David Cutting) - Roger Beschizza - Dorset, UK (Roger Beschizza) - Keith Ledbetter - Chicago, Illinois, USA (Keith Ledbetter) -- Kevin Smith - (KCSmith) +- Kevin Smith - Rochester Hills, Michigan USA (KC Smith) **WebThrotle-EX** @@ -176,7 +176,7 @@ DCC-EX Team is pleased to release CommandStation-EX-v3.1.0 as a Production Relea - Larry Dribin - Release Management - Keith Ledbetter -- Kevin Smith Rochester Hills, Michigan USA (KC Smith) +- Kevin Smith - Rochester Hills, Michigan USA (KC Smith) - Brad Van der Elst - Andrew Pye - Mike Bowers From 9fdd251a7b4ccbf074bbbdd187db4a7cef351c83 Mon Sep 17 00:00:00 2001 From: Fred Date: Fri, 14 May 2021 17:34:12 +0000 Subject: [PATCH 38/62] Committing a SHA --- GITHUB_SHA.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GITHUB_SHA.h b/GITHUB_SHA.h index 3065518..d8c74cf 100644 --- a/GITHUB_SHA.h +++ b/GITHUB_SHA.h @@ -1 +1 @@ -#define GITHUB_SHA "7cef3da" +#define GITHUB_SHA "5984abe" From 58d4618868a87e6da1b39a3fa8c0850f11d0eb75 Mon Sep 17 00:00:00 2001 From: Fred Date: Fri, 14 May 2021 18:19:07 -0400 Subject: [PATCH 39/62] Update release_notes.md --- release_notes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release_notes.md b/release_notes.md index ac61338..849acf7 100644 --- a/release_notes.md +++ b/release_notes.md @@ -1,4 +1,4 @@ -DCC-EX Team is pleased to release CommandStation-EX-v3.1.0 as a Production Release. Release v3.1.0 is a minor release that adds additional features and fixes a number of bugs. With the number of new features, this could have easily been a major release. The team is continually improving the architecture of DCC++EX to make it more flexible and optimizing the code so as to get more perfromance from the Arduino microprocessors. This release includes all of the Point Releases from v3.0.1 to v3.0.12. +DCC-EX Team is pleased to release CommandStation-EX-v3.1.0 as a Production Release. Release v3.1.0 is a minor release that adds additional features and fixes a number of bugs. With the number of new features, this could have easily been a major release. The team is continually improving the architecture of DCC++EX to make it more flexible and optimizing the code so as to get more perfromance from the Arduino microprocessors. This release includes all of the Point Releases from v3.0.1 to v3.0.16. **Known Issues** From 9ec4f2d62add2742f0ddf615c7fd5f3de97e1526 Mon Sep 17 00:00:00 2001 From: Fred Date: Fri, 14 May 2021 22:19:25 +0000 Subject: [PATCH 40/62] Committing a SHA --- GITHUB_SHA.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GITHUB_SHA.h b/GITHUB_SHA.h index d8c74cf..3675434 100644 --- a/GITHUB_SHA.h +++ b/GITHUB_SHA.h @@ -1 +1 @@ -#define GITHUB_SHA "5984abe" +#define GITHUB_SHA "58d4618" From d9249163816281f6ec116f18b298e6bf28291294 Mon Sep 17 00:00:00 2001 From: Fred Date: Fri, 14 May 2021 18:43:48 -0400 Subject: [PATCH 41/62] Update release_notes_v3.1.0.md --- Release_Notes/release_notes_v3.1.0.md | 40 +++++++++++++++++++++------ 1 file changed, 31 insertions(+), 9 deletions(-) diff --git a/Release_Notes/release_notes_v3.1.0.md b/Release_Notes/release_notes_v3.1.0.md index bd17f77..849acf7 100644 --- a/Release_Notes/release_notes_v3.1.0.md +++ b/Release_Notes/release_notes_v3.1.0.md @@ -1,10 +1,29 @@ -DCC-EX Team is pleased to release CommandStation-EX-v3.1.0 as a Production Release. Release v3.1.0 is a minor release that adds additional features and fixes a number of bugs. The team is continually improving the architecture of DCC++EX to make it more flexible and optimizing the code so as to get more perfromance from the Arduino microprocessors. This release includes all of the Point Releases from v3.0.1 to v3.0.12. +DCC-EX Team is pleased to release CommandStation-EX-v3.1.0 as a Production Release. Release v3.1.0 is a minor release that adds additional features and fixes a number of bugs. With the number of new features, this could have easily been a major release. The team is continually improving the architecture of DCC++EX to make it more flexible and optimizing the code so as to get more perfromance from the Arduino microprocessors. This release includes all of the Point Releases from v3.0.1 to v3.0.16. -- **Wi-Fi** - works, but can be challenging to use if you want to switch between AP mode and STA station mode. -- **Pololu Motor Shield** - is supported with this release, but the user may have to play around with some timings to enable programming mode due to limitation in its current sensing circuitry +**Known Issues** + +- **Wi-Fi** - works, but requires sending commands from a serial monitor if you want to switch between AP mode and STA station mode. +- **Pololu Motor Shield** - is supported with this release, but the user may have to adjust timings to enable programming mode due to limitation in its current sensing circuitry #### Summary of key features and/or bug fixes by Point Release +**Summary of the key new features added to CommandStation-EX V3.0.16** + +- Ignore CV1 bit 7 read if rejected by a non NMRA compliant decoder when identifying loco id + +**Summary of the key new features added to CommandStation-EX V3.0.15** + +- Send function commands just once instead of repeating them 4 times + +**Summary of the key new features added to CommandStation-EX V3.0.14** + +- Add feature to tolerate decoders that incorrectly have gaps in their ACK pulse +- Provide proper track power management when joining and unjoining tracks with <1 JOIN> + +**Summary of the key new features added to CommandStation-EX V3.0.13** + +- Fix for CAB Functions greater than 127 + **Summary of the key new features added to CommandStation-EX V3.0.12** - Fixed clear screen issue for nanoEvery and nanoWifi @@ -15,12 +34,14 @@ DCC-EX Team is pleased to release CommandStation-EX-v3.1.0 as a Production Relea **Summary of the key new features added to CommandStation-EX V3.0.10** -- Includes support for the Arduino Teensy +- Added Support for the Teensy 3.2, 3.5, 3.6, 4.0 and 4.1 MCUs - No functional change just changes to avoid complier warnings for Teensy/nanoEvery **Summary of the key new features added to CommandStation-EX V3.0.9** - Rearranges serial newlines for the benefit of JMRI +- Major update for efficiencies in displays (LCD, OLED) +- Add I2C Support functions **Summary of the key new features added to CommandStation-EX V3.0.8** @@ -52,7 +73,7 @@ DCC-EX Team is pleased to release CommandStation-EX-v3.1.0 as a Production Relea - Auto load config.example.h with warning - Dropped example .ino files - Corrected .ino comments -- Pololu fault pin handling +- Add Pololu fault pin handling - Waveform speed/simplicity improvements - Improved pin speed in waveform - Portability to nanoEvery and UnoWifiRev2 CPUs @@ -62,7 +83,7 @@ DCC-EX Team is pleased to release CommandStation-EX-v3.1.0 as a Production Relea - Linear command - Removed need for ArduinoTimers files - Removed option to choose different timer -- Added EX-RAIL hooks for later +- Added EX-RAIL hooks for automation in future version - Fixed Turnout list - Allow command keywords in mixed case - Dropped unused memstream @@ -129,7 +150,7 @@ DCC-EX Team is pleased to release CommandStation-EX-v3.1.0 as a Production Relea - Fred Decker - Holly Springs, North Carolina, USA (FlightRisk) - Dave Cutting - Logan, Utah, USA (Dave Cutting/ David Cutting) - M Steve Todd - - Engine Driver and JMRI Interface -- Scott Catalanno - Pennsylvania +- Scott Catalano - Pennsylvania - Gregor Baues - Île-de-France, France (grbba) **exInstaller Software** @@ -143,7 +164,7 @@ DCC-EX Team is pleased to release CommandStation-EX-v3.1.0 as a Production Relea - Dave Cutting - Logan, Utah, USA (Dave Cutting/ David Cutting) - Roger Beschizza - Dorset, UK (Roger Beschizza) - Keith Ledbetter - Chicago, Illinois, USA (Keith Ledbetter) -- Kevin Smith - (KCSmith) +- Kevin Smith - Rochester Hills, Michigan USA (KC Smith) **WebThrotle-EX** @@ -155,7 +176,8 @@ DCC-EX Team is pleased to release CommandStation-EX-v3.1.0 as a Production Relea - Larry Dribin - Release Management - Keith Ledbetter -- BradVan der Elst +- Kevin Smith - Rochester Hills, Michigan USA (KC Smith) +- Brad Van der Elst - Andrew Pye - Mike Bowers - Randy McKenzie From 45a7efc93529eb56f08f28fcf3b711aa85a3ba1d Mon Sep 17 00:00:00 2001 From: Fred Date: Fri, 14 May 2021 22:44:05 +0000 Subject: [PATCH 42/62] Committing a SHA --- GITHUB_SHA.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GITHUB_SHA.h b/GITHUB_SHA.h index 3675434..bf46ef3 100644 --- a/GITHUB_SHA.h +++ b/GITHUB_SHA.h @@ -1 +1 @@ -#define GITHUB_SHA "58d4618" +#define GITHUB_SHA "d924916" From 4583761d0393df7f7f4cfa0d3b7b617adb71dfa5 Mon Sep 17 00:00:00 2001 From: Fred Date: Fri, 14 May 2021 23:43:11 -0400 Subject: [PATCH 43/62] Update version.h --- version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.h b/version.h index c927e05..6bcca56 100644 --- a/version.h +++ b/version.h @@ -3,7 +3,7 @@ #include "StringFormatter.h" -#define VERSION "3.0.16" +#define VERSION "3.1.0 // 3.0.16 Ignore CV1 bit 7 read rejected by decoder when identifying loco id. // 3.0.15 only send function commands once, not 4 times // 3.0.14 gap in ack tolerant fix, prog track power management over join fix. From a01d36c8e5b62e901f8845fec1df1fbe2671d18c Mon Sep 17 00:00:00 2001 From: Fred Date: Sat, 15 May 2021 03:43:28 +0000 Subject: [PATCH 44/62] Committing a SHA --- GITHUB_SHA.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GITHUB_SHA.h b/GITHUB_SHA.h index bf46ef3..9cf7cea 100644 --- a/GITHUB_SHA.h +++ b/GITHUB_SHA.h @@ -1 +1 @@ -#define GITHUB_SHA "d924916" +#define GITHUB_SHA "4583761" From 4a2513d57651815b1c636e428f825c1fab623c62 Mon Sep 17 00:00:00 2001 From: Fred Date: Fri, 14 May 2021 23:49:04 -0400 Subject: [PATCH 45/62] Update version.h --- version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.h b/version.h index 6bcca56..a72e345 100644 --- a/version.h +++ b/version.h @@ -3,7 +3,7 @@ #include "StringFormatter.h" -#define VERSION "3.1.0 +#define VERSION "3.1.0" // 3.0.16 Ignore CV1 bit 7 read rejected by decoder when identifying loco id. // 3.0.15 only send function commands once, not 4 times // 3.0.14 gap in ack tolerant fix, prog track power management over join fix. From ebfde7cc8186c15023ce400d3825511e43fd2b46 Mon Sep 17 00:00:00 2001 From: Fred Date: Sat, 15 May 2021 03:49:17 +0000 Subject: [PATCH 46/62] Committing a SHA --- GITHUB_SHA.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GITHUB_SHA.h b/GITHUB_SHA.h index 9cf7cea..9e072aa 100644 --- a/GITHUB_SHA.h +++ b/GITHUB_SHA.h @@ -1 +1 @@ -#define GITHUB_SHA "4583761" +#define GITHUB_SHA "4a2513d" From 93fc674e740e43583e8366c2adeb4361a42f21d1 Mon Sep 17 00:00:00 2001 From: Fred Date: Sat, 15 May 2021 00:04:07 -0400 Subject: [PATCH 47/62] Update release_notes.md --- release_notes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release_notes.md b/release_notes.md index 849acf7..a486987 100644 --- a/release_notes.md +++ b/release_notes.md @@ -1,4 +1,4 @@ -DCC-EX Team is pleased to release CommandStation-EX-v3.1.0 as a Production Release. Release v3.1.0 is a minor release that adds additional features and fixes a number of bugs. With the number of new features, this could have easily been a major release. The team is continually improving the architecture of DCC++EX to make it more flexible and optimizing the code so as to get more perfromance from the Arduino microprocessors. This release includes all of the Point Releases from v3.0.1 to v3.0.16. +DCC-EX Team is pleased to release CommandStation-EX-v3.1.0 as a Production Release. Release v3.1.0 is a minor release that adds additional features and fixes a number of bugs. With the number of new features, this could have easily been a major release. The team is continually improving the architecture of DCC++EX to make it more flexible and optimizing the code so as to get more performance from the Arduino microprocessors. This release includes all of the Point Releases from v3.0.1 to v3.0.16. **Known Issues** From fb3265a413bce517db3c40208bf4f975f169381c Mon Sep 17 00:00:00 2001 From: Fred Date: Sat, 15 May 2021 04:04:22 +0000 Subject: [PATCH 48/62] Committing a SHA --- GITHUB_SHA.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GITHUB_SHA.h b/GITHUB_SHA.h index 9e072aa..ab3b6b6 100644 --- a/GITHUB_SHA.h +++ b/GITHUB_SHA.h @@ -1 +1 @@ -#define GITHUB_SHA "4a2513d" +#define GITHUB_SHA "93fc674" From 6766d95344a8a0f5500bf0180f68945c3f5f0b35 Mon Sep 17 00:00:00 2001 From: Dex's Lab Date: Sat, 15 May 2021 00:19:41 -0400 Subject: [PATCH 49/62] mend --- GITHUB_SHA.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GITHUB_SHA.h b/GITHUB_SHA.h index ab3b6b6..a24d8ca 100644 --- a/GITHUB_SHA.h +++ b/GITHUB_SHA.h @@ -1 +1 @@ -#define GITHUB_SHA "93fc674" +#define GITHUB_SHA "fb3265a" From 79a76e95b60efc82d1417f47d10da43b33c1fbf3 Mon Sep 17 00:00:00 2001 From: Dex's Lab Date: Sat, 15 May 2021 04:20:02 +0000 Subject: [PATCH 50/62] Committing a SHA --- GITHUB_SHA.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GITHUB_SHA.h b/GITHUB_SHA.h index a24d8ca..d6fbca6 100644 --- a/GITHUB_SHA.h +++ b/GITHUB_SHA.h @@ -1 +1 @@ -#define GITHUB_SHA "fb3265a" +#define GITHUB_SHA "6766d95" From c7af43c70bb82ffb276e99474fa411c5e9b3bfdd Mon Sep 17 00:00:00 2001 From: Fred Date: Sat, 15 May 2021 21:36:21 -0400 Subject: [PATCH 51/62] Update README.md Add 3.1 features --- README.md | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 48a595d..9a04c47 100644 --- a/README.md +++ b/README.md @@ -12,11 +12,13 @@ Both CommandStation-EX and BaseStation-Classic support much of the NMRA Digital * simultaneous control of multiple locomotives * 2-byte and 4-byte locomotive addressing -* 128-step speed throttling +* 28 or 128-step speed throttling * Activate/de-activate all accessory function addresses 0-2048 -* Control of all cab functions F0-F28 +* Control of all cab functions F0-F28 and F29-F68 * Main Track: Write configuration variable bytes and set/clear specific configuration variable (CV) bits (aka Programming on Main or POM) * Programming Track: Same as the main track with the addition of reading configuration variable bytes +* And manu more custom features. see [What's new in CommandStation-EX?]#whats-new-in-commandstation-ex + # What’s in this Repository? @@ -38,11 +40,11 @@ in config.h. ## What's new in CommandStation-EX? -* WiThrottle server built in. Connect Engine Driver or WiThrottle clients directly to your Command Station +* WiThrottle server built in. Connect Engine Driver or WiThrottle clients directly to your Command Station (or through JMRI as before) * WiFi and Ethernet shield support * No more jumpers or soldering! -* Direct support for all the most popular motor control boards -* I2C Display support +* Direct support for all the most popular motor control boards including single pin (Arduino) or dual pin (IBT_2) type PWM inputs without the need for an adapter circuit +* I2C Display support (LCD and OLED) * Improved short circuit detection and automatic reset from an overload * Current reading, sensing and ACK detection settings in milliAmps instead of just pin readings * Improved adherence to the NMRA DCC specification @@ -50,6 +52,21 @@ in config.h. * Railcom cutout (beta) * Simpler, modular, faster code with an API Library for developers for easy expansion * New features and functions in JMRI +* Ability to join MAIN and PROG tracks into one MAIN track to run your locos +* "Drive-Away" feature - Throttles with support, like Engine Driver, can allow a loco to be programmed on a usable, electrically isolated programming track and then drive off onto the main track +* Diagnostic commands to test decoders that aren't reading or writing correctly +* Support for Uno, Nano, Mega, Nano Every and Teensy microcontrollers +* User Functions: Filter regular commands (like a turnout or output command) and pass it to your own function or accessory +* Support for LCN (layout control nodes) +* mySetup.h file that acts like an Autoexec.Bat command to send startup commands to the CS +* High Accuracty Waveform option for rock steady DCC signals +* New current response outputs current in mA, overlimit current, and maximum board capable current. Support for new current meter in JMRI +* USB Browser based EX-WebThrottle +* New, simpler, function control command +* Number of locos discovery command `<#>` +* Emergency stop command +* Release cabs from memory command <-> all cabs, <- CAB> for just one loco address +* Automatic slot (register) management * Automation (coming soon) NOTE: DCC-EX is a major rewrite to the code. We started over and rebuilt it from the ground up! For what that means to you, click [HERE](notes/rewrite.md). From 0988340ff8764c87c22f0ce1915200ddea72cd68 Mon Sep 17 00:00:00 2001 From: Fred Date: Sun, 16 May 2021 01:36:41 +0000 Subject: [PATCH 52/62] Committing a SHA --- GITHUB_SHA.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GITHUB_SHA.h b/GITHUB_SHA.h index d6fbca6..b1bd9cd 100644 --- a/GITHUB_SHA.h +++ b/GITHUB_SHA.h @@ -1 +1 @@ -#define GITHUB_SHA "6766d95" +#define GITHUB_SHA "c7af43c" From bc1398d3c457647409aa7e74e1d6547143aa5fb4 Mon Sep 17 00:00:00 2001 From: Fred Date: Sat, 15 May 2021 21:37:33 -0400 Subject: [PATCH 53/62] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9a04c47..94a01c6 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ Both CommandStation-EX and BaseStation-Classic support much of the NMRA Digital * Control of all cab functions F0-F28 and F29-F68 * Main Track: Write configuration variable bytes and set/clear specific configuration variable (CV) bits (aka Programming on Main or POM) * Programming Track: Same as the main track with the addition of reading configuration variable bytes -* And manu more custom features. see [What's new in CommandStation-EX?]#whats-new-in-commandstation-ex +* And manu more custom features. see [What's new in CommandStation-EX?](#whats-new-in-commandstation-ex) # What’s in this Repository? From f75a6b47f9802f0679f09f9cecb447989e689d2b Mon Sep 17 00:00:00 2001 From: Fred Date: Sun, 16 May 2021 01:37:47 +0000 Subject: [PATCH 54/62] Committing a SHA --- GITHUB_SHA.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GITHUB_SHA.h b/GITHUB_SHA.h index b1bd9cd..b083867 100644 --- a/GITHUB_SHA.h +++ b/GITHUB_SHA.h @@ -1 +1 @@ -#define GITHUB_SHA "c7af43c" +#define GITHUB_SHA "bc1398d" From de8f9396f79e6bdf7a6a1d46fb12c52aaf9fec80 Mon Sep 17 00:00:00 2001 From: Fred Date: Sat, 15 May 2021 21:45:39 -0400 Subject: [PATCH 55/62] Update release_notes.md --- release_notes.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/release_notes.md b/release_notes.md index a486987..d087bb6 100644 --- a/release_notes.md +++ b/release_notes.md @@ -1,4 +1,4 @@ -DCC-EX Team is pleased to release CommandStation-EX-v3.1.0 as a Production Release. Release v3.1.0 is a minor release that adds additional features and fixes a number of bugs. With the number of new features, this could have easily been a major release. The team is continually improving the architecture of DCC++EX to make it more flexible and optimizing the code so as to get more performance from the Arduino microprocessors. This release includes all of the Point Releases from v3.0.1 to v3.0.16. +The DCC-EX Team is pleased to release CommandStation-EX-v3.1.0 as a Production Release. Release v3.1.0 is a minor release that adds additional features and fixes a number of bugs. With the number of new features, this could have easily been a major release. The team is continually improving the architecture of DCC++EX to make it more flexible and optimizing the code so as to get more performance from the Arduino microprocessors. This release includes all of the Point Releases from v3.0.1 to v3.0.16. **Known Issues** @@ -149,10 +149,14 @@ DCC-EX Team is pleased to release CommandStation-EX-v3.1.0 as a Production Relea - Neil McKechnie - Worcestershire, UK (NeilMck) - Fred Decker - Holly Springs, North Carolina, USA (FlightRisk) - Dave Cutting - Logan, Utah, USA (Dave Cutting/ David Cutting) -- M Steve Todd - - Engine Driver and JMRI Interface +- M Steve Todd - Scott Catalano - Pennsylvania - Gregor Baues - Île-de-France, France (grbba) +Engine Driver and JMRI Interface + +- M Steve Todd + **exInstaller Software** - Anthony W - Dayton, Ohio, USA (Dex, Dex++) From e12c3fc29547cc6a847d244425f845ecfdae86cc Mon Sep 17 00:00:00 2001 From: Fred Date: Sun, 16 May 2021 01:45:54 +0000 Subject: [PATCH 56/62] Committing a SHA --- GITHUB_SHA.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GITHUB_SHA.h b/GITHUB_SHA.h index b083867..121fcc4 100644 --- a/GITHUB_SHA.h +++ b/GITHUB_SHA.h @@ -1 +1 @@ -#define GITHUB_SHA "bc1398d" +#define GITHUB_SHA "de8f939" From 8a03b889a3c199eed7e06010b8ddc0f05f807da4 Mon Sep 17 00:00:00 2001 From: Fred Date: Sat, 15 May 2021 21:51:10 -0400 Subject: [PATCH 57/62] Update release_notes.md --- release_notes.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/release_notes.md b/release_notes.md index d087bb6..98d2e89 100644 --- a/release_notes.md +++ b/release_notes.md @@ -1,4 +1,4 @@ -The DCC-EX Team is pleased to release CommandStation-EX-v3.1.0 as a Production Release. Release v3.1.0 is a minor release that adds additional features and fixes a number of bugs. With the number of new features, this could have easily been a major release. The team is continually improving the architecture of DCC++EX to make it more flexible and optimizing the code so as to get more performance from the Arduino microprocessors. This release includes all of the Point Releases from v3.0.1 to v3.0.16. +The DCC-EX Team is pleased to release CommandStation-EX-v3.1.0 as a Production Release. Release v3.1.0 is a minor release that adds additional features and fixes a number of bugs. With the number of new features, this could have easily been a major release. The team is continually improving the architecture of DCC++EX to make it more flexible and optimizing the code so as to get more performance from the Arduino microprocessors. This release includes all of the Point Releases from v3.0.1 to v3.0.16. **Known Issues** @@ -134,7 +134,7 @@ The DCC-EX Team is pleased to release CommandStation-EX-v3.1.0 as a Production R - **Fix EEPROM bugs** - **Number of locos discovery command** - `<#>` command - **Support for more locomotives** - 20 locomotives on an UNO and 50 an a Mega. -- **Automatic slot managment** - slot variable in throttle/function commands are ignored and slot management is taken care of automatically. `` command added to release locos from memory. +- **Automatic slot managment** - slot variable in throttle/function commands are ignored and slot management is taken care of automatically. `<->` and `<- CAB> commands added to release locos from memory and stop packets to the track. **Key Contributors** From 971732fce8c899e0e2d1b9520a0f34ed8ef803a9 Mon Sep 17 00:00:00 2001 From: Fred Date: Sun, 16 May 2021 01:51:24 +0000 Subject: [PATCH 58/62] Committing a SHA --- GITHUB_SHA.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GITHUB_SHA.h b/GITHUB_SHA.h index 121fcc4..e4c5034 100644 --- a/GITHUB_SHA.h +++ b/GITHUB_SHA.h @@ -1 +1 @@ -#define GITHUB_SHA "de8f939" +#define GITHUB_SHA "8a03b88" From 6abb65c1f44bc1c385ebf60a07ab1709e357d8dd Mon Sep 17 00:00:00 2001 From: Fred Date: Sat, 15 May 2021 22:12:09 -0400 Subject: [PATCH 59/62] Update release_notes.md Sync release_notes.md with release notes on release page --- release_notes.md | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/release_notes.md b/release_notes.md index 98d2e89..b9cc3ab 100644 --- a/release_notes.md +++ b/release_notes.md @@ -1,8 +1,13 @@ -The DCC-EX Team is pleased to release CommandStation-EX-v3.1.0 as a Production Release. Release v3.1.0 is a minor release that adds additional features and fixes a number of bugs. With the number of new features, this could have easily been a major release. The team is continually improving the architecture of DCC++EX to make it more flexible and optimizing the code so as to get more performance from the Arduino microprocessors. This release includes all of the Point Releases from v3.0.1 to v3.0.16. +The DCC-EX Team is pleased to release CommandStation-EX-v3.1.0 as a Production Release. Release v3.1.0 is a minor release that adds additional features and fixes a number of bugs. With the number of new features, this could have easily been a major release. The team is continually improving the architecture of DCC++EX to make it more flexible and optimizing the code so as to get more performance from the Arduino (and other) microprocessors. This release includes all of the Point Releases from v3.0.1 to v3.0.16. + +**Downloads (zip and tar.gz) below. These are named without version number in the folder name to make the Arduino IDE happy.** + +[CommandStation-EX.zip](https://github.com/DCC-EX/CommandStation-EX/releases/download/v3.1.0-Prod/CommandStation-EX.zip) +[CommandStation-EX.tar.gz](https://github.com/DCC-EX/CommandStation-EX/releases/download/v3.1.0-Prod/CommandStation-EX.tar.gz) **Known Issues** -- **Wi-Fi** - works, but requires sending commands from a serial monitor if you want to switch between AP mode and STA station mode. +- **Wi-Fi** - works, but requires sending commands from a serial monitor if you want to switch between AP mode and STA station mode after initial setup - **Pololu Motor Shield** - is supported with this release, but the user may have to adjust timings to enable programming mode due to limitation in its current sensing circuitry #### Summary of key features and/or bug fixes by Point Release @@ -134,7 +139,7 @@ The DCC-EX Team is pleased to release CommandStation-EX-v3.1.0 as a Production R - **Fix EEPROM bugs** - **Number of locos discovery command** - `<#>` command - **Support for more locomotives** - 20 locomotives on an UNO and 50 an a Mega. -- **Automatic slot managment** - slot variable in throttle/function commands are ignored and slot management is taken care of automatically. `<->` and `<- CAB> commands added to release locos from memory and stop packets to the track. +- **Automatic slot management** - slot variable in throttle/function commands are ignored and slot management is taken care of automatically. `<->` and `<- CAB>` commands added to release locos from memory and stop packets to the track. **Key Contributors** @@ -149,11 +154,11 @@ The DCC-EX Team is pleased to release CommandStation-EX-v3.1.0 as a Production R - Neil McKechnie - Worcestershire, UK (NeilMck) - Fred Decker - Holly Springs, North Carolina, USA (FlightRisk) - Dave Cutting - Logan, Utah, USA (Dave Cutting/ David Cutting) -- M Steve Todd +- M Steve Todd - - Scott Catalano - Pennsylvania - Gregor Baues - Île-de-France, France (grbba) -Engine Driver and JMRI Interface +**Engine Driver and JMRI Interface** - M Steve Todd @@ -179,9 +184,9 @@ Engine Driver and JMRI Interface **Beta Testing / Release Management / Support** - Larry Dribin - Release Management -- Keith Ledbetter - Kevin Smith - Rochester Hills, Michigan USA (KC Smith) -- Brad Van der Elst +- Keith Ledbetter +- BradVan der Elst - Andrew Pye - Mike Bowers - Randy McKenzie @@ -194,3 +199,8 @@ Engine Driver and JMRI Interface - Gajanatha Kobbekaduwe - Sumner Patterson - Paul - Virginia, USA + +**Downloads (zip and tar.gz) below. These are named without version number in the folder name to make the Arduino IDE happy.** + +[CommandStation-EX.zip](https://github.com/DCC-EX/CommandStation-EX/releases/download/v3.1.0-Prod/CommandStation-EX.zip) +[CommandStation-EX.tar.gz](https://github.com/DCC-EX/CommandStation-EX/releases/download/v3.1.0-Prod/CommandStation-EX.tar.gz) From 1807fe5c5f9fb6f713be6d51b82efe618369aaf9 Mon Sep 17 00:00:00 2001 From: Fred Date: Sun, 16 May 2021 02:12:24 +0000 Subject: [PATCH 60/62] Committing a SHA --- GITHUB_SHA.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GITHUB_SHA.h b/GITHUB_SHA.h index e4c5034..d4932b1 100644 --- a/GITHUB_SHA.h +++ b/GITHUB_SHA.h @@ -1 +1 @@ -#define GITHUB_SHA "8a03b88" +#define GITHUB_SHA "6abb65c" From 90487d2d835de1d032b98ea4ebca3bb573057d7d Mon Sep 17 00:00:00 2001 From: Fred Date: Sat, 15 May 2021 22:13:33 -0400 Subject: [PATCH 61/62] Update release_notes_v3.1.0.md --- Release_Notes/release_notes_v3.1.0.md | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/Release_Notes/release_notes_v3.1.0.md b/Release_Notes/release_notes_v3.1.0.md index 849acf7..b9cc3ab 100644 --- a/Release_Notes/release_notes_v3.1.0.md +++ b/Release_Notes/release_notes_v3.1.0.md @@ -1,8 +1,13 @@ -DCC-EX Team is pleased to release CommandStation-EX-v3.1.0 as a Production Release. Release v3.1.0 is a minor release that adds additional features and fixes a number of bugs. With the number of new features, this could have easily been a major release. The team is continually improving the architecture of DCC++EX to make it more flexible and optimizing the code so as to get more perfromance from the Arduino microprocessors. This release includes all of the Point Releases from v3.0.1 to v3.0.16. +The DCC-EX Team is pleased to release CommandStation-EX-v3.1.0 as a Production Release. Release v3.1.0 is a minor release that adds additional features and fixes a number of bugs. With the number of new features, this could have easily been a major release. The team is continually improving the architecture of DCC++EX to make it more flexible and optimizing the code so as to get more performance from the Arduino (and other) microprocessors. This release includes all of the Point Releases from v3.0.1 to v3.0.16. + +**Downloads (zip and tar.gz) below. These are named without version number in the folder name to make the Arduino IDE happy.** + +[CommandStation-EX.zip](https://github.com/DCC-EX/CommandStation-EX/releases/download/v3.1.0-Prod/CommandStation-EX.zip) +[CommandStation-EX.tar.gz](https://github.com/DCC-EX/CommandStation-EX/releases/download/v3.1.0-Prod/CommandStation-EX.tar.gz) **Known Issues** -- **Wi-Fi** - works, but requires sending commands from a serial monitor if you want to switch between AP mode and STA station mode. +- **Wi-Fi** - works, but requires sending commands from a serial monitor if you want to switch between AP mode and STA station mode after initial setup - **Pololu Motor Shield** - is supported with this release, but the user may have to adjust timings to enable programming mode due to limitation in its current sensing circuitry #### Summary of key features and/or bug fixes by Point Release @@ -134,7 +139,7 @@ DCC-EX Team is pleased to release CommandStation-EX-v3.1.0 as a Production Relea - **Fix EEPROM bugs** - **Number of locos discovery command** - `<#>` command - **Support for more locomotives** - 20 locomotives on an UNO and 50 an a Mega. -- **Automatic slot managment** - slot variable in throttle/function commands are ignored and slot management is taken care of automatically. `` command added to release locos from memory. +- **Automatic slot management** - slot variable in throttle/function commands are ignored and slot management is taken care of automatically. `<->` and `<- CAB>` commands added to release locos from memory and stop packets to the track. **Key Contributors** @@ -149,10 +154,14 @@ DCC-EX Team is pleased to release CommandStation-EX-v3.1.0 as a Production Relea - Neil McKechnie - Worcestershire, UK (NeilMck) - Fred Decker - Holly Springs, North Carolina, USA (FlightRisk) - Dave Cutting - Logan, Utah, USA (Dave Cutting/ David Cutting) -- M Steve Todd - - Engine Driver and JMRI Interface +- M Steve Todd - - Scott Catalano - Pennsylvania - Gregor Baues - Île-de-France, France (grbba) +**Engine Driver and JMRI Interface** + +- M Steve Todd + **exInstaller Software** - Anthony W - Dayton, Ohio, USA (Dex, Dex++) @@ -175,9 +184,9 @@ DCC-EX Team is pleased to release CommandStation-EX-v3.1.0 as a Production Relea **Beta Testing / Release Management / Support** - Larry Dribin - Release Management -- Keith Ledbetter - Kevin Smith - Rochester Hills, Michigan USA (KC Smith) -- Brad Van der Elst +- Keith Ledbetter +- BradVan der Elst - Andrew Pye - Mike Bowers - Randy McKenzie @@ -190,3 +199,8 @@ DCC-EX Team is pleased to release CommandStation-EX-v3.1.0 as a Production Relea - Gajanatha Kobbekaduwe - Sumner Patterson - Paul - Virginia, USA + +**Downloads (zip and tar.gz) below. These are named without version number in the folder name to make the Arduino IDE happy.** + +[CommandStation-EX.zip](https://github.com/DCC-EX/CommandStation-EX/releases/download/v3.1.0-Prod/CommandStation-EX.zip) +[CommandStation-EX.tar.gz](https://github.com/DCC-EX/CommandStation-EX/releases/download/v3.1.0-Prod/CommandStation-EX.tar.gz) From ac372289425ac2c0e14d6e070542aa753f12095e Mon Sep 17 00:00:00 2001 From: Fred Date: Sun, 16 May 2021 02:13:48 +0000 Subject: [PATCH 62/62] Committing a SHA --- GITHUB_SHA.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GITHUB_SHA.h b/GITHUB_SHA.h index d4932b1..a9f809f 100644 --- a/GITHUB_SHA.h +++ b/GITHUB_SHA.h @@ -1 +1 @@ -#define GITHUB_SHA "6abb65c" +#define GITHUB_SHA "90487d2"