Release Notes for JMRI 4.22 release
Date: March 1, 2021
From: Bob Jacobsen
Subject: Production Release 4.22 of JMRI/DecoderPro is available for download.
We are very pleased to announce that the 4.21 series of JMRI test releases has resulted in a
version that's good enough to be recommended for general use, including by new users.
We're therefore making that version, "Production Release 4.22" available for download today.
Notes:
JMRI is now only available under the
GNU General Public License. For more information, please
see our
copyright and licensing page.
Update From Older JMRI Versions
If you are currently using a version older than JMRI 4.20, please follow these instructions carefully:
- Is your current version older than JMRI 4.12?
If so, then update to JMRI 4.12 first, and ensure everything works correctly: check
start-up, check things you need to be working, and check the JMRI log as well) before doing anything else.
Store your configuration and panel files under a new name and use those from now on.
Then continue with step 2.
If you are currently using JMRI 4.7.3 or earlier on Linux or macOS (Windows doesn't need this),
then it's very important
that you update to JMRI 4.12 and
carrying out the migration process described in the JMRI 4.12 release note
before updating to any later relese.
- Is your current version older than JMRI 4.20?
Then update to JMRI 4.20 first, and ensure that works correctly (check
start-up, check things you need to be working, and check the JMRI log as well) before doing anything else
Store your configuration and panel files under a new name and use those from now on.
- You can then install this release.
Following this multi-step order of updating via stable major releases safeguards you against possible migration issues
that can arise from skipping these versions.
Known problems with this release
- Logix definitions that have more than 1 conditional will invoke the conditionals in the wrong sequence.
This can lead to unpredictable results. The affected releases are 4.21.5 thru 4.23.2.
For people using Logix, this upgrade is NOT recommended.
New warnings for this production release:
- Since JMRI 4.21.1
The jmri.jmrix.SystemConnectionMemo class has become a jmri.SystemConnectionMemo
interface and a jmri.jmrix.DefaultSystemConnectionMemo class. This may
require changes to scripts. If you have a script that references
jmri.jmrix.SystemConnectionMemo, please change it to either
jmri.SystemConnectionMemo or jmri.jmrix.DefaultSystemConnectionMemo
(it's easier to have you just try the two than to explain which
one will work in which case)
- Since JMRI 4.21.1
The way preferences are loaded at startup has been slightly
modified. There is no impact to JMRI applications, but Non-JMRI
applications that are not derived from apps.Apps or apps.AppsBase
but are using jmri.implementation.JmriConfigurationManager to load
preferences will no longer see preferences if an error occurs. To
restore the old behavior, use apps.AppsConfigurationManager instead.
Older warnings
See the
JMRI 4.20 release note for more warnings predating the 4.21 development series.
These may be relevant to you if you're updating from an earlier version.
- Since JMRI 4.19.1
The
getBeanByUserName
and getBeanBySystemName
calls in the various Manager
classes
are no longer needed with Java 8 and have been deprecated for eventual
removal. Their replacements are
getByUserName
and getBySystemName
respectively.
If you use getBeanByUserName
and getBeanBySystemName
in script or Java code you've written, please
switch to the new names.
- Since JMRI 4.11.4
There are issues with the Pi-SPROG One command station operation. A number of workarounds should be applied:
- Do not turn on the track power until the power supply to the Pi-SPROG ONE is turned on
- Do not enable extra debugging through default.lcf, nor open the system console window
- Do not open the SPROG console window
- Disable power conversion (CV 29) in all locos
- If connecting via VNC (or similar), setup the screen layout before turning on the track power
Pi-SPROG One with version 2.4 or earlier firmware will cause a timeout after a track short circuit. A dialog box will
open to inform the user of this. The track power will be turned off and must be turned on again using the power control.
Download links:
Please note that the download links in this and future JMRI releases link to
Github servers.
People are welcome to distribute the download files further via other websites, etc.
If you want to check that you've received original, unmodified versions, please
check the files against the checksums shown below.
This production version is made from test releases 4.21.1 through 4.21.5. The
full list of changes
in those is
available from our code repository.
Hardware Support
Acela CTI
- Fixed issue unable to initialise adapter
CBUS
- When the connection is lost to a GridConnect Serial Device ( eg. CANUSB4 losing power /
Windows Sleep Modes ), JMRI will periodically attempt to reconnect to the device.
- Default Output Interval reduced to 100ms.
- CBUS now has its own trademark and is referred to as CBUS, not 'MERG CBUS'.
- CBUS RFID Reporters now act similar to other JMRI Reporters, ie with a timeout following the report.
- CBUS Reporters can set a Sensor to follow the active IDTag status, set via CBUS Reporter Table.
- CBUS Reporters will default to classic RFID ( 5 byte unique tags ), with option for in-development CANRC522 / CANRCOM format, set via CBUS Reporter Table.
- Refer to MERG section of this not for changes in JMRI support for MERG hardware.
- Restructured help pages to reflect split between MERG specific hardware and hardware agnostic CBUS features.
-
Andrew Crosland added a second current meter instance for SPROG Generation 5 hardware.
-
Corrected links to images on SPROG Generation 5 hardware help page.
-
Changed trademark recognition to ® for register trademarks, rather than ™.
- CBUS now has its own trademark and is referred to as CBUS, not 'MERG CBUS'.
- Refer to CBUS section of this not for changes in JMRI support for CBUS.
- Restructured help pages to reflect split between MERG specific hardware and hardware agnostic CBUS features.
C/MRI
- CMRI SerialSensor updated to support multiple Character system name prefixes.
DCC++
- Only send function refreshes if required (version < 3)
DCC-EX
- messaging enhancements and cleanup, retry some failed messages
- allow user to define meters in DCC-EX that display in JMRI
DCC4pc
- Improved System Name validation for Sensors and Reporters, must contain at least 1 number.
Public Domain and DIY decoders
- LocoIO programming using the Public_Domain_HDL_LocoIO decoder definition has been significantly
expanded. This update requires JMRI 4.21.2 or later. Because of the included improvements you are
advised to start with new Roster Entries for your LocoIO boards. Help files have been updated.
ESU
- Improved System Name validation for Turnouts, Sensors and Reporters, must contain at least 1 number.
- Added "LokSound 5 micro E24 DCC" and "LokSound 5 micro KATO".
- Replaced incorrectly-named "LokPilot 5 micro DCC Next18" with "LokPilot 5 Micro Next18 DCC".
Internal
- Sensor, Turnout, Light and Reporter Address ranges do not have to be fully numeric, and will be incremented using the final number in an address.
For example, a range can be created from "My Yard 77 Sensor 1" which would increment to "My Yard 77 Sensor 2"
IPOCSMR
- Initial support added.
- Turnouts, Lights (on/off) and Sensors
LocoNet
-
Instructions detailing how to change the Board ID (Board
Address) of certain Digitrax LocoNet-based devices using
JMRI have been added to the Digitrax hardware page.
- Fixed a problem in the PM4Announce script
- The legacy LocoIO programmer help points to the current DIY decoder method to
configure these boards.
- The legacy LocoIO programmer help points to the current DIY decoder method to
configure these boards.
- LocoNet support for "Voltage/Current Meters" has been extended to
include support for multiple sources of meter information, and
to include automatic discovery of LocoNet devices which support
voltage and current reporting. Each discovered device is identified
by its device type and serial number. These "friendly" identifiers
appear in the "Voltage Meter" and "Current Meter" menus in the
"Voltage/Current Meter" tool. Further information may be found at the
Digitrax "Meters" web page.
- Start-up "Interrogation" of LocoNet Sensor and Turnout state
has re-worked to provide better operation for LocoNet connections
with large numbers of Sensors and/or Turnouts. The JMRI
interrogation mechanism now implements a minimum delay from
the last Sensor Report, Turnout Report or Interrogate Query
message before sending the next Interrogate Query message.
- The "DS64 Configuration Tool" was updated:
- to correctly perform the "Factory Reset" operation
without encountering a "Java Exception";
- to correctly perform the "Factory Reset" operation to
the correct DS64 as specified in the "Unit Address" field;
- to correctly manage the values shown on the "OpSw Values"
tab and maintain value coherency between the "OpSw Values" tab
and the "Basic Settings" tab.
- Keep slot status in line with CS after setting COMMON or true slot moves
- Allow selection of "Stand-alone LocoNet (with external LocoNet Data
Termination!)" for Digitrax PR4.
- New LNCV Programming tool (Uhlenbrock protocol), available from LocoNet menu, with window
specific help.
- When connected to the LocoNet HexFile Simulator, simulated replies from selected devices are
sent to the monitor (select the "Simulate replies" checkbox on the HexFile pane).
Maple
- Maple SerialSensor updated to support multiple Character system name prefixes.
MQTT
- The MQTT temporary directory has been moved to the current profile directory.
This will allow JMRI to have MQTT connections even when JMRI is installed
in a protected location.
- MQTT Turnouts now support MONITORING and EXACT feedback modes
- When status UNKNOWN or INCONSISTENT is received from MQTT
and the turnout operating mode is MONITORING or EXACT,
the layout is now updated with this status
- When EXACT feedback mode is selected,
two different MQTT topics will be used - one for commands and one for state
- Added MQTT Sensors
- MQTT connection configuration now lets you set the prefix for Turnouts, Sensors,
Lights, Reporters, Signal Heads and Signal Masts. (There's no actual support
for Lights, Reporters, Heads and Masts yet, but you can set the prefix).
Note: You should check the settings for Turnouts and Sensors to ensure
they're what you want. This code upgrade might have overwritten any
values you (had to) manually edit into preferences in the past.
- The new "jython/SendMqttMessage.py" sample script show how to
send across an existing MQTT connection.
- The new "jython/ReceiveMqttMessage.py" is simple demo of
receiving MQTT messages into a script. It just prints the received messages,
but you can build up from there.
- Fixed a bug that caused an erroneous ERROR message on operating MQTT Lights
- Added support for creating ranges of Turnouts and Lights.
Sensor, Turnout and Light Address ranges do not have to be fully numeric,
and will be incremented using the final number in an address.
- Added support for changing the default quality of service and
retention policy for transmissions. See the
jython/SetMqttOptions.py
script for an example.
- Fix a nasty threading bug in the MQTT Light support that can
cause a JMRI lockup on the first access after adding a Light.
- Update the Paho MQTT library from version 0.4.0 to 1.2.5 (current)
- Better handling of wildcards in topic subscriptions
- Default Output Interval reduced to 100ms.
Pi
- Improved System Name validation for Turnouts and Sensors, numeric from 0 - 999
RFID
- Improved System Name validation for Standalone sensors, must contain at least 1 number.
- Network connections: Support added for auto-reconnect.
- Network connections: TCP/UDP port configuration option promoted to main configuration settings panel and no longer under Additional Connection Settings.
SoundTraxx
- TSU2 Diesel fix sound slections, Genesis OEM Diesel add models
SPROG DCC
- EStop for 28 Step mode is now sent correctly
- Updated programming mode switcher for Pi-SPROG 3
- Added mode switcher for SPROG 3 Plus
- Added help content for new generation 5 hardware
TAMS
- Improved System Name validation for Turnouts and Sensors, must contain at least 1 number.
Uhlenbrock Intellibox
- The 73900 decoder definition was renamed 7x900, and updated to support decoder models:
- 73800
- 73900
- 76900 (V1)
- 76900V7
- Piko 56126
Existing roster entries will suggest this replacement.
- Added hardware connection support for the (LocoNet) Uhlenbrock USB Adapter part #63120.
Manufacturer states their USB drivers only support Windows OS.
XPA
- Improved System Name validation for Turnouts, must be numeric.
New / Updated decoder definitions
Digikeijs (Digirails)
- Added DR5033 LocoBoost configuration support, using the new LNCV service mode programming.
You can access the DecoderPro programming panes from the LNCV Tool table matched by article number
(5033 in this case).
Digitrax
- Allow configuration of more function outputs for FX3 decoders.
ESU
- Added LokPilot 5 Fx micro Next18 variants and Pullman Silberling.
- Update for some new ESU firmware features.
- Fix some errors.
- F29-F31 now present in Function Labels pane for generation 5 decoders.
Tam Valley Depot
- Updated the QuadLN_S template to support the 16 servo capability in the Version 3 software
Uhlenbrock
- New Switch Module 63410 decoder support, using the new LNCV service mode programming.
You can access the DecoderPro programming panes from the LNCV Tool table matched by article number
(6341 in this case).
- New definitions to program Power4, Power8 (boosters) and IntelliLight 28x0 modules.
- For Uhlenbrock Track-Control modules a Direct Message type was added to the LNCV protocol.
The Lncv Programming tool has a new checkbox 'Direct Mode', allowing to set LEDs etc.
- Two new Track-Control definitions (art. 69220 Turnout and 69230 Signal Module)
- When connected to the LocoNet HexFile Simulator, simulated replies from LNCV devices are
sent to the monitor (select the "Simulate replies" checkbox on the HexFile pane).
DecoderPro
- The DecoderPro programming/editing screens now have a Find operation!
Ctrl-F or Cmd-F will open a small find bar at the bottom of the pane
where you can enter a search string. Hitting Return will find the first
occurrence. There are right and left arrows to find the next occurrence forward
and backwards respectively. Ctrl-G or Cmd-G will also find the next forward
occurrence. Shift-Ctrl-G or Shift-Cmd-G will find the next occurrence going backwards.
The "Done" button will dismiss the
bar, but you can leave it up without it interfering with anything.
- Added a new optional "maxFnNum" model-level attribute for Decoder Definitions.
-
Specifies the highest F key supported by the decoder. The assumed default is "28".
-
Note that `maxFnNum` is not to be confused with the existing `numFns`,
a legacy attribute that limits the total number of function mapping lines displayed.
Neither is derivable from the other.
-
This value is currently used to build the Function Labels pane.
-
This value is propagated to the Roster Index and intended to be used in future by throttles, etc.
-
Example definitions are LokSound 5(uses F0-F31) and LokSound V3.5(uses only F0-F15).
- Added a new optional "allowResetDefaults" decoder-config level attribute for Decoder Definitions.
For some decoders, it's either impossible or impractical for the decoder definition
to have universally applicable defaults incorporated. In these cases,
setting allowResetDefaults="no" disables the "Reset to defaults" button on the Roster Entry pane
and provides an explanatory tooltip.
CTC Tool
- To correct prior release notes, the CTC panel can be created with Layout Editor, Control Panel Editor
or Panel Editor.
- This release gets a new capability: Auto-Generation of Traffic Locking (TRL) rules, which is the most tedious
and difficult aspect of (any) CTC systems. However, TRL Auto-Generation is dependent on Layout Editor, with Signal
Masts at block boundaries, and with automatically generated Signal Mast Logic. The Signal Mast Logic
can be modified after discovery, but there has to be at least one
discovery process run. After this process is complete, if you are not happy with the way Layout Editor
displays the layout, you can create a parallel Control Panel Editor or Panel Editor screen. Personally, in
my opinion, Layout Editor looks very close to an actual CTC panel if drawn correctly.
- There is a reminder dialog that was added to remind users of the CTC system that using "," (Comma) and
";" (Semi-colon) in ANY of the System and User names for items used by the CTC system is not
supported, and may cause problems in the program. The reminder can be silenced permanently too by the user.
- When CTC Runtime starts (Run CTC Logic), if there are any problem(s), warning(s) or informational
message(s), it will now popup a dialog box to inform the user. Previously, I relied on the System Console
for the logging of those messages (which still happens), but the System Console screen may not be
visible, ergo the need for this new feature.
- Bug Fix: It was possible (though technically wrong) for a user to specify a single turnout as locked
in two (or more) different O.S. sections. If this was specified, the runtime program would
fight itself and eventually cause a stack overflow. This is now prevented during user entry from occurring.
If you have specified this prior to this release, you must manually correct this.
- Bug Fix: There was a problem that occurred when certain Java libraries were used. The CTC .xml file that
contains all of the data was slightly corrupted due it. By just running this new version of CTC Editor, those
problems will automatically be fixed. You may then exit the CTC Editor even without saving,
as the fix will have already been done. (internal file version 5 to 6)
- Bug Fix: If an O.S. section did not have a Signal Lever defined, it was
possible (though wrong) to enable Traffic Locking and / or Call On. Now it is impossible to define either
if there is no Signal Lever defined properly.
- The CTC tool no longer uses an external XML file, CTCSystem.xml, for retaining
its configuration. The configuration is now part of the standard PanelPro data file.
This change eliminates issues with data consistency between the JMRI tables and
the CTC configuration. The CTC Editor File menu has an menu item to import an
existing CTCSystem.xml file so that the configuration will be included in
Panels ⇒ Store Panels.
- Include detail information for vetoed object deletes.
Control Panel Editor
-
The 'Circuit Builder' menu has been updated. See below.
-
The 'Edit Turnout Icon' menu item of Indicator Track popups synchronizes
paths with the 'Add/Edit Circuit Paths' window of Circuit Builder.
- Icons of tracks indicators and signals in the style of the ČSD Czechoslovak State Railway
- Unified Control Place - JOP style.
Circuit Builder
-
A 'change Portal Icon Set' menu item is added to the 'Circuit Builder' menu of
Control Panel Editor. User defined icon sets for Portals can be installed here.
-
When using the 'Add/Edit Circuit Portal' window, the popup menu of a Portal
now allows repositioning from the 'Set Location' menu item.
-
Features added to the 'Add/Edit Signal Mast' window are;
1. A Signal list shows the signals that are configured to protect the block.
2. Buttons will open the Tables for creation, renaming and deletion of
both signal Masts and Signal Heads.
3. Signal icons can be dragged in the fashion of Item Palette from the window
to the panel
4. Instructions for these operations are described on the window.
-
Two new error alerts are added to the 'Error Checks' menu item of the 'Circuit
Builder' menu.
1. OBlocks that do not have a block length are listed. Every Path in a block should
have its length specified in order to run Warrants. But for convenience, this
length can be inherited from the block length.
2. Signals that are not configured to protect a block are listed. If these signals
have icons they can be highlighted with a corresponding menu Item.
- Circuit Builder track colors (Allocated, Not In Use, ...) are now supported on Web Server
panels. See OBlocks and JSON.
- OBlock and associated tables can be edited like the 'standard' tables (see
OBlocks).
Palette
Some minor changes are made to the user interface.
-
For the tabs having icon sets, i.e. turnouts, sensors, etc., should all icon sets be deleted,
a 'Restore Default' button is displayed to reinstall the default icons.
-
The above restoration feature can be done at any time by holding keys CNTL A down while
clicking the 'New Icons' button. All customized icon sets defined by the user are retained
and any missing default icons are added.
-
The unused functions to create, delete, or restore the status states of Indicator Turnouts
are now only displayable by holding keys CNTL A down while clicking the 'Edit Icons' button.
-
Several new checks and alerts will inform users when duplicate names are used for
icon sets or when duplicate icon sets are found with different names.
-
The fixed set of Portal icons may be redefined by the user under the 'Portal' tab.
Portal icon sets created by the user may be selected for panels by a new menu item,
'Change Portal Icon Set' in Circuit Builder. The new set is then used for Warrant displays.
-
The drag and drop of icons under the 'Icon' and 'Background' tabs no longer requires naming
the icon first. The drop from the Icon catalog can be done directly into the panel.
-
The tabs having tables now display the element's actual table editing window when the
'Add New Table Item' button is pressed.
-
Editing an icon set for an Indicator Turnout now follows the same paradigm as the rest of
the tabs having icon sets. Defining new icon sets, changing icons, or renaming sets functions
the same for all such tab items.
Dispatcher System
- Jython based System which automates the build of a Dispatcher system
- Requirement: Start with a Panel with track, signals, signal logic built with
- automatic signal logic, sections built with automatic section builder
- Provides Gui to: Modify xml of panel to provide icons to setup dispatch
- between stops, Generate Transits and TrainInfo files required by dispatcher
- Provides a runtime system to operate the system
- In addition to running trains by Signal Masts or Signal Heads you may now run trains by No Signals
This is most useful for Automatic engineer, and works best with fast throw switchs, such as snap switchs, as
it works solely on whether a section is allocated. If you need to check switch sensors for position you must
continue to use SSL or SML signals.
Internationalization
- Dutch translations added for the Where Used, Meters and Issue Reporting tools.
Layout Editor
- The Layout Editor code has been substantially restructured in this release.
If you have scripts that reference the jmri.jmrit.display.layoutEditor package
please check them carefully, as new classes have been created and
some methods have moved. Panel files containing Layout Editor panels
that are stored (written out) by this release may not be readable
by earlier releases; this release should load older files just fine.
- A problem storing and reading LE controlpoint values for users with a non-default Locale has been fixed
.
Logix
- The "Copy Logix" feature has been enhanced to provide more assistance
in copying conditionals. See the updated help files for details.
- Fixed a couple of bugs there Logix wasn't correctly listening on
signal head lunar state, signal head flash lunar state, signal mast
lit state and signal mast held state. See PR #9059.
Meters and MeterFrames
- jmri.MultiMeter is split into jmri.Meter.
- jmri.VoltageMeter and jmri.CurrentMeter is added.
- AmpMeterFrame and VoltMeterFrame are replaced by MeterFrame
- The user can select which VoltageMeter/CurrentMeter the MeterFrame should show
- The MeterFrames are stored in the panel file and restored when the panel is loaded
- LocoNet supports discovery of the sources of voltage and current
data and makes them available in the "Voltage/Current Meter" tool.
- default meter digits based on max and resolution of defined meter
- The Settings menu was slightly reorganized with submenus for each value.
- When no meters are available, both Meters menus and the Units Settings menu show a short explanation.
- Meters will honor the JMRI Locale/regional setting for the decimal separator (. or ,))
- Meters now use meter max and resolution to default integer and decimal digits
Operations
- Fixed problem where operations database was always saved when exiting JMRI.
- Fixed problem with Panel name for train icons.
- Fixed problem with track move count when track has an alternate track.
- New feature for cars, Return When Loaded. Now you can set a load name and destination for a car when
it's load status changes to loaded. See operations help for more details.
Preferences
- When a hardware connection fails, some hardware types may attempt to reconnect.
The interval between reconnection attempts and the maximum number of reconnection attempts
can now be changed by saving your profile, then editing the profile.xml file.
The reconnectMaxInterval is in seconds, reconnectMaxAttempts is infinite if -1, else the value.
- The rules for the system connection prefix (one capital followed only by a number, for example D78)
are now protected in the Connection Preference panel. Invalid entries are highlighted in red.
- A bug that could make connection tabs disappear has been fixed.
Routes
- A configurable (minimum) interval for all turnout outputs that are part of a Route on the same
connection can be set in Preferences > Connection > Additional Connection Settings (serial connections
only).
Default is 250 milliseconds. Up to now this delay was fixed to 250 ms in the code so this new option
will only be noticeable if you change it. No restart is required.
Use the [Reset] button to restore the default.
The same setting is applied to Turnout Outputs, for example as Signal Mast outputs.
Scripting
- Some internal refactoring that should help with the long term
maintenance of JMRI has been done. This may cause some scripts to
fail until classes or methods are renamed in those scripts.
- new scripts ShutdownOS.py and RestartOS.py which can be called to safely
end JMRI and then request that the underlying OS shutdown or restart itself
- The getSystemNameList() and getNamedBeanList() Manager methods have been fully deprecated.
Please update any code warnings re these methods to use getNamedBeanSet(), and
post on the JMRI Users Group for any assistance with updating.
- The Manager method getNextValidAddress(@Nonnull String curAddress, @Nonnull String prefix) has been
deprecated, please use getNextValidAddress(@Nonnull String curAddress, @Nonnull String prefix, boolean ignoreInitialExisting)
Signals
Signal Systems
- The B&O-1980 signal system was updated to correct several
errors and to include masts which can be used to protect a
block of "short braking distance".
Signal Masts
- A configurable (minimum) interval for all outputs on the same connection can be set in
Preferences > Connection > Additional Connection Settings (serial connections only).
Default is 250 milliseconds. Use the [Reset] button to restore the
default. The same setting is applied to turnout outputs in a Routes.
Cab Signals
- Better set row height in table.
Switchboard Editor
- When the Switchboard pane is resized by the user, the number of rows will adjust to show the largest
size switch tiles (default On for new boards). If you prefer to set the number of rows in the Editor,
uncheck "Automatically set optimum grid" in the Options menu).
- Switchboards immediately update after a change in shapes, types, connection or range. The [Update
Switchboard] button is still available, and occasionally required.
- Switches display the user name on the switches (default On for new boards, set "Show user name on
switches" in the Options menu.
- Slider and Key switch shapes are drawn on screen instead of loading image files.
This increased redraw speed and allows using your custom colors and scaling the size of
the graphics to the space available. The old images files for these have been removed.
- Symbol shapes are still drawn by swapping 2 image files. We added the option to scale them
in the Option menu. (Hint: You can replace the supplied image files with your own images as
long as they carry identical file names).
Throttle
Timetable
- Set the default start time for a new train to match the schedule start time.
Turnouts, Lights, Sensors and other elements
- Increased address validation for multiple hardware types.
- Access to OBlocks in Web Server via JSON messages was added.
- Occupancy Blocks, Portals and Paths used in Warrants can be edited in an optional table style
like that used in the 'standard' tables (Turnouts, Lights etc). The information is stored in the exact
same way, so you may change the UI as desired (see Preferences > Display. Restart required)
- Turnouts with 1 Sensor Feedback update to Inconsistent state when the Sensor being followed enters an Unknown or Inconsistent state.
See Turnout Feedback
Virtual Sound Decoder
- VSD now supports the "Location Following" (sound follows loco) with occupancy
sensors and JMRI Blocks. See the
documentation for details.
- The "Location Following" (sound follows loco) with occupancy sensors and JMRI Blocks
now also works with a RosterEntry or RosterId as Block value.
Warrants
- The table of throttle commands shown when creating or editing warrants has been changed:
- The Command column is now a drop down combo box. This will allow the
command names to be translated into languages other than English.
- The Value column is a drop down combo box for throttle commands
other than "Speed" or "Run Warrant". Again, done to permit translation
into other languages.
- The algorithm for executing speed changes due to track conditions for warrants
has been modified and is better able to restore the scripted speeds once the
track speed restrictions are lifted.
- The constant used to approximate track speed of trains has been changed to
yield a scale speed of 100mph at full throttle. This change has no effect
on roster entries having Speed Profiles.
- The Address column of the Warrant Table list and the Address fields of the
NXWarrant or Create Warrant windows
now accept throttle protocol names and addresses of Markin and ESU ECoS.
- When scripted speeds are overridden due to signals or obstructions ahead, the
non-speed script commands are executed at approximately the same elapsed times as
were written in the script.
- Track speeds of running warrants are recorded automatically and a SpeedProfile
is built that can be seen by pressing the View Profile button in the
edit warrant window. These profiles can be merged into the existing profiles
for the Roster entry used by the loco of the warrant when the layout session
is closed. (Recall that Warrant Preferences has 3 options for this merging.)
- An Update Track Speeds button is added to the window where warrant throttle
settings and commands are edited. This button updates the Speed column to
list the track speeds (mm/sec) for the current Speed Profile measurements of
the locomotive address entered in the 'Engine Consist' box.
- Bugs introduced during the past year to the 'Wait Sensor' command and merging of
speed profiles are fixed.
- When OBlocks are imported from LayoutEditor blocks, the turnout settings of paths
are also added to the imported OPaths.
- A button to translate the throttle settings to track speed in inches/sec
or millimeters/sec or scale speed on miles/hr or kilometers/hr has been
added to the windows used for editing Warrants or creating NXWarrants.
Web Server
- Switchboard panels on Web Server support all graphic shapes and colors set in the Editor.
- Switchboard "switch" icons fill the whole screen on mobile devices (you can turn this off in Switchboard
Editor by deselecting "Automatically set optimum grid" in the Options menu.
- Switchboard panels for Lights allow to switch all lights on or off (also in Web Server when Panel
items control layout is selected in the Editor Options menu).
- Control Panel track colors (Allocated, Not In Use, ...) are now fully supported on Web Server
panels.
- OBlocks access was added as a JSON Servlet to allow this.
Where Used
- Implement data collection for CTC references for sensors, signal heads,
signal masts, turnouts and blocks.
Miscellaneous
- The jmri.jmrix.SystemConnectionMemo class has become a jmri.SystemConnectionMemo
interface and a jmri.jmrix.DefaultSystemConnectionMemo class. This may
require changes to scripts. If you have a script that references
jmri.jmrix.SystemConnectionMemo, please change it to either
jmri.SystemConnectionMemo or jmri.jmrix.DefaultSystemConnectionMemo
(it's easier to have you just try the two than to explain which
one will work in which case)
- Added PR automation to check for a comment in the release note when a PR
is opened, and to ensure that somebody has been assigned to the PR.
- The jmri.JmriPlugin class is deprecated without a replacement. If you depend on
on this class, please raise an issue on GitHub
so we can discuss how to meet your requirements through other means.
- "Display Message Log" has been removed from the Debug Menu. Use the
"System Console" from the Help Menu to view log messages.
- The older "Upload Debugging Information" item
in the help menu has been replaced by
a "Report Issue..." item. This walks you through creating a
JMRI GitHub issue and uploads information
that will make debugging easier. You need a (free)
GitHub account to do the final submission.
There's more info on the
help page.
- The interface jmri.Light has been split into jmri.Light and jmri.VariableLight. Lights
that supports variable intensity must now implement the jmri.VariableLight interface.
All lights are still managed by the jmri.LightManager, but a new manager jmri.VariableLightManager
has been added that keeps a copy of the VariableLights. But register and deregister of
all lights must still be done thru the LightManager.
- Windows launcher updated to honour return codes to shutdown or reboot host machine
- The Ant version invoked by Maven was bumped to 1.10.8. No user
action required, but developers need to be online the first time
they build using Maven.
- An option (disablePermissiveSignalMastLogic) has been added to SignalMasts and SignalMastLogic
to enable conditional permissive aspects. See the jmri.SignalMast Javadoc for details.
- Windows launcher updated to honour return codes to shutdown or reboot host machine
- The Ant version invoked by Maven was bumped to 1.10.8. No user
action required, but developers need to be online the first time
they build using Maven.
- The (English) phrasing in a couple of messages was updated for consistency.
- YetAnotherAutoTrain.py (YAAT) has been updated to version 2.2. This version
includes support for compiling train definitions for faster startup. It also includes
the ability to create extensions to the command language. A Help document has been
added to the JMRI Help pages.
- The Comments columns in Tools ⇒ Tables have support for multi-line comments.
The Edit Comment option has been added to the right click pop-up
menu that is normally used to move user names. A tooltip will be displayed with
the comment content.
- Improved how JavaHelp handles non-HTML files on some platforms.
AbstractProxyManager
- AbstractProxyManager can now automatically create system specific managers.
- When a NamedBean is added to a proxy manager, there needs to be a system specific
manager for that bean unless the bean is for the internal manager. The ProxyMeterManager
and AbstractProxyManager automatically creates a new system specific manager if it doesn't
already exists. This works as long as the system specific manager doesn't need to have
system specific knowledge of the named beans.
- This means that, for example, the user may create a Jython script that creates a Meter
for the LocoNet connection but doesn't need to create the LocoNet meter manager since that
manager is automatically created.
- Once a specific connection needs to store specific data about meters, a connection
specific manager needs to be created, for example LnMeterManager for LocoNet.