1 """Support for Cambridge Audio switch entities."""
3 from collections.abc
import Awaitable, Callable
4 from dataclasses
import dataclass
7 from aiostreammagic
import StreamMagicClient
15 from .entity
import CambridgeAudioEntity, command
20 @dataclass(frozen=True, kw_only=True)
22 """Describes Cambridge Audio switch entity."""
24 value_fn: Callable[[StreamMagicClient], bool]
25 set_value_fn: Callable[[StreamMagicClient, bool], Awaitable[
None]]
28 CONTROL_ENTITIES: tuple[CambridgeAudioSwitchEntityDescription, ...] = (
31 translation_key=
"pre_amp",
32 entity_category=EntityCategory.CONFIG,
33 value_fn=
lambda client: client.state.pre_amp_mode,
34 set_value_fn=
lambda client, value: client.set_pre_amp_mode(value),
38 translation_key=
"early_update",
39 entity_category=EntityCategory.CONFIG,
40 value_fn=
lambda client: client.update.early_update,
41 set_value_fn=
lambda client, value: client.set_early_update(value),
49 async_add_entities: AddEntitiesCallback,
51 """Set up Cambridge Audio switch entities based on a config entry."""
54 for description
in CONTROL_ENTITIES
59 """Defines a Cambridge Audio switch entity."""
61 entity_description: CambridgeAudioSwitchEntityDescription
65 client: StreamMagicClient,
66 description: CambridgeAudioSwitchEntityDescription,
68 """Initialize Cambridge Audio switch."""
75 """Return the state of the switch."""
80 """Turn the switch on."""
85 """Turn the switch off."""
None async_turn_off(self, **Any kwargs)
None __init__(self, StreamMagicClient client, CambridgeAudioSwitchEntityDescription description)
None async_turn_on(self, **Any kwargs)
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)