Add support for technology interface
[framework/connectivity/connman.git] / src / device.c
index 4515245..c78e421 100644 (file)
@@ -2,7 +2,7 @@
  *
  *  Connection Manager
  *
- *  Copyright (C) 2007-2009  Intel Corporation. All rights reserved.
+ *  Copyright (C) 2007-2010  Intel Corporation. All rights reserved.
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License version 2 as
@@ -328,7 +328,7 @@ static DBusMessage *get_properties(DBusConnection *conn,
                        connman_dbus_dict_append_basic(&dict, "ScanInterval",
                                DBUS_TYPE_UINT16, &device->scan_interval);
 
-               connman_dbus_dict_append_variable_array(&dict, "Networks",
+               connman_dbus_dict_append_array(&dict, "Networks",
                                DBUS_TYPE_OBJECT_PATH, append_networks, device);
                break;
        }
@@ -478,23 +478,6 @@ static GDBusSignalTable device_signals[] = {
        { },
 };
 
-static void emit_devices_signal(void)
-{
-       DBusMessage *signal;
-       DBusMessageIter iter;
-
-       signal = dbus_message_new_signal(CONNMAN_MANAGER_PATH,
-                               CONNMAN_MANAGER_INTERFACE, "PropertyChanged");
-       if (signal == NULL)
-               return;
-
-       dbus_message_iter_init_append(signal, &iter);
-       connman_dbus_property_append_variable_array(&iter, "Devices",
-                       DBUS_TYPE_OBJECT_PATH, __connman_device_list, NULL);
-
-       g_dbus_send_message(connection, signal);
-}
-
 static int register_interface(struct connman_element *element)
 {
        struct connman_device *device = element->device;
@@ -511,8 +494,6 @@ static int register_interface(struct connman_element *element)
 
        device->registered = TRUE;
 
-       emit_devices_signal();
-
        return 0;
 }
 
@@ -524,8 +505,6 @@ static void unregister_interface(struct connman_element *element)
 
        device->registered = FALSE;
 
-       emit_devices_signal();
-
        g_dbus_unregister_interface(connection, element->path,
                                                CONNMAN_DEVICE_INTERFACE);
 }
@@ -545,6 +524,8 @@ static int setup_device(struct connman_device *device)
                return err;
        }
 
+       __connman_technology_add_device(device);
+
        type = __connman_device_get_service_type(device);
        __connman_notifier_register(type);
 
@@ -555,6 +536,9 @@ static int setup_device(struct connman_device *device)
                break;
        }
 
+       if (__connman_udev_get_blocked(device->phyindex) == TRUE)
+               return 0;
+
        if (device->offlinemode == FALSE &&
                                device->powered_persistent == TRUE)
                __connman_device_enable(device);
@@ -603,6 +587,8 @@ static void remove_device(struct connman_device *device)
        type = __connman_device_get_service_type(device);
        __connman_notifier_unregister(type);
 
+       __connman_technology_remove_device(device);
+
        unregister_interface(&device->element);
 
        if (device->driver->remove)