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