aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTeijo Kinnunen <teijo.kinnunen@uros.com>2021-05-06 15:11:37 +0300
committerTeijo Kinnunen <teijo.kinnunen@uros.com>2021-05-17 12:46:52 +0300
commit1147d376cd4d575eb7178f7b47a3fc10efe0f72b (patch)
treee44718a199b4787a7924a6a0d8eb7b6362bf6ab7
parent2471b950b0771d680020ef8debf108d7fbd6e3f2 (diff)
shared-qmi: set MNC PCS digit for manual network registration
Set the MNC PCS digit status when attempting to register to a network with 3 digit MNC and MNC < 100.
-rw-r--r--configure.ac2
-rw-r--r--src/mm-shared-qmi.c26
2 files changed, 22 insertions, 6 deletions
diff --git a/configure.ac b/configure.ac
index 4b678864..d0f42de2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -399,7 +399,7 @@ dnl-----------------------------------------------------------------------------
dnl QMI support (enabled by default)
dnl
-LIBQMI_VERSION=1.29.4
+LIBQMI_VERSION=1.29.6
AC_ARG_WITH(qmi, AS_HELP_STRING([--without-qmi], [Build without QMI support]), [], [with_qmi=yes])
AM_CONDITIONAL(WITH_QMI, test "x$with_qmi" = "xyes")
diff --git a/src/mm-shared-qmi.c b/src/mm-shared-qmi.c
index 65d69e07..60bbfa6a 100644
--- a/src/mm-shared-qmi.c
+++ b/src/mm-shared-qmi.c
@@ -352,7 +352,8 @@ register_in_network_inr (GTask *task,
QmiClient *client,
GCancellable *cancellable,
guint16 mcc,
- guint16 mnc)
+ guint16 mnc,
+ gboolean mnc_pcs_digit)
{
QmiMessageNasInitiateNetworkRegisterInput *input;
@@ -370,6 +371,12 @@ register_in_network_inr (GTask *task,
mnc,
QMI_NAS_RADIO_INTERFACE_UNKNOWN, /* don't change radio interface */
NULL);
+ if (mnc_pcs_digit && mnc < 100)
+ qmi_message_nas_initiate_network_register_input_set_mnc_pcs_digit_include_status (
+ input,
+ mnc_pcs_digit,
+ NULL
+ );
} else {
/* Otherwise, automatic registration */
qmi_message_nas_initiate_network_register_input_set_action (
@@ -421,7 +428,8 @@ register_in_network_sssp (GTask *task,
QmiClient *client,
GCancellable *cancellable,
guint16 mcc,
- guint16 mnc)
+ guint16 mnc,
+ gboolean mnc_pcs_digit)
{
QmiMessageNasSetSystemSelectionPreferenceInput *input;
@@ -434,6 +442,13 @@ register_in_network_sssp (GTask *task,
mnc,
NULL);
+ if (mnc_pcs_digit && mnc < 100)
+ qmi_message_nas_set_system_selection_preference_input_set_mnc_pcs_digit_include_status (
+ input,
+ mnc_pcs_digit,
+ NULL
+ );
+
qmi_client_nas_set_system_selection_preference (
QMI_CLIENT_NAS (client),
input,
@@ -456,6 +471,7 @@ mm_shared_qmi_3gpp_register_in_network (MMIfaceModem3gpp *self,
RegisterInNetworkContext *ctx;
guint16 mcc = 0;
guint16 mnc;
+ gboolean mnc_pcs_digit = FALSE;
QmiClient *client = NULL;
GError *error = NULL;
Private *priv = NULL;
@@ -474,7 +490,7 @@ mm_shared_qmi_3gpp_register_in_network (MMIfaceModem3gpp *self,
g_task_set_task_data (task, ctx, (GDestroyNotify)register_in_network_context_free);
/* Parse input MCC/MNC */
- if (operator_id && !mm_3gpp_parse_operator_id (operator_id, &mcc, &mnc, NULL, &error)) {
+ if (operator_id && !mm_3gpp_parse_operator_id (operator_id, &mcc, &mnc, &mnc_pcs_digit, &error)) {
g_assert (error != NULL);
g_task_return_error (task, error);
g_object_unref (task);
@@ -483,9 +499,9 @@ mm_shared_qmi_3gpp_register_in_network (MMIfaceModem3gpp *self,
priv = get_private (MM_SHARED_QMI (self));
if (priv->feature_nas_ssp == FEATURE_SUPPORTED)
- register_in_network_sssp (task, client, cancellable, mcc, mnc);
+ register_in_network_sssp (task, client, cancellable, mcc, mnc, mnc_pcs_digit);
else
- register_in_network_inr (task, client, cancellable, mcc, mnc);
+ register_in_network_inr (task, client, cancellable, mcc, mnc, mnc_pcs_digit);
}
/*****************************************************************************/