diff options
author | Aleksander Morgado <aleksander@lanedo.com> | 2013-08-19 11:58:05 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2013-10-25 19:47:19 +0200 |
commit | aba7efb6155a15298689211053b47e725b25e66d (patch) | |
tree | 6112d65b48155858fdf501120bb67a6c88c1c04a | |
parent | e493292b7a1a0648d058147aca0022b64538653b (diff) | |
download | ModemManager-aba7efb6155a15298689211053b47e725b25e66d.tar.gz |
broadband-modem-qmi: add CDMA SMS parts if found
-rw-r--r-- | src/mm-broadband-modem-qmi.c | 49 |
1 files changed, 25 insertions, 24 deletions
diff --git a/src/mm-broadband-modem-qmi.c b/src/mm-broadband-modem-qmi.c index d05d71893..9caec6317 100644 --- a/src/mm-broadband-modem-qmi.c +++ b/src/mm-broadband-modem-qmi.c @@ -41,6 +41,7 @@ #include "mm-bearer-qmi.h" #include "mm-sms-qmi.h" #include "mm-sms-part-3gpp.h" +#include "mm-sms-part-cdma.h" static void iface_modem_init (MMIfaceModem *iface); static void iface_modem_3gpp_init (MMIfaceModem3gpp *iface); @@ -6847,43 +6848,43 @@ add_new_read_sms_part (MMIfaceModemMessaging *self, QmiWmsMessageFormat format, GArray *data) { + MMSmsPart *part = NULL; + GError *error = NULL; + switch (format) { case QMI_WMS_MESSAGE_FORMAT_CDMA: - mm_dbg ("Skipping CDMA messages for now..."); - break; - case QMI_WMS_MESSAGE_FORMAT_MWI: - mm_dbg ("Don't know how to process 'message waiting indicator' messages"); + part = mm_sms_part_cdma_new_from_binary_pdu (index, + (guint8 *)data->data, + data->len, + &error); + break; case QMI_WMS_MESSAGE_FORMAT_GSM_WCDMA_POINT_TO_POINT: - case QMI_WMS_MESSAGE_FORMAT_GSM_WCDMA_BROADCAST: { - MMSmsPart *part; - GError *error = NULL; - + case QMI_WMS_MESSAGE_FORMAT_GSM_WCDMA_BROADCAST: part = mm_sms_part_3gpp_new_from_binary_pdu (index, (guint8 *)data->data, data->len, &error); - if (part) { - mm_dbg ("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 { - /* Don't treat the error as critical */ - mm_dbg ("Error parsing PDU (%d): %s", - index, - error->message); - g_error_free (error); - } - break; - } + case QMI_WMS_MESSAGE_FORMAT_MWI: + mm_dbg ("Don't know how to process 'message waiting indicator' messages"); + break; default: mm_dbg ("Unhandled message format '%u'", format); break; } + + if (part) { + mm_dbg ("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) { + /* Don't treat the error as critical */ + mm_dbg ("Error parsing PDU (%d): %s", index, error->message); + g_error_free (error); + } } static void |