Set a default LE(LL) TX packet length to maximum
[platform/core/connectivity/bluetooth-frwk.git] / bt-service / bt-service-adapter-le.c
index aeb8cb8..a82e8ce 100644 (file)
@@ -189,6 +189,29 @@ void _bt_service_adapter_le_deinit(void)
        __bt_free_le_adv_slot();
 }
 
+int _bt_le_set_max_packet_len(void)
+{
+       int result = BLUETOOTH_ERROR_NONE;
+       int tx_octets, tx_time;
+       bluetooth_le_read_maximum_data_length_t max_len = {0};
+
+       if (BLUETOOTH_ERROR_NONE != _bt_le_read_maximum_data_length(&max_len))
+               return BLUETOOTH_ERROR_INTERNAL;
+
+       if (max_len.max_tx_octets > BT_LE_TX_LEN_DEFAULT) {
+               tx_octets =  max_len.max_tx_octets > BT_LE_TX_LEN_MAX ?
+                               BT_LE_TX_LEN_MAX : max_len.max_tx_octets;
+               tx_time = BT_LE_TX_TIME_MAX;
+
+               result = _bt_le_write_host_suggested_default_data_length(tx_octets, tx_time);
+
+               BT_DBG("Wrote max packet size : result[%d], MAX[%d], set[%d]",
+                               result, max_len.max_tx_octets, tx_octets);
+       }
+
+       return result;
+}
+
 gboolean _bt_update_le_feature_support(const char *item, const char *value)
 {
        if (item == NULL || value == NULL)
@@ -2160,8 +2183,6 @@ int _bt_le_read_maximum_data_length(
        reply = g_dbus_proxy_call_sync(proxy, "LEReadMaximumDataLength",
                        NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
 
-       g_object_unref(proxy);
-
        if (reply == NULL) {
                BT_ERR("LEReadMaximumDataLength dBUS-RPC failed");
                if (error != NULL) {
@@ -2202,8 +2223,6 @@ int _bt_le_write_host_suggested_default_data_length(
                        NULL,
                        &error);
 
-       g_object_unref(proxy);
-
        if (reply == NULL) {
                BT_ERR("_bt_le_write_host_suggested_default_data_length dBUS-RPC failed");
                if (error != NULL) {