-
Notifications
You must be signed in to change notification settings - Fork 68
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Extend Functionality of Media_Player #911
base: main
Are you sure you want to change the base?
Changes from 23 commits
1914f27
21a57d0
1699d2b
633e149
4888fe9
6e2258a
373e826
b0c8106
fe9a3ae
ccaab5c
aa8c74e
0d48853
fd8b25b
64653aa
b916d4f
8860fe6
d36e0f5
b5c9cb5
925f0e9
6936b1e
4d3da49
c9ae2af
1bdd95c
25e84f3
fcf8b06
bad0fb8
55b480f
478db97
de036bc
e740562
e92395b
6217f7d
6d26ed7
f560cb9
2dea139
b0dd6b6
9ce8c22
cbcc04c
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -1121,17 +1121,36 @@ message ButtonCommandRequest { | |||||||||||||||||||||
|
||||||||||||||||||||||
// ==================== MEDIA PLAYER ==================== | ||||||||||||||||||||||
enum MediaPlayerState { | ||||||||||||||||||||||
MEDIA_PLAYER_STATE_NONE = 0; | ||||||||||||||||||||||
MEDIA_PLAYER_STATE_IDLE = 1; | ||||||||||||||||||||||
MEDIA_PLAYER_STATE_PLAYING = 2; | ||||||||||||||||||||||
MEDIA_PLAYER_STATE_PAUSED = 3; | ||||||||||||||||||||||
MEDIA_PLAYER_STATE_OFF = 0; | ||||||||||||||||||||||
MEDIA_PLAYER_STATE_ON = 1; | ||||||||||||||||||||||
MEDIA_PLAYER_STATE_NONE = 2; | ||||||||||||||||||||||
MEDIA_PLAYER_STATE_IDLE = 3; | ||||||||||||||||||||||
MEDIA_PLAYER_STATE_PLAYING = 4; | ||||||||||||||||||||||
MEDIA_PLAYER_STATE_PAUSED = 5; | ||||||||||||||||||||||
MEDIA_PLAYER_STATE_ANNOUNCING = 6; | ||||||||||||||||||||||
|
||||||||||||||||||||||
} | ||||||||||||||||||||||
enum MediaPlayerCommand { | ||||||||||||||||||||||
MEDIA_PLAYER_COMMAND_PLAY = 0; | ||||||||||||||||||||||
MEDIA_PLAYER_COMMAND_PAUSE = 1; | ||||||||||||||||||||||
MEDIA_PLAYER_COMMAND_STOP = 2; | ||||||||||||||||||||||
MEDIA_PLAYER_COMMAND_MUTE = 3; | ||||||||||||||||||||||
MEDIA_PLAYER_COMMAND_UNMUTE = 4; | ||||||||||||||||||||||
MEDIA_PLAYER_COMMAND_TOGGLE = 5; | ||||||||||||||||||||||
MEDIA_PLAYER_COMMAND_VOLUME_UP = 6; | ||||||||||||||||||||||
MEDIA_PLAYER_COMMAND_VOLUME_DOWN = 7; | ||||||||||||||||||||||
MEDIA_PLAYER_COMMAND_NEXT_TRACK = 8; | ||||||||||||||||||||||
MEDIA_PLAYER_COMMAND_PREVIOUS_TRACK = 9; | ||||||||||||||||||||||
MEDIA_PLAYER_COMMAND_TURN_ON = 10; | ||||||||||||||||||||||
MEDIA_PLAYER_COMMAND_TURN_OFF = 11; | ||||||||||||||||||||||
MEDIA_PLAYER_COMMAND_CLEAR_PLAYLIST = 12; | ||||||||||||||||||||||
MEDIA_PLAYER_COMMAND_SHUFFLE = 13; | ||||||||||||||||||||||
MEDIA_PLAYER_COMMAND_UNSHUFFLE = 14; | ||||||||||||||||||||||
MEDIA_PLAYER_COMMAND_REPEAT_OFF = 15; | ||||||||||||||||||||||
MEDIA_PLAYER_COMMAND_REPEAT_ONE = 16; | ||||||||||||||||||||||
MEDIA_PLAYER_COMMAND_REPEAT_ALL = 17; | ||||||||||||||||||||||
MEDIA_PLAYER_COMMAND_JOIN = 18; | ||||||||||||||||||||||
MEDIA_PLAYER_COMMAND_UNJOIN = 19; | ||||||||||||||||||||||
} | ||||||||||||||||||||||
message ListEntitiesMediaPlayerResponse { | ||||||||||||||||||||||
option (id) = 63; | ||||||||||||||||||||||
|
@@ -1148,6 +1167,9 @@ message ListEntitiesMediaPlayerResponse { | |||||||||||||||||||||
EntityCategory entity_category = 7; | ||||||||||||||||||||||
|
||||||||||||||||||||||
bool supports_pause = 8; | ||||||||||||||||||||||
bool supports_next_previous_track = 9; | ||||||||||||||||||||||
bool supports_turn_off_on = 10; | ||||||||||||||||||||||
bool supports_grouping = 11; | ||||||||||||||||||||||
} | ||||||||||||||||||||||
message MediaPlayerStateResponse { | ||||||||||||||||||||||
option (id) = 64; | ||||||||||||||||||||||
|
@@ -1158,6 +1180,13 @@ message MediaPlayerStateResponse { | |||||||||||||||||||||
MediaPlayerState state = 2; | ||||||||||||||||||||||
float volume = 3; | ||||||||||||||||||||||
bool muted = 4; | ||||||||||||||||||||||
string repeat = 5; | ||||||||||||||||||||||
bool shuffle = 6; | ||||||||||||||||||||||
string artist = 7; | ||||||||||||||||||||||
string album = 8; | ||||||||||||||||||||||
string title = 9; | ||||||||||||||||||||||
int32 duration = 10; | ||||||||||||||||||||||
int32 position = 11; | ||||||||||||||||||||||
} | ||||||||||||||||||||||
message MediaPlayerCommandRequest { | ||||||||||||||||||||||
option (id) = 65; | ||||||||||||||||||||||
|
@@ -1178,6 +1207,12 @@ message MediaPlayerCommandRequest { | |||||||||||||||||||||
|
||||||||||||||||||||||
bool has_announcement = 8; | ||||||||||||||||||||||
bool announcement = 9; | ||||||||||||||||||||||
|
||||||||||||||||||||||
bool has_enqueue = 10; | ||||||||||||||||||||||
string enqueue = 11; | ||||||||||||||||||||||
|
||||||||||||||||||||||
bool has_group_members = 12; | ||||||||||||||||||||||
string group_members = 13; | ||||||||||||||||||||||
Comment on lines
+1226
to
+1230
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Adjust Data Types for
Suggested changes:
Ensure that the implementation handles these fields appropriately in the codebase. Committable suggestion
Suggested change
|
||||||||||||||||||||||
} | ||||||||||||||||||||||
|
||||||||||||||||||||||
// ==================== BLUETOOTH ==================== | ||||||||||||||||||||||
|
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Large diffs are not rendered by default.
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -806,10 +806,13 @@ class ValveState(EntityState): | |
|
||
# ==================== MEDIA PLAYER ==================== | ||
class MediaPlayerState(APIIntEnum): | ||
NONE = 0 | ||
IDLE = 1 | ||
PLAYING = 2 | ||
PAUSED = 3 | ||
OFF = 0 | ||
ON = 1 | ||
NONE = 2 | ||
IDLE = 3 | ||
PLAYING = 4 | ||
PAUSED = 5 | ||
ANNOUNCING = 6 | ||
|
||
|
||
class MediaPlayerCommand(APIIntEnum): | ||
|
@@ -818,22 +821,49 @@ class MediaPlayerCommand(APIIntEnum): | |
STOP = 2 | ||
MUTE = 3 | ||
UNMUTE = 4 | ||
TOGGLE = 5 | ||
VOLUME_UP = 6 | ||
VOLUME_DOWN = 7 | ||
NEXT_TRACK = 8 | ||
PREVIOUS_TRACK = 9 | ||
TURN_ON = 10 | ||
TURN_OFF = 11 | ||
|
||
CLEAR_PLAYLIST = 12 | ||
SHUFFLE = 13 | ||
UNSHUFFLE = 14 | ||
REPEAT_OFF = 15 | ||
REPEAT_ONE = 16 | ||
REPEAT_ALL = 17 | ||
JOIN = 18 | ||
UNJOIN = 19 | ||
|
||
|
||
@_frozen_dataclass_decorator | ||
class MediaPlayerInfo(EntityInfo): | ||
supports_pause: bool = False | ||
supports_next_previous_track: bool = False | ||
supports_turn_off_on: bool = False | ||
supports_grouping: bool = False | ||
|
||
|
||
@_frozen_dataclass_decorator | ||
class MediaPlayerEntityState(EntityState): | ||
state: MediaPlayerState | None = converter_field( | ||
default=MediaPlayerState.NONE, converter=MediaPlayerState.convert | ||
default=MediaPlayerState.OFF, converter=MediaPlayerState.convert | ||
) | ||
volume: float = converter_field( | ||
default=0.0, converter=fix_float_single_double_conversion | ||
) | ||
muted: bool = False | ||
repeat: str = "" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Use an enum for The Define the enum: class MediaPlayerRepeatMode(APIIntEnum):
OFF = 0
ONE = 1
ALL = 2 Update the -repeat: str = ""
+repeat: MediaPlayerRepeatMode | None = converter_field(
+ default=MediaPlayerRepeatMode.OFF, converter=MediaPlayerRepeatMode.convert
+) |
||
shuffle: bool = False | ||
|
||
artist: str = "" | ||
album: str = "" | ||
title: str = "" | ||
duration: int = 0 | ||
position: int = 0 | ||
|
||
|
||
# ==================== ALARM CONTROL PANEL ==================== | ||
|
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -797,7 +797,13 @@ async def test_select_command( | |||||||||||||||||||||||||||||
), | ||||||||||||||||||||||||||||||
( | ||||||||||||||||||||||||||||||
dict(key=1, media_url="http://example.com"), | ||||||||||||||||||||||||||||||
dict(key=1, has_media_url=True, media_url="http://example.com"), | ||||||||||||||||||||||||||||||
dict( | ||||||||||||||||||||||||||||||
key=1, | ||||||||||||||||||||||||||||||
has_media_url=True, | ||||||||||||||||||||||||||||||
media_url="http://example.com" | ||||||||||||||||||||||||||||||
has_enqueue=True, | ||||||||||||||||||||||||||||||
enqueue="replace" | ||||||||||||||||||||||||||||||
), | ||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Fix syntax error in dictionary definition. There is a missing comma at the end of line 803. - media_url="http://example.com"
+ media_url="http://example.com", Committable suggestion
Suggested change
ToolsRuff
|
||||||||||||||||||||||||||||||
), | ||||||||||||||||||||||||||||||
( | ||||||||||||||||||||||||||||||
dict(key=1, media_url="http://example.com", announcement=True), | ||||||||||||||||||||||||||||||
|
@@ -809,6 +815,16 @@ async def test_select_command( | |||||||||||||||||||||||||||||
announcement=True, | ||||||||||||||||||||||||||||||
), | ||||||||||||||||||||||||||||||
), | ||||||||||||||||||||||||||||||
( | ||||||||||||||||||||||||||||||
dict(key=1, command=MediaPlayerCommand.JOIN), | ||||||||||||||||||||||||||||||
dict( | ||||||||||||||||||||||||||||||
key=1, | ||||||||||||||||||||||||||||||
has_command=True, | ||||||||||||||||||||||||||||||
command=MediaPlayerCommand.JOIN, | ||||||||||||||||||||||||||||||
has_group_members=True, | ||||||||||||||||||||||||||||||
group_members="media_player.media_player_2,", | ||||||||||||||||||||||||||||||
), | ||||||||||||||||||||||||||||||
), | ||||||||||||||||||||||||||||||
], | ||||||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||||||
async def test_media_player_command( | ||||||||||||||||||||||||||||||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Refine Data Types for
repeat
,duration
, andposition
inMediaPlayerStateResponse
Repeat Field: The
repeat
field is currently astring
. It would be more robust to define an enumMediaPlayerRepeatMode
to represent repeat states, enhancing type safety and preventing invalid values.Duration and Position Fields: As durations and positions can't be negative, consider using
uint32
instead ofint32
.Define the
MediaPlayerRepeatMode
enum:Update the
repeat
field:Change
duration
andposition
to unsigned integers: