Audio connect issue if 2 Headset already connected
[platform/core/connectivity/bluetooth-frwk.git] / bt-service / bt-service-event-receiver.c
index 0244433..4a75398 100644 (file)
@@ -637,6 +637,9 @@ static void __bt_adapter_property_changed_event(GVariant *msg, const char *path)
                        g_variant_get(val, "b", &discovering);
                        /* Send event to application */
                        BT_DBG("Discovering %d", discovering);
+                       if (_bt_adapter_get_status() != BT_ACTIVATED)
+                               return;
+
                        if (discovering == TRUE) {
                                _bt_set_discovery_status(TRUE);
                                param = g_variant_new("(i)", result);
@@ -669,6 +672,11 @@ static void __bt_adapter_property_changed_event(GVariant *msg, const char *path)
                        gboolean le_discovering = FALSE;
 
                        g_variant_get(val, "b", &le_discovering);
+                       BT_DBG("LEDiscovering %d", le_discovering);
+                       if (_bt_adapter_get_status() != BT_ACTIVATED ||
+                               _bt_adapter_get_le_status() != BT_LE_ACTIVATED)
+                               return;
+
                        /* Send event to application */
                        if (le_discovering == TRUE) {
                                _bt_set_le_scan_status(TRUE);
@@ -1876,6 +1884,9 @@ void _bt_handle_device_event(GVariant *msg, const char *member, const char *path
                                !addr_type ? dev_name : secure_address);
                g_free(dev_name);
 
+               if (addr_type)
+                       _bt_add_le_connected_dev_info(address);
+
                _bt_logging_connection(TRUE, addr_type);
                param = g_variant_new("(isy)", result, address, addr_type);
                /*Send event to application*/
@@ -1910,7 +1921,9 @@ void _bt_handle_device_event(GVariant *msg, const char *member, const char *path
                _bt_headset_set_local_connection(FALSE);
                _bt_logging_connection(FALSE, addr_type);
 
-               if (!addr_type) {
+               if (addr_type)
+                       _bt_remove_le_connected_dev_info(address);
+               else {
 #ifdef TIZEN_BT_A2DP_SINK_AUTO_CONNECT
                        {
                                int bt_device_state = VCONFKEY_BT_DEVICE_NONE;
@@ -2200,7 +2213,10 @@ void _bt_handle_device_event(GVariant *msg, const char *member, const char *path
                                                &le_dev_info->adv_data_len,
                                                &value);
 
-               ret_if(value == NULL);
+               if (value == NULL) {
+                       _bt_free_le_device_info(le_dev_info);
+                       return;
+               }
 
                _bt_convert_device_path_to_address(path, le_dev_info->address);
 
@@ -2289,6 +2305,7 @@ void _bt_handle_device_event(GVariant *msg, const char *member, const char *path
                        ipsp_proxy = _bt_get_ipsp_proxy();
                        if (ipsp_proxy == NULL) {
                                BT_ERR("can not get ipsp proxy");
+                               g_free(address);
                                return;
                        }
 
@@ -2300,6 +2317,7 @@ void _bt_handle_device_event(GVariant *msg, const char *member, const char *path
                        ipsp_proxy = _bt_get_ipsp_proxy();
                        if (ipsp_proxy == NULL) {
                                BT_ERR("can not get ipsp proxy");
+                               g_free(address);
                                return;
                        }
 
@@ -2451,7 +2469,6 @@ void _bt_handle_headset_event(GVariant *msg, const char *path)
                                                        wait_list->address);
                        _bt_audio_connect(wait_list->req_id, wait_list->type,
                                        &device_address, NULL);
-                       _bt_rel_wait_data();
                } else if (event == BLUETOOTH_EVENT_AG_CONNECTED) {
                        /* Add data to the connected list */
                        _bt_add_headset_to_list(BT_AUDIO_HSP,
@@ -2919,11 +2936,13 @@ static  void __bt_manager_event_filter(GDBusConnection *connection,
                        BT_INFO_C("### Bluetoothd is terminated");
                        if (_bt_adapter_get_status() != BT_DEACTIVATING &&
                                _bt_adapter_get_status() != BT_DEACTIVATED) {
-                               BT_INFO_C("### Recover it");
-                               _bt_recover_adapter();
+                               BT_INFO_C("Turn Off Bluetooth");
+                               _bt_set_le_disabled(BLUETOOTH_ERROR_NONE);
+                               _bt_disable_cb();
                        }
                        _bt_handle_adapter_removed();
                        __bt_devices_list_free();
+                       _bt_service_adapter_le_deinit();
                }
 
                _bt_obex_server_check_allocation(&value);
@@ -2940,6 +2959,9 @@ static  void __bt_manager_event_filter(GDBusConnection *connection,
                        _bt_rfcomm_server_check_termination(name);
                }
 
+               /* Reset connection interval */
+               _bt_remove_all_le_conn_param_info(name);
+
                /* Stop advertising started by terminated process */
                _bt_stop_advertising_by_terminated_process(name);
                /* Stop LE Scan */
@@ -3256,50 +3278,50 @@ int _bt_register_manager_subscribe_signal(GDBusConnection *conn,
        if (conn == NULL)
                return -1;
 
-       static int subs_interface_added_id = -1;
-       static int subs_interface_removed_id = -1;
-       static int subs_name_owner_id = -1;
-       static int subs_property_id = -1;
-       static int subs_adapter_id = -1;
-       static int subs_gatt_id = -1;
+       static guint subs_interface_added_id;
+       static guint subs_interface_removed_id;
+       static guint subs_name_owner_id;
+       static guint subs_property_id;
+       static guint subs_adapter_id;
+       static guint subs_gatt_id;
 
        if (subscribe) {
-               if (subs_interface_added_id == -1) {
+               if (subs_interface_added_id == 0) {
                        subs_interface_added_id = g_dbus_connection_signal_subscribe(conn,
                                NULL, BT_MANAGER_INTERFACE,
                                BT_INTERFACES_ADDED, NULL, NULL, 0,
                                __bt_manager_event_filter,
                                NULL, NULL);
                }
-               if (subs_interface_removed_id == -1) {
+               if (subs_interface_removed_id == 0) {
                        subs_interface_removed_id = g_dbus_connection_signal_subscribe(conn,
                                NULL, BT_MANAGER_INTERFACE,
                                BT_INTERFACES_REMOVED, NULL, NULL, 0,
                                __bt_manager_event_filter,
                                NULL, NULL);
                }
-               if (subs_name_owner_id == -1) {
+               if (subs_name_owner_id == 0) {
                        subs_name_owner_id = g_dbus_connection_signal_subscribe(conn,
                                NULL, BT_FREEDESKTOP_INTERFACE,
                                BT_NAME_OWNER_CHANGED, NULL, NULL, 0,
                                __bt_manager_event_filter,
                                NULL, NULL);
                }
-               if (subs_property_id == -1) {
+               if (subs_property_id == 0) {
                        subs_property_id = g_dbus_connection_signal_subscribe(conn,
                                NULL, BT_PROPERTIES_INTERFACE,
                                BT_PROPERTIES_CHANGED, NULL, NULL, 0,
                                __bt_manager_event_filter,
                                NULL, NULL);
                }
-               if (subs_adapter_id == -1) {
+               if (subs_adapter_id == 0) {
                        subs_adapter_id = g_dbus_connection_signal_subscribe(conn,
                                NULL, BT_ADAPTER_INTERFACE,
                                NULL, NULL, NULL, 0,
                                __bt_manager_event_filter,
                                NULL, NULL);
                }
-               if (subs_gatt_id == -1) {
+               if (subs_gatt_id == 0) {
                        subs_gatt_id = g_dbus_connection_signal_subscribe(conn,
                                NULL, BT_GATT_CHAR_INTERFACE,
                                NULL, NULL, NULL, 0,
@@ -3307,33 +3329,33 @@ int _bt_register_manager_subscribe_signal(GDBusConnection *conn,
                                NULL, NULL);
                }
        } else {
-               if (subs_interface_added_id != -1) {
+               if (subs_interface_added_id > 0) {
                        g_dbus_connection_signal_unsubscribe(conn,
                                        subs_interface_added_id);
-                       subs_interface_added_id = -1;
+                       subs_interface_added_id = 0;
                }
-               if (subs_interface_removed_id != -1) {
+               if (subs_interface_removed_id > 0) {
                        g_dbus_connection_signal_unsubscribe(conn,
                                        subs_interface_removed_id);
-                       subs_interface_removed_id = -1;
+                       subs_interface_removed_id = 0;
                }
-               if (subs_name_owner_id != -1) {
+               if (subs_name_owner_id > 0) {
                        g_dbus_connection_signal_unsubscribe(conn,
                                        subs_name_owner_id);
-                       subs_name_owner_id = -1;
+                       subs_name_owner_id = 0;
                }
-               if (subs_property_id != -1) {
+               if (subs_property_id > 0) {
                        g_dbus_connection_signal_unsubscribe(conn,
                                        subs_property_id);
-                       subs_property_id = -1;
+                       subs_property_id = 0;
                }
-               if (subs_adapter_id != -1) {
+               if (subs_adapter_id > 0) {
                        g_dbus_connection_signal_unsubscribe(conn, subs_adapter_id);
-                       subs_adapter_id = -1;
+                       subs_adapter_id = 0;
                }
-               if (subs_gatt_id != -1) {
+               if (subs_gatt_id > 0) {
                        g_dbus_connection_signal_unsubscribe(conn, subs_gatt_id);
-                       subs_gatt_id = -1;
+                       subs_gatt_id = 0;
                }
        }
        return 0;
@@ -3345,10 +3367,10 @@ int _bt_register_device_subscribe_signal(GDBusConnection *conn,
        if (conn == NULL)
                return -1;
 
-       static int subs_device_id = -1;
+       static guint subs_device_id;
 
        if (subscribe) {
-               if (subs_device_id == -1) {
+               if (subs_device_id == 0) {
                        subs_device_id = g_dbus_connection_signal_subscribe(conn,
                                NULL, BT_DEVICE_INTERFACE,
                                NULL, NULL, NULL, 0,
@@ -3356,10 +3378,10 @@ int _bt_register_device_subscribe_signal(GDBusConnection *conn,
                                NULL, NULL);
                }
        } else {
-               if (subs_device_id != -1) {
+               if (subs_device_id > 0) {
                        g_dbus_connection_signal_unsubscribe(conn,
                                        subs_device_id);
-                       subs_device_id = -1;
+                       subs_device_id = 0;
                }
        }
        return 0;
@@ -3371,10 +3393,10 @@ int _bt_register_input_subscribe_signal(GDBusConnection *conn,
        if (conn == NULL)
                return -1;
 
-       static int subs_input_id = -1;
+       static int subs_input_id;
 
        if (subscribe) {
-               if (subs_input_id == -1) {
+               if (subs_input_id == 0) {
                        subs_input_id = g_dbus_connection_signal_subscribe(conn,
                                NULL, BT_INPUT_INTERFACE,
                                NULL, NULL, NULL, 0,
@@ -3382,10 +3404,10 @@ int _bt_register_input_subscribe_signal(GDBusConnection *conn,
                                NULL, NULL);
                }
        } else {
-               if (subs_input_id != -1) {
+               if (subs_input_id > 0) {
                        g_dbus_connection_signal_unsubscribe(conn,
                                        subs_input_id);
-                       subs_input_id = -1;
+                       subs_input_id = 0;
                }
        }
        return 0;
@@ -3397,18 +3419,18 @@ int _bt_register_network_subscribe_signal(GDBusConnection *conn,
        if (conn == NULL)
                return -1;
 
-       static int subs_serv_id = -1;
-       static int subs_client_id = -1;
+       static guint subs_serv_id;
+       static guint subs_client_id;
 
        if (subscribe) {
-               if (subs_serv_id == -1) {
+               if (subs_serv_id == 0) {
                        subs_serv_id = g_dbus_connection_signal_subscribe(conn,
                                NULL, BT_NETWORK_SERVER_INTERFACE,
                                NULL, NULL, NULL, 0,
                                __bt_manager_event_filter,
                                NULL, NULL);
                }
-               if (subs_client_id == -1) {
+               if (subs_client_id == 0) {
                        subs_client_id = g_dbus_connection_signal_subscribe(conn,
                                NULL, BT_NETWORK_CLIENT_INTERFACE,
                                NULL, NULL, NULL, 0,
@@ -3416,15 +3438,15 @@ int _bt_register_network_subscribe_signal(GDBusConnection *conn,
                                NULL, NULL);
                }
        } else {
-               if (subs_serv_id != -1) {
+               if (subs_serv_id > 0) {
                        g_dbus_connection_signal_unsubscribe(conn,
                                        subs_serv_id);
-                       subs_serv_id = -1;
+                       subs_serv_id = 0;
                }
-               if (subs_client_id != -1) {
+               if (subs_client_id > 0) {
                        g_dbus_connection_signal_unsubscribe(conn,
                                        subs_client_id);
-                       subs_client_id = -1;
+                       subs_client_id = 0;
                }
        }
        return 0;
@@ -3436,18 +3458,18 @@ int _bt_register_audio_subscribe_signal(GDBusConnection *conn,
        if (conn == NULL)
                return -1;
 
-       static int subs_headset_id = -1;
-       static int subs_sink_id = -1;
+       static guint subs_headset_id;
+       static guint subs_sink_id;
 
        if (subscribe) {
-               if (subs_headset_id == -1) {
+               if (subs_headset_id == 0) {
                        subs_headset_id = g_dbus_connection_signal_subscribe(conn,
                                NULL, BT_HEADSET_INTERFACE,
                                NULL, NULL, NULL, 0,
                                __bt_manager_event_filter,
                                NULL, NULL);
                }
-               if (subs_sink_id == -1) {
+               if (subs_sink_id == 0) {
                        subs_sink_id = g_dbus_connection_signal_subscribe(conn,
                                NULL, BT_SINK_INTERFACE,
                                NULL, NULL, NULL, 0,
@@ -3455,15 +3477,15 @@ int _bt_register_audio_subscribe_signal(GDBusConnection *conn,
                                NULL, NULL);
                }
        } else {
-               if (subs_headset_id != -1) {
+               if (subs_headset_id > 0) {
                        g_dbus_connection_signal_unsubscribe(conn,
                                        subs_headset_id);
-                       subs_headset_id = -1;
+                       subs_headset_id = 0;
                }
-               if (subs_sink_id != -1) {
+               if (subs_sink_id > 0) {
                        g_dbus_connection_signal_unsubscribe(conn,
                                        subs_sink_id);
-                       subs_sink_id = -1;
+                       subs_sink_id = 0;
                }
        }
        return 0;
@@ -3475,27 +3497,27 @@ int _bt_register_opp_server_subscribe_signal(GDBusConnection *conn,
        if (conn == NULL)
                return -1;
 
-       static int subs_opp_server_interface_added_id = -1;
-       static int subs_opp_server_interface_removed_id = -1;
-       static int subs_opp_server_property_id = -1;
+       static guint subs_opp_server_interface_added_id;
+       static guint subs_opp_server_interface_removed_id;
+       static guint subs_opp_server_property_id;
 
 
        if (subscribe) {
-               if (subs_opp_server_interface_added_id == -1) {
+               if (subs_opp_server_interface_added_id == 0) {
                        subs_opp_server_interface_added_id = g_dbus_connection_signal_subscribe(conn,
                                NULL, BT_MANAGER_INTERFACE,
                                BT_INTERFACES_ADDED, NULL, NULL, 0,
                                __bt_obexd_event_filter,
                                NULL, NULL);
                }
-               if (subs_opp_server_interface_removed_id == -1) {
+               if (subs_opp_server_interface_removed_id == 0) {
                        subs_opp_server_interface_removed_id = g_dbus_connection_signal_subscribe(conn,
                                NULL, BT_MANAGER_INTERFACE,
                                BT_INTERFACES_REMOVED, NULL, NULL, 0,
                                __bt_obexd_event_filter,
                                NULL, NULL);
                }
-               if (subs_opp_server_property_id == -1) {
+               if (subs_opp_server_property_id == 0) {
                        subs_opp_server_property_id = g_dbus_connection_signal_subscribe(conn,
                                NULL, BT_PROPERTIES_INTERFACE,
                                BT_PROPERTIES_CHANGED, NULL, NULL, 0,
@@ -3503,20 +3525,20 @@ int _bt_register_opp_server_subscribe_signal(GDBusConnection *conn,
                                NULL, NULL);
                }
        } else {
-               if (subs_opp_server_interface_added_id != -1) {
+               if (subs_opp_server_interface_added_id > 0) {
                        g_dbus_connection_signal_unsubscribe(conn,
                                        subs_opp_server_interface_added_id);
-                       subs_opp_server_interface_added_id = -1;
+                       subs_opp_server_interface_added_id = 0;
                }
-               if (subs_opp_server_interface_removed_id != -1) {
+               if (subs_opp_server_interface_removed_id > 0) {
                        g_dbus_connection_signal_unsubscribe(conn,
                                        subs_opp_server_interface_removed_id);
-                       subs_opp_server_interface_removed_id = -1;
+                       subs_opp_server_interface_removed_id = 0;
                }
-               if (subs_opp_server_property_id != -1) {
+               if (subs_opp_server_property_id > 0) {
                        g_dbus_connection_signal_unsubscribe(conn,
                                        subs_opp_server_property_id);
-                       subs_opp_server_property_id = -1;
+                       subs_opp_server_property_id = 0;
                }
        }
        return 0;
@@ -3528,27 +3550,27 @@ int _bt_register_opp_client_subscribe_signal(GDBusConnection *conn,
        if (conn == NULL)
                return -1;
 
-       static int subs_opp_client_interface_added_id = -1;
-       static int subs_opp_client_interface_removed_id = -1;
-       static int subs_opp_client_property_id = -1;
+       static guint subs_opp_client_interface_added_id;
+       static guint subs_opp_client_interface_removed_id;
+       static guint subs_opp_client_property_id;
 
 
        if (subscribe) {
-               if (subs_opp_client_interface_added_id == -1) {
+               if (subs_opp_client_interface_added_id == 0) {
                        subs_opp_client_interface_added_id = g_dbus_connection_signal_subscribe(conn,
                                NULL, BT_MANAGER_INTERFACE,
                                BT_INTERFACES_ADDED, NULL, NULL, 0,
                                __bt_opc_event_filter,
                                NULL, NULL);
                }
-               if (subs_opp_client_interface_removed_id == -1) {
+               if (subs_opp_client_interface_removed_id == 0) {
                        subs_opp_client_interface_removed_id = g_dbus_connection_signal_subscribe(conn,
                                NULL, BT_MANAGER_INTERFACE,
                                BT_INTERFACES_REMOVED, NULL, NULL, 0,
                                __bt_opc_event_filter,
                                NULL, NULL);
                }
-               if (subs_opp_client_property_id == -1) {
+               if (subs_opp_client_property_id == 0) {
                        subs_opp_client_property_id = g_dbus_connection_signal_subscribe(conn,
                                NULL, BT_PROPERTIES_INTERFACE,
                                BT_PROPERTIES_CHANGED, NULL, NULL, 0,
@@ -3556,20 +3578,20 @@ int _bt_register_opp_client_subscribe_signal(GDBusConnection *conn,
                                NULL, NULL);
                }
        } else {
-               if (subs_opp_client_interface_added_id != -1) {
+               if (subs_opp_client_interface_added_id > 0) {
                        g_dbus_connection_signal_unsubscribe(conn,
                                        subs_opp_client_interface_added_id);
-                       subs_opp_client_interface_added_id = -1;
+                       subs_opp_client_interface_added_id = 0;
                }
-               if (subs_opp_client_interface_removed_id != -1) {
+               if (subs_opp_client_interface_removed_id > 0) {
                        g_dbus_connection_signal_unsubscribe(conn,
                                        subs_opp_client_interface_removed_id);
-                       subs_opp_client_interface_removed_id = -1;
+                       subs_opp_client_interface_removed_id = 0;
                }
-               if (subs_opp_client_property_id != -1) {
+               if (subs_opp_client_property_id > 0) {
                        g_dbus_connection_signal_unsubscribe(conn,
                                        subs_opp_client_property_id);
-                       subs_opp_client_property_id = -1;
+                       subs_opp_client_property_id = 0;
                }
        }
        return 0;
@@ -3581,27 +3603,27 @@ int _bt_register_map_client_subscribe_signal(GDBusConnection *conn,
        if (conn == NULL)
                return -1;
 
-       static int subs_map_client_interface_added_id = -1;
-       static int subs_map_client_interface_removed_id = -1;
-       static int subs_map_client_property_id = -1;
+       static guint subs_map_client_interface_added_id;
+       static guint subs_map_client_interface_removed_id;
+       static guint subs_map_client_property_id;
 
 
        if (subscribe) {
-               if (subs_map_client_interface_added_id == -1) {
+               if (subs_map_client_interface_added_id == 0) {
                        subs_map_client_interface_added_id = g_dbus_connection_signal_subscribe(conn,
                                NULL, BT_MANAGER_INTERFACE,
                                BT_INTERFACES_ADDED, NULL, NULL, 0,
                                __bt_map_event_filter,
                                NULL, NULL);
                }
-               if (subs_map_client_interface_removed_id == -1) {
+               if (subs_map_client_interface_removed_id == 0) {
                        subs_map_client_interface_removed_id = g_dbus_connection_signal_subscribe(conn,
                                NULL, BT_MANAGER_INTERFACE,
                                BT_INTERFACES_REMOVED, NULL, NULL, 0,
                                __bt_map_event_filter,
                                NULL, NULL);
                }
-               if (subs_map_client_property_id == -1) {
+               if (subs_map_client_property_id == 0) {
                        subs_map_client_property_id = g_dbus_connection_signal_subscribe(conn,
                                NULL, BT_PROPERTIES_INTERFACE,
                                BT_PROPERTIES_CHANGED, NULL, NULL, 0,
@@ -3609,20 +3631,20 @@ int _bt_register_map_client_subscribe_signal(GDBusConnection *conn,
                                NULL, NULL);
                }
        } else {
-               if (subs_map_client_interface_added_id != -1) {
+               if (subs_map_client_interface_added_id > 0) {
                        g_dbus_connection_signal_unsubscribe(conn,
                                        subs_map_client_interface_added_id);
-                       subs_map_client_interface_added_id = -1;
+                       subs_map_client_interface_added_id = 0;
                }
-               if (subs_map_client_interface_removed_id != -1) {
+               if (subs_map_client_interface_removed_id > 0) {
                        g_dbus_connection_signal_unsubscribe(conn,
                                        subs_map_client_interface_removed_id);
-                       subs_map_client_interface_removed_id = -1;
+                       subs_map_client_interface_removed_id = 0;
                }
-               if (subs_map_client_property_id != -1) {
+               if (subs_map_client_property_id > 0) {
                        g_dbus_connection_signal_unsubscribe(conn,
                                        subs_map_client_property_id);
-                       subs_map_client_property_id = -1;
+                       subs_map_client_property_id = 0;
                }
        }
        return 0;
@@ -3634,18 +3656,18 @@ int _bt_register_a2dp_subscribe_signal(GDBusConnection *conn,
        if (conn == NULL)
                return -1;
 
-       static int subs_a2dp_source_id = -1;
-       static int subs_a2dp_sink_id = -1;
+       static guint subs_a2dp_source_id;
+       static guint subs_a2dp_sink_id;
 
        if (subscribe) {
-               if (subs_a2dp_source_id == -1) {
+               if (subs_a2dp_source_id == 0) {
                        subs_a2dp_source_id = g_dbus_connection_signal_subscribe(conn,
                                NULL, BT_A2DP_SOURCE_INTERFACE,
                                NULL, NULL, NULL, 0,
                                __bt_opc_event_filter,
                                NULL, NULL);
                }
-               if (subs_a2dp_sink_id == -1) {
+               if (subs_a2dp_sink_id == 0) {
                        subs_a2dp_sink_id = g_dbus_connection_signal_subscribe(conn,
                                NULL, BT_SINK_INTERFACE,
                                NULL, NULL, NULL, 0,
@@ -3653,15 +3675,15 @@ int _bt_register_a2dp_subscribe_signal(GDBusConnection *conn,
                                NULL, NULL);
                }
        } else {
-               if (subs_a2dp_source_id != -1) {
+               if (subs_a2dp_source_id > 0) {
                        g_dbus_connection_signal_unsubscribe(conn,
                                        subs_a2dp_source_id);
-                       subs_a2dp_source_id = -1;
+                       subs_a2dp_source_id = 0;
                }
-               if (subs_a2dp_sink_id != -1) {
+               if (subs_a2dp_sink_id > 0) {
                        g_dbus_connection_signal_unsubscribe(conn,
                                        subs_a2dp_sink_id);
-                       subs_a2dp_sink_id = -1;
+                       subs_a2dp_sink_id = 0;
                }
        }
        return 0;
@@ -3672,10 +3694,10 @@ int _bt_register_tds_provider_subscribe_signal(GDBusConnection *conn, int subscr
        if (conn == NULL)
                return -1;
 
-       static int subs_custom_id = -1;
+       static guint subs_custom_id;
 
        if (subscribe) {
-               if (subs_custom_id == -1) {
+               if (subs_custom_id == 0) {
                        subs_custom_id = g_dbus_connection_signal_subscribe(conn,
                                NULL, BT_TDS_PROVIDER_INTERFACE,
                                NULL, NULL, NULL, 0,
@@ -3683,10 +3705,10 @@ int _bt_register_tds_provider_subscribe_signal(GDBusConnection *conn, int subscr
                                NULL, NULL);
                }
        } else {
-               if (subs_custom_id != -1) {
+               if (subs_custom_id > 0) {
                        g_dbus_connection_signal_unsubscribe(conn,
                                        subs_custom_id);
-                       subs_custom_id = -1;
+                       subs_custom_id = 0;
                }
        }
 
@@ -3710,10 +3732,10 @@ int __bt_register_dump_subscribe_signal(GDBusConnection *conn,
        if (conn == NULL)
                return -1;
 
-       static int subs_source_id = -1;
+       static guint subs_source_id;
 
        if (subscribe) {
-               if (subs_source_id == -1) {
+               if (subs_source_id == 0) {
                        subs_source_id = g_dbus_connection_signal_subscribe(conn,
                                NULL, BT_DUMP_SERVICE_INTERFACE,
                                BT_DUMP_SERVICE_SIGNAL, BT_DUMP_SERVICE_PATH, NULL, 0,
@@ -3721,10 +3743,10 @@ int __bt_register_dump_subscribe_signal(GDBusConnection *conn,
                                NULL, NULL);
                }
        } else {
-               if (subs_source_id != -1) {
+               if (subs_source_id > 0) {
                        g_dbus_connection_signal_unsubscribe(conn,
                                        subs_source_id);
-                       subs_source_id = -1;
+                       subs_source_id = 0;
                }
        }
        return 0;