diff options
author | Dan Williams <dan@ioncontrol.co> | 2025-04-19 19:43:08 -0500 |
---|---|---|
committer | Dan Williams <dan@ioncontrol.co> | 2025-05-08 20:24:38 -0500 |
commit | 03027b5ec2821b11c64966b2bf79d24ef42d5777 (patch) | |
tree | 00fb9bcaa157d60deeddb2827353a6d4afddf0f7 | |
parent | 97c189910bfb6cf4974a04d34a2e53a8bd1cfdf1 (diff) |
base-sms: remove MODEM property
No longer depend on MMBaseModem since everything that specifically
uses it is now removed.
Signed-off-by: Dan Williams <dan@ioncontrol.co>
-rw-r--r-- | src/mm-base-sms.c | 34 | ||||
-rw-r--r-- | src/mm-base-sms.h | 6 | ||||
-rw-r--r-- | src/mm-iface-modem-messaging.c | 2 | ||||
-rw-r--r-- | src/mm-sms-at.c | 3 | ||||
-rw-r--r-- | src/mm-sms-list.c | 2 | ||||
-rw-r--r-- | src/mm-sms-mbim.c | 60 | ||||
-rw-r--r-- | src/mm-sms-mbim.h | 2 | ||||
-rw-r--r-- | src/mm-sms-qmi.c | 84 | ||||
-rw-r--r-- | src/mm-sms-qmi.h | 2 |
9 files changed, 95 insertions, 100 deletions
diff --git a/src/mm-base-sms.c b/src/mm-base-sms.c index 410ccc74..4f67d5ea 100644 --- a/src/mm-base-sms.c +++ b/src/mm-base-sms.c @@ -27,10 +27,7 @@ #include <libmm-glib.h> #include "mm-base-sms.h" -#include "mm-broadband-modem.h" #include "mm-auth-provider.h" -#include "mm-iface-modem.h" -#include "mm-iface-modem-messaging.h" #include "mm-sms-part-3gpp.h" #include "mm-log-object.h" #include "mm-modem-helpers.h" @@ -50,7 +47,6 @@ enum { PROP_PATH, PROP_CONNECTION, PROP_BIND_TO, - PROP_MODEM, PROP_IS_MULTIPART, PROP_MAX_PARTS, PROP_MULTIPART_REFERENCE, @@ -75,6 +71,12 @@ struct _MMBaseSmsPrivate { /* The connection to the system bus */ GDBusConnection *connection; guint dbus_id; + /* Object to which our connection property should be bound */ + GObject *connection_parent; + /* GObject property name of the parent's connection property to + * which this SMS"s connection should be bound. + */ + gchar *connection_parent_property_name; /* The authorization provider */ MMAuthProvider *authp; @@ -83,8 +85,6 @@ struct _MMBaseSmsPrivate { /* The object this SMS is bound to */ GObject *bind_to; - /* The modem which owns this SMS */ - MMBaseModem *modem; /* The path where the SMS object is exported */ gchar *path; @@ -1094,13 +1094,11 @@ mm_base_sms_multipart_take_part (MMBaseSms *self, gboolean mm_base_sms_singlepart_init (MMBaseSms *self, - MMBaseModem *modem, MMSmsState state, MMSmsStorage storage, MMSmsPart *part, GError **error) { - g_assert (MM_IS_IFACE_MODEM_MESSAGING (modem)); g_assert (self->priv->initialized == FALSE); g_object_set (self, @@ -1129,7 +1127,6 @@ mm_base_sms_singlepart_init (MMBaseSms *self, gboolean mm_base_sms_multipart_init (MMBaseSms *self, - MMBaseModem *modem, MMSmsState state, MMSmsStorage storage, guint reference, @@ -1137,7 +1134,6 @@ mm_base_sms_multipart_init (MMBaseSms *self, MMSmsPart *first_part, GError **error) { - g_assert (MM_IS_IFACE_MODEM_MESSAGING (modem)); g_assert (self->priv->initialized == FALSE); /* If this is the first part of a RECEIVED SMS, we overwrite the state @@ -1173,14 +1169,12 @@ mm_base_sms_multipart_init (MMBaseSms *self, gboolean mm_base_sms_init_from_properties (MMBaseSms *self, - MMBaseModem *modem, MMSmsProperties *props, GError **error) { const gchar *text; GByteArray *data; - g_assert (MM_IS_IFACE_MODEM_MESSAGING (modem)); g_assert (self->priv->initialized == FALSE); text = mm_sms_properties_get_text (props); @@ -1301,10 +1295,6 @@ set_property (GObject *object, self->priv->bind_to = g_value_dup_object (value); mm_bind_to (MM_BIND (self), MM_BASE_SMS_CONNECTION, self->priv->bind_to); break; - case PROP_MODEM: - g_clear_object (&self->priv->modem); - self->priv->modem = g_value_dup_object (value); - break; case PROP_IS_MULTIPART: self->priv->is_multipart = g_value_get_boolean (value); break; @@ -1349,9 +1339,6 @@ get_property (GObject *object, case PROP_BIND_TO: g_value_set_object (value, self->priv->bind_to); break; - case PROP_MODEM: - g_value_set_object (value, self->priv->modem); - break; case PROP_IS_MULTIPART: g_value_set_boolean (value, self->priv->is_multipart); break; @@ -1417,7 +1404,6 @@ dispose (GObject *object) g_clear_object (&self->priv->connection); } - g_clear_object (&self->priv->modem); g_clear_object (&self->priv->bind_to); g_cancellable_cancel (self->priv->authp_cancellable); g_clear_object (&self->priv->authp_cancellable); @@ -1468,14 +1454,6 @@ mm_base_sms_class_init (MMBaseSmsClass *klass) g_object_class_override_property (object_class, PROP_BIND_TO, MM_BIND_TO); - properties[PROP_MODEM] = - g_param_spec_object (MM_BASE_SMS_MODEM, - "Modem", - "The Modem which owns this SMS", - MM_TYPE_BASE_MODEM, - G_PARAM_READWRITE); - g_object_class_install_property (object_class, PROP_MODEM, properties[PROP_MODEM]); - properties[PROP_IS_MULTIPART] = g_param_spec_boolean (MM_BASE_SMS_IS_MULTIPART, "Is multipart", diff --git a/src/mm-base-sms.h b/src/mm-base-sms.h index f87a6640..ecd7ad2a 100644 --- a/src/mm-base-sms.h +++ b/src/mm-base-sms.h @@ -25,7 +25,6 @@ #include <libmm-glib.h> #include "mm-sms-part.h" -#include "mm-base-modem.h" /*****************************************************************************/ @@ -49,13 +48,13 @@ typedef struct _MMBaseSmsPrivate MMBaseSmsPrivate; /* Properties */ #define MM_BASE_SMS_PATH "sms-path" #define MM_BASE_SMS_CONNECTION "sms-connection" -#define MM_BASE_SMS_MODEM "sms-modem" #define MM_BASE_SMS_IS_MULTIPART "sms-is-multipart" #define MM_BASE_SMS_MAX_PARTS "sms-max-parts" #define MM_BASE_SMS_MULTIPART_REFERENCE "sms-multipart-reference" #define MM_BASE_SMS_IS_3GPP "sms-is-3gpp" #define MM_BASE_SMS_DEFAULT_STORAGE "sms-default-storage" #define MM_BASE_SMS_SUPPORTED_STORAGES "sms-supported-storages" +#define MM_BASE_SMS_CONNECTION_PARENT_PROPERTY_NAME "sms-connection-parent-property-name" /* Signals */ #define MM_BASE_SMS_SET_LOCAL_MULTIPART_REFERENCE "sms-set-local-multipart-reference" @@ -102,17 +101,14 @@ GType mm_base_sms_get_type (void); G_DEFINE_AUTOPTR_CLEANUP_FUNC (MMBaseSms, g_object_unref) gboolean mm_base_sms_init_from_properties (MMBaseSms *self, - MMBaseModem *modem, MMSmsProperties *properties, GError **error); gboolean mm_base_sms_singlepart_init (MMBaseSms *self, - MMBaseModem *modem, MMSmsState state, MMSmsStorage storage, MMSmsPart *part, GError **error); gboolean mm_base_sms_multipart_init (MMBaseSms *self, - MMBaseModem *modem, MMSmsState state, MMSmsStorage storage, guint reference, diff --git a/src/mm-iface-modem-messaging.c b/src/mm-iface-modem-messaging.c index b6b63e49..d349de35 100644 --- a/src/mm-iface-modem-messaging.c +++ b/src/mm-iface-modem-messaging.c @@ -283,7 +283,7 @@ handle_create_auth_ready (MMIfaceAuth *auth, } sms = mm_broadband_modem_create_sms (MM_BROADBAND_MODEM (self)); - if (!mm_base_sms_init_from_properties (sms, MM_BASE_MODEM (self), properties, &error)) { + if (!mm_base_sms_init_from_properties (sms, properties, &error)) { mm_dbus_method_invocation_take_error (ctx->invocation, error); handle_create_context_free (ctx); return; diff --git a/src/mm-sms-at.c b/src/mm-sms-at.c index b79a95ab..4f817e65 100644 --- a/src/mm-sms-at.c +++ b/src/mm-sms-at.c @@ -32,6 +32,7 @@ #include "mm-sms-part-3gpp.h" #include "mm-base-modem-at.h" #include "mm-log-object.h" +#include "mm-bind.h" G_DEFINE_TYPE (MMSmsAt, mm_sms_at, MM_TYPE_BASE_SMS) @@ -795,7 +796,7 @@ mm_sms_at_new (MMBaseModem *modem, MMBaseSms *sms; sms = MM_BASE_SMS (g_object_new (MM_TYPE_SMS_AT, - MM_BASE_SMS_MODEM, modem, + MM_BIND_TO, G_OBJECT (modem), MM_BASE_SMS_IS_3GPP, is_3gpp, MM_BASE_SMS_DEFAULT_STORAGE, default_storage, NULL)); diff --git a/src/mm-sms-list.c b/src/mm-sms-list.c index 99f35da1..b4b8619b 100644 --- a/src/mm-sms-list.c +++ b/src/mm-sms-list.c @@ -315,7 +315,6 @@ take_singlepart (MMSmsList *self, GError **error) { if (!mm_base_sms_singlepart_init (sms, - self->priv->modem, state, storage, part, @@ -349,7 +348,6 @@ take_multipart (MMSmsList *self, /* Create new Multipart */ if (!mm_base_sms_multipart_init (sms, - self->priv->modem, state, storage, concat_reference, diff --git a/src/mm-sms-mbim.c b/src/mm-sms-mbim.c index 7b3edb84..ffb6b466 100644 --- a/src/mm-sms-mbim.c +++ b/src/mm-sms-mbim.c @@ -35,25 +35,22 @@ G_DEFINE_TYPE (MMSmsMbim, mm_sms_mbim, MM_TYPE_BASE_SMS) +struct _MMSmsMbimPrivate { + MMBaseModem *modem; +}; + /*****************************************************************************/ static gboolean -peek_device (gpointer self, - MbimDevice **o_device, - GAsyncReadyCallback callback, - gpointer user_data) +peek_device (MMSmsMbim *self, + MbimDevice **o_device, + GAsyncReadyCallback callback, + gpointer user_data) { - MMBaseModem *modem = NULL; - - g_object_get (G_OBJECT (self), - MM_BASE_SMS_MODEM, &modem, - NULL); - g_assert (MM_IS_BASE_MODEM (modem)); - if (o_device) { MMPortMbim *port; - port = mm_broadband_modem_mbim_peek_port_mbim (MM_BROADBAND_MODEM_MBIM (modem)); + port = mm_broadband_modem_mbim_peek_port_mbim (MM_BROADBAND_MODEM_MBIM (self->priv->modem)); if (!port) { g_task_report_new_error (self, callback, @@ -62,14 +59,12 @@ peek_device (gpointer self, MM_CORE_ERROR, MM_CORE_ERROR_FAILED, "Couldn't peek MBIM port"); - g_object_unref (modem); return FALSE; } *o_device = mm_port_mbim_peek_device (port); } - g_object_unref (modem); return TRUE; } @@ -191,7 +186,7 @@ sms_send (MMBaseSms *self, MbimDevice *device; GTask *task; - if (!peek_device (self, &device, callback, user_data)) + if (!peek_device (MM_SMS_MBIM (self), &device, callback, user_data)) return; /* Setup the context */ @@ -315,7 +310,7 @@ sms_delete (MMBaseSms *self, MbimDevice *device; GTask *task; - if (!peek_device (self, &device, callback, user_data)) + if (!peek_device (MM_SMS_MBIM (self), &device, callback, user_data)) return; ctx = g_slice_new0 (SmsDeletePartsContext); @@ -336,24 +331,45 @@ mm_sms_mbim_new (MMBaseModem *modem, gboolean is_3gpp, MMSmsStorage default_storage) { - return MM_BASE_SMS (g_object_new (MM_TYPE_SMS_MBIM, - MM_BASE_SMS_MODEM, modem, - MM_BIND_TO, G_OBJECT (modem), - MM_BASE_SMS_IS_3GPP, is_3gpp, - MM_BASE_SMS_DEFAULT_STORAGE, default_storage, - NULL)); + MMBaseSms *sms; + + g_return_val_if_fail (MM_IS_BROADBAND_MODEM_MBIM (modem), NULL); + + sms = MM_BASE_SMS (g_object_new (MM_TYPE_SMS_MBIM, + MM_BIND_TO, G_OBJECT (modem), + MM_BASE_SMS_IS_3GPP, is_3gpp, + MM_BASE_SMS_DEFAULT_STORAGE, default_storage, + NULL)); + MM_SMS_MBIM (sms)->priv->modem = g_object_ref (modem); + return sms; } static void mm_sms_mbim_init (MMSmsMbim *self) { + self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, MM_TYPE_SMS_MBIM, MMSmsMbimPrivate); +} + +static void +dispose (GObject *object) +{ + MMSmsMbim *self = MM_SMS_MBIM (object); + + g_clear_object (&self->priv->modem); + + G_OBJECT_CLASS (mm_sms_mbim_parent_class)->dispose (object); } static void mm_sms_mbim_class_init (MMSmsMbimClass *klass) { + GObjectClass *object_class = G_OBJECT_CLASS (klass); MMBaseSmsClass *base_sms_class = MM_BASE_SMS_CLASS (klass); + g_type_class_add_private (object_class, sizeof (MMSmsMbimPrivate)); + + object_class->dispose = dispose; + base_sms_class->store = NULL; base_sms_class->store_finish = NULL; base_sms_class->send = sms_send; diff --git a/src/mm-sms-mbim.h b/src/mm-sms-mbim.h index 7877c3f1..b045b99c 100644 --- a/src/mm-sms-mbim.h +++ b/src/mm-sms-mbim.h @@ -33,9 +33,11 @@ typedef struct _MMSmsMbim MMSmsMbim; typedef struct _MMSmsMbimClass MMSmsMbimClass; +typedef struct _MMSmsMbimPrivate MMSmsMbimPrivate; struct _MMSmsMbim { MMBaseSms parent; + MMSmsMbimPrivate *priv; }; struct _MMSmsMbimClass { diff --git a/src/mm-sms-qmi.c b/src/mm-sms-qmi.c index ebd8f845..a131ccc9 100644 --- a/src/mm-sms-qmi.c +++ b/src/mm-sms-qmi.c @@ -37,6 +37,10 @@ G_DEFINE_TYPE (MMSmsQmi, mm_sms_qmi, MM_TYPE_BASE_SMS) +struct _MMSmsQmiPrivate { + MMBaseModem *modem; +}; + /*****************************************************************************/ static gboolean @@ -46,18 +50,10 @@ ensure_qmi_client (MMSmsQmi *self, GAsyncReadyCallback callback, gpointer user_data) { - MMBaseModem *modem = NULL; QmiClient *client; MMPortQmi *port; - g_object_get (self, - MM_BASE_SMS_MODEM, &modem, - NULL); - g_assert (MM_IS_BASE_MODEM (modem)); - - port = mm_broadband_modem_qmi_peek_port_qmi (MM_BROADBAND_MODEM_QMI (modem)); - g_object_unref (modem); - + port = mm_broadband_modem_qmi_peek_port_qmi (MM_BROADBAND_MODEM_QMI (self->priv->modem)); if (!port) { g_task_report_new_error (self, callback, @@ -119,7 +115,6 @@ check_sms_type_support (MMSmsQmi *self, /* Store the SMS */ typedef struct { - MMBaseModem *modem; QmiClientWms *client; MMSmsStorage storage; GList *current; @@ -129,7 +124,6 @@ static void sms_store_context_free (SmsStoreContext *ctx) { g_object_unref (ctx->client); - g_object_unref (ctx->modem); g_slice_free (SmsStoreContext, ctx); } @@ -260,11 +254,12 @@ sms_store_next_part (GTask *task) } static void -sms_store (MMBaseSms *self, +sms_store (MMBaseSms *_self, MMSmsStorage storage, GAsyncReadyCallback callback, gpointer user_data) { + MMSmsQmi *self = MM_SMS_QMI (_self); SmsStoreContext *ctx; QmiClient *client = NULL; GError *error = NULL; @@ -280,17 +275,13 @@ sms_store (MMBaseSms *self, ctx = g_slice_new0 (SmsStoreContext); ctx->client = QMI_CLIENT_WMS (g_object_ref (client)); ctx->storage = storage; - g_object_get (self, - MM_BASE_SMS_MODEM, &ctx->modem, - NULL); - - ctx->current = mm_base_sms_get_parts (self); + ctx->current = mm_base_sms_get_parts (_self); task = g_task_new (self, NULL, callback, user_data); g_task_set_task_data (task, ctx, (GDestroyNotify)sms_store_context_free); /* Check whether we support the given SMS type */ - if (!check_sms_type_support (MM_SMS_QMI (self), ctx->modem, (MMSmsPart *)ctx->current->data, &error)) { + if (!check_sms_type_support (MM_SMS_QMI (self), self->priv->modem, (MMSmsPart *)ctx->current->data, &error)) { g_task_return_error (task, error); g_object_unref (task); return; @@ -304,7 +295,6 @@ sms_store (MMBaseSms *self, /* Send the SMS */ typedef struct { - MMBaseModem *modem; QmiClientWms *client; gboolean from_storage; GList *current; @@ -314,7 +304,6 @@ static void sms_send_context_free (SmsSendContext *ctx) { g_object_unref (ctx->client); - g_object_unref (ctx->modem); g_slice_free (SmsSendContext, ctx); } @@ -595,10 +584,11 @@ sms_send_next_part (GTask *task) } static void -sms_send (MMBaseSms *self, - GAsyncReadyCallback callback, - gpointer user_data) +sms_send (MMBaseSms *_self, + GAsyncReadyCallback callback, + gpointer user_data) { + MMSmsQmi *self = MM_SMS_QMI (_self); SmsSendContext *ctx; QmiClient *client = NULL; GError *error = NULL; @@ -613,20 +603,16 @@ sms_send (MMBaseSms *self, /* Setup the context */ ctx = g_slice_new0 (SmsSendContext); ctx->client = QMI_CLIENT_WMS (g_object_ref (client)); - g_object_get (self, - MM_BASE_SMS_MODEM, &ctx->modem, - NULL); - /* If the SMS is STORED, try to send from storage */ - ctx->from_storage = (mm_base_sms_get_storage (self) != MM_SMS_STORAGE_UNKNOWN); + ctx->from_storage = (mm_base_sms_get_storage (_self) != MM_SMS_STORAGE_UNKNOWN); - ctx->current = mm_base_sms_get_parts (self); + ctx->current = mm_base_sms_get_parts (_self); task = g_task_new (self, NULL, callback, user_data); g_task_set_task_data (task, ctx, (GDestroyNotify)sms_send_context_free); /* Check whether we support the given SMS type */ - if (!check_sms_type_support (MM_SMS_QMI (self), ctx->modem, (MMSmsPart *)ctx->current->data, &error)) { + if (!check_sms_type_support (MM_SMS_QMI (self), self->priv->modem, (MMSmsPart *)ctx->current->data, &error)) { g_task_return_error (task, error); g_object_unref (task); return; @@ -638,7 +624,6 @@ sms_send (MMBaseSms *self, /*****************************************************************************/ typedef struct { - MMBaseModem *modem; QmiClientWms *client; GList *current; guint n_failed; @@ -648,7 +633,6 @@ static void sms_delete_parts_context_free (SmsDeletePartsContext *ctx) { g_object_unref (ctx->client); - g_object_unref (ctx->modem); g_slice_free (SmsDeletePartsContext, ctx); } @@ -771,9 +755,6 @@ sms_delete (MMBaseSms *self, ctx = g_slice_new0 (SmsDeletePartsContext); ctx->client = QMI_CLIENT_WMS (g_object_ref (client)); - g_object_get (self, - MM_BASE_SMS_MODEM, &ctx->modem, - NULL); task = g_task_new (self, NULL, callback, user_data); g_task_set_task_data (task, ctx, (GDestroyNotify)sms_delete_parts_context_free); @@ -790,24 +771,45 @@ mm_sms_qmi_new (MMBaseModem *modem, gboolean is_3gpp, MMSmsStorage default_storage) { - return MM_BASE_SMS (g_object_new (MM_TYPE_SMS_QMI, - MM_BASE_SMS_MODEM, modem, - MM_BIND_TO, G_OBJECT (modem), - MM_BASE_SMS_IS_3GPP, is_3gpp, - MM_BASE_SMS_DEFAULT_STORAGE, default_storage, - NULL)); + MMBaseSms *sms; + + g_return_val_if_fail (MM_IS_BROADBAND_MODEM_QMI (modem), NULL); + + sms = MM_BASE_SMS (g_object_new (MM_TYPE_SMS_QMI, + MM_BIND_TO, G_OBJECT (modem), + MM_BASE_SMS_IS_3GPP, is_3gpp, + MM_BASE_SMS_DEFAULT_STORAGE, default_storage, + NULL)); + MM_SMS_QMI (sms)->priv->modem = g_object_ref (modem); + return sms; } static void mm_sms_qmi_init (MMSmsQmi *self) { + self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, MM_TYPE_SMS_QMI, MMSmsQmiPrivate); +} + +static void +dispose (GObject *object) +{ + MMSmsQmi *self = MM_SMS_QMI (object); + + g_clear_object (&self->priv->modem); + + G_OBJECT_CLASS (mm_sms_qmi_parent_class)->dispose (object); } static void mm_sms_qmi_class_init (MMSmsQmiClass *klass) { + GObjectClass *object_class = G_OBJECT_CLASS (klass); MMBaseSmsClass *base_sms_class = MM_BASE_SMS_CLASS (klass); + g_type_class_add_private (object_class, sizeof (MMSmsQmiPrivate)); + + object_class->dispose = dispose; + base_sms_class->store = sms_store; base_sms_class->store_finish = sms_store_finish; base_sms_class->send = sms_send; diff --git a/src/mm-sms-qmi.h b/src/mm-sms-qmi.h index 1dda2a95..e59ff4ec 100644 --- a/src/mm-sms-qmi.h +++ b/src/mm-sms-qmi.h @@ -35,9 +35,11 @@ typedef struct _MMSmsQmi MMSmsQmi; typedef struct _MMSmsQmiClass MMSmsQmiClass; +typedef struct _MMSmsQmiPrivate MMSmsQmiPrivate; struct _MMSmsQmi { MMBaseSms parent; + MMSmsQmiPrivate *priv; }; struct _MMSmsQmiClass { |