aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Williams <dan@ioncontrol.co>2025-04-19 19:43:08 -0500
committerDan Williams <dan@ioncontrol.co>2025-05-08 20:24:38 -0500
commit03027b5ec2821b11c64966b2bf79d24ef42d5777 (patch)
tree00fb9bcaa157d60deeddb2827353a6d4afddf0f7
parent97c189910bfb6cf4974a04d34a2e53a8bd1cfdf1 (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.c34
-rw-r--r--src/mm-base-sms.h6
-rw-r--r--src/mm-iface-modem-messaging.c2
-rw-r--r--src/mm-sms-at.c3
-rw-r--r--src/mm-sms-list.c2
-rw-r--r--src/mm-sms-mbim.c60
-rw-r--r--src/mm-sms-mbim.h2
-rw-r--r--src/mm-sms-qmi.c84
-rw-r--r--src/mm-sms-qmi.h2
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 {