1217 Commits

Autor SHA1 Nachricht Datum
Reinder Feenstra
6640cec82f
Merge pull request #73 from gfgit/work/z21_pending_queue
Z21 pending request queue
2024-09-24 18:44:29 +02:00
Reinder Feenstra
5301752ed6 Implemented DCCext defaults for 3-way and slip turnouts
based on YaMoRC YD8116 (there is no standard yet)
2024-09-04 18:29:13 +02:00
Reinder Feenstra
e51b3c03a9 Added unit attribute 2024-08-29 23:34:42 +02:00
Filippo Gentile
943c52fc45 server: Z21 SimulationIOHandler updateChecksum() 2024-08-17 13:35:20 +02:00
Filippo Gentile
2c7f27370e seerver: Z21 SimulationIOHandler cache Decoder state
- Decoder state is cached to allow replying correctly
- Cache uses LanXLocoInfo so it does not need conversion upon sending
2024-08-17 13:00:09 +02:00
Filippo Gentile
e4c3aab43e Revert "server: Z21 ClientKernel fix crash on disconnect"
This reverts commit 5a291f0c914c904c98dcd3d1f0434f05bf31f39e.

This workaround is not needed anymore after commit
161a0e9521bc3ef30c799234d3f82d84b971afdd
2024-08-17 12:27:11 +02:00
Filippo Gentile
2f1bfe49cc server: TrainVehicleList strich checks on add/remove 2024-08-16 16:37:38 +02:00
Reinder Feenstra
2e429d2e65 fix: addToWorld was called instead of destroyed
thanks @gfgit for spotting it!
2024-08-01 23:14:04 +02:00
Filippo Gentile
e66f1083df server: BlockRailTile move path release to TrainTracking
- This effectively reverts commit 0b22d1f7
- Logic from commit 0b22d1f7 is now in TrainTracking
- This fixes case when short train releases "enter"
  block before occupying "exit" block.
2024-07-29 20:26:33 +02:00
Filippo Gentile
7510a10ef4 BlockPath: implement delayed release
This simulates train still occupying turnouts while it has
already left the entrance ("from") block.
Useful when turnouts do not have dedicate occupancy detectors.

- New World property
- English and Italian translations
2024-07-29 20:26:33 +02:00
Filippo Gentile
4c6f80afa7 server: World add new settings for external output change
- Refactored code in TurnoutRailTile and SignalRailTile
- Use early return pattern
- Added Enlish and Italian translations
- New Category::trains
2024-07-29 20:26:33 +02:00
Filippo Gentile
343a14ceb1 server: Add better log messages to Signal and Turnouts
- New messages when position/aspect is externally changed
- New messages when position/aspect is corrected
- New messages when train is stopped
- Separate messages for Signals and Turnouts
- Avoid stopping twice the same Train
- Italian and English translations
2024-07-29 20:26:33 +02:00
Filippo Gentile
76c5451275 server: Add log warning when output is externally changed while locked 2024-07-29 20:26:33 +02:00
Filippo Gentile
7590a82d39 server: SignalRailTile stop trains when retry is exceded
- When locked and retry count is reached, stop trains in path
- Evaluate only if a path is reserved
2024-07-29 20:26:33 +02:00
Filippo Gentile
a2687177a4 server: TurnoutRailTile implement retry count
- If position is externally changed while a path is reserve
  Turnout will try to reset it's position to reserved one
  If it fails and reaches maximum retry count it will stop trains in
path.
2024-07-29 20:26:33 +02:00
Filippo Gentile
7bcffe3319 server: SignalRailTile implement basic retry count 2024-07-29 20:26:33 +02:00
Filippo Gentile
96124b4419 server: BlockRailTile release path when train leaves 2024-07-29 20:26:33 +02:00
Filippo Gentile
7f8d16de0c server: BlockPath prevent release while train is inside it 2024-07-29 20:26:33 +02:00
Filippo Gentile
06a2d46ccc server: BlockPath remove block reservation on release
TODO: this is HACKY and bypasses some logic
2024-07-29 20:26:33 +02:00
Filippo Gentile
bda6f4b495 server: NXManager allow releasing a reserved path 2024-07-29 20:26:33 +02:00
Filippo Gentile
40722ef433 server: BlockRailTile always updateTrainMethodEnabled when adding train 2024-07-29 20:26:33 +02:00
Filippo Gentile
aa35bacfac server: DirectionControlRailTile prevent double reservation
- Allow setting to "Both" while reserved
2024-07-29 20:26:33 +02:00
Filippo Gentile
17a0a05fd8 server: DirectionControlRailTile lock while in reserved path 2024-07-29 20:26:33 +02:00
Filippo Gentile
c1480f15cb server: CrossRailTile clear state on path release 2024-07-29 20:26:33 +02:00
Filippo Gentile
dd55749777 server: TurnoutRailTile lock position if reserved
Also react to external output changes and revert to reserved position if sneeded.
2024-07-29 20:26:33 +02:00
Filippo Gentile
b63d071ddf server: SignalRailTile fix external aspect change evaluation 2024-07-29 20:26:30 +02:00
Reinder Feenstra
f79f016a89 test: added: Direction path reservation using NX and change direction state 2024-07-29 20:22:54 +02:00
Reinder Feenstra
4f338f8e10 fix: use _stricmp on Windows, strcasecmp is POSIX 2024-07-16 08:34:10 +02:00
Reinder Feenstra
8e655f7c2e worldlist now sorted case insensetive 2024-07-15 23:53:04 +02:00
Reinder Feenstra
fdda0888d3 Upgrade to Lua 5.4 2024-07-12 00:23:12 +02:00
Reinder Feenstra
e545408c1e fix: objects kept each other alive 2024-07-10 00:33:17 +02:00
Reinder Feenstra
80b08cb02a outputmap: added parent property for client, so it can access the object the outputmap belongs to. 2024-07-08 23:11:09 +02:00
Reinder Feenstra
4d76dc8891 Converted Tile::tileId() to a property, so it can be used by the client. 2024-07-08 23:09:15 +02:00
Reinder Feenstra
e6cc388aa9 fix: SIG SEGV when ECoS failed to connect
see #150
2024-07-08 22:58:19 +02:00
Reinder Feenstra
e6a215825b output map: moved use to signal output map
(other output maps always use all values)
2024-07-07 00:15:10 +02:00
Reinder Feenstra
4e11e789aa fix: dual_motor translation 2024-07-07 00:12:39 +02:00
Filippo Gentile
3b6f7c8fd0 server: Z21 fix reply to broadcast flags
- Protocol specs says reply has LAN_GET_BROADCASTFLAGS header too
2024-07-06 15:37:42 +02:00
Filippo Gentile
eba845cab5 server: Z21 ClientKernel remove speed trend logic
- Reply queue superseeds it
- It never worked and it's over complicated
- Keep LocoCache, maybe can be further simplified
2024-07-06 15:12:45 +02:00
Filippo Gentile
fc2ff35856 server: Z21 reply queue, use encoded speed and steps
- To save space we use the same encoding as done
  in Z21 protocol.
- This way we also can directly compare without decoding
- Now also direction and emergency stop are checked
2024-07-06 14:27:50 +02:00
Reinder Feenstra
aa8228dd6b Added "dual motor/coil" option to single/double slip turnout, this controls the available turnout positions.
see #112
2024-07-05 23:51:01 +02:00
Filippo Gentile
8a8772ede0 server: Z21 add pending request tracking
This makes it possible to detect replies from
Z21 originated by our own requests and process
them differently than externally generated
messages.

This also enables resending requests which did
not receive the expected reply in timeout
2024-07-04 13:55:03 +02:00
Reinder Feenstra
f4c9e722c9 No more git lfs, git lfs is metered 2024-07-03 23:01:45 +02:00
Reinder Feenstra
9a9614edc0 fix error: captured structured bindings are a C++20 extension 2024-07-03 21:21:32 +02:00
Reinder Feenstra
93c7204d9c Renumbered error codes, E3003 and E3004 conflict with PR #115 2024-07-03 19:50:34 +02:00
Reinder Feenstra
343cc1c978
fix error: declaration shadows a structured binding [clang-diagnostic-shadow] 2024-07-03 08:13:01 +02:00
Reinder Feenstra
10c7d732d1 Added train param to block.removeTrain and error reporting.
Client will now show an error in case the train can't be removed.
Added support for removing a specific train if multiple trains are in the block.
see #70
2024-07-02 23:42:22 +02:00
Reinder Feenstra
1dd2f375c3 xpressnet: use async tcp connect the prevent "hanging", see #150 2024-06-27 23:53:51 +02:00
Reinder Feenstra
7e8d82673a fix: added missing destructor in header 2024-06-27 23:51:46 +02:00
Reinder Feenstra
0bc31a7129 traintasticdiy: use async tcp connect the prevent "hanging", see #150 2024-06-27 22:24:03 +02:00
Reinder Feenstra
a9ae2497bf block: deactivate train if it is removed from the last block 2024-06-27 21:41:35 +02:00