From 2cb2e9db058f968c2d582cdd4a9f62fe2b9941f5 Mon Sep 17 00:00:00 2001 From: Wootak Jung Date: Thu, 6 Sep 2018 17:03:21 +0900 Subject: [PATCH] Add AVRCP control volume up / down method Change-Id: I3c25106ef79181ed699123a703a0b50300c7853a --- .../bluez_hal/src/bt-hal-avrcp-ctrl-dbus-handler.c | 8 ++++++++ .../bluez_hal/src/bt-hal-avrcp-ctrl-dbus-handler.h | 4 +++- bt-oal/include/oal-avrcp-ct.h | 4 +++- bt-oal/oal-avrcp-ctrl.c | 24 ++++++++++++++++++++++ .../services/audio/avrcp/bt-service-avrcp-ctrl.c | 6 ++++++ .../services/include/bt-service-avrcp-ctrl.h | 4 +++- bt-service/bt-service-avrcp-controller.c | 6 ++++++ include/bluetooth-media-control.h | 4 +++- 8 files changed, 56 insertions(+), 4 deletions(-) diff --git a/bt-oal/bluez_hal/src/bt-hal-avrcp-ctrl-dbus-handler.c b/bt-oal/bluez_hal/src/bt-hal-avrcp-ctrl-dbus-handler.c index 0d71806..4c09266 100644 --- a/bt-oal/bluez_hal/src/bt-hal-avrcp-ctrl-dbus-handler.c +++ b/bt-oal/bluez_hal/src/bt-hal-avrcp-ctrl-dbus-handler.c @@ -313,6 +313,14 @@ bt_status_t _bt_hal_dbus_handler_avrcp_ctrl_cmd(bt_bdaddr_t *bd_addr, uint8_t ke ret = __bt_media_send_control_msg(bd_addr, "ReleaseRewind"); break; } + case VOLUME_UP: { + ret = __bt_media_send_control_msg(bd_addr, "VolumeUp"); + break; + } + case VOLUME_DOWN: { + ret = __bt_media_send_control_msg(bd_addr, "VolumeDown"); + break; + } default: { DBG("Invalid Type\n"); return BT_STATUS_FAIL; diff --git a/bt-oal/bluez_hal/src/bt-hal-avrcp-ctrl-dbus-handler.h b/bt-oal/bluez_hal/src/bt-hal-avrcp-ctrl-dbus-handler.h index 895a8c7..d52eba5 100644 --- a/bt-oal/bluez_hal/src/bt-hal-avrcp-ctrl-dbus-handler.h +++ b/bt-oal/bluez_hal/src/bt-hal-avrcp-ctrl-dbus-handler.h @@ -43,7 +43,9 @@ typedef enum { PRESS_FAST_FORWARD, RELEASE_FAST_FORWARD, PRESS_REWIND, - RELEASE_REWIND + RELEASE_REWIND, + VOLUME_UP, + VOLUME_DOWN } media_player_control_cmd; typedef enum { diff --git a/bt-oal/include/oal-avrcp-ct.h b/bt-oal/include/oal-avrcp-ct.h index 6e1b708..7839485 100644 --- a/bt-oal/include/oal-avrcp-ct.h +++ b/bt-oal/include/oal-avrcp-ct.h @@ -40,7 +40,9 @@ typedef enum { OAL_RC_PASS_CMD_PRESS_FAST_FORWARD, OAL_RC_PASS_CMD_RELEASE_FAST_FORWARD, OAL_RC_PASS_CMD_PRESS_REWIND, - OAL_RC_PASS_CMD_RELEASE_REWIND + OAL_RC_PASS_CMD_RELEASE_REWIND, + OAL_RC_PASS_CMD_VOLUME_UP, + OAL_RC_PASS_CMD_VOLUME_DOWN } avrcp_ct_pass_cmd_key_code_t; /** diff --git a/bt-oal/oal-avrcp-ctrl.c b/bt-oal/oal-avrcp-ctrl.c index 6cb9d86..9a6d8d0 100644 --- a/bt-oal/oal-avrcp-ctrl.c +++ b/bt-oal/oal-avrcp-ctrl.c @@ -672,6 +672,30 @@ oal_status_t avrcp_ct_prev_track(bt_address_t *device_address) return result; } +oal_status_t avrcp_ct_volume_up(bt_address_t *device_address) +{ + oal_status_t result = OAL_STATUS_SUCCESS; + + API_TRACE(); + + result = __avrcp_ct_send_pass_through_cmd(device_address, + OAL_RC_PASS_CMD_VOLUME_UP, PRESS_STATE); + + return result; +} + +oal_status_t avrcp_ct_volume_down(bt_address_t *device_address) +{ + oal_status_t result = OAL_STATUS_SUCCESS; + + API_TRACE(); + + result = __avrcp_ct_send_pass_through_cmd(device_address, + OAL_RC_PASS_CMD_VOLUME_DOWN, PRESS_STATE); + + return result; +} + oal_status_t avrcp_ct_fforward(bt_address_t *device_address, avrcp_ct_pass_state_t press_state) { oal_status_t result = OAL_STATUS_SUCCESS; diff --git a/bt-service-adaptation/services/audio/avrcp/bt-service-avrcp-ctrl.c b/bt-service-adaptation/services/audio/avrcp/bt-service-avrcp-ctrl.c index 4c280d2..39d41d7 100644 --- a/bt-service-adaptation/services/audio/avrcp/bt-service-avrcp-ctrl.c +++ b/bt-service-adaptation/services/audio/avrcp/bt-service-avrcp-ctrl.c @@ -166,6 +166,12 @@ int _bt_avrcp_control_cmd(int type) case RC_PASS_CMD_RELEASE_REWIND: status = avrcp_ct_rewind((bt_address_t*)&device_address, RELEASE_STATE); break; + case RC_PASS_CMD_VOLUME_UP: + status = avrcp_ct_volume_up((bt_address_t*)&device_address); + break; + case RC_PASS_CMD_VOLUME_DOWN: + status = avrcp_ct_volume_down((bt_address_t*)&device_address); + break; default: break; } diff --git a/bt-service-adaptation/services/include/bt-service-avrcp-ctrl.h b/bt-service-adaptation/services/include/bt-service-avrcp-ctrl.h index 7bd3023..18d1c6a 100644 --- a/bt-service-adaptation/services/include/bt-service-avrcp-ctrl.h +++ b/bt-service-adaptation/services/include/bt-service-avrcp-ctrl.h @@ -56,7 +56,9 @@ typedef enum { RC_PASS_CMD_PRESS_FAST_FORWARD, RC_PASS_CMD_RELEASE_FAST_FORWARD, RC_PASS_CMD_PRESS_REWIND, - RC_PASS_CMD_RELEASE_REWIND + RC_PASS_CMD_RELEASE_REWIND, + RC_PASS_CMD_VOLUME_UP, + RC_PASS_CMD_VOLUME_DOWN } _bt_avrcp_ct_pass_cmd_key_code_t; int _bt_avrcp_connect_remote_target(bluetooth_device_address_t *address); diff --git a/bt-service/bt-service-avrcp-controller.c b/bt-service/bt-service-avrcp-controller.c index 9c87873..431bdb1 100644 --- a/bt-service/bt-service-avrcp-controller.c +++ b/bt-service/bt-service-avrcp-controller.c @@ -188,6 +188,12 @@ int _bt_avrcp_control_cmd(int type) case RELEASE_REWIND: ret = __bt_media_send_control_msg("ReleaseRewind"); break; + case VOLUME_UP: + ret = __bt_media_send_control_msg("VolumeUp"); + break; + case VOLUME_DOWN: + ret = __bt_media_send_control_msg("VolumeDown"); + break; default: BT_DBG("Invalid Type\n"); return BLUETOOTH_ERROR_INTERNAL; diff --git a/include/bluetooth-media-control.h b/include/bluetooth-media-control.h index 42faf8e..d1932cd 100755 --- a/include/bluetooth-media-control.h +++ b/include/bluetooth-media-control.h @@ -91,7 +91,9 @@ typedef enum { PRESS_FAST_FORWARD, RELEASE_FAST_FORWARD, PRESS_REWIND, - RELEASE_REWIND + RELEASE_REWIND, + VOLUME_UP, + VOLUME_DOWN } media_player_control_cmd; typedef struct { -- 2.7.4