diff options
author | Samuel Ortiz <sameo@linux.intel.com> | 2010-07-29 20:10:02 +0200 |
---|---|---|
committer | Samuel Ortiz <sameo@linux.intel.com> | 2010-07-29 20:10:02 +0200 |
commit | 6d223212daa782df716b5a449476d137cd181fa2 (patch) | |
tree | 310ebd88fe03624c96016567e8f674501f2f50a8 | |
parent | f0031470e7467e7ef3c1c483c2599eee3d9be130 (diff) | |
download | connman-6d223212daa782df716b5a449476d137cd181fa2.tar.gz connman-6d223212daa782df716b5a449476d137cd181fa2.tar.bz2 connman-6d223212daa782df716b5a449476d137cd181fa2.zip |
Disable offline mode when enabling a technology from offline mode
When enabling a technology in offline mode ConnMan now enables said
technology, set offline mode to false while keeping the other technologies
off.
-rw-r--r-- | src/connman.h | 2 | ||||
-rw-r--r-- | src/device.c | 3 | ||||
-rw-r--r-- | src/manager.c | 2 | ||||
-rw-r--r-- | src/profile.c | 6 |
4 files changed, 9 insertions, 4 deletions
diff --git a/src/connman.h b/src/connman.h index b1d631a8..3766f5c8 100644 --- a/src/connman.h +++ b/src/connman.h @@ -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); diff --git a/src/device.c b/src/device.c index 619fe5e3..fc725446 100644 --- a/src/device.c +++ b/src/device.c @@ -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); diff --git a/src/manager.c b/src/manager.c index 54c5c3ef..45dd06a4 100644 --- a/src/manager.c +++ b/src/manager.c @@ -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) { diff --git a/src/profile.c b/src/profile.c index b7dc96f8..830db896 100644 --- a/src/profile.c +++ b/src/profile.c @@ -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; } |