diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mm-base-sms.c | 41 | ||||
-rw-r--r-- | src/mm-base-sms.h | 4 | ||||
-rw-r--r-- | src/mm-broadband-modem-mbim.c | 3 | ||||
-rw-r--r-- | src/mm-broadband-modem-qmi.c | 3 | ||||
-rw-r--r-- | src/mm-broadband-modem.c | 3 | ||||
-rw-r--r-- | src/mm-iface-modem.c | 12 | ||||
-rw-r--r-- | src/mm-sms-mbim.c | 3 | ||||
-rw-r--r-- | src/mm-sms-mbim.h | 3 | ||||
-rw-r--r-- | src/mm-sms-qmi.c | 3 | ||||
-rw-r--r-- | src/mm-sms-qmi.h | 3 |
10 files changed, 44 insertions, 34 deletions
diff --git a/src/mm-base-sms.c b/src/mm-base-sms.c index 0e7c7527..c3e1b87b 100644 --- a/src/mm-base-sms.c +++ b/src/mm-base-sms.c @@ -55,6 +55,7 @@ enum { PROP_IS_MULTIPART, PROP_MAX_PARTS, PROP_MULTIPART_REFERENCE, + PROP_IS_3GPP, PROP_LAST }; @@ -88,6 +89,9 @@ struct _MMBaseSmsPrivate { /* Set to true when all needed parts were received, * parsed and assembled */ gboolean is_assembled; + + /* TRUE for 3GPP SMS; FALSE for CDMA */ + gboolean is_3gpp; }; /*****************************************************************************/ @@ -310,25 +314,7 @@ static gboolean generate_submit_pdus (MMBaseSms *self, GError **error) { - MMBaseModem *modem; - gboolean is_3gpp; - - /* First; decide which kind of PDU we'll generate, based on the current modem caps */ - - g_object_get (self, - MM_BASE_SMS_MODEM, &modem, - NULL); - g_assert (modem != NULL); - - is_3gpp = mm_iface_modem_is_3gpp (MM_IFACE_MODEM (modem)); - g_object_unref (modem); - - /* On a 3GPP-capable modem, create always a 3GPP SMS (even if the modem is 3GPP+3GPP2) */ - if (is_3gpp) - return generate_3gpp_submit_pdus (self, error); - - /* Otherwise, create a 3GPP2 SMS */ - return generate_cdma_submit_pdus (self, error); + return self->priv->is_3gpp ? generate_3gpp_submit_pdus (self, error) : generate_cdma_submit_pdus (self, error); } /*****************************************************************************/ @@ -1801,11 +1787,12 @@ mm_base_sms_multipart_take_part (MMBaseSms *self, } MMBaseSms * -mm_base_sms_new (MMBaseModem *modem) +mm_base_sms_new (MMBaseModem *modem, gboolean is_3gpp) { return MM_BASE_SMS (g_object_new (MM_TYPE_BASE_SMS, MM_BASE_SMS_MODEM, modem, MM_BIND_TO, modem, + MM_BASE_SMS_IS_3GPP, is_3gpp, NULL)); } @@ -2021,6 +2008,9 @@ set_property (GObject *object, case PROP_MULTIPART_REFERENCE: self->priv->multipart_reference = g_value_get_uint (value); break; + case PROP_IS_3GPP: + self->priv->is_3gpp = g_value_get_boolean (value); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -2057,6 +2047,9 @@ get_property (GObject *object, case PROP_MULTIPART_REFERENCE: g_value_set_uint (value, self->priv->multipart_reference); break; + case PROP_IS_3GPP: + g_value_set_boolean (value, self->priv->is_3gpp); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -2192,4 +2185,12 @@ mm_base_sms_class_init (MMBaseSmsClass *klass) 0, G_MAXUINT, 0, G_PARAM_READWRITE); g_object_class_install_property (object_class, PROP_MULTIPART_REFERENCE, properties[PROP_MULTIPART_REFERENCE]); + + properties[PROP_IS_3GPP] = + g_param_spec_boolean (MM_BASE_SMS_IS_3GPP, + "Is 3GPP", + "Whether the SMS is a 3GPP one or a CDMA one", + FALSE, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); + g_object_class_install_property (object_class, PROP_IS_3GPP, properties[PROP_IS_3GPP]); } diff --git a/src/mm-base-sms.h b/src/mm-base-sms.h index 186cb8e6..ffcaf8c4 100644 --- a/src/mm-base-sms.h +++ b/src/mm-base-sms.h @@ -52,6 +52,7 @@ typedef struct _MMBaseSmsPrivate MMBaseSmsPrivate; #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" struct _MMBaseSms { MmGdbusSmsSkeleton parent; @@ -91,7 +92,8 @@ GType mm_base_sms_get_type (void); G_DEFINE_AUTOPTR_CLEANUP_FUNC (MMBaseSms, g_object_unref) /* This one can be overridden by plugins */ -MMBaseSms *mm_base_sms_new (MMBaseModem *modem); +MMBaseSms *mm_base_sms_new (MMBaseModem *modem, + gboolean is_3gpp); MMBaseSms *mm_base_sms_new_from_properties (MMBaseModem *modem, MMSmsProperties *properties, GError **error); diff --git a/src/mm-broadband-modem-mbim.c b/src/mm-broadband-modem-mbim.c index 8116d201..79de6291 100644 --- a/src/mm-broadband-modem-mbim.c +++ b/src/mm-broadband-modem-mbim.c @@ -9233,7 +9233,8 @@ enable_unsolicited_events_messaging (MMIfaceModemMessaging *_self, static MMBaseSms * messaging_create_sms (MMIfaceModemMessaging *self) { - return mm_sms_mbim_new (MM_BASE_MODEM (self)); + return mm_sms_mbim_new (MM_BASE_MODEM (self), + mm_iface_modem_is_3gpp (MM_IFACE_MODEM (self))); } /*****************************************************************************/ diff --git a/src/mm-broadband-modem-qmi.c b/src/mm-broadband-modem-qmi.c index a2609277..d13e1995 100644 --- a/src/mm-broadband-modem-qmi.c +++ b/src/mm-broadband-modem-qmi.c @@ -8882,7 +8882,8 @@ messaging_create_sms (MMIfaceModemMessaging *_self) return iface_modem_messaging_parent->create_sms (_self); } - return mm_sms_qmi_new (MM_BASE_MODEM (self)); + return mm_sms_qmi_new (MM_BASE_MODEM (self), + mm_iface_modem_is_3gpp (MM_IFACE_MODEM (self))); } diff --git a/src/mm-broadband-modem.c b/src/mm-broadband-modem.c index 16d579c7..c8971afe 100644 --- a/src/mm-broadband-modem.c +++ b/src/mm-broadband-modem.c @@ -8225,7 +8225,8 @@ modem_messaging_load_initial_sms_parts (MMIfaceModemMessaging *self, static MMBaseSms * modem_messaging_create_sms (MMIfaceModemMessaging *self) { - return mm_base_sms_new (MM_BASE_MODEM (self)); + return mm_base_sms_new (MM_BASE_MODEM (self), + mm_iface_modem_is_3gpp (MM_IFACE_MODEM (self))); } /*****************************************************************************/ diff --git a/src/mm-iface-modem.c b/src/mm-iface-modem.c index 7bd0f0ff..1af2666b 100644 --- a/src/mm-iface-modem.c +++ b/src/mm-iface-modem.c @@ -6616,25 +6616,25 @@ mm_iface_modem_get_current_capabilities (MMIfaceModem *self) gboolean mm_iface_modem_is_3gpp (MMIfaceModem *self) { - return (mm_iface_modem_get_current_capabilities (self) & MM_MODEM_CAPABILITY_3GPP); + return !!(mm_iface_modem_get_current_capabilities (self) & MM_MODEM_CAPABILITY_3GPP); } gboolean mm_iface_modem_is_3gpp_lte (MMIfaceModem *self) { - return (mm_iface_modem_get_current_capabilities (self) & MM_MODEM_CAPABILITY_LTE); + return !!(mm_iface_modem_get_current_capabilities (self) & MM_MODEM_CAPABILITY_LTE); } gboolean mm_iface_modem_is_3gpp_5gnr (MMIfaceModem *self) { - return (mm_iface_modem_get_current_capabilities (self) & MM_MODEM_CAPABILITY_5GNR); + return !!(mm_iface_modem_get_current_capabilities (self) & MM_MODEM_CAPABILITY_5GNR); } gboolean mm_iface_modem_is_cdma (MMIfaceModem *self) { - return (mm_iface_modem_get_current_capabilities (self) & MM_MODEM_CAPABILITY_CDMA_EVDO); + return !!(mm_iface_modem_get_current_capabilities (self) & MM_MODEM_CAPABILITY_CDMA_EVDO); } gboolean @@ -6643,13 +6643,13 @@ mm_iface_modem_is_3gpp_only (MMIfaceModem *self) MMModemCapability capabilities; capabilities = mm_iface_modem_get_current_capabilities (self); - return (capabilities & MM_MODEM_CAPABILITY_3GPP) && !((MM_MODEM_CAPABILITY_3GPP ^ capabilities) & capabilities); + return !!((capabilities & MM_MODEM_CAPABILITY_3GPP) && !((MM_MODEM_CAPABILITY_3GPP ^ capabilities) & capabilities)); } gboolean mm_iface_modem_is_cdma_only (MMIfaceModem *self) { - return (mm_iface_modem_get_current_capabilities (self) == MM_MODEM_CAPABILITY_CDMA_EVDO); + return !!(mm_iface_modem_get_current_capabilities (self) == MM_MODEM_CAPABILITY_CDMA_EVDO); } /*****************************************************************************/ diff --git a/src/mm-sms-mbim.c b/src/mm-sms-mbim.c index 2de9905e..1cb442d6 100644 --- a/src/mm-sms-mbim.c +++ b/src/mm-sms-mbim.c @@ -332,11 +332,12 @@ sms_delete (MMBaseSms *self, /*****************************************************************************/ MMBaseSms * -mm_sms_mbim_new (MMBaseModem *modem) +mm_sms_mbim_new (MMBaseModem *modem, gboolean is_3gpp) { 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, NULL)); } diff --git a/src/mm-sms-mbim.h b/src/mm-sms-mbim.h index 5743f262..070ff677 100644 --- a/src/mm-sms-mbim.h +++ b/src/mm-sms-mbim.h @@ -45,6 +45,7 @@ struct _MMSmsMbimClass { GType mm_sms_mbim_get_type (void); G_DEFINE_AUTOPTR_CLEANUP_FUNC (MMSmsMbim, g_object_unref) -MMBaseSms *mm_sms_mbim_new (MMBaseModem *modem); +MMBaseSms *mm_sms_mbim_new (MMBaseModem *modem, + gboolean is_3gpp); #endif /* MM_SMS_MBIM_H */ diff --git a/src/mm-sms-qmi.c b/src/mm-sms-qmi.c index abc45649..aa5101ee 100644 --- a/src/mm-sms-qmi.c +++ b/src/mm-sms-qmi.c @@ -786,11 +786,12 @@ sms_delete (MMBaseSms *self, /*****************************************************************************/ MMBaseSms * -mm_sms_qmi_new (MMBaseModem *modem) +mm_sms_qmi_new (MMBaseModem *modem, gboolean is_3gpp) { 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, NULL)); } diff --git a/src/mm-sms-qmi.h b/src/mm-sms-qmi.h index af60a7f5..250e406e 100644 --- a/src/mm-sms-qmi.h +++ b/src/mm-sms-qmi.h @@ -47,6 +47,7 @@ struct _MMSmsQmiClass { GType mm_sms_qmi_get_type (void); G_DEFINE_AUTOPTR_CLEANUP_FUNC (MMSmsQmi, g_object_unref) -MMBaseSms *mm_sms_qmi_new (MMBaseModem *modem); +MMBaseSms *mm_sms_qmi_new (MMBaseModem *modem, + gboolean is_3gpp); #endif /* MM_SMS_QMI_H */ |