/
/
/
1"""Constants for Sonos S1 Player Provider."""
2
3from __future__ import annotations
4
5from music_assistant_models.enums import PlaybackState, PlayerFeature
6from soco.core import (
7 MUSIC_SRC_AIRPLAY,
8 MUSIC_SRC_LINE_IN,
9 MUSIC_SRC_RADIO,
10 MUSIC_SRC_SPOTIFY_CONNECT,
11 MUSIC_SRC_TV,
12)
13
14# Configuration Keys
15CONF_NETWORK_SCAN = "network_scan"
16CONF_HOUSEHOLD_ID = "household_id"
17
18# Player Features
19PLAYER_FEATURES = (
20 PlayerFeature.SET_MEMBERS,
21 PlayerFeature.VOLUME_MUTE,
22 PlayerFeature.VOLUME_SET,
23 PlayerFeature.ENQUEUE,
24 PlayerFeature.GAPLESS_PLAYBACK,
25)
26
27# Source Mapping
28SOURCES_MAP = {
29 MUSIC_SRC_LINE_IN: "Line-in",
30 MUSIC_SRC_TV: "TV",
31 MUSIC_SRC_RADIO: "Radio",
32 MUSIC_SRC_SPOTIFY_CONNECT: "Spotify",
33 MUSIC_SRC_AIRPLAY: "AirPlay",
34}
35
36SOURCE_AIRPLAY = "AirPlay"
37SOURCE_LINEIN = "Line-in"
38SOURCE_SPOTIFY_CONNECT = "Spotify Connect"
39SOURCE_TV = "TV"
40
41SOURCE_MAPPING = {
42 MUSIC_SRC_AIRPLAY: SOURCE_AIRPLAY,
43 MUSIC_SRC_TV: SOURCE_TV,
44 MUSIC_SRC_LINE_IN: SOURCE_LINEIN,
45 MUSIC_SRC_SPOTIFY_CONNECT: SOURCE_SPOTIFY_CONNECT,
46}
47
48LINEIN_SOURCES = (MUSIC_SRC_TV, MUSIC_SRC_LINE_IN)
49
50# Playback State Mapping
51PLAYBACK_STATE_MAP = {
52 "PLAYING": PlaybackState.PLAYING,
53 "PAUSED_PLAYBACK": PlaybackState.PAUSED,
54 "STOPPED": PlaybackState.IDLE,
55 "TRANSITIONING": PlaybackState.PLAYING,
56}
57
58# Sonos State Constants
59SONOS_STATE_PLAYING = "PLAYING"
60SONOS_STATE_TRANSITIONING = "TRANSITIONING"
61
62# Subscription Settings
63SUBSCRIPTION_TIMEOUT = 1200
64SUBSCRIPTION_SERVICES = {
65 "avTransport",
66 "deviceProperties",
67 "renderingControl",
68 "zoneGroupTopology",
69}
70
71# Timing Constants
72NEVER_TIME = 0
73RESUB_COOLDOWN_SECONDS = 10.0
74
75# Position/Duration Keys
76DURATION_SECONDS = "duration_in_s"
77POSITION_SECONDS = "position_in_s"
78
79# UID Constants
80UID_PREFIX = "RINCON_"
81UID_POSTFIX = "01400"
82