Fix osp_server unregister issue
[platform/core/connectivity/bluetooth-frwk.git] / bt-service-adaptation / services / bt-request-handler.c
index e8f22ff..4e230df 100644 (file)
@@ -513,7 +513,7 @@ int __bt_bluez_request(int function_name,
                }
                dbus_data.num_app = n;
                g_array_append_vals(*out_param1, &dbus_data, sizeof(bt_battery_dbus_data_t));
-               g_slist_free(data->atm_list);
+               g_slist_free_full(data->atm_list, g_free);
                g_free(data);
                data = NULL;
                break;
@@ -1557,7 +1557,23 @@ int __bt_bluez_request(int function_name,
                BT_DBG("Sending details to bluetooth battery monitor: %ld, %ld, %d", (long int)uid, (long int)pid, size);
                _bt_bm_add_transaction_details(uid, pid, size, TX_DATA);
                break;
-        }
+       }
+       case BT_RFCOMM_SERVER_UPDATE_CONNECTION_INFO: {
+               gboolean connected = FALSE;
+               int client_fd = -1;
+
+               sender = (char *)g_dbus_method_invocation_get_sender(context);
+
+               __bt_service_get_parameters(in_param1, &connected, sizeof(gboolean));
+               __bt_service_get_parameters(in_param2, &client_fd, sizeof(int));
+
+               if (connected == TRUE)
+                       result = _bt_rfcomm_server_conn_added(sender, client_fd);
+               else
+                       result = _bt_rfcomm_server_conn_removed(sender, client_fd);
+
+               break;
+       }
        case BT_AUDIO_SELECT_ROLE: {
                bluetooth_audio_role_t role;
 
@@ -2860,6 +2876,46 @@ int __bt_bluez_request(int function_name,
                }
                break;
        }
+       /* Sync */
+       case BT_GET_GATT_DATA_BATCHING_AVAILABLE_PACKETS: {
+               guint available_packets = 0;
+
+               result = _bt_gatt_get_data_batching_available_packets(&available_packets);
+               BT_DBG("LE batching available packets %u", available_packets);
+               if (result == BLUETOOTH_ERROR_NONE) {
+                       g_array_append_vals(*out_param1, &available_packets,
+                                       sizeof(guint));
+               }
+
+               break;
+       }
+       /* Sync */
+       case BT_ENABLE_GATT_DATA_BATCHING: {
+               bluetooth_device_address_t address = { {0} };
+               int packet_threshold;
+               int timeout;
+
+               __bt_service_get_parameters(in_param1,
+                               &address, sizeof(bluetooth_device_address_t));
+               __bt_service_get_parameters(in_param2,
+                               &packet_threshold, sizeof(int));
+               __bt_service_get_parameters(in_param3,
+                               &timeout, sizeof(int));
+               result = _bt_gatt_enable_data_batching(&address, packet_threshold, timeout);
+
+               break;
+       }
+       /* Sync */
+       case BT_DISABLE_GATT_DATA_BATCHING: {
+               bluetooth_device_address_t address = { {0} };
+
+               __bt_service_get_parameters(in_param1,
+                               &address, sizeof(bluetooth_device_address_t));
+               result = _bt_gatt_disable_data_batching(&address);
+
+               break;
+       }
+
        case BT_GATT_GET_PRIMARY_SERVICES: {
                char *addr;
 
@@ -3750,13 +3806,15 @@ int __bt_agent_request(int function_name,
                char *uuid;
                char *path;
                int fd;
+               char *sender;
 
+               sender = (char *)g_dbus_method_invocation_get_sender(context);
                __bt_service_get_parameters(in_param1, &type, sizeof(int));
                uuid = (char *)g_variant_get_data(in_param2);
                path = (char *)g_variant_get_data(in_param3);
                __bt_service_get_parameters(in_param4, &fd, sizeof(int));
 
-               result = _bt_register_osp_server_in_agent(type, uuid, path, fd);
+               result = _bt_register_osp_server_in_agent(sender, type, uuid, path, fd);
                break;
        }
        case BT_UNSET_AUTHORIZATION: {
@@ -3952,6 +4010,7 @@ gboolean __bt_service_check_privilege(int function_name,
        case BT_RFCOMM_REMOVE_SOCKET:
        case BT_RFCOMM_SEND_RX_DETAILS:
        case BT_RFCOMM_SEND_TX_DETAILS:
+       case BT_RFCOMM_SERVER_UPDATE_CONNECTION_INFO:
 
        case BT_OPP_PUSH_FILES:
        case BT_OPP_CANCEL_PUSH:
@@ -4174,6 +4233,10 @@ gboolean __bt_service_check_privilege(int function_name,
        case BT_LE_OOB_READ_LOCAL_DATA:
        case BT_LE_OOB_ADD_REMOTE_DATA:
 
+       case BT_GET_GATT_DATA_BATCHING_AVAILABLE_PACKETS:
+       case BT_ENABLE_GATT_DATA_BATCHING:
+       case BT_DISABLE_GATT_DATA_BATCHING:
+
        case BT_LE_IPSP_INIT:
        case BT_LE_IPSP_DEINIT:
        case BT_LE_IPSP_CONNECT:
@@ -4353,6 +4416,9 @@ static void __name_owner_changed(GDBusConnection *connection,
 
        /* Check if le_scanning app is terminated */
        _bt_check_le_scanner_app_termination(name);
+
+       /* Check if RFCOMM server is terminated */
+       _bt_rfcomm_server_check_termination(name);
 }
 
 static void __bt_service_bus_acquired_handler(GDBusConnection *connection,