/*
- * Bluetooth-frwk
+ * bluetooth-frwk
*
- * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
- *
- * Contact: Hocheol Seo <hocheol.seo@samsung.com>
- * Girishashok Joshi <girish.joshi@samsung.com>
- * Chanyeol Park <chanyeol.park@samsung.com>
+ * Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
#include "bt-service-util.h"
#include "bt-service-event.h"
#include "bt-service-adapter.h"
-#include "bt-service-adapter-le.h"
#include "bt-service-device.h"
#include "bt-service-hid.h"
#include "bt-service-network.h"
#include "bt-service-rfcomm-client.h"
#include "bt-service-rfcomm-server.h"
#include "bt-request-handler.h"
-#include "bt-service-pbap.h"
/* auto generated header by bt-request-service.xml*/
#include "bt-service-method.h"
DBusGConnection *bt_service_conn;
BtService *service_object;
-GType bt_service_get_type(void);
+GType bt_service_get_type (void);
G_DEFINE_TYPE(BtService, bt_service, G_TYPE_OBJECT);
/*This is part of platform provided code skeleton for client server model*/
-static void bt_service_class_init(BtServiceClass *service_class)
+static void bt_service_class_init (BtServiceClass *service_class)
{
dbus_g_object_type_install_info(G_TYPE_FROM_CLASS(service_class),
&dbus_glib_bt_object_info);
}
/*This is part of platform provided code skeleton for client server model*/
-static void bt_service_init(BtService *service)
+static void bt_service_init (BtService *service)
{
}
case BT_DISABLE_ADAPTER:
result = _bt_disable_adapter();
break;
- case BT_RECOVER_ADAPTER:
- result = _bt_recover_adapter();
- break;
- case BT_ENABLE_ADAPTER_LE:
- result = _bt_enable_adapter_le();
- break;
- case BT_DISABLE_ADAPTER_LE:
- result = _bt_disable_adapter_le();
- break;
case BT_RESET_ADAPTER:
result = _bt_reset_adapter();
break;
case BT_CHECK_ADAPTER: {
- int enabled = BT_ADAPTER_DISABLED;
+ int enabled = 0;
+
result = _bt_check_adapter(&enabled);
- BT_DBG("_bt_check_adapter result is %d", result);
g_array_append_vals(*out_param1, &enabled,
sizeof(int));
sizeof(bluetooth_device_address_t));
break;
}
- case BT_GET_LOCAL_VERSION: {
- bluetooth_version_t ver = { {0} };
- result = _bt_get_local_version(&ver);
-
- g_array_append_vals(*out_param1, &ver,
- sizeof(bluetooth_version_t));
- break;
- }
case BT_GET_LOCAL_NAME: {
bluetooth_device_name_t local_name = { {0} };
result = _bt_get_local_name(&local_name);
break;
}
case BT_START_DISCOVERY:
- BT_DBG("_bt_start_discovery ");
result = _bt_start_discovery();
-
break;
- case BT_START_CUSTOM_DISCOVERY: {
- bt_discovery_role_type_t role;
- role = g_array_index(in_param1, bt_discovery_role_type_t, 0);
- result = _bt_start_custom_discovery(role);
- break;
- }
case BT_CANCEL_DISCOVERY:
result = _bt_cancel_discovery();
break;
- case BT_START_LE_DISCOVERY:
- result = _bt_start_le_discovery();
- break;
- case BT_STOP_LE_DISCOVERY:
- result = _bt_stop_le_discovery();
- break;
+
case BT_IS_DISCOVERYING: {
gboolean discovering = FALSE;
discovering = _bt_is_discovering();
- g_array_append_vals(*out_param1, &discovering, sizeof(gboolean));
- break;
- }
- case BT_IS_LE_DISCOVERYING: {
- gboolean le_discovering = FALSE;
- le_discovering = _bt_is_le_discovering();
- g_array_append_vals(*out_param1, &le_discovering, sizeof(gboolean));
- break;
- }
- case BT_ENABLE_RSSI: {
- bluetooth_device_address_t bd_addr;
- int link_type;
- bt_rssi_threshold_t rssi_threshold;
- int low_threshold;
- int in_range_threshold;
- int high_threshold;
- BT_DBG("Enable RSSI");
-
- bd_addr = g_array_index(in_param1, bluetooth_device_address_t, 0);
- link_type = g_array_index(in_param2, int, 0);
- rssi_threshold = g_array_index(in_param3, bt_rssi_threshold_t, 0);
-
- low_threshold = rssi_threshold.low_threshold;
- in_range_threshold = rssi_threshold.in_range_threshold;
- high_threshold = rssi_threshold.high_threshold;
-
- result = _bt_enable_rssi(&bd_addr, link_type ,low_threshold,
- in_range_threshold, high_threshold);
- break;
- }
- case BT_GET_RSSI: {
- int link_type;
- bluetooth_device_address_t bd_addr;
-
- BT_DBG("Get RSSI Strength");
-
- bd_addr = g_array_index(in_param1, bluetooth_device_address_t, 0);
- link_type = g_array_index(in_param2, int, 0);
- result = _bt_get_rssi_strength(&bd_addr, link_type);
- break;
- }
- case BT_IS_CONNECTABLE: {
- gboolean is_connectable;
-
- is_connectable = _bt_is_connectable();
- g_array_append_vals(*out_param1, &is_connectable, sizeof(gboolean));
- break;
- }
- case BT_SET_CONNECTABLE: {
- gboolean is_connectable;
-
- is_connectable = g_array_index(in_param1, gboolean, 0);
-
- result = _bt_set_connectable(is_connectable);
- break;
- }
- case BT_SET_ADVERTISING: {
- gboolean enable = FALSE;
- char *sender = NULL;
- gboolean use_reserved_slot = FALSE;
-
- enable = g_array_index(in_param1, gboolean, 0);
- use_reserved_slot = g_array_index(in_param2, gboolean, 0);
- sender = dbus_g_method_get_sender(context);
- result = _bt_set_advertising(enable, sender, use_reserved_slot);
- g_free(sender);
- break;
- }
- case BT_SET_CUSTOM_ADVERTISING: {
- gboolean enable = FALSE;
- bluetooth_advertising_params_t adv_params;
- char *sender = NULL;
- gboolean use_reserved_slot = FALSE;
-
- enable = g_array_index(in_param1, gboolean, 0);
- adv_params = g_array_index(in_param2,
- bluetooth_advertising_params_t, 0);
- use_reserved_slot = g_array_index(in_param3, gboolean, 0);
- sender = dbus_g_method_get_sender(context);
-
- BT_DBG("bluetooth_advertising_params_t [%f %f %d %d]",
- adv_params.interval_min, adv_params.interval_max,
- adv_params.filter_policy, adv_params.type);
- result = _bt_set_custom_advertising(enable, &adv_params, sender, use_reserved_slot);
- g_free(sender);
- break;
- }
- case BT_GET_ADVERTISING_DATA: {
- bluetooth_advertising_data_t adv = { {0} };
- int length = 0;
-
- result = _bt_get_advertising_data(&adv, &length);
- if (result == BLUETOOTH_ERROR_NONE) {
- g_array_append_vals(*out_param1, adv.data, length);
- }
-
- break;
- }
- case BT_SET_ADVERTISING_DATA: {
- bluetooth_advertising_data_t adv = { {0} };
- int length;
- char *sender = NULL;
- gboolean use_reserved_slot = FALSE;
-
- sender = dbus_g_method_get_sender(context);
-
- adv = g_array_index(in_param1,
- bluetooth_advertising_data_t, 0);
- length = g_array_index(in_param2, int, 0);
- use_reserved_slot = g_array_index(in_param3, gboolean, 0);
-
- result = _bt_set_advertising_data(&adv, length, sender, use_reserved_slot);
-
- g_free(sender);
- break;
- }
- case BT_GET_SCAN_RESPONSE_DATA: {
- bluetooth_scan_resp_data_t rsp = { {0} };
- int length = 0;
-
- result = _bt_get_scan_response_data(&rsp, &length);
- if (result == BLUETOOTH_ERROR_NONE) {
- g_array_append_vals(*out_param1, rsp.data, length);
- }
-
- break;
- }
- case BT_SET_SCAN_RESPONSE_DATA: {
- bluetooth_scan_resp_data_t rsp = { {0} };
- int length;
- char *sender = NULL;
- gboolean use_reserved_slot = FALSE;
-
- sender = dbus_g_method_get_sender(context);
-
- rsp = g_array_index(in_param1,
- bluetooth_scan_resp_data_t, 0);
- length = g_array_index(in_param2, int, 0);
- use_reserved_slot = g_array_index(in_param3, gboolean, 0);
-
- result = _bt_set_scan_response_data(&rsp, length, sender, use_reserved_slot);
-
- g_free(sender);
- break;
- }
- case BT_SET_MANUFACTURER_DATA: {
- bluetooth_manufacturer_data_t m_data = { 0 };
-
- m_data = g_array_index(in_param1,
- bluetooth_manufacturer_data_t, 0);
-
- result = _bt_set_manufacturer_data(&m_data);
- break;
- }
- case BT_SET_SCAN_PARAMETERS: {
- bluetooth_le_scan_params_t scan_params;
-
- scan_params = g_array_index(in_param1,
- bluetooth_le_scan_params_t, 0);
-
- BT_DBG("bluetooth_le_scan_params_t [%f %f %d]",
- scan_params.interval, scan_params.window,
- scan_params.type);
-
- result = _bt_set_scan_parameters(&scan_params);
- break;
- }
- case BT_LE_CONN_UPDATE: {
- bluetooth_device_address_t local_address = { {0} };
- bluetooth_le_conn_update_t parameters = {0};
-
- local_address = g_array_index(in_param1,
- bluetooth_device_address_t, 0);
- parameters = g_array_index(in_param2,
- bluetooth_le_conn_update_t, 0);
-
- result = _bt_le_conn_update(local_address.addr,
- parameters.interval_min,
- parameters.interval_max,
- parameters.latency,
- parameters.time_out);
- break;
- }
- case BT_IS_ADVERTISING: {
- gboolean advertising = FALSE;
- advertising = _bt_is_advertising();
- g_array_append_vals(*out_param1, &advertising, sizeof(gboolean));
- break;
- }
- case BT_ADD_WHITE_LIST: {
- bluetooth_device_address_t address = { {0} };
- int addr_type = 0;
-
- address = g_array_index(in_param1,
- bluetooth_device_address_t, 0);
- addr_type = g_array_index(in_param2, int, 0);
-
- result = _bt_add_white_list(&address, addr_type);
- break;
- }
- case BT_REMOVE_WHITE_LIST: {
- bluetooth_device_address_t address = { {0} };
- int addr_type = 0;
-
- address = g_array_index(in_param1,
- bluetooth_device_address_t, 0);
- addr_type = g_array_index(in_param2, int, 0);
-
- result = _bt_remove_white_list(&address, addr_type);
- break;
- }
- case BT_CLEAR_WHITE_LIST: {
- result = _bt_clear_white_list();
+ g_array_append_vals(*out_param1, &discovering, sizeof(gboolean));
break;
}
case BT_GET_BONDED_DEVICES:
address = g_array_index(in_param1,
bluetooth_device_address_t, 0);
- result = _bt_bond_device(request_id, &address,
- BLUETOOTH_DEV_CONN_DEFAULT, out_param1);
- break;
- }
- case BT_BOND_DEVICE_BY_TYPE: {
- bluetooth_device_address_t address = { {0} };
- unsigned short conn_type = 0;
-
- address = g_array_index(in_param1,
- bluetooth_device_address_t, 0);
-
- conn_type = g_array_index(in_param2,
- unsigned short, 0);
-
- result = _bt_bond_device(request_id, &address,
- conn_type, out_param1);
+ result = _bt_bond_device(request_id, &address, out_param1);
break;
}
case BT_CANCEL_BONDING: {
}
break;
}
- case BT_NETWORK_SERVER_DISCONNECT: {
- bluetooth_device_address_t address = { {0} };
-
- address = g_array_index(in_param1,
- bluetooth_device_address_t, 0);
-
- result = _bt_network_server_disconnect(request_id, &address);
- if (result != BLUETOOTH_ERROR_NONE) {
- g_array_append_vals(*out_param1, &address,
- sizeof(bluetooth_device_address_t));
- }
- break;
- }
-
case BT_AUDIO_CONNECT: {
bluetooth_device_address_t address = { {0} };
&address, out_param1);
break;
}
- case BT_AVRCP_CONTROL_CONNECT: {
- bluetooth_device_address_t address = { {0} };
-
- address = g_array_index(in_param1,
- bluetooth_device_address_t, 0);
-
- result = _bt_audio_connect(request_id, BT_AVRCP,
- &address, out_param1);
- break;
- }
- case BT_AVRCP_CONTROL_DISCONNECT: {
- bluetooth_device_address_t address = { {0} };
-
- address = g_array_index(in_param1,
- bluetooth_device_address_t, 0);
-
- result = _bt_audio_disconnect(request_id, BT_AVRCP,
- &address, out_param1);
- break;
- }
- case BT_HF_CONNECT: {
- bluetooth_device_address_t address = { {0} };
-
- address = g_array_index(in_param1,
- bluetooth_device_address_t, 0);
-
- result = _bt_hf_connect(request_id, &address, out_param1);
- break;
- }
- case BT_HF_DISCONNECT: {
- bluetooth_device_address_t address = { {0} };
-
- address = g_array_index(in_param1,
- bluetooth_device_address_t, 0);
-
- result = _bt_hf_disconnect(request_id, &address, out_param1);
- break;
- }
case BT_GET_SPEAKER_GAIN: {
unsigned int volume;
break;
}
- case BT_SET_CONTENT_PROTECT: {
- gboolean status;
-
- status = g_array_index(in_param1, gboolean, 0);
-
- result = _bt_audio_set_content_protect(status);
-
- break;
- }
case BT_OOB_READ_LOCAL_DATA: {
bt_oob_data_t local_oob_data;
}
case BT_AVRCP_SET_TRACK_INFO: {
media_metadata_t data;
- media_metadata_attributes_t meta_data;
+ media_player_settings_t properties;
memset(&data, 0x00, sizeof(media_metadata_t));
- memset(&meta_data, 0x00, sizeof(media_metadata_attributes_t));
+ memset(&properties, 0x00, sizeof(media_player_settings_t));
data = g_array_index(in_param1,
- media_metadata_t, 0);
+ media_metadata_t, 0);
- meta_data.title = g_strdup(data.title);
- meta_data.artist = g_strdup(data.artist);
- meta_data.album = g_strdup(data.album);
- meta_data.genre = g_strdup(data.genre);
- meta_data.total_tracks = data.total_tracks;
- meta_data.number = data.number;
- meta_data.duration = (int64_t) data.duration;
+ properties.metadata.title = g_strdup(data.title);
+ properties.metadata.artists = g_malloc0(sizeof(char *));
+ properties.metadata.artists[0] = g_strdup(data.artist);
+ properties.metadata.album = g_strdup(data.album);
+ properties.metadata.genres = g_malloc0(sizeof(char *));
+ properties.metadata.genres[0] = g_strdup(data.genre);
+ properties.metadata.tracknumber = data.number;
+ properties.metadata.duration = data.duration;
- result = _bt_avrcp_set_track_info(&meta_data);
+ result = _bt_avrcp_set_properties(&properties);
- g_free((gpointer)meta_data.title);
- g_free((gpointer)meta_data.artist);
- g_free((gpointer)meta_data.album);
- g_free((gpointer)meta_data.genre);
+ g_free((gpointer)properties.metadata.title);
+ g_free((gpointer)properties.metadata.artists);
+ g_free((gpointer)properties.metadata.album);
+ g_free((gpointer)properties.metadata.genres);
break;
}
break;
}
- case BT_AVRCP_HANDLE_CONTROL: {
- int type;
-
- type = g_array_index(in_param1,
- int, 0);
-
- result = _bt_avrcp_control_cmd(type);
-
- break;
- }
- case BT_AVRCP_CONTROL_SET_PROPERTY: {
- int type;
- unsigned int value;
-
- type = g_array_index(in_param1, int, 0);
- value = g_array_index(in_param2, unsigned int, 0);
-
- result = _bt_avrcp_control_set_property(type, value);
-
- break;
- }
- case BT_AVRCP_CONTROL_GET_PROPERTY: {
- int type;
- unsigned int value;
-
- type = g_array_index(in_param1,
- int, 0);
-
- result = _bt_avrcp_control_get_property(type, &value);
- g_array_append_vals(*out_param1, &value, sizeof(int));
-
- break;
- }
- case BT_AVRCP_GET_TRACK_INFO: {
- media_metadata_t meta_data;
- media_metadata_attributes_t metadata;
-
- memset(&meta_data, 0x00, sizeof(media_metadata_t));
- memset(&metadata, 0x00, sizeof(media_metadata_attributes_t));
-
- result = _bt_avrcp_control_get_track_info(&metadata);
-
- if (BLUETOOTH_ERROR_NONE != result)
- break;
-
- if (_bt_copy_utf8_string(meta_data.title, metadata.title,
- BT_META_DATA_MAX_LEN))
- BT_ERR("Error in copying Title\n");
- if (_bt_copy_utf8_string(meta_data.artist, metadata.artist,
- BT_META_DATA_MAX_LEN))
- BT_ERR("Error in copying Artist\n");
- if (_bt_copy_utf8_string(meta_data.album, metadata.album,
- BT_META_DATA_MAX_LEN))
- BT_ERR("Error in copying Album\n");
- if (_bt_copy_utf8_string(meta_data.genre, metadata.genre,
- BT_META_DATA_MAX_LEN))
- BT_ERR("Error in copying Genre\n");
-
- if (_bt_utf8_validate(meta_data.title) == FALSE)
- meta_data.title[0] = '\0';
-
- if (_bt_utf8_validate(meta_data.artist) == FALSE)
- meta_data.artist[0] = '\0';
-
- if (_bt_utf8_validate(meta_data.album) == FALSE)
- meta_data.album[0] = '\0';
-
- if (_bt_utf8_validate(meta_data.genre) == FALSE)
- meta_data.genre[0] = '\0';
-
- meta_data.total_tracks = metadata.total_tracks;
- meta_data.number = metadata.number;
- meta_data.duration = metadata.duration;
-
- g_free((gpointer)metadata.title);
- g_free((gpointer)metadata.artist);
- g_free((gpointer)metadata.album);
- g_free((gpointer)metadata.genre);
-
- g_array_append_vals(*out_param1, &meta_data,
- sizeof(media_metadata_t));
- break;
- }
case BT_RFCOMM_CLIENT_CONNECT: {
-#ifdef RFCOMM_DIRECT
- result = BLUETOOTH_ERROR_NONE;
-#else
bluetooth_device_address_t address = { {0} };
char *input_string;
int connect_type;
g_array_append_vals(*out_param1, &address,
sizeof(bluetooth_device_address_t));
}
-#endif
break;
}
case BT_RFCOMM_CLIENT_CANCEL_CONNECT:
break;
}
case BT_RFCOMM_SOCKET_DISCONNECT: {
-#ifdef RFCOMM_DIRECT
- result = BLUETOOTH_ERROR_NONE;
-#else
int socket_fd;
socket_fd = g_array_index(in_param1, int, 0);
result = _bt_rfcomm_disconnect(socket_fd);
-#endif
break;
}
case BT_RFCOMM_SOCKET_WRITE: {
-#ifdef RFCOMM_DIRECT
- result = BLUETOOTH_ERROR_NONE;
-#else
int socket_fd;
int length;
char *buffer;
buffer = &g_array_index(in_param3, char, 0);
result = _bt_rfcomm_write(socket_fd, buffer, length);
-#endif
break;
}
case BT_RFCOMM_CREATE_SOCKET: {
-#ifdef RFCOMM_DIRECT
- result = BLUETOOTH_ERROR_NONE;
-#else
char *sender;
char *uuid;
int socket_fd = -1;
+ int result;
sender = dbus_g_method_get_sender(context);
uuid = &g_array_index(in_param1, char, 0);
g_array_append_vals(*out_param1, &socket_fd, sizeof(int));
g_free(sender);
-#endif
break;
}
case BT_RFCOMM_REMOVE_SOCKET: {
-#ifdef RFCOMM_DIRECT
- result = BLUETOOTH_ERROR_NONE;
-#else
int socket_fd;
socket_fd = g_array_index(in_param1, int, 0);
result = _bt_rfcomm_remove_socket(socket_fd);
-#endif
break;
}
case BT_RFCOMM_LISTEN: {
int socket_fd;
socket_fd = g_array_index(in_param1, int, 0);
- BT_DBG(" socket fd %d", socket_fd);
- result = _bt_rfcomm_accept_connection();
+
+ result = _bt_rfcomm_accept_connection(socket_fd, request_id);
break;
}
case BT_RFCOMM_REJECT_CONNECTION: {
int socket_fd;
socket_fd = g_array_index(in_param1, int, 0);
- BT_DBG(" socket fd %d", socket_fd);
- result = _bt_rfcomm_reject_connection();
- break;
- }
- case BT_CONNECT_LE: {
- bluetooth_device_address_t address = { {0} };
- gboolean auto_connect;
-
- address = g_array_index(in_param1,
- bluetooth_device_address_t, 0);
-
- auto_connect = g_array_index(in_param2,
- gboolean, 0);
-
- result = _bt_connect_le_device(&address, auto_connect);
-
- break;
- }
- case BT_DISCONNECT_LE: {
- bluetooth_device_address_t address = { {0} };
-
- address = g_array_index(in_param1,
- bluetooth_device_address_t, 0);
-
- result = _bt_disconnect_le_device(&address);
+ result = _bt_rfcomm_reject_connection(socket_fd);
break;
}
- case BT_SET_LE_PRIVACY: {
- gboolean set_privacy;
-
- set_privacy = g_array_index(in_param1, gboolean, 0);
-
- result = _bt_set_le_privacy(set_privacy);
-
- break;
- }
- case BT_HDP_CONNECT:
- case BT_HDP_DISCONNECT:
- case BT_HDP_SEND_DATA:
-
- case BT_GATT_GET_PRIMARY_SERVICES:
- case BT_GATT_DISCOVER_CHARACTERISTICS:
- case BT_GATT_SET_PROPERTY_REQUEST:
- case BT_GATT_READ_CHARACTERISTIC:
- case BT_GATT_DISCOVER_CHARACTERISTICS_DESCRIPTOR:
- /* Just call to check the privilege */
- break;
default:
result = BLUETOOTH_ERROR_INTERNAL;
break;
GArray *in_param4,
GArray **out_param1)
{
- BT_DBG("+");
-
int result;
- BT_DBG("function_name : %x", function_name);
-
switch (function_name) {
case BT_OPP_PUSH_FILES: {
- BT_DBG("BT_OPP_PUSH_FILES");
int i;
bluetooth_device_address_t address = { {0} };
bt_file_path_t path;
file_path[i] = g_strdup(path.path);
}
- BT_DBG("_bt_opp_client_push_files");
+
result = _bt_opp_client_push_files(request_id, context,
&address, file_path,
file_count);
sizeof(gboolean));
break;
}
- case BT_PBAP_CONNECT: {
- bluetooth_device_address_t address = { {0} };
-
- address = g_array_index(in_param1,
- bluetooth_device_address_t, 0);
-
- result = _bt_pbap_connect(&address);
- break;
- }
- case BT_PBAP_DISCONNECT: {
- bluetooth_device_address_t address = { {0} };
-
- address = g_array_index(in_param1,
- bluetooth_device_address_t, 0);
-
- result = _bt_pbap_disconnect(&address);
- break;
- }
- case BT_PBAP_GET_PHONEBOOK_SIZE: {
- bluetooth_device_address_t address = { {0} };
- bt_pbap_folder_t folder = { 0, };
-
- address = g_array_index(in_param1, bluetooth_device_address_t, 0);
- folder = g_array_index(in_param2, bt_pbap_folder_t, 0);
-
- result = _bt_pbap_get_phonebook_size(&address, folder.addressbook,
- folder.folder_type);
- break;
- }
- case BT_PBAP_GET_PHONEBOOK: {
- bluetooth_device_address_t address = { {0} };
- bt_pbap_folder_t folder = { 0, };
- bt_pbap_pull_parameters_t app_param = { 0, };
-
- address = g_array_index(in_param1, bluetooth_device_address_t, 0);
- folder = g_array_index(in_param2, bt_pbap_folder_t, 0);
- app_param = g_array_index(in_param3, bt_pbap_pull_parameters_t, 0);
-
- result = _bt_pbap_get_phonebook(&address, folder.addressbook,
- folder.folder_type, &app_param);
- break;
- }
- case BT_PBAP_GET_LIST: {
- bluetooth_device_address_t address = { {0} };
- bt_pbap_folder_t folder = { 0, };
- bt_pbap_list_parameters_t app_param = { 0, };
-
- address = g_array_index(in_param1, bluetooth_device_address_t, 0);
- folder = g_array_index(in_param2, bt_pbap_folder_t, 0);
- app_param = g_array_index(in_param3, bt_pbap_list_parameters_t, 0);
-
- result = _bt_pbap_get_list(&address, folder.addressbook,
- folder.folder_type, &app_param);
- break;
- }
- case BT_PBAP_PULL_VCARD: {
- bluetooth_device_address_t address = { {0} };
- bt_pbap_folder_t folder = { 0, };
- bt_pbap_pull_vcard_parameters_t app_param = { 0, };
-
- address = g_array_index(in_param1, bluetooth_device_address_t, 0);
- folder = g_array_index(in_param2, bt_pbap_folder_t, 0);
- app_param = g_array_index(in_param3, bt_pbap_pull_vcard_parameters_t, 0);
-
- result = _bt_pbap_pull_vcard(&address, folder.addressbook,
- folder.folder_type, &app_param);
- break;
- }
- case BT_PBAP_PHONEBOOK_SEARCH: {
- bluetooth_device_address_t address = { {0} };
- bt_pbap_folder_t folder = { 0, };
- bt_pbap_search_parameters_t app_param = { 0, };
-
- address = g_array_index(in_param1, bluetooth_device_address_t, 0);
- folder = g_array_index(in_param2, bt_pbap_folder_t, 0);
- app_param = g_array_index(in_param3, bt_pbap_search_parameters_t, 0);
-
- result = _bt_pbap_phonebook_search(&address, folder.addressbook,
- folder.folder_type, &app_param);
- break;
- }
-
- default:
- BT_ERR("Unknown function!");
- result = BLUETOOTH_ERROR_INTERNAL;
- break;
- }
-
- BT_DBG("-");
-
- return result;
-}
-
-static int __bt_agent_request(int function_name,
- int request_type,
- int request_id,
- DBusGMethodInvocation *context,
- GArray *in_param1,
- GArray *in_param2,
- GArray *in_param3,
- GArray *in_param4,
- GArray **out_param1)
-{
- int result;
- switch(function_name) {
- case BT_SET_AUTHORIZATION: {
- int type;
- char *uuid;
- char *path;
- int fd;
-
- type = g_array_index(in_param1, int, 0);
- uuid = &g_array_index(in_param2, char, 0);
- path = &g_array_index(in_param3, char, 0);
- fd = g_array_index(in_param4, int, 0);
- result = _bt_register_osp_server_in_agent(type, uuid, path, fd);
- break;
- }
- case BT_UNSET_AUTHORIZATION: {
- int type;
- char *uuid;
- type = g_array_index(in_param1, int, 0);
- uuid = &g_array_index(in_param2, char, 0);
- result = _bt_unregister_osp_server_in_agent(type, uuid);
- break;
- }
- default:
- BT_ERR("Unknown function!");
- result = BLUETOOTH_ERROR_INTERNAL;
- break;
- }
-
- return result;
-}
-
-static int __bt_core_request(int function_name,
- int request_type,
- int request_id,
- DBusGMethodInvocation *context,
- GArray *in_param1)
-{
- int result;
-
- switch (function_name) {
- case BT_ENABLE_ADAPTER:
- {
- bt_status_t status;
-
- status = _bt_adapter_get_status();
-
- if (status == BT_ACTIVATING) {
- BT_DBG("Enabling in progress");
- result = BLUETOOTH_ERROR_IN_PROGRESS;
- } else if (status == BT_ACTIVATED) {
- BT_DBG("Already enabled");
- result = BLUETOOTH_ERROR_DEVICE_ALREADY_ENABLED;
- } else {
- _bt_adapter_set_status(BT_ACTIVATING);
- _bt_adapter_start_enable_timer();
- result = BLUETOOTH_ERROR_NONE;
- }
-
- break;
- }
- case BT_DISABLE_ADAPTER:
- {
- bt_status_t status;
-
- status = _bt_adapter_get_status();
- if (status == BT_DEACTIVATING) {
- BT_DBG("Disabling in progress");
- result = BLUETOOTH_ERROR_IN_PROGRESS;
- }
- else if (status == BT_DEACTIVATED) {
- BT_DBG("Already disabled");
- result = BLUETOOTH_ERROR_DEVICE_NOT_ENABLED;
- }
- else
- {
- _bt_adapter_set_status(BT_DEACTIVATING);
- result = BLUETOOTH_ERROR_NONE;
- }
-
- break;
- }
- case BT_ENABLE_ADAPTER_LE:
- {
- bt_le_status_t le_status;
-
- le_status = _bt_adapter_get_le_status();
- if (le_status == BT_LE_ACTIVATING) {
- BT_DBG("Enabling in progress");
- result = BLUETOOTH_ERROR_IN_PROGRESS;
- }
- else if (le_status == BT_LE_ACTIVATED) {
- BT_DBG("Already enabled");
- result = BLUETOOTH_ERROR_DEVICE_ALREADY_ENABLED;
- } else {
- _bt_adapter_set_le_status(BT_LE_ACTIVATING);
- _bt_adapter_start_le_enable_timer();
- result = BLUETOOTH_ERROR_NONE;
- }
-
- break;
- }
- case BT_DISABLE_ADAPTER_LE:
- {
- bt_le_status_t le_status;
-
- le_status = _bt_adapter_get_le_status();
- if (le_status == BT_LE_DEACTIVATING) {
- BT_DBG("Disabling in progress");
- result = BLUETOOTH_ERROR_IN_PROGRESS;
- }
- else if (le_status == BT_LE_DEACTIVATED) {
- BT_DBG("Already disabled");
- result = BLUETOOTH_ERROR_DEVICE_NOT_ENABLED;
- }
- else
- {
- _bt_adapter_set_le_status(BT_LE_DEACTIVATING);
- result = BLUETOOTH_ERROR_NONE;
- }
-
- break;
- }
default:
BT_ERR("Unknown function!");
result = BLUETOOTH_ERROR_INTERNAL;
GArray *in_param5,
DBusGMethodInvocation *context)
{
- BT_DBG("+");
-
int result;
int request_id = -1;
GArray *out_param1 = NULL;
out_param1 = g_array_new(FALSE, FALSE, sizeof(gchar));
out_param2 = g_array_new(FALSE, FALSE, sizeof(gchar));
- if (service_type == BT_CORE_SERVICE) {
- BT_DBG("No need to check privilege from bt-core");
- }
-
if (request_type == BT_ASYNC_REQ
|| service_function == BT_OBEX_SERVER_ACCEPT_CONNECTION
|| service_function == BT_RFCOMM_ACCEPT_CONNECTION) {
/* Set the timer */
request_id = _bt_assign_request_id();
- BT_DBG("Request ID: %d", request_id);
-
if (request_id < 0) {
BT_ERR("Fail to assign the request id");
result = BLUETOOTH_ERROR_INTERNAL;
}
}
- BT_DBG("SERVICE TYPE %d", service_type);
-
switch (service_type) {
case BT_BLUEZ_SERVICE:
result = __bt_bluez_request(service_function, request_type,
in_param2, in_param3,
in_param4, &out_param1);
break;
- case BT_AGENT_SERVICE:
- result = __bt_agent_request(service_function, request_type,
- request_id, context, in_param1,
- in_param2, in_param3,
- in_param4, &out_param1);
- break;
- case BT_CORE_SERVICE:
- result = __bt_core_request(service_function, request_type,
- request_id, context, in_param1);
- break;
- case BT_CHECK_PRIVILEGE:
- result = BLUETOOTH_ERROR_NONE;
- break;
default:
BT_ERR("Unknown service type");
result = BLUETOOTH_ERROR_INTERNAL;
}
if (result != BLUETOOTH_ERROR_NONE) {
+ BT_ERR("result is not error none: %x", result);
goto fail;
}
g_array_append_vals(out_param2, &result, sizeof(int));
- if ((request_type == BT_ASYNC_REQ ||
- service_function == BT_OBEX_SERVER_ACCEPT_CONNECTION) &&
- service_function != BT_OPP_PUSH_FILES) {
+ if (request_type == BT_ASYNC_REQ
+ || service_function == BT_OBEX_SERVER_ACCEPT_CONNECTION
+ || service_function == BT_RFCOMM_ACCEPT_CONNECTION) {
_bt_insert_request_list(request_id, service_function,
NULL, context);
} else {
/* Return result */
- if (service_type == BT_CHECK_PRIVILEGE ||
- service_function != BT_OPP_PUSH_FILES)
- dbus_g_method_return(context, out_param1, out_param2);
+ dbus_g_method_return(context, out_param1, out_param2);
}
g_array_free(out_param1, TRUE);
return TRUE;
fail:
- BT_ERR_C("Request is failed [%s] [%x]", _bt_convert_error_to_string(result), result);
g_array_append_vals(out_param2, &result, sizeof(int));
dbus_g_method_return(context, out_param1, out_param2);
if (request_type == BT_ASYNC_REQ)
_bt_delete_request_id(request_id);
- BT_DBG("-");
-
return FALSE;
}
BtService *bt_service;
DBusGConnection *conn;
DBusGProxy *proxy;
- GError *err = NULL;
+ GError* err = NULL;
guint result = 0;
conn = dbus_g_bus_get(DBUS_BUS_SYSTEM, NULL);