diff options
author | Pavan Holla <pholla@chromium.org> | 2020-09-30 20:44:48 +0000 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2020-10-03 13:14:21 +0000 |
commit | bab0f44e74031896b9fd4c3a0390285d838aaa07 (patch) | |
tree | f023a44475c7996faa080c3e6b482c2fe7b8f60e /src | |
parent | 74ab15d3239b62c53a0eecfac5a0488b6731bb71 (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.c | 21 |
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, + ¤t_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); |