Add AVRCP control volume up / down method 12/164412/1
authorDoHyun Pyun <dh79.pyun@samsung.com>
Mon, 18 Dec 2017 01:33:17 +0000 (10:33 +0900)
committerDoHyun Pyun <dh79.pyun@samsung.com>
Tue, 19 Dec 2017 04:59:56 +0000 (13:59 +0900)
Change-Id: I5ea7237aaed1e27bd9e0b8e555177b6ec84f0dd1
Signed-off-by: DoHyun Pyun <dh79.pyun@samsung.com>
packaging/bluez.spec
profiles/audio/avrcp.c
profiles/audio/player.c
profiles/audio/player.h

index e89e4cd..29a4705 100755 (executable)
@@ -155,7 +155,7 @@ autoreconf -fiv
 # For LE only
 
 export LDFLAGS=" -lncurses -Wl,--as-needed "
-export CFLAGS+=" -Werror -DTIZEN_FEATURE_BLUEZ_MODIFY -DTIZEN_FEATURE_BLUEZ_PBAP_SIM -DTIZEN_FEATURE_BLUEZ_AVRCP_TARGET"
+export CFLAGS+=" -Werror -DTIZEN_FEATURE_BLUEZ_MODIFY -DTIZEN_FEATURE_BLUEZ_PBAP_SIM -DTIZEN_FEATURE_BLUEZ_AVRCP_TARGET -DTIZEN_FEATURE_BLUEZ_AVRCP_CONTROL -DTIZEN_FEATURE_BLUEZ_AVRCP_TARGET -DENABLE_AVRCP_CATEGORY1"
 export CFLAGS_DEFAULT="$CFLAGS"
 
 export CFLAGS="$CFLAGS_DEFAULT"
@@ -213,7 +213,7 @@ make distclean
 autoreconf -fiv
 
 export LDFLAGr=" -lncurses -Wl,--as-needed "
-export CFLAGS+=" -Werror -DTIZEN_FEATURE_BLUEZ_MODIFY -DTIZEN_FEATURE_BLUEZ_PBAP_SIM -DTIZEN_FEATURE_BLUEZ_AVRCP_TARGET"
+export CFLAGS+=" -Werror -DTIZEN_FEATURE_BLUEZ_MODIFY -DTIZEN_FEATURE_BLUEZ_PBAP_SIM -DTIZEN_FEATURE_BLUEZ_AVRCP_TARGET -DTIZEN_FEATURE_BLUEZ_AVRCP_CONTROL -DTIZEN_FEATURE_BLUEZ_AVRCP_TARGET -DENABLE_AVRCP_CATEGORY1"
 export CFLAGS_DEFAULT="$CFLAGS"
 
 export CFLAGS="$CFLAGS_DEFAULT"
@@ -273,7 +273,7 @@ autoreconf -fiv
 make distclean
 
 export LDFLAGS=" -lncurses -Wl,--as-needed "
-export CFLAGS+=" -Werror -DTIZEN_FEATURE_BLUEZ_MODIFY -DTIZEN_FEATURE_BLUEZ_PBAP_SIM -DTIZEN_FEATURE_BLUEZ_AVRCP_TARGET"
+export CFLAGS+=" -Werror -DTIZEN_FEATURE_BLUEZ_MODIFY -DTIZEN_FEATURE_BLUEZ_PBAP_SIM -DTIZEN_FEATURE_BLUEZ_AVRCP_TARGET -DTIZEN_FEATURE_BLUEZ_AVRCP_CONTROL -DTIZEN_FEATURE_BLUEZ_AVRCP_TARGET -DENABLE_AVRCP_CATEGORY1"
 export CFLAGS_DEFAULT="$CFLAGS"
 
 export CFLAGS="$CFLAGS_DEFAULT"
index 7de8a63..596406a 100644 (file)
@@ -3203,6 +3203,24 @@ static int ct_release_rewind(struct media_player *mp, void *user_data)
        DBG("-");
        return ct_release(player, AVC_REWIND);
 }
+
+static int ct_volume_up(struct media_player *mp, void *user_data)
+{
+       DBG("+");
+       struct avrcp_player *player = user_data;
+
+       DBG("-");
+       return ct_press(player, AVC_VOLUME_UP);
+}
+
+static int ct_volume_down(struct media_player *mp, void *user_data)
+{
+       DBG("+");
+       struct avrcp_player *player = user_data;
+
+       DBG("-");
+       return ct_press(player, AVC_VOLUME_DOWN);
+}
 #else
 static int ct_fast_forward(struct media_player *mp, void *user_data)
 {
@@ -3531,6 +3549,8 @@ static const struct media_player_callback ct_cbs = {
        .release_fast_forward   = ct_release_fast_forward,
        .press_rewind           = ct_press_rewind,
        .release_rewind         = ct_release_rewind,
+       .volume_up              = ct_volume_up,
+       .volume_down            = ct_volume_down,
 #else
        .fast_forward   = ct_fast_forward,
        .rewind         = ct_rewind,
index f39b9ae..172e8e4 100755 (executable)
@@ -610,6 +610,45 @@ static DBusMessage *media_player_release_rewind(DBusConnection *conn, DBusMessag
        DBG("-");
        return g_dbus_create_reply(msg, DBUS_TYPE_INVALID);
 }
+
+static DBusMessage *media_player_volume_up(DBusConnection *conn, DBusMessage *msg,
+                                                               void *data)
+{
+       DBG("+");
+       struct media_player *mp = data;
+       struct player_callback *cb = mp->cb;
+       int err;
+
+       if (cb->cbs->volume_up == NULL)
+               return btd_error_not_supported(msg);
+
+       err = cb->cbs->volume_up(mp, cb->user_data);
+       if (err < 0)
+               return btd_error_failed(msg, strerror(-err));
+
+       DBG("-");
+       return g_dbus_create_reply(msg, DBUS_TYPE_INVALID);
+}
+
+static DBusMessage *media_player_volume_down(DBusConnection *conn, DBusMessage *msg,
+                                                               void *data)
+{
+       DBG("+");
+       struct media_player *mp = data;
+       struct player_callback *cb = mp->cb;
+       int err;
+
+       if (cb->cbs->volume_down == NULL)
+               return btd_error_not_supported(msg);
+
+       err = cb->cbs->volume_down(mp, cb->user_data);
+       if (err < 0)
+               return btd_error_failed(msg, strerror(-err));
+
+       DBG("-");
+       return g_dbus_create_reply(msg, DBUS_TYPE_INVALID);
+}
+
 #else
 static DBusMessage *media_player_fast_forward(DBusConnection *conn,
                                                DBusMessage *msg, void *data)
@@ -806,6 +845,8 @@ static const GDBusMethodTable media_player_methods[] = {
        { GDBUS_METHOD("ReleaseFastForward", NULL, NULL, media_player_release_fast_forward) },
        { GDBUS_METHOD("PressRewind", NULL, NULL, media_player_press_rewind) },
        { GDBUS_METHOD("ReleaseRewind", NULL, NULL, media_player_release_rewind) },
+       { GDBUS_METHOD("VolumeUp", NULL, NULL, media_player_volume_up) },
+       { GDBUS_METHOD("VolumeDown", NULL, NULL, media_player_volume_down) },
 #else
        { GDBUS_METHOD("FastForward", NULL, NULL, media_player_fast_forward) },
        { GDBUS_METHOD("Rewind", NULL, NULL, media_player_rewind) },
index 21eab49..4907a6b 100755 (executable)
@@ -57,6 +57,8 @@ struct media_player_callback {
        int (*release_fast_forward) (struct media_player *mp, void *user_data);
        int (*press_rewind) (struct media_player *mp, void *user_data);
        int (*release_rewind) (struct media_player *mp, void *user_data);
+       int (*volume_up) (struct media_player *mp, void *user_data);
+       int (*volume_down) (struct media_player *mp, void *user_data);
 #else
        int (*fast_forward) (struct media_player *mp, void *user_data);
        int (*rewind) (struct media_player *mp, void *user_data);