diff options
author | Aleksander Morgado <aleksandermj@chromium.org> | 2023-04-10 21:37:18 +0000 |
---|---|---|
committer | Aleksander Morgado <aleksandermj@chromium.org> | 2023-04-11 09:44:47 +0000 |
commit | c61a7db1b61652d5fc82d4556879af3139821750 (patch) | |
tree | 64eeef0a99c9f39e99a08667ea3c0577931e3c99 | |
parent | 06646001cea1b7a12c5f91987e5ebd6cecb4ff80 (diff) |
helpers-qmi: support new personalization feature status type
The personalization feature enum used in "card status" is different to
the one used in other UIM operations like "depersonalization".
libqmi dependency updated to 1.33.6 to ensure we can use the new types.
-rw-r--r-- | meson.build | 2 | ||||
-rw-r--r-- | src/mm-broadband-modem-qmi.c | 3 | ||||
-rw-r--r-- | src/mm-modem-helpers-qmi.c | 65 | ||||
-rw-r--r-- | src/mm-modem-helpers-qmi.h | 3 |
4 files changed, 45 insertions, 28 deletions
diff --git a/meson.build b/meson.build index b8746263..96c21c57 100644 --- a/meson.build +++ b/meson.build @@ -257,7 +257,7 @@ config_h.set('WITH_MBIM', enable_mbim) # QMI support (enabled by default) enable_qmi = get_option('qmi') if enable_qmi - qmi_glib_dep = dependency('qmi-glib', version: '>= 1.33.4') + qmi_glib_dep = dependency('qmi-glib', version: '>= 1.33.6') endif config_h.set('WITH_QMI', enable_qmi) diff --git a/src/mm-broadband-modem-qmi.c b/src/mm-broadband-modem-qmi.c index 9e28c308..3987a115 100644 --- a/src/mm-broadband-modem-qmi.c +++ b/src/mm-broadband-modem-qmi.c @@ -3018,8 +3018,7 @@ modem_3gpp_disable_facility_lock (MMIfaceModem3gpp *self, task = g_task_new (self, NULL, callback, user_data); /* Choose facility to disable */ - feature = qmi_personalization_feature_from_mm_modem_3gpp_facility (facility); - if (feature == QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_UNKNOWN) { + if (!qmi_personalization_feature_from_mm_modem_3gpp_facility (facility, &feature)) { g_task_return_new_error (task, MM_CORE_ERROR, MM_CORE_ERROR_INVALID_ARGS, "Not supported type of facility lock."); g_object_unref (task); diff --git a/src/mm-modem-helpers-qmi.c b/src/mm-modem-helpers-qmi.c index ff8f0bb9..850ef01c 100644 --- a/src/mm-modem-helpers-qmi.c +++ b/src/mm-modem-helpers-qmi.c @@ -2909,8 +2909,8 @@ mm_qmi_uim_get_card_status_output_parse (gpointer log_ guint *o_pers_retries, GError **error) { - QmiMessageUimGetCardStatusOutputCardStatusCardsElement *card; - QmiMessageUimGetCardStatusOutputCardStatusCardsElementApplicationsElement *app; + QmiMessageUimGetCardStatusOutputCardStatusCardsElement *card; + QmiMessageUimGetCardStatusOutputCardStatusCardsElementApplicationsElementV2 *app; GArray *cards; guint16 index_gw_primary = 0xFFFF; guint8 gw_primary_slot_i = 0; @@ -3014,7 +3014,7 @@ mm_qmi_uim_get_card_status_output_parse (gpointer log_ return FALSE; } - app = &g_array_index (card->applications, QmiMessageUimGetCardStatusOutputCardStatusCardsElementApplicationsElement, gw_primary_application_i); + app = &g_array_index (card->applications, QmiMessageUimGetCardStatusOutputCardStatusCardsElementApplicationsElementV2, gw_primary_application_i); if ((app->type != QMI_UIM_CARD_APPLICATION_TYPE_SIM) && (app->type != QMI_UIM_CARD_APPLICATION_TYPE_USIM)) { g_set_error (error, MM_CORE_ERROR, MM_CORE_ERROR_FAILED, "Unsupported application type found in GW primary application index: %s", @@ -3122,31 +3122,37 @@ mm_qmi_uim_get_card_status_output_parse (gpointer log_ pin = app->personalization_state == QMI_UIM_CARD_APPLICATION_PERSONALIZATION_STATE_CODE_REQUIRED; switch (app->personalization_feature) { - case QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_GW_NETWORK: + case QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_GW_NETWORK: lock = (pin ? MM_MODEM_LOCK_PH_NET_PIN : MM_MODEM_LOCK_PH_NET_PUK); break; - case QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_GW_NETWORK_SUBSET: + case QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_GW_NETWORK_SUBSET: lock = (pin ? MM_MODEM_LOCK_PH_NETSUB_PIN : MM_MODEM_LOCK_PH_NETSUB_PUK); break; - case QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_GW_SERVICE_PROVIDER: + case QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_GW_SERVICE_PROVIDER: lock = (pin ? MM_MODEM_LOCK_PH_SP_PIN : MM_MODEM_LOCK_PH_SP_PUK); break; - case QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_GW_CORPORATE: + case QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_GW_CORPORATE: lock = (pin ? MM_MODEM_LOCK_PH_CORP_PIN : MM_MODEM_LOCK_PH_CORP_PUK); break; - case QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_GW_UIM: + case QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_GW_UIM: if (pin) { lock = MM_MODEM_LOCK_PH_SIM_PIN; break; } /* fall through */ - 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: + case QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_1X_NETWORK_TYPE_1: + case QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_1X_NETWORK_TYPE_2: + case QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_1X_HRPD: + case QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_1X_SERVICE_PROVIDER: + case QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_1X_CORPORATE: + case QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_1X_RUIM: + case QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_UNKNOWN: + case QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_GW_SERVICE_PROVIDER_NAME: + case QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_GW_SP_EHPLMN: + case QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_GW_ICCID: + case QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_GW_IMPI: + case QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_GW_NETWORK_SUBSET_SERVICE_PROVIDER: + case QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_GW_CARRIER: default: g_set_error (error, MM_MOBILE_EQUIPMENT_ERROR, @@ -3237,7 +3243,12 @@ mm_qmi_uim_get_configuration_output_parse (gpointer 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: + case QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_GW_SERVICE_PROVIDER_NAME: + case QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_GW_SP_EHPLMN: + case QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_GW_ICCID: + case QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_GW_IMPI: + case QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_GW_NETWORK_SUBSET_SERVICE_PROVIDER: + case QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_GW_CARRIER: mm_obj_dbg (log_object, "ignoring lock in UIM feature: %s", qmi_uim_card_application_personalization_feature_get_string (element->feature)); break; @@ -3251,25 +3262,31 @@ mm_qmi_uim_get_configuration_output_parse (gpointer /*****************************************************************************/ -QmiUimCardApplicationPersonalizationFeature -qmi_personalization_feature_from_mm_modem_3gpp_facility (MMModem3gppFacility facility) +gboolean +qmi_personalization_feature_from_mm_modem_3gpp_facility (MMModem3gppFacility facility, + QmiUimCardApplicationPersonalizationFeature *o_feature) { switch (facility) { case MM_MODEM_3GPP_FACILITY_NET_PERS: - return QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_GW_NETWORK; + *o_feature = QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_GW_NETWORK; + return TRUE; case MM_MODEM_3GPP_FACILITY_NET_SUB_PERS: - return QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_GW_NETWORK_SUBSET; + *o_feature = QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_GW_NETWORK_SUBSET; + return TRUE; case MM_MODEM_3GPP_FACILITY_PROVIDER_PERS: - return QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_GW_SERVICE_PROVIDER; + *o_feature = QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_GW_SERVICE_PROVIDER; + return TRUE; case MM_MODEM_3GPP_FACILITY_CORP_PERS: - return QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_GW_CORPORATE; + *o_feature = QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_GW_CORPORATE; + return TRUE; case MM_MODEM_3GPP_FACILITY_PH_SIM: - return QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_GW_UIM; + *o_feature = QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_GW_UIM; + return TRUE; case MM_MODEM_3GPP_FACILITY_NONE: case MM_MODEM_3GPP_FACILITY_SIM: case MM_MODEM_3GPP_FACILITY_FIXED_DIALING: case MM_MODEM_3GPP_FACILITY_PH_FSIM: default: - return QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_UNKNOWN; + return FALSE; } } diff --git a/src/mm-modem-helpers-qmi.h b/src/mm-modem-helpers-qmi.h index 51110d72..2de29a34 100644 --- a/src/mm-modem-helpers-qmi.h +++ b/src/mm-modem-helpers-qmi.h @@ -258,6 +258,7 @@ gboolean mm_qmi_uim_get_configuration_output_parse (gpointer MMModem3gppFacility *o_lock, GError **error); -QmiUimCardApplicationPersonalizationFeature qmi_personalization_feature_from_mm_modem_3gpp_facility (MMModem3gppFacility facility); +gboolean qmi_personalization_feature_from_mm_modem_3gpp_facility (MMModem3gppFacility facility, + QmiUimCardApplicationPersonalizationFeature *o_feature); #endif /* MM_MODEM_HELPERS_QMI_H */ |