diff options
author | Teijo Kinnunen <teijo.kinnunen@uros.com> | 2021-05-06 15:11:37 +0300 |
---|---|---|
committer | Teijo Kinnunen <teijo.kinnunen@uros.com> | 2021-05-17 12:46:52 +0300 |
commit | 1147d376cd4d575eb7178f7b47a3fc10efe0f72b (patch) | |
tree | e44718a199b4787a7924a6a0d8eb7b6362bf6ab7 /src | |
parent | 2471b950b0771d680020ef8debf108d7fbd6e3f2 (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.
Diffstat (limited to 'src')
-rw-r--r-- | src/mm-shared-qmi.c | 26 |
1 files changed, 21 insertions, 5 deletions
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); } /*****************************************************************************/ |