Skip to main content

Navigator — navigator

A screen somebody controls the house from: a Juno OSD on a television, a wall panel, a tablet in a dock. The thing Control4 calls a navigator, and the reason the word is used here rather than "display" — a television is a display and is a different object entirely, one this drives.

It controls; it is not controlled. Nothing in a house asks a navigator to do something, so this contract has almost no commands: what it is for is being placed. A screen in the kitchen should open on the kitchen, and the only way it can know that is for somebody to have said which room it is in — which is exactly what putting a device in a room already means everywhere else in Juno. Nothing new had to be invented for it; a navigator is a device, and devices live in rooms.

The identity is the MAC, in serial. Two Pis flashed from one card image are identical in every other respect — same hostname scheme, same software, same everything — so the burned-in address is the one thing that distinguishes them, and it is what a room assignment has to survive being keyed on. Reflash the card and the assignment still holds; swap the SD into a different Pi and it correctly does not.

There are no commands at all, which is deliberate rather than unfinished — keypad is the same shape for the same reason. A navigator would want an identify ("say which one you are, so I can tell which room I am standing in"), and it is not here because the screen has no control channel yet to receive one. A contract that claimed it would be a contract that lies.

Capabilities​

Declared in the driver manifest under [[proxy]] capabilities. Anything not declared takes the default below.

CapabilityTypeDefaultMeaning
has_cecboolfalseHas an HDMI-CEC line to a television. It is not driven from here — a screen with this gets a cec_link device of its own — but whether the hardware has one at all is a fact about the screen, and this is where facts about the screen live.
has_controlboolfalseAccepts navigation commands over a channel back to the screen. True for an OSD a remote drives; false for a tablet that is only placed.
has_mixingboolfalseThe navigator has independent voice and media playback paths
has_pauseboolfalseMedia on the navigator's companion output can be paused and resumed around voice
has_voiceboolfalseVoice replies and announcements can be delivered to this navigator
is_audio_sourceboolfalseIts sound goes with the picture, down the same lead.
is_video_sourceboolfalseIts picture goes somewhere — a television, a matrix — rather than being looked at where it is.

Commands​

dpad​

Only present when has_control is declared true.

ParameterTypeNotes
keyone of up · down · left · right · select · back · home · menu · info

pause​

Only present when has_control is declared true.

No parameters.

play​

Only present when has_control is declared true.

No parameters.

play_pause​

Only present when has_control is declared true.

One key for both, which is what a remote's transport row actually has.

No parameters.

skip_back​

Only present when has_control is declared true.

No parameters.

skip_forward​

Only present when has_control is declared true.

No parameters.

stop​

Only present when has_control is declared true.

No parameters.

Notifications​

online_changed​

ParameterTypeNotes
onlinebool

showing_changed​

Which room the screen is showing, or nothing when it is on the house view.

ParameterTypeNotes
roomstring

voice_endpoint_changed​

Where a voice switch can deliver replies for this navigator. Empty means the voice player is not currently reachable. This is deliberately on the navigator rather than its companion media output: media can be disabled in a distributed-audio room while voice remains available on the screen.

ParameterTypeNotes
endpointstring

State​

Last-known values core keeps for a binding of this proxy.

KeyTypeMeaning
addressstring
endpointstring
modelstring
onlinebool
serialstring
showingstring