/
/
/
1"""Constants for the Bluesound provider."""
2
3from __future__ import annotations
4
5from music_assistant_models.enums import PlaybackState, PlayerFeature
6
7from music_assistant.models.player import PlayerSource
8
9IDLE_POLL_INTERVAL = 30
10PLAYBACK_POLL_INTERVAL = 10
11
12PLAYER_FEATURES_BASE = {
13 PlayerFeature.SET_MEMBERS,
14 PlayerFeature.VOLUME_MUTE,
15 PlayerFeature.PAUSE,
16 PlayerFeature.SELECT_SOURCE,
17 PlayerFeature.NEXT_PREVIOUS,
18 PlayerFeature.SEEK,
19}
20
21PLAYBACK_STATE_MAP = {
22 "play": PlaybackState.PLAYING,
23 "stream": PlaybackState.PLAYING,
24 "stop": PlaybackState.IDLE,
25 "pause": PlaybackState.PAUSED,
26 "connecting": PlaybackState.IDLE,
27}
28
29PLAYBACK_STATE_POLL_MAP = {
30 "play": PlaybackState.PLAYING,
31 "stream": PlaybackState.PLAYING,
32 "stop": PlaybackState.IDLE,
33 "pause": PlaybackState.PAUSED,
34 "connecting": "CONNECTING",
35}
36
37SOURCE_TIDAL = "Tidal"
38SOURCE_AIRPLAY = "AirPlay"
39SOURCE_SPOTIFY = "Spotify"
40SOURCE_RADIOPARADISE = "RadioParadise"
41SOURCE_TUNEIN = "TuneIn"
42SOURCE_HTTP = "http"
43SOURCE_BLUETOOTH = "Bluetooth"
44SOURCE_TV = "HDMI ARC"
45
46PLAYER_SOURCE_MAP = {
47 SOURCE_HTTP: PlayerSource(
48 id=SOURCE_HTTP,
49 name="HTTP Stream",
50 passive=True,
51 can_play_pause=True,
52 can_next_previous=False,
53 can_seek=False,
54 ),
55 SOURCE_BLUETOOTH: PlayerSource(
56 id=SOURCE_BLUETOOTH,
57 name="Bluetooth",
58 passive=True,
59 can_play_pause=True,
60 can_next_previous=False,
61 can_seek=False,
62 ),
63 SOURCE_TV: PlayerSource(
64 id=SOURCE_TV,
65 name="HDMI ARC",
66 passive=True,
67 can_play_pause=False,
68 can_next_previous=False,
69 can_seek=False,
70 ),
71 SOURCE_AIRPLAY: PlayerSource(
72 id=SOURCE_AIRPLAY,
73 name="AirPlay",
74 passive=True,
75 can_play_pause=True,
76 can_next_previous=False,
77 can_seek=False,
78 ),
79 SOURCE_SPOTIFY: PlayerSource(
80 id=SOURCE_SPOTIFY,
81 name="Spotify",
82 passive=True,
83 can_play_pause=True,
84 can_next_previous=True,
85 can_seek=True,
86 ),
87 SOURCE_TIDAL: PlayerSource(
88 id=SOURCE_TIDAL,
89 name="Tidal",
90 passive=True,
91 can_play_pause=True,
92 can_next_previous=True,
93 can_seek=True,
94 ),
95 SOURCE_RADIOPARADISE: PlayerSource(
96 id=SOURCE_RADIOPARADISE,
97 name="Radio Paradise",
98 passive=True,
99 can_play_pause=True,
100 can_next_previous=True,
101 can_seek=False,
102 ),
103 SOURCE_TUNEIN: PlayerSource(
104 id=SOURCE_TUNEIN,
105 name="TuneIn",
106 passive=True,
107 can_play_pause=True,
108 can_next_previous=False,
109 can_seek=False,
110 ),
111}
112
113POLL_STATE_STATIC = "static"
114POLL_STATE_DYNAMIC = "dynamic"
115
116MUSP_MDNS_TYPE = "_musp._tcp.local."
117