From: Forest Bond <[email protected]>

---
 src/modem.c |   15 +++++++++++++--
 1 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/src/modem.c b/src/modem.c
index 0f12f5a..6c6937a 100644
--- a/src/modem.c
+++ b/src/modem.c
@@ -595,6 +595,17 @@ static gboolean modem_has_sim(struct ofono_modem *modem)
        return FALSE;
 }
 
+static gboolean modem_is_always_online(struct ofono_modem *modem)
+{
+       if (modem->driver->set_online == NULL)
+               return TRUE;
+
+       if (ofono_modem_get_boolean(modem, "AlwaysOnline") == TRUE)
+               return TRUE;
+
+       return FALSE;
+}
+
 static void common_online_cb(const struct ofono_error *error, void *data)
 {
        struct ofono_modem *modem = data;
@@ -706,7 +717,7 @@ static void sim_state_watch(enum ofono_sim_state new_state, 
void *user)
                 * If we don't have the set_online method, also proceed
                 * straight to the online state
                 */
-               if (modem->driver->set_online == NULL)
+               if (modem_is_always_online(modem) == TRUE)
                        set_online(modem, TRUE);
 
                if (modem->online == TRUE)
@@ -745,7 +756,7 @@ static DBusMessage *set_property_online(struct ofono_modem 
*modem,
        if (ofono_modem_get_emergency_mode(modem) == TRUE)
                return __ofono_error_emergency_active(msg);
 
-       if (driver->set_online == NULL)
+       if (modem_is_always_online(modem) == TRUE)
                return __ofono_error_not_implemented(msg);
 
        modem->pending = dbus_message_ref(msg);
-- 
1.7.0.4
_______________________________________________
ofono mailing list
[email protected]
http://lists.ofono.org/listinfo/ofono

Reply via email to