Set a default LE(LL) TX packet length to maximum
[platform/core/connectivity/bluetooth-frwk.git] / bt-service / bt-service-adapter.c
index 5242f0c..16af447 100644 (file)
@@ -43,6 +43,8 @@
 #include "bt-service-main.h"
 #include "bt-service-avrcp.h"
 #include "bt-service-device.h"
+#include "bt-service-adapter-le.h"
+
 #ifdef TIZEN_DPM_ENABLE
 #include "bt-service-dpm.h"
 #endif
@@ -117,7 +119,7 @@ GDBusProxy *_bt_init_core_proxy(void)
 
 static GDBusProxy *__bt_get_core_proxy(void)
 {
-       return (core_proxy) ? core_proxy : _bt_init_core_proxy();
+       return (core_proxy) ? core_proxy : _bt_init_core_proxy();
 }
 
 static gboolean __bt_is_factory_test_mode(void)
@@ -283,6 +285,7 @@ static int __bt_get_bonded_device_info(gchar *device_path,
        GDBusProxy *device_proxy;
        gchar *address = NULL;
        gchar *name = NULL;
+       gchar *alias = NULL;
        unsigned int cod = 0;
        gint rssi = 0;
        gboolean trust = FALSE;
@@ -341,10 +344,9 @@ static int __bt_get_bonded_device_info(gchar *device_path,
                } else if (!g_strcmp0(key, "Address")) {
                        g_variant_get(value, "s", &address);
                } else if (!g_strcmp0(key, "Alias")) {
-                       g_variant_get(value, "s", &name);
+                       g_variant_get(value, "s", &alias);
                } else if (!g_strcmp0(key, "Name")) {
-                       if (!name)
-                               g_variant_get(value, "s", &name);
+                       g_variant_get(value, "s", &name);
                } else if (!g_strcmp0(key, "Class")) {
                        cod = g_variant_get_uint32(value);
                } else if (!g_strcmp0(key, "Connected")) {
@@ -355,14 +357,14 @@ static int __bt_get_bonded_device_info(gchar *device_path,
                        rssi = g_variant_get_int16(value);
                } else if (!g_strcmp0(key, "UUIDs")) {
                        __bt_get_service_list(value, dev_info);
-               } else if (!g_strcmp0(key, "ManufacturerDataLen")) {
+               } else if (!g_strcmp0(key, "LegacyManufacturerDataLen")) {
                        dev_info->manufacturer_data.data_len = g_variant_get_uint16(value);
-               } else if (!g_strcmp0(key, "ManufacturerData")) {
+               } else if (!g_strcmp0(key, "LegacyManufacturerData")) {
                        manufacturer_data = g_byte_array_new();
                        g_variant_get(value, "ay", &char_value_iter);
-                       while (g_variant_iter_loop(char_value_iter, "y",  &char_value)) {
+                       while (g_variant_iter_loop(char_value_iter, "y",  &char_value))
                                g_byte_array_append(manufacturer_data, &char_value, 1);
-                       }
+
                        g_variant_iter_free(char_value_iter);
 
                        if (manufacturer_data) {
@@ -382,6 +384,7 @@ static int __bt_get_bonded_device_info(gchar *device_path,
 
        if ((paired == FALSE) && (trust == FALSE)) {
                g_free(address);
+               g_free(alias);
                g_free(name);
                return BLUETOOTH_ERROR_NOT_PAIRED;
        }
@@ -391,7 +394,7 @@ static int __bt_get_bonded_device_info(gchar *device_path,
 
        _bt_divide_device_class(&dev_info->device_class, cod);
 
-       g_strlcpy(dev_info->device_name.name, name,
+       g_strlcpy(dev_info->device_name.name, alias ? alias : name,
                        BLUETOOTH_DEVICE_NAME_LENGTH_MAX+1);
 
        dev_info->rssi = rssi;
@@ -400,6 +403,7 @@ static int __bt_get_bonded_device_info(gchar *device_path,
        dev_info->connected = connected;
        ret = BLUETOOTH_ERROR_NONE;
        g_free(address);
+       g_free(alias);
        g_free(name);
 
        return ret;
@@ -460,12 +464,17 @@ static void __bt_phone_name_changed_cb(keynode_t *node, void *data)
                phone_name = vconf_keynode_get_str(node);
 
                if (phone_name && strlen(phone_name) != 0) {
-                        if (!g_utf8_validate(phone_name, -1,
+                       if (!g_utf8_validate(phone_name, -1,
                                                        (const char **)&ptr))
-                                *ptr = '\0';
+                                       *ptr = '\0';
 
+                       BT_INFO("device_name is changed to %s", phone_name);
                        _bt_set_local_name(phone_name);
+               } else {
+                       BT_ERR("phone_name is NOT valid");
                }
+       } else {
+               BT_ERR("vconf type is NOT string");
        }
 }
 
@@ -608,7 +617,11 @@ static int __bt_set_le_enabled(void)
 
        /* Update Bluetooth Status to notify other modules */
        if (vconf_set_int(VCONFKEY_BT_LE_STATUS, VCONFKEY_BT_LE_STATUS_ON) != 0)
-               BT_ERR("Set vconf failed\n");
+               BT_ERR("Set vconf failed");
+
+       /* set packet length to max size to enable packet length extension */
+       if (BLUETOOTH_ERROR_NONE != _bt_le_set_max_packet_len())
+               BT_ERR("Fail to set max packet length");
 
        if (_bt_eventsystem_set_value(SYS_EVENT_BT_STATE, EVT_KEY_BT_LE_STATE,
                                                EVT_VAL_BT_LE_ON) != ES_R_OK)
@@ -792,8 +805,8 @@ void _bt_handle_adapter_added(void)
 
        status = _bt_adapter_get_status();
        le_status = _bt_adapter_get_le_status();
-       BT_DBG("status : %d", status);
-       BT_DBG("le_status : %d", le_status);
+       BT_INFO("status : %d", status);
+       BT_INFO("le_status : %d", le_status);
 
 #ifndef USB_BLUETOOTH
        adapter_agent = _bt_create_agent(BT_ADAPTER_AGENT_PATH, TRUE);
@@ -839,8 +852,6 @@ void _bt_handle_adapter_added(void)
                _bt_adapter_set_status(BT_ACTIVATED);
        }
 
-       _bt_service_register_vconf_handler();
-
        /* eventsystem */
        if (eventsystem_register_event(SYS_EVENT_BT_STATE, &status_reg_id,
                        (eventsystem_handler)__bt_state_event_handler, NULL) != ES_R_OK) {
@@ -869,9 +880,8 @@ void _bt_handle_adapter_removed(void)
 
        ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_DEVICE_NAME_STR,
                                (vconf_callback_fn)__bt_phone_name_changed_cb);
-       if (0 != ret) {
+       if (0 != ret)
                ERR("vconf_ignore_key_changed failed\n");
-       }
 
 #ifndef USB_BLUETOOTH
        _bt_destroy_agent(adapter_agent);
@@ -1099,11 +1109,10 @@ int _bt_enable_adapter(void)
        if (le_status == BT_LE_ACTIVATED) {
                BT_INFO("LE Already enabled. Just turn on PSCAN");
                ret = _bt_set_connectable(TRUE);
-               if (ret == BLUETOOTH_ERROR_NONE) {
+               if (ret == BLUETOOTH_ERROR_NONE)
                        _bt_adapter_set_status(BT_ACTIVATED);
-               } else {
+               else
                        return BLUETOOTH_ERROR_INTERNAL;
-               }
        }
 
        result = g_dbus_proxy_call_sync(proxy, "EnableAdapter",
@@ -1111,8 +1120,8 @@ int _bt_enable_adapter(void)
                                         G_DBUS_CALL_FLAGS_NONE, BT_ENABLE_TIMEOUT,
                                         NULL, &error);
         if (error) {
-                BT_ERR("EnableAdapterLe failed: %s", error->message);
-               _bt_adapter_set_status(BT_DEACTIVATED);
+               BT_ERR("EnableAdapterLe failed: %s", error->message);
+               _bt_adapter_set_status(BT_DEACTIVATED);
                g_clear_error(&error);
                error = NULL;
                result = g_dbus_proxy_call_sync(proxy,
@@ -1135,11 +1144,10 @@ int _bt_enable_adapter(void)
                return BLUETOOTH_ERROR_INTERNAL;
        }
        g_variant_unref(result);
-       if (le_status == BT_LE_ACTIVATED) {
+       if (le_status == BT_LE_ACTIVATED)
                __bt_set_enabled();
-       } else {
+       else
                _bt_adapter_start_enable_timer();
-       }
 
        return BLUETOOTH_ERROR_NONE;
 }
@@ -1347,12 +1355,12 @@ int _bt_recover_adapter(void)
        GError *error = NULL;
 
        if (_bt_adapter_get_status() == BT_DEACTIVATING) {
-               BT_DBG("Disabling in progress");
+               BT_ERR("Disabling in progress");
                return BLUETOOTH_ERROR_IN_PROGRESS;
        }
 
        if (_bt_adapter_get_status() == BT_DEACTIVATED) {
-               BT_DBG("Already disabled");
+               BT_ERR("Already disabled");
                return BLUETOOTH_ERROR_DEVICE_NOT_ENABLED;
        }
 
@@ -1418,9 +1426,8 @@ int _bt_reset_adapter(void)
 
        g_variant_unref(result);
        /* Terminate myself */
-       if (_bt_adapter_get_status() == BT_DEACTIVATED) {
+       if (_bt_adapter_get_status() == BT_DEACTIVATED)
                g_idle_add((GSourceFunc)_bt_terminate_service, NULL);
-       }
 
        return BLUETOOTH_ERROR_NONE;
 }
@@ -1652,11 +1659,10 @@ int _bt_get_local_address(bluetooth_device_address_t *local_address)
        address = g_variant_get_string(temp, NULL);
        BT_DBG("Address:%s", address);
 
-       if (address) {
+       if (address)
                _bt_convert_addr_string_to_type(local_address->addr, address);
-       } else {
+       else
                return BLUETOOTH_ERROR_INTERNAL;
-       }
 
        g_variant_unref(result);
        g_variant_unref(temp);
@@ -2245,7 +2251,7 @@ int _bt_set_connectable(gboolean is_connectable)
                return BLUETOOTH_ERROR_INTERNAL;
        }
 
-       BT_INFO("### Set connectable [%d]", is_connectable);
+       BT_INFO_C("### Set connectable [%d]", is_connectable);
        g_variant_unref(result);
        return BLUETOOTH_ERROR_NONE;
 }
@@ -2411,18 +2417,17 @@ static bluetooth_device_info_t *__bt_parse_device_info(GVariantIter *item_iter)
                        }
                        dev_info->service_index = i;
                        g_variant_iter_free(iter);
-               } else if (strcasecmp(key, "ManufacturerDataLen") == 0) {
+               } else if (strcasecmp(key, "LegacyManufacturerDataLen") == 0) {
                        dev_info->manufacturer_data.data_len = g_variant_get_uint16(value);
-               } else if (strcasecmp(key, "ManufacturerData") == 0) {
+               } else if (strcasecmp(key, "LegacyManufacturerData") == 0) {
                        manufacturer_data = g_byte_array_new();
                        g_variant_get(value, "ay", &char_value_iter);
-                       while (g_variant_iter_loop(char_value_iter, "y",  &char_value)) {
+                       while (g_variant_iter_loop(char_value_iter, "y",  &char_value))
                                g_byte_array_append(manufacturer_data, &char_value, 1);
-                       }
+
                        if (manufacturer_data) {
-                               if (manufacturer_data->len > 0) {
+                               if (manufacturer_data->len > 0)
                                        memcpy(dev_info->manufacturer_data.data, manufacturer_data->data, manufacturer_data->len);
-                               }
                        }
                        g_variant_iter_free(char_value_iter);
                        g_byte_array_free(manufacturer_data, TRUE);
@@ -2833,9 +2838,8 @@ int _bt_set_manufacturer_data(bluetooth_manufacturer_data_t *m_data)
 
        builder = g_variant_builder_new(G_VARIANT_TYPE("ay"));
 
-       for (i = 0; i < (m_data->data_len) + 2; i++) {
+       for (i = 0; i < (m_data->data_len) + 2; i++)
                g_variant_builder_add(builder, "y", m_data->data[i]);
-       }
 
        val = g_variant_new("(ay)", builder);
 
@@ -2858,9 +2862,8 @@ int _bt_set_manufacturer_data(bluetooth_manufacturer_data_t *m_data)
        }
        builder = g_variant_builder_new(G_VARIANT_TYPE("ay"));
 
-       for (i = 0; i < (m_data->data_len) + 2; i++) {
+       for (i = 0; i < (m_data->data_len) + 2; i++)
                g_variant_builder_add(builder, "y", m_data->data[i]);
-       }
 
        val = g_variant_new("(ay)", builder);
 
@@ -2973,9 +2976,9 @@ gint compare_alarm(gconstpointer list_data, gconstpointer data)
        alarm_id_t alarm_id = (alarm_id_t)data;
        bt_service_alarm_t *p_data = (bt_service_alarm_t *)list_data;
 
-       if (p_data->alarm_id == alarm_id) {
+       if (p_data->alarm_id == alarm_id)
                return 0;
-       }
+
        return 1;
 }
 
@@ -3049,9 +3052,9 @@ int _bt_adapter_request_delayed(int function)
        return BLUETOOTH_ERROR_NONE;
 }
 
-#ifdef TIZEN_TV
+
 int _bt_get_enable_timer_id(void)
 {
        return timer_id;
 }
-#endif
+