diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2021-03-24 16:11:16 +0100 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2021-04-02 15:05:02 +0200 |
commit | e6a04c0703571042624f3e07b02de368c17c1d96 (patch) | |
tree | dfbb40e3458a82f7f38f1965d5969d2049a3fcfc | |
parent | 7dfe6198e1015c3fcc875d7be17e6b1a925c8e00 (diff) |
iface-modem-3gpp-ussd: use common method to abort invocation if not enabled
-rw-r--r-- | src/mm-iface-modem-3gpp-ussd.c | 85 |
1 files changed, 24 insertions, 61 deletions
diff --git a/src/mm-iface-modem-3gpp-ussd.c b/src/mm-iface-modem-3gpp-ussd.c index e649a40f..33f49f0e 100644 --- a/src/mm-iface-modem-3gpp-ussd.c +++ b/src/mm-iface-modem-3gpp-ussd.c @@ -45,61 +45,6 @@ mm_iface_modem_3gpp_ussd_bind_simple_status (MMIfaceModem3gppUssd *self, /*****************************************************************************/ -static gboolean -ensure_enabled (MMBaseModem *self, - GError **error) -{ - MMModemState modem_state; - - modem_state = MM_MODEM_STATE_UNKNOWN; - g_object_get (self, - MM_IFACE_MODEM_STATE, &modem_state, - NULL); - - switch (modem_state) { - case MM_MODEM_STATE_FAILED: - case MM_MODEM_STATE_UNKNOWN: - case MM_MODEM_STATE_LOCKED: - /* We should never have such request (interface wasn't exported yet) */ - g_assert_not_reached (); - return FALSE; - - case MM_MODEM_STATE_INITIALIZING: - case MM_MODEM_STATE_ENABLING: - case MM_MODEM_STATE_DISABLED: - g_set_error (error, - MM_CORE_ERROR, - MM_CORE_ERROR_WRONG_STATE, - "Cannot perform USSD action: " - "device not enabled yet"); - return FALSE; - - case MM_MODEM_STATE_DISABLING: - g_set_error (error, - MM_CORE_ERROR, - MM_CORE_ERROR_WRONG_STATE, - "Cannot perform USSD action: " - "currently being disabled"); - return FALSE; - - case MM_MODEM_STATE_ENABLED: - case MM_MODEM_STATE_SEARCHING: - case MM_MODEM_STATE_REGISTERED: - case MM_MODEM_STATE_DISCONNECTING: - case MM_MODEM_STATE_CONNECTING: - case MM_MODEM_STATE_CONNECTED: - break; - - default: - g_assert_not_reached (); - return FALSE; - } - - return TRUE; -} - -/*****************************************************************************/ - typedef struct { MmGdbusModem3gppUssd *skeleton; GDBusMethodInvocation *invocation; @@ -137,13 +82,19 @@ handle_cancel_auth_ready (MMBaseModem *self, { GError *error = NULL; - if (!mm_base_modem_authorize_finish (self, res, &error) || - !ensure_enabled (self, &error)) { + if (!mm_base_modem_authorize_finish (self, res, &error)) { g_dbus_method_invocation_take_error (ctx->invocation, error); handle_cancel_context_free (ctx); return; } + if (mm_iface_modem_abort_invocation_if_state_not_reached (MM_IFACE_MODEM (self), + ctx->invocation, + MM_MODEM_STATE_ENABLED)) { + handle_cancel_context_free (ctx); + return; + } + g_assert (MM_IFACE_MODEM_3GPP_USSD_GET_INTERFACE (self)->cancel != NULL); g_assert (MM_IFACE_MODEM_3GPP_USSD_GET_INTERFACE (self)->cancel_finish != NULL); @@ -219,13 +170,19 @@ handle_respond_auth_ready (MMBaseModem *self, { GError *error = NULL; - if (!mm_base_modem_authorize_finish (self, res, &error) || - !ensure_enabled (self, &error)) { + if (!mm_base_modem_authorize_finish (self, res, &error)) { g_dbus_method_invocation_take_error (ctx->invocation, error); handle_respond_context_free (ctx); return; } + if (mm_iface_modem_abort_invocation_if_state_not_reached (MM_IFACE_MODEM (self), + ctx->invocation, + MM_MODEM_STATE_ENABLED)) { + handle_respond_context_free (ctx); + return; + } + g_assert (MM_IFACE_MODEM_3GPP_USSD_GET_INTERFACE (self)->send != NULL); g_assert (MM_IFACE_MODEM_3GPP_USSD_GET_INTERFACE (self)->send_finish != NULL); @@ -325,13 +282,19 @@ handle_initiate_auth_ready (MMBaseModem *self, { GError *error = NULL; - if (!mm_base_modem_authorize_finish (self, res, &error) || - !ensure_enabled (self, &error)) { + if (!mm_base_modem_authorize_finish (self, res, &error)) { g_dbus_method_invocation_take_error (ctx->invocation, error); handle_initiate_context_free (ctx); return; } + if (mm_iface_modem_abort_invocation_if_state_not_reached (MM_IFACE_MODEM (self), + ctx->invocation, + MM_MODEM_STATE_ENABLED)) { + handle_initiate_context_free (ctx); + return; + } + g_assert (MM_IFACE_MODEM_3GPP_USSD_GET_INTERFACE (self)->send != NULL); g_assert (MM_IFACE_MODEM_3GPP_USSD_GET_INTERFACE (self)->send_finish != NULL); |