aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichal Mazur <mkm@semihalf.com>2021-02-16 21:19:43 +0100
committerAleksander Morgado <aleksander@aleksander.es>2021-04-30 18:40:29 +0000
commitab60f884038d0ecf43696bd39f4567d83c6652e5 (patch)
tree556eba1cf03b2ad1af3681dea1431afa61aae8a3 /src
parent0a7bfcfb423f4202b910af7f67563552160edcb4 (diff)
modem-helpers-qmi: introduce parser for Get Configuration message
Diffstat (limited to 'src')
-rw-r--r--src/mm-modem-helpers-qmi.c53
-rw-r--r--src/mm-modem-helpers-qmi.h8
2 files changed, 61 insertions, 0 deletions
diff --git a/src/mm-modem-helpers-qmi.c b/src/mm-modem-helpers-qmi.c
index a53fe2fa..ef1368d5 100644
--- a/src/mm-modem-helpers-qmi.c
+++ b/src/mm-modem-helpers-qmi.c
@@ -2209,3 +2209,56 @@ mm_qmi_uim_decode_eid (const gchar *eid, gsize eid_len)
return mm_bcd_to_string ((const guint8 *) eid, eid_len, FALSE /* low_nybble_first */);
}
+
+/*****************************************************************************/
+
+gboolean
+mm_qmi_uim_get_configuration_output_parse (gpointer log_object,
+ QmiMessageUimGetConfigurationOutput *output,
+ MMModem3gppFacility *o_lock,
+ GError **error)
+{
+ QmiMessageUimGetConfigurationOutputPersonalizationStatusElement *element;
+ GArray *elements;
+ guint idx;
+
+ *o_lock = MM_MODEM_3GPP_FACILITY_NONE;
+
+ if (!qmi_message_uim_get_configuration_output_get_personalization_status (output, &elements, error)) {
+ g_prefix_error (error, "UIM Get Personalization Status failed: ");
+ return FALSE;
+ }
+
+ for (idx = 0; idx < elements->len; idx++) {
+ element = &g_array_index (elements,
+ QmiMessageUimGetConfigurationOutputPersonalizationStatusElement,
+ idx);
+ switch (element->feature) {
+ case QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_GW_NETWORK:
+ *o_lock |= MM_MODEM_3GPP_FACILITY_NET_PERS;
+ break;
+ case QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_GW_NETWORK_SUBSET:
+ *o_lock |= MM_MODEM_3GPP_FACILITY_NET_SUB_PERS;
+ break;
+ case QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_GW_SERVICE_PROVIDER:
+ *o_lock |= MM_MODEM_3GPP_FACILITY_PROVIDER_PERS;
+ break;
+ case QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_GW_CORPORATE:
+ *o_lock |= MM_MODEM_3GPP_FACILITY_CORP_PERS;
+ break;
+ case QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_GW_UIM:
+ *o_lock |= MM_MODEM_3GPP_FACILITY_PH_SIM;
+ break;
+ case QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_1X_NETWORK_TYPE_1:
+ case QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_1X_NETWORK_TYPE_2:
+ case QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_1X_HRPD:
+ case QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_1X_SERVICE_PROVIDER:
+ case QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_1X_CORPORATE:
+ case QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_1X_RUIM:
+ case QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_UNKNOWN:
+ default:
+ mm_obj_warn (log_object, "Invalid UIM feature : %u", (guint)element->feature);
+ }
+ }
+ return TRUE;
+}
diff --git a/src/mm-modem-helpers-qmi.h b/src/mm-modem-helpers-qmi.h
index 835ffe43..15056dbf 100644
--- a/src/mm-modem-helpers-qmi.h
+++ b/src/mm-modem-helpers-qmi.h
@@ -188,4 +188,12 @@ gboolean mm_qmi_uim_get_card_status_output_parse (gpointer
/* UIM Get Slot Status parsing */
gchar *mm_qmi_uim_decode_eid (const gchar *eid, gsize eid_len);
+/*****************************************************************************/
+/* UIM Get Configuration parsing */
+
+gboolean mm_qmi_uim_get_configuration_output_parse (gpointer log_object,
+ QmiMessageUimGetConfigurationOutput *output,
+ MMModem3gppFacility *o_lock,
+ GError **error);
+
#endif /* MM_MODEM_HELPERS_QMI_H */