All of lore.kernel.org
 help / color / mirror / Atom feed
* RE: [PATCH] sim: check if lock is locked after code changing attempt
@ 2011-01-12  7:39 Jussi.Kangas
  2011-01-12 10:11 ` Lucas De Marchi
  2011-01-12 15:35 ` Denis Kenzior
  0 siblings, 2 replies; 9+ messages in thread
From: Jussi.Kangas @ 2011-01-12  7:39 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 1855 bytes --]

Hi Lucas,

On Tue, 2011-01-11 at 16:08 +0200, Lucas De Marchi wrote:
> Hi Jussi
> 
> On Tue, Jan 11, 2011 at 10:17 AM,  <Jussi.Kangas@tieto.com> wrote:
> > Hi,
> >
> > This is fix to Marit Henriksen's TODO item "Check SIM pin status if sim_change_pin fails". I've discussed with Marit and it's ok for her if I fix the issue. Problem here is that issue could perhaps also be fixed with retry counter solution introduced by Lucas De Marchi couple of tasks ago. That would seem however require some extra implementation in ste modem ( at least I was not able get the ofono show correct values without extra modifications ) and I think that isimodems don't have that sort of retry counter at all. Because of that and since I had this solution already implemented I propose it to be added as well.
> >
> 
> I failed to understand why you are hard-coding this and why you'd like
> to use retry counters. Can't you just check the pin state by calling
> sim_pin_check()?
> 
> Moreover, this is not really implementing what the TODO item says.
> 
> 
> regards,
> Lucas De Marchi

Marit already proposed sim_pin_check approach 2010/11/2. Denis Kenzior
thought that initializing sim interface would not be a good idea. See
mail "Re: [Patch] sim: Check SIM pin status after changing pin" from
Friday 5th in November 2010. 

True, fix proposal does not do exactly what TODO item says. It trusts to
returned error value instead of going to check the sim state once more.
In my testings this value has been trustable so far and there has not
been reason to go check the state. Of course I've tested only with one
modem so this might not be a universal truth.

I don't particularly wish to use the retry counters. I was just thinking that same
information ( PUK required ) could be deduced by counting the retries. 

Br,
-Jussi




^ permalink raw reply	[flat|nested] 9+ messages in thread
* [PATCH] sim: check if lock is locked after code changing attempt
@ 2011-01-11 12:17 Jussi.Kangas
  2011-01-11 14:08 ` Lucas De Marchi
  2011-01-12  5:07 ` Denis Kenzior
  0 siblings, 2 replies; 9+ messages in thread
From: Jussi.Kangas @ 2011-01-11 12:17 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 4257 bytes --]

Hi,

This is fix to Marit Henriksen's TODO item "Check SIM pin status if sim_change_pin fails". I've discussed with Marit and it's ok for her if I fix the issue. Problem here is that issue could perhaps also be fixed with retry counter solution introduced by Lucas De Marchi couple of tasks ago. That would seem however require some extra implementation in ste modem ( at least I was not able get the ofono show correct values without extra modifications ) and I think that isimodems don't have that sort of retry counter at all. Because of that and since I had this solution already implemented I propose it to be added as well. 

Br,
-Jussi

---
 src/sim.c |   54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 54 insertions(+), 0 deletions(-)

diff --git a/src/sim.c b/src/sim.c
index d627647..789ddde 100644
--- a/src/sim.c
+++ b/src/sim.c
@@ -712,8 +712,60 @@ static DBusMessage *sim_unlock_pin(DBusConnection *conn, DBusMessage *msg,
 static void sim_change_pin_cb(const struct ofono_error *error, void *data)
 {
     struct ofono_sim *sim = data;
+    DBusConnection *conn = ofono_dbus_get_connection();
+    const char *path = __ofono_atom_get_path(sim->atom);
+    struct ofono_modem *modem = __ofono_atom_get_modem(sim->atom);
+    const char *pin_name;
 
     if (error->type != OFONO_ERROR_TYPE_NO_ERROR) {
+        if (error->error == 12) {
+            sim->locked_pins[sim->pin_type] = TRUE;
+            switch (sim->pin_type) {
+            case OFONO_SIM_PASSWORD_SIM_PIN:
+                sim->pin_type = OFONO_SIM_PASSWORD_SIM_PUK;
+                pin_name = sim_passwd_name(
+                    OFONO_SIM_PASSWORD_SIM_PUK);
+                break;
+            case OFONO_SIM_PASSWORD_PHFSIM_PIN:
+                sim->pin_type = OFONO_SIM_PASSWORD_PHFSIM_PUK;
+                pin_name = sim_passwd_name(
+                    OFONO_SIM_PASSWORD_PHFSIM_PUK);
+                break;
+            case OFONO_SIM_PASSWORD_PHCORP_PIN:
+                sim->pin_type = OFONO_SIM_PASSWORD_PHCORP_PUK;
+                pin_name = sim_passwd_name(
+                    OFONO_SIM_PASSWORD_PHCORP_PUK);
+                break;
+            case OFONO_SIM_PASSWORD_PHNET_PIN:
+                sim->pin_type = OFONO_SIM_PASSWORD_PHNET_PUK;
+                pin_name = sim_passwd_name(
+                        OFONO_SIM_PASSWORD_PHNET_PUK);
+            case OFONO_SIM_PASSWORD_PHNETSUB_PIN:
+                sim->pin_type = OFONO_SIM_PASSWORD_PHNETSUB_PUK;
+                pin_name = sim_passwd_name(
+                    OFONO_SIM_PASSWORD_PHNETSUB_PUK);
+                break;
+            case OFONO_SIM_PASSWORD_PHSP_PIN:
+                sim->pin_type = OFONO_SIM_PASSWORD_PHSP_PUK;
+                pin_name = sim_passwd_name(
+                    OFONO_SIM_PASSWORD_PHSP_PUK);
+                break;
+            case OFONO_SIM_PASSWORD_SIM_PIN2:
+                sim->pin_type = OFONO_SIM_PASSWORD_SIM_PUK2;
+                pin_name = sim_passwd_name(
+                    OFONO_SIM_PASSWORD_SIM_PUK2);
+                break;
+            default:
+                break;
+            }
+            ofono_dbus_signal_property_changed(conn, path,
+                OFONO_SIM_MANAGER_INTERFACE,
+                "PinRequired", DBUS_TYPE_STRING,
+                &pin_name);
+
+            if (sim->pin_type != OFONO_SIM_PASSWORD_SIM_PUK2)
+                ofono_modem_reset(modem);
+        }
         __ofono_dbus_pending_reply(&sim->pending,
                 __ofono_error_failed(sim->pending));
 
@@ -722,6 +774,7 @@ static void sim_change_pin_cb(const struct ofono_error *error, void *data)
         return;
     }
 
+    sim->pin_type = OFONO_SIM_PASSWORD_NONE;
     __ofono_dbus_pending_reply(&sim->pending,
                 dbus_message_new_method_return(sim->pending));
 
@@ -764,6 +817,7 @@ static DBusMessage *sim_change_pin(DBusConnection *conn, DBusMessage *msg,
         return dbus_message_new_method_return(msg);
 
     sim->pending = dbus_message_ref(msg);
+    sim->pin_type = type;
     sim->driver->change_passwd(sim, type, old, new,
                     sim_change_pin_cb, sim);
 
-- 
1.7.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2011-01-13 16:28 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-01-12  7:39 [PATCH] sim: check if lock is locked after code changing attempt Jussi.Kangas
2011-01-12 10:11 ` Lucas De Marchi
2011-01-12 15:35 ` Denis Kenzior
  -- strict thread matches above, loose matches on Subject: below --
2011-01-11 12:17 Jussi.Kangas
2011-01-11 14:08 ` Lucas De Marchi
2011-01-12  5:07 ` Denis Kenzior
2011-01-13  8:34   ` Jussi.Kangas
2011-01-13 13:35     ` Lucas De Marchi
2011-01-13 16:28     ` Denis Kenzior

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.