From: Tomasz Gregorek <tomasz.grego...@stericsson.com>

Combining mbm_disable and reopen_callback into one and removing 1 second
delay between them to avoid call to reopen_callback after modem being
disconnected.
---
 plugins/mbm.c |   41 +++++++++++------------------------------
 1 files changed, 11 insertions(+), 30 deletions(-)

diff --git a/plugins/mbm.c b/plugins/mbm.c
index dca9bd8..d1529ac 100644
--- a/plugins/mbm.c
+++ b/plugins/mbm.c
@@ -66,7 +66,6 @@ struct mbm_data {
        gboolean have_sim;
        struct ofono_gprs *gprs;
        struct ofono_gprs_context *gc;
-       guint reopen_source;
        enum mbm_variant variant;
 };
 
@@ -297,21 +296,26 @@ static GAtChat *create_port(const char *device)
        return chat;
 }
 
-static void mbm_disconnect(gpointer user_data);
-
-static gboolean reopen_callback(gpointer user_data)
+static void mbm_disconnect(gpointer user_data)
 {
        struct ofono_modem *modem = user_data;
        struct mbm_data *data = ofono_modem_get_data(modem);
        const char *data_dev;
 
-       data->reopen_source = 0;
+       DBG("");
+
+       if (data->gc)
+               ofono_gprs_context_remove(data->gc);
+
+       g_at_chat_unref(data->data_port);
+       data->data_port = NULL;
 
        data_dev = ofono_modem_get_string(modem, "DataDevice");
 
        data->data_port = create_port(data_dev);
+
        if (data->data_port == NULL)
-               return FALSE;
+               return;
 
        if (getenv("OFONO_AT_DEBUG"))
                g_at_chat_set_debug(data->data_port, mbm_debug, "Data: ");
@@ -323,30 +327,12 @@ static gboolean reopen_callback(gpointer user_data)
 
        data->gc = ofono_gprs_context_create(modem, 0,
                                        "atmodem", data->data_port);
+
        if (data->gprs && data->gc) {
                ofono_gprs_context_set_type(data->gc,
                                        OFONO_GPRS_CONTEXT_TYPE_MMS);
                ofono_gprs_add_context(data->gprs, data->gc);
        }
-
-       return FALSE;
-}
-
-static void mbm_disconnect(gpointer user_data)
-{
-       struct ofono_modem *modem = user_data;
-       struct mbm_data *data = ofono_modem_get_data(modem);
-
-       DBG("");
-
-       if (data->gc)
-               ofono_gprs_context_remove(data->gc);
-
-       g_at_chat_unref(data->data_port);
-       data->data_port = NULL;
-
-       /* Waiting for the +CGEV: ME DEACT might also work */
-       data->reopen_source = g_timeout_add_seconds(1, reopen_callback, modem);
 }
 
 static int mbm_enable(struct ofono_modem *modem)
@@ -425,11 +411,6 @@ static int mbm_disable(struct ofono_modem *modem)
 
        DBG("%p", modem);
 
-       if (data->reopen_source > 0) {
-               g_source_remove(data->reopen_source);
-               data->reopen_source = 0;
-       }
-
        if (data->modem_port == NULL)
                return 0;
 
-- 
1.7.1

_______________________________________________
ofono mailing list
ofono@ofono.org
http://lists.ofono.org/listinfo/ofono

Reply via email to