Disable offline mode when enabling a technology from offline mode
authorSamuel Ortiz <sameo@linux.intel.com>
Thu, 29 Jul 2010 18:10:02 +0000 (20:10 +0200)
committerSamuel Ortiz <sameo@linux.intel.com>
Thu, 29 Jul 2010 18:10:02 +0000 (20:10 +0200)
When enabling a technology in offline mode ConnMan now enables said
technology, set offline mode to false while keeping the other technologies
off.

src/connman.h
src/device.c
src/manager.c
src/profile.c

index b1d631a..3766f5c 100644 (file)
@@ -391,7 +391,7 @@ int __connman_profile_init();
 void __connman_profile_cleanup(void);
 
 connman_bool_t __connman_profile_get_offlinemode(void);
-int __connman_profile_set_offlinemode(connman_bool_t offlinemode);
+int __connman_profile_set_offlinemode(connman_bool_t offlinemode, connman_bool_t all_devices);
 int __connman_profile_save_default(void);
 
 void __connman_profile_list(DBusMessageIter *iter, void *user_data);
index 619fe5e..fc72544 100644 (file)
@@ -1060,6 +1060,9 @@ int __connman_device_enable_persistent(struct connman_device *device)
 
        device->powered_persistent = TRUE;
 
+       if (__connman_profile_get_offlinemode() == TRUE)
+               __connman_profile_set_offlinemode(FALSE, FALSE);
+
        __connman_storage_save_device(device);
 
        return __connman_device_enable(device);
index 54c5c3e..45dd06a 100644 (file)
@@ -127,7 +127,7 @@ static DBusMessage *set_property(DBusConnection *conn,
 
                dbus_message_iter_get_basic(&value, &offlinemode);
 
-               __connman_profile_set_offlinemode(offlinemode);
+               __connman_profile_set_offlinemode(offlinemode, TRUE);
 
                __connman_profile_save_default();
        } else if (g_str_equal(name, "Tethering") == TRUE) {
index b7dc96f..830db89 100644 (file)
@@ -96,7 +96,8 @@ connman_bool_t __connman_profile_get_offlinemode(void)
        return default_profile->offlinemode;
 }
 
-int __connman_profile_set_offlinemode(connman_bool_t offlinemode)
+int __connman_profile_set_offlinemode(connman_bool_t offlinemode,
+                                       connman_bool_t all_devices)
 {
        DBG("offlinemode %d", offlinemode);
 
@@ -109,7 +110,8 @@ int __connman_profile_set_offlinemode(connman_bool_t offlinemode)
        default_profile->offlinemode = offlinemode;
        offlinemode_changed(default_profile);
 
-       __connman_device_set_offlinemode(offlinemode);
+       if (all_devices)
+               __connman_device_set_offlinemode(offlinemode);
 
        return 0;
 }