summaryrefslogtreecommitdiffstats
path: root/plugins/novatel.c
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2010-06-05 22:37:02 -0700
committerMarcel Holtmann <marcel@holtmann.org>2010-06-05 22:37:02 -0700
commit4f4565b33a9f47882284908d6cdf56c581418e64 (patch)
tree78d918a34149829ed4640ce8d40e214fe805b5b5 /plugins/novatel.c
parente92040671d5841a746db83971f3e2cb1241f2263 (diff)
downloadofono-4f4565b33a9f47882284908d6cdf56c581418e64.tar.bz2
Add disconnect callback handling to Novatel plugin
Diffstat (limited to 'plugins/novatel.c')
-rw-r--r--plugins/novatel.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/plugins/novatel.c b/plugins/novatel.c
index d015c51f..ee6da5fe 100644
--- a/plugins/novatel.c
+++ b/plugins/novatel.c
@@ -175,6 +175,19 @@ error:
nwdmat_action(FALSE, result, user_data);
}
+static void novatel_disconnect(gpointer user_data)
+{
+ struct ofono_modem *modem = user_data;
+ struct novatel_data *data = ofono_modem_get_data(modem);
+
+ DBG("");
+
+ g_at_chat_unref(data->primary);
+ data->primary = NULL;
+
+ ofono_info("Channel disconnected");
+}
+
static int novatel_enable(struct ofono_modem *modem)
{
struct novatel_data *data = ofono_modem_get_data(modem);
@@ -203,6 +216,9 @@ static int novatel_enable(struct ofono_modem *modem)
if (getenv("OFONO_AT_DEBUG"))
g_at_chat_set_debug(data->primary, novatel_debug, "1st:");
+ g_at_chat_set_disconnect_function(data->primary,
+ novatel_disconnect, modem);
+
g_at_chat_send(data->primary, "ATE0 +CMEE=1", none_prefix,
NULL, NULL, NULL);