Fix the coding style errors (bt-service)
[platform/core/connectivity/bluetooth-frwk.git] / bt-service / bt-service-adapter.c
index d7725ac..5ea51cb 100644 (file)
@@ -1,11 +1,5 @@
 /*
- * Bluetooth-frwk
- *
- * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
- *
- * Contact:  Hocheol Seo <hocheol.seo@samsung.com>
- *              Girishashok Joshi <girish.joshi@samsung.com>
- *              Chanyeol Park <chanyeol.park@samsung.com>
+ * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 #include <aul.h>
 #include <dbus/dbus-glib.h>
 #include <dbus/dbus.h>
-
 #include <bundle.h>
-#if 0
 #include <eventsystem.h>
-#endif
 #include <bundle_internal.h>
 
 #include "alarm.h"
@@ -53,6 +44,9 @@
 #include "bt-service-main.h"
 #include "bt-service-avrcp.h"
 #include "bt-service-device.h"
+#ifdef TIZEN_DPM_ENABLE
+#include "bt-service-dpm.h"
+#endif
 
 typedef struct {
        guint event_id;
@@ -73,7 +67,7 @@ static GDBusProxy *core_proxy = NULL;
 static guint timer_id = 0;
 static guint le_timer_id = 0;
 
-static int status_reg_id;
+static uint status_reg_id;
 
 #define BT_CORE_NAME "org.projectx.bt_core"
 #define BT_CORE_PATH "/org/projectx/bt_core"
@@ -195,7 +189,7 @@ static void __bt_visibility_alarm_create()
 
        result = alarmmgr_add_alarm(ALARM_TYPE_VOLATILE, visible_timer.timeout,
                                                0, NULL, &alarm_id);
-       if(result < 0) {
+       if (result < 0) {
                BT_ERR("Failed to create alarm error = %d\n", result);
        } else {
                BT_DBG("Alarm created = %d\n", alarm_id);
@@ -224,13 +218,19 @@ int __bt_set_visible_time(int timeout)
 
        visible_timer.timeout = timeout;
 
-       if (timeout <= 0)
-               return BLUETOOTH_ERROR_NONE;
-
 #ifndef TIZEN_WEARABLE
+#ifdef TIZEN_DPM_ENABLE
+       if (_bt_dpm_get_bluetooth_limited_discoverable_state() != DPM_RESTRICTED) {
+#endif
        if (vconf_set_int(BT_FILE_VISIBLE_TIME, timeout) != 0)
                BT_ERR("Set vconf failed");
+#ifdef TIZEN_DPM_ENABLE
+       }
 #endif
+#endif
+
+       if (timeout <= 0)
+               return BLUETOOTH_ERROR_NONE;
 
        if (!visible_timer.alarm_init) {
                /* Set Alarm timer to switch off BT */
@@ -346,9 +346,9 @@ static int __bt_get_bonded_device_info(gchar *device_path,
        g_variant_get(result, "(a{sv})", &property_iter);
 
        while (g_variant_iter_loop(property_iter, "{sv}", &key, &value)) {
-               if (!g_strcmp0(key,"Paired")) {
+               if (!g_strcmp0(key, "Paired")) {
                        paired = g_variant_get_boolean(value);
-               } else if(!g_strcmp0(key, "Address")) {
+               } else if (!g_strcmp0(key, "Address")) {
                        address = g_variant_get_string(value, NULL);
                } else if (!g_strcmp0(key, "Alias")) {
                        name = g_variant_get_string(value, NULL);
@@ -370,9 +370,12 @@ static int __bt_get_bonded_device_info(gchar *device_path,
                } else if (!g_strcmp0(key, "ManufacturerData")) {
                        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) {
                                if (manufacturer_data->len > 0) {
                                        memcpy(dev_info->manufacturer_data.data, manufacturer_data->data,
@@ -381,6 +384,7 @@ static int __bt_get_bonded_device_info(gchar *device_path,
                        }
                }
        }
+       g_variant_iter_free(property_iter);
 
        BT_DBG("trust: %d, paired: %d", trust, paired);
 
@@ -473,6 +477,23 @@ static void __bt_set_visible_mode(void)
        if (vconf_get_int(BT_FILE_VISIBLE_TIME, &timeout) != 0)
                 BT_ERR("Fail to get the timeout value");
 
+#ifdef TIZEN_DPM_ENABLE
+       if (timeout == -1 ||
+       _bt_dpm_get_bluetooth_limited_discoverable_state() == DPM_RESTRICTED) {
+               if (_bt_set_discoverable_mode(
+                       BLUETOOTH_DISCOVERABLE_MODE_GENERAL_DISCOVERABLE,
+                       timeout) != BLUETOOTH_ERROR_NONE) {
+                       if (vconf_set_int(BT_FILE_VISIBLE_TIME, 0) != 0)
+                               BT_ERR("Set vconf failed");
+               }
+       } else {
+               if (_bt_set_discoverable_mode(
+                       BLUETOOTH_DISCOVERABLE_MODE_CONNECTABLE,
+                       timeout) != BLUETOOTH_ERROR_NONE) {
+                               BT_ERR("Set connectable mode failed");
+               }
+       }
+#else
        if (timeout == -1) {
                if (_bt_set_discoverable_mode(
                        BLUETOOTH_DISCOVERABLE_MODE_GENERAL_DISCOVERABLE,
@@ -480,7 +501,14 @@ static void __bt_set_visible_mode(void)
                        if (vconf_set_int(BT_FILE_VISIBLE_TIME, 0) != 0)
                                BT_ERR("Set vconf failed");
                }
+       } else {
+               if (_bt_set_discoverable_mode(
+                       BLUETOOTH_DISCOVERABLE_MODE_CONNECTABLE,
+                       timeout) != BLUETOOTH_ERROR_NONE) {
+                               BT_ERR("Set connectable mode failed");
+               }
        }
+#endif
 }
 #endif
 
@@ -521,7 +549,7 @@ static int __bt_set_enabled(void)
 #else
 #ifdef TIZEN_TV
        if (_bt_set_discoverable_mode(
-               BLUETOOTH_DISCOVERABLE_MODE_GENERAL_DISCOVERABLE, 0)!= BLUETOOTH_ERROR_NONE)
+               BLUETOOTH_DISCOVERABLE_MODE_GENERAL_DISCOVERABLE, 0) != BLUETOOTH_ERROR_NONE)
                        BT_ERR("Fail to set discoverable mode");
 #endif
 #endif
@@ -560,26 +588,23 @@ void _bt_set_disabled(int result)
        ret_pm_ignore = vconf_get_int(VCONFKEY_PM_KEY_IGNORE, &pm_ignore_mode);
 
        /* Update the vconf BT status in normal Deactivation case only */
-
-#if 0
        if (ret == 0 && power_off_status == VCONFKEY_SYSMAN_POWER_OFF_NONE &&
                ret_pm_ignore == 0 && pm_ignore_mode != VCONFKEY_PM_KEY_LOCK) {
-#endif
+
                BT_DBG("Update vconf for BT normal Deactivation");
 
                if (result == BLUETOOTH_ERROR_TIMEOUT)
-                       if (vconf_set_int(BT_OFF_DUE_TO_TIMEOUT, 1) != 0 )
+                       if (vconf_set_int(BT_OFF_DUE_TO_TIMEOUT, 1) != 0)
                                BT_ERR("Set vconf failed");
 
                /* Update Bluetooth Status to notify other modules */
                if (vconf_set_int(VCONFKEY_BT_STATUS, VCONFKEY_BT_STATUS_OFF) != 0)
                        BT_ERR("Set vconf failed");
-#if 0
+
                if (_bt_eventsystem_set_value(SYS_EVENT_BT_STATE, EVT_KEY_BT_STATE,
                                                        EVT_VAL_BT_OFF) != ES_R_OK)
                        BT_ERR("Fail to set value");
-#endif
-//
+       }
 
        if (vconf_set_int(VCONFKEY_BT_DEVICE, VCONFKEY_BT_DEVICE_NONE) != 0)
                BT_ERR("Set vconf failed\n");
@@ -607,11 +632,9 @@ static int __bt_set_le_enabled(void)
        if (vconf_set_int(VCONFKEY_BT_LE_STATUS, VCONFKEY_BT_LE_STATUS_ON) != 0)
                BT_ERR("Set vconf failed\n");
 
-#if 0
        if (_bt_eventsystem_set_value(SYS_EVENT_BT_STATE, EVT_KEY_BT_LE_STATE,
                                                EVT_VAL_BT_LE_ON) != ES_R_OK)
                BT_ERR("Fail to set value");
-#endif
 
        /* Send enabled event to API */
        /*
@@ -647,21 +670,17 @@ void _bt_set_le_disabled(int result)
 
        /* Update Bluetooth Status to notify other modules */
        BT_DBG("Update vconf for BT LE normal Deactivation");
-
        if (vconf_set_int(VCONFKEY_BT_LE_STATUS, VCONFKEY_BT_LE_STATUS_OFF) != 0)
                BT_ERR("Set vconf failed\n");
        _bt_adapter_set_le_status(BT_LE_DEACTIVATED);
-#if 0
+
        if (_bt_eventsystem_set_value(SYS_EVENT_BT_STATE, EVT_KEY_BT_LE_STATE,
                                                EVT_VAL_BT_LE_OFF) != ES_R_OK)
                BT_ERR("Fail to set value");
-#endif
 
-       if (_bt_adapter_get_status() != BT_DEACTIVATED) {
-               /* Send disabled event */
-               _bt_send_event(BT_LE_ADAPTER_EVENT, BLUETOOTH_EVENT_LE_DISABLED,
-                               g_variant_new_int32(result));
-       }
+       /* Send disabled event */
+       _bt_send_event(BT_LE_ADAPTER_EVENT, BLUETOOTH_EVENT_LE_DISABLED,
+                       g_variant_new_int32(result));
 }
 
 void *_bt_get_adapter_agent(void)
@@ -700,7 +719,7 @@ int _bt_enable_core(void)
        return BLUETOOTH_ERROR_NONE;
 }
 
-#if defined(TIZEN_BT_FLIGHTMODE_ENABLED) || !defined(TIZEN_WEARABLE)
+#if defined(TIZEN_TELEPHONY_ENABLED) || (!defined(TIZEN_WEARABLE) && defined(ENABLE_TIZEN_2_4))
 static void __bt_service_flight_ps_mode_cb(keynode_t *node, void *data)
 {
        gboolean flight_mode = FALSE;
@@ -770,11 +789,10 @@ void _bt_service_unregister_vconf_handler(void)
 
 static void __bt_state_event_handler(const char *event_name, bundle *data, void *user_data)
 {
+#ifdef ENABLE_TIZEN_2_4
        const char *bt_status = NULL;
        const char *bt_le_status = NULL;
-       const char *bt_transfering_status = NULL;
        BT_DBG("bt state set event(%s) received", event_name);
-#ifdef ENABLE_TIZEN_2_4
        bt_status = bundle_get_val(data, EVT_KEY_BT_STATE);
        BT_DBG("bt_state: (%s)", bt_status);
 
@@ -824,10 +842,12 @@ void _bt_handle_adapter_added(void)
        if (ret < 0)
                BT_ERR("Unable to register key handler");
 
-       if (le_status == BT_LE_ACTIVATING) {
+       if (le_status == BT_LE_ACTIVATING ||
+                status == BT_ACTIVATING) {
                __bt_set_le_enabled();
                _bt_adapter_set_le_status(BT_LE_ACTIVATED);
        }
+
        if (status == BT_ACTIVATING) {
                __bt_set_enabled();
                _bt_adapter_set_status(BT_ACTIVATED);
@@ -837,13 +857,12 @@ void _bt_handle_adapter_added(void)
 #endif
 
        _bt_service_register_vconf_handler();
-#if 0
+
        /* eventsystem */
        if (eventsystem_register_event(SYS_EVENT_BT_STATE, &status_reg_id,
                        (eventsystem_handler)__bt_state_event_handler, NULL) != ES_R_OK) {
                BT_ERR("Fail to register system event");
        }
-#endif
 }
 
 void _bt_handle_adapter_removed(void)
@@ -872,11 +891,10 @@ void _bt_handle_adapter_removed(void)
        adapter_agent = NULL;
 
        _bt_reliable_terminate_service(NULL);
-#if 0 
+
        if (eventsystem_unregister_event(status_reg_id) != ES_R_OK) {
                BT_ERR("Fail to unregister system event");
        }
-#endif
 
 }
 
@@ -916,7 +934,6 @@ static gboolean __bt_enable_timeout_cb(gpointer user_data)
        }
 
        g_variant_unref(result);
-
        _bt_set_disabled(BLUETOOTH_ERROR_TIMEOUT);
 
        _bt_terminate_service(NULL);
@@ -959,7 +976,6 @@ static gboolean __bt_enable_le_timeout_cb(gpointer user_data)
        }
 
        g_variant_unref(result);
-
        _bt_adapter_set_le_status(BT_LE_DEACTIVATED);
 
        _bt_set_le_disabled(BLUETOOTH_ERROR_TIMEOUT);
@@ -996,6 +1012,7 @@ void _bt_adapter_start_enable_timer(void)
        return;
 }
 
+#ifdef TIZEN_TV
 static gboolean __bt_adapter_enabled_cb(gpointer user_data)
 {
        BT_DBG("+");
@@ -1005,7 +1022,7 @@ static gboolean __bt_adapter_enabled_cb(gpointer user_data)
 
        return FALSE;
 }
-
+#endif
 
 int _bt_enable_adapter(void)
 {
@@ -1092,7 +1109,6 @@ int _bt_enable_adapter(void)
                return BLUETOOTH_ERROR_INTERNAL;
        }
        g_variant_unref(result);
-
        if (le_status == BT_LE_ACTIVATED) {
                __bt_set_enabled();
        } else {
@@ -1243,7 +1259,6 @@ int __bt_disable_cb(void)
        }
 
        g_variant_unref(result);
-
        return BLUETOOTH_ERROR_NONE;
 }
 
@@ -1543,7 +1558,6 @@ int _bt_disable_adapter_le(void)
        }
 
        g_variant_unref(result);
-
        _bt_set_le_disabled(BLUETOOTH_ERROR_NONE);
        BT_DBG("le status : %d", _bt_adapter_get_le_status());
        BT_DBG("-");
@@ -1749,7 +1763,7 @@ int _bt_is_service_used(char *service_uuid, gboolean *used)
        int ret = BLUETOOTH_ERROR_NONE;
        GVariant *result;
        GVariant *value;
-       GVariantIter *iter;
+       GVariantIter *iter = NULL;
        gchar *uuid;
 
        BT_DBG("+");
@@ -1779,9 +1793,8 @@ int _bt_is_service_used(char *service_uuid, gboolean *used)
 
        g_variant_get(result, "(v)", &value);
        g_variant_get(value, "as", &iter);
-
        if (iter == NULL) {
-               BT_ERR("Failed to get UUIDs(%s)",service_uuid);
+               BT_ERR("Failed to get UUIDs(%s)", service_uuid);
                *used = FALSE;
                g_variant_unref(result);
                g_variant_unref(value);
@@ -1832,7 +1845,7 @@ static gboolean __bt_get_discoverable_property(void)
                        g_clear_error(&error);
                } else
                        BT_ERR("Failed to get Discoverable property");
-               return FALSE;
+               return BLUETOOTH_ERROR_INTERNAL;
        }
 
        g_variant_get(result, "(v)", &temp);
@@ -1880,6 +1893,19 @@ int _bt_set_discoverable_mode(int discoverable_mode, int timeout)
 
        retv_if(proxy == NULL, BLUETOOTH_ERROR_INTERNAL);
 
+#ifdef TIZEN_DPM_ENABLE
+       if (discoverable_mode != BLUETOOTH_DISCOVERABLE_MODE_CONNECTABLE &&
+               _bt_dpm_get_bluetooth_limited_discoverable_state() == DPM_RESTRICTED) {
+               _bt_launch_dpm_popup("DPM_POLICY_DISABLE_BT_HANDSFREE");
+               return BLUETOOTH_ERROR_ACCESS_DENIED;
+       }
+       if (discoverable_mode != BLUETOOTH_DISCOVERABLE_MODE_GENERAL_DISCOVERABLE &&
+                _bt_dpm_get_bluetooth_limited_discoverable_state() == DPM_RESTRICTED) {
+               _bt_launch_dpm_popup("DPM_POLICY_DISABLE_BT");
+               return BLUETOOTH_ERROR_ACCESS_DENIED;
+       }
+#endif
+
        switch (discoverable_mode) {
        case BLUETOOTH_DISCOVERABLE_MODE_CONNECTABLE:
                pg_scan = TRUE;
@@ -2280,11 +2306,11 @@ static bluetooth_device_info_t *__bt_parse_device_info(GVariantIter *item_iter)
                        address = g_variant_get_string(value, NULL);
                        _bt_convert_addr_string_to_type(dev_info->device_address.addr,
                                                        address);
-               } else if(!g_strcmp0(key, "Class")) {
+               } else if (!g_strcmp0(key, "Class")) {
                        unsigned int cod;
                        cod = g_variant_get_uint32(value);
                        _bt_divide_device_class(&dev_info->device_class, cod);
-               } else if(!g_strcmp0(key, "Name")) {
+               } else if (!g_strcmp0(key, "Name")) {
                        const char *name = NULL;
                        name = g_variant_get_string(value, NULL);
                        /* If there is no Alias */
@@ -2292,7 +2318,7 @@ static bluetooth_device_info_t *__bt_parse_device_info(GVariantIter *item_iter)
                                g_strlcpy(dev_info->device_name.name, name,
                                                BLUETOOTH_DEVICE_NAME_LENGTH_MAX+1);
                        }
-               } else if(!g_strcmp0(key, "Alias")) {
+               } else if (!g_strcmp0(key, "Alias")) {
                        const char *alias = NULL;
                        alias = g_variant_get_string(value, NULL);
                        /* Overwrite the name */
@@ -2339,9 +2365,10 @@ static bluetooth_device_info_t *__bt_parse_device_info(GVariantIter *item_iter)
                } else if (strcasecmp(key, "ManufacturerData") == 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) {
                                        memcpy(dev_info->manufacturer_data.data, manufacturer_data->data, manufacturer_data->len);
@@ -2581,7 +2608,9 @@ int _bt_set_manufacturer_data(bluetooth_manufacturer_data_t *m_data)
        return BLUETOOTH_ERROR_NONE;
 }
 
+#ifdef TIZEN_TV
 int _bt_get_enable_timer_id(void)
 {
        return timer_id;
 }
+#endif