Device Profile/Route Management Scripts

These scripts are tasked to select appropriate profiles and routes for each device.

Hooks

Hooks triggered by changes in the graph

Hook name

File

Triggered by

Action

device/select-profile

select-profile.lua

device added or EnumProfiles changed

schedules a ‘select-profile’ event

device/select-route

select-routes.lua

device added or EnumRoute changed

updates the device info cache with the latest routes and schedules a ‘select-routes’ event, if needed

device/store-user-selected-profile

select-profile.lua

device Profile param changed

stores profile into the state file if it was selected by the user (profile.save == true)

device/store-or-restore-routes

select-routes.lua

device Route param changed

stores or restores Route selections based on the current state; may push a ‘select-routes’ event to update properties

Hooks for the select-profile event, in order of execution

Hook name

File

Description

device/find-stored-profile

state-profile.lua

selects the profile that has been stored in the state file (user’s explicit selection)

device/find-best-profile

find-best-profile.lua

finds the best profile for a device based on profile priorities and availability

device/apply-profile

apply-profile.lua

applies the selected profile to the device

Hooks for the select-routes event, in order of execution

Hook name

File

Description

device/find-stored-routes

state-routes.lua

restores routes selection for a newly selected profile

device/find-best-routes

find-best-routes.lua

finds the best routes based on availability and priority

device/apply-route-props

state-routes.lua

augments the selected routes to include properties stored in the state file (volume, channel map, codecs, …)”

device/apply-routes

apply-routes.lua

applies the selected routes to the device

select-profile event

High priority event to select a profile for a given device. The event hooks must also apply the profile.

The event “subject” is the device (WpDevice) object.

This event has no special properties.

Exchanged event data

Name

Description

selected-profile

The selected profile to be set:
  • Type: string, containing a JSON object

  • The JSON object should contain the properties of the Profile param

select-routes event

High priority event to select routes for a given profile. The event hooks must also apply the routes.

The event “subject” is the device (WpDevice) object.

Event Properties

Property name

Description

profile.changed

true if a new profile has been selected / false if only the available routes changed

profile.name

the active profile’s name

profile.active-device-ids

json array of integers containing the active device IDs for which to select routes

Exchanged event data

Name

Description

selected-routes

The selected routes to be set:
  • Type: map<string, string>

  • The keys are device IDs (as represented in EnumRoute)

  • The values are JSON objects like this: { index: <a route index>, props: { <object with route props> } }