quectel: remove custom power operation synchronization logic

The power up and down operations are already synchronized at
interface level, so there is already a guarantee that they won't
happen at the same time.

For the reset and power off operations, it is assumed that the modem
will either reset or power off, so there should be no need to sync
those operations with others, as the modem object will eventually go
away altogether in both cases.
This commit is contained in:
Aleksander Morgado
2024-09-30 11:07:19 +00:00
parent a16ad2757d
commit 87dc3d36b4
2 changed files with 4 additions and 64 deletions
@@ -40,33 +40,6 @@ G_DEFINE_TYPE_EXTENDED (MMBroadbandModemQuectel, mm_broadband_modem_quectel, MM_
G_IMPLEMENT_INTERFACE (MM_TYPE_IFACE_MODEM_TIME, iface_modem_time_init)
G_IMPLEMENT_INTERFACE (MM_TYPE_SHARED_QUECTEL, shared_quectel_init))
struct _MMBroadbandModemQuectelPrivate {
/* Flag to specify whether a power operation is ongoing */
gboolean power_operation_ongoing;
};
/*****************************************************************************/
static gboolean
acquire_power_operation (MMBroadbandModemQuectel *self,
GError **error)
{
if (self->priv->power_operation_ongoing) {
g_set_error (error, MM_CORE_ERROR, MM_CORE_ERROR_RETRY,
"An operation which requires power updates is currently in progress");
return FALSE;
}
self->priv->power_operation_ongoing = TRUE;
return TRUE;
}
static void
release_power_operation (MMBroadbandModemQuectel *self)
{
g_assert (self->priv->power_operation_ongoing);
self->priv->power_operation_ongoing = FALSE;
}
/*****************************************************************************/
/* Power state loading (Modem interface) */
@@ -132,23 +105,7 @@ common_modem_power_operation_finish (MMIfaceModem *self,
GAsyncResult *res,
GError **error)
{
return g_task_propagate_boolean (G_TASK (res), error);
}
static void
power_operation_ready (MMBaseModem *self,
GAsyncResult *res,
GTask *task)
{
GError *error = NULL;
release_power_operation (MM_BROADBAND_MODEM_QUECTEL (self));
if (!mm_base_modem_at_command_finish (self, res, &error))
g_task_return_error (task, error);
else
g_task_return_boolean (task, TRUE);
g_object_unref (task);
return !!mm_base_modem_at_command_finish (MM_BASE_MODEM (self), res, error);
}
static void
@@ -157,24 +114,12 @@ common_modem_power_operation (MMBroadbandModemQuectel *self,
GAsyncReadyCallback callback,
gpointer user_data)
{
GTask *task;
GError *error = NULL;
task = g_task_new (self, NULL, callback, user_data);
/* Fail if there is already an ongoing power management operation */
if (!acquire_power_operation (self, &error)) {
g_task_return_error (task, error);
g_object_unref (task);
return;
}
mm_base_modem_at_command (MM_BASE_MODEM (self),
command,
30,
FALSE,
(GAsyncReadyCallback) power_operation_ready,
task);
callback,
user_data);
}
static void
@@ -236,9 +181,6 @@ mm_broadband_modem_quectel_new (const gchar *device,
static void
mm_broadband_modem_quectel_init (MMBroadbandModemQuectel *self)
{
self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
MM_TYPE_BROADBAND_MODEM_QUECTEL,
MMBroadbandModemQuectelPrivate);
}
static void
@@ -27,11 +27,9 @@
typedef struct _MMBroadbandModemQuectel MMBroadbandModemQuectel;
typedef struct _MMBroadbandModemQuectelClass MMBroadbandModemQuectelClass;
typedef struct _MMBroadbandModemQuectelPrivate MMBroadbandModemQuectelPrivate;
struct _MMBroadbandModemQuectel {
MMBroadbandModem parent;
MMBroadbandModemQuectelPrivate *priv;
MMBroadbandModem parent;
};
struct _MMBroadbandModemQuectelClass{