Store preferred border agent extended address for each thread dataset (#109065)

This commit is contained in:
Erik Montnemery 2024-01-31 00:57:46 +01:00 committed by GitHub
parent 09a89cd3e9
commit fcfacaaabd
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 266 additions and 46 deletions

View file

@ -20,7 +20,7 @@ def async_setup(hass: HomeAssistant) -> None:
websocket_api.async_register_command(hass, ws_discover_routers)
websocket_api.async_register_command(hass, ws_get_dataset)
websocket_api.async_register_command(hass, ws_list_datasets)
websocket_api.async_register_command(hass, ws_set_preferred_border_agent_id)
websocket_api.async_register_command(hass, ws_set_preferred_border_agent)
websocket_api.async_register_command(hass, ws_set_preferred_dataset)
@ -54,20 +54,24 @@ async def ws_add_dataset(
@websocket_api.require_admin
@websocket_api.websocket_command(
{
vol.Required("type"): "thread/set_preferred_border_agent_id",
vol.Required("type"): "thread/set_preferred_border_agent",
vol.Required("dataset_id"): str,
vol.Required("border_agent_id"): str,
vol.Required("border_agent_id"): vol.Any(str, None),
vol.Required("extended_address"): str,
}
)
@websocket_api.async_response
async def ws_set_preferred_border_agent_id(
async def ws_set_preferred_border_agent(
hass: HomeAssistant, connection: websocket_api.ActiveConnection, msg: dict[str, Any]
) -> None:
"""Set the preferred border agent ID."""
"""Set the preferred border agent's border agent ID and extended address."""
dataset_id = msg["dataset_id"]
border_agent_id = msg["border_agent_id"]
extended_address = msg["extended_address"]
store = await dataset_store.async_get_store(hass)
store.async_set_preferred_border_agent_id(dataset_id, border_agent_id)
store.async_set_preferred_border_agent(
dataset_id, border_agent_id, extended_address
)
connection.send_result(msg["id"])
@ -174,6 +178,7 @@ async def ws_list_datasets(
"pan_id": dataset.pan_id,
"preferred": dataset.id == preferred_dataset,
"preferred_border_agent_id": dataset.preferred_border_agent_id,
"preferred_extended_address": dataset.preferred_extended_address,
"source": dataset.source,
}
)