-
-
Notifications
You must be signed in to change notification settings - Fork 10
WIP: Italian signals #119
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
WIP: Italian signals #119
Conversation
Parse current output state as received from command station and use it to match an output action
Also adapt all subclasses
None None means "any state is ok" so it should always match whatever current output state is.
Re-evaluate signal aspect to protect from accidental changes made by the user from the command station or handset device.
TODO: this is HACKY and bypasses some logic
Also react to external output changes and revert to reserved position if needed.
- Now release timer is stopped when pressing a third button which becomes first button of new pair. - Timer is also stopped when editing mode is enabled - Hold timer is stopped if same button is clicked again
- Allow setting to "Both" while reserved
Currently it's same as Signal3AspectRailTile
- Added lamp state and color enums
BoardAreaWidget: added blink timer to repaint signal tile
Awesome, can you send me the link. maybe @princeofnaxos can add some details about the Swedish signaling system.
Or we could convert it to markdown an add it to git, e.g. in a
The benefit of using a generic multipurpose signal tile would be that changing/upgrading the signal type is easy, just select another Currently "sub object" are kind of const, these properties are set once at construction but never change afterwards. (The object the property refers to isn't const of course.) Maybe we can experiment with both and see what works best for developers and end users. The number of signaling systems could easily reach 20 I think. Changing object properties at runtime will also require client modifications as that isn't supported currently. I'm curious if it is a good or a bad idea, so I'll create a branch to do some experiments next week. p.s. I like to release Traintastic 0.3 soon, mainly to have a new release 0.2 is over a year ago, so this signaling stuff will not go into 0.3. For 0.4 I'd like to make Traintasic have the base minimum features for block / some form of automatic trains. Signaling would be a good addition, as the different systems might give insights on things to take into account for automatic trains. |
|
We can try this:
https://ethercalc.net/=railwaysignals
Nextcloud doesn't seem to allow editing online, I need to study it more.
I lime the "limited allowed updates" so you don't accidentally make a mess in your layout.
But I agree we can keep some branches with different approaches and see how they evolve.
I did't understand the sub object thing...
About automation we should add a "lengt" property to blocks to calculate brake distance.
Also add a generic way to extract speed limit from any type of signal.
We could attach an abstract "engine" to each train and subclass for manual/semi/automatic control
|
I added the generic and NL signals and saved a local copy (as anyone reading this can edit it now 😎)
My bad, I'd hope to build a small demo next week on a branch to demonstrate and try to explain it again :)
And you need block / turnout position speed limits to determine the correct aspect.
Yeah, for sure. While adding the NL aspects, each aspect is basically a combination of a few things. For the ITA signals it is the same I think, I'd hope there is some overlap :) |
|
@reinder I saw you added NL signals. I like this table approach. I've updated a new file at: https://ethercalc.net/=railwaysignals |
|
Yeah, there is indeed a bug in Ethercalc, the ODS I downloaded is garbage too. Nice work, there are really a lot of aspects!
I don't get this one.
I added a few column in the front (not yet complete), I thought it would be nice if we can break down the aspects into "attributes", we can use that more easily for train control. |
Yea sorry, I've just copied "brake" from the line above. The meaning is:
So basically you're always at 30 km/h until maybe next's next signal :) |
|
Instead what does it mean: "Proceed, brake until 60 km/h, not required to be reached at next signal"? |
That is correct, the next signal then will be "brake until 60km/h must be reached at next signal". I think it is a short block thing, we're one block isn't enough to brake to 60 km/h. |
- This allows to draw any aspect inside tile context menu - Preliminary Auxiliary Speed Reduction code
- Added client code to draw Rappel and permanent speed reduction triangle - Renamed calculateLampStates() to calculateLampStatesITSignal() - Omit topmost red light when using permanent speed reduction triangle
- Add SignalRailTileITA class ID and enum names - Sync with English
|
Hi @reinder, I'm trying to understand Block reservation logic. |
That is indeed not supported yet, the
I think it is best that "normal" reservations always fails if a block is occupied. Entering an occupied block is something special with a few use cases which involve other operations too. So I think it is best to handle it as a special thing.
That isn't supported yet, but should be supported in the future. Merging trains really is an advanced operation, something we must take into account, however I think we should first implement the "normal" reservation and train tracking stuff :) |
Sure. In the meantime I've added support for "partially occupied aspect even though it cannot be disabled yet for mainline if it detects multiple inputs for a block. When we'll move to advanced stuff it will be ready. I've also added "anticipation-only signals" (Avviso) using same base class.
|
|
Hi @reinder I've implemented setting signal lamp count. However in client board drawing code signals with 1 lamp look ugly. |
|
Just created a discussion thread, as this is more about signaling in general now -> #123 |
Hi, I've made a really quick'n dirty patch to add Italian signalling system.
It was really fun to code!