Cabin Portal

The crew panel, the flight deck and the world outside, for a mock that has none of them. Everything here is a switch a PED can only ever observe — the spec operations themselves live on the sockets and at /docs.

Post a Notification

Every connected PED immediately receives its own updated list — the per-device fan-out §2.1.2 describes — and should show it as a banner.

The app can only read and dismiss notifications, so posting one is dev scaffolding rather than a spec operation. IDs are monotonic within a flight and restart from 1 after a clear.

Posted

Retracting removes a notification for everyone, unlike a PED dismissing it for itself. Clearing is what real hardware does on weight-on-wheels: it empties the list and every device's dismissals.

PA Announcement

Announcement …

Stands in for the flight deck: there is no Set: "PA" in the spec, so a PED can only ever observe this. While it is active every connected PED receives { "PA": "Active" } unasked and should lock its UI, mute its media and show the announcement message. On the cabin node the real speakers are muted for the duration; Volume and NowPlaying are deliberately left alone, so the level returns by itself when the announcement ends.

Task Lights

Reading lights …

A property of the airframe, not a control: §2.1.2.1 reports task lights only by whether a TASK_LIGHTS entry appears in the Get Lights response — "No value for Task Lights. Only used to show if present or not." With them removed, every PED should render no task-light control at all, and Set: "Lights" for CABIN_LIGHTS or LAV_LIGHTS is denied as invalid. The entry is hidden rather than deleted, so putting them back restores it unchanged.

Airframe

The hardware options every other response is derived from, and the one thing here with no spec operation of any kind — §2.1.2 gives the profile a Get and nothing else, because it describes the airframe. manual shades make ShadesPresent false and Get: "Shades" an empty list; cw is reported as the lights Type; None cabin audio and an unset Crew Hail are widgets the app removes on its own. Leaving Name empty clears it, which is what exercises the tail-number fallback. Serial is not settable: it is permanent and nothing branches on it.

Nothing is broadcast. Real hardware does not become a different aircraft in flight, so there is no unsolicited update to send and inventing one would teach the app an event the real node never emits. A connected PED keeps the airframe it read until it asks again — reconnect it, or have it re-read Get: "Aircraft".

Cockpit Lockouts

Lights …
Shades …
Climate (temperature and fan) …

§2.1.4: a cockpit command supersedes every app role, the owner included. Locking one re-broadcasts the affected surfaces unasked, with LightsControl / ShadesControl / TempControl / SpeedControl reading "Locked", and a Set against it is denied with Reason: "locked". Temperature and fan share one avionics enable and always lock together.

Link to the cabin equipment …

§2.1.1: dropping it emits lost on /io, /map and /media, and a client connecting while it is down is told lost instead of ready. It disconnects nobody and locks nothing — the PED is still on the cabin WiFi and the controls keep answering, so there is somebody there to show the disabled UI.

USB Drive

Cabin USB drive …

Flips the insertion switch and broadcasts the emptied library to every /media client the way pulling a drive does. While it is out, Get: "Songs" and Get: "Videos" with Source: "usb" answer with empty lists — the drive is gone, not idle. The library itself is untouched, so putting it back restores it.

Flight Scenario

Swaps the whole flight picture and pushes it to every /map client. A client watching the map keeps streaming across the switch.

Cruising is KATL to KJFK, the shipped default. On ground is parked at KATL with no flight plan, OnGround true, and airspeed, Mach, wind and the entire destination set absent rather than zeroed. Transcon is KJFK to KLAX, and it exists because Cruising cannot catch a timezone bug: both its ends sit at -04:00, so an app that reads ArrivalTimeLocal and one that recomputes it against the aircraft's own clock render the same string. On Transcon they differ by three hours — the field says 13:20 local, the same instant on the aircraft's clock reads 16:20.

No Computed Data

§2.1.3.1: a parameter the source cannot compute is left out of the response entirely — not null, and not 0, which an app renders as a reading the avionics never made. Tick one to make it disappear from both the snapshot and the periodic push, live, without a reconnect. ETA and RemainingTime carry the same value, so they hide and return together.

State

Dump full state →

Re-seeds every store from the bundled defaults, including the switches above. It does not disconnect anyone, so a connected PED keeps whatever it last read until it asks again.

← Back to server home