aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPavan Holla <pholla@chromium.org>2020-09-30 20:44:48 +0000
committerAleksander Morgado <aleksander@aleksander.es>2020-10-03 13:14:21 +0000
commitbab0f44e74031896b9fd4c3a0390285d838aaa07 (patch)
treef023a44475c7996faa080c3e6b482c2fe7b8f60e /src
parent74ab15d3239b62c53a0eecfac5a0488b6731bb71 (diff)
broadband-modem-qmi: Report FIXED_DIALING lock correctly
Querying facility locks should return a FIXED_DIALING lock if PIN2 lock is enabled.
Diffstat (limited to 'src')
-rw-r--r--src/mm-broadband-modem-qmi.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/mm-broadband-modem-qmi.c b/src/mm-broadband-modem-qmi.c
index aafe2949..9a1a1e64 100644
--- a/src/mm-broadband-modem-qmi.c
+++ b/src/mm-broadband-modem-qmi.c
@@ -2001,6 +2001,7 @@ get_sim_lock_status_via_pin_status_ready (QmiClientDms *client,
QmiDmsUimPinStatus current_status;
GError *error;
gboolean pin1_enabled;
+ gboolean pin2_enabled;
self = g_task_get_source_object (task);
ctx = g_task_get_task_data (task);
@@ -2030,6 +2031,21 @@ get_sim_lock_status_via_pin_status_ready (QmiClientDms *client,
return;
}
+ if (qmi_message_dms_uim_get_pin_status_output_get_pin2_status (
+ output,
+ &current_status,
+ NULL, /* verify_retries_left */
+ NULL, /* unblock_retries_left */
+ &error)) {
+ pin2_enabled = mm_pin_enabled_from_qmi_uim_pin_status (current_status);
+ mm_obj_dbg (self, "PIN2 is reported %s", (pin2_enabled ? "enabled" : "disabled"));
+ } else {
+ qmi_message_dms_uim_get_pin_status_output_unref (output);
+ g_task_return_error (task, error);
+ g_object_unref (task);
+ return;
+ }
+
qmi_message_dms_uim_get_pin_status_output_unref (output);
if (pin1_enabled)
@@ -2037,6 +2053,11 @@ get_sim_lock_status_via_pin_status_ready (QmiClientDms *client,
else
ctx->locks &= ~(MM_MODEM_3GPP_FACILITY_SIM);
+ if (pin2_enabled)
+ ctx->locks |= (MM_MODEM_3GPP_FACILITY_FIXED_DIALING);
+ else
+ ctx->locks &= ~(MM_MODEM_3GPP_FACILITY_FIXED_DIALING);
+
/* No more facilities to query, all done */
g_task_return_int (task, ctx->locks);
g_object_unref (task);