aboutsummaryrefslogtreecommitdiff
path: root/src/mm-broadband-modem-qmi.c
diff options
context:
space:
mode:
authorDan Williams <dan@ioncontrol.co>2025-04-19 10:30:58 -0500
committerDan Williams <dan@ioncontrol.co>2025-05-08 20:24:37 -0500
commitb81f23e24aad7d4fb37e837bbdcab4f43bccfc71 (patch)
tree2750873e396cc0176926f4deca31bc6fa835044a /src/mm-broadband-modem-qmi.c
parent9830e3955a3e45ff82c1c76bcba3b53432eaa51e (diff)
base-sms,sms-list,iface-messaging: move MMBaseSms creation to MMBroadbandModem class
This commit moves creation of the MMBaseSms objects out of MMSmsList and up into MMIfaceModemMessaging (which is already a MMBroadbandModem) and the MMBroadbandModem subclasses themselves. This flattens the creation of MMBaseSms objects by passing them down from the object that creates the SMS parts, rather than having a convoluted callback scheme relying on MMSmsList and MMBaseSms having direct knowledge of their owning modem. The goal is to eventually remove usage of MMBaseModem from MMBaseSms and MMSmsList so that we can test them more easily. Signed-off-by: Dan Williams <dan@ioncontrol.co>
Diffstat (limited to 'src/mm-broadband-modem-qmi.c')
-rw-r--r--src/mm-broadband-modem-qmi.c33
1 files changed, 19 insertions, 14 deletions
diff --git a/src/mm-broadband-modem-qmi.c b/src/mm-broadband-modem-qmi.c
index d13e1995..6caccc21 100644
--- a/src/mm-broadband-modem-qmi.c
+++ b/src/mm-broadband-modem-qmi.c
@@ -7938,8 +7938,8 @@ add_new_read_sms_part (MMIfaceModemMessaging *self,
gboolean transfer_route,
GArray *data)
{
- MMSmsPart *part = NULL;
- GError *error = NULL;
+ MMSmsPart *part = NULL;
+ g_autoptr(GError) error = NULL;
switch (format) {
case QMI_WMS_MESSAGE_FORMAT_CDMA:
@@ -7967,16 +7967,21 @@ add_new_read_sms_part (MMIfaceModemMessaging *self,
break;
}
- if (part) {
- mm_obj_dbg (self, "correctly parsed PDU (%d)", index);
- mm_iface_modem_messaging_take_part (self,
- part,
- mm_sms_state_from_qmi_message_tag (tag),
- mm_sms_storage_from_qmi_storage_type (storage));
- } else if (error) {
+ if (!part) {
/* Don't treat the error as critical */
mm_obj_dbg (self, "error parsing PDU (%d): %s", index, error->message);
- g_error_free (error);
+ return;
+ }
+
+ mm_obj_dbg (self, "correctly parsed PDU (%d)", index);
+ if (!mm_iface_modem_messaging_take_part (self,
+ mm_broadband_modem_create_sms (MM_BROADBAND_MODEM (self)),
+ part,
+ mm_sms_state_from_qmi_message_tag (tag),
+ mm_sms_storage_from_qmi_storage_type (storage),
+ &error)) {
+ /* Don't treat the error as critical */
+ mm_obj_dbg (self, "error adding SMS (%d): %s", index, error->message);
}
}
@@ -8870,16 +8875,16 @@ messaging_enable_unsolicited_events (MMIfaceModemMessaging *_self,
}
/*****************************************************************************/
-/* Create SMS (Messaging interface) */
+/* Create SMS */
static MMBaseSms *
-messaging_create_sms (MMIfaceModemMessaging *_self)
+messaging_create_sms (MMBroadbandModem *_self)
{
MMBroadbandModemQmi *self = MM_BROADBAND_MODEM_QMI (_self);
/* Handle AT URC only fallback */
if (self->priv->messaging_fallback_at_only) {
- return iface_modem_messaging_parent->create_sms (_self);
+ return MM_BROADBAND_MODEM_CLASS (mm_broadband_modem_qmi_parent_class)->create_sms (_self);
}
return mm_sms_qmi_new (MM_BASE_MODEM (self),
@@ -15331,7 +15336,6 @@ iface_modem_messaging_init (MMIfaceModemMessagingInterface *iface)
iface->enable_unsolicited_events_finish = messaging_enable_unsolicited_events_finish;
iface->disable_unsolicited_events = messaging_disable_unsolicited_events;
iface->disable_unsolicited_events_finish = messaging_disable_unsolicited_events_finish;
- iface->create_sms = messaging_create_sms;
iface->init_current_storages = messaging_init_current_storages;
iface->init_current_storages_finish = messaging_init_current_storages_finish;
}
@@ -15470,4 +15474,5 @@ mm_broadband_modem_qmi_class_init (MMBroadbandModemQmiClass *klass)
/* Do not initialize the QMI modem through AT commands */
broadband_modem_class->enabling_modem_init = NULL;
broadband_modem_class->enabling_modem_init_finish = NULL;
+ broadband_modem_class->create_sms = messaging_create_sms;
}