Add the plugin for Headed/Headless device
[platform/core/connectivity/bluetooth-frwk.git] / bt-service / bt-service-adapter-le.c
index e124352..6f8d920 100644 (file)
  */
 
 #include <stdio.h>
-#include <dbus/dbus.h>
 #include <gio/gio.h>
 #include <glib.h>
 #include <dlog.h>
 #include <string.h>
 #include <vconf.h>
 #include <syspopup_caller.h>
-#include <aul.h>
 
 #include "bt-internal-types.h"
 #include "bt-service-common.h"
@@ -81,87 +79,7 @@ static gboolean is_le_scanning = FALSE;
 static gboolean scan_filter_enabled = FALSE;
 static bt_le_scan_type_t le_scan_type = BT_LE_PASSIVE_SCAN;
 
-static GSList *gatt_client_senders = NULL;
-
-
-gboolean _bt_is_set_scan_parameter(void)
-{
-       return is_le_set_scan_parameter;
-}
-
-void _bt_init_gatt_client_senders(void)
-{
-       _bt_clear_request_list();
-}
-
-int _bt_insert_gatt_client_sender(char *sender)
-{
-       char *info;
-
-       retv_if(sender == NULL, BLUETOOTH_ERROR_INVALID_PARAM);
-
-       info = g_strdup(sender);
-       retv_if(info == NULL, BLUETOOTH_ERROR_MEMORY_ALLOCATION);
-
-       gatt_client_senders = g_slist_append(gatt_client_senders, info);
-
-       BT_DBG("insert sender: %s", sender);
-
-       return BLUETOOTH_ERROR_NONE;
-}
-
-int _bt_delete_gatt_client_sender(char *sender)
-{
-       GSList *l;
-       char *info;
-
-       BT_DBG("remove sender: %s", sender);
-
-       for (l = gatt_client_senders; l != NULL; l = g_slist_next(l)) {
-               info = l->data;
-               if (info == NULL)
-                       continue;
-
-               if (g_strcmp0(info, sender) == 0) {
-                       BT_DBG("remove info");
-                       gatt_client_senders = g_slist_remove(gatt_client_senders, info);
-                       g_free(info);
-                       return BLUETOOTH_ERROR_NONE;
-               }
-       }
-
-       return BLUETOOTH_ERROR_NOT_FOUND;
-}
-
-void _bt_clear_gatt_client_senders(void)
-{
-       if (gatt_client_senders) {
-               g_slist_foreach(gatt_client_senders, (GFunc)g_free, NULL);
-               g_slist_free(gatt_client_senders);
-               gatt_client_senders = NULL;
-       }
-}
-#if 0
-static void __bt_send_foreach_event(gpointer data, gpointer user_data)
-{
-       char *sender = data;
-       GVariant *param = user_data;
-
-       _bt_send_event_to_dest(sender, BT_DEVICE_EVENT, BLUETOOTH_EVENT_GATT_CHAR_VAL_CHANGED,
-                                       param);
-}
-#endif
-void _bt_send_char_value_changed_event(void *param)
-{
-#if 0
-       g_slist_foreach(gatt_client_senders, __bt_send_foreach_event,
-                                       (gpointer)param);
-#else
-       _bt_send_event(BT_DEVICE_EVENT, BLUETOOTH_EVENT_GATT_CHAR_VAL_CHANGED, param);
-#endif
-}
-
-void __bt_free_le_adv_slot(void)
+static void __bt_free_le_adv_slot(void)
 {
        int i;
 
@@ -272,6 +190,9 @@ int __bt_get_available_adv_slot_id(const char *sender, int adv_handle, gboolean
 
 static void __bt_register_adv_slot_owner(const char *sender, int adv_handle, int slot_id)
 {
+       if (le_adv_slot == NULL)
+               return;
+
        if (le_adv_slot[slot_id].sender == NULL) {
                le_adv_slot[slot_id].sender = strdup(sender);
                le_adv_slot[slot_id].adv_handle = adv_handle;
@@ -280,6 +201,9 @@ static void __bt_register_adv_slot_owner(const char *sender, int adv_handle, int
 
 void _bt_unregister_adv_slot_owner(int slot_id)
 {
+       if (le_adv_slot == NULL)
+               return;
+
        g_free(le_adv_slot[slot_id].sender);
        le_adv_slot[slot_id].sender = NULL;
        le_adv_slot[slot_id].adv_handle = 0;
@@ -303,6 +227,9 @@ int _bt_get_adv_slot_adv_handle(int slot_id)
 
 void _bt_set_advertising_status(int slot_id, gboolean mode)
 {
+       if (le_adv_slot == NULL)
+               return;
+
        le_adv_slot[slot_id].is_advertising = mode;
 }
 
@@ -319,6 +246,11 @@ gboolean _bt_is_advertising(void)
        return status;
 }
 
+gboolean _bt_is_multi_adv_supported(void)
+{
+       return (le_feature_info.adv_inst_max > 1) ? TRUE : FALSE;
+}
+
 void _bt_stop_advertising_by_terminated_process(const char* terminated_name)
 {
        int i;
@@ -897,10 +829,6 @@ int __bt_get_available_scan_filter_slot_id(void)
                return -1;
        }
        slot_check_list = g_malloc0(sizeof(gboolean) * le_feature_info.max_filter);
-       if (slot_check_list == NULL) {
-               BT_ERR("Fail to allocate memory");
-               return -1;
-       }
 
        for (l = scanner_list; l != NULL; l = g_slist_next(l)) {
                scanner = l->data;
@@ -1249,20 +1177,16 @@ int _bt_register_scan_filter(const char *sender, bluetooth_le_scan_filter_t *fil
        scanner = __bt_find_scanner_from_list(sender);
        if (scanner == NULL) {
                scanner = g_malloc0(sizeof(bt_adapter_le_scanner_t));
-               if (scanner) {
-                       scanner->sender = strdup(sender);
-                       scanner_list = g_slist_append(scanner_list, scanner);
-               }
+               scanner->sender = strdup(sender);
+               scanner_list = g_slist_append(scanner_list, scanner);
        }
 
        filter_data = g_malloc0(sizeof(bluetooth_le_scan_filter_t));
-       if (filter_data) {
-               memcpy(filter_data, filter, sizeof(bluetooth_le_scan_filter_t));
-               filter_data->slot_id = *slot_id;
+       memcpy(filter_data, filter, sizeof(bluetooth_le_scan_filter_t));
+       filter_data->slot_id = *slot_id;
 
-               if (scanner)
-                       scanner->filter_list = g_slist_append(scanner->filter_list, filter_data);
-       }
+       if (scanner)
+               scanner->filter_list = g_slist_append(scanner->filter_list, filter_data);
 
        if (ret)
                g_variant_unref(ret);
@@ -1366,8 +1290,6 @@ int _bt_start_le_scan(const char *sender)
 
        if (scanner == NULL) {
                scanner = g_malloc0(sizeof(bt_adapter_le_scanner_t));
-               retv_if(scanner == NULL, BLUETOOTH_ERROR_INTERNAL);
-
                scanner->sender = strdup(sender);
                scanner_list = g_slist_append(scanner_list, scanner);
        }
@@ -1936,42 +1858,8 @@ void _bt_send_scan_result_event(const bt_remote_le_dev_info_t *le_dev_info,
                                        scan_data_len,
                                        scan_data_param);
 
-#if 0
                _bt_send_event_to_dest(scanner->sender, BT_LE_ADAPTER_EVENT,
                                BLUETOOTH_EVENT_REMOTE_LE_DEVICE_FOUND, param);
-#else
-               _bt_send_event(BT_LE_ADAPTER_EVENT, BLUETOOTH_EVENT_REMOTE_LE_DEVICE_FOUND, param);
-#endif
-       }
-}
-
-void _bt_send_ibeacon_scan_result_event(const bt_remote_ibeacon_dev_info_t *ibeacon_dev_info)
-{
-       int result = BLUETOOTH_ERROR_NONE;
-       GSList *l;
-       GVariant *param;
-       bt_adapter_le_scanner_t *scanner = NULL;
-
-       ret_if(ibeacon_dev_info == NULL);
-       BT_DBG("_bt_send_ibeacon_scan_result_event");
-
-       for (l = scanner_list; l != NULL; l = g_slist_next(l)) {
-               scanner = l->data;
-               if (scanner->is_scanning == FALSE)
-                       continue;
-
-               param = g_variant_new("(isnnnsnnn)",
-                                       result,
-                                       ibeacon_dev_info->address,
-                                       ibeacon_dev_info->addr_type,
-                                       ibeacon_dev_info->company_id,
-                                       ibeacon_dev_info->ibeacon_type,
-                                       ibeacon_dev_info->uuid,
-                                       ibeacon_dev_info->major_id,
-                                       ibeacon_dev_info->minor_id,
-                                       ibeacon_dev_info->measured_power);
-
-               _bt_send_event(BT_LE_ADAPTER_EVENT, BLUETOOTH_EVENT_REMOTE_IBEACON_DEVICE_FOUND, param);
        }
 }