broadband-modem-qmi: implement power-cycle reset functionality

This commit is contained in:
Dan Williams
2015-11-11 12:38:49 -06:00
parent 4e00558fcb
commit 3129516736
+49
View File
@@ -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;
}