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.
This commit is contained in:
@@ -399,7 +399,7 @@ dnl-----------------------------------------------------------------------------
|
|||||||
dnl QMI support (enabled by default)
|
dnl QMI support (enabled by default)
|
||||||
dnl
|
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])
|
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")
|
AM_CONDITIONAL(WITH_QMI, test "x$with_qmi" = "xyes")
|
||||||
|
@@ -352,7 +352,8 @@ register_in_network_inr (GTask *task,
|
|||||||
QmiClient *client,
|
QmiClient *client,
|
||||||
GCancellable *cancellable,
|
GCancellable *cancellable,
|
||||||
guint16 mcc,
|
guint16 mcc,
|
||||||
guint16 mnc)
|
guint16 mnc,
|
||||||
|
gboolean mnc_pcs_digit)
|
||||||
{
|
{
|
||||||
QmiMessageNasInitiateNetworkRegisterInput *input;
|
QmiMessageNasInitiateNetworkRegisterInput *input;
|
||||||
|
|
||||||
@@ -370,6 +371,12 @@ register_in_network_inr (GTask *task,
|
|||||||
mnc,
|
mnc,
|
||||||
QMI_NAS_RADIO_INTERFACE_UNKNOWN, /* don't change radio interface */
|
QMI_NAS_RADIO_INTERFACE_UNKNOWN, /* don't change radio interface */
|
||||||
NULL);
|
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 {
|
} else {
|
||||||
/* Otherwise, automatic registration */
|
/* Otherwise, automatic registration */
|
||||||
qmi_message_nas_initiate_network_register_input_set_action (
|
qmi_message_nas_initiate_network_register_input_set_action (
|
||||||
@@ -421,7 +428,8 @@ register_in_network_sssp (GTask *task,
|
|||||||
QmiClient *client,
|
QmiClient *client,
|
||||||
GCancellable *cancellable,
|
GCancellable *cancellable,
|
||||||
guint16 mcc,
|
guint16 mcc,
|
||||||
guint16 mnc)
|
guint16 mnc,
|
||||||
|
gboolean mnc_pcs_digit)
|
||||||
{
|
{
|
||||||
QmiMessageNasSetSystemSelectionPreferenceInput *input;
|
QmiMessageNasSetSystemSelectionPreferenceInput *input;
|
||||||
|
|
||||||
@@ -434,6 +442,13 @@ register_in_network_sssp (GTask *task,
|
|||||||
mnc,
|
mnc,
|
||||||
NULL);
|
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_set_system_selection_preference (
|
||||||
QMI_CLIENT_NAS (client),
|
QMI_CLIENT_NAS (client),
|
||||||
input,
|
input,
|
||||||
@@ -456,6 +471,7 @@ mm_shared_qmi_3gpp_register_in_network (MMIfaceModem3gpp *self,
|
|||||||
RegisterInNetworkContext *ctx;
|
RegisterInNetworkContext *ctx;
|
||||||
guint16 mcc = 0;
|
guint16 mcc = 0;
|
||||||
guint16 mnc;
|
guint16 mnc;
|
||||||
|
gboolean mnc_pcs_digit = FALSE;
|
||||||
QmiClient *client = NULL;
|
QmiClient *client = NULL;
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
Private *priv = 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);
|
g_task_set_task_data (task, ctx, (GDestroyNotify)register_in_network_context_free);
|
||||||
|
|
||||||
/* Parse input MCC/MNC */
|
/* 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_assert (error != NULL);
|
||||||
g_task_return_error (task, error);
|
g_task_return_error (task, error);
|
||||||
g_object_unref (task);
|
g_object_unref (task);
|
||||||
@@ -483,9 +499,9 @@ mm_shared_qmi_3gpp_register_in_network (MMIfaceModem3gpp *self,
|
|||||||
|
|
||||||
priv = get_private (MM_SHARED_QMI (self));
|
priv = get_private (MM_SHARED_QMI (self));
|
||||||
if (priv->feature_nas_ssp == FEATURE_SUPPORTED)
|
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
|
else
|
||||||
register_in_network_inr (task, client, cancellable, mcc, mnc);
|
register_in_network_inr (task, client, cancellable, mcc, mnc, mnc_pcs_digit);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
Reference in New Issue
Block a user