summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAleksander Morgado <aleksandermj@chromium.org>2023-04-11 08:30:32 +0000
committerAleksander Morgado <aleksandermj@chromium.org>2023-04-11 08:39:33 +0000
commitb4d67aa150a7f14e54e36987ffe4d5d319d781d2 (patch)
tree477e070a54392b8217bbd25fd9a712c8941b983e /src
parent806ea64a5dc941c1ec5112ce8cb5bdcb35127710 (diff)
downloadlibqmi-b4d67aa150a7f14e54e36987ffe4d5d319d781d2.tar.gz
uim: new UIM personalization feature enum in Card Status messages
The personalization feature enum in "UIM Card Status" QMI message is treated differently in QMI modems, and is not same as the existing 'QmiUimCardApplicationPersonalizationFeature' enum. A new enum 'QmiUimCardApplicationPersonalizationFeatureStatus' for the "UIM Card Status" QMI message is introduced. The enum change in the QMI message leads to the need of compat symbols to support API/ABI compatibility. Given that the format and size of the struct involved in the enum change is the same, i.e. only the representation of the integer as a different enum changed, we don't treat the change as a whole TLV rename. Instead, we only change the struct type that is stored in the GArray/GPtrArray. We also provide a compat symbol for the UNKNOWN enum name, which the old enum no longer has. Originally written by Akash Aggarwal <quic_akasagga@quicinc.com> in 5f366be3000e8c00f7ce73d64606095d3ba4c22e, but later reverted to handle all the needed compat symbols.
Diffstat (limited to 'src')
-rw-r--r--src/libqmi-glib/qmi-compat.c24
-rw-r--r--src/libqmi-glib/qmi-compat.h116
-rw-r--r--src/libqmi-glib/qmi-enums-uim.h83
-rw-r--r--src/qmicli/qmicli-uim.c6
4 files changed, 213 insertions, 16 deletions
diff --git a/src/libqmi-glib/qmi-compat.c b/src/libqmi-glib/qmi-compat.c
index bd5e0a27..78ffb372 100644
--- a/src/libqmi-glib/qmi-compat.c
+++ b/src/libqmi-glib/qmi-compat.c
@@ -2599,4 +2599,28 @@ qmi_wds_get_current_settings_requested_settings_build_string_from_mask (QmiDepre
return qmi_wds_requested_settings_build_string_from_mask ((QmiWdsRequestedSettings)mask);
}
+/*****************************************************************************/
+
+#if defined HAVE_QMI_MESSAGE_UIM_GET_CARD_STATUS
+
+GType
+qmi_message_uim_get_card_status_output_card_status_cards_element_applications_element_get_type (void)
+{
+ return qmi_message_uim_get_card_status_output_card_status_cards_element_applications_element_v2_get_type ();
+}
+
+#endif /* HAVE_QMI_MESSAGE_UIM_GET_CARD_STATUS */
+
+/*****************************************************************************/
+
+#if defined HAVE_QMI_INDICATION_UIM_CARD_STATUS
+
+GType
+qmi_indication_uim_card_status_output_card_status_cards_element_applications_element_get_type (void)
+{
+ return qmi_indication_uim_card_status_output_card_status_cards_element_applications_element_v2_get_type ();
+}
+
+#endif /* HAVE_QMI_INDICATION_UIM_CARD_STATUS */
+
#endif /* QMI_DISABLE_DEPRECATED */
diff --git a/src/libqmi-glib/qmi-compat.h b/src/libqmi-glib/qmi-compat.h
index b3590a0b..2d95e34d 100644
--- a/src/libqmi-glib/qmi-compat.h
+++ b/src/libqmi-glib/qmi-compat.h
@@ -1284,6 +1284,20 @@ GType qmi_wds_get_current_settings_requested_settings_get_type (void) G_GNUC_CON
G_DEPRECATED_FOR (qmi_wds_requested_settings_build_string_from_mask)
gchar *qmi_wds_get_current_settings_requested_settings_build_string_from_mask (QmiDeprecatedWdsGetCurrentSettingsRequestedSettings mask);
+/**
+ * QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_UNKNOWN:
+ *
+ * Unknown personalization feature.
+ *
+ * This name was originally defined in the #QmiUimCardApplicationPersonalizationFeatureStatus
+ * enum, which was renamed to #QmiUimCardApplicationPersonalizationFeatureStatus.
+ *
+ * Since: 1.10
+ * Deprecated: 1.34.0: Use #QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_UNKNOWN instead.
+ */
+G_DEPRECATED typedef int QmiDeprecatedUimCardApplicationPersonalizationFeature;
+#define QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_UNKNOWN (QmiDeprecatedUimCardApplicationPersonalizationFeature) QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_UNKNOWN
+
/******************************************************************************/
/* Conditional method definitions */
@@ -3982,6 +3996,108 @@ gboolean qmi_indication_wds_set_lte_attach_pdn_list_output_get_result (
#endif /* HAVE_QMI_INDICATION_WDS_SET_LTE_ATTACH_PDN_LIST */
+#if defined HAVE_QMI_MESSAGE_UIM_GET_CARD_STATUS
+
+/**
+ * QmiMessageUimGetCardStatusOutputCardStatusCardsElementApplicationsElement:
+ * @type: a #QmiUimCardApplicationType.
+ * @state: a #QmiUimCardApplicationState.
+ * @personalization_state: a #QmiUimCardApplicationPersonalizationState.
+ * @personalization_feature: a #QmiUimCardApplicationPersonalizationFeature.
+ * @personalization_retries: a #guint8.
+ * @personalization_unblock_retries: a #guint8.
+ * @application_identifier_value: a #GArray of #guint8 elements.
+ * @upin_replaces_pin1: a #gboolean.
+ * @pin1_state: a #QmiUimPinState.
+ * @pin1_retries: a #guint8.
+ * @puk1_retries: a #guint8.
+ * @pin2_state: a #QmiUimPinState.
+ * @pin2_retries: a #guint8.
+ * @puk2_retries: a #guint8.
+ *
+ * A QmiMessageUimGetCardStatusOutputCardStatusCardsElementApplicationsElement struct.
+ *
+ * This type is binary compatible with #QmiMessageUimGetCardStatusOutputCardStatusCardsElementApplicationsElementV2
+ * as the size and format of both structs is the same. The only thing that changed is the
+ * representation of one of the enumeration fields.
+ *
+ * Since: 1.10
+ * Deprecated: 1.34. Use #QmiMessageUimGetCardStatusOutputCardStatusCardsElementApplicationsElementV2 instead.
+ */
+G_DEPRECATED_FOR (QmiMessageUimGetCardStatusOutputCardStatusCardsElementApplicationsElementV2)
+typedef struct _QmiMessageUimGetCardStatusOutputCardStatusCardsElementApplicationsElement {
+ QmiUimCardApplicationType type;
+ QmiUimCardApplicationState state;
+ QmiUimCardApplicationPersonalizationState personalization_state;
+ QmiUimCardApplicationPersonalizationFeature personalization_feature;
+ guint8 personalization_retries;
+ guint8 personalization_unblock_retries;
+ GArray *application_identifier_value;
+ gboolean upin_replaces_pin1;
+ QmiUimPinState pin1_state;
+ guint8 pin1_retries;
+ guint8 puk1_retries;
+ QmiUimPinState pin2_state;
+ guint8 pin2_retries;
+ guint8 puk2_retries;
+} QmiMessageUimGetCardStatusOutputCardStatusCardsElementApplicationsElement;
+
+G_DEPRECATED_FOR (qmi_message_uim_get_card_status_output_card_status_cards_element_applications_element_v2_get_type)
+GType qmi_message_uim_get_card_status_output_card_status_cards_element_applications_element_get_type (void) G_GNUC_CONST;
+
+#endif /* HAVE_QMI_MESSAGE_UIM_GET_CARD_STATUS */
+
+#if defined HAVE_QMI_INDICATION_UIM_CARD_STATUS
+
+/**
+ * QmiIndicationUimCardStatusOutputCardStatusCardsElementApplicationsElement:
+ * @type: a #QmiUimCardApplicationType.
+ * @state: a #QmiUimCardApplicationState.
+ * @personalization_state: a #QmiUimCardApplicationPersonalizationState.
+ * @personalization_feature: a #QmiUimCardApplicationPersonalizationFeature.
+ * @personalization_retries: a #guint8.
+ * @personalization_unblock_retries: a #guint8.
+ * @application_identifier_value: a #GArray of #guint8 elements.
+ * @upin_replaces_pin1: a #gboolean.
+ * @pin1_state: a #QmiUimPinState.
+ * @pin1_retries: a #guint8.
+ * @puk1_retries: a #guint8.
+ * @pin2_state: a #QmiUimPinState.
+ * @pin2_retries: a #guint8.
+ * @puk2_retries: a #guint8.
+ *
+ * A QmiIndicationUimCardStatusOutputCardStatusCardsElementApplicationsElement struct.
+ *
+ * This type is binary compatible with #QmiIndicationUimCardStatusOutputCardStatusCardsElementApplicationsElementV2
+ * as the size and format of both structs is the same. The only thing that changed is the
+ * representation of one of the enumeration fields.
+ *
+ * Since: 1.22
+ * Deprecated: 1.34. Use #QmiIndicationUimCardStatusOutputCardStatusCardsElementApplicationsElementV2 instead.
+ */
+G_DEPRECATED_FOR (QmiIndicationUimCardStatusOutputCardStatusCardsElementApplicationsElementV2)
+typedef struct _QmiIndicationUimCardStatusOutputCardStatusCardsElementApplicationsElement {
+ QmiUimCardApplicationType type;
+ QmiUimCardApplicationState state;
+ QmiUimCardApplicationPersonalizationState personalization_state;
+ QmiUimCardApplicationPersonalizationFeature personalization_feature;
+ guint8 personalization_retries;
+ guint8 personalization_unblock_retries;
+ GArray *application_identifier_value;
+ gboolean upin_replaces_pin1;
+ QmiUimPinState pin1_state;
+ guint8 pin1_retries;
+ guint8 puk1_retries;
+ QmiUimPinState pin2_state;
+ guint8 pin2_retries;
+ guint8 puk2_retries;
+} QmiIndicationUimCardStatusOutputCardStatusCardsElementApplicationsElement;
+
+G_DEPRECATED_FOR (qmi_indication_uim_card_status_output_card_status_cards_element_applications_element_v2_get_type)
+GType qmi_indication_uim_card_status_output_card_status_cards_element_applications_element_get_type (void) G_GNUC_CONST;
+
+#endif /* HAVE_QMI_INDICATION_UIM_CARD_STATUS */
+
#endif /* QMI_DISABLE_DEPRECATED */
#endif /* _LIBQMI_GLIB_QMI_COMPAT_H_ */
diff --git a/src/libqmi-glib/qmi-enums-uim.h b/src/libqmi-glib/qmi-enums-uim.h
index d5b0ad87..76ede04a 100644
--- a/src/libqmi-glib/qmi-enums-uim.h
+++ b/src/libqmi-glib/qmi-enums-uim.h
@@ -19,6 +19,7 @@
*
* Copyright (C) 2012 Google Inc.
* Copyright (C) 2012-2017 Aleksander Morgado <aleksander@aleksander.es>
+ * Copyright (c) 2023 Qualcomm Innovation Center, Inc.
*/
#ifndef _LIBQMI_GLIB_QMI_ENUMS_UIM_H_
@@ -355,27 +356,83 @@ typedef enum { /*< since=1.10 >*/
* @QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_1X_SERVICE_PROVIDER: 1X service provider.
* @QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_1X_CORPORATE: 1X corporate.
* @QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_1X_RUIM: 1X R-UIM.
- * @QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_UNKNOWN: Unknown.
+ * @QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_GW_SERVICE_PROVIDER_NAME: GW SPN. Since 1.34.
+ * @QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_GW_SP_EHPLMN: GW SP + EHPLMN. Since 1.34.
+ * @QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_GW_ICCID: GW ICCID. Since 1.34.
+ * @QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_GW_IMPI: GW IMPI. Since 1.34.
+ * @QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_GW_NETWORK_SUBSET_SERVICE_PROVIDER: GW network subset and service provider. Since 1.34.
+ * @QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_GW_CARRIER: GW carrier. Since 1.34.
*
* Card application personalization feature, when a code is required.
*
* Since: 1.10
*/
typedef enum { /*< since=1.10 >*/
- QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_GW_NETWORK = 0,
- QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_GW_NETWORK_SUBSET = 1,
- QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_GW_SERVICE_PROVIDER = 2,
- QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_GW_CORPORATE = 3,
- QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_GW_UIM = 4,
- QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_1X_NETWORK_TYPE_1 = 5,
- QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_1X_NETWORK_TYPE_2 = 6,
- QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_1X_HRPD = 7,
- QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_1X_SERVICE_PROVIDER = 8,
- QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_1X_CORPORATE = 9,
- QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_1X_RUIM = 10,
- QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_UNKNOWN = 11
+ QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_GW_NETWORK = 0,
+ QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_GW_NETWORK_SUBSET = 1,
+ QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_GW_SERVICE_PROVIDER = 2,
+ QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_GW_CORPORATE = 3,
+ QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_GW_UIM = 4,
+ QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_1X_NETWORK_TYPE_1 = 5,
+ QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_1X_NETWORK_TYPE_2 = 6,
+ QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_1X_HRPD = 7,
+ QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_1X_SERVICE_PROVIDER = 8,
+ QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_1X_CORPORATE = 9,
+ QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_1X_RUIM = 10,
+ QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_GW_SERVICE_PROVIDER_NAME = 11,
+ QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_GW_SP_EHPLMN = 12,
+ QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_GW_ICCID = 13,
+ QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_GW_IMPI = 14,
+ QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_GW_NETWORK_SUBSET_SERVICE_PROVIDER = 15,
+ QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_GW_CARRIER = 16,
} QmiUimCardApplicationPersonalizationFeature;
+/**
+ * QmiUimCardApplicationPersonalizationFeatureStatus:
+ * @QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_GW_NETWORK: GW network.
+ * @QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_GW_NETWORK_SUBSET: GW network subset.
+ * @QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_GW_SERVICE_PROVIDER: GW service provider.
+ * @QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_GW_CORPORATE: GW corporate.
+ * @QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_GW_UIM: UIM.
+ * @QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_1X_NETWORK_TYPE_1: 1X network type 1.
+ * @QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_1X_NETWORK_TYPE_2: 1X network type 2.
+ * @QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_1X_HRPD: 1X HRPD.
+ * @QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_1X_SERVICE_PROVIDER: 1X service provider.
+ * @QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_1X_CORPORATE: 1X corporate.
+ * @QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_1X_RUIM: 1X R-UIM.
+ * @QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_UNKNOWN: Unknown.
+ * @QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_GW_SERVICE_PROVIDER_NAME: GW service provider name.
+ * @QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_GW_SP_EHPLMN: GW SP + EHPLMN.
+ * @QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_GW_ICCID: GW ICCID.
+ * @QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_GW_IMPI: GW IMPI.
+ * @QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_GW_NETWORK_SUBSET_SERVICE_PROVIDER: GW network subset and service provider.
+ * @QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_GW_CARRIER: GW carrier.
+ *
+ * Card application personalization feature status.
+ *
+ * Since: 1.34
+ */
+typedef enum { /*< since=1.34 >*/
+ QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_GW_NETWORK = 0,
+ QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_GW_NETWORK_SUBSET = 1,
+ QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_GW_SERVICE_PROVIDER = 2,
+ QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_GW_CORPORATE = 3,
+ QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_GW_UIM = 4,
+ QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_1X_NETWORK_TYPE_1 = 5,
+ QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_1X_NETWORK_TYPE_2 = 6,
+ QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_1X_HRPD = 7,
+ QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_1X_SERVICE_PROVIDER = 8,
+ QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_1X_CORPORATE = 9,
+ QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_1X_RUIM = 10,
+ QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_UNKNOWN = 11,
+ QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_GW_SERVICE_PROVIDER_NAME = 12,
+ QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_GW_SP_EHPLMN = 13,
+ QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_GW_ICCID = 14,
+ QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_GW_IMPI = 15,
+ QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_GW_NETWORK_SUBSET_SERVICE_PROVIDER = 16,
+ QMI_UIM_CARD_APPLICATION_PERSONALIZATION_FEATURE_STATUS_GW_CARRIER = 17,
+} QmiUimCardApplicationPersonalizationFeatureStatus;
+
/*****************************************************************************/
/* Helper enums for the 'QMI UIM Refresh' indication */
diff --git a/src/qmicli/qmicli-uim.c b/src/qmicli/qmicli-uim.c
index 5b499365..c3d0abad 100644
--- a/src/qmicli/qmicli-uim.c
+++ b/src/qmicli/qmicli-uim.c
@@ -1519,10 +1519,10 @@ get_card_status_ready (QmiClientUim *client,
card->upuk_retries);
for (j = 0; j < card->applications->len; j++) {
- QmiMessageUimGetCardStatusOutputCardStatusCardsElementApplicationsElement *app;
+ QmiMessageUimGetCardStatusOutputCardStatusCardsElementApplicationsElementV2 *app;
gchar *str;
- app = &g_array_index (card->applications, QmiMessageUimGetCardStatusOutputCardStatusCardsElementApplicationsElement, j);
+ app = &g_array_index (card->applications, QmiMessageUimGetCardStatusOutputCardStatusCardsElementApplicationsElementV2, j);
str = qmicli_get_raw_data_printable (app->application_identifier_value, 80, "");
@@ -1542,7 +1542,7 @@ get_card_status_ready (QmiClientUim *client,
"\t\t\tDisable retries: '%u'\n"
"\t\t\tUnblock retries: '%u'\n",
qmi_uim_card_application_personalization_state_get_string (app->personalization_state),
- qmi_uim_card_application_personalization_feature_get_string (app->personalization_feature),
+ qmi_uim_card_application_personalization_feature_status_get_string (app->personalization_feature),
app->personalization_retries,
app->personalization_unblock_retries);
else