ESPHome
2024.7.2
esphome
esphome
components
media_player
media_player.h
Go to the documentation of this file.
1
#pragma once
2
3
#include "
esphome/core/entity_base.h
"
4
#include "
esphome/core/helpers.h
"
5
6
namespace
esphome
{
7
namespace
media_player {
8
9
enum
MediaPlayerState
: uint8_t {
10
MEDIA_PLAYER_STATE_NONE
= 0,
11
MEDIA_PLAYER_STATE_IDLE
= 1,
12
MEDIA_PLAYER_STATE_PLAYING
= 2,
13
MEDIA_PLAYER_STATE_PAUSED
= 3,
14
MEDIA_PLAYER_STATE_ANNOUNCING
= 4
15
};
16
const
char
*
media_player_state_to_string
(
MediaPlayerState
state
);
17
18
enum
MediaPlayerCommand
: uint8_t {
19
MEDIA_PLAYER_COMMAND_PLAY
= 0,
20
MEDIA_PLAYER_COMMAND_PAUSE
= 1,
21
MEDIA_PLAYER_COMMAND_STOP
= 2,
22
MEDIA_PLAYER_COMMAND_MUTE
= 3,
23
MEDIA_PLAYER_COMMAND_UNMUTE
= 4,
24
MEDIA_PLAYER_COMMAND_TOGGLE
= 5,
25
MEDIA_PLAYER_COMMAND_VOLUME_UP
= 6,
26
MEDIA_PLAYER_COMMAND_VOLUME_DOWN
= 7,
27
};
28
const
char
*
media_player_command_to_string
(
MediaPlayerCommand
command);
29
30
class
MediaPlayer
;
31
32
class
MediaPlayerTraits
{
33
public
:
34
MediaPlayerTraits
() =
default
;
35
36
void
set_supports_pause
(
bool
supports_pause) { this->
supports_pause_
= supports_pause; }
37
38
bool
get_supports_pause
()
const
{
return
this->
supports_pause_
; }
39
40
protected
:
41
bool
supports_pause_
{
false
};
42
};
43
44
class
MediaPlayerCall
{
45
public
:
46
MediaPlayerCall
(
MediaPlayer
*parent) : parent_(parent) {}
47
48
MediaPlayerCall
&set_command(
MediaPlayerCommand
command);
49
MediaPlayerCall
&set_command(
optional<MediaPlayerCommand>
command);
50
MediaPlayerCall
&set_command(
const
std::string &command);
51
52
MediaPlayerCall
&set_media_url(
const
std::string &url);
53
54
MediaPlayerCall
&set_volume(
float
volume);
55
MediaPlayerCall
&set_announcement(
bool
announce);
56
57
void
perform();
58
59
const
optional<MediaPlayerCommand>
&
get_command
()
const
{
return
command_; }
60
const
optional<std::string>
&
get_media_url
()
const
{
return
media_url_; }
61
const
optional<float>
&
get_volume
()
const
{
return
volume_; }
62
const
optional<bool>
&
get_announcement
()
const
{
return
announcement_; }
63
64
protected
:
65
void
validate_();
66
MediaPlayer
*
const
parent_
;
67
optional<MediaPlayerCommand>
command_
;
68
optional<std::string>
media_url_
;
69
optional<float>
volume_
;
70
optional<bool>
announcement_
;
71
};
72
73
class
MediaPlayer
:
public
EntityBase
{
74
public
:
75
MediaPlayerState
state
{
MEDIA_PLAYER_STATE_NONE
};
76
float
volume{1.0f};
77
78
MediaPlayerCall
make_call
() {
return
MediaPlayerCall
(
this
); }
79
80
void
publish_state();
81
82
void
add_on_state_callback(std::function<
void
()> &&callback);
83
84
virtual
bool
is_muted
()
const
{
return
false
; }
85
86
virtual
MediaPlayerTraits
get_traits() = 0;
87
88
protected
:
89
friend
MediaPlayerCall
;
90
91
virtual
void
control(
const
MediaPlayerCall
&call) = 0;
92
93
CallbackManager<void()>
state_callback_{};
94
};
95
96
}
// namespace media_player
97
}
// namespace esphome
esphome::media_player::MEDIA_PLAYER_COMMAND_STOP
Definition:
media_player.h:21
esphome::media_player::MEDIA_PLAYER_STATE_NONE
Definition:
media_player.h:10
esphome::media_player::MediaPlayerCall::volume_
optional< float > volume_
Definition:
media_player.h:69
esphome::media_player::MEDIA_PLAYER_COMMAND_PAUSE
Definition:
media_player.h:20
esphome::media_player::MediaPlayerTraits::MediaPlayerTraits
MediaPlayerTraits()=default
esphome::media_player::MEDIA_PLAYER_STATE_PLAYING
Definition:
media_player.h:12
esphome::media_player::MediaPlayer::MediaPlayerCall
friend MediaPlayerCall
Definition:
media_player.h:89
esphome::media_player::MEDIA_PLAYER_COMMAND_TOGGLE
Definition:
media_player.h:24
esphome::media_player::MEDIA_PLAYER_COMMAND_MUTE
Definition:
media_player.h:22
entity_base.h
esphome::media_player::MediaPlayer::is_muted
virtual bool is_muted() const
Definition:
media_player.h:84
esphome::media_player::MediaPlayerTraits::supports_pause_
bool supports_pause_
Definition:
media_player.h:41
esphome::media_player::MediaPlayerCall::get_volume
const optional< float > & get_volume() const
Definition:
media_player.h:61
esphome::media_player::media_player_state_to_string
const char * media_player_state_to_string(MediaPlayerState state)
Definition:
media_player.cpp:10
esphome::media_player::MediaPlayerCommand
MediaPlayerCommand
Definition:
media_player.h:18
esphome::media_player::MEDIA_PLAYER_STATE_PAUSED
Definition:
media_player.h:13
esphome::media_player::media_player_command_to_string
const char * media_player_command_to_string(MediaPlayerCommand command)
Definition:
media_player.cpp:26
esphome::media_player::MEDIA_PLAYER_COMMAND_UNMUTE
Definition:
media_player.h:23
esphome::EntityBase
Definition:
entity_base.h:16
esphome::media_player::MediaPlayer
Definition:
media_player.h:73
esphome::media_player::MEDIA_PLAYER_STATE_IDLE
Definition:
media_player.h:11
esphome::media_player::MediaPlayerTraits::get_supports_pause
bool get_supports_pause() const
Definition:
media_player.h:38
esphome::media_player::MediaPlayerCall::get_announcement
const optional< bool > & get_announcement() const
Definition:
media_player.h:62
esphome::media_player::MEDIA_PLAYER_COMMAND_VOLUME_DOWN
Definition:
media_player.h:26
esphome::media_player::MediaPlayer::make_call
MediaPlayerCall make_call()
Definition:
media_player.h:78
esphome::media_player::MediaPlayerCall
Definition:
media_player.h:44
esphome::CallbackManager< void()>
esphome::media_player::MediaPlayerCall::get_command
const optional< MediaPlayerCommand > & get_command() const
Definition:
media_player.h:59
esphome::media_player::MediaPlayerCall::get_media_url
const optional< std::string > & get_media_url() const
Definition:
media_player.h:60
esphome::media_player::MediaPlayerCall::MediaPlayerCall
MediaPlayerCall(MediaPlayer *parent)
Definition:
media_player.h:46
esphome::optional< MediaPlayerCommand >
esphome::media_player::MEDIA_PLAYER_COMMAND_PLAY
Definition:
media_player.h:19
esphome::media_player::MEDIA_PLAYER_COMMAND_VOLUME_UP
Definition:
media_player.h:25
esphome::media_player::MediaPlayerTraits
Definition:
media_player.h:32
esphome::media_player::MediaPlayerCall::parent_
MediaPlayer *const parent_
Definition:
media_player.h:66
esphome
Implementation of SPI Controller mode.
Definition:
a01nyub.cpp:7
esphome::media_player::MEDIA_PLAYER_STATE_ANNOUNCING
Definition:
media_player.h:14
helpers.h
esphome::media_player::MediaPlayerCall::announcement_
optional< bool > announcement_
Definition:
media_player.h:70
esphome::media_player::MediaPlayerTraits::set_supports_pause
void set_supports_pause(bool supports_pause)
Definition:
media_player.h:36
state
bool state
Definition:
fan.h:34
esphome::media_player::MediaPlayerCall::media_url_
optional< std::string > media_url_
Definition:
media_player.h:68
esphome::media_player::MediaPlayerCall::command_
optional< MediaPlayerCommand > command_
Definition:
media_player.h:67
esphome::media_player::MediaPlayerState
MediaPlayerState
Definition:
media_player.h:9
Generated by
1.8.13