aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2021-03-24 16:11:16 +0100
committerAleksander Morgado <aleksander@aleksander.es>2021-04-02 15:05:02 +0200
commite6a04c0703571042624f3e07b02de368c17c1d96 (patch)
treedfbb40e3458a82f7f38f1965d5969d2049a3fcfc
parent7dfe6198e1015c3fcc875d7be17e6b1a925c8e00 (diff)
iface-modem-3gpp-ussd: use common method to abort invocation if not enabled
-rw-r--r--src/mm-iface-modem-3gpp-ussd.c85
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);