From 531a3d819e4c73092114f631c2d0697c360a425e Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Fri, 30 Jul 2010 12:01:16 +0200 Subject: [PATCH 1/6] 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. --- src/connman.h | 2 +- src/device.c | 3 +++ src/manager.c | 2 +- src/profile.c | 6 ++++-- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/connman.h b/src/connman.h index 6211346..ee8e4ba 100644 --- a/src/connman.h +++ b/src/connman.h @@ -366,7 +366,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 619fe5e..fc72544 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 22e263a..538510e 100644 --- a/src/manager.c +++ b/src/manager.c @@ -123,7 +123,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, "ActiveProfile") == TRUE) { diff --git a/src/profile.c b/src/profile.c index b7dc96f..830db89 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; } -- 1.7.1