1
0
mirror of https://github.com/DCC-EX/CommandStation-EX.git synced 2024-11-23 16:16:13 +01:00
CommandStation-EX/version.h

240 lines
13 KiB
C
Raw Normal View History

2020-09-24 03:53:33 +02:00
#ifndef version_h
#define version_h
#include "StringFormatter.h"
2023-08-25 19:08:58 +02:00
#define VERSION "5.0.2"
// 5.0.2 - Bugfix: ESP32 30ms off time
2023-08-24 10:05:31 +02:00
// 5.0.1 - Bugfix: execute 30ms off time before rejoin
2023-08-07 19:45:45 +02:00
// 5.0.0 - Make 4.2.69 the 5.0.0 release
2023-08-04 14:45:05 +02:00
// 4.2.69 - Bugfix: Make <!> work in DC mode
2023-08-02 10:00:43 +02:00
// 4.2.68 - Rename track mode OFF to NONE
2023-08-02 01:12:32 +02:00
// 4.2.67 - AVR: Pin specific timer register seting
// - Protect Uno user from choosing DC(X)
// - More Nucleo variant defines
// - GPIO PCA9555 / TCA9555 support
2023-07-25 11:30:08 +02:00
// 4.2.66 - Throttle inrush current by applying PWM to brake pin when
// fault pin goes active
2023-07-09 12:04:40 +02:00
// 4.2.65 - new config WIFI_FORCE_AP option
// 4.2.63 - completely new overcurrent detection
2023-07-06 15:19:44 +02:00
// - ESP32 protect from race in RMT code
2023-06-30 21:18:45 +02:00
// 4.2.62 - Update IO_RotaryEncoder.h to ignore sending current position
// - Update IO_EXTurntable.h to remove forced I2C clock speed
// - Show device offline if EX-Turntable not connected
2023-06-26 20:01:56 +02:00
// 4.2.61 - MAX_CURRENT restriction (caps motor shield value)
// 4.2.60 - Add mDNS capability to ESP32 for autodiscovery
// 4.2.59 - Fix: AP SSID was DCC_ instead of DCCEX_
// 4.2.58 - Start motordriver as soon as possible but without waveform
2023-06-21 10:49:49 +02:00
// 4.2.57 - New overload handling (faster and handles commonFaultPin again)
// - Optimize analog read STM32
2023-06-20 11:32:43 +02:00
// 4.2.56 - Update IO_RotaryEncoder.h:
// - Improved I2C communication, non-blocking reads
// - Enable sending positions to the encoder from EXRAIL via SERVO()
2023-06-19 00:09:27 +02:00
// 4.2.55 - Optimize analog read for AVR
2023-06-03 22:01:14 +02:00
// 4.2.54 - EX8874 shield in config.example.h
// - Fix: Better warnings for pin number errors
2023-05-29 09:48:22 +02:00
// - Fix: Default roster list possible in Withrottle and <jR>
// - Fix: Pin handling supports pins up to 254
// 4.2.53 - Fix: Fault pin handling made more straight forward
// 4.2.52 - Experimental support for sabertooth motor controller on ESP32
// 4.2.51 - Add DISABLE_PROG to disable programming to save RAM/Flash
2023-05-08 00:22:31 +02:00
// 4.2.50 - Fixes: estop all, turnout eeprom, cab ID check
2023-05-02 23:02:52 +02:00
// 4.2.49 - Exrail SPEED take notice of external direction change
2023-05-02 13:29:03 +02:00
// 4.2.48 - BROADCAST/WITHROTTLE Exrail macros
2023-04-19 12:18:47 +02:00
// 4.2.47 - Correct response to <JA 0>
2023-04-17 23:40:48 +02:00
// 4.2.46 - Support boards with inverted fault pin
// 4.2.45 - Add ONCLOCKMINS to FastClock to allow hourly repeat events
2023-04-11 04:01:25 +02:00
// 4.2.44 - Add PowerShell installer EX-CommandStation-installer.exe
// 4.2.43 - Fix STM32 set right port mode bits for analog
// 4.2.42 - Added EXRAIL TURNOUTL Macro definition
2023-04-06 00:19:43 +02:00
// 4.2.41 - Move HAl startup to ASAP in setup()
// - Fix DNOU8 output pin setup to all LOW
2023-04-05 23:03:59 +02:00
// 4.2.40 - Automatically detect conflicting default I2C devices and disable
// 4.2.39 - DFplayer driver now polls device to detect failures and errors.
2023-03-29 22:54:18 +02:00
// 4.2.38 - Clean up compiler warning when IO_RotaryEncoder.h included
// 4.2.37 - Add new FLAGS HAL device for communications to/from EX-RAIL;
// - Fix diag display of high VPINs within IODevice class.
// 4.2.36 - do not broadcast a turnout state that has not changed
// - Use A2/A3 for current sensing on ESP32 + Motor Shield
2023-03-23 20:52:49 +01:00
// 4.2.35 - add <z> direct pin manipulation command
2023-03-20 22:04:08 +01:00
// 4.2.34 - Completely fix EX-IOExpander analogue inputs
2023-03-20 10:05:53 +01:00
// 4.2.33 - Fix EX-IOExpander non-working analogue inputs
// 4.2.32 - Fix LCD/Display bugfixes from 4.2.29
2023-03-18 19:52:01 +01:00
// 4.2.31 - Removes EXRAIL statup from top of file. (BREAKING CHANGE !!)
// Just add AUTOSTART to the top of your myAutomation.h to restore this function.
2023-03-18 16:05:21 +01:00
// 4.2.30 - Fixes/enhancements to EX-IOExpander device driver.
// 4.2.29 - Bugfix Scroll LCD without empty lines and consistent
2023-03-15 10:39:30 +01:00
// 4.2.28 - Reinstate use of timer11 in STM32 - remove HA mode.
// - Update IO_DFPlayer to work with MP3-TF-16P rev3.
// 4.2.27 - Bugfix LCD showed random characters in SCROLLMODE 2
2023-03-14 10:04:08 +01:00
// 4.2.26 - EX-IOExpander device driver enhancements
// - Enhance I2C error checking
// - Introduce delays to _loop to allow room for other I2C device comms
// - Improve analogue read reliability
2023-03-11 23:46:11 +01:00
// 4.2.25 - Bugfix SAMD21 Exrail odd byte boundary
// 4.2.24 - Bugfix Ethernet shield: Static IP now possible
// 4.2.23 - Bugfix signalpin2 was not set up in shadow port
// 4.2.22 - Implement broadcast of Track Manager changes
2023-03-04 09:55:13 +01:00
// 4.2.21 - Implement non-blocking I2C for EX-IOExpander device driver
2023-03-02 14:03:05 +01:00
// 4.2.20 - <JG> & <JI> commands for multi-track gauges
// - Reinstate <c> but remember its a bit useless when TM involved.
// 4.2.19 - Bugfix for analog reading of track current sensor offset.
2023-02-22 22:28:16 +01:00
// 4.2.18 - I2C Multiplexer support through Extended Addresses,
// added for Wire, 4209 and AVR I2C drivers.
// - I2C retries when an operation fails.
// - I2C timeout handling and recovery completed.
// - I2C SAMD Driver Read code completed.
// - PCF8575 I2C GPIO driver added.
// - EX-RAIL ANOUT function for triggering analogue
// HAL drivers (e.g. analogue outputs, DFPlayer, PWM).
2023-02-23 12:13:05 +01:00
// - EX-RAIL SCREEN function for writing to screens other
// than the primary one.
2023-02-22 22:28:16 +01:00
// - Installable HALDisplay Driver, with support
// for multiple displays.
// - Layered HAL Drivers PCA9685pwm and Servo added for
// native PWM on PCA9685 module and
// for animations of servo movement via PCA9685pwm.
// This is intended to support EXIOExpander and also
// replace the existing PCA9685 driver.
// - Add <D HAL RESET> to reinitialise failed drivers.
2023-02-23 12:13:05 +01:00
// - Add UserAddin facility to allow a user-written C++ function to be
// declared in myHal.cpp, to be called at a user-specified frequency.
// - Add ability to configure clock speed of PCA9685 drivers
// (to allow flicker-free LED control).
// - Improve stability of VL53L0X driver when XSHUT pin connected.
// - Enable DCC high accuracy mode for STM32 on standard motor shield (pins D12/D13).
// - Incorporate improvements to ADC scanning performance (courtesy of HABA).
2023-02-12 20:35:57 +01:00
// 4.2.17 LCN bugfix
2023-02-12 01:36:26 +01:00
// 4.2.16 Move EX-IOExpander servo support to the EX-IOExpander software
2023-02-09 04:15:04 +01:00
// 4.2.15 Add basic experimental PWM support to EX-IOExpander
2023-02-06 10:39:25 +01:00
// EX-IOExpander 0.0.14 minimum required
2023-01-29 08:50:19 +01:00
// 4.2.14 STM32F4xx fast ADC read implementation
2023-01-29 08:13:52 +01:00
// 4.2.13 Broadcast power for <s> again
// 4.2.12 Bugfix for issue #299 TurnoutDescription NULL
2023-01-27 17:03:39 +01:00
// 4.2.11 Exrail IFLOCO feature added
2023-01-26 09:53:25 +01:00
// 4.2.10 SIGNAL/SIGNALH bug fix as they were inverted
// IO_EXIOExpander.h input speed optimisation
// ONCLOCK and ONCLOCKTIME command added to EXRAIL for EX-FastCLock
// <JC> Serial command added for EX-FastClock
// <jC> Broadcast added for EX-FastClock
// IO_EXFastClock.h added for I2C FastClock connection
2022-12-26 12:06:42 +01:00
// 4.2.9 duinoNodes support
// 4.2.8 HIGHMEM (EXRAIL support beyond 64kb)
// Withrottle connect/disconnect improvements
// Report BOARD_TYPE if provided by compiler
2022-12-04 20:12:04 +01:00
// 4.2.7 FIX: Static IP addr
2022-12-05 15:52:23 +01:00
// FIX: Reuse WiThrottle list entries
2022-11-18 20:19:53 +01:00
// 4.2.6 FIX: Remove RAM thief
// FIX: ADC port 8-15 fix
2022-11-09 00:52:07 +01:00
// 4.2.5 Make GETFLASHW code more universal
// FIX: Withrottle roster index
2022-11-04 16:08:43 +01:00
// Ethernet start improvement and link detection
2022-08-30 22:45:10 +02:00
// 4.2.4 ESP32 experimental BT support
// More DC configurations possible and lower frequency
2022-09-18 22:30:19 +02:00
// Handle decoders that do not ack at write better
// 4.2.3 Bugfix direction when togging between MAIN and DC
// Bugfix return fail when F/f argument out of range
// More error checking for out of bounds motor driver current trip limit
// 4.2.2 ESP32 beta
// JOIN/UMJOIN on ESP32
2022-08-02 21:56:06 +02:00
// 4.2.1 ESP32 alpha
// Ready for alpha test on ESP32. Track switching with <=> untested
// Send DCC signal on MAIN
// Detects ACK on PROG
// 4.2.0 Track Manager additions:
// Broadcast improvements to separate <> and Withrottle responses
2022-06-06 18:37:23 +02:00
// Float eliminated saving >1.5kb PROGMEM and speed.
2022-03-28 15:53:16 +02:00
// SET_TRACK(track,mode) Functions (A-H, MAIN|PROG|DC|DCX|OFF)
// New DC track function and DCX reverse polarity function
// TrackManager DCC & DC up to 8 Districts Architecture
// Automatic ALIAS(name)
// Command Parser now accepts Underscore in Alias Names
// 4.1.1 Bugfix: preserve turnout format
2022-05-13 16:21:15 +02:00
// Bugfix: parse multiple commands in one buffer string correct
2022-05-18 18:44:41 +02:00
// Bugfix: </> command signal status in Exrail
// 4.1.0 ...
//
2022-03-18 14:43:15 +01:00
// 4.0.2 EXRAIL additions:
2022-04-27 17:38:00 +02:00
// ACK defaults set to 50mA LIMIT, 2000uS MIN, 20000uS MAX
2022-04-19 12:34:57 +02:00
// myFilter automatic detection (no need to call setFilter)
2022-04-18 17:50:05 +02:00
// FIX negative route ids in WIthrottle problem.
// IFRED(signal_id), IFAMBER(signal_id), IFGREEN(signal_id)
// </RED signal_id> </AMBER signal_id> </GREEN signal_id> commands
2022-04-13 00:32:23 +02:00
// <t cab> command to obtain current throttle settings
// JA, JR, JT commands to obtain route, roster and turnout descriptions
// HIDDEN turnouts
// PARSE <> commands in EXRAIL
2022-03-24 12:56:06 +01:00
// VIRTUAL_TURNOUT
2022-03-31 23:04:40 +02:00
// </KILL ALL> and KILLALL command to stop all tasks.
2022-03-24 12:56:06 +01:00
// FORGET forgets the current loco in DCC reminder tables.
2022-03-18 14:43:15 +01:00
// Servo signals (SERVO_SIGNAL)
// High-On signal pins (SIGNALH)
// Wait for analog value (ATGTE, ATLT)
2022-03-24 14:56:01 +01:00
// 4.0.1 Small EXRAIL updates
// EXRAIL BROADCAST("msg")
// EXRAIL POWERON
// 4.0.0 Major functional and non-functional changes.
// Engine Driver "DriveAway" feature enhancement
// 'Discovered Server' multicast Dynamic Network Server (mDNS) displays available WiFi connections to a DCC++EX Command Station
// New EX-RAIL "Extended Railroad Automation Instruction Language" automation capability.
// EX-Rail Function commands for creating Automation, Route & Sequence Scripts
// EX-RAIL “ROSTER” Engines Id & Function key layout on Engine Driver or WiThrottle
// EX-RAIL DCC++EX Commands to Control EX-RAIL via JMRI Send pane and IDE Serial monitors
// New JMRI feature enhancements;
// Reads DCC++EX EEPROM & automatically uploades any Signals, DCC Turnouts, Servo Turnouts, Vpin Turnouts , & Output pane
// Turnout class revised to expand turnout capabilities, new commands added.
// Provides for multiple additional DCC++EX WiFi connections as accessory controllers or CS for a programming track when Motor Shields are added
// Supports Multiple Command Station connections and individual tracking of Send DCC++ Command panes and DCC++ Traffic Monitor panes
// New HAL added for I/O (digital and analogue inputs and outputs, servos etc)
// Automatically detects & connects to supported devices included in your config.h file
// Support for MCP23008, MCP23017 and PCF9584 I2C GPIO Extender modules.
// Support for PCA9685 PWM (servo) control modules.
// Support for analogue inputs on Arduino pins and on ADS111x I2C modules.
// Support for MP3 sound playback via DFPlayer module.
// Support for HC-SR04 Ultrasonic range sensor module.
// Support for VL53L0X Laser range sensor module (Time-Of-Flight).
// Added <D HAL SHOW> diagnostic command to show configured devices
// New Processor Support added
// Compiles on Nano Every and Teensy
// Native non-blocking I2C drivers for AVR and Nano architectures (fallback to blocking Wire library for other platforms).
// Can disable EEPROM code
// EEPROM layout change - deletes EEPROM contents on first start following upgrade.
// Output class now allows ID > 255.
// Configuration options to globally flip polarity of DCC Accessory states when driven from <a> command and <T> command.
// Increased use of display for showing loco decoder programming information.
2021-11-30 20:11:45 +01:00
// Can define border between long and short addresses
// Turnout and accessory states (thrown/closed = 0/1 or 1/0) can be set to match RCN-213
2021-12-21 13:26:16 +01:00
// Bugfix: one-off error in CIPSEND drop
// Bugfix: disgnostic display of ack pulses >32kus
// Bugfix: Current read from wrong ADC during interrupt
// 3.2.0 Development Release Includes all of 3.1.1 thru 3.1.7 enhancements
2021-11-07 16:04:49 +01:00
// 3.1.7 Bugfix: Unknown locos should have speed forward
2021-07-31 15:40:32 +02:00
// 3.1.6 Make output ID two bytes and guess format/size of registered outputs found in EEPROM
// 3.1.5 Fix LCD corruption on power-up
// 3.1.4 Refactor OLED and LCD drivers and remove unused code
2021-06-11 01:03:38 +02:00
// 3.1.3 Add a loop delay to give more time for sensing an Ethernet cable connection
2021-06-10 20:23:57 +02:00
// 3.1.2 Eliminate wait after write when prog is joined or prog power is off
2021-06-10 20:06:59 +02:00
// 3.1.1 SH1106 OLED Display Offset Fix
// 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.
// 3.0.13 Functions>127 fix
// 3.0.12 Fix HOSTNAME function for STA mode for WiFi
// 3.0.11 28 speedstep support
2021-03-31 00:19:32 +02:00
// 3.0.10 Teensy Support
2021-03-30 23:01:37 +02:00
// 3.0.9 rearranges serial newlines for the benefit of JMRI.
// 3.0.8 Includes <* *> wraps around DIAGs for the benefit of JMRI.
2021-03-24 11:36:26 +01:00
// 3.0.7 Includes merge from assortedBits (many changes) and ACK manager change for lazy decoders
// 3.0.6 Includes:
// Fix Bug that did not let us transmit 5 byte sized packets like PoM
2021-03-09 03:50:11 +01:00
// 3.0.5 Includes:
// Fix Fn Key startup with loco ID and fix state change for F16-28
Nano every2 (#129) * Start adding back unowifi stuffz * Uno Wifi compiling * Fixes for compile arduino unowifi r2 * FlasString and Timers for Uno Wifi ALL these changes should be portable back to master * Remove extra timer that was already added * Changed to EveryTimerB * Add everytimerb.h * Cleanup * Linear address <a> cmd * Allow lower case keywords * Add the F define to be on safe side if it is not present in the library core code * Clean simple Timer interface Removes overkill files, puts all timer in a single small file. (DCCTimer) * Timer port * Timer working And slow wave command removed * Correcting non-portables merged from master * Wave-state machine ( part 11) * Microtuning waveform Significant reduction in code paths and call overheads * Current check cleanup * Fix no-loco id Has to handle -1 correctly * fix wrong format letter * redo flow through wifisetup again * version++ * bugfixes wifi setup * Retry harder for AP mode * Remove unued if * DIO2 replacement Currently for writing signal pins during waveform. * Drop analogReadFast (see DCCTimer) AnalogRead speed set in DCCTimer for ease of porting. Code tidy and diagnostics in MotorDriver * UNTESTED fast power,brake,fault pins * Distunguish between in/out of FASTPIN * minor performance tweaks * Config comments and example use * Config/example loading * IP/PORT on LCD * Ethernet simulated mac Plus fixed listening port * Github SHA * Committing a SHA * Fix for nano compile * Comments and a reliability fix. * UnoRev2 protection * PWM pin implementation * fix wifi setup issue * Reinstate IP_PORT * Wifi channel and code cleaninga * Reduce duplicated F() macros Compiler isn't as clever as one might expect * Committing a SHA * Update config.example.h Add comment to wifi channel section * Committing a SHA * Handle shields with common fault pins (Pololu) * Committing a SHA * remove warning * Committing a SHA * only do the sha generation on master * yaml syntax * Fast SSD1306 OLED driver Incorporate code from SSD1306Ascii library to speed up OLED screen updates, reduce memory requirements and eliminate some library dependences. * Fix auto-configure from cold boot. Add call to Wire.begin(). * Update comment for OLED_DRIVER define. * Update MotorDrivers.h Add a motor board definition for using the IBT_2 board for a high current to the main track and keep the Arduino Motor Shield for operating the programming track. * Committing a SHA * Fix missing F in motor drivers * JOIN relay pin * Swap Join Relay high/low * Hide WIFI_CONNECT_TIMEOUT This is not what the config suggests it is... The timeout is in the ES and defaults to 15 seconds. Abandoning it early leads to confused setup. * Enhance OLED/LCD speed Write one character or position command per loop entry so as not to hold up the loop. Add support for SH1106 OLED as 132x64 size option. * Enhance OLED/LCD speed * Delete comment about OLED on UNO. * Trim unwanted code * Handle display types correctly * Update comments * Speed up OLED writes Add new flushDisplay() to end any in-progress I2C transaction. Previously, an redundant command was sent that ended the in-progress transaction but also sent another complete, but unnecessary, transaction. * Comments and copyright update * Reduce RAM and flash requirement a few more bytes. * Move statics into LCDDisplay class, and reduce RAM. Some state variables were static in LCDDisplay.write(). Moved to class members. Also, types of data items like row, column & character position changed to int8_t to save a few bytes of RAM. * Type lcdCols and lcdRows to unsigned. Since lcdCols is normally 128, it needs to be uint8_t, not int8_t. * remove timeout from user config * faultpin is common only if it exists ; make code prettier * Rationalisation of SSD1306 driver Merge SSD1306AsciiWire.cpp into SSD1306Ascii.cpp and rename SSD1306AsciiWire.h as SSD1306Ascii.h. Merge allFonts.h into System5x7.h and rename as SSD1306font.h. Move all SSD1306 files into root folder to facilitate compilation in Arduino IDE. * Fix some font attributes as const. * Remove unused initialisation sequences for tiny oled screens * Add m_ to variables * Bump up I2C speed Speed was 100kHz (default). Max for OLEDis 400kHz. * Revert "Bump up I2C speed" This reverts commit 1c1168f43314d3a6855738fbc406d5654e801831. * Bump up I2C speed Speed was 100kHz (default). Max for OLEDis 400kHz. * Drop duplicate DIAG * ignore mySetup.h files * Restore uno to default_envs Restore uno (previously commented out) to default_envs. * Update objdump.bat Allows other editors as Notepad is very slow on large files * Prog Track overload during cv read * Faster LCD Driver Extract LCD driver from library; Trim unused functionality; Reduce I2C communications to minimum; Speed up I2C clock to 400kHz. * Update config.example.h Add IBT_2_WITH_ARDUINO to example config * Update config.example.h * Screen enhancements (#126) * Add I2CManager to coordinate I2C shared parameters. * Add use of I2CManager, and experimental scrolling strategies. New scrolling capability by defining SCROLLMODE in Config.h to 0 (original), 1 (by page) or 2 (by line). If not defined, defaults to 0. * Scrolling updates New scrolling capability by defining SCROLLMODE in Config.h to 0 (original), 1 (by page) or 2 (by line). If not defined, defaults to 0. Reformat. * Add I2CManager calls. Remove unnecessary delays. * Add I2CManager calls, remove unnecessary I2C delays. * SSD1306: Move methods from .h to .cpp and reformat. * Fix compiler warning in LiquidCrystal_I2C * Allow forcing of I2C clock speed. New method forceClock allows the I2C speed to be overridden. For example, if the I2C bus is long then the speed can be forced lower. It can also be forced higher to gain performance if devices are capable. * Make Config.h conditionally included. Allow for non-existence of Config.h. * Correct scrolling and allow longer messages Correct the handling of scrolling in scrollmode 1 to avoid a blank page being displayed. Also, allow MAX_MSG_SIZE to be optionally configured to override maximum message length on screens. * compiler warning on uno Co-authored-by: dexslab <dex35803@gmail.com> Co-authored-by: Asbelos <asbelos@btinternet.com> Co-authored-by: Harald Barth <haba@kth.se> Co-authored-by: Neil McKechnie <neilmck999@gmail.com> Co-authored-by: Neil McKechnie <75813993+Neil-McK@users.noreply.github.com>
2021-03-07 21:58:35 +01:00
// 3.0.4 Includes:
// Wifi startup bugfixes
2021-01-21 12:10:52 +01:00
// 3.0.3 Includes:
// <W addr> command to write loco address and clear consist
// <R> command will allow for consist address
// Startup commands implemented
2020-09-24 03:53:33 +02:00
2020-10-22 20:38:10 +02:00
#endif