25 this->
parent_->add_group_update_callback([
this](
const sendspin::GroupUpdateObject &group_obj) {
26 if (group_obj.playback_state.has_value()) {
28 switch (group_obj.playback_state.value()) {
29 case sendspin::SendspinPlaybackState::PLAYING:
32 case sendspin::SendspinPlaybackState::STOPPED:
41 this->
parent_->add_controller_state_callback([
this](
const sendspin::ServerStateControllerObject &
state) {
42 float new_volume =
static_cast<float>(
state.volume) / 100.0f;
43 bool new_muted =
state.muted;
44 if ((new_volume != this->
volume) || (new_muted != this->
muted_)) {
54 this->
parent_->add_controller_state_clear_callback(
103 uint8_t new_volume =
static_cast<uint8_t
>(std::roundf(
volume.value() * 100.0f));
104 this->
parent_->send_client_command(sendspin::SendspinControllerCommand::VOLUME, new_volume, std::nullopt);
107 auto command =
call.get_command();
108 if (!command.has_value()) {
111 switch (command.value()) {
114 this->
parent_->send_client_command(sendspin::SendspinControllerCommand::PAUSE);
116 this->
parent_->send_client_command(sendspin::SendspinControllerCommand::PLAY);
120 this->
parent_->send_client_command(sendspin::SendspinControllerCommand::PLAY);
123 this->
parent_->send_client_command(sendspin::SendspinControllerCommand::PAUSE);
126 this->
parent_->send_client_command(sendspin::SendspinControllerCommand::STOP);
129 this->
parent_->send_client_command(sendspin::SendspinControllerCommand::REPEAT_OFF);
132 this->
parent_->send_client_command(sendspin::SendspinControllerCommand::REPEAT_ONE);
135 this->
parent_->send_client_command(sendspin::SendspinControllerCommand::REPEAT_ALL);
138 this->
parent_->send_client_command(sendspin::SendspinControllerCommand::SHUFFLE);
141 this->
parent_->send_client_command(sendspin::SendspinControllerCommand::UNSHUFFLE);
144 this->
parent_->send_client_command(sendspin::SendspinControllerCommand::NEXT);
147 this->
parent_->send_client_command(sendspin::SendspinControllerCommand::PREVIOUS);
150 this->
parent_->send_client_command(
151 sendspin::SendspinControllerCommand::VOLUME,
156 this->
parent_->send_client_command(
157 sendspin::SendspinControllerCommand::VOLUME,
162 this->
parent_->send_client_command(sendspin::SendspinControllerCommand::MUTE, std::nullopt,
true);
165 this->
parent_->send_client_command(sendspin::SendspinControllerCommand::MUTE, std::nullopt,
false);