Enforce current offline mode for new devices
authorMarcel Holtmann <marcel@holtmann.org>
Wed, 22 Jul 2009 11:16:32 +0000 (13:16 +0200)
committerMarcel Holtmann <marcel@holtmann.org>
Wed, 22 Jul 2009 11:16:32 +0000 (13:16 +0200)
src/connman.h
src/device.c
src/manager.c

index 63e8a68..456c1f7 100644 (file)
@@ -48,9 +48,13 @@ DBusMessage *__connman_error_invalid_property(DBusMessage *msg);
 
 int __connman_selftest(void);
 
+#include <connman/types.h>
+
 int __connman_manager_init(DBusConnection *conn, gboolean compat);
 void __connman_manager_cleanup(void);
 
+connman_bool_t __connman_manager_get_offlinemode(void);
+
 int __connman_agent_init(DBusConnection *conn);
 void __connman_agent_cleanup(void);
 
index 710c6ce..e9bbeb5 100644 (file)
@@ -37,6 +37,7 @@ struct connman_device {
        enum connman_device_type type;
        enum connman_device_mode mode;
        connman_bool_t secondary;
+       connman_bool_t offlinemode;
        connman_bool_t powered;
        connman_bool_t powered_persistent;
        connman_bool_t carrier;
@@ -686,7 +687,8 @@ static int setup_device(struct connman_device *device)
                break;
        }
 
-       if (device->powered_persistent == TRUE)
+       if (device->offlinemode == FALSE &&
+                               device->powered_persistent == TRUE)
                __connman_device_enable(device);
 
        return 0;
@@ -1545,6 +1547,8 @@ static void set_offlinemode(struct connman_element *element, gpointer user_data)
        if (device == NULL)
                return;
 
+       device->offlinemode = offlinemode;
+
        powered = (offlinemode == TRUE) ? FALSE : TRUE;
 
        if (device->powered == powered)
@@ -1696,6 +1700,8 @@ int connman_device_register(struct connman_device *device)
 
        __connman_storage_load_device(device);
 
+       device->offlinemode = __connman_manager_get_offlinemode();
+
        switch (device->mode) {
        case CONNMAN_DEVICE_MODE_UNKNOWN:
        case CONNMAN_DEVICE_MODE_TRANSPORT_IP:
index 711fa63..b047a79 100644 (file)
 
 static connman_bool_t global_offlinemode = FALSE;
 
+connman_bool_t __connman_manager_get_offlinemode(void)
+{
+       return global_offlinemode;
+}
+
 static void append_profiles(DBusMessageIter *dict)
 {
        DBusMessageIter entry, value, iter;