From 3129516736bb6eb49458ece7df86f57fce51200e Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Wed, 11 Nov 2015 12:38:49 -0600 Subject: broadband-modem-qmi: implement power-cycle reset functionality --- src/mm-broadband-modem-qmi.c | 49 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) (limited to 'src') diff --git a/src/mm-broadband-modem-qmi.c b/src/mm-broadband-modem-qmi.c index 49b3e14b..1b516c69 100644 --- a/src/mm-broadband-modem-qmi.c +++ b/src/mm-broadband-modem-qmi.c @@ -2846,6 +2846,53 @@ create_sim (MMIfaceModem *self, user_data); } +/*****************************************************************************/ +/* Reset (Modem interface) */ + +static gboolean +modem_reset_finish (MMIfaceModem *self, + GAsyncResult *res, + GError **error) +{ + return !g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res), error); +} + + +static void +modem_reset_power_cycle_ready (MMBroadbandModemQmi *self, + GAsyncResult *res, + GSimpleAsyncResult *simple) +{ + GError *error = NULL; + + if (!power_cycle_finish (self, res, &error)) + g_simple_async_result_take_error (simple, error); + else + g_simple_async_result_set_op_res_gboolean (simple, TRUE); + + g_simple_async_result_complete (simple); + g_object_unref (simple); +} + + +static void +modem_reset (MMIfaceModem *self, + GAsyncReadyCallback callback, + gpointer user_data) +{ + GSimpleAsyncResult *result; + + result = g_simple_async_result_new (G_OBJECT (self), + callback, + user_data, + modem_reset); + + /* Power cycle the modem */ + power_cycle (MM_BROADBAND_MODEM_QMI (self), + (GAsyncReadyCallback)modem_reset_power_cycle_ready, + result); +} + /*****************************************************************************/ /* Factory reset (Modem interface) */ @@ -10939,6 +10986,8 @@ iface_modem_init (MMIfaceModem *iface) iface->create_bearer_finish = modem_create_bearer_finish; /* Other actions */ + iface->reset = modem_reset; + iface->reset_finish = modem_reset_finish; iface->factory_reset = modem_factory_reset; iface->factory_reset_finish = modem_factory_reset_finish; } -- cgit v1.2.3-70-g09d2