#include "bt-service-headset-connection.h"
#ifdef TIZEN_SUPPORT_DUAL_HF
+#ifdef TIZEN_PROFILE_WEARABLE
#define VCONF_KEY_BT_HOST_BT_MAC_ADDR "db/wms/host_bt_mac"
#endif
+#endif
typedef struct {
unsigned int type;
}
}
-#ifdef TIZEN_BT_DUAL_HEADSET_CONNECT
-void _bt_check_already_connected_headset(int type, char *address)
-{
- GList *node;
- char connected_address[BT_ADDRESS_STRING_SIZE + 1];
- bluetooth_device_address_t device_address;
- int device_count = 0;
-
- if (address != NULL) {
- node = g_list_first(g_connected_list);
- while (node != NULL) {
- bt_connected_headset_data_t *connected_device = node->data;
- if ((connected_device->type & type) &&
- (g_strcmp0(connected_device->device_address, address) != 0)) {
- device_count++;
- /* Disconnect the earliest(1st) connected headset */
- if (device_count == 1) {
- g_strlcpy(connected_address,
- connected_device->device_address,
- BT_ADDRESS_STRING_SIZE + 1);
- BT_DBG("Earliest/First Connected headset %s",
- connected_address);
- } else if (device_count == MAX_CONNECTED_HEADSET) {
- _bt_convert_addr_string_to_type(device_address.addr,
- connected_address);
- _bt_audio_disconnect(0, type, &device_address, NULL);
- return;
- }
- }
- node = g_list_next(node);
- }
- }
-}
-#endif
-
gboolean _bt_is_headset_type_connected(int type, char *address)
{
GList *node;
#ifdef TIZEN_SUPPORT_DUAL_HF
gboolean __bt_is_companion_device(const char *addr)
{
- if (TIZEN_PROFILE_WEARABLE) {
- char *host_device_address = NULL;
- host_device_address = vconf_get_str(VCONF_KEY_BT_HOST_BT_MAC_ADDR);
-
- if (!host_device_address) {
- BT_INFO("Failed to get a companion device address");
- return FALSE;
- }
+#ifdef TIZEN_PROFILE_WEARABLE
+ char *host_device_address = NULL;
+ host_device_address = vconf_get_str(VCONF_KEY_BT_HOST_BT_MAC_ADDR);
- if (g_strcmp0(host_device_address, addr) == 0) {
- BT_INFO("Found companion device");
- free(host_device_address);
- return TRUE;
- }
+ if (!host_device_address) {
+ BT_INFO("Failed to get a companion device address");
+ return FALSE;
+ }
+ if (g_strcmp0(host_device_address, addr) == 0) {
+ BT_INFO("Found companion device");
free(host_device_address);
- return FALSE;
- } else {
- /* TODO : Need to add companion device check condition for Phone models */
- return FALSE;
+ return TRUE;
}
+
+ free(host_device_address);
+ return FALSE;
+#else
+ /* TODO : Need to add companion device check condition for Phone models */
+ return FALSE;
+#endif
}
#endif
while (node != NULL) {
connected_device = node->data;
if ((connected_device->type & type)) {
-#ifdef TIZEN_BT_DUAL_HEADSET_CONNECT
- device_count++;
- /* Disconnect the earliest(1st) connected headset */
- if (device_count == 1)
- g_strlcpy(connected_address, connected_device->device_address,
- BT_ADDRESS_STRING_SIZE + 1);
-
- if (g_strcmp0(connected_device->device_address, address) == 0)
- return BLUETOOTH_ERROR_ALREADY_CONNECT;
-#else
g_strlcpy(connected_address, connected_device->device_address,
BT_ADDRESS_STRING_SIZE + 1);
-#endif
#ifdef TIZEN_SUPPORT_DUAL_HF
is_companion_device = __bt_is_companion_device(connected_address);
BT_INFO(" is_companion_device[%d]", is_companion_device);
break;
}
#else
-#ifdef TIZEN_BT_DUAL_HEADSET_CONNECT
- if (device_count == MAX_CONNECTED_HEADSET) {
- connected = TRUE;
- break;
- }
-#else
connected = TRUE;
break;
#endif
-#endif
}
node = g_list_next(node);
}
}
connected_device = g_malloc0(sizeof(bt_connected_headset_data_t));
+ /* Fix : NULL_RETURNS */
+ if (connected_device == NULL) {
+ BT_ERR("No memory allocated");
+ return;
+ }
+
connected_device->device_state = status;
if ((status == BT_STATE_CONNECTED) || (status == BT_STATE_CONNECTING))
connected_device->type |= type;
_bt_convert_addr_type_to_string(address, device_address->addr);
func_data = g_malloc0(sizeof(bt_audio_function_data_t));
+ /* Fix : NULL_RETURNS */
+ if (func_data == NULL) {
+ result = BLUETOOTH_ERROR_MEMORY_ALLOCATION;
+ goto fail;
+ }
+
func_data->address = g_strdup(address);
func_data->req_id = request_id;
func_data->type = type;
value = __bt_is_headset_connected(type, request_id, address);
if (value == BLUETOOTH_ERROR_ALREADY_CONNECT) {
- result = BLUETOOTH_ERROR_ALREADY_CONNECT;
- goto fail;
+ return BLUETOOTH_ERROR_ALREADY_CONNECT;
} else if (value == BLUETOOTH_ERROR_NOT_CONNECTED) {
value = __bt_is_headset_connecting(type);
if (value != BLUETOOTH_ERROR_NONE) {
/* Add data to the connected list */
_bt_add_headset_to_list(type, BT_STATE_CONNECTING, address);
} else if (value == BLUETOOTH_ERROR_IN_PROGRESS) {
- result = BLUETOOTH_ERROR_IN_PROGRESS;
- goto fail;
+ return BLUETOOTH_ERROR_IN_PROGRESS;
}
if (out_param1)
g_array_append_vals(out_param1, address,
BT_ADDRESS_STR_LEN);
- g_free(func_data->address);
- g_free(func_data);
-
return result;
}
_bt_convert_addr_type_to_string(address, device_address->addr);
func_data = g_malloc0(sizeof(bt_audio_function_data_t));
+ /* Fix : NULL_RETURNS */
+ if (func_data == NULL) {
+ BT_ERR("Memory allocation error");
+ result = BLUETOOTH_ERROR_MEMORY_ALLOCATION;
+ goto fail;
+ }
func_data->address = g_strdup(address);
func_data->req_id = request_id;
func_data->pending = BT_PENDING_NONE;
g_array_append_vals(out_param1, address,
BT_ADDRESS_STR_LEN);
- g_free(func_data->address);
- g_free(func_data);
-
return result;
}
}
func_data = g_malloc0(sizeof(bt_function_data_t));
+ /* Fix : NULL_RETURNS */
+ if (func_data == NULL) {
+ result = BLUETOOTH_ERROR_MEMORY_ALLOCATION;
+ goto fail;
+ }
+
func_data->address = g_strdup(address);
func_data->req_id = request_id;
uuid = g_strdup(HFP_AG_UUID);
}
func_data = g_malloc0(sizeof(bt_function_data_t));
+ /* Fix : NULL_RETURNS */
+ if (func_data == NULL) {
+ result = BLUETOOTH_ERROR_MEMORY_ALLOCATION;
+ goto fail;
+ }
+
func_data->address = g_strdup(address);
func_data->req_id = request_id;
uuid = g_strdup(HFP_AG_UUID);
vconf_set_str(BT_LAST_CONNECTED_DEVICE, address);
}
#endif /*TIZEN_BT_A2DP_SINK_AUTO_CONNECT */
-
-int _bt_audio_select_role(bluetooth_audio_role_t role)
-{
-
- GDBusProxy *proxy;
- GVariant *ret;
- GError *error = NULL;
- GDBusConnection *g_conn = _bt_gdbus_get_system_gconn();
- gchar *adapter_path = _bt_get_adapter_path();
-
- BT_INFO("_bt_audio_select_role called [%d]", role);
-
- retv_if(adapter_path == NULL, BLUETOOTH_ERROR_INTERNAL);
- BT_INFO("Adapter Path = %s", adapter_path);
-
- proxy = g_dbus_proxy_new_sync(g_conn, G_DBUS_PROXY_FLAGS_NONE, NULL,
- BT_BLUEZ_NAME, adapter_path, BT_MEDIA_INTERFACE, NULL, &error);
-
- g_free(adapter_path);
-
- if (proxy == NULL) {
- BT_ERR("Unable to create proxy");
-
- if (error) {
- BT_ERR("Error: %s", error->message);
- g_clear_error(&error);
- }
-
- return BLUETOOTH_ERROR_INTERNAL;
- }
-
- if (role == BLUETOOTH_A2DP_SOURCE)
- ret = g_dbus_proxy_call_sync(proxy, "SelectRole", g_variant_new("(s)", "source"),
- G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
- else
- ret = g_dbus_proxy_call_sync(proxy, "SelectRole", g_variant_new("(s)", "sink"),
- G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
-
- g_object_unref(proxy);
-
- if (ret == NULL) {
- BT_ERR("Call SelectRole Failed");
- if (error) {
- BT_ERR("errCode[%x], message[%s]", error->code, error->message);
- g_clear_error(&error);
- }
-
- return BLUETOOTH_ERROR_INTERNAL;
- }
-
- g_variant_unref(ret);
- return BLUETOOTH_ERROR_NONE;
-}