#include "bt-service-agent.h"
#include "bt-service-proximity.h"
#include "bt-service-tds.h"
+#include "bt-service-otp.h"
static GDBusConnection *bt_service_conn;
static guint owner_id = 0;
}
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;
}
g_free(handle);
break;
}
+ case BT_OTP_SERVER_INIT: {
+ const char *directory;
+ directory = (const char *)g_variant_get_data(in_param1);
+ result = bt_otp_server_init(request_id, directory);
+ break;
+ }
+ case BT_OTP_SERVER_DEINIT: {
+ 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;
+ }
default:
result = BLUETOOTH_ERROR_INTERNAL;
break;
case BT_TDS_ENABLE_CONTROL_POINT:
case BT_TDS_ACTIVATE_CONTROL_POINT:
+ /* 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_MAP_CREATE_SESSION:
case BT_MAP_DESTROY_SESSION:
case BT_MAP_SET_FOLDER: