Mikko Rasa [Wed, 27 Oct 2010 18:49:03 +0000 (18:49 +0000)]
Return null from Route::find if a route can't be found
Avoid setting a route that can't be reached
Stop timetable if route can't be set
Put diversion route in RefPtr so it gets cleaned if we bail out
Mikko Rasa [Wed, 27 Oct 2010 16:14:17 +0000 (16:14 +0000)]
Support multiple timers (currently 0 and 1)
Provide functions for setting timers in µs as well as Hz
Rewrite interrupt callbacks as macros that directly create the ISR
Add an async mode for LCD
Fix DDRB in s88w-t
Mikko Rasa [Tue, 26 Oct 2010 08:39:37 +0000 (08:39 +0000)]
Do not show path on new tracks
Display errors from add_tracks_to_route in status bar
Adjust rendering pipeline to better support semi-transparent base objects
Mikko Rasa [Fri, 22 Oct 2010 21:08:17 +0000 (21:08 +0000)]
Make Route hold non-const Tracks to match Block
Make several functions take non-const parameters to avoid escaping constness:
- Track::get_endpoint_by_link
- Block::get_endpoint_by_link
- Layout3D::get_track
Mikko Rasa [Tue, 19 Oct 2010 16:32:20 +0000 (16:32 +0000)]
Add a variant of Route::find that takes a set of tracks
Allow setting turnouts in a Route manually
Move Route::update_turnouts to its proper place
Add full route chaining to Train
Better logic for where to start pathfinding
Divert trains to an alternate route if possible when blocked
Mikko Rasa [Fri, 15 Oct 2010 19:15:10 +0000 (19:15 +0000)]
Reserve two ids for double-address turnouts
Report track z coordinate correctly for turnouts
Don't reserve more blocks when arriving at end of route
Add a small offset when placing a train after loading
Mikko Rasa [Thu, 14 Oct 2010 19:25:50 +0000 (19:25 +0000)]
Generate IDs for new turnouts
Update routes when a turnout ID is changed
Properly support non-loop routes
Link tracks as they are loaded
Don't move tracks when linking if one of them is flexible
Move route rebuilding to the Route class
Mikko Rasa [Sun, 10 Oct 2010 09:21:07 +0000 (09:21 +0000)]
Support taking trains off the tracks
Don't give up a block that still has vehicles on it
Fix get_reserved_distance after placing a long train
Don't use speed steps more than 3 above the last known one
Mikko Rasa [Mon, 4 Oct 2010 19:59:30 +0000 (19:59 +0000)]
Create a more generic version of Train::get_reserved_distance
Use it to determine if a trailing non-sensor block can be freed
Don't release blocks if there's not enough distance for stopping
Reserve enough blocks to maintain speed
Mikko Rasa [Sun, 3 Oct 2010 18:56:38 +0000 (18:56 +0000)]
Add an overload of Block::traverse that takes a Route
Improved handling of taking blocks from another train
Add yield system for trains of equal priority
Mikko Rasa [Sun, 26 Sep 2010 19:53:02 +0000 (19:53 +0000)]
Change the control system to separate speed and reverse
Don't emit signal_arrived until the train has stopped
Slow down for the last stretch at the end of reserved track
Mikko Rasa [Sat, 25 Sep 2010 08:46:20 +0000 (08:46 +0000)]
Add some utility functions for interfacing with hardware
Improve makefile to support uploading to Arduino Mini
Expand s88w protocol to support multiple transmitters
Add lcd output to s88w-r for debugging
Mikko Rasa [Mon, 26 Apr 2010 09:09:21 +0000 (09:09 +0000)]
Don't clear timetable before all rows are successfully parsed
Do a more complete reset of timetable state when clearing
Also reset timetable state when toggling enabled state
Mikko Rasa [Sat, 24 Apr 2010 18:04:08 +0000 (18:04 +0000)]
Fix a compile error
Handle a null train properly in TrainProperties constructor
Print emergencies to stdout
Report sensor number in unreserved sensor triggers
Never update real_speed[0]
Return a nonzero value if no speeds are recorded yet
Mikko Rasa [Wed, 21 Apr 2010 19:20:46 +0000 (19:20 +0000)]
Halt all trains in various unexpected situations
Turnouts no longer get stuck if a switching attempt fails
Save the vehicles of trains in state file
It's better to put trains too far back rather than forward
Mikko Rasa [Wed, 14 Apr 2010 21:06:34 +0000 (21:06 +0000)]
Fix pathfinder to not block itself in some situations
Better handling of routes at the beginning of Train::reserve_more
Delay clearing route until stopping
Mikko Rasa [Sat, 3 Apr 2010 09:49:02 +0000 (09:49 +0000)]
Add a program for serial port control and associated Arduino firmware
Make network client handle error packets
Add function to get all trains from the client
Mikko Rasa [Sat, 20 Mar 2010 11:42:43 +0000 (11:42 +0000)]
Add a pathfinder function to Route
Implement train go-to functionality
Stop train when arriving at the end of its route
Fix a bug with multi-address turnouts
Add a Z offset to Path3D
Rewrite track picking in Engineer
Mikko Rasa [Fri, 12 Mar 2010 09:29:16 +0000 (09:29 +0000)]
Turn TrackPart into a proper class
Link TrackParts to each other for better efficiency in get_point
Move most of get_point to TrackType
Return direction and grade from get_point in addition to position
Mikko Rasa [Mon, 8 Mar 2010 21:53:29 +0000 (21:53 +0000)]
Major architecture rework
Create a Driver abstraction to hide the code that talks to the physical equipment
Remove TrafficManager and put Blocks and Trains in Layout
Dynamically update Blocks as the layout changes
Remove Locomotive, Turnout and Sensor classes
Tracks now have an active_path property
Trains now allows setting functions
Move option parsing in Engineer to a separate class
Many minor changes
Mikko Rasa [Wed, 3 Mar 2010 21:56:51 +0000 (21:56 +0000)]
Emit various signals from Train when it's loaded
Add Train3D class
Add Object3D class as base for Track3D and Train3D
Make Overlay3D use Object3Ds
Overhaul Engineer code
Mikko Rasa [Mon, 1 Mar 2010 20:35:46 +0000 (20:35 +0000)]
Add accessors adding things to a Catalogue from the outside
Emit signals from Catalogue as things are added
Make Catalogue3D listen to the signals and create appropriate things
Remove the track color and quality interfaces
Mikko Rasa [Sun, 28 Feb 2010 12:56:24 +0000 (12:56 +0000)]
Rename Input to InputDialog to avoid the conflict with the Msp::Input namespace
Derive InputDialog from GLtk::Dialog
Get events from the Root widget rather than the Window
No need for the input pointer or state in Designer anymore
Add tooltips to the Toolbar
Implement a few more of the Toolbar buttons