sierra: custom power-down command for CDMA modems
This commit is contained in:
@@ -440,6 +440,62 @@ modem_create_bearer (MMIfaceModem *self,
|
|||||||
result);
|
result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/* Modem power down (Modem interface) */
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
modem_power_down_finish (MMIfaceModem *self,
|
||||||
|
GAsyncResult *res,
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
return !g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res), error);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
pcstate_disable_ready (MMBaseModem *self,
|
||||||
|
GAsyncResult *res,
|
||||||
|
GSimpleAsyncResult *simple)
|
||||||
|
{
|
||||||
|
/* Ignore errors for now; we're not sure if all Sierra CDMA devices support
|
||||||
|
* at!pcstate.
|
||||||
|
*/
|
||||||
|
mm_base_modem_at_command_finish (MM_BASE_MODEM (self), res, NULL);
|
||||||
|
|
||||||
|
g_simple_async_result_set_op_res_gboolean (simple, TRUE);
|
||||||
|
g_simple_async_result_complete (simple);
|
||||||
|
g_object_unref (simple);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
modem_power_down (MMIfaceModem *self,
|
||||||
|
GAsyncReadyCallback callback,
|
||||||
|
gpointer user_data)
|
||||||
|
{
|
||||||
|
GSimpleAsyncResult *result;
|
||||||
|
|
||||||
|
result = g_simple_async_result_new (G_OBJECT (self),
|
||||||
|
callback,
|
||||||
|
user_data,
|
||||||
|
mm_common_sierra_modem_power_up);
|
||||||
|
|
||||||
|
/* For CDMA modems, run !pcstate */
|
||||||
|
if (mm_iface_modem_is_cdma_only (self)) {
|
||||||
|
mm_base_modem_at_command (MM_BASE_MODEM (self),
|
||||||
|
"!pcstate=0",
|
||||||
|
5,
|
||||||
|
FALSE,
|
||||||
|
(GAsyncReadyCallback)pcstate_disable_ready,
|
||||||
|
result);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* For 3GPP modems we should call parent's power down, but there is no
|
||||||
|
* such power down command in MMBroadbandModem, so just finish here. */
|
||||||
|
g_simple_async_result_set_op_res_gboolean (result, TRUE);
|
||||||
|
g_simple_async_result_complete_in_idle (result);
|
||||||
|
g_object_unref (result);
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/* Setup ports (Broadband modem class) */
|
/* Setup ports (Broadband modem class) */
|
||||||
|
|
||||||
@@ -486,6 +542,8 @@ iface_modem_init (MMIfaceModem *iface)
|
|||||||
iface->load_access_technologies_finish = load_access_technologies_finish;
|
iface->load_access_technologies_finish = load_access_technologies_finish;
|
||||||
iface->modem_power_up = mm_common_sierra_modem_power_up;
|
iface->modem_power_up = mm_common_sierra_modem_power_up;
|
||||||
iface->modem_power_up_finish = mm_common_sierra_modem_power_up_finish;
|
iface->modem_power_up_finish = mm_common_sierra_modem_power_up_finish;
|
||||||
|
iface->modem_power_down = modem_power_down;
|
||||||
|
iface->modem_power_down_finish = modem_power_down_finish;
|
||||||
iface->create_sim = mm_common_sierra_create_sim;
|
iface->create_sim = mm_common_sierra_create_sim;
|
||||||
iface->create_sim_finish = mm_common_sierra_create_sim_finish;
|
iface->create_sim_finish = mm_common_sierra_create_sim_finish;
|
||||||
iface->create_bearer = modem_create_bearer;
|
iface->create_bearer = modem_create_bearer;
|
||||||
|
Reference in New Issue
Block a user