#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);
}
return BLUETOOTH_ERROR_NOT_CONNECTED;
#endif
- /* Convert BD adress from string type */
+ /* Convert BD address from string type */
_bt_convert_addr_string_to_type(device_address.addr, connected_address);
int value = BLUETOOTH_ERROR_NONE;
value = _bt_audio_disconnect(0, connected_device->type & type, &device_address, NULL);
}
connected_device = g_malloc0(sizeof(bt_connected_headset_data_t));
+
connected_device->device_state = status;
if ((status == BT_STATE_CONNECTED) || (status == BT_STATE_CONNECTING))
connected_device->type |= type;
int size;
int i;
int j;
- bluetooth_device_info_t info;
+ bluetooth_device_info_t *info;
char bond_address[BT_ADDRESS_STRING_SIZE] = { 0 };
gboolean ret = FALSE;
size = (dev_list->len) / sizeof(bluetooth_device_info_t);
for (i = 0; i < size; i++) {
- info = g_array_index(dev_list, bluetooth_device_info_t, i);
+ info = &g_array_index(dev_list, bluetooth_device_info_t, i);
_bt_convert_addr_type_to_string(bond_address,
- info.device_address.addr);
+ info->device_address.addr);
if (strcmp(bond_address, remote_address) != 0)
continue;
BT_INFO("Device address Matched");
j = 0;
- while (j != info.service_index) {
+ while (j != info->service_index) {
if (type == BT_AUDIO_HSP) {
- if (strcmp(info.uuids[j], HFP_HS_UUID) == 0) {
+ if (strcmp(info->uuids[j], HFP_HS_UUID) == 0) {
BT_INFO("HFP HS UUID exists");
ret = TRUE;
goto end;
}
} else if (type == BT_AUDIO_A2DP) {
- if (strcmp(info.uuids[j], A2DP_SINK_UUID) == 0) {
+ if (strcmp(info->uuids[j], A2DP_SINK_UUID) == 0) {
BT_INFO("A2DP SINK UUID exists");
ret = TRUE;
goto end;
_bt_convert_addr_type_to_string(address, device_address->addr);
func_data = g_malloc0(sizeof(bt_audio_function_data_t));
+
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;
}
g_array_append_vals(out_param1, address,
BT_ADDRESS_STR_LEN);
- g_free(func_data->address);
- g_free(func_data);
-
return result;
}
BT_DBG("result [%d]", result);
if (auto_connect_timer.retry_count <= 0) {
- BT_INFO("Stopping Auto connect retry");
+ BT_INFO(" ### Stopping Auto connect retry");
auto_connect_timer.alarm_id = 0;
} else {
result = _bt_service_set_alarm(BT_AUTO_CONNECT_TIMEOUT_AFTER_LINKLOSS,
BT_AUTO_CONNECT_TIMEOUT_AFTER_LINKLOSS;
if (linkloss_flag) {
- BT_INFO("Start auto connection after linkloss");
+ BT_INFO(" ### Start auto connection after linkloss");
result = _bt_service_set_alarm(BT_AUTO_CONNECT_TIMEOUT_AFTER_LINKLOSS,
__bt_auto_connect_alarm_cb, NULL, &alarm_id);
if (result != BLUETOOTH_ERROR_NONE)
auto_connect_timer.alarm_id = alarm_id;
} else {
- BT_INFO("Start auto connection after BT activated");
+ BT_INFO(" ### Start auto connection after BT activated");
result = _bt_service_set_alarm(BT_AUTO_CONNECT_TIMEOUT_AFTER_BT_ACTIVATED,
__bt_auto_connect_alarm_cb, NULL, &alarm_id);
if (result == BLUETOOTH_ERROR_NONE)