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(
100 if (!this->
parent_->is_client_running()) {
101 ESP_LOGW(TAG,
"Cannot control media player: Sendspin is disabled");
107 uint8_t new_volume =
static_cast<uint8_t
>(std::roundf(
volume.value() * 100.0f));
108 this->
parent_->send_client_command(sendspin::SendspinControllerCommand::VOLUME, new_volume, std::nullopt);
111 auto command =
call.get_command();
112 if (!command.has_value()) {
115 switch (command.value()) {
118 this->
parent_->send_client_command(sendspin::SendspinControllerCommand::PAUSE);
120 this->
parent_->send_client_command(sendspin::SendspinControllerCommand::PLAY);
124 this->
parent_->send_client_command(sendspin::SendspinControllerCommand::PLAY);
127 this->
parent_->send_client_command(sendspin::SendspinControllerCommand::PAUSE);
130 this->
parent_->send_client_command(sendspin::SendspinControllerCommand::STOP);
133 this->
parent_->send_client_command(sendspin::SendspinControllerCommand::REPEAT_OFF);
136 this->
parent_->send_client_command(sendspin::SendspinControllerCommand::REPEAT_ONE);
139 this->
parent_->send_client_command(sendspin::SendspinControllerCommand::REPEAT_ALL);
142 this->
parent_->send_client_command(sendspin::SendspinControllerCommand::SHUFFLE);
145 this->
parent_->send_client_command(sendspin::SendspinControllerCommand::UNSHUFFLE);
148 this->
parent_->send_client_command(sendspin::SendspinControllerCommand::NEXT);
151 this->
parent_->send_client_command(sendspin::SendspinControllerCommand::PREVIOUS);
154 this->
parent_->send_client_command(
155 sendspin::SendspinControllerCommand::VOLUME,
160 this->
parent_->send_client_command(
161 sendspin::SendspinControllerCommand::VOLUME,
166 this->
parent_->send_client_command(sendspin::SendspinControllerCommand::MUTE, std::nullopt,
true);
169 this->
parent_->send_client_command(sendspin::SendspinControllerCommand::MUTE, std::nullopt,
false);