summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Ortiz <sameo@linux.intel.com>2010-07-29 20:10:02 +0200
committerSamuel Ortiz <sameo@linux.intel.com>2010-07-29 20:10:02 +0200
commit6d223212daa782df716b5a449476d137cd181fa2 (patch)
tree310ebd88fe03624c96016567e8f674501f2f50a8
parentf0031470e7467e7ef3c1c483c2599eee3d9be130 (diff)
downloadconnman-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.h2
-rw-r--r--src/device.c3
-rw-r--r--src/manager.c2
-rw-r--r--src/profile.c6
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;
}