aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Williams <dan@ioncontrol.co>2025-04-29 20:54:36 -0500
committerDan Williams <dan@ioncontrol.co>2025-05-08 20:08:06 -0500
commitef5cee3ab578c2fde8ca6cc636f10acfdb79f123 (patch)
tree02510944a5782a9c4047234b747fdc02dd8f31c8
parent7262b46a82642b7232ef922b827d77626a93eec0 (diff)
auth-provider: move auth provider logic into each class
Rather than make all of them rely on MMBaseModem for it. This lets us disentangle dependencies for easier unit testing. For interfaces, rather than casting directly to MMBaseModem use intermediate interfaces (MMIfaceAuth and MMIfaceOpLock) that tests can fake out. Signed-off-by: Dan Williams <dan@ioncontrol.co>
-rw-r--r--src/meson.build37
-rw-r--r--src/mm-auth-provider.c37
-rw-r--r--src/mm-auth-provider.h35
-rw-r--r--src/mm-base-bearer.c51
-rw-r--r--src/mm-base-call.c151
-rw-r--r--src/mm-base-manager.c6
-rw-r--r--src/mm-base-modem.c175
-rw-r--r--src/mm-base-modem.h114
-rw-r--r--src/mm-base-sim.c81
-rw-r--r--src/mm-base-sms.c53
-rw-r--r--src/mm-device.c6
-rw-r--r--src/mm-iface-modem-3gpp-profile-manager.c18
-rw-r--r--src/mm-iface-modem-3gpp-ussd.c18
-rw-r--r--src/mm-iface-modem-3gpp.c91
-rw-r--r--src/mm-iface-modem-cdma.c14
-rw-r--r--src/mm-iface-modem-cell-broadcast.c15
-rw-r--r--src/mm-iface-modem-firmware.c14
-rw-r--r--src/mm-iface-modem-location.c35
-rw-r--r--src/mm-iface-modem-messaging.c25
-rw-r--r--src/mm-iface-modem-oma.c28
-rw-r--r--src/mm-iface-modem-sar.c14
-rw-r--r--src/mm-iface-modem-signal.c12
-rw-r--r--src/mm-iface-modem-simple.c16
-rw-r--r--src/mm-iface-modem-time.c11
-rw-r--r--src/mm-iface-modem-voice.c56
-rw-r--r--src/mm-iface-modem.c200
-rw-r--r--src/mm-iface-op-lock.c71
-rw-r--r--src/mm-iface-op-lock.h79
28 files changed, 873 insertions, 590 deletions
diff --git a/src/meson.build b/src/meson.build
index f2a53625..7516a6ee 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -206,10 +206,43 @@ libport_dep = declare_dependency(
link_with: libport,
)
+# auth provider library
+sources = files(
+ 'mm-auth-provider.c',
+ 'mm-context.c',
+)
+
+incs = [
+ top_inc,
+ kerneldevice_inc,
+]
+
+deps = [libmm_glib_dep, libhelpers_dep]
+
+if enable_polkit
+ deps += polkit_gobject_dep
+endif
+
+private_deps = []
+
+libauth = static_library(
+ 'auth',
+ sources: sources,
+ include_directories: incs,
+ dependencies: deps,
+ c_args: '-DPLUGINDIR="@0@"'.format(mm_prefix / mm_pkglibdir),
+)
+
+libauth_dep = declare_dependency(
+ include_directories: ['.', kerneldevice_inc],
+ dependencies: deps,
+ link_with: libauth,
+)
+
# Daemon enums, required by plugins
headers = files(
'mm-base-bearer.h',
- 'mm-base-modem.h',
+ 'mm-iface-op-lock.h',
'mm-filter.h',
'mm-port-probe.h',
)
@@ -292,6 +325,7 @@ sources = files(
'mm-iface-modem-simple.c',
'mm-iface-modem-time.c',
'mm-iface-modem-voice.c',
+ 'mm-iface-op-lock.c',
'mm-log-helpers.c',
'mm-plugin.c',
'mm-plugin-manager.c',
@@ -308,6 +342,7 @@ deps = [
gmodule_dep,
libport_dep,
libqcdm_dep,
+ libauth_dep,
]
if enable_tests
diff --git a/src/mm-auth-provider.c b/src/mm-auth-provider.c
index 38ec04d3..2455da30 100644
--- a/src/mm-auth-provider.c
+++ b/src/mm-auth-provider.c
@@ -226,3 +226,40 @@ mm_auth_provider_class_init (MMAuthProviderClass *class)
}
MM_DEFINE_SINGLETON_GETTER (MMAuthProvider, mm_auth_provider_get, MM_TYPE_AUTH_PROVIDER)
+
+/*****************************************************************************/
+/* Auth interface */
+
+G_DEFINE_INTERFACE (MMIfaceAuth, mm_iface_auth, G_TYPE_OBJECT)
+
+void
+mm_iface_auth_authorize (MMIfaceAuth *self,
+ GDBusMethodInvocation *invocation,
+ const gchar *authorization,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_assert (MM_IFACE_AUTH_GET_IFACE (self)->authorize != NULL);
+
+ MM_IFACE_AUTH_GET_IFACE (self)->authorize (self,
+ invocation,
+ authorization,
+ callback,
+ user_data);
+}
+
+gboolean
+mm_iface_auth_authorize_finish (MMIfaceAuth *self,
+ GAsyncResult *res,
+ GError **error)
+{
+ g_assert (MM_IFACE_AUTH_GET_IFACE (self)->authorize_finish != NULL);
+
+ return MM_IFACE_AUTH_GET_IFACE (self)->authorize_finish (self, res, error);
+}
+
+static void
+mm_iface_auth_default_init (MMIfaceAuthInterface *iface)
+{
+}
+
diff --git a/src/mm-auth-provider.h b/src/mm-auth-provider.h
index 6065c806..2167cd59 100644
--- a/src/mm-auth-provider.h
+++ b/src/mm-auth-provider.h
@@ -56,4 +56,39 @@ gboolean mm_auth_provider_authorize_finish (MMAuthProvider *self,
GAsyncResult *res,
GError **error);
+/*****************************************************************************/
+/* Auth interface
+ *
+ * Implemented by objects (mainly MMBaseModem) that provide authorization
+ * capability to other interfaces (MMIfaceModem) since GLib interfaces don't
+ * have private data to store the singletone.
+ */
+
+#define MM_TYPE_IFACE_AUTH mm_iface_auth_get_type ()
+G_DECLARE_INTERFACE (MMIfaceAuth, mm_iface_auth, MM, IFACE_AUTH, GObject)
+
+struct _MMIfaceAuthInterface {
+ GTypeInterface g_iface;
+
+ void (* authorize) (MMIfaceAuth *self,
+ GDBusMethodInvocation *invocation,
+ const gchar *authorization,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+ gboolean (* authorize_finish) (MMIfaceAuth *self,
+ GAsyncResult *res,
+ GError **error);
+};
+
+void mm_iface_auth_authorize (MMIfaceAuth *self,
+ GDBusMethodInvocation *invocation,
+ const gchar *authorization,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean mm_iface_auth_authorize_finish (MMIfaceAuth *self,
+ GAsyncResult *res,
+ GError **error);
+
#endif /* MM_AUTH_PROVIDER_H */
diff --git a/src/mm-base-bearer.c b/src/mm-base-bearer.c
index 52e8db02..3c7d2d99 100644
--- a/src/mm-base-bearer.c
+++ b/src/mm-base-bearer.c
@@ -41,6 +41,7 @@
#include "mm-error-helpers.h"
#include "mm-bearer-stats.h"
#include "mm-dispatcher-connection.h"
+#include "mm-auth-provider.h"
/* We require up to 20s to get a proper IP when using PPP */
#define BEARER_IP_TIMEOUT_DEFAULT 20
@@ -83,6 +84,10 @@ struct _MMBaseBearerPrivate {
GDBusConnection *connection;
guint dbus_id;
+ /* The authorization provider */
+ MMAuthProvider *authp;
+ GCancellable *authp_cancellable;
+
/* The modem which owns this BEARER */
MMBaseModem *modem;
/* The path where the BEARER object is exported */
@@ -1118,7 +1123,6 @@ mm_base_bearer_connect (MMBaseBearer *self,
typedef struct {
MMBaseBearer *self;
- MMBaseModem *modem;
GDBusMethodInvocation *invocation;
} HandleConnectContext;
@@ -1126,7 +1130,6 @@ static void
handle_connect_context_free (HandleConnectContext *ctx)
{
g_object_unref (ctx->invocation);
- g_object_unref (ctx->modem);
g_object_unref (ctx->self);
g_free (ctx);
}
@@ -1147,13 +1150,13 @@ handle_connect_ready (MMBaseBearer *self,
}
static void
-handle_connect_auth_ready (MMBaseModem *modem,
+handle_connect_auth_ready (MMAuthProvider *authp,
GAsyncResult *res,
HandleConnectContext *ctx)
{
GError *error = NULL;
- if (!mm_base_modem_authorize_finish (modem, res, &error)) {
+ if (!mm_auth_provider_authorize_finish (authp, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_connect_context_free (ctx);
return;
@@ -1174,15 +1177,13 @@ handle_connect (MMBaseBearer *self,
ctx = g_new0 (HandleConnectContext, 1);
ctx->self = g_object_ref (self);
ctx->invocation = g_object_ref (invocation);
- g_object_get (self,
- MM_BASE_BEARER_MODEM, &ctx->modem,
- NULL);
- mm_base_modem_authorize (ctx->modem,
- invocation,
- MM_AUTHORIZATION_DEVICE_CONTROL,
- (GAsyncReadyCallback)handle_connect_auth_ready,
- ctx);
+ mm_auth_provider_authorize (self->priv->authp,
+ invocation,
+ MM_AUTHORIZATION_DEVICE_CONTROL,
+ self->priv->authp_cancellable,
+ (GAsyncReadyCallback)handle_connect_auth_ready,
+ ctx);
return TRUE;
}
@@ -1307,7 +1308,6 @@ mm_base_bearer_disconnect (MMBaseBearer *self,
typedef struct {
MMBaseBearer *self;
- MMBaseModem *modem;
GDBusMethodInvocation *invocation;
} HandleDisconnectContext;
@@ -1315,7 +1315,6 @@ static void
handle_disconnect_context_free (HandleDisconnectContext *ctx)
{
g_object_unref (ctx->invocation);
- g_object_unref (ctx->modem);
g_object_unref (ctx->self);
g_free (ctx);
}
@@ -1336,13 +1335,13 @@ handle_disconnect_ready (MMBaseBearer *self,
}
static void
-handle_disconnect_auth_ready (MMBaseModem *modem,
+handle_disconnect_auth_ready (MMAuthProvider *authp,
GAsyncResult *res,
HandleDisconnectContext *ctx)
{
GError *error = NULL;
- if (!mm_base_modem_authorize_finish (modem, res, &error)) {
+ if (!mm_auth_provider_authorize_finish (authp, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_disconnect_context_free (ctx);
return;
@@ -1363,15 +1362,13 @@ handle_disconnect (MMBaseBearer *self,
ctx = g_new0 (HandleDisconnectContext, 1);
ctx->self = g_object_ref (self);
ctx->invocation = g_object_ref (invocation);
- g_object_get (self,
- MM_BASE_BEARER_MODEM, &ctx->modem,
- NULL);
- mm_base_modem_authorize (ctx->modem,
- invocation,
- MM_AUTHORIZATION_DEVICE_CONTROL,
- (GAsyncReadyCallback)handle_disconnect_auth_ready,
- ctx);
+ mm_auth_provider_authorize (self->priv->authp,
+ invocation,
+ MM_AUTHORIZATION_DEVICE_CONTROL,
+ self->priv->authp_cancellable,
+ (GAsyncReadyCallback)handle_disconnect_auth_ready,
+ ctx);
return TRUE;
}
@@ -1835,6 +1832,10 @@ mm_base_bearer_init (MMBaseBearer *self)
/* Each bearer is given a unique id to build its own DBus path */
self->priv->dbus_id = id++;
+ /* Setup authorization provider */
+ self->priv->authp = mm_auth_provider_get ();
+ self->priv->authp_cancellable = g_cancellable_new ();
+
self->priv->status = MM_BEARER_STATUS_DISCONNECTED;
self->priv->reason_3gpp = CONNECTION_FORBIDDEN_REASON_NONE;
self->priv->reason_cdma = CONNECTION_FORBIDDEN_REASON_NONE;
@@ -1886,6 +1887,8 @@ dispose (GObject *object)
g_clear_object (&self->priv->modem);
g_clear_object (&self->priv->config);
+ g_cancellable_cancel (self->priv->authp_cancellable);
+ g_clear_object (&self->priv->authp_cancellable);
G_OBJECT_CLASS (mm_base_bearer_parent_class)->dispose (object);
}
diff --git a/src/mm-base-call.c b/src/mm-base-call.c
index ab77a564..c1408559 100644
--- a/src/mm-base-call.c
+++ b/src/mm-base-call.c
@@ -59,6 +59,10 @@ struct _MMBaseCallPrivate {
GDBusConnection *connection;
guint dbus_id;
+ /* The authorization provider */
+ MMAuthProvider *authp;
+ GCancellable *authp_cancellable;
+
/* The modem which owns this call */
MMBaseModem *modem;
/* The path where the call object is exported */
@@ -139,7 +143,6 @@ mm_base_call_change_audio_settings (MMBaseCall *self,
typedef struct {
MMBaseCall *self;
- MMBaseModem *modem;
GDBusMethodInvocation *invocation;
} HandleStartContext;
@@ -147,7 +150,6 @@ static void
handle_start_context_free (HandleStartContext *ctx)
{
g_object_unref (ctx->invocation);
- g_object_unref (ctx->modem);
g_object_unref (ctx->self);
g_free (ctx);
}
@@ -203,14 +205,14 @@ handle_start_ready (MMBaseCall *self,
}
static void
-handle_start_auth_ready (MMBaseModem *modem,
+handle_start_auth_ready (MMAuthProvider *authp,
GAsyncResult *res,
HandleStartContext *ctx)
{
MMCallState state;
GError *error = NULL;
- if (!mm_base_modem_authorize_finish (modem, res, &error)) {
+ if (!mm_auth_provider_authorize_finish (authp, res, &error)) {
mm_base_call_change_state (ctx->self, MM_CALL_STATE_TERMINATED, MM_CALL_STATE_REASON_UNKNOWN);
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_start_context_free (ctx);
@@ -230,7 +232,7 @@ handle_start_auth_ready (MMBaseModem *modem,
mm_obj_info (ctx->self, "processing user request to start voice call...");
/* Disallow non-emergency calls when in emergency-only state */
- if (!mm_iface_modem_voice_authorize_outgoing_call (MM_IFACE_MODEM_VOICE (modem), ctx->self, &error)) {
+ if (!mm_iface_modem_voice_authorize_outgoing_call (MM_IFACE_MODEM_VOICE (ctx->self->priv->modem), ctx->self, &error)) {
mm_base_call_change_state (ctx->self, MM_CALL_STATE_TERMINATED, MM_CALL_STATE_REASON_UNKNOWN);
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_start_context_free (ctx);
@@ -268,15 +270,13 @@ handle_start (MMBaseCall *self,
ctx = g_new0 (HandleStartContext, 1);
ctx->self = g_object_ref (self);
ctx->invocation = g_object_ref (invocation);
- g_object_get (self,
- MM_BASE_CALL_MODEM, &ctx->modem,
- NULL);
- mm_base_modem_authorize (ctx->modem,
- invocation,
- MM_AUTHORIZATION_VOICE,
- (GAsyncReadyCallback)handle_start_auth_ready,
- ctx);
+ mm_auth_provider_authorize (self->priv->authp,
+ invocation,
+ MM_AUTHORIZATION_VOICE,
+ self->priv->authp_cancellable,
+ (GAsyncReadyCallback)handle_start_auth_ready,
+ ctx);
return TRUE;
}
@@ -285,7 +285,6 @@ handle_start (MMBaseCall *self,
typedef struct {
MMBaseCall *self;
- MMBaseModem *modem;
GDBusMethodInvocation *invocation;
} HandleAcceptContext;
@@ -293,7 +292,6 @@ static void
handle_accept_context_free (HandleAcceptContext *ctx)
{
g_object_unref (ctx->invocation);
- g_object_unref (ctx->modem);
g_object_unref (ctx->self);
g_free (ctx);
}
@@ -324,14 +322,14 @@ handle_accept_ready (MMBaseCall *self,
}
static void
-handle_accept_auth_ready (MMBaseModem *modem,
+handle_accept_auth_ready (MMAuthProvider *authp,
GAsyncResult *res,
HandleAcceptContext *ctx)
{
MMCallState state;
GError *error = NULL;
- if (!mm_base_modem_authorize_finish (modem, res, &error)) {
+ if (!mm_auth_provider_authorize_finish (authp, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_accept_context_free (ctx);
return;
@@ -372,13 +370,11 @@ handle_accept (MMBaseCall *self,
ctx = g_new0 (HandleAcceptContext, 1);
ctx->self = g_object_ref (self);
ctx->invocation = g_object_ref (invocation);
- g_object_get (self,
- MM_BASE_CALL_MODEM, &ctx->modem,
- NULL);
- mm_base_modem_authorize (ctx->modem,
+ mm_auth_provider_authorize (self->priv->authp,
invocation,
MM_AUTHORIZATION_VOICE,
+ self->priv->authp_cancellable,
(GAsyncReadyCallback)handle_accept_auth_ready,
ctx);
return TRUE;
@@ -389,7 +385,6 @@ handle_accept (MMBaseCall *self,
typedef struct {
MMBaseCall *self;
- MMBaseModem *modem;
GDBusMethodInvocation *invocation;
gchar *number;
} HandleDeflectContext;
@@ -399,7 +394,6 @@ handle_deflect_context_free (HandleDeflectContext *ctx)
{
g_free (ctx->number);
g_object_unref (ctx->invocation);
- g_object_unref (ctx->modem);
g_object_unref (ctx->self);
g_slice_free (HandleDeflectContext, ctx);
}
@@ -425,14 +419,14 @@ handle_deflect_ready (MMBaseCall *self,
}
static void
-handle_deflect_auth_ready (MMBaseModem *modem,
+handle_deflect_auth_ready (MMAuthProvider *authp,
GAsyncResult *res,
HandleDeflectContext *ctx)
{
MMCallState state;
GError *error = NULL;
- if (!mm_base_modem_authorize_finish (modem, res, &error)) {
+ if (!mm_auth_provider_authorize_finish (authp, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_deflect_context_free (ctx);
return;
@@ -475,15 +469,13 @@ handle_deflect (MMBaseCall *self,
ctx->self = g_object_ref (self);
ctx->invocation = g_object_ref (invocation);
ctx->number = g_strdup (number);
- g_object_get (self,
- MM_BASE_CALL_MODEM, &ctx->modem,
- NULL);
- mm_base_modem_authorize (ctx->modem,
- invocation,
- MM_AUTHORIZATION_VOICE,
- (GAsyncReadyCallback)handle_deflect_auth_ready,
- ctx);
+ mm_auth_provider_authorize (self->priv->authp,
+ invocation,
+ MM_AUTHORIZATION_VOICE,
+ self->priv->authp_cancellable,
+ (GAsyncReadyCallback)handle_deflect_auth_ready,
+ ctx);
return TRUE;
}
@@ -492,7 +484,6 @@ handle_deflect (MMBaseCall *self,
typedef struct {
MMBaseCall *self;
- MMBaseModem *modem;
GDBusMethodInvocation *invocation;
} HandleJoinMultipartyContext;
@@ -500,7 +491,6 @@ static void
handle_join_multiparty_context_free (HandleJoinMultipartyContext *ctx)
{
g_object_unref (ctx->invocation);
- g_object_unref (ctx->modem);
g_object_unref (ctx->self);
g_free (ctx);
}
@@ -520,13 +510,13 @@ modem_voice_join_multiparty_ready (MMIfaceModemVoice *modem,
}
static void
-handle_join_multiparty_auth_ready (MMBaseModem *modem,
- GAsyncResult *res,
+handle_join_multiparty_auth_ready (MMAuthProvider *authp,
+ GAsyncResult *res,
HandleJoinMultipartyContext *ctx)
{
GError *error = NULL;
- if (!mm_base_modem_authorize_finish (modem, res, &error)) {
+ if (!mm_auth_provider_authorize_finish (authp, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_join_multiparty_context_free (ctx);
return;
@@ -537,7 +527,7 @@ handle_join_multiparty_auth_ready (MMBaseModem *modem,
/* This action is provided in the Call API, but implemented in the Modem.Voice interface
* logic, because the action affects not only one call object, but all call objects that
* are part of the multiparty call. */
- mm_iface_modem_voice_join_multiparty (MM_IFACE_MODEM_VOICE (ctx->modem),
+ mm_iface_modem_voice_join_multiparty (MM_IFACE_MODEM_VOICE (ctx->self->priv->modem),
ctx->self,
(GAsyncReadyCallback)modem_voice_join_multiparty_ready,
ctx);
@@ -552,15 +542,13 @@ handle_join_multiparty (MMBaseCall *self,
ctx = g_new0 (HandleJoinMultipartyContext, 1);
ctx->self = g_object_ref (self);
ctx->invocation = g_object_ref (invocation);
- g_object_get (self,
- MM_BASE_CALL_MODEM, &ctx->modem,
- NULL);
- mm_base_modem_authorize (ctx->modem,
- invocation,
- MM_AUTHORIZATION_VOICE,
- (GAsyncReadyCallback)handle_join_multiparty_auth_ready,
- ctx);
+ mm_auth_provider_authorize (self->priv->authp,
+ invocation,
+ MM_AUTHORIZATION_VOICE,
+ self->priv->authp_cancellable,
+ (GAsyncReadyCallback)handle_join_multiparty_auth_ready,
+ ctx);
return TRUE;
}
@@ -569,7 +557,6 @@ handle_join_multiparty (MMBaseCall *self,
typedef struct {
MMBaseCall *self;
- MMBaseModem *modem;
GDBusMethodInvocation *invocation;
} HandleLeaveMultipartyContext;
@@ -577,7 +564,6 @@ static void
handle_leave_multiparty_context_free (HandleLeaveMultipartyContext *ctx)
{
g_object_unref (ctx->invocation);
- g_object_unref (ctx->modem);
g_object_unref (ctx->self);
g_free (ctx);
}
@@ -598,13 +584,13 @@ modem_voice_leave_multiparty_ready (MMIfaceModemVoice *modem,
}
static void
-handle_leave_multiparty_auth_ready (MMBaseModem *modem,
+handle_leave_multiparty_auth_ready (MMAuthProvider *authp,
GAsyncResult *res,
HandleLeaveMultipartyContext *ctx)
{
GError *error = NULL;
- if (!mm_base_modem_authorize_finish (modem, res, &error)) {
+ if (!mm_auth_provider_authorize_finish (authp, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_leave_multiparty_context_free (ctx);
return;
@@ -615,7 +601,7 @@ handle_leave_multiparty_auth_ready (MMBaseModem *modem,
/* This action is provided in the Call API, but implemented in the Modem.Voice interface
* logic, because the action affects not only one call object, but all call objects that
* are part of the multiparty call. */
- mm_iface_modem_voice_leave_multiparty (MM_IFACE_MODEM_VOICE (ctx->modem),
+ mm_iface_modem_voice_leave_multiparty (MM_IFACE_MODEM_VOICE (ctx->self->priv->modem),
ctx->self,
(GAsyncReadyCallback)modem_voice_leave_multiparty_ready,
ctx);
@@ -630,15 +616,13 @@ handle_leave_multiparty (MMBaseCall *self,
ctx = g_new0 (HandleLeaveMultipartyContext, 1);
ctx->self = g_object_ref (self);
ctx->invocation = g_object_ref (invocation);
- g_object_get (self,
- MM_BASE_CALL_MODEM, &ctx->modem,
- NULL);
- mm_base_modem_authorize (ctx->modem,
- invocation,
- MM_AUTHORIZATION_VOICE,
- (GAsyncReadyCallback)handle_leave_multiparty_auth_ready,
- ctx);
+ mm_auth_provider_authorize (self->priv->authp,
+ invocation,
+ MM_AUTHORIZATION_VOICE,
+ self->priv->authp_cancellable,
+ (GAsyncReadyCallback)handle_leave_multiparty_auth_ready,
+ ctx);
return TRUE;
}
@@ -647,7 +631,6 @@ handle_leave_multiparty (MMBaseCall *self,
typedef struct {
MMBaseCall *self;
- MMBaseModem *modem;
GDBusMethodInvocation *invocation;
} HandleHangupContext;
@@ -655,7 +638,6 @@ static void
handle_hangup_context_free (HandleHangupContext *ctx)
{
g_object_unref (ctx->invocation);
- g_object_unref (ctx->modem);
g_object_unref (ctx->self);
g_free (ctx);
}
@@ -681,14 +663,14 @@ handle_hangup_ready (MMBaseCall *self,
}
static void
-handle_hangup_auth_ready (MMBaseModem *modem,
+handle_hangup_auth_ready (MMAuthProvider *authp,
GAsyncResult *res,
HandleHangupContext *ctx)
{
MMCallState state;
GError *error = NULL;
- if (!mm_base_modem_authorize_finish (modem, res, &error)) {
+ if (!mm_auth_provider_authorize_finish (authp, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_hangup_context_free (ctx);
return;
@@ -728,15 +710,13 @@ handle_hangup (MMBaseCall *self,
ctx = g_new0 (HandleHangupContext, 1);
ctx->self = g_object_ref (self);
ctx->invocation = g_object_ref (invocation);
- g_object_get (self,
- MM_BASE_CALL_MODEM, &ctx->modem,
- NULL);
- mm_base_modem_authorize (ctx->modem,
- invocation,
- MM_AUTHORIZATION_VOICE,
- (GAsyncReadyCallback)handle_hangup_auth_ready,
- ctx);
+ mm_auth_provider_authorize (self->priv->authp,
+ invocation,
+ MM_AUTHORIZATION_VOICE,
+ self->priv->authp_cancellable,
+ (GAsyncReadyCallback)handle_hangup_auth_ready,
+ ctx);
return TRUE;
}
@@ -745,7 +725,6 @@ handle_hangup (MMBaseCall *self,
typedef struct {
MMBaseCall *self;
- MMBaseModem *modem;
GDBusMethodInvocation *invocation;
gchar *dtmf;
} HandleSendDtmfContext;
@@ -754,7 +733,6 @@ static void
handle_send_dtmf_context_free (HandleSendDtmfContext *ctx)
{
g_object_unref (ctx->invocation);
- g_object_unref (ctx->modem);
g_object_unref (ctx->self);
g_free (ctx->dtmf);
g_free (ctx);
@@ -777,14 +755,14 @@ handle_send_dtmf_ready (MMBaseCall *self,
}
static void
-handle_send_dtmf_auth_ready (MMBaseModem *modem,
+handle_send_dtmf_auth_ready (MMAuthProvider *authp,
GAsyncResult *res,
HandleSendDtmfContext *ctx)
{
MMCallState state;
GError *error = NULL;
- if (!mm_base_modem_authorize_finish (modem, res, &error)) {
+ if (!mm_auth_provider_authorize_finish (authp, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_send_dtmf_context_free (ctx);
return;
@@ -825,17 +803,14 @@ handle_send_dtmf (MMBaseCall *self,
ctx = g_new0 (HandleSendDtmfContext, 1);
ctx->self = g_object_ref (self);
ctx->invocation = g_object_ref (invocation);
-
ctx->dtmf = g_strdup (dtmf);
- g_object_get (self,
- MM_BASE_CALL_MODEM, &ctx->modem,
- NULL);
- mm_base_modem_authorize (ctx->modem,
- invocation,
- MM_AUTHORIZATION_VOICE,
- (GAsyncReadyCallback)handle_send_dtmf_auth_ready,
- ctx);
+ mm_auth_provider_authorize (self->priv->authp,
+ invocation,
+ MM_AUTHORIZATION_VOICE,
+ self->priv->authp_cancellable,
+ (GAsyncReadyCallback)handle_send_dtmf_auth_ready,
+ ctx);
return TRUE;
}
@@ -1447,6 +1422,10 @@ mm_base_call_init (MMBaseCall *self)
/* Each call is given a unique id to build its own DBus path */
self->priv->dbus_id = id++;
+
+ /* Setup authorization provider */
+ self->priv->authp = mm_auth_provider_get ();
+ self->priv->authp_cancellable = g_cancellable_new ();
}
static void
@@ -1480,6 +1459,8 @@ dispose (GObject *object)
}
g_clear_object (&self->priv->modem);
+ g_cancellable_cancel (self->priv->authp_cancellable);
+ g_clear_object (&self->priv->authp_cancellable);
G_OBJECT_CLASS (mm_base_call_parent_class)->dispose (object);
}
diff --git a/src/mm-base-manager.c b/src/mm-base-manager.c
index f473ef2a..3110c2a7 100644
--- a/src/mm-base-manager.c
+++ b/src/mm-base-manager.c
@@ -992,8 +992,8 @@ device_shutdown_step (GTask *task)
"disabling modem%d",
mm_base_modem_get_dbus_id (ctx->modem));
mm_base_modem_disable (ctx->modem,
- MM_BASE_MODEM_OPERATION_LOCK_REQUIRED,
- MM_BASE_MODEM_OPERATION_PRIORITY_OVERRIDE,
+ MM_OPERATION_LOCK_REQUIRED,
+ MM_OPERATION_PRIORITY_OVERRIDE,
(GAsyncReadyCallback)shutdown_disable_ready,
task);
return;
@@ -1228,7 +1228,7 @@ mm_base_manager_sync (MMBaseManager *self)
/* We just want to start the synchronization, we don't need the result */
if (modem) {
mm_base_modem_sync (modem,
- MM_BASE_MODEM_OPERATION_LOCK_REQUIRED,
+ MM_OPERATION_LOCK_REQUIRED,
(GAsyncReadyCallback)base_modem_sync_ready,
NULL);
}
diff --git a/src/mm-base-modem.c b/src/mm-base-modem.c
index 6bf5b68d..2e4337fe 100644
--- a/src/mm-base-modem.c
+++ b/src/mm-base-modem.c
@@ -41,9 +41,13 @@
#include "mm-modem-helpers.h"
static void log_object_iface_init (MMLogObjectInterface *iface);
+static void auth_iface_init (MMIfaceAuthInterface *iface);
+static void op_lock_iface_init (MMIfaceOpLockInterface *iface);
G_DEFINE_ABSTRACT_TYPE_WITH_CODE (MMBaseModem, mm_base_modem, MM_GDBUS_TYPE_OBJECT_SKELETON,
- G_IMPLEMENT_INTERFACE (MM_TYPE_LOG_OBJECT, log_object_iface_init))
+ G_IMPLEMENT_INTERFACE (MM_TYPE_LOG_OBJECT, log_object_iface_init)
+ G_IMPLEMENT_INTERFACE (MM_TYPE_IFACE_AUTH, auth_iface_init)
+ G_IMPLEMENT_INTERFACE (MM_TYPE_IFACE_OP_LOCK, op_lock_iface_init))
/* If we get 10 consecutive timeouts in a serial port, we consider the modem
* invalid and we request re-probing. */
@@ -150,6 +154,16 @@ struct _MMBaseModemPrivate {
gboolean scheduled_operations_forbidden_forever;
};
+static void mm_base_modem_operation_lock (MMBaseModem *self,
+ MMOperationPriority priority,
+ const gchar *description,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+static gssize mm_base_modem_operation_lock_finish (MMBaseModem *self,
+ GAsyncResult *res,
+ GError **error);
+
+
guint
mm_base_modem_get_dbus_id (MMBaseModem *self)
{
@@ -774,7 +788,7 @@ state_operation_ready (MMBaseModem *self,
ctx = g_task_get_task_data (task);
if (ctx->operation_id >= 0) {
- mm_base_modem_operation_unlock (self, ctx->operation_id);
+ mm_iface_op_lock_unlock (MM_IFACE_OP_LOCK (self), ctx->operation_id);
ctx->operation_id = (gssize) -1;
}
@@ -821,12 +835,12 @@ lock_before_state_operation_ready (MMBaseModem *self,
}
static void
-state_operation (MMBaseModem *self,
- StateOperationType operation_type,
- MMBaseModemOperationLock operation_lock,
- MMBaseModemOperationPriority operation_priority,
- GAsyncReadyCallback callback,
- gpointer user_data)
+state_operation (MMBaseModem *self,
+ StateOperationType operation_type,
+ MMOperationLock operation_lock,
+ MMOperationPriority operation_priority,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
{
GTask *task;
StateOperationContext *ctx;
@@ -878,12 +892,12 @@ state_operation (MMBaseModem *self,
}
g_assert (ctx->operation && ctx->operation_finish);
- if (operation_lock == MM_BASE_MODEM_OPERATION_LOCK_ALREADY_ACQUIRED) {
+ if (operation_lock == MM_OPERATION_LOCK_ALREADY_ACQUIRED) {
state_operation_run (task);
return;
}
- g_assert (operation_lock == MM_BASE_MODEM_OPERATION_LOCK_REQUIRED);
+ g_assert (operation_lock == MM_OPERATION_LOCK_REQUIRED);
mm_base_modem_operation_lock (self,
operation_priority,
operation_description,
@@ -905,14 +919,14 @@ mm_base_modem_sync_finish (MMBaseModem *self,
void
mm_base_modem_sync (MMBaseModem *self,
- MMBaseModemOperationLock operation_lock,
- GAsyncReadyCallback callback,
- gpointer user_data)
+ MMOperationLock operation_lock,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
{
state_operation (self,
STATE_OPERATION_TYPE_SYNC,
operation_lock,
- MM_BASE_MODEM_OPERATION_PRIORITY_DEFAULT,
+ MM_OPERATION_PRIORITY_DEFAULT,
callback,
user_data);
}
@@ -930,11 +944,11 @@ mm_base_modem_disable_finish (MMBaseModem *self,
}
void
-mm_base_modem_disable (MMBaseModem *self,
- MMBaseModemOperationLock operation_lock,
- MMBaseModemOperationPriority operation_priority,
- GAsyncReadyCallback callback,
- gpointer user_data)
+mm_base_modem_disable (MMBaseModem *self,
+ MMOperationLock operation_lock,
+ MMOperationPriority operation_priority,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
{
state_operation (self,
STATE_OPERATION_TYPE_DISABLE,
@@ -955,15 +969,15 @@ mm_base_modem_enable_finish (MMBaseModem *self,
}
void
-mm_base_modem_enable (MMBaseModem *self,
- MMBaseModemOperationLock operation_lock,
- GAsyncReadyCallback callback,
- gpointer user_data)
+mm_base_modem_enable (MMBaseModem *self,
+ MMOperationLock operation_lock,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
{
state_operation (self,
STATE_OPERATION_TYPE_ENABLE,
operation_lock,
- MM_BASE_MODEM_OPERATION_PRIORITY_DEFAULT,
+ MM_OPERATION_PRIORITY_DEFAULT,
callback,
user_data);
}
@@ -979,15 +993,15 @@ mm_base_modem_initialize_finish (MMBaseModem *self,
}
void
-mm_base_modem_initialize (MMBaseModem *self,
- MMBaseModemOperationLock operation_lock,
- GAsyncReadyCallback callback,
- gpointer user_data)
+mm_base_modem_initialize (MMBaseModem *self,
+ MMOperationLock operation_lock,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
{
state_operation (self,
STATE_OPERATION_TYPE_INITIALIZE,
operation_lock,
- MM_BASE_MODEM_OPERATION_PRIORITY_DEFAULT,
+ MM_OPERATION_PRIORITY_DEFAULT,
callback,
user_data);
}
@@ -1775,8 +1789,8 @@ mm_base_modem_organize_ports (MMBaseModem *self,
/*****************************************************************************/
/* Authorization */
-gboolean
-mm_base_modem_authorize_finish (MMBaseModem *self,
+static gboolean
+mm_base_modem_authorize_finish (MMIfaceAuth *auth,
GAsyncResult *res,
GError **error)
{
@@ -1798,14 +1812,15 @@ authorize_ready (MMAuthProvider *authp,
g_object_unref (task);
}
-void
-mm_base_modem_authorize (MMBaseModem *self,
+static void
+mm_base_modem_authorize (MMIfaceAuth *auth,
GDBusMethodInvocation *invocation,
const gchar *authorization,
GAsyncReadyCallback callback,
gpointer user_data)
{
- GTask *task;
+ MMBaseModem *self = MM_BASE_MODEM (auth);
+ GTask *task;
task = g_task_new (self, self->priv->authp_cancellable, callback, user_data);
@@ -1821,10 +1836,10 @@ mm_base_modem_authorize (MMBaseModem *self,
/* Exclusive operation */
typedef struct {
- gssize id;
- MMBaseModemOperationPriority priority;
- gchar *description;
- GTask *wait_task;
+ gssize id;
+ MMOperationPriority priority;
+ gchar *description;
+ GTask *wait_task;
} OperationInfo;
static void
@@ -1837,7 +1852,7 @@ operation_info_free (OperationInfo *info)
/* Exclusive operation lock */
-gssize
+static gssize
mm_base_modem_operation_lock_finish (MMBaseModem *self,
GAsyncResult *res,
GError **error)
@@ -1862,7 +1877,7 @@ base_modem_operation_run (MMBaseModem *self)
/* Run the operation in head of the list */
mm_obj_dbg (self, "[operation %" G_GSSIZE_FORMAT "] %s - %s: lock acquired",
info->id,
- mm_base_modem_operation_priority_get_string (info->priority),
+ mm_operation_priority_get_string (info->priority),
info->description);
task = g_steal_pointer (&info->wait_task);
g_task_return_int (task, info->id);
@@ -1905,7 +1920,7 @@ abort_pending_operations (MMBaseModem *self)
g_assert (info->wait_task);
mm_obj_dbg (self, "[operation %" G_GSSIZE_FORMAT "] %s - %s: aborted early",
info->id,
- mm_base_modem_operation_priority_get_string (info->priority),
+ mm_operation_priority_get_string (info->priority),
info->description);
task = g_steal_pointer (&info->wait_task);
@@ -1918,12 +1933,12 @@ abort_pending_operations (MMBaseModem *self)
self->priv->scheduled_operations = head;
}
-void
-mm_base_modem_operation_lock (MMBaseModem *self,
- MMBaseModemOperationPriority priority,
- const gchar *description,
- GAsyncReadyCallback callback,
- gpointer user_data)
+static void
+mm_base_modem_operation_lock (MMBaseModem *self,
+ MMOperationPriority priority,
+ const gchar *description,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
{
GTask *task;
OperationInfo *info;
@@ -1950,19 +1965,19 @@ mm_base_modem_operation_lock (MMBaseModem *self,
} else
operation_id++;
- if (info->priority == MM_BASE_MODEM_OPERATION_PRIORITY_OVERRIDE) {
+ if (info->priority == MM_OPERATION_PRIORITY_OVERRIDE) {
mm_obj_dbg (self, "[operation %" G_GSSIZE_FORMAT "] %s - %s: override requested - no new operations will be allowed",
info->id,
- mm_base_modem_operation_priority_get_string (info->priority),
+ mm_operation_priority_get_string (info->priority),
info->description);
g_assert (!self->priv->scheduled_operations_forbidden_forever);
self->priv->scheduled_operations_forbidden_forever = TRUE;
abort_pending_operations (self);
self->priv->scheduled_operations = g_list_append (self->priv->scheduled_operations, info);
- } else if (info->priority == MM_BASE_MODEM_OPERATION_PRIORITY_DEFAULT) {
+ } else if (info->priority == MM_OPERATION_PRIORITY_DEFAULT) {
mm_obj_dbg (self, "[operation %" G_GSSIZE_FORMAT "] %s - %s: scheduled",
info->id,
- mm_base_modem_operation_priority_get_string (info->priority),
+ mm_operation_priority_get_string (info->priority),
info->description);
self->priv->scheduled_operations = g_list_append (self->priv->scheduled_operations, info);
} else
@@ -1973,10 +1988,11 @@ mm_base_modem_operation_lock (MMBaseModem *self,
/* Exclusive operation unlock */
-void
-mm_base_modem_operation_unlock (MMBaseModem *self,
- gssize operation_id)
+static void
+mm_base_modem_operation_unlock (MMIfaceOpLock *_self,
+ gssize operation_id)
{
+ MMBaseModem *self = MM_BASE_MODEM (_self);
OperationInfo *info;
g_assert (self->priv->scheduled_operations);
@@ -1987,7 +2003,7 @@ mm_base_modem_operation_unlock (MMBaseModem *self,
mm_obj_dbg (self, "[operation %" G_GSSIZE_FORMAT "] %s - %s: lock released",
info->id,
- mm_base_modem_operation_priority_get_string (info->priority),
+ mm_operation_priority_get_string (info->priority),
info->description);
/* Remove head list item and free its contents */
@@ -2002,9 +2018,9 @@ mm_base_modem_operation_unlock (MMBaseModem *self,
/*****************************************************************************/
typedef struct {
- GDBusMethodInvocation *invocation;
- MMBaseModemOperationPriority operation_priority;
- gchar *operation_description;
+ GDBusMethodInvocation *invocation;
+ MMOperationPriority operation_priority;
+ gchar *operation_description;
} AuthorizeAndOperationLockContext;
static void
@@ -2015,8 +2031,8 @@ authorize_and_operation_lock_context_free (AuthorizeAndOperationLockContext *ctx
g_slice_free (AuthorizeAndOperationLockContext, ctx);
}
-gssize
-mm_base_modem_authorize_and_operation_lock_finish (MMBaseModem *self,
+static gssize
+mm_base_modem_authorize_and_operation_lock_finish (MMIfaceOpLock *self,
GAsyncResult *res,
GError **error)
{
@@ -2040,35 +2056,35 @@ lock_after_authorize_ready (MMBaseModem *self,
}
static void
-authorize_before_lock_ready (MMBaseModem *self,
+authorize_before_lock_ready (MMIfaceAuth *auth,
GAsyncResult *res,
GTask *task)
{
GError *error = NULL;
AuthorizeAndOperationLockContext *ctx;
- if (!mm_base_modem_authorize_finish (self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (auth, res, &error)) {
g_task_return_error (task, error);
g_object_unref (task);
return;
}
ctx = g_task_get_task_data (task);
- mm_base_modem_operation_lock (self,
+ mm_base_modem_operation_lock (MM_BASE_MODEM (auth),
ctx->operation_priority,
ctx->operation_description,
(GAsyncReadyCallback) lock_after_authorize_ready,
task);
}
-void
-mm_base_modem_authorize_and_operation_lock (MMBaseModem *self,
- GDBusMethodInvocation *invocation,
- const gchar *authorization,
- MMBaseModemOperationPriority operation_priority,
- const gchar *operation_description,
- GAsyncReadyCallback callback,
- gpointer user_data)
+static void
+mm_base_modem_authorize_and_operation_lock (MMIfaceOpLock *self,
+ GDBusMethodInvocation *invocation,
+ const gchar *authorization,
+ MMOperationPriority operation_priority,
+ const gchar *operation_description,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
{
GTask *task;
AuthorizeAndOperationLockContext *ctx;
@@ -2081,7 +2097,7 @@ mm_base_modem_authorize_and_operation_lock (MMBaseModem *self,
ctx->operation_description = g_strdup (operation_description);
g_task_set_task_data (task, ctx, (GDestroyNotify)authorize_and_operation_lock_context_free);
- mm_base_modem_authorize (self,
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
authorization,
(GAsyncReadyCallback)authorize_before_lock_ready,
@@ -2624,6 +2640,21 @@ log_object_iface_init (MMLogObjectInterface *iface)
}
static void
+auth_iface_init (MMIfaceAuthInterface *iface)
+{
+ iface->authorize = mm_base_modem_authorize;
+ iface->authorize_finish = mm_base_modem_authorize_finish;
+}
+
+static void
+op_lock_iface_init (MMIfaceOpLockInterface *iface)
+{
+ iface->authorize_and_lock = mm_base_modem_authorize_and_operation_lock;
+ iface->authorize_and_lock_finish = mm_base_modem_authorize_and_operation_lock_finish;
+ iface->unlock = mm_base_modem_operation_unlock;
+}
+
+static void
mm_base_modem_class_init (MMBaseModemClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
diff --git a/src/mm-base-modem.h b/src/mm-base-modem.h
index 0bcd974a..acdaec3c 100644
--- a/src/mm-base-modem.h
+++ b/src/mm-base-modem.h
@@ -36,6 +36,7 @@
#include "mm-port-serial-qcdm.h"
#include "mm-port-serial-gps.h"
#include "mm-iface-port-at.h"
+#include "mm-iface-op-lock.h"
#if defined WITH_QMI
#include "mm-port-qmi.h"
@@ -220,94 +221,41 @@ guint mm_base_modem_get_subsystem_device_id (MMBaseModem *self);
GCancellable *mm_base_modem_peek_cancellable (MMBaseModem *self);
/******************************************************************************/
-/* Polkit */
-
-void mm_base_modem_authorize (MMBaseModem *self,
- GDBusMethodInvocation *invocation,
- const gchar *authorization,
- GAsyncReadyCallback callback,
- gpointer user_data);
-gboolean mm_base_modem_authorize_finish (MMBaseModem *self,
- GAsyncResult *res,
- GError **error);
+/* State operations */
-/******************************************************************************/
-/* Operation lock support */
-
-typedef enum { /*< underscore_name=mm_base_modem_operation_priority >*/
- MM_BASE_MODEM_OPERATION_PRIORITY_UNKNOWN,
- /* Default operations are scheduled at the end of the list of pending
- * operations */
- MM_BASE_MODEM_OPERATION_PRIORITY_DEFAULT,
- /* An override operation will make all pending operations be cancelled, and
- * it will also disallow adding new operations. This type of operation would
- * be the last one expected in a modem object. */
- MM_BASE_MODEM_OPERATION_PRIORITY_OVERRIDE,
-} MMBaseModemOperationPriority;
-
-void mm_base_modem_operation_lock (MMBaseModem *self,
- MMBaseModemOperationPriority priority,
- const gchar *description,
- GAsyncReadyCallback callback,
- gpointer user_data);
-gssize mm_base_modem_operation_lock_finish (MMBaseModem *self,
- GAsyncResult *res,
- GError **error);
-void mm_base_modem_operation_unlock (MMBaseModem *self,
- gssize operation_id);
-
-void mm_base_modem_authorize_and_operation_lock (MMBaseModem *self,
- GDBusMethodInvocation *invocation,
- const gchar *authorization,
- MMBaseModemOperationPriority operation_priority,
- const gchar *operation_description,
- GAsyncReadyCallback callback,
- gpointer user_data);
-gssize mm_base_modem_authorize_and_operation_lock_finish (MMBaseModem *self,
- GAsyncResult *res,
- GError **error);
+void mm_base_modem_initialize (MMBaseModem *self,
+ MMOperationLock operation_lock,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+gboolean mm_base_modem_initialize_finish (MMBaseModem *self,
+ GAsyncResult *res,
+ GError **error);
-/******************************************************************************/
-/* State operations */
+void mm_base_modem_enable (MMBaseModem *self,
+ MMOperationLock operation_lock,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+gboolean mm_base_modem_enable_finish (MMBaseModem *self,
+ GAsyncResult *res,
+ GError **error);
-typedef enum {
- MM_BASE_MODEM_OPERATION_LOCK_REQUIRED,
- MM_BASE_MODEM_OPERATION_LOCK_ALREADY_ACQUIRED,
-} MMBaseModemOperationLock;
-
-void mm_base_modem_initialize (MMBaseModem *self,
- MMBaseModemOperationLock operation_lock,
- GAsyncReadyCallback callback,
- gpointer user_data);
-gboolean mm_base_modem_initialize_finish (MMBaseModem *self,
- GAsyncResult *res,
- GError **error);
-
-void mm_base_modem_enable (MMBaseModem *self,
- MMBaseModemOperationLock operation_lock,
- GAsyncReadyCallback callback,
- gpointer user_data);
-gboolean mm_base_modem_enable_finish (MMBaseModem *self,
- GAsyncResult *res,
- GError **error);
-
-void mm_base_modem_disable (MMBaseModem *self,
- MMBaseModemOperationLock operation_lock,
- MMBaseModemOperationPriority priority,
- GAsyncReadyCallback callback,
- gpointer user_data);
-gboolean mm_base_modem_disable_finish (MMBaseModem *self,
- GAsyncResult *res,
- GError **error);
+void mm_base_modem_disable (MMBaseModem *self,
+ MMOperationLock operation_lock,
+ MMOperationPriority priority,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+gboolean mm_base_modem_disable_finish (MMBaseModem *self,
+ GAsyncResult *res,
+ GError **error);
#if defined WITH_SUSPEND_RESUME
-void mm_base_modem_sync (MMBaseModem *self,
- MMBaseModemOperationLock operation_lock,
- GAsyncReadyCallback callback,
- gpointer user_data);
-gboolean mm_base_modem_sync_finish (MMBaseModem *self,
- GAsyncResult *res,
- GError **error);
+void mm_base_modem_sync (MMBaseModem *self,
+ MMOperationLock operation_lock,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+gboolean mm_base_modem_sync_finish (MMBaseModem *self,
+ GAsyncResult *res,
+ GError **error);
#endif
void mm_base_modem_teardown_ports (MMBaseModem *self,
diff --git a/src/mm-base-sim.c b/src/mm-base-sim.c
index e3f3cd77..04dbcf65 100644
--- a/src/mm-base-sim.c
+++ b/src/mm-base-sim.c
@@ -63,6 +63,10 @@ struct _MMBaseSimPrivate {
GDBusConnection *connection;
guint dbus_id;
+ /* The authorization provider */
+ MMAuthProvider *authp;
+ GCancellable *authp_cancellable;
+
/* The modem which owns this SIM */
MMBaseModem *modem;
/* The path where the SIM object is exported */
@@ -238,13 +242,13 @@ handle_change_pin_ready (MMBaseSim *self,
}
static void
-handle_change_pin_auth_ready (MMBaseModem *modem,
+handle_change_pin_auth_ready (MMAuthProvider *authp,
GAsyncResult *res,
HandleChangePinContext *ctx)
{
GError *error = NULL;
- if (!mm_base_modem_authorize_finish (modem, res, &error)) {
+ if (!mm_auth_provider_authorize_finish (authp, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_change_pin_context_free (ctx);
return;
@@ -296,11 +300,12 @@ handle_change_pin (MMBaseSim *self,
ctx->old_pin = g_strdup (old_pin);
ctx->new_pin = g_strdup (new_pin);
- mm_base_modem_authorize (self->priv->modem,
- invocation,
- MM_AUTHORIZATION_DEVICE_CONTROL,
- (GAsyncReadyCallback)handle_change_pin_auth_ready,
- ctx);
+ mm_auth_provider_authorize (self->priv->authp,
+ invocation,
+ MM_AUTHORIZATION_DEVICE_CONTROL,
+ self->priv->authp_cancellable,
+ (GAsyncReadyCallback)handle_change_pin_auth_ready,
+ ctx);
return TRUE;
}
@@ -421,13 +426,13 @@ handle_enable_pin_ready (MMBaseSim *self,
}
static void
-handle_enable_pin_auth_ready (MMBaseModem *modem,
+handle_enable_pin_auth_ready (MMAuthProvider *authp,
GAsyncResult *res,
HandleEnablePinContext *ctx)
{
GError *error = NULL;
- if (!mm_base_modem_authorize_finish (modem, res, &error)) {
+ if (!mm_auth_provider_authorize_finish (authp, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_enable_pin_context_free (ctx);
return;
@@ -478,11 +483,12 @@ handle_enable_pin (MMBaseSim *self,
ctx->pin = g_strdup (pin);
ctx->enabled = enabled;
- mm_base_modem_authorize (self->priv->modem,
- invocation,
- MM_AUTHORIZATION_DEVICE_CONTROL,
- (GAsyncReadyCallback)handle_enable_pin_auth_ready,
- ctx);
+ mm_auth_provider_authorize (self->priv->authp,
+ invocation,
+ MM_AUTHORIZATION_DEVICE_CONTROL,
+ self->priv->authp_cancellable,
+ (GAsyncReadyCallback)handle_enable_pin_auth_ready,
+ ctx);
return TRUE;
}
@@ -844,13 +850,13 @@ handle_send_pin_ready (MMBaseSim *self,
}
static void
-handle_send_pin_auth_ready (MMBaseModem *modem,
+handle_send_pin_auth_ready (MMAuthProvider *authp,
GAsyncResult *res,
HandleSendPinContext *ctx)
{
GError *error = NULL;
- if (!mm_base_modem_authorize_finish (modem, res, &error)) {
+ if (!mm_auth_provider_authorize_finish (authp, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_send_pin_context_free (ctx);
return;
@@ -889,11 +895,12 @@ handle_send_pin (MMBaseSim *self,
ctx->invocation = g_object_ref (invocation);
ctx->pin = g_strdup (pin);
- mm_base_modem_authorize (self->priv->modem,
- invocation,
- MM_AUTHORIZATION_DEVICE_CONTROL,
- (GAsyncReadyCallback)handle_send_pin_auth_ready,
- ctx);
+ mm_auth_provider_authorize (self->priv->authp,
+ invocation,
+ MM_AUTHORIZATION_DEVICE_CONTROL,
+ self->priv->authp_cancellable,
+ (GAsyncReadyCallback)handle_send_pin_auth_ready,
+ ctx);
return TRUE;
}
@@ -948,13 +955,13 @@ handle_send_puk_ready (MMBaseSim *self,
}
static void
-handle_send_puk_auth_ready (MMBaseModem *modem,
+handle_send_puk_auth_ready (MMAuthProvider *authp,
GAsyncResult *res,
HandleSendPukContext *ctx)
{
GError *error = NULL;
- if (!mm_base_modem_authorize_finish (modem, res, &error)) {
+ if (!mm_auth_provider_authorize_finish (authp, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_send_puk_context_free (ctx);
return;
@@ -996,11 +1003,12 @@ handle_send_puk (MMBaseSim *self,
ctx->puk = g_strdup (puk);
ctx->new_pin = g_strdup (new_pin);
- mm_base_modem_authorize (self->priv->modem,
- invocation,
- MM_AUTHORIZATION_DEVICE_CONTROL,
- (GAsyncReadyCallback)handle_send_puk_auth_ready,
- ctx);
+ mm_auth_provider_authorize (self->priv->authp,
+ invocation,
+ MM_AUTHORIZATION_DEVICE_CONTROL,
+ self->priv->authp_cancellable,
+ (GAsyncReadyCallback)handle_send_puk_auth_ready,
+ ctx);
return TRUE;
}
@@ -1504,13 +1512,13 @@ handle_set_preferred_networks_ready (MMBaseSim *self,
}
static void
-handle_set_preferred_networks_auth_ready (MMBaseModem *modem,
+handle_set_preferred_networks_auth_ready (MMAuthProvider *authp,
GAsyncResult *res,
HandleSetPreferredNetworksContext *ctx)
{
GError *error = NULL;
- if (!mm_base_modem_authorize_finish (modem, res, &error)) {
+ if (!mm_auth_provider_authorize_finish (authp, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_set_preferred_networks_context_free (ctx);
return;
@@ -1558,11 +1566,12 @@ handle_set_preferred_networks (MMBaseSim *self,
ctx->invocation = g_object_ref (invocation);
ctx->networks = g_variant_ref (networks_variant);
- mm_base_modem_authorize (self->priv->modem,
- invocation,
- MM_AUTHORIZATION_DEVICE_CONTROL,
- (GAsyncReadyCallback)handle_set_preferred_networks_auth_ready,
- ctx);
+ mm_auth_provider_authorize (self->priv->authp,
+ invocation,
+ MM_AUTHORIZATION_DEVICE_CONTROL,
+ self->priv->authp_cancellable,
+ (GAsyncReadyCallback)handle_set_preferred_networks_auth_ready,
+ ctx);
return TRUE;
}
@@ -3047,6 +3056,8 @@ dispose (GObject *object)
}
g_clear_object (&self->priv->modem);
+ g_cancellable_cancel (self->priv->authp_cancellable);
+ g_clear_object (&self->priv->authp_cancellable);
G_OBJECT_CLASS (mm_base_sim_parent_class)->dispose (object);
}
diff --git a/src/mm-base-sms.c b/src/mm-base-sms.c
index 202b178f..f7d46321 100644
--- a/src/mm-base-sms.c
+++ b/src/mm-base-sms.c
@@ -36,6 +36,7 @@
#include "mm-log-object.h"
#include "mm-modem-helpers.h"
#include "mm-error-helpers.h"
+#include "mm-auth-provider.h"
static void log_object_iface_init (MMLogObjectInterface *iface);
@@ -60,6 +61,10 @@ struct _MMBaseSmsPrivate {
GDBusConnection *connection;
guint dbus_id;
+ /* The authorization provider */
+ MMAuthProvider *authp;
+ GCancellable *authp_cancellable;
+
/* The modem which owns this SMS */
MMBaseModem *modem;
/* The path where the SMS object is exported */
@@ -324,7 +329,6 @@ generate_submit_pdus (MMBaseSms *self,
typedef struct {
MMBaseSms *self;
- MMBaseModem *modem;
GDBusMethodInvocation *invocation;
MMSmsStorage storage;
} HandleStoreContext;
@@ -333,7 +337,6 @@ static void
handle_store_context_free (HandleStoreContext *ctx)
{
g_object_unref (ctx->invocation);
- g_object_unref (ctx->modem);
g_object_unref (ctx->self);
g_slice_free (HandleStoreContext, ctx);
}
@@ -406,13 +409,13 @@ prepare_sms_to_be_stored (MMBaseSms *self,
}
static void
-handle_store_auth_ready (MMBaseModem *modem,
+handle_store_auth_ready (MMAuthProvider *authp,
GAsyncResult *res,
HandleStoreContext *ctx)
{
GError *error = NULL;
- if (!mm_base_modem_authorize_finish (modem, res, &error)) {
+ if (!mm_auth_provider_authorize_finish (authp, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_store_context_free (ctx);
return;
@@ -442,7 +445,7 @@ handle_store_auth_ready (MMBaseModem *modem,
}
/* Check if the requested storage is allowed for storing */
- if (!mm_iface_modem_messaging_is_storage_supported_for_storing (MM_IFACE_MODEM_MESSAGING (ctx->modem),
+ if (!mm_iface_modem_messaging_is_storage_supported_for_storing (MM_IFACE_MODEM_MESSAGING (ctx->self->priv->modem),
ctx->storage,
&error)) {
mm_obj_warn (ctx->self, "failed storing SMS message: %s", error->message);
@@ -485,9 +488,6 @@ handle_store (MMBaseSms *self,
ctx = g_slice_new0 (HandleStoreContext);
ctx->self = g_object_ref (self);
ctx->invocation = g_object_ref (invocation);
- g_object_get (self,
- MM_BASE_SMS_MODEM, &ctx->modem,
- NULL);
ctx->storage = (MMSmsStorage)storage;
if (ctx->storage == MM_SMS_STORAGE_UNKNOWN) {
@@ -498,11 +498,12 @@ handle_store (MMBaseSms *self,
g_assert (ctx->storage != MM_SMS_STORAGE_UNKNOWN);
}
- mm_base_modem_authorize (ctx->modem,
- invocation,
- MM_AUTHORIZATION_MESSAGING,
- (GAsyncReadyCallback)handle_store_auth_ready,
- ctx);
+ mm_auth_provider_authorize (self->priv->authp,
+ invocation,
+ MM_AUTHORIZATION_MESSAGING,
+ self->priv->authp_cancellable,
+ (GAsyncReadyCallback)handle_store_auth_ready,
+ ctx);
return TRUE;
}
@@ -511,7 +512,6 @@ handle_store (MMBaseSms *self,
typedef struct {
MMBaseSms *self;
- MMBaseModem *modem;
GDBusMethodInvocation *invocation;
} HandleSendContext;
@@ -519,7 +519,6 @@ static void
handle_send_context_free (HandleSendContext *ctx)
{
g_object_unref (ctx->invocation);
- g_object_unref (ctx->modem);
g_object_unref (ctx->self);
g_slice_free (HandleSendContext, ctx);
}
@@ -586,14 +585,14 @@ prepare_sms_to_be_sent (MMBaseSms *self,
}
static void
-handle_send_auth_ready (MMBaseModem *modem,
+handle_send_auth_ready (MMAuthProvider *authp,
GAsyncResult *res,
HandleSendContext *ctx)
{
MMSmsState state;
GError *error = NULL;
- if (!mm_base_modem_authorize_finish (modem, res, &error)) {
+ if (!mm_auth_provider_authorize_finish (authp, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_send_context_free (ctx);
return;
@@ -650,15 +649,13 @@ handle_send (MMBaseSms *self,
ctx = g_slice_new0 (HandleSendContext);
ctx->self = g_object_ref (self);
ctx->invocation = g_object_ref (invocation);
- g_object_get (self,
- MM_BASE_SMS_MODEM, &ctx->modem,
- NULL);
- mm_base_modem_authorize (ctx->modem,
- invocation,
- MM_AUTHORIZATION_MESSAGING,
- (GAsyncReadyCallback)handle_send_auth_ready,
- ctx);
+ mm_auth_provider_authorize (self->priv->authp,
+ invocation,
+ MM_AUTHORIZATION_MESSAGING,
+ self->priv->authp_cancellable,
+ (GAsyncReadyCallback)handle_send_auth_ready,
+ ctx);
return TRUE;
}
@@ -2071,6 +2068,10 @@ mm_base_sms_init (MMBaseSms *self)
/* Each SMS is given a unique id to build its own DBus path */
self->priv->dbus_id = id++;
+
+ /* Setup authorization provider */
+ self->priv->authp = mm_auth_provider_get ();
+ self->priv->authp_cancellable = g_cancellable_new ();
}
static void
@@ -2097,6 +2098,8 @@ dispose (GObject *object)
}
g_clear_object (&self->priv->modem);
+ g_cancellable_cancel (self->priv->authp_cancellable);
+ g_clear_object (&self->priv->authp_cancellable);
G_OBJECT_CLASS (mm_base_sms_parent_class)->dispose (object);
}
diff --git a/src/mm-device.c b/src/mm-device.c
index 96b7d874..b2e3541a 100644
--- a/src/mm-device.c
+++ b/src/mm-device.c
@@ -436,7 +436,7 @@ mm_device_initialize_modem (MMDevice *self)
mm_obj_dbg (self, "modem initializing...");
mm_base_modem_initialize (modem,
- MM_BASE_MODEM_OPERATION_LOCK_REQUIRED,
+ MM_OPERATION_LOCK_REQUIRED,
(GAsyncReadyCallback)initialize_ready,
g_object_ref (self));
}
@@ -868,8 +868,8 @@ mm_device_inhibit (MMDevice *self,
* an exclusive lock marked as override, so the modem object will not
* allow any additional lock request any more. */
mm_base_modem_disable (self->priv->modem,
- MM_BASE_MODEM_OPERATION_LOCK_REQUIRED,
- MM_BASE_MODEM_OPERATION_PRIORITY_OVERRIDE,
+ MM_OPERATION_LOCK_REQUIRED,
+ MM_OPERATION_PRIORITY_OVERRIDE,
(GAsyncReadyCallback)inhibit_disable_ready,
task);
}
diff --git a/src/mm-iface-modem-3gpp-profile-manager.c b/src/mm-iface-modem-3gpp-profile-manager.c
index d76202b7..abdc5f25 100644
--- a/src/mm-iface-modem-3gpp-profile-manager.c
+++ b/src/mm-iface-modem-3gpp-profile-manager.c
@@ -1109,13 +1109,13 @@ list_profiles_ready (MMIfaceModem3gppProfileManager *self,
}
static void
-handle_list_auth_ready (MMBaseModem *self,
+handle_list_auth_ready (MMIfaceAuth *self,
GAsyncResult *res,
HandleListContext *ctx)
{
GError *error = NULL;
- if (!mm_base_modem_authorize_finish (self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (self, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_list_context_free (ctx);
return;
@@ -1150,7 +1150,7 @@ handle_list (MmGdbusModem3gppProfileManager *skeleton,
ctx->invocation = g_object_ref (invocation);
ctx->self = g_object_ref (self);
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_DEVICE_CONTROL,
(GAsyncReadyCallback)handle_list_auth_ready,
@@ -1208,7 +1208,7 @@ set_profile_ready (MMIfaceModem3gppProfileManager *self,
}
static void
-handle_set_auth_ready (MMBaseModem *self,
+handle_set_auth_ready (MMIfaceAuth *self,
GAsyncResult *res,
HandleSetContext *ctx)
{
@@ -1216,7 +1216,7 @@ handle_set_auth_ready (MMBaseModem *self,
GError *error = NULL;
g_autoptr(MM3gppProfile) profile_requested = NULL;
- if (!mm_base_modem_authorize_finish (self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (self, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_set_context_free (ctx);
return;
@@ -1276,7 +1276,7 @@ handle_set (MmGdbusModem3gppProfileManager *skeleton,
ctx->self = g_object_ref (self);
ctx->requested_dictionary = requested_dictionary ? g_variant_ref (requested_dictionary) : NULL;
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_DEVICE_CONTROL,
(GAsyncReadyCallback)handle_set_auth_ready,
@@ -1325,7 +1325,7 @@ delete_profile_ready (MMIfaceModem3gppProfileManager *self,
}
static void
-handle_delete_auth_ready (MMBaseModem *self,
+handle_delete_auth_ready (MMIfaceAuth *self,
GAsyncResult *res,
HandleDeleteContext *ctx)
{
@@ -1335,7 +1335,7 @@ handle_delete_auth_ready (MMBaseModem *self,
gint profile_id = MM_3GPP_PROFILE_ID_UNKNOWN;
MMBearerApnType apn_type = MM_BEARER_APN_TYPE_NONE;
- if (!mm_base_modem_authorize_finish (self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (self, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_delete_context_free (ctx);
return;
@@ -1428,7 +1428,7 @@ handle_delete (MmGdbusModem3gppProfileManager *skeleton,
ctx->self = g_object_ref (self);
ctx->dictionary = g_variant_ref (dictionary);
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_DEVICE_CONTROL,
(GAsyncReadyCallback)handle_delete_auth_ready,
diff --git a/src/mm-iface-modem-3gpp-ussd.c b/src/mm-iface-modem-3gpp-ussd.c
index 7a1be95c..484946ad 100644
--- a/src/mm-iface-modem-3gpp-ussd.c
+++ b/src/mm-iface-modem-3gpp-ussd.c
@@ -79,13 +79,13 @@ handle_cancel_ready (MMIfaceModem3gppUssd *self,
}
static void
-handle_cancel_auth_ready (MMBaseModem *self,
+handle_cancel_auth_ready (MMIfaceAuth *self,
GAsyncResult *res,
HandleCancelContext *ctx)
{
GError *error = NULL;
- if (!mm_base_modem_authorize_finish (self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (self, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_cancel_context_free (ctx);
return;
@@ -120,7 +120,7 @@ handle_cancel (MmGdbusModem3gppUssd *skeleton,
ctx->invocation = g_object_ref (invocation);
ctx->self = g_object_ref (self);
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_USSD,
(GAsyncReadyCallback)handle_cancel_auth_ready,
@@ -168,13 +168,13 @@ handle_respond_ready (MMIfaceModem3gppUssd *self,
}
static void
-handle_respond_auth_ready (MMBaseModem *self,
+handle_respond_auth_ready (MMIfaceAuth *self,
GAsyncResult *res,
HandleRespondContext *ctx)
{
GError *error = NULL;
- if (!mm_base_modem_authorize_finish (self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (self, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_respond_context_free (ctx);
return;
@@ -230,7 +230,7 @@ handle_respond (MmGdbusModem3gppUssd *skeleton,
ctx->self = g_object_ref (self);
ctx->command = g_strdup (command);
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_USSD,
(GAsyncReadyCallback)handle_respond_auth_ready,
@@ -278,13 +278,13 @@ handle_initiate_ready (MMIfaceModem3gppUssd *self,
}
static void
-handle_initiate_auth_ready (MMBaseModem *self,
+handle_initiate_auth_ready (MMIfaceAuth *self,
GAsyncResult *res,
HandleInitiateContext *ctx)
{
GError *error = NULL;
- if (!mm_base_modem_authorize_finish (self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (self, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_initiate_context_free (ctx);
return;
@@ -340,7 +340,7 @@ handle_initiate (MmGdbusModem3gppUssd *skeleton,
ctx->self = g_object_ref (self);
ctx->command = g_strdup (command);
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_USSD,
(GAsyncReadyCallback)handle_initiate_auth_ready,
diff --git a/src/mm-iface-modem-3gpp.c b/src/mm-iface-modem-3gpp.c
index c103fd13..490b68dc 100644
--- a/src/mm-iface-modem-3gpp.c
+++ b/src/mm-iface-modem-3gpp.c
@@ -30,6 +30,7 @@
#include "mm-error-helpers.h"
#include "mm-log.h"
#include "mm-log-helpers.h"
+#include "mm-iface-op-lock.h"
#define SUBSYSTEM_3GPP "3gpp"
@@ -840,14 +841,15 @@ handle_register_ready (MMIfaceModem3gpp *self,
}
static void
-handle_register_auth_ready (MMBaseModem *self,
+handle_register_auth_ready (MMIfaceAuth *auth,
GAsyncResult *res,
HandleRegisterContext *ctx)
{
+ MMIfaceModem3gpp *self = MM_IFACE_MODEM_3GPP (auth);
MMModemState modem_state = MM_MODEM_STATE_UNKNOWN;
GError *error = NULL;
- if (!mm_base_modem_authorize_finish (self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (auth, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_register_context_free (ctx);
return;
@@ -915,7 +917,7 @@ handle_register (MmGdbusModem3gpp *skeleton,
ctx->self = g_object_ref (self);
ctx->operator_id = g_strdup (operator_id);
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_DEVICE_CONTROL,
(GAsyncReadyCallback)handle_register_auth_ready,
@@ -1007,13 +1009,14 @@ handle_scan_ready (MMIfaceModem3gpp *self,
}
static void
-handle_scan_auth_ready (MMBaseModem *self,
+handle_scan_auth_ready (MMIfaceAuth *auth,
GAsyncResult *res,
HandleScanContext *ctx)
{
+ MMIfaceModem3gpp *self = MM_IFACE_MODEM_3GPP (auth);
GError *error = NULL;
- if (!mm_base_modem_authorize_finish (self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (auth, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_scan_context_free (ctx);
return;
@@ -1053,7 +1056,7 @@ handle_scan (MmGdbusModem3gpp *skeleton,
ctx->invocation = g_object_ref (invocation);
ctx->self = g_object_ref (self);
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_DEVICE_CONTROL,
(GAsyncReadyCallback)handle_scan_auth_ready,
@@ -1145,13 +1148,14 @@ handle_set_eps_ue_mode_operation_ready (MMIfaceModem3gpp *self
}
static void
-handle_set_eps_ue_mode_operation_auth_ready (MMBaseModem *self,
+handle_set_eps_ue_mode_operation_auth_ready (MMIfaceAuth *auth,
GAsyncResult *res,
HandleSetEpsUeModeOperationContext *ctx)
{
+ MMIfaceModem3gpp *self = MM_IFACE_MODEM_3GPP (auth);
GError *error = NULL;
- if (!mm_base_modem_authorize_finish (self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (auth, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_set_eps_ue_mode_operation_context_free (ctx);
return;
@@ -1198,7 +1202,7 @@ handle_set_eps_ue_mode_operation (MmGdbusModem3gpp *skeleton,
ctx->self = g_object_ref (self);
ctx->mode = mode;
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_DEVICE_CONTROL,
(GAsyncReadyCallback)handle_set_eps_ue_mode_operation_auth_ready,
@@ -1233,7 +1237,7 @@ static void
handle_set_initial_eps_bearer_settings_context_free (HandleSetInitialEpsBearerSettingsContext *ctx)
{
if (ctx->operation_id >= 0)
- mm_base_modem_operation_unlock (MM_BASE_MODEM (ctx->self), ctx->operation_id);
+ mm_iface_op_lock_unlock (MM_IFACE_OP_LOCK (ctx->self), ctx->operation_id);
g_assert (!ctx->saved_error);
g_clear_object (&ctx->config);
@@ -1419,16 +1423,17 @@ handle_set_initial_eps_bearer_settings_step (HandleSetInitialEpsBearerSettingsCo
}
static void
-set_initial_eps_bearer_settings_auth_ready (MMBaseModem *self,
+set_initial_eps_bearer_settings_auth_ready (MMIfaceOpLock *_self,
GAsyncResult *res,
HandleSetInitialEpsBearerSettingsContext *ctx)
{
+ MMBaseModem *self = MM_BASE_MODEM (_self);
gboolean force = FALSE;
GError *error = NULL;
GVariant *old_dictionary;
g_autoptr(MMBearerProperties) old_config = NULL;
- ctx->operation_id = mm_base_modem_authorize_and_operation_lock_finish (self, res, &error);
+ ctx->operation_id = mm_iface_op_lock_authorize_and_lock_finish (_self, res, &error);
if (ctx->operation_id < 0) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_set_initial_eps_bearer_settings_context_free (ctx);
@@ -1488,13 +1493,13 @@ handle_set_initial_eps_bearer_settings (MmGdbusModem3gpp *skeleton,
ctx->previous_power_state = MM_MODEM_POWER_STATE_UNKNOWN;
ctx->operation_id = -1;
- mm_base_modem_authorize_and_operation_lock (MM_BASE_MODEM (self),
- invocation,
- MM_AUTHORIZATION_DEVICE_CONTROL,
- MM_BASE_MODEM_OPERATION_PRIORITY_DEFAULT,
- "set-initial-eps-bearer-settings",
- (GAsyncReadyCallback)set_initial_eps_bearer_settings_auth_ready,
- ctx);
+ mm_iface_op_lock_authorize_and_lock (MM_IFACE_OP_LOCK (self),
+ invocation,
+ MM_AUTHORIZATION_DEVICE_CONTROL,
+ MM_OPERATION_PRIORITY_DEFAULT,
+ "set-initial-eps-bearer-settings",
+ (GAsyncReadyCallback)set_initial_eps_bearer_settings_auth_ready,
+ ctx);
return TRUE;
}
@@ -1572,13 +1577,14 @@ handle_disable_facility_lock_ready (MMIfaceModem3gpp *self,
}
static void
-disable_facility_lock_auth_ready (MMBaseModem *self,
+disable_facility_lock_auth_ready (MMIfaceAuth *auth,
GAsyncResult *res,
HandleDisableFacilityLockContext *ctx)
{
+ MMIfaceModem3gpp *self = MM_IFACE_MODEM_3GPP (auth);
GError *error = NULL;
- if (!mm_base_modem_authorize_finish (self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (auth, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_disable_facility_lock_context_free (ctx);
return;
@@ -1648,7 +1654,7 @@ handle_disable_facility_lock (MmGdbusModem3gpp *skeleton,
ctx->self = g_object_ref (self);
ctx->dictionary = g_variant_ref (dictionary);
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_DEVICE_CONTROL,
(GAsyncReadyCallback)disable_facility_lock_auth_ready,
@@ -1749,13 +1755,14 @@ internal_set_packet_service_state_ready (MMIfaceModem3gpp *self,
}
static void
-set_packet_service_state_auth_ready (MMBaseModem *self,
+set_packet_service_state_auth_ready (MMIfaceAuth *auth,
GAsyncResult *res,
HandlePacketServiceStateContext *ctx)
{
+ MMIfaceModem3gpp *self = MM_IFACE_MODEM_3GPP (auth);
GError *error = NULL;
- if (!mm_base_modem_authorize_finish (self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (auth, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_set_packet_service_state_context_free (ctx);
return;
@@ -1798,7 +1805,7 @@ handle_set_packet_service_state (MmGdbusModem3gpp *skeleton,
ctx->self = g_object_ref (self);
ctx->packet_service_state = packet_service_state;
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_DEVICE_CONTROL,
(GAsyncReadyCallback)set_packet_service_state_auth_ready,
@@ -1821,7 +1828,7 @@ static void
handle_set_nr5g_registration_settings_context_free (HandleSetNr5gRegistrationSettingsContext *ctx)
{
if (ctx->operation_id >= 0)
- mm_base_modem_operation_unlock (MM_BASE_MODEM (ctx->self), ctx->operation_id);
+ mm_iface_op_lock_unlock (MM_IFACE_OP_LOCK (ctx->self), ctx->operation_id);
g_clear_object (&ctx->settings);
g_variant_unref (ctx->dictionary);
@@ -1893,17 +1900,18 @@ set_nr5g_registration_settings_ready (MMIfaceModem3gpp *
}
static void
-set_nr5g_registration_settings_auth_ready (MMBaseModem *self,
+set_nr5g_registration_settings_auth_ready (MMIfaceOpLock *_self,
GAsyncResult *res,
HandleSetNr5gRegistrationSettingsContext *ctx)
{
+ MMBaseModem *self = MM_BASE_MODEM (_self);
GError *error = NULL;
GVariant *old_dictionary;
g_autoptr(MMNr5gRegistrationSettings) old_settings = NULL;
MMModem3gppDrxCycle new_drx_cycle;
MMModem3gppMicoMode new_mico_mode;
- ctx->operation_id = mm_base_modem_authorize_and_operation_lock_finish (self, res, &error);
+ ctx->operation_id = mm_iface_op_lock_authorize_and_lock_finish (_self, res, &error);
if (ctx->operation_id < 0) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_set_nr5g_registration_settings_context_free (ctx);
@@ -1979,13 +1987,13 @@ handle_set_nr5g_registration_settings (MmGdbusModem3gpp *skeleton,
ctx->dictionary = g_variant_ref (dictionary);
ctx->operation_id = -1;
- mm_base_modem_authorize_and_operation_lock (MM_BASE_MODEM (self),
- invocation,
- MM_AUTHORIZATION_DEVICE_CONTROL,
- MM_BASE_MODEM_OPERATION_PRIORITY_DEFAULT,
- "set-nr5g-registration-settings",
- (GAsyncReadyCallback)set_nr5g_registration_settings_auth_ready,
- ctx);
+ mm_iface_op_lock_authorize_and_lock (MM_IFACE_OP_LOCK (self),
+ invocation,
+ MM_AUTHORIZATION_DEVICE_CONTROL,
+ MM_OPERATION_PRIORITY_DEFAULT,
+ "set-nr5g-registration-settings",
+ (GAsyncReadyCallback)set_nr5g_registration_settings_auth_ready,
+ ctx);
return TRUE;
}
@@ -3595,15 +3603,16 @@ handle_set_carrier_lock_ready (MMIfaceModem3gpp *self,
}
static void
-handle_set_carrier_lock_auth_ready (MMBaseModem *self,
+handle_set_carrier_lock_auth_ready (MMIfaceAuth *auth,
GAsyncResult *res,
HandleSetCarrierLockContext *ctx)
{
- GError *error = NULL;
- const guint8 *data;
- gsize data_size;
+ MMIfaceModem3gpp *self = MM_IFACE_MODEM_3GPP (auth);
+ GError *error = NULL;
+ const guint8 *data;
+ gsize data_size;
- if (!mm_base_modem_authorize_finish (self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (auth, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_set_carrier_lock_context_free (ctx);
return;
@@ -3642,7 +3651,7 @@ handle_set_carrier_lock (MmGdbusModem3gpp *skeleton,
ctx->self = g_object_ref (self);
ctx->data = g_variant_ref (data);
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_DEVICE_CONTROL,
(GAsyncReadyCallback)handle_set_carrier_lock_auth_ready,
diff --git a/src/mm-iface-modem-cdma.c b/src/mm-iface-modem-cdma.c
index 14d1ae9a..9cf5872c 100644
--- a/src/mm-iface-modem-cdma.c
+++ b/src/mm-iface-modem-cdma.c
@@ -136,17 +136,18 @@ handle_activate_ready (MMIfaceModemCdma *self,
}
static void
-handle_activate_auth_ready (MMBaseModem *self,
+handle_activate_auth_ready (MMIfaceAuth *_self,
GAsyncResult *res,
HandleActivateContext *ctx)
{
+ MMIfaceModemCdma *self = MM_IFACE_MODEM_CDMA (_self);
Private *priv;
MMModemState modem_state;
GError *error = NULL;
priv = get_private (MM_IFACE_MODEM_CDMA (self));
- if (!mm_base_modem_authorize_finish (self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (_self, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_activate_context_free (ctx);
return;
@@ -254,7 +255,7 @@ handle_activate (MmGdbusModemCdma *skeleton,
ctx->self = g_object_ref (self);
ctx->carrier = g_strdup (carrier);
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_DEVICE_CONTROL,
(GAsyncReadyCallback)handle_activate_auth_ready,
@@ -302,10 +303,11 @@ handle_activate_manual_ready (MMIfaceModemCdma *self,
}
static void
-handle_activate_manual_auth_ready (MMBaseModem *self,
+handle_activate_manual_auth_ready (MMIfaceAuth *_self,
GAsyncResult *res,
HandleActivateManualContext *ctx)
{
+ MMIfaceModemCdma *self = MM_IFACE_MODEM_CDMA (_self);
MMCdmaManualActivationProperties *properties;
Private *priv;
MMModemState modem_state;
@@ -313,7 +315,7 @@ handle_activate_manual_auth_ready (MMBaseModem *self,
priv = get_private (MM_IFACE_MODEM_CDMA (self));
- if (!mm_base_modem_authorize_finish (self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (_self, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_activate_manual_context_free (ctx);
return;
@@ -422,7 +424,7 @@ handle_activate_manual (MmGdbusModemCdma *skeleton,
ctx->self = g_object_ref (self);
ctx->dictionary = g_variant_ref (dictionary);
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_DEVICE_CONTROL,
(GAsyncReadyCallback)handle_activate_manual_auth_ready,
diff --git a/src/mm-iface-modem-cell-broadcast.c b/src/mm-iface-modem-cell-broadcast.c
index f543d8f9..b29d01c5 100644
--- a/src/mm-iface-modem-cell-broadcast.c
+++ b/src/mm-iface-modem-cell-broadcast.c
@@ -79,13 +79,14 @@ set_channels_ready (MMIfaceModemCellBroadcast *self,
}
static void
-handle_set_channels_auth_ready (MMBaseModem *self,
+handle_set_channels_auth_ready (MMIfaceAuth *_self,
GAsyncResult *res,
HandleSetChannelsCellBroadcastContext *ctx)
{
+ MMIfaceModemCellBroadcast *self = MM_IFACE_MODEM_CELL_BROADCAST (_self);
GError *error = NULL;
- if (!mm_base_modem_authorize_finish (self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (_self, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_set_channels_context_free (ctx);
return;
@@ -128,7 +129,8 @@ handle_set_channels (MmGdbusModemCellBroadcast *skeleton,
ctx->invocation = g_object_ref (invocation);
ctx->self = g_object_ref (self);
ctx->channels = mm_common_cell_broadcast_channels_variant_to_garray (channels);
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_DEVICE_CONTROL,
(GAsyncReadyCallback)handle_set_channels_auth_ready,
@@ -173,14 +175,15 @@ handle_delete_ready (MMCbmList *list,
}
static void
-handle_delete_auth_ready (MMBaseModem *self,
+handle_delete_auth_ready (MMIfaceAuth *_self,
GAsyncResult *res,
HandleDeleteContext *ctx)
{
+ MMIfaceModemCellBroadcast *self = MM_IFACE_MODEM_CELL_BROADCAST (_self);
g_autoptr(MMCbmList) list = NULL;
GError *error = NULL;
- if (!mm_base_modem_authorize_finish (self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (_self, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_delete_context_free (ctx);
return;
@@ -229,7 +232,7 @@ handle_delete (MmGdbusModemCellBroadcast *skeleton,
ctx->self = g_object_ref (self);
ctx->path = g_strdup (path);
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_CELL_BROADCAST,
(GAsyncReadyCallback)handle_delete_auth_ready,
diff --git a/src/mm-iface-modem-firmware.c b/src/mm-iface-modem-firmware.c
index c71254c4..f13e4a4c 100644
--- a/src/mm-iface-modem-firmware.c
+++ b/src/mm-iface-modem-firmware.c
@@ -180,13 +180,14 @@ load_list_ready (MMIfaceModemFirmware *self,
}
static void
-list_auth_ready (MMBaseModem *self,
+list_auth_ready (MMIfaceAuth *_self,
GAsyncResult *res,
HandleListContext *ctx)
{
+ MMIfaceModemFirmware *self = MM_IFACE_MODEM_FIRMWARE (_self);
GError *error = NULL;
- if (!mm_base_modem_authorize_finish (self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (_self, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_list_context_free (ctx);
return;
@@ -221,7 +222,7 @@ handle_list (MmGdbusModemFirmware *skeleton,
ctx->invocation = g_object_ref (invocation);
ctx->self = g_object_ref (self);
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_FIRMWARE,
(GAsyncReadyCallback)list_auth_ready,
@@ -265,13 +266,14 @@ change_current_ready (MMIfaceModemFirmware *self,
}
static void
-select_auth_ready (MMBaseModem *self,
+select_auth_ready (MMIfaceAuth *_self,
GAsyncResult *res,
HandleSelectContext *ctx)
{
+ MMIfaceModemFirmware *self = MM_IFACE_MODEM_FIRMWARE (_self);
GError *error = NULL;
- if (!mm_base_modem_authorize_finish (self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (_self, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_select_context_free (ctx);
return;
@@ -308,7 +310,7 @@ handle_select (MmGdbusModemFirmware *skeleton,
ctx->self = g_object_ref (self);
ctx->name = g_strdup (name);
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_FIRMWARE,
(GAsyncReadyCallback)select_auth_ready,
diff --git a/src/mm-iface-modem-location.c b/src/mm-iface-modem-location.c
index 7ce16a16..d891cb01 100644
--- a/src/mm-iface-modem-location.c
+++ b/src/mm-iface-modem-location.c
@@ -924,10 +924,11 @@ setup_gathering_ready (MMIfaceModemLocation *self,
}
static void
-handle_setup_auth_ready (MMBaseModem *self,
+handle_setup_auth_ready (MMIfaceAuth *_self,
GAsyncResult *res,
HandleSetupContext *ctx)
{
+ MMIfaceModemLocation *self = MM_IFACE_MODEM_LOCATION (_self);
GError *error = NULL;
MMModemState modem_state;
MMModemLocationSource not_supported;
@@ -935,7 +936,7 @@ handle_setup_auth_ready (MMBaseModem *self,
LocationContext *location_ctx;
g_autofree gchar *str = NULL;
- if (!mm_base_modem_authorize_finish (self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (_self, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_setup_context_free (ctx);
return;
@@ -1018,7 +1019,7 @@ handle_setup (MmGdbusModemLocation *skeleton,
ctx->sources = sources;
ctx->signal_location = signal_location;
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_DEVICE_CONTROL,
(GAsyncReadyCallback)handle_setup_auth_ready,
@@ -1063,13 +1064,14 @@ set_supl_server_ready (MMIfaceModemLocation *self,
}
static void
-handle_set_supl_server_auth_ready (MMBaseModem *self,
+handle_set_supl_server_auth_ready (MMIfaceAuth *_self,
GAsyncResult *res,
HandleSetSuplServerContext *ctx)
{
+ MMIfaceModemLocation *self = MM_IFACE_MODEM_LOCATION (_self);
GError *error = NULL;
- if (!mm_base_modem_authorize_finish (self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (_self, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_set_supl_server_context_free (ctx);
return;
@@ -1122,7 +1124,7 @@ handle_set_supl_server (MmGdbusModemLocation *skeleton,
ctx->self = g_object_ref (self);
ctx->supl = g_strdup (supl);
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_DEVICE_CONTROL,
(GAsyncReadyCallback)handle_set_supl_server_auth_ready,
@@ -1164,15 +1166,16 @@ inject_assistance_data_ready (MMIfaceModemLocation *self,
}
static void
-handle_inject_assistance_data_auth_ready (MMBaseModem *self,
+handle_inject_assistance_data_auth_ready (MMIfaceAuth *_self,
GAsyncResult *res,
HandleInjectAssistanceDataContext *ctx)
{
+ MMIfaceModemLocation *self = MM_IFACE_MODEM_LOCATION (_self);
GError *error = NULL;
const guint8 *data;
gsize data_size;
- if (!mm_base_modem_authorize_finish (self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (_self, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_inject_assistance_data_context_free (ctx);
return;
@@ -1221,7 +1224,7 @@ handle_inject_assistance_data (MmGdbusModemLocation *skeleton,
ctx->self = g_object_ref (self);
ctx->datav = g_variant_ref (datav);
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_DEVICE_CONTROL,
(GAsyncReadyCallback)handle_inject_assistance_data_auth_ready,
@@ -1248,13 +1251,14 @@ handle_set_gps_refresh_rate_context_free (HandleSetGpsRefreshRateContext *ctx)
}
static void
-handle_set_gps_refresh_rate_auth_ready (MMBaseModem *self,
+handle_set_gps_refresh_rate_auth_ready (MMIfaceAuth *_self,
GAsyncResult *res,
HandleSetGpsRefreshRateContext *ctx)
{
+ MMIfaceModemLocation *self = MM_IFACE_MODEM_LOCATION (_self);
GError *error = NULL;
- if (!mm_base_modem_authorize_finish (self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (_self, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_set_gps_refresh_rate_context_free (ctx);
return;
@@ -1290,7 +1294,7 @@ handle_set_gps_refresh_rate (MmGdbusModemLocation *skeleton,
ctx->self = g_object_ref (self);
ctx->rate = rate;
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_DEVICE_CONTROL,
(GAsyncReadyCallback)handle_set_gps_refresh_rate_auth_ready,
@@ -1316,14 +1320,15 @@ handle_get_location_context_free (HandleGetLocationContext *ctx)
}
static void
-handle_get_location_auth_ready (MMBaseModem *self,
+handle_get_location_auth_ready (MMIfaceAuth *_self,
GAsyncResult *res,
HandleGetLocationContext *ctx)
{
+ MMIfaceModemLocation *self = MM_IFACE_MODEM_LOCATION (_self);
LocationContext *location_ctx;
GError *error = NULL;
- if (!mm_base_modem_authorize_finish (self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (_self, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_get_location_context_free (ctx);
return;
@@ -1354,7 +1359,7 @@ handle_get_location (MmGdbusModemLocation *skeleton,
ctx->invocation = g_object_ref (invocation);
ctx->self = g_object_ref (self);
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_LOCATION,
(GAsyncReadyCallback)handle_get_location_auth_ready,
diff --git a/src/mm-iface-modem-messaging.c b/src/mm-iface-modem-messaging.c
index 98e859a9..0634b578 100644
--- a/src/mm-iface-modem-messaging.c
+++ b/src/mm-iface-modem-messaging.c
@@ -180,14 +180,15 @@ handle_delete_ready (MMSmsList *list,
}
static void
-handle_delete_auth_ready (MMBaseModem *self,
+handle_delete_auth_ready (MMIfaceAuth *auth,
GAsyncResult *res,
HandleDeleteContext *ctx)
{
- g_autoptr(MMSmsList) list = NULL;
- GError *error = NULL;
+ MMIfaceModemMessaging *self = MM_IFACE_MODEM_MESSAGING (auth);
+ g_autoptr(MMSmsList) list = NULL;
+ GError *error = NULL;
- if (!mm_base_modem_authorize_finish (self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (auth, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_delete_context_free (ctx);
return;
@@ -236,7 +237,7 @@ handle_delete (MmGdbusModemMessaging *skeleton,
ctx->self = g_object_ref (self);
ctx->path = g_strdup (path);
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_MESSAGING,
(GAsyncReadyCallback)handle_delete_auth_ready,
@@ -264,16 +265,17 @@ handle_create_context_free (HandleCreateContext *ctx)
}
static void
-handle_create_auth_ready (MMBaseModem *self,
+handle_create_auth_ready (MMIfaceAuth *auth,
GAsyncResult *res,
HandleCreateContext *ctx)
{
+ MMIfaceModemMessaging *self = MM_IFACE_MODEM_MESSAGING (auth);
GError *error = NULL;
g_autoptr(MMSmsList) list = NULL;
g_autoptr(MMSmsProperties) properties = NULL;
g_autoptr(MMBaseSms) sms = NULL;
- if (!mm_base_modem_authorize_finish (self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (auth, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_create_context_free (ctx);
return;
@@ -334,7 +336,7 @@ handle_create (MmGdbusModemMessaging *skeleton,
ctx->self = g_object_ref (self);
ctx->dictionary = g_variant_ref (dictionary);
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_MESSAGING,
(GAsyncReadyCallback)handle_create_auth_ready,
@@ -416,13 +418,14 @@ handle_set_default_storage_ready (MMIfaceModemMessaging *self,
}
static void
-handle_set_default_storage_auth_ready (MMBaseModem *self,
+handle_set_default_storage_auth_ready (MMIfaceAuth *auth,
GAsyncResult *res,
HandleSetDefaultStorageContext *ctx)
{
+ MMIfaceModemMessaging *self = MM_IFACE_MODEM_MESSAGING (auth);
GError *error = NULL;
- if (!mm_base_modem_authorize_finish (self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (auth, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_set_default_storage_context_free (ctx);
return;
@@ -469,7 +472,7 @@ handle_set_default_storage (MmGdbusModemMessaging *skeleton,
ctx->self = g_object_ref (self);
ctx->storage = (MMSmsStorage)storage;
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_MESSAGING,
(GAsyncReadyCallback)handle_set_default_storage_auth_ready,
diff --git a/src/mm-iface-modem-oma.c b/src/mm-iface-modem-oma.c
index ca3278b8..37d6f4af 100644
--- a/src/mm-iface-modem-oma.c
+++ b/src/mm-iface-modem-oma.c
@@ -182,15 +182,16 @@ setup_ready (MMIfaceModemOma *self,
}
static void
-handle_setup_auth_ready (MMBaseModem *self,
+handle_setup_auth_ready (MMIfaceAuth *_self,
GAsyncResult *res,
HandleSetupContext *ctx)
{
+ MMIfaceModemOma *self = MM_IFACE_MODEM_OMA (_self);
GError *error = NULL;
MMModemState modem_state;
gchar *str;
- if (!mm_base_modem_authorize_finish (self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (_self, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_setup_context_free (ctx);
return;
@@ -240,7 +241,7 @@ handle_setup (MmGdbusModemOma *skeleton,
ctx->self = g_object_ref (self);
ctx->features = features;
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_DEVICE_CONTROL,
(GAsyncReadyCallback)handle_setup_auth_ready,
@@ -287,14 +288,15 @@ start_client_initiated_session_ready (MMIfaceModemOma *self,
}
static void
-handle_start_client_initiated_session_auth_ready (MMBaseModem *self,
+handle_start_client_initiated_session_auth_ready (MMIfaceAuth *_self,
GAsyncResult *res,
HandleStartClientInitiatedSessionContext *ctx)
{
+ MMIfaceModemOma *self = MM_IFACE_MODEM_OMA (_self);
GError *error = NULL;
MMModemState modem_state;
- if (!mm_base_modem_authorize_finish (self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (_self, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_start_client_initiated_session_context_free (ctx);
return;
@@ -355,7 +357,7 @@ handle_start_client_initiated_session (MmGdbusModemOma *skeleton,
ctx->self = g_object_ref (self);
ctx->session_type = session_type;
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_DEVICE_CONTROL,
(GAsyncReadyCallback)handle_start_client_initiated_session_auth_ready,
@@ -441,14 +443,15 @@ get_pending_network_initiated_session_type (MMIfaceModemOma *self,
}
static void
-handle_accept_network_initiated_session_auth_ready (MMBaseModem *self,
+handle_accept_network_initiated_session_auth_ready (MMIfaceAuth *_self,
GAsyncResult *res,
HandleAcceptNetworkInitiatedSessionContext *ctx)
{
+ MMIfaceModemOma *self = MM_IFACE_MODEM_OMA (_self);
GError *error = NULL;
MMModemState modem_state;
- if (!mm_base_modem_authorize_finish (self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (_self, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_accept_network_initiated_session_context_free (ctx);
return;
@@ -514,7 +517,7 @@ handle_accept_network_initiated_session (MmGdbusModemOma *skeleton,
ctx->session_id = session_id;
ctx->accept = accept;
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_DEVICE_CONTROL,
(GAsyncReadyCallback)handle_accept_network_initiated_session_auth_ready,
@@ -561,14 +564,15 @@ cancel_session_ready (MMIfaceModemOma *self,
}
static void
-handle_cancel_session_auth_ready (MMBaseModem *self,
+handle_cancel_session_auth_ready (MMIfaceAuth *_self,
GAsyncResult *res,
HandleCancelSessionContext *ctx)
{
+ MMIfaceModemOma *self = MM_IFACE_MODEM_OMA (_self);
GError *error = NULL;
MMModemState modem_state;
- if (!mm_base_modem_authorize_finish (self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (_self, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_cancel_session_context_free (ctx);
return;
@@ -612,7 +616,7 @@ handle_cancel_session (MmGdbusModemOma *skeleton,
ctx->invocation = g_object_ref (invocation);
ctx->self = g_object_ref (self);
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_DEVICE_CONTROL,
(GAsyncReadyCallback)handle_cancel_session_auth_ready,
diff --git a/src/mm-iface-modem-sar.c b/src/mm-iface-modem-sar.c
index 71726f26..4cd5a05c 100644
--- a/src/mm-iface-modem-sar.c
+++ b/src/mm-iface-modem-sar.c
@@ -98,13 +98,14 @@ enable_ready (MMIfaceModemSar *self,
}
static void
-handle_enable_auth_ready (MMBaseModem *self,
+handle_enable_auth_ready (MMIfaceAuth *_self,
GAsyncResult *res,
HandleEnableContext *ctx)
{
+ MMIfaceModemSar *self = MM_IFACE_MODEM_SAR (_self);
GError *error = NULL;
- if (!mm_base_modem_authorize_finish (self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (_self, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_enable_context_free (ctx);
return;
@@ -146,7 +147,7 @@ handle_enable (MmGdbusModemSar *skeleton,
ctx->self = g_object_ref (self);
ctx->enable = enable;
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_DEVICE_CONTROL,
(GAsyncReadyCallback)handle_enable_auth_ready,
@@ -193,13 +194,14 @@ set_power_level_ready (MMIfaceModemSar *self,
}
static void
-handle_set_power_level_auth_ready (MMBaseModem *self,
+handle_set_power_level_auth_ready (MMIfaceAuth *_self,
GAsyncResult *res,
HandleSetPowerLevelContext *ctx)
{
+ MMIfaceModemSar *self = MM_IFACE_MODEM_SAR (_self);
GError *error = NULL;
- if (!mm_base_modem_authorize_finish (self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (_self, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_set_power_level_context_free (ctx);
return;
@@ -248,7 +250,7 @@ handle_set_power_level (MmGdbusModemSar *skeleton,
ctx->self = g_object_ref (self);
ctx->power_level = level;
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_DEVICE_CONTROL,
(GAsyncReadyCallback)handle_set_power_level_auth_ready,
diff --git a/src/mm-iface-modem-signal.c b/src/mm-iface-modem-signal.c
index da37921b..9b61ccee 100644
--- a/src/mm-iface-modem-signal.c
+++ b/src/mm-iface-modem-signal.c
@@ -374,7 +374,7 @@ handle_setup_context_free (HandleSetupContext *ctx)
}
static void
-handle_setup_auth_ready (MMBaseModem *_self,
+handle_setup_auth_ready (MMIfaceAuth *_self,
GAsyncResult *res,
HandleSetupContext *ctx)
{
@@ -382,7 +382,7 @@ handle_setup_auth_ready (MMBaseModem *_self,
GError *error = NULL;
Private *priv;
- if (!mm_base_modem_authorize_finish (_self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (_self, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_setup_context_free (ctx);
return;
@@ -418,7 +418,7 @@ handle_setup (MmGdbusModemSignal *skeleton,
ctx->skeleton = g_object_ref (skeleton);
ctx->rate = rate;
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_DEVICE_CONTROL,
(GAsyncReadyCallback)handle_setup_auth_ready,
@@ -471,7 +471,7 @@ setup_thresholds_restart_ready (MMIfaceModemSignal *self,
}
static void
-handle_setup_thresholds_auth_ready (MMBaseModem *_self,
+handle_setup_thresholds_auth_ready (MMIfaceAuth *_self,
GAsyncResult *res,
HandleSetupThresholdsContext *ctx)
{
@@ -484,7 +484,7 @@ handle_setup_thresholds_auth_ready (MMBaseModem *_self,
priv = get_private (self);
- if (!mm_base_modem_authorize_finish (_self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (_self, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_setup_thresholds_context_free (ctx);
return;
@@ -545,7 +545,7 @@ handle_setup_thresholds (MmGdbusModemSignal *skeleton,
ctx->skeleton = g_object_ref (skeleton);
ctx->settings = g_variant_ref (settings);
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_DEVICE_CONTROL,
(GAsyncReadyCallback)handle_setup_thresholds_auth_ready,
diff --git a/src/mm-iface-modem-simple.c b/src/mm-iface-modem-simple.c
index 004371b2..b4ddbbe0 100644
--- a/src/mm-iface-modem-simple.c
+++ b/src/mm-iface-modem-simple.c
@@ -756,7 +756,7 @@ connection_step (ConnectionContext *ctx)
mm_obj_msg (ctx->self, "simple connect state (%d/%d): enable",
ctx->step, CONNECTION_STEP_LAST);
mm_base_modem_enable (MM_BASE_MODEM (ctx->self),
- MM_BASE_MODEM_OPERATION_LOCK_REQUIRED,
+ MM_OPERATION_LOCK_REQUIRED,
(GAsyncReadyCallback)enable_ready,
ctx);
return;
@@ -881,14 +881,15 @@ connection_step (ConnectionContext *ctx)
}
static void
-connect_auth_ready (MMBaseModem *self,
+connect_auth_ready (MMIfaceAuth *_self,
GAsyncResult *res,
ConnectionContext *ctx)
{
+ MMIfaceModemSimple *self = MM_IFACE_MODEM_SIMPLE (_self);
GError *error = NULL;
MMModemState current = MM_MODEM_STATE_UNKNOWN;
- if (!mm_base_modem_authorize_finish (self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (_self, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
connection_context_free (ctx);
return;
@@ -980,7 +981,7 @@ handle_connect (MmGdbusModemSimple *skeleton,
ctx->self = g_object_ref (self);
ctx->dictionary = g_variant_ref (dictionary);
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_DEVICE_CONTROL,
(GAsyncReadyCallback)connect_auth_ready,
@@ -1025,14 +1026,15 @@ bearer_list_disconnect_bearers_ready (MMBearerList *bearer_list,
}
static void
-disconnect_auth_ready (MMBaseModem *self,
+disconnect_auth_ready (MMIfaceAuth *_self,
GAsyncResult *res,
DisconnectionContext *ctx)
{
+ MMIfaceModemSimple *self = MM_IFACE_MODEM_SIMPLE (_self);
g_autoptr(MMBearerList) list = NULL;
GError *error = NULL;
- if (!mm_base_modem_authorize_finish (self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (_self, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
disconnection_context_free (ctx);
return;
@@ -1087,7 +1089,7 @@ handle_disconnect (MmGdbusModemSimple *skeleton,
if (g_strcmp0 (bearer_path, "/") != 0)
ctx->bearer_path = g_strdup (bearer_path);
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_DEVICE_CONTROL,
(GAsyncReadyCallback)disconnect_auth_ready,
diff --git a/src/mm-iface-modem-time.c b/src/mm-iface-modem-time.c
index 53d03b30..4f9e7f3f 100644
--- a/src/mm-iface-modem-time.c
+++ b/src/mm-iface-modem-time.c
@@ -75,14 +75,15 @@ load_network_time_ready (MMIfaceModemTime *self,
}
static void
-handle_get_network_time_auth_ready (MMBaseModem *self,
+handle_get_network_time_auth_ready (MMIfaceAuth *_self,
GAsyncResult *res,
HandleGetNetworkTimeContext *ctx)
{
- MMModemState state;
- GError *error = NULL;
+ MMIfaceModemTime *self = MM_IFACE_MODEM_TIME (_self);
+ MMModemState state;
+ GError *error = NULL;
- if (!mm_base_modem_authorize_finish (self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (_self, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_get_network_time_context_free (ctx);
return;
@@ -127,7 +128,7 @@ handle_get_network_time (MmGdbusModemTime *skeleton,
ctx->skeleton = g_object_ref (skeleton);
ctx->self = g_object_ref (self);
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_TIME,
(GAsyncReadyCallback)handle_get_network_time_auth_ready,
diff --git a/src/mm-iface-modem-voice.c b/src/mm-iface-modem-voice.c
index 01519bc3..bca51c83 100644
--- a/src/mm-iface-modem-voice.c
+++ b/src/mm-iface-modem-voice.c
@@ -596,14 +596,15 @@ handle_delete_context_free (HandleDeleteContext *ctx)
}
static void
-handle_delete_auth_ready (MMBaseModem *self,
+handle_delete_auth_ready (MMIfaceAuth *auth,
GAsyncResult *res,
HandleDeleteContext *ctx)
{
+ MMIfaceModemVoice *self = MM_IFACE_MODEM_VOICE (auth);
MMCallList *list = NULL;
GError *error = NULL;
- if (!mm_base_modem_authorize_finish (self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (auth, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_delete_context_free (ctx);
return;
@@ -643,7 +644,7 @@ handle_delete (MmGdbusModemVoice *skeleton,
ctx->self = g_object_ref (self);
ctx->path = g_strdup (path);
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_VOICE,
(GAsyncReadyCallback)handle_delete_auth_ready,
@@ -671,16 +672,17 @@ handle_create_context_free (HandleCreateContext *ctx)
}
static void
-handle_create_auth_ready (MMBaseModem *self,
+handle_create_auth_ready (MMIfaceAuth *auth,
GAsyncResult *res,
HandleCreateContext *ctx)
{
+ MMIfaceModemVoice *self = MM_IFACE_MODEM_VOICE (auth);
MMCallList *list = NULL;
GError *error = NULL;
MMCallProperties *properties;
MMBaseCall *call;
- if (!mm_base_modem_authorize_finish (self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (auth, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_create_context_free (ctx);
return;
@@ -746,7 +748,7 @@ handle_create (MmGdbusModemVoice *skeleton,
ctx->self = g_object_ref (self);
ctx->dictionary = g_variant_ref (dictionary);
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_VOICE,
(GAsyncReadyCallback)handle_create_auth_ready,
@@ -855,14 +857,15 @@ prepare_hold_and_accept_foreach (MMBaseCall *call,
}
static void
-handle_hold_and_accept_auth_ready (MMBaseModem *self,
+handle_hold_and_accept_auth_ready (MMIfaceAuth *auth,
GAsyncResult *res,
HandleHoldAndAcceptContext *ctx)
{
+ MMIfaceModemVoice *self = MM_IFACE_MODEM_VOICE (auth);
GError *error = NULL;
MMCallList *list = NULL;
- if (!mm_base_modem_authorize_finish (self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (auth, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_hold_and_accept_context_free (ctx);
return;
@@ -907,7 +910,7 @@ handle_hold_and_accept (MmGdbusModemVoice *skeleton,
ctx->invocation = g_object_ref (invocation);
ctx->self = g_object_ref (self);
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_VOICE,
(GAsyncReadyCallback)handle_hold_and_accept_auth_ready,
@@ -986,14 +989,15 @@ prepare_hangup_and_accept_foreach (MMBaseCall *call,
}
static void
-handle_hangup_and_accept_auth_ready (MMBaseModem *self,
+handle_hangup_and_accept_auth_ready (MMIfaceAuth *auth,
GAsyncResult *res,
HandleHangupAndAcceptContext *ctx)
{
+ MMIfaceModemVoice *self = MM_IFACE_MODEM_VOICE (auth);
GError *error = NULL;
MMCallList *list = NULL;
- if (!mm_base_modem_authorize_finish (self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (auth, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_hangup_and_accept_context_free (ctx);
return;
@@ -1038,7 +1042,7 @@ handle_hangup_and_accept (MmGdbusModemVoice *skeleton,
ctx->invocation = g_object_ref (invocation);
ctx->self = g_object_ref (self);
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_VOICE,
(GAsyncReadyCallback)handle_hangup_and_accept_auth_ready,
@@ -1127,14 +1131,15 @@ prepare_hangup_all_foreach (MMBaseCall *call,
}
static void
-handle_hangup_all_auth_ready (MMBaseModem *self,
+handle_hangup_all_auth_ready (MMIfaceAuth *auth,
GAsyncResult *res,
HandleHangupAllContext *ctx)
{
+ MMIfaceModemVoice *self = MM_IFACE_MODEM_VOICE (auth);
GError *error = NULL;
MMCallList *list = NULL;
- if (!mm_base_modem_authorize_finish (self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (auth, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_hangup_all_context_free (ctx);
return;
@@ -1179,7 +1184,7 @@ handle_hangup_all (MmGdbusModemVoice *skeleton,
ctx->invocation = g_object_ref (invocation);
ctx->self = g_object_ref (self);
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_VOICE,
(GAsyncReadyCallback)handle_hangup_all_auth_ready,
@@ -1248,14 +1253,15 @@ prepare_transfer_foreach (MMBaseCall *call,
}
static void
-handle_transfer_auth_ready (MMBaseModem *self,
+handle_transfer_auth_ready (MMIfaceAuth *auth,
GAsyncResult *res,
HandleTransferContext *ctx)
{
+ MMIfaceModemVoice *self = MM_IFACE_MODEM_VOICE (auth);
GError *error = NULL;
MMCallList *list = NULL;
- if (!mm_base_modem_authorize_finish (self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (auth, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_transfer_context_free (ctx);
return;
@@ -1300,7 +1306,7 @@ handle_transfer (MmGdbusModemVoice *skeleton,
ctx->invocation = g_object_ref (invocation);
ctx->self = g_object_ref (self);
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_VOICE,
(GAsyncReadyCallback)handle_transfer_auth_ready,
@@ -1344,13 +1350,14 @@ call_waiting_setup_ready (MMIfaceModemVoice *self,
}
static void
-handle_call_waiting_setup_auth_ready (MMBaseModem *self,
+handle_call_waiting_setup_auth_ready (MMIfaceAuth *auth,
GAsyncResult *res,
HandleCallWaitingSetupContext *ctx)
{
+ MMIfaceModemVoice *self = MM_IFACE_MODEM_VOICE (auth);
GError *error = NULL;
- if (!mm_base_modem_authorize_finish (self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (auth, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_call_waiting_setup_context_free (ctx);
return;
@@ -1386,7 +1393,7 @@ handle_call_waiting_setup (MmGdbusModemVoice *skeleton,
ctx->self = g_object_ref (self);
ctx->enable = enable;
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_VOICE,
(GAsyncReadyCallback)handle_call_waiting_setup_auth_ready,
@@ -1431,13 +1438,14 @@ call_waiting_query_ready (MMIfaceModemVoice *self,
}
static void
-handle_call_waiting_query_auth_ready (MMBaseModem *self,
+handle_call_waiting_query_auth_ready (MMIfaceAuth *auth,
GAsyncResult *res,
HandleCallWaitingQueryContext *ctx)
{
+ MMIfaceModemVoice *self = MM_IFACE_MODEM_VOICE (auth);
GError *error = NULL;
- if (!mm_base_modem_authorize_finish (self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (auth, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_call_waiting_query_context_free (ctx);
return;
@@ -1470,7 +1478,7 @@ handle_call_waiting_query (MmGdbusModemVoice *skeleton,
ctx->invocation = g_object_ref (invocation);
ctx->self = g_object_ref (self);
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_VOICE,
(GAsyncReadyCallback)handle_call_waiting_query_auth_ready,
diff --git a/src/mm-iface-modem.c b/src/mm-iface-modem.c
index 75c2ca63..7bd0f0ff 100644
--- a/src/mm-iface-modem.c
+++ b/src/mm-iface-modem.c
@@ -33,6 +33,7 @@
#include "mm-log-object.h"
#include "mm-log-helpers.h"
#include "mm-context.h"
+#include "mm-iface-op-lock.h"
#include "mm-dispatcher-fcc-unlock.h"
#if defined WITH_QMI
# include "mm-broadband-modem-qmi.h"
@@ -362,8 +363,8 @@ mm_iface_modem_process_sim_event (MMIfaceModem *self)
* allow any additional lock request any more. */
mm_base_modem_set_reprobe (MM_BASE_MODEM (self), TRUE);
mm_base_modem_disable (MM_BASE_MODEM (self),
- MM_BASE_MODEM_OPERATION_LOCK_REQUIRED,
- MM_BASE_MODEM_OPERATION_PRIORITY_OVERRIDE,
+ MM_OPERATION_LOCK_REQUIRED,
+ MM_OPERATION_PRIORITY_OVERRIDE,
(GAsyncReadyCallback) after_sim_event_disable_ready,
NULL);
}
@@ -1050,14 +1051,14 @@ handle_create_bearer_ready (MMIfaceModem *self,
}
static void
-handle_create_bearer_auth_ready (MMBaseModem *self,
+handle_create_bearer_auth_ready (MMIfaceAuth *self,
GAsyncResult *res,
HandleCreateBearerContext *ctx)
{
g_autoptr(MMBearerProperties) properties = NULL;
GError *error = NULL;
- if (!mm_base_modem_authorize_finish (self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (self, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_create_bearer_context_free (ctx);
return;
@@ -1099,7 +1100,7 @@ handle_create_bearer (MmGdbusModem *skeleton,
ctx->self = g_object_ref (self);
ctx->dictionary = g_variant_ref (dictionary);
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_DEVICE_CONTROL,
(GAsyncReadyCallback)handle_create_bearer_auth_ready,
@@ -1148,13 +1149,13 @@ command_ready (MMIfaceModem *self,
}
static void
-handle_command_auth_ready (MMBaseModem *self,
+handle_command_auth_ready (MMIfaceAuth *self,
GAsyncResult *res,
HandleCommandContext *ctx)
{
GError *error = NULL;
- if (!mm_base_modem_authorize_finish (self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (self, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_command_context_free (ctx);
return;
@@ -1202,7 +1203,7 @@ handle_command (MmGdbusModem *skeleton,
ctx->cmd = g_strdup (cmd);
ctx->timeout = timeout;
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_DEVICE_CONTROL,
(GAsyncReadyCallback)handle_command_auth_ready,
@@ -1258,13 +1259,13 @@ delete_bearer_disconnect_ready (MMBaseBearer *bearer,
}
static void
-handle_delete_bearer_auth_ready (MMBaseModem *self,
+handle_delete_bearer_auth_ready (MMIfaceAuth *self,
GAsyncResult *res,
HandleDeleteBearerContext *ctx)
{
GError *error = NULL;
- if (!mm_base_modem_authorize_finish (self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (self, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_delete_bearer_context_free (ctx);
return;
@@ -1313,7 +1314,7 @@ handle_delete_bearer (MmGdbusModem *skeleton,
MM_IFACE_MODEM_BEARER_LIST, &ctx->list,
NULL);
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_DEVICE_CONTROL,
(GAsyncReadyCallback)handle_delete_bearer_auth_ready,
@@ -1396,14 +1397,14 @@ set_primary_sim_slot_ready (MMIfaceModem *self,
}
static void
-handle_set_primary_sim_slot_auth_ready (MMBaseModem *self,
+handle_set_primary_sim_slot_auth_ready (MMIfaceAuth *self,
GAsyncResult *res,
HandleSetPrimarySimSlotContext *ctx)
{
GError *error = NULL;
const gchar *const *sim_slot_paths;
- if (!mm_base_modem_authorize_finish (self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (self, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_set_primary_sim_slot_context_free (ctx);
return;
@@ -1448,7 +1449,7 @@ handle_set_primary_sim_slot (MmGdbusModem *skeleton,
ctx->self = g_object_ref (self);
ctx->requested_sim_slot = sim_slot;
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_DEVICE_CONTROL,
(GAsyncReadyCallback)handle_set_primary_sim_slot_auth_ready,
@@ -1516,13 +1517,13 @@ get_cell_info_ready (MMIfaceModem *self,
}
static void
-handle_get_cell_info_auth_ready (MMBaseModem *self,
+handle_get_cell_info_auth_ready (MMIfaceAuth *self,
GAsyncResult *res,
HandleGetCellInfoContext *ctx)
{
GError *error = NULL;
- if (!mm_base_modem_authorize_finish (self, res, &error)) {
+ if (!mm_iface_auth_authorize_finish (self, res, &error)) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_get_cell_info_context_free (ctx);
return;
@@ -1560,7 +1561,7 @@ handle_get_cell_info (MmGdbusModem *skeleton,
ctx->invocation = g_object_ref (invocation);
ctx->self = g_object_ref (self);
- mm_base_modem_authorize (MM_BASE_MODEM (self),
+ mm_iface_auth_authorize (MM_IFACE_AUTH (self),
invocation,
MM_AUTHORIZATION_DEVICE_CONTROL,
(GAsyncReadyCallback)handle_get_cell_info_auth_ready,
@@ -2294,7 +2295,7 @@ static void
handle_enable_context_free (HandleEnableContext *ctx)
{
if (ctx->operation_id >= 0)
- mm_base_modem_operation_unlock (MM_BASE_MODEM (ctx->self), ctx->operation_id);
+ mm_iface_op_lock_unlock (MM_IFACE_OP_LOCK (ctx->self), ctx->operation_id);
g_object_unref (ctx->skeleton);
g_object_unref (ctx->invocation);
@@ -2331,13 +2332,14 @@ enable_ready (MMBaseModem *self,
}
static void
-handle_enable_auth_ready (MMBaseModem *self,
+handle_enable_auth_ready (MMIfaceOpLock *_self,
GAsyncResult *res,
HandleEnableContext *ctx)
{
+ MMBaseModem *self = MM_BASE_MODEM (_self);
GError *error = NULL;
- ctx->operation_id = mm_base_modem_authorize_and_operation_lock_finish (self, res, &error);
+ ctx->operation_id = mm_iface_op_lock_authorize_and_lock_finish (_self, res, &error);
if (ctx->operation_id < 0) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_enable_context_free (ctx);
@@ -2352,14 +2354,14 @@ handle_enable_auth_ready (MMBaseModem *self,
if (ctx->enable) {
mm_obj_info (self, "processing user request to enable modem...");
mm_base_modem_enable (self,
- MM_BASE_MODEM_OPERATION_LOCK_ALREADY_ACQUIRED,
+ MM_OPERATION_LOCK_ALREADY_ACQUIRED,
(GAsyncReadyCallback)enable_ready,
ctx);
} else {
mm_obj_info (self, "processing user request to disable modem...");
mm_base_modem_disable (self,
- MM_BASE_MODEM_OPERATION_LOCK_ALREADY_ACQUIRED,
- MM_BASE_MODEM_OPERATION_PRIORITY_UNKNOWN,
+ MM_OPERATION_LOCK_ALREADY_ACQUIRED,
+ MM_OPERATION_PRIORITY_UNKNOWN,
(GAsyncReadyCallback)enable_ready,
ctx);
}
@@ -2380,13 +2382,13 @@ handle_enable (MmGdbusModem *skeleton,
ctx->enable = enable;
ctx->operation_id = -1;
- mm_base_modem_authorize_and_operation_lock (MM_BASE_MODEM (self),
- invocation,
- MM_AUTHORIZATION_DEVICE_CONTROL,
- MM_BASE_MODEM_OPERATION_PRIORITY_DEFAULT,
- enable ? "enable" : "disable",
- (GAsyncReadyCallback)handle_enable_auth_ready,
- ctx);
+ mm_iface_op_lock_authorize_and_lock (MM_IFACE_OP_LOCK (self),
+ invocation,
+ MM_AUTHORIZATION_DEVICE_CONTROL,
+ MM_OPERATION_PRIORITY_DEFAULT,
+ enable ? "enable" : "disable",
+ (GAsyncReadyCallback)handle_enable_auth_ready,
+ ctx);
return TRUE;
}
@@ -2406,7 +2408,7 @@ static void
handle_set_power_state_context_free (HandleSetPowerStateContext *ctx)
{
if (ctx->operation_id >= 0)
- mm_base_modem_operation_unlock (MM_BASE_MODEM (ctx->self), ctx->operation_id);
+ mm_iface_op_lock_unlock (MM_IFACE_OP_LOCK (ctx->self), ctx->operation_id);
g_assert (!ctx->saved_error);
g_object_unref (ctx->skeleton);
@@ -2442,8 +2444,8 @@ disable_after_low (MMIfaceModem *self,
{
mm_obj_info (self, "automatically disable modem after low-power mode...");
mm_base_modem_disable (MM_BASE_MODEM (self),
- MM_BASE_MODEM_OPERATION_LOCK_ALREADY_ACQUIRED,
- MM_BASE_MODEM_OPERATION_PRIORITY_UNKNOWN,
+ MM_OPERATION_LOCK_ALREADY_ACQUIRED,
+ MM_OPERATION_PRIORITY_UNKNOWN,
(GAsyncReadyCallback)disable_after_low_ready,
ctx);
}
@@ -2477,14 +2479,15 @@ set_power_state_ready (MMIfaceModem *self,
}
static void
-handle_set_power_state_auth_ready (MMBaseModem *self,
+handle_set_power_state_auth_ready (MMIfaceOpLock *_self,
GAsyncResult *res,
HandleSetPowerStateContext *ctx)
{
+ MMBaseModem *self = MM_BASE_MODEM (_self);
MMModemState modem_state;
GError *error = NULL;
- ctx->operation_id = mm_base_modem_authorize_and_operation_lock_finish (self, res, &error);
+ ctx->operation_id = mm_iface_op_lock_authorize_and_lock_finish (_self, res, &error);
if (ctx->operation_id < 0) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_set_power_state_context_free (ctx);
@@ -2559,13 +2562,13 @@ handle_set_power_state (MmGdbusModem *skeleton,
}
operation_name = g_strdup_printf ("set-power-state-%s", mm_modem_power_state_get_string (ctx->power_state));
- mm_base_modem_authorize_and_operation_lock (MM_BASE_MODEM (self),
- invocation,
- MM_AUTHORIZATION_DEVICE_CONTROL,
- MM_BASE_MODEM_OPERATION_PRIORITY_DEFAULT,
- operation_name,
- (GAsyncReadyCallback)handle_set_power_state_auth_ready,
- ctx);
+ mm_iface_op_lock_authorize_and_lock (MM_IFACE_OP_LOCK (self),
+ invocation,
+ MM_AUTHORIZATION_DEVICE_CONTROL,
+ MM_OPERATION_PRIORITY_DEFAULT,
+ operation_name,
+ (GAsyncReadyCallback)handle_set_power_state_auth_ready,
+ ctx);
return TRUE;
}
@@ -2582,7 +2585,7 @@ static void
handle_reset_context_free (HandleResetContext *ctx)
{
if (ctx->operation_id >= 0)
- mm_base_modem_operation_unlock (MM_BASE_MODEM (ctx->self), ctx->operation_id);
+ mm_iface_op_lock_unlock (MM_IFACE_OP_LOCK (ctx->self), ctx->operation_id);
g_object_unref (ctx->skeleton);
g_object_unref (ctx->invocation);
@@ -2609,13 +2612,14 @@ handle_reset_ready (MMIfaceModem *self,
}
static void
-handle_reset_auth_ready (MMBaseModem *self,
+handle_reset_auth_ready (MMIfaceOpLock *_self,
GAsyncResult *res,
HandleResetContext *ctx)
{
- GError *error = NULL;
+ MMBaseModem *self = MM_BASE_MODEM (_self);
+ GError *error = NULL;
- ctx->operation_id = mm_base_modem_authorize_and_operation_lock_finish (self, res, &error);
+ ctx->operation_id = mm_iface_op_lock_authorize_and_lock_finish (_self, res, &error);
if (ctx->operation_id < 0) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_reset_context_free (ctx);
@@ -2649,13 +2653,13 @@ handle_reset (MmGdbusModem *skeleton,
ctx->self = g_object_ref (self);
ctx->operation_id = -1;
- mm_base_modem_authorize_and_operation_lock (MM_BASE_MODEM (self),
- invocation,
- MM_AUTHORIZATION_DEVICE_CONTROL,
- MM_BASE_MODEM_OPERATION_PRIORITY_DEFAULT,
- "reset",
- (GAsyncReadyCallback)handle_reset_auth_ready,
- ctx);
+ mm_iface_op_lock_authorize_and_lock (MM_IFACE_OP_LOCK (self),
+ invocation,
+ MM_AUTHORIZATION_DEVICE_CONTROL,
+ MM_OPERATION_PRIORITY_DEFAULT,
+ "reset",
+ (GAsyncReadyCallback)handle_reset_auth_ready,
+ ctx);
return TRUE;
}
@@ -2674,7 +2678,7 @@ static void
handle_factory_reset_context_free (HandleFactoryResetContext *ctx)
{
if (ctx->operation_id >= 0)
- mm_base_modem_operation_unlock (MM_BASE_MODEM (ctx->self), ctx->operation_id);
+ mm_iface_op_lock_unlock (MM_IFACE_OP_LOCK (ctx->self), ctx->operation_id);
g_object_unref (ctx->skeleton);
g_object_unref (ctx->invocation);
@@ -2702,13 +2706,14 @@ handle_factory_reset_ready (MMIfaceModem *self,
}
static void
-handle_factory_reset_auth_ready (MMBaseModem *self,
+handle_factory_reset_auth_ready (MMIfaceOpLock *_self,
GAsyncResult *res,
HandleFactoryResetContext *ctx)
{
- GError *error = NULL;
+ MMBaseModem *self = MM_BASE_MODEM (_self);
+ GError *error = NULL;
- ctx->operation_id = mm_base_modem_authorize_and_operation_lock_finish (self, res, &error);
+ ctx->operation_id = mm_iface_op_lock_authorize_and_lock_finish (_self, res, &error);
if (ctx->operation_id < 0) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_factory_reset_context_free (ctx);
@@ -2745,13 +2750,13 @@ handle_factory_reset (MmGdbusModem *skeleton,
ctx->code = g_strdup (code);
ctx->operation_id = -1;
- mm_base_modem_authorize_and_operation_lock (MM_BASE_MODEM (self),
- invocation,
- MM_AUTHORIZATION_DEVICE_CONTROL,
- MM_BASE_MODEM_OPERATION_PRIORITY_DEFAULT,
- "factory-reset",
- (GAsyncReadyCallback)handle_factory_reset_auth_ready,
- ctx);
+ mm_iface_op_lock_authorize_and_lock (MM_IFACE_OP_LOCK (self),
+ invocation,
+ MM_AUTHORIZATION_DEVICE_CONTROL,
+ MM_OPERATION_PRIORITY_DEFAULT,
+ "factory-reset",
+ (GAsyncReadyCallback)handle_factory_reset_auth_ready,
+ ctx);
return TRUE;
}
@@ -2777,7 +2782,7 @@ static void
handle_set_current_capabilities_context_free (HandleSetCurrentCapabilitiesContext *ctx)
{
if (ctx->operation_id >= 0)
- mm_base_modem_operation_unlock (MM_BASE_MODEM (ctx->self), ctx->operation_id);
+ mm_iface_op_lock_unlock (MM_IFACE_OP_LOCK (ctx->self), ctx->operation_id);
g_free (ctx->capabilities_str);
g_object_unref (ctx->skeleton);
@@ -2807,16 +2812,17 @@ set_current_capabilities_ready (MMIfaceModem *self,
}
static void
-handle_set_current_capabilities_auth_ready (MMBaseModem *self,
+handle_set_current_capabilities_auth_ready (MMIfaceOpLock *_self,
GAsyncResult *res,
HandleSetCurrentCapabilitiesContext *ctx)
{
+ MMBaseModem *self = MM_BASE_MODEM (_self);
GError *error = NULL;
g_autoptr(GArray) supported = NULL;
gboolean matched = FALSE;
guint i;
- ctx->operation_id = mm_base_modem_authorize_and_operation_lock_finish (self, res, &error);
+ ctx->operation_id = mm_iface_op_lock_authorize_and_lock_finish (_self, res, &error);
if (ctx->operation_id < 0) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_set_current_capabilities_context_free (ctx);
@@ -2890,13 +2896,13 @@ handle_set_current_capabilities (MmGdbusModem *skeleton,
ctx->capabilities = capabilities;
ctx->operation_id = -1;
- mm_base_modem_authorize_and_operation_lock (MM_BASE_MODEM (self),
- invocation,
- MM_AUTHORIZATION_DEVICE_CONTROL,
- MM_BASE_MODEM_OPERATION_PRIORITY_DEFAULT,
- "set-current-capabilities",
- (GAsyncReadyCallback)handle_set_current_capabilities_auth_ready,
- ctx);
+ mm_iface_op_lock_authorize_and_lock (MM_IFACE_OP_LOCK (self),
+ invocation,
+ MM_AUTHORIZATION_DEVICE_CONTROL,
+ MM_OPERATION_PRIORITY_DEFAULT,
+ "set-current-capabilities",
+ (GAsyncReadyCallback)handle_set_current_capabilities_auth_ready,
+ ctx);
return TRUE;
}
@@ -3267,7 +3273,7 @@ static void
handle_set_current_bands_context_free (HandleSetCurrentBandsContext *ctx)
{
if (ctx->operation_id >= 0)
- mm_base_modem_operation_unlock (MM_BASE_MODEM (ctx->self), ctx->operation_id);
+ mm_iface_op_lock_unlock (MM_IFACE_OP_LOCK (ctx->self), ctx->operation_id);
g_free (ctx->bands_str);
g_variant_unref (ctx->bands);
@@ -3298,14 +3304,15 @@ handle_set_current_bands_ready (MMIfaceModem *self,
}
static void
-handle_set_current_bands_auth_ready (MMBaseModem *self,
+handle_set_current_bands_auth_ready (MMIfaceOpLock *_self,
GAsyncResult *res,
HandleSetCurrentBandsContext *ctx)
{
+ MMBaseModem *self = MM_BASE_MODEM (_self);
g_autoptr(GArray) bands_array = NULL;
GError *error = NULL;
- ctx->operation_id = mm_base_modem_authorize_and_operation_lock_finish (self, res, &error);
+ ctx->operation_id = mm_iface_op_lock_authorize_and_lock_finish (_self, res, &error);
if (ctx->operation_id < 0) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_set_current_bands_context_free (ctx);
@@ -3342,13 +3349,13 @@ handle_set_current_bands (MmGdbusModem *skeleton,
ctx->bands = g_variant_ref (bands_variant);
ctx->operation_id = -1;
- mm_base_modem_authorize_and_operation_lock (MM_BASE_MODEM (self),
- invocation,
- MM_AUTHORIZATION_DEVICE_CONTROL,
- MM_BASE_MODEM_OPERATION_PRIORITY_DEFAULT,
- "set-current-bands",
- (GAsyncReadyCallback)handle_set_current_bands_auth_ready,
- ctx);
+ mm_iface_op_lock_authorize_and_lock (MM_IFACE_OP_LOCK (self),
+ invocation,
+ MM_AUTHORIZATION_DEVICE_CONTROL,
+ MM_OPERATION_PRIORITY_DEFAULT,
+ "set-current-bands",
+ (GAsyncReadyCallback)handle_set_current_bands_auth_ready,
+ ctx);
return TRUE;
}
@@ -3672,7 +3679,7 @@ static void
handle_set_current_modes_context_free (HandleSetCurrentModesContext *ctx)
{
if (ctx->operation_id >= 0)
- mm_base_modem_operation_unlock (MM_BASE_MODEM (ctx->self), ctx->operation_id);
+ mm_iface_op_lock_unlock (MM_IFACE_OP_LOCK (ctx->self), ctx->operation_id);
g_free (ctx->preferred_str);
g_free (ctx->allowed_str);
@@ -3705,13 +3712,14 @@ handle_set_current_modes_ready (MMIfaceModem *self,
}
static void
-handle_set_current_modes_auth_ready (MMBaseModem *self,
+handle_set_current_modes_auth_ready (MMIfaceOpLock *_self,
GAsyncResult *res,
HandleSetCurrentModesContext *ctx)
{
- GError *error = NULL;
+ MMBaseModem *self = MM_BASE_MODEM (_self);
+ GError *error = NULL;
- ctx->operation_id = mm_base_modem_authorize_and_operation_lock_finish (self, res, &error);
+ ctx->operation_id = mm_iface_op_lock_authorize_and_lock_finish (_self, res, &error);
if (ctx->operation_id < 0) {
mm_dbus_method_invocation_take_error (ctx->invocation, error);
handle_set_current_modes_context_free (ctx);
@@ -3753,13 +3761,13 @@ handle_set_current_modes (MmGdbusModem *skeleton,
&ctx->allowed,
&ctx->preferred);
- mm_base_modem_authorize_and_operation_lock (MM_BASE_MODEM (self),
- invocation,
- MM_AUTHORIZATION_DEVICE_CONTROL,
- MM_BASE_MODEM_OPERATION_PRIORITY_DEFAULT,
- "set-current-modes",
- (GAsyncReadyCallback)handle_set_current_modes_auth_ready,
- ctx);
+ mm_iface_op_lock_authorize_and_lock (MM_IFACE_OP_LOCK (self),
+ invocation,
+ MM_AUTHORIZATION_DEVICE_CONTROL,
+ MM_OPERATION_PRIORITY_DEFAULT,
+ "set-current-modes",
+ (GAsyncReadyCallback)handle_set_current_modes_auth_ready,
+ ctx);
return TRUE;
}
@@ -3784,7 +3792,7 @@ restart_initialize_idle (MMIfaceModem *self)
priv = get_private (self);
mm_base_modem_initialize (MM_BASE_MODEM (self),
- MM_BASE_MODEM_OPERATION_LOCK_REQUIRED,
+ MM_OPERATION_LOCK_REQUIRED,
(GAsyncReadyCallback) reinitialize_ready,
NULL);
diff --git a/src/mm-iface-op-lock.c b/src/mm-iface-op-lock.c
new file mode 100644
index 00000000..5adbb385
--- /dev/null
+++ b/src/mm-iface-op-lock.c
@@ -0,0 +1,71 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details:
+ *
+ * Copyright (C) 2012 Google, Inc.
+ * Copyright (C) 2025 Dan Williams <dan@ioncontrol.co>
+ */
+
+#include <ModemManager.h>
+#define _LIBMM_INSIDE_MM
+#include <libmm-glib.h>
+
+#include "mm-iface-op-lock.h"
+
+G_DEFINE_INTERFACE (MMIfaceOpLock, mm_iface_op_lock, G_TYPE_OBJECT)
+
+/*****************************************************************************/
+
+void
+mm_iface_op_lock_authorize_and_lock (MMIfaceOpLock *self,
+ GDBusMethodInvocation *invocation,
+ const gchar *authorization,
+ MMOperationPriority operation_priority,
+ const gchar *operation_description,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_assert (MM_IFACE_OP_LOCK_GET_IFACE (self)->authorize_and_lock != NULL);
+
+ MM_IFACE_OP_LOCK_GET_IFACE (self)->authorize_and_lock (self,
+ invocation,
+ authorization,
+ operation_priority,
+ operation_description,
+ callback,
+ user_data);
+}
+
+gssize
+mm_iface_op_lock_authorize_and_lock_finish (MMIfaceOpLock *self,
+ GAsyncResult *res,
+ GError **error)
+{
+ g_assert (MM_IFACE_OP_LOCK_GET_IFACE (self)->authorize_and_lock_finish != NULL);
+
+ return MM_IFACE_OP_LOCK_GET_IFACE (self)->authorize_and_lock_finish (self, res, error);
+}
+
+void
+mm_iface_op_lock_unlock (MMIfaceOpLock *self,
+ gssize operation_id)
+{
+ g_assert (MM_IFACE_OP_LOCK_GET_IFACE (self)->unlock != NULL);
+
+ return MM_IFACE_OP_LOCK_GET_IFACE (self)->unlock (self, operation_id);
+}
+
+/*****************************************************************************/
+
+static void
+mm_iface_op_lock_default_init (MMIfaceOpLockInterface *iface)
+{
+}
diff --git a/src/mm-iface-op-lock.h b/src/mm-iface-op-lock.h
new file mode 100644
index 00000000..665e70f8
--- /dev/null
+++ b/src/mm-iface-op-lock.h
@@ -0,0 +1,79 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details:
+ *
+ * Copyright (C) 2025 Dan Williams <dan@ioncontrol.co>
+ */
+
+#ifndef MM_IFACE_OP_LOCK_H
+#define MM_IFACE_OP_LOCK_H
+
+#include <glib-object.h>
+#include <gio/gio.h>
+
+#define _LIBMM_INSIDE_MM
+#include <libmm-glib.h>
+
+typedef enum { /*< underscore_name=mm_operation_priority >*/
+ MM_OPERATION_PRIORITY_UNKNOWN,
+ /* Default operations are scheduled at the end of the list of pending
+ * operations */
+ MM_OPERATION_PRIORITY_DEFAULT,
+ /* An override operation will make all pending operations be cancelled, and
+ * it will also disallow adding new operations. This type of operation would
+ * be the last one expected in a modem object. */
+ MM_OPERATION_PRIORITY_OVERRIDE,
+} MMOperationPriority;
+
+typedef enum {
+ MM_OPERATION_LOCK_REQUIRED,
+ MM_OPERATION_LOCK_ALREADY_ACQUIRED,
+} MMOperationLock;
+
+#define MM_TYPE_IFACE_OP_LOCK mm_iface_op_lock_get_type ()
+G_DECLARE_INTERFACE (MMIfaceOpLock, mm_iface_op_lock, MM, IFACE_OP_LOCK, GObject)
+
+struct _MMIfaceOpLockInterface {
+ GTypeInterface g_iface;
+
+ void (* authorize_and_lock) (MMIfaceOpLock *self,
+ GDBusMethodInvocation *invocation,
+ const gchar *authorization,
+ MMOperationPriority operation_priority,
+ const gchar *operation_description,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+ gssize (* authorize_and_lock_finish) (MMIfaceOpLock *self,
+ GAsyncResult *res,
+ GError **error);
+
+ void (*unlock) (MMIfaceOpLock *self,
+ gssize operation_id);
+};
+
+
+void mm_iface_op_lock_authorize_and_lock (MMIfaceOpLock *self,
+ GDBusMethodInvocation *invocation,
+ const gchar *authorization,
+ MMOperationPriority operation_priority,
+ const gchar *operation_description,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gssize mm_iface_op_lock_authorize_and_lock_finish (MMIfaceOpLock *self,
+ GAsyncResult *res,
+ GError **error);
+
+void mm_iface_op_lock_unlock (MMIfaceOpLock *self,
+ gssize operation_id);
+
+#endif /* MM_IFACE_OP_LOCK_H */