diff options
author | Dan Williams <dan@ioncontrol.co> | 2025-04-19 10:30:58 -0500 |
---|---|---|
committer | Dan Williams <dan@ioncontrol.co> | 2025-05-08 20:24:37 -0500 |
commit | b81f23e24aad7d4fb37e837bbdcab4f43bccfc71 (patch) | |
tree | 2750873e396cc0176926f4deca31bc6fa835044a /src/mm-broadband-modem-qmi.c | |
parent | 9830e3955a3e45ff82c1c76bcba3b53432eaa51e (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.c | 33 |
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; } |