ato/spec/interface.md
Mona Lisa a8d40b466b
Some checks are pending
CodeView ATO CI / rust (push) Waiting to run
CodeView ATO CI / integration (push) Blocked by required conditions
Add standalone ATO controller in lean Rust.
Pure ato-core logic, minimal HTTP client, JSON config and spec files.
Docker build with tests; integrates with TrainSim over simple REST API.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-14 20:37:21 +00:00

45 lines
857 B
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ATO ↔ TrainSim interface (v1)
Standalone. No ETCS. No ATP. JSON over HTTP.
Base URL (TrainSim): `http://trainsim:8080`
## TrainSim → ATO reads
`GET /train/state`
```json
{
"speed_mps": 0.0,
"position_m": 0.0,
"track_length_m": 1000.0,
"sim_running": false
}
```
## ATO → TrainSim writes
`POST /train/actuate`
```json
{
"traction_pct": 0,
"brake_pct": 0
}
```
Percent 0100. Do not send both > 0 (TrainSim clamps brake wins).
`POST /sim/start` — start physics tick (empty body)
`POST /sim/stop` — pause physics (empty body)
Optional (TrainSim logs only): `POST /train/doors` `{ "command": "open" | "close" }`
## ATO configuration (env)
| Variable | Meaning |
|----------|---------|
| `TRAINSIM_URL` | TrainSim base URL |
| `TARGET_SPEED_MPS` | Cruise target (default 10) |
| `TICK_MS` | Control period (default 100) |