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);