Add multi-decoder split and pit timing support
This commit is contained in:
@@ -39,7 +39,7 @@ Set-ExecutionPolicy -Scope Process Bypass
|
||||
.\windows\setup.ps1
|
||||
```
|
||||
|
||||
Install, add inbound firewall rules for ports `8081` and `9000`, and start the server:
|
||||
Install, add inbound firewall rules for `8081` and decoder channels `9000-9003`, and start the server:
|
||||
|
||||
```powershell
|
||||
Start-Process powershell -Verb RunAs -ArgumentList '-ExecutionPolicy Bypass -File .\windows\setup.ps1 -OpenFirewall -StartServer'
|
||||
@@ -116,16 +116,20 @@ The recommended normal operation is to let the backend manage AMMC:
|
||||
1. Start RaceController with `npm.cmd start`.
|
||||
2. Open `Settings`.
|
||||
3. Enable `Managed AMMC`.
|
||||
4. Set the decoder IP and WebSocket port `9000`.
|
||||
5. Save and click `Start AMMC`.
|
||||
6. Use the server WebSocket URL and connect the decoder.
|
||||
4. Set the Main decoder IP and WebSocket port `9000`.
|
||||
5. Optionally enable Split (`9001`) and Pit entry/exit (`9002`/`9003`) with the IP address of each physical decoder.
|
||||
6. Save and click `Start AMMC`.
|
||||
7. Use the server WebSocket URLs and connect the decoders.
|
||||
|
||||
AMMC always runs on the computer that runs `npm.cmd start`. Opening the UI from a laptop does not start AMMC on that laptop.
|
||||
|
||||
## Network access
|
||||
|
||||
- Admin/UI/backend: TCP `8081`
|
||||
- AMMC WebSocket: TCP `9000`
|
||||
- Main AMMC WebSocket: TCP `9000`
|
||||
- Optional Split/Pit AMMC WebSockets: TCP `9001-9003`
|
||||
|
||||
Each physical decoder has its own IP. Each AMMC process on the Windows backend has its own WebSocket port. Main is the only channel that counts laps; Split records intermediate times, while Pit entry and Pit exit open and close a timed pit stop.
|
||||
|
||||
Find the Windows server address with:
|
||||
|
||||
|
||||
@@ -117,7 +117,7 @@ if ($OpenFirewall) {
|
||||
if (-not $isAdmin) {
|
||||
Write-Warning "Firewall rules require an Administrator PowerShell. Setup continues without them."
|
||||
} else {
|
||||
foreach ($port in @(8081, 9000)) {
|
||||
foreach ($port in @(8081, 9000, 9001, 9002, 9003)) {
|
||||
$ruleName = "JMK RB RaceController TCP $port"
|
||||
if (-not (Get-NetFirewallRule -DisplayName $ruleName -ErrorAction SilentlyContinue)) {
|
||||
New-NetFirewallRule -DisplayName $ruleName -Direction Inbound -Protocol TCP -LocalPort $port -Action Allow | Out-Null
|
||||
|
||||
Reference in New Issue
Block a user