Current section

Files

Jump to
hap lib hap display.ex
Raw

lib/hap/display.ex

defmodule HAP.Display do
@moduledoc """
A behaviour which encapsulates all user-facing display concerns for an accessory. Applications which use HAP may
provide their own implementation of this behaviour as a field in a `HAP.AccessoryServer`. If no such
implementation is provided HAP uses a default console based implementation
"""
@doc """
Display a notification to the user containing information on how to pair with
this accessory server. The value of `pairing_url` can be encoded in a QR code
to enable pairing directly from an iOS device.
"""
@callback display_pairing_code(
name :: HAP.AccessoryServer.name(),
pairing_code :: HAP.AccessoryServer.pairing_code(),
pairing_url :: HAP.AccessoryServer.pairing_url()
) ::
any()
@doc """
Stop displaying any currently displayed pairing information to the user. This is
most commonly because a pairing has been established with a controller
"""
@callback clear_pairing_code() :: any()
@doc """
Display a notification to the user that identifies the named device or accessory.
This comes from a user request within the Home app to identify the given device
or accessory.
"""
@callback identify(name :: String.t()) :: any()
@doc false
def update_pairing_info_display do
display_module = HAP.AccessoryServerManager.display_module()
if HAP.AccessoryServerManager.paired?() do
display_module.clear_pairing_code()
else
name = HAP.AccessoryServerManager.name()
pairing_code = HAP.AccessoryServerManager.pairing_code()
pairing_url = HAP.AccessoryServerManager.pairing_url()
display_module.display_pairing_code(name, pairing_code, pairing_url)
end
end
@doc false
def identify(name) do
HAP.AccessoryServerManager.display_module().identify(name)
end
end