summaryrefslogtreecommitdiffstats
path: root/binding/bluetooth-bluez.c
diff options
context:
space:
mode:
authorMatt Ranostay <matt.ranostay@konsulko.com>2018-11-07 19:08:06 -0800
committerMatt Ranostay <matt.ranostay@konsulko.com>2018-11-23 08:49:14 -0800
commit2702c40734efa883bfd1f0cbc4f08a8fe12f1a2a (patch)
tree2790b47f04569c2bd0de11d8fc93b32bc52f3372 /binding/bluetooth-bluez.c
parentf4e8cddddc0675821de04bacdb36b0bb33daaceb (diff)
binding: bluetooth: add MediaPlayer1 interface media events
Report back MediaPlayer1 interface events for A2DP media playback Bug-AGL: SPEC-1630 Change-Id: I777f19af2de247fe676d5bede4bacbbad8ca9844 Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
Diffstat (limited to 'binding/bluetooth-bluez.c')
-rw-r--r--binding/bluetooth-bluez.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/binding/bluetooth-bluez.c b/binding/bluetooth-bluez.c
index 824843b..1c46106 100644
--- a/binding/bluetooth-bluez.c
+++ b/binding/bluetooth-bluez.c
@@ -72,6 +72,26 @@ static const struct property_info device_props[] = {
{ },
};
+static const struct property_info mediaplayer_props[] = {
+ { .name = "Position", .fmt = "u", },
+ { .name = "Status", .fmt = "s", },
+ {
+ .name = "Track",
+ .fmt = "{sv}",
+ .sub = (const struct property_info []) {
+ { .name = "Title", .fmt = "s", },
+ { .name = "Artist", .fmt = "s", },
+ { .name = "Album", .fmt = "s", },
+ { .name = "Genre", .fmt = "s", },
+ { .name = "NumberOfTracks", .fmt = "u", },
+ { .name = "TrackNumber", .fmt = "u", },
+ { .name = "Duration", .fmt = "u", },
+ { },
+ },
+ },
+ { },
+};
+
const struct property_info *bluez_get_property_info(
const char *access_type, GError **error)
{
@@ -81,6 +101,8 @@ const struct property_info *bluez_get_property_info(
pi = adapter_props;
else if (!strcmp(access_type, BLUEZ_AT_DEVICE))
pi = device_props;
+ else if (!strcmp(access_type, BLUEZ_AT_MEDIAPLAYER))
+ pi = mediaplayer_props;
else
g_set_error(error, NB_ERROR, NB_ERROR_ILLEGAL_ARGUMENT,
"illegal %s argument", access_type);
@@ -324,6 +346,7 @@ json_object *bluez_get_properties(struct bluetooth_state *ns,
gboolean is_config;
if (!strcmp(access_type, BLUEZ_AT_DEVICE) ||
+ !strcmp(access_type, BLUEZ_AT_MEDIAPLAYER) ||
!strcmp(access_type, BLUEZ_AT_ADAPTER)) {
pi = bluez_get_property_info(access_type, error);
@@ -341,6 +364,8 @@ json_object *bluez_get_properties(struct bluetooth_state *ns,
if (!strcmp(access_type, BLUEZ_AT_DEVICE))
interface2 = BLUEZ_DEVICE_INTERFACE;
+ else if (!strcmp(access_type, BLUEZ_AT_MEDIAPLAYER))
+ interface2 = BLUEZ_MEDIAPLAYER_INTERFACE;
else if (!strcmp(access_type, BLUEZ_AT_ADAPTER))
interface2 = BLUEZ_ADAPTER_INTERFACE;
else if (!strcmp(access_type, BLUEZ_AT_OBJECT))
@@ -365,6 +390,7 @@ json_object *bluez_get_properties(struct bluetooth_state *ns,
return NULL;
if (!strcmp(access_type, BLUEZ_AT_DEVICE) ||
+ !strcmp(access_type, BLUEZ_AT_MEDIAPLAYER) ||
!strcmp(access_type, BLUEZ_AT_ADAPTER)) {
jprop = json_object_new_object();
g_variant_get(reply, "(a{sv})", &array);