Change Log - Main Application/Server
v2.1.2.2
05/01/12
  • sensor objects can now be bound to incoming security element packets
  • several encoding/decoding properties were added to the PkSecurityElem packet
  • sensor events now return the Loconet packet that triggered them; on the scripting side, the packet is returned through e.Args
  • exposed a few bitwise helper methods, for encoding/decoding packets bytes, through the API
v2.1.1.0
04/02/12
  • serialized the engine auto bind packet submission to prevent binding corruption
v2.1.0.8
03/25/12
  • Scripting changes:
    • added CtcService.BindEvents()/UnbindEvents() for dynamic event binding in script
    • overloaded CtcService.SubmitCmd() to simplify scripting with lambdas
    • added new sequential execution scripting pattern
    • added/updated several script templates
    • added two new collection namespace imports to the generated scripting assembly
    • removed line dividers in script text editors
  • changed compilation target of RRAutoLib.dll to .NET 4.0
v2.0.36.1
02/06/12
  • retargeted the update URL for ClickOnce deployment
  • "change log" link in app now points to this page rather than a local file
  • changed the throttle and switchboard controls legends from tooltip to popup panel for readability
  • changed the throttle's button order to match the remote throttle
  • better binding/unbinding engine to slot error reporting
  • ICtcObjectListBase interface, in the API, is now enumerable
  • optimized load times and UI performance for large layouts; should now be many orders of magnitude faster
  • for stateful objects, pending dispositions are no longer saved between sessions; they are reset instead
v2.0.35.2
12/06/11
  • added collapsable ribbon buttons
  • added custom serialization to Packet classes
  • renamed RaiseEventsSyncContext to SyncContext for consistency throughout the API
  • added script template "Action based on transponder"
  • changed the BDL16x zone decoding for transponding PkMultiSense packet
  • Remoting changes:
    • Packet properties (ID, ReqID, IsEchoe, TimeStamp) are now marshalled to remoting clients
    • added remote TCP connection viewer/manager in RRAuto
v2.0.34
11/21/11
  • added BDL16x address decoding for MULTI_SENSE packets
  • Remoting changes:
    • made service shutdown faster by properly closing all the open TCP channels
    • client connection closures are now async
    • the server now provides visibility of remote client connections (ID, IP, Service Host)
    • client connections can now be individualy killed from the server
    • fixed several edge case connect/disconnet exceptions
v2.0.33
11/16/11
  • Remoting changes:
    • fixed bug with EngineProxy.Disconnected event not synchronizing on the RemClient.SyncContext thread
    • added ability for client proxies to gracefully disconnect
    • renamed several method and events for clarity
    • added a remoting proxy for the LoconetService
v2.0.32.1
11/07/11
  • Remoting changes:
    • rebuilt the entire system using the newer WCF library (since this will be supported in future versions of Windows)
    • added better error handling for edge case scenarios
    • better resource management and disposal
    • fixed several packet corruption bugs caused by lingering event bindings
    • simplified client API
v2.0.31.2
11/05/11
  • refactored and unified the script event binding system
  • added scripting events for Engine objects
  • changed Route's scripting syntax for set/lock/unlock
  • added more granular scripting events for routes
  • restructured the events for the Sensor object
  • transponder locomotive addresses are now passed to events and scripting
v2.0.30
10/27/11
  • added ability for sensor object binding to MULTI_SENSE transponder events
v2.0.29.6
10/16/11
  • added client/server infrastructure for remote control through TCP in the RRAuto class library
  • the remoting listening service has been added to the Railroad Automation application UI
  • the remote client connectoid is available in the RRAuto class library for developers
  • fixed a script event binding bug introduced in the last version
  • implemented the "Enabled" property for script objects
v2.0.28
09/22/11
  • Scripting changes:
    • added "BeforeStateChange" binding event for track turnouts, signals, and accessories in the scripting editor
    • added "BeforeSetLock" and "BeforeUnlock" binding event for routes in the scripting editor
    • the new "Before*" scripting events may now cancel the callers operation through their event arguments (e.Cancel = True)
    • the new "Before*" scripting events now pass the requested change state through their event arguments (e.Args)
    • scripting event arguments are now passed by reference and can pass values back to the caller on syncronous calls
    • the signature for scripting event handlers has changed to support the above features and allow for future parameter expansion
    • scripting templates have been updated to reflect the signature changes made to the event handlers
v2.0.27
09/11/11
  • fixed bug where track connections would fail to render in certain exceptional cases
v2.0.26
08/29/11
  • removed the decimal string byte representation from the "Loconet packets log" pane; the hex format seems to be the prefered type
  • added custom icon to represent PkImmediate packets in "Loconet packets log" pane
  • revamped the switchboard context menu hierarchy to be more flat
  • converted more image icons to vector icons
  • got rid of all signed datatypes for bitwise operations to prevent potential problems
  • added ability to send PkImmediate DCC decoder control packets through the client UI
  • added better index and value range checking for property input
v2.0.25.1
07/27/11
  • Loconet API changes:
    • the switch state is now reported by PkLongAck packets with SwitchStateResponse type
    • fixed the decoding/encoding of the PkImmediate's DccBytes payload to take into account most significant bit
    • all DCC instruction bits are now decoded from PkImmediate packets
    • added support for controlling auxilary function 0-28 through PkImmediate
    • added new PkLongAck description for PkImmediate responses
v2.0.24
05/10/11
  • made the slot viewer more graphical and easier to read
  • chanaged the default docking layout
v2.0.23
04/11/11
  • removed Block.AllowStop property
  • added Block.HasCatenary property
  • simplified the unlock route switchboard context menu
  • Loconet API changes:
    • short-circuited the LoconetService transmission thread to not wait for echoes if an error occurs writing to the serial port
    • events and callbacks without sync contexts are now executed on the Rx pooled worker threads rather than creating new ones
    • Rx notification execution order was changed to delegate callbacks first and events second
    • packets supplied with empty CallBack objects no longer error out, they just get ignored
    • renamed Packet.CallBackOnRequest to Packet.CallBackOnEcho for clarity
    • renamed LoconetService.TxPriorityBufferedSpeed to LoconetService.TxPrioritySpeed; "Buffered" was a misnomer
    • renamed PkDccProgram.ReplyCode to PkDccProgram.ProgErrFlags and added the bitwise DccProgErrFlags enumeration to define the returned flags
    • refactored all LoconetService members to be thread safe (can be called from any thread any time)
    • added ability to transmit Loconet packets synchronously through LoconetService.TxSyncPacket()
    • refactored Engine.UnbindSlot(True) to use the new properly implemented TxSyncPacket(); the old implementation failed with deeply stacked packet queues
v2.0.22
01/27/11
  • added switchboard zooming shortcuts {_/-} and {+/=} for computers with no mouse-wheel and no numeric keypad
  • added ability to bind scripts to the Route object's StateChanged event
  • renamed StatesList to PkStatesList and IStates to IPkStates in the API
  • added compatibility message when loading old formatted layouts
v2.0.21
01/19/11
  • switched class library collections to generics
  • CTC object lists now have greater type affinity (scripting will require less casting)
  • refactored the layout deserialization system for maintaining better compatibility between versions
  • fixed undefined signal creation when added through the object browser
v2.0.20
01/02/11
  • CtcService.RaiseMessageEvent() has been renamed to CtcService.PostMessage() for clarity
  • assigning invalid states to tracks/signals/accessories now displays a CTC warning message instead of throwing exceptions
  • for script brevity:
    • simplified the getting/setting of CTC object states
    • getting/setting the state of CTC objects can now also be performed by state name
  • changes made have broken some compatibility aspects; to fix previously saved layouts:
    • states file .rrs is no longer compatible; a new one will be generated after first launch
    • for a route's turnout members, positions have been reset to default; re-assign to previous states
    • for scripting changes check the class library documentation
v2.0.19
12/25/10
  • decoupled the Signal object's visual look from its operational primitive in the CTC API
  • multiple visual looks are now supported for signals through the UI (localized looks will be easier to add in the future)
  • better aspect packet retention when a signal's configuration is changed
  • added generic signals; prior all signals looked Germanic
  • all signal aspect names have been renamed from Germanic to generic
  • signals are now organized by aspect count rather than role for clarity
  • fundamental changes to the signal object broke compatibility; for previously saved layouts re-assign new types to each of your signal objects
v2.0.18.7
12/15/10
  • the stack trace is now copied to clipboard rather than shown for unpredictable error dialogs
  • introduced the Viewport term as it relates to the switchboard tabbed documents for clarification
  • application now compiled against the .NET 4.0 framwwork; better clear type
  • updated the ribbon control; fixes a mouse tilt-wheel bug for 64bit
  • changed PkSwitchInput packet so now it can be sent from the PC for simulations
v2.0.17.1
09/20/10
  • renamed Engine.AquireSlot/ReleaseSlot methods and corresponding events to BindSlot/UnbindSlot to be more consistent with other references
  • renamed and consolidated the Engine object's events so that they all get raised on the sync thread; engine events on own thread have been removed
  • enhanced the results reported through the Engine.BindSlotResponse event
  • option to warn if an Engine's slot is in-use and ability to steal the slot is now supported
  • ability to execute Engine.UnbindSlot syncronously has been made public in the API
v2.0.16
09/05/10
  • engines can now be bound to slots without the requirement of an open throttle for better script support
  • added property Engine.AutoBindInOpr to indicate if engine should automaticaly bind to a slot in operation mode
  • added SlotReleased event to the API; was needed to support new features
  • added toolbar button in throttle to manually bind/unbind to a slot
  • added context menu option on engine object to manually bind/unbind to a slot
  • throttles are now operational in edit mode and operation mode
  • editability of engin's address and speed steps are no longer based on mode but on binding state
  • engines bound to slots are now purged on layout changes and application close
  • fixed bug where engine references not disposed of properly would cause object ghosting after layout changes
v2.0.15.3
08/31/10
  • organized the script templates a little better
  • added more inline documentation to the script templates
  • added a few more script templates
  • fixed issue with engine direction/function state corruption when setting them consecutivelty through script
  • when deleating an engine, coresponding throttles are now closed to prevent unwanted lingering references
v2.0.14
08/29/10
  • CtcService.SwitchboardSize has been removed from the class library as this was a limitation of the renderer rather than the API
  • made the switchboard size unlimited; although the grid remains limited, objects can now be placed outside the grid
v2.0.13
08/09/10
  • fixed layout deserialization error when loading a layout through the API that was created though the Railroad Automation application
  • persisted tags can no longer break serialization; problem existed where altered user created types saved in the tags would break deserialization of the layout
  • throttle configuration is now stored with the layout rather than the engine
  • fixed "docking to last saved" not sticking to most recent save within a session
v2.0.12
08/06/10
  • for methods LoconetService.Start/CtcService.SaveLayout/CtcService.LoadLayout, exceptions are now thrown instead or returned
  • thrown exceptions from Save/Load layout are now a bit more descriptive
  • ribbon's "recent documents" list is now culled on attempts to load layouts that no longer exist
v2.0.11.2
08/05/10
  • added diagonal crossing track as an alternate to the square crossing track
  • the curved track brush in the switchboard has been changed so that it can better participate with the "maintain orientation" system during track type changes
  • for alternate track configurations (i.e. curves and crossings) the shortcut key can be pressed multiple times to toggle the alternates
  • above changes broke layouts built with previous versions; to fix your layouts:
    • rotate wrongly oriented curved tracks once to the right
    • all other tracks that are shown with incorrect types, or not shown at all, need to have their track types changed one down from the track type list
v2.0.10
07/30/10
  • selected tracks and signals can now be moved in the switchboard with the ArrowKeys
  • changed switchboard panning shortcuts to Space-ArrowKeys to prevent conflict with new feature
v2.0.9.2
07/22/10
  • the "check script" toolbar option in the script editor window has been implemented
  • compiler error reporting has been enhanced to indicate code type and object location
  • compiler error line numbers are now reported relative to the corresponding script rather than the entire assembly
  • added line numbers to all script editors to complement the new script error reporting
  • created new window for listing script errors to replace the previous message box
v2.0.8.1
07/05/10
  • fixed an exception in the speech grammar builder that would occur on layouts with at least one track but no turnouts
v2.0.7.6
07/01/10
  • allow directly opening a layout by lauching the app from an .rra file (never worked for ClickOnce deployment)
v2.0.6
06/17/10
  • converted more bitmap icons to vector icons
  • added generic packet PkSpecialOem for Intellibox control to the Loconet API
  • changed LoconetService.ComPort property from enum to byte to support higher COM numbers
v2.0.5
05/31/10
  • removed unused constructors in Tracks/TracksList and Signal/SignalsList objects
  • maintain "last orientation used" in switchboard for new tracks
  • added missing icons in switchboard context menu
  • made it a bit more clear when tracks and signals are placed or replaced in the switchboard context menu
  • configuration of turnout and signal states is now maintained whenever possible after a type change
  • fixed possible route corruption when changing the track type contained in a route
v2.0.4.3
05/28/10
  • improvements to the sequence system:
    • made sequences thread safe so they can now be operated from scripting and UI simultaneously
    • added ability to step enter/edit sequence items through the API; in the previous version only live record was possible
    • added ability to batch substitute slot numbers of the packets in a sequence
    • added icons that dynamically display the status of sequence nodes in the object browser tree view
    • added icons in the object browser's context menu for Record, Play, and Stop actions
    • added a scripting template for playing a sequence
    • added sequence control through speech recognition
  • got rid of the SOAP formatter for save/load layouts due to its lack of support for generics; the SerializationFormat will no longer need to be specified; the binary formatter will always be used
  • toolbar help button now links to Railroad Automation tutorials channel on youtube.com
v2.0.3
05/09/10
  • implemented the Sequence railroad object; before, this was a placeholder and not operational
  • fixed problem with slot status list not being populated in some cases
v2.0.2
04/22/10
  • fixed several UI refresh issues with the LocoIO programmer
  • moved project to VS2010
  • updated toolbar and docking control
v2.0.1
03/27/10
  • changed the BaudRate enumeration to support more rates; specificaly added 38400 and 115200 which are used by Uhlenbrock
  • allow to disable serial port flow control for Uhlenbrock interface
  • fixed the LocoIO multi-port property grid editor
v2.0.0.168
02/20/10
  • rewrote the entire front end in WPF; a couple WinForms controls are still hosted
  • changed old menu/toolbar to a ribbon style and reorganized command structure
  • new vector icons and app logo
  • switched the user settings system from my custom one to the one provided by the .NET framework
  • user guide was old and obsolete so I got rid of it; may write another one at some point
  • got rid of the GDI+ and DirectX switchboard renderers in favor of the WPF renderer
  • changed CTC object icons to be dynamicaly generated reflecting their actual configuration and state
  • multiple switchboard view ports are now supported through tabbed documents
  • script execution added to the voice recognition grammar
  • default save/load layout location changed to user's documents folder rather than application root
  • got rid of the CCW which allowed API calls from COM; .NET has been around for 8+ years so we can let go of COM
  • switched API's layout serialization from SOAP to binary formatter to support generics
  • changed API's event sync system from ISynchronizeInvoke to Dispatch pattern to support Win Forms and WPF UI thread synchronization
  • added script binding for sensor objects
  • changed application target compilation to .NET 3.5
  • changed API's target compilation to .NET 3.0
  • many of the internals where refactored
  • deployment is now offered only through ClickOnce as updates are easier; an offline install package is also available but not updated as often
  • libraries are now offered as a separate download for developers
v1.1.26
04/08/09
  • fixed a permission error when saving application setting on Vista 64bit
v1.1.25
03/28/09
  • created an all new switchboard in WPF (zooming, vector based, dynamic state context menus, etc.)
  • CTC objects now have two types of tags (transient or persisted)
  • sensors can now be manually simulated
v1.1.24
01/26/08
  • changed application target compilation to .NET 3.0
  • fixed problem with nag screens
v1.1.23
08/23/07
  • added new "change direction" grammar to speech recognition
  • changed the installer to bootstrap the .NET 3.0 redistributable rather than including .NET 3.0 DLLs with the release
  • added ability to also set routes without locking them
  • route icons now reflect their state
  • added ClickOnce deployment
v1.1.22
08/03/07
  • give more helpful error if speech recognition recording device is not found
  • updated toolbar and docking control
v1.1.21
07/17/07
  • added Engine.StartSpeedRamp() and Engine.StopSpeedRamp() methods to CTCService for automating throttle speed ramps
  • added "ramp speed" and "hold speed" speech commands to start or interrupt speed ramps
  • throttle speeds are now set to 0 when CTC service is stoped (leaving operation mode or closing application)
v1.1.20
07/15/07
  • open throttles now reflects speed changes as they are made through speech control
  • some speech grammar changes (check speech grammar help)
  • slot status pane can now be opened/closed through speech
  • setting an engine under speech control now automaticaly aquires a Loconet slot; before coresponding throttle had to be open
  • closing throttle no longer purges the slot; this is because engine could also be controlled by speech in parallel
  • fixed error handler catching exceptions thrown by executing CTC commands
  • fixed speech grammar builder error occuring when having no objects in these CTC categories: Turnouts, Signals, Routes
v1.1.19
07/07/07
  • added ability to control railroad operations through speech recognition (.NET v3.0 SAPI v5.3 Vista only feature)
  • added help for speech recognition grammar outlining understandable phrases
v1.1.18
06/16/07
  • refactored the scripting event system again
  • switched to the native MenuStrip and ToolStrip (no longer using SandBar trial for those)
v1.1.17
04/16/07
  • fixed the Vista compatibility issues (menu, toolbar, docking)
v1.1.16
04/14/07
  • updated to a new script editor more compatible with .NET 2.0 and better featured
  • restructured the scripting system to be more flexible and easier to use
  • trigger scripting is gone and replaced by event binding
  • save script without trim; triming now done during compiling
v1.1.15
01/24/07
  • the LocoIO port refresh in the UI, that occurs after port configuration, no longer erases the setup
  • PkLocoIO.RefreshPorts() helper method has been removed (this logic moved to the UI side)
  • PkLocoIO.Request*() helper methods now support callbacks
  • PkLocoIO.Setup class aquired the PortRefresh property again
v1.1.14
01/17/07
  • updated support for second generation LocoIO devices; up to v1.471
  • PkLocoIO packets are now emitted natively by the packet receive events; before received PkPeerXfer has to be casted to PkLocoIO
v1.1.13
09/22/06
  • fixed a null color translation error in the GDI+ renderer
  • added ability to move signals on the switchboard with mouse drag
  • changed the signal selection bounding box in the switchboard
  • shrunk the switchboard's page flip invalidation area back to its most optimum
  • added ability use external decals for signals
v1.1.12
09/05/06
  • added functional signaling to the switchboard area
  • refactored the rendering system in the switchboard for easier layering
  • started work on the CTC command sequencing (not working yet)
v1.1.11
07/17/06
  • updated toolbar control
  • added .Parent property to most Ctc objects
  • changed fonts
  • object states now are edited through the object tree view
  • added ability to apply custom names to object states
  • for better backwards compatibility, deserialization of obsolete classes will no longer throw exceptions
  • added accessory objects and ability to control them through user defined states
v1.1.10
06/10/06
  • changed PkLonkAck packet description for OpsRead responses
  • chanaged save packets log format to be more readable (one line per packet event)
  • fixed "out of sequence" packet responses
  • echo packets for non UI syncronized events are now raised on the SerialPort's receive threads rather than a new worker thread
  • fixed problem where in some instances response packets where not matched to request packets
v1.1.9
05/16/06
  • updated docking control
  • added decoder programming to the UI
v1.1.8.1
01/28/06
  • fixed a significant bug that prevented PkDccProgram and PkComStatOps from encoding correctly
v1.1.8
01/24/06
  • the LoconetService has been altered to support multiple instancing
  • fixed script helpers that broke from previous version changes
  • changed script errors to also show inner exceptions
v1.1.7
01/18/06
  • throttle speed knob indicators now stay synchronized with speed changes from all sources
  • renamed handlers for clarity
  • added TimeStamp property to packet classes so Tx/Rx times can be reported more accurately
v1.1.6
12/28/05
  • updated docking control and enabled dock window tabbing
  • added delegate callback functionality for requests and responses on all Packet classes
  • tag property of the Packet class now gets copied from request packet to response packet
  • tag property now gets cloned by Packet.Clone(); also the new Packet.CallBack* members get cloned
  • LoconetService events are now raised on worker threads rather than communication threads, when no synchronizing object is provided
  • implemented CtcService.ResetStates method
  • fixed an incorrect packet type cast for PkRdWrSlotData inheritors in the COM wrapper
  • fixed an exception in the property grid that occured when switching modes by shortcut
  • fixed a bug in the packet's parity byte calculation that would occur when sending same packet instance twice
v1.1.5
12/21/05
  • updated docking control
  • divided the members of PkRdWrSlotData into four new derived classes PkLocoSlot, PkFastClock, PkDccProgram, PkComStatOps
  • added ability to program DCC decoders on the track with the new PkDccProgram class
v1.1.4
12/07/05
  • added to the CTC documentation
  • renamed some CTC methods for clarity
  • the states and script editors are now accessible in the UI from several places for convenience
  • throttle progressive interval setting is now saved with the engine object
  • replaced the CtcService.TimerPool property with the broader CtcService.SubmitCmd method
  • switched internal collections to strong typed generics
  • added custom serialization to classes inherited from CtcObjectListBase for better backwards compatibility
v1.1.3
11/25/05
  • updated docking control
  • property grid fix for bug introduced by .NET 2.0 conversion
  • added support for SE8 and DS64 to the PkMultiSense class
  • added API documentation back in
  • removed classes not implemented in CCW from type library allowing classes to have the same name in COM/.NET
  • update VB6 project example to reflect class naming changes
  • added enumeration of COM ports so only valid ones are shown in selection list
v1.1.2
  • added COM Callable Wrapper support back in
  • added a .bat file with the installer for those who want to register the CCW type library
  • several code changes to better use .NET 2.0 changes
v1.1.1
  • updated docking control
  • fixed serial port timeout exception encountered when no Loconet network is connected
v1.1
  • converted application to .NET 2.0
  • got rid of most of the interop non-managed calls
  • Loconet API now uses an event model rather than polling for serial comunication
  • some threading changes (priority, handoffs, etc.)
  • added Source column to Loconet Packets Log
  • dropped COM Callable Wrapper support (may reinstate it at later time)
  • dropped API documentation for this release until nDoc documentor is updated for .NET v2.0
v1.0.7
10/01/05
  • fixed a COM Callable Wrapper interface bug for packet types that set engine functions
v1.0.6
08/09/05
  • updated toolbar and docking controls
  • the slot window has been added to the saved docking layout
  • added line numbering in "Generated Assembly" code window to match with "Check Script" line messages
  • preliminary implementation of "Line" objects
  • added THROT_STAT op code but not implemented
v1.0.5
06/28/05
  • updated toolbar control
  • fixed scripting panes bug where editing would not be allowed unless first saved
  • added slot speed step assignment support through the Engine object
  • added length property to routes
v1.0.4
05/20/05
  • updated toolbar and docking controls
  • fixed context menu positioning triggered by the keyboard in the objects tree
  • added OPC_LOCO_F912 packet support
  • added OPC_IMM_PACKET packet support
  • better support for custom packet classes in Loconet API
  • added (Global Scripts/Custom Packet) template in script helper
  • added PkLocoIO packet class as replacement for the old LocoIO class
  • fixed Address property for PkSecurityElem; was off by 1
v1.0.3
03/02/05
  • updated toolbar and docking controls
  • changed to a new code editor control for the script windows
  • updated some portions of the User Guide
  • added reserved members to SpeedSteps enumeration (Loconet API)
v1.0.2
01/24/05
  • added ThrottleID decoding/encoding to the PkRdWrSlotData class
  • updated toolbar control
  • converted all context menus to SandBar and got rid of the old ContextMenu.dll
  • slots count is now auto detected by interogating the command station
  • added command station OPS decoding/encoding to the PkRdWrSlotData class
v1.0.1
11/25/04
  • added function buttons 5-8 to throttle windows
  • updated toolbar and docking controls
  • replaced MagicLibExt.dll with a smaller library ContextMenu.dll
  • fixed a docking layout culture deserialization bug for foreign users
  • fixed some short cut conflicts
  • Loconet packet classes are now inheritable
  • SLOT_STAT1 packets are now dynamically tracked in the slots viewer
  • fixed some inaccuracies with consist and speed step reporting
v1.0
08/19/04
  • added Tag property to CtcService where any serializable object can be placed to be saved with the layout
  • docking definitions are now stored with each layout
  • docking contents now get rebuit when opening a new layout or existing layout in same session
  • added more docking options under the Windows menu group
  • adopted SandBar menu and toolbar control
  • menu and toolbar can now be docked along all edges
  • added menu shortcuts
  • consolidated controls for smaller foot-print
v0.9.10
08/12/04
  • fixed some buffer flip errors on the DirectX renderer when messages get displayed on app load
  • fixed a property grid error for Engine functions; functions array was not initialized
  • reordered the resource loading on app start for better intended results
  • throttle window now gets title bar refreshed when Engine name is changed
  • fixed Slots docking window not initializing when window was saved in a floating state
v0.9.9
08/09/04
  • added higher number COM port options for USB devices
  • moved the throttle control functionality from the UI to the Engine object in the API
  • throttle knob is now also synchronized to external speed changed
  • for open throttles, slot gets released now when throttle is closed or application closes
  • for open throttles, mode changes between Operation/Edit now aquire/release slots respectively
  • adopted SandDock docking and document control
  • now all docking windows save their layouts between sessions
  • other miscelenious docking enhancements and fixes
v0.9.8
07/19/04
  • got rid of SubmitCmd method; no longer needed since new public methods call it on your behalf
  • simplified the call to manualy execute trigger scripts and made it thread aware
  • clear script trigger instance references when exiting operation mode
  • changed the trigger bindings to be performed by the library instead of the auto-generated script
  • made references to compiled script trigger instances private
  • added a new property to the Scripting shared class to check if script is bound
  • made the route locking mechanism more robust
  • made the TimerPool thread safe
  • added a new exception: CalledOnCtcThreadException
  • fixed a clean-up problem when terminating the CTC thread
  • reimplemented the query sensors function with switch packets rather then power on packet
  • removed the pending and delay stage when switching turnouts/signals that are already in the correct position
  • added AquireSlot/ReleaseSlot mothods to the Engine object
  • Speed/Functions/Direction now can be read/written through the Engine object
v0.9.7
06/27/04
  • reworked the event bubbling system and thread marchaling through the API layers
  • sensors now restore their states between sessions
  • disabled "Global Script" editing and "Check Script" menu items in operation mode
  • fixed some issues regarding opening a new or existing layout while in operation mode
  • added CtcService property to check if CTC is currently running
  • changed the default docking possition for the CTC Event window
  • added context menu with "Clear" and "Save" options for CTC Event window
  • open throttle option now apears only in operation mode
  • object names in the property grid are now ReadOnly during operation mode
  • added exceptions to prevent object configuration changes while the CTC is running
  • added exceptions to prevent state changes while the CTC is stopped
  • state changes are now thread aware rather than being resynchronised to the CTC thread every time
  • simplified some scripting commands; moved more of the work in the API
  • changed all the script template helpers to reflect the script changes
  • optimized the trigger mechanism initiating the validation of script triggers
  • depricated the SubmitCmd method from Scripting; should only be called internally or through the API
  • added range validation on some of the object properties
  • fixed a sticky state problem on initial layout load
v0.9.6
06/12/04
  • added global scripting
  • fixed exception errors occuring when OPC_THROT_STAT messages are encountered
v0.9.5
06/04/04
  • added key shortcuts to frequently used switchboard context menu items
  • added new switchboard track element types (sharp curve and crossing)
  • fixed garbage collection problem when deleting tracks or sensors
  • suppress State param when reading OPS with PkMultiSense
  • refined the PkLongAck reporting for OPS programming
v0.9.4
05/26/04
  • added OPS programming for PM4 and BDL16 through PkMultiSense packet type
  • added OPC_SE packet support
  • added better reporting for the PkLongAck packet type
v0.9.3
05/19/04
  • added OPC_LINK_SLOTS packet support
  • added OPC_UNLINK_SLOTS packet support
  • added a new script template for sending Loconet messages
  • added more error handling with user script
  • all command classes now check for null references and report to the CTC Events window
  • fixes some reporting problems with PkMultiSense message
v0.9.2
05/10/04
  • added OPC_FIND packet support
  • added the user guide
  • added more decoding memebers to OPC_SW_REP packets
v0.9.1
04/24/04
  • fixed several bit shifting problems that were causing incorrect packet decoding
  • added the decoding of DS54 address and input pair for OPC_SW_REP packets
v0.9.0
04/21/04
  • fixed bug with script editor text box crashing if deleting the last character
  • added runtime scripting error handling which gets reported through the CTC events window
  • trigger execute code now can be manually executed from object tree
  • revamped the trigger window, added template helpers, and object documentation link
  • enhanced scripting capabilities (i.e. recursive calls; passing argumens)
  • fixed overflow error that occured in PkMultiSense.PmAddress get property
  • added partial support for OPS_SW_REP packet type
  • fixed PkMultiSense.TrDevAddress reporting addresses 1 less than actual
  • added link to this file from About window
v0.8.34
04/12/04
  • removed Events which have been replaced by Triggers and are now implemented
  • added scripting capability (Triggers are supported through scripting)
v0.8.33
01/12/04
  • added DirectX 9.0 acceleration to the switchboard pane
v0.8.32
12/08/03
  • added switch time interval for state objects (ie. turnouts, signals)
  • fixed exception error occuring while activating routes that send no packets
  • added Locobuffer reporting (version, bad frame counter, collision counter)
  • the mode when the app is closed is now saved in settings.xml and restored on next app start
  • removed slot 0 from slot status windows since it did not belong in this context
  • added functions 5-8 in slot status window
v0.8.31
11/15/03
  • modified the serialization proccess to remove redundant states stored in the definition file
  • fixed an exception thrown while opening a throttle, introduced with the last release
  • added support for DS54 devices and device independent input addressing
  • re-did the LocoIO classes; they were to convoluted before
  • fixes problem with OPC_INPUT_REP packets not reporting back to open transactions
v0.8.30
11/01/03
  • added MSDN style documentation for the API
  • added support for OPC_LOCO_SND packet type
  • states are now syncronized with the physical layout when going into operation mode
  • launching associated layout files(.rra) now automaticaly load up when the application starts
  • switchboard display can now be scrolled with the Ctrl-LeftClick.
  • object definitions and states now saved in separate files; the main definition file(.rra) is saved on user request, while the states file(.rrs) is auto saved on every application close; when opening an ".rra" file the ".rrs" file with the same name is also opened and matched
  • fixed a null pointer exception bug caused by an unexpected graphics back surface buffer flip
v0.8.29
10/13/03
  • optimised the CPU efficiency and responsiveness of CTC background thread
  • sensors can now be assigned to blocks
  • tracks can now also be assigned to blocks through the property grid
  • added sorting for blocks and sensors drop-downs
  • blocks now show occupancy
  • redesigned the hierarchical transactional system
  • added Sychronize States options in the Actions menu
  • added transponding parameter reporting for OPC_MULTI_SENSE packet type
v0.8.28
09/13/03
  • moved occupancy from track to block
  • added customized serialization for better backward compatibility of saved files
  • added PM4 parameter reporting for OPC_MULTI_SENSE packet type
  • added switchboard object selection context menu in operational mode
  • added ability to save Loconet traffic log to file
  • OPS_BUSY packets can now be sent by PC to support new version reporting feature of Locobuffer v1.5
  • added child group sorting to objects tree view
  • switch board pannel is now guaranteed to be innermost
v0.8.27.2
09/01/03
  • fixed drawing glitch with connected block tracks
v0.8.27.1
08/30/03
  • fixed problem with not being able to reference RRAutoLib.dll because it was missing from app dir
  • removed install of RRAutoLib.dll to GAC; wasn't needed for CCW after all
  • removed strong name from RRAutoLib.dll that was neccesary for GAC
  • installer now makes registry entries so RRAutoLib.dll is available in the .NET add reference tab
v0.8.27
08/30/03
  • on install RRAutoLib.dll now gets installed in the GAC
  • added CCW (COM Callable Wrapper) around the Loconet API portion of RRAutoLib.dll (i.e for VB6 clients)
  • changed connector ends look for tracks in switchboard display
  • 'reservations' are now called 'blocks'
  • tracks that are part of the same block are now shown as connected
  • turnouts now have a color indicator for when they are locked by a route or pending a state change
  • added new color configurations in the Settings window
  • fixed a problem with "SortPropGridConverter" and added sorting to Settings window
  • allow only one instance of the app to be launched
v0.8.26
08/12/03
  • routes are fully functional now
  • interlocking of turnouts has been implemented
  • pending states changes are now flagged
  • all states changes now only occur in operation mode
  • changed Save/Load errors to have friendlier messages
v0.8.25
08/08/03
  • state delta now built directly into CTC objects and reported through NotifyObjectChange() event
  • added route configuration through the UI
  • CTC commands now wait for packet send confirmation before being reported as complete
  • changed the baud rate to an enumeration
  • fixed some issues with the high resolution timer functions in the Loconet API
v0.8.24
07/28/03
  • added "Requery Sensors" menu item
  • fixed exception which occured when INPUT_REP packets did not match any existing sensors
  • implemented a packet ID scheme to match sent packets with echoes and responses for better packet flow control
  • added packet ID to available fields in packet traffic inspector
  • removed unsupported LocoIO configurations
  • added visual states in status bar
  • moved sensor event handling to the CTC operation mode thread to fix synchronization problem
  • the Loconet API can now simultaneously raise evens on its native thread as well as on the ISynchronizeInvoke object
  • added ISynchronizeInvoke for events to the CTC dispacher API as well
v0.8.23
07/24/03
  • sensor objects are now implemented and respond to INPUT_REP packets
  • API users can now specify an object implementing the ISynchronizeInvoke interface so that the API can raise events on that object's thread
  • fixed bug where panes saved in an undocked state, on app exit, caused them to lock up, on next app restart
  • fixed an Address packet decoding bug in LocoIO programmer for INPUT_REP generating inputs
  • changed incorrect descriptions and superfluous fields in LocoIO programmer for inputs
  • operational mode context menu added in layout view for turnouts
  • context property objects now only get selected from the tree view in operational mode
  • changed operational mode double click state changes in layout view to single click
v0.8.22
07/18/03
  • support for button On/Off states for SW_REQ packets in Loconet API
  • SW_REQ packets in UI can now be assigned an On/Off key press state
  • LocoIO can now be programmed to respond to SW_REQ packets depending on their On/Off key press state
  • On/Off key paramter is now shown in Loconet packet inspector for SW_REQ packets
  • changed the Loconet packet inspector to allow customized columns
  • moved to new type of context menus with icon representations
v0.8.21
07/13/03
  • moved to VS.NET 2003
  • optimised bit wise operations
  • added LocoIO programming for all 6 types of input configurations
  • added class wrappers for sorting properties of packet types
v0.8.20
06/20/03
  • added reading/writing port states in LocoIO programmer window
  • added support for LocoIO setup byte programming
  • added LocoIO multi-port OPS_PEER_XFER packet type for controling signals and switches
v0.8.19
06/15/03
  • OPS_MULTI_SENSE packet is now recognized
  • added reservation editing
  • cleaned up some problems with switchboard's context menu
  • cycle track orientation in both directions
v0.8.18
05/16/03
  • consolidated tracks and turnouts into the tracks group
  • unified the state class for turnouts and signals
  • misc. GUI fixes
v0.8.17
04/29/03
  • added manual control of turnouts
  • added reporting of "switch state" Loconet packet type
  • made decals an embedded resource
  • changed all track decals to smaller square look with 8 rotating possitions
  • changed track decals to be dynamicaly created and cached
  • added all switchboard colors to settings
  • config.xml has been removed and consolidated to settings.xml
  • settings.xml is no longer copied by the installer; first run creates it with defaults
v0.8.16
04/07/03
  • Added key shortcuts (Home)/(End) for Forward/Reverse
  • Changed LocoIO address range to 81-255
  • Added broadcast address feature for LocoIO programmer
v0.8.15
03/24/03
  • removed the obsolete "Sections" object
  • updated to a new version of the docking control
  • cleaned up release of registered events for closed windows
  • added "hide all", "show all" in Windows menu
  • removed some variable bloat for all dynamic context menus
  • fixed bugs with object browser context menu
  • implemented progressive throttle increment
  • changed install banner
v0.8.14
03/18/03
  • fixed issues with keyboard shortcuts and multiple throttles
  • reversed mouse wheel behavior
  • turnout configuration has been added
  • added context menu for Loconet packets log
v0.8.13
02/25/03
  • added dynamic attribute binding wrapper for propertygrid classes
  • added background dispacher thread
  • added dispacher message docking window
  • signal state changes now runs on dispacher thread
v0.8.12
01/18/03
  • added ability to configure signals
  • added manual control of signals
v0.8.0 to v0.8.11 Prior to this change log.