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