Skip to content

v1.3.0

Choose a tag to compare

@peteGSX peteGSX released this 22 Feb 04:54
· 37 commits to main since this release
42b4c18

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)