Add the SetAbsoluteVolume API for AVRCP controller
[platform/core/connectivity/bluetooth-frwk.git] / bt-service / bt-request-handler.c
index 2a3275f..ba994ba 100644 (file)
@@ -1298,14 +1298,17 @@ int __bt_bluez_request(int function_name,
        }
        case BT_OOB_ADD_REMOTE_DATA: {
                bluetooth_device_address_t address = { {0} };
+               unsigned short address_type;
                bt_oob_data_t remote_oob_data;
 
                __bt_service_get_parameters(in_param1,
                                &address, sizeof(bluetooth_device_address_t));
                __bt_service_get_parameters(in_param2,
+                               &address_type, sizeof(unsigned short));
+               __bt_service_get_parameters(in_param3,
                                &remote_oob_data, sizeof(bt_oob_data_t));
 
-               result = _bt_oob_add_remote_data(&address, &remote_oob_data);
+               result = _bt_oob_add_remote_data(&address, address_type, &remote_oob_data);
 
                break;
        }
@@ -1419,6 +1422,19 @@ int __bt_bluez_request(int function_name,
 
                break;
        }
+       case BT_AVRCP_TRANSPORT_SET_PROPERTY: {
+               int type;
+               unsigned int value;
+
+               __bt_service_get_parameters(in_param1,
+                               &type, sizeof(int));
+               __bt_service_get_parameters(in_param2,
+                               &value, sizeof(unsigned int));
+
+               result = _bt_avrcp_transport_set_property(type, value);
+
+               break;
+       }
        case BT_AVRCP_GET_TRACK_INFO: {
                media_metadata_t meta_data;
                media_metadata_attributes_t metadata;
@@ -2356,6 +2372,104 @@ int __bt_bluez_request(int function_name,
                result = bt_otp_server_deinit(request_id);
                break;
        }
+       case BT_OTP_READ_VALUE: {
+               char *handle;
+               char *data = NULL;
+               guint data_len = 0;
+
+               char *sender = NULL;
+               sender = (char *)g_dbus_method_invocation_get_sender(context);
+
+               data_len = g_variant_get_size(in_param1);
+               data = (char *)g_variant_get_data(in_param1);
+
+               handle = g_strndup(data, data_len);
+               BT_DBG("Read OTP Characteristic Value [%s]", handle);
+
+               result = _bt_otp_read_characteristic_value(request_id, sender, handle);
+
+               if (result != BLUETOOTH_ERROR_NONE) {
+                       BT_ERR("Reading OTP Characteristic Value failed result [%d]", result);
+                       g_array_append_vals(*out_param1, handle, data_len);
+               }
+               if (handle)
+                       g_free(handle);
+               break;
+       }
+       case BT_OTP_ENABLE_NOTIFICATION: {
+               char *handle;
+               char *data = NULL;
+               guint data_len = 0;
+
+               char *sender = NULL;
+               sender = (char *)g_dbus_method_invocation_get_sender(context);
+
+               data_len = g_variant_get_size(in_param1);
+               data = (char *)g_variant_get_data(in_param1);
+
+               handle = g_strndup(data, data_len);
+               BT_DBG("OTP Control point CCCD handle [%s]", handle);
+
+               result = _bt_otp_enable_notification(request_id, sender, handle);
+
+               if (result != BLUETOOTH_ERROR_NONE) {
+                       BT_ERR("Enabling OTP CCCD failed result [%d]", result);
+                       g_array_append_vals(*out_param1, handle, data_len);
+               }
+               if (handle)
+                       g_free(handle);
+               break;
+       }
+       case BT_OTP_WRITE_VALUE: {
+               char *handle;
+               char *data = NULL;
+               guint data_len = 0;
+               char *sender = NULL;
+               bluetooth_otp_charc_data_t otp_charc_data;
+               sender = (char *)g_dbus_method_invocation_get_sender(context);
+
+               data_len = g_variant_get_size(in_param1);
+               data = (char *)g_variant_get_data(in_param1);
+
+               handle = g_strndup(data, data_len);
+               BT_DBG("OTP Write Characteristic value [%s]", handle);
+
+               __bt_service_get_parameters(in_param2,
+                       &otp_charc_data, sizeof(bluetooth_otp_charc_data_t));
+
+               int i;
+               for (i = 0; i < otp_charc_data.length; i++)
+                       BT_DBG("Value[%d] = %u", i, otp_charc_data.data[i]);
+
+               result = _bt_otp_write_characteristic_value(request_id, sender, handle,
+                                                               otp_charc_data.data, otp_charc_data.length);
+
+               if (result != BLUETOOTH_ERROR_NONE) {
+                       BT_ERR("OTP Write Characteristic failed result [%d]", result);
+                       g_array_append_vals(*out_param1, handle, data_len);
+               }
+               if (handle)
+                       g_free(handle);
+               break;
+       }
+       case BT_LE_OTC_CONNECT: {
+               BT_DBG("OTC Connect");
+               bluetooth_device_address_t address = { {0} };
+               __bt_service_get_parameters(in_param1, &address,
+                               sizeof(bluetooth_device_address_t));
+
+               result = _bt_otp_connect_otc(request_id, &address);
+               break;
+       }
+       case BT_LE_OTC_DISCONNECT: {
+               BT_DBG("OTC Disconnect");
+               bluetooth_device_address_t address = { {0} };
+
+               __bt_service_get_parameters(in_param1, &address,
+                                               sizeof(bluetooth_device_address_t));
+               result = _bt_otp_disconnect_otc(&address);
+               break;
+       }
        default:
                result = BLUETOOTH_ERROR_INTERNAL;
                break;
@@ -3160,6 +3274,8 @@ gboolean __bt_service_check_privilege(int function_name,
 
        case BT_AVRCP_CONTROL_GET_PROPERTY:
        case BT_AVRCP_GET_TRACK_INFO:
+       case BT_AVRCP_TRANSPORT_SET_PROPERTY:
+
 
        case BT_SET_CONTENT_PROTECT:
        case BT_BOND_DEVICE_BY_TYPE:
@@ -3202,6 +3318,11 @@ gboolean __bt_service_check_privilege(int function_name,
        /* OTP Server */
        case BT_OTP_SERVER_INIT:
        case BT_OTP_SERVER_DEINIT:
+       case BT_OTP_READ_VALUE:
+       case BT_OTP_ENABLE_NOTIFICATION:
+       case BT_OTP_WRITE_VALUE:
+       case BT_LE_OTC_CONNECT:
+       case BT_LE_OTC_DISCONNECT:
 
        case BT_MAP_CREATE_SESSION:
        case BT_MAP_DESTROY_SESSION: