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.
| Capability | Type | Default | Meaning |
|---|---|---|---|
has_cec | bool | false | Has 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_control | bool | false | Accepts 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_mixing | bool | false | The navigator has independent voice and media playback paths |
has_pause | bool | false | Media on the navigator's companion output can be paused and resumed around voice |
has_voice | bool | false | Voice replies and announcements can be delivered to this navigator |
is_audio_source | bool | false | Its sound goes with the picture, down the same lead. |
is_video_source | bool | false | Its picture goes somewhere — a television, a matrix — rather than being looked at where it is. |
Commands
dpad
Only present when
has_controlis declared true.
| Parameter | Type | Notes |
|---|---|---|
key | one of up · down · left · right · select · back · home · menu · info |
pause
Only present when
has_controlis declared true.
No parameters.
play
Only present when
has_controlis declared true.
No parameters.
play_pause
Only present when
has_controlis declared true.
One key for both, which is what a remote's transport row actually has.
No parameters.
skip_back
Only present when
has_controlis declared true.
No parameters.
skip_forward
Only present when
has_controlis declared true.
No parameters.
stop
Only present when
has_controlis declared true.
No parameters.
Notifications
online_changed
| Parameter | Type | Notes |
|---|---|---|
online | bool |
showing_changed
Which room the screen is showing, or nothing when it is on the house view.
| Parameter | Type | Notes |
|---|---|---|
room | string |
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.
| Parameter | Type | Notes |
|---|---|---|
endpoint | string |
State
Last-known values core keeps for a binding of this proxy.
| Key | Type | Meaning |
|---|---|---|
address | string | |
endpoint | string | |
model | string | |
online | bool | |
serial | string | |
showing | string |