aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichal Mazur <mkm@semihalf.com>2021-12-16 14:11:23 +0100
committerAleksander Morgado <aleksander@aleksander.es>2022-01-30 13:48:48 +0000
commitee87a6853228e0b4b5e6c132f0c90e8d094af441 (patch)
tree09bba84fc0732d79d84a38e786d1c4be1c953150 /src
parent789ff2d822308e2483c262e644c42a4e79d169b8 (diff)
Revert "mm-sim-mbim: Remove update of remaining attempts"
This reverts commit 46c5cd8b7279e6139466664f87d744a0553fa1c3.
Diffstat (limited to 'src')
-rw-r--r--src/mm-sim-mbim.c53
1 files changed, 53 insertions, 0 deletions
diff --git a/src/mm-sim-mbim.c b/src/mm-sim-mbim.c
index 9b780a46..e7b6547e 100644
--- a/src/mm-sim-mbim.c
+++ b/src/mm-sim-mbim.c
@@ -78,6 +78,29 @@ peek_device (gpointer self,
return TRUE;
}
+static void
+update_modem_unlock_retries (MMSimMbim *self,
+ MbimPinType pin_type,
+ guint32 remaining_attempts)
+{
+ MMBaseModem *modem = NULL;
+ MMUnlockRetries *unlock_retries;
+
+ g_object_get (G_OBJECT (self),
+ MM_BASE_SIM_MODEM, &modem,
+ NULL);
+ g_assert (MM_IS_BASE_MODEM (modem));
+
+ unlock_retries = mm_unlock_retries_new ();
+ mm_unlock_retries_set (unlock_retries,
+ mm_modem_lock_from_mbim_pin_type (pin_type),
+ remaining_attempts);
+ mm_iface_modem_update_unlock_retries (MM_IFACE_MODEM (modem),
+ unlock_retries);
+ g_object_unref (unlock_retries);
+ g_object_unref (modem);
+}
+
/*****************************************************************************/
/* Preload subscriber info */
@@ -779,6 +802,8 @@ pin_set_enter_ready (MbimDevice *device,
&pin_state,
&remaining_attempts,
NULL)) {
+ update_modem_unlock_retries (self, pin_type, remaining_attempts);
+
if (!success) {
/* Sending PIN failed, build a better error to report */
if (pin_type == MBIM_PIN_TYPE_PIN1 && pin_state == MBIM_PIN_STATE_LOCKED) {
@@ -874,6 +899,8 @@ puk_set_enter_ready (MbimDevice *device,
&pin_state,
&remaining_attempts,
NULL)) {
+ update_modem_unlock_retries (self, pin_type, remaining_attempts);
+
if (!success) {
/* Sending PUK failed, build a better error to report */
if (pin_type == MBIM_PIN_TYPE_PUK1 && pin_state == MBIM_PIN_STATE_LOCKED) {
@@ -951,12 +978,25 @@ pin_set_enable_ready (MbimDevice *device,
GAsyncResult *res,
GTask *task)
{
+ MMSimMbim *self;
GError *error = NULL;
MbimMessage *response;
+ MbimPinType pin_type;
+ guint32 remaining_attempts;
+
+ self = g_task_get_source_object (task);
response = mbim_device_command_finish (device, res, &error);
if (response) {
mbim_message_response_get_result (response, MBIM_MESSAGE_TYPE_COMMAND_DONE, &error);
+
+ if (mbim_message_pin_response_parse (response,
+ &pin_type,
+ NULL,
+ &remaining_attempts,
+ NULL))
+ update_modem_unlock_retries (self, pin_type, remaining_attempts);
+
mbim_message_unref (response);
}
@@ -1029,12 +1069,25 @@ pin_set_change_ready (MbimDevice *device,
GAsyncResult *res,
GTask *task)
{
+ MMSimMbim *self;
GError *error = NULL;
MbimMessage *response;
+ MbimPinType pin_type;
+ guint32 remaining_attempts;
+
+ self = g_task_get_source_object (task);
response = mbim_device_command_finish (device, res, &error);
if (response) {
mbim_message_response_get_result (response, MBIM_MESSAGE_TYPE_COMMAND_DONE, &error);
+
+ if (mbim_message_pin_response_parse (response,
+ &pin_type,
+ NULL,
+ &remaining_attempts,
+ NULL))
+ update_modem_unlock_retries (self, pin_type, remaining_attempts);
+
mbim_message_unref (response);
}