heos/command/
player.rs

1use serde::Serialize;
2use std::ops::RangeInclusive;
3
4use crate::command::impl_command;
5use crate::data::common::*;
6use crate::data::maybe_range;
7use crate::data::option::WithOptions;
8use crate::data::player::*;
9use crate::data::quickselect::*;
10use crate::data::song::*;
11
12#[derive(Serialize, Debug, Default, Clone, Copy)]
13pub struct GetPlayers {}
14impl_command!(GetPlayers, "player", "get_players", Vec<PlayerInfo>);
15
16#[derive(Serialize, Debug, Clone, Copy)]
17pub struct GetPlayerInfo {
18    #[serde(rename = "pid")]
19    pub player_id: PlayerId,
20}
21impl_command!(GetPlayerInfo, "player", "get_player_info", PlayerInfo);
22
23#[derive(Serialize, Debug, Clone, Copy)]
24pub struct GetPlayState {
25    #[serde(rename = "pid")]
26    pub player_id: PlayerId,
27}
28impl_command!(GetPlayState, "player", "get_play_state", PlayState);
29
30#[derive(Serialize, Debug, Clone, Copy)]
31pub struct SetPlayState {
32    #[serde(rename = "pid")]
33    pub player_id: PlayerId,
34    pub state: PlayState,
35}
36impl_command!(SetPlayState, "player", "set_play_state", ());
37
38#[derive(Serialize, Debug, Clone, Copy)]
39pub struct GetNowPlayingMedia {
40    #[serde(rename = "pid")]
41    pub player_id: PlayerId,
42}
43impl_command!(GetNowPlayingMedia, "player", "get_now_playing_media", WithOptions<NowPlayingInfo>);
44
45#[derive(Serialize, Debug, Clone, Copy)]
46pub struct GetVolume {
47    #[serde(rename = "pid")]
48    pub player_id: PlayerId,
49}
50impl_command!(GetVolume, "player", "get_volume", Volume);
51
52#[derive(Serialize, Debug, Clone, Copy)]
53pub struct SetVolume {
54    #[serde(rename = "pid")]
55    pub player_id: PlayerId,
56    pub level: Volume,
57}
58impl_command!(SetVolume, "player", "set_volume", ());
59
60#[derive(Serialize, Debug, Clone, Copy)]
61pub struct VolumeUp {
62    #[serde(rename = "pid")]
63    pub player_id: PlayerId,
64    pub step: Option<VolumeStep>,
65}
66impl_command!(VolumeUp, "player", "volume_up", ());
67
68#[derive(Serialize, Debug, Clone, Copy)]
69pub struct VolumeDown {
70    #[serde(rename = "pid")]
71    pub player_id: PlayerId,
72    pub step: Option<VolumeStep>,
73}
74impl_command!(VolumeDown, "player", "volume_down", ());
75
76#[derive(Serialize, Debug, Clone, Copy)]
77pub struct GetMute {
78    #[serde(rename = "pid")]
79    pub player_id: PlayerId,
80}
81impl_command!(GetMute, "player", "get_mute", MuteState);
82
83#[derive(Serialize, Debug, Clone, Copy)]
84pub struct SetMute {
85    #[serde(rename = "pid")]
86    pub player_id: PlayerId,
87    pub state: MuteState,
88}
89impl_command!(SetMute, "player", "set_mute", ());
90
91#[derive(Serialize, Debug, Clone, Copy)]
92pub struct ToggleMute {
93    #[serde(rename = "pid")]
94    pub player_id: PlayerId,
95}
96impl_command!(ToggleMute, "player", "toggle_mute", ());
97
98#[derive(Serialize, Debug, Clone, Copy)]
99pub struct GetPlayMode {
100    #[serde(rename = "pid")]
101    pub player_id: PlayerId,
102}
103impl_command!(GetPlayMode, "player", "get_play_mode", PlayMode);
104
105#[derive(Serialize, Debug, Clone, Copy)]
106pub struct SetPlayMode {
107    #[serde(rename = "pid")]
108    pub player_id: PlayerId,
109    pub repeat: Option<RepeatMode>,
110    pub shuffle: Option<ShuffleMode>,
111}
112impl_command!(SetPlayMode, "player", "set_play_mode", ());
113
114#[derive(Serialize, Debug, Clone)]
115pub struct GetQueue {
116    #[serde(rename = "pid")]
117    pub player_id: PlayerId,
118    #[serde(serialize_with = "maybe_range::serialize")]
119    pub range: Option<RangeInclusive<usize>>,
120}
121impl_command!(GetQueue, "player", "get_queue", Vec<SongInfo>);
122
123#[derive(Serialize, Debug, Clone, Copy)]
124pub struct PlayQueueItem {
125    #[serde(rename = "pid")]
126    pub player_id: PlayerId,
127    #[serde(rename = "qid")]
128    pub queue_id: QueueId,
129}
130impl_command!(PlayQueueItem, "player", "play_queue", ());
131
132#[derive(Serialize, Debug, Clone)]
133pub struct RemoveFromQueue {
134    #[serde(rename = "pid")]
135    pub player_id: PlayerId,
136    #[serde(rename = "qid")]
137    pub queue_ids: Vec<QueueId>,
138}
139impl_command!(RemoveFromQueue, "player", "remove_from_queue", ());
140
141#[derive(Serialize, Debug, Clone)]
142pub struct SaveQueue {
143    #[serde(rename = "pid")]
144    pub player_id: PlayerId,
145    pub name: String,
146}
147impl_command!(SaveQueue, "player", "save_queue", ());
148
149#[derive(Serialize, Debug, Clone, Copy)]
150pub struct ClearQueue {
151    #[serde(rename = "pid")]
152    pub player_id: PlayerId,
153}
154impl_command!(ClearQueue, "player", "clear_queue", ());
155
156#[derive(Serialize, Debug, Clone)]
157pub struct MoveQueue {
158    #[serde(rename = "pid")]
159    pub player_id: PlayerId,
160    #[serde(rename = "sqid")]
161    pub src_queue_ids: Vec<QueueId>,
162    #[serde(rename = "dqid")]
163    pub dst_queue_id: QueueId,
164}
165impl_command!(MoveQueue, "player", "move_queue_item", ());
166
167#[derive(Serialize, Debug, Clone, Copy)]
168pub struct PlayNext {
169    #[serde(rename = "pid")]
170    pub player_id: PlayerId,
171}
172impl_command!(PlayNext, "player", "play_next", ());
173
174#[derive(Serialize, Debug, Clone, Copy)]
175pub struct PlayPrevious {
176    #[serde(rename = "pid")]
177    pub player_id: PlayerId,
178}
179impl_command!(PlayPrevious, "player", "play_previous", ());
180
181#[derive(Serialize, Debug, Clone, Copy)]
182pub struct SetQuickSelect {
183    #[serde(rename = "pid")]
184    pub player_id: PlayerId,
185    pub id: QuickSelectId,
186}
187impl_command!(SetQuickSelect, "player", "set_quickselect", ());
188
189#[derive(Serialize, Debug, Clone, Copy)]
190pub struct PlayQuickSelect {
191    #[serde(rename = "pid")]
192    pub player_id: PlayerId,
193    pub id: QuickSelectId,
194}
195impl_command!(PlayQuickSelect, "player", "play_quickselect", ());
196
197#[derive(Serialize, Debug, Clone, Copy)]
198pub struct GetQuickSelects {
199    #[serde(rename = "pid")]
200    pub player_id: PlayerId,
201    pub id: Option<QuickSelectId>,
202}
203impl_command!(GetQuickSelects, "player", "get_quickselects", Vec<QuickSelect>);
204
205#[derive(Serialize, Debug, Clone, Copy)]
206pub struct CheckUpdate {
207    #[serde(rename = "pid")]
208    pub player_id: PlayerId,
209}
210impl_command!(CheckUpdate, "player", "check_update", UpdatePayload);