From b7cfbff47d79e465e9c53bdfe38a3130ffef8501 Mon Sep 17 00:00:00 2001 From: "Gustavo F. Padovan" Date: Fri, 3 Dec 2010 16:52:56 -0200 Subject: [PATCH] phonesim: Add modem reset trigger --- plugins/phonesim.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/plugins/phonesim.c b/plugins/phonesim.c index 6b483ff6..c7ef0d7d 100644 --- a/plugins/phonesim.c +++ b/plugins/phonesim.c @@ -374,6 +374,30 @@ static void cfun_set_on_cb(gboolean ok, GAtResult *result, gpointer user_data) ofono_modem_set_powered(modem, ok); } +static gboolean phonesim_reset(void *user_data) +{ + struct ofono_modem *modem = user_data; + struct phonesim_data *data = ofono_modem_get_data(modem); + + g_at_chat_unref(data->chat); + data->chat = NULL; + + if (data->mux) { + g_at_mux_shutdown(data->mux); + g_at_mux_unref(data->mux); + data->mux = NULL; + } + + ofono_modem_reset(modem); + + return FALSE; +} + +static void crst_notify(GAtResult *result, gpointer user_data) +{ + g_idle_add(phonesim_reset, user_data); +} + static void phonesim_disconnected(gpointer user_data) { struct ofono_modem *modem = user_data; @@ -526,6 +550,9 @@ static int phonesim_enable(struct ofono_modem *modem) g_at_chat_send(data->chat, "AT+CSCS=\"GSM\"", none_prefix, NULL, NULL, NULL); + g_at_chat_register(data->chat, "+CRST:", + crst_notify, FALSE, modem, NULL); + return 0; }