v1.3.0
This is a substantial new feature release that should not introduce any breaking changes, however there are some notable items to be aware of:
- Throttle updates are now queued with a timer to prevent buffer overloads and broadcast storms. An additional constructor attribute "userChangeDelay" enables user configuration of the queue time (default 100ms).
- The current software only/in-throttle Consist class and all associated methods are now DEPRECATED and will be removed in version 2.0.0 of this library.
- This version introduces support for the new EX-CommandStation consists to replace the in-throttle consists, now known as CSConsist.
The full release notes:
- Introduce queued throttle updates to prevent buffer overloads and broadcast storms
- Additional constructor attribute "userChangeDelay" enables user configuration of the queue time
- Bug fix GitHub issue #39 sending unnecessary CRLF using println instead of print
- Move version history to this file and expose via DCCEXProtocol::getLibraryVersion()
- Major clean up of irrelevant dependencies on a DCCEXProtocolDelegate instance
- Add missing guards when calling DCCEXProtocolDelegate methods if no instance is set
- Add support for command station consists in favour of the current in-throttle consists
- DEPRECATE existing in-throttle consists, these will be REMOVED in 2.0.0:
- ALL current Consist METHODS and CLASSES are now deprecated
- New CSConsist methods:
- Accessible via csConsists->getFirst()
- requestCSConsists()
- createCSConsist(int leadLoco, bool reversed)
- addCSConsistMember(CSConsist *csConsist, int address, bool reversed)
- getCSConsistByLeadLoco(int address)
- getCSConsistByLeadLoco(Loco *loco)
- getCSConsistByMemberLoco(int address)
- getCSConsistByMemberLoco(Loco *loco)
- removeCSConsistMember(CSConsist *csConsist, int address)
- deleteCSConsist(int leadLoco)
- deleteCSConsist(CSConsist *csConsist)
- clearCSConsists()
- setThrottle(CSConsist *csConsist, int speed, Direction direction)
- functionOn(CSConsist *csConsist, int function)
- functionOff(CSConsist *csConsist, int function)
- isFunctionOn(CSConsist *csConsist, int function)
- DCCEXProtocolDelegate new method receivedCSConsist(int leadLoco, CSConsist *csConsist)
- Add ability to replicate functions across CSConsist members (does not act like CV19/21/22)
- CSConsist *csConsist = new CSConsist(true)
- createCSConsist(int leadLoco, bool reversed, bool replicateFunctions)
- When enabled, setting a function for the CSConsist sets the same across all members
- Add support for momentum, new methods:
- setMomentumAlgorithm(MomentumAlgorithm algorithm)
- setDefaultMomentum(int momentum)
- setDefaultMomentum(int accelerating, int braking)
- setMomentum(int address, int momentum)
- setMomentum(Loco *loco, int momentum)
- setMomentum(int address, int accelerating, int braking)
- setMomentum(Loco *loco, int accelerating, int braking)
- Add method to enable/disable debug output to console, default is off (false)
- setDebug(bool debug)
- Add support for fast clock with new delegate methods:
- setFastClock(int minutes, int speedFactor)
- requestFastClockTime()
- receivedSetFastClock(int minutes, int speedFactor)
- receivedFastClockTime(int minutes)
- Add support for track gauges (current limits) and track current:
- requestTrackCurrentGauges()
- requestTrackCurrents()
- receivedTrackCurrentGauge(char track, int limit)
- receivedTrackCurrent(char track, int current)
- Fix compiler warnings by change char * to const char * in these methods:
- sendCommand(const char *cmd)
- receivedScreenUpdate(int screen, int row, const char *message)