Hi Denis.
OK, I can see that this approach was rather too simplistic... Maybe checking
the returned CME error would be a better idea?
I’m a bit unsure how (or if) to proceed with this. As this is in the core,
and not our driver, it might be more on your table? If you think it is
important.



Br Marit




2010/11/2 Denis Kenzior <denk...@gmail.com>

> Hi Marit,
>
> On 11/02/2010 10:08 AM, Marit Henriksen wrote:
> > From: Marit Henriksen <marit.henrik...@stericsson.com>
> >
> > When changing pin, it is possible to get in a state where the modem
> requests puk
> > (if incorrect pin is entered too many times). Need to check the SIM pin
> status
> > to discover this.
> > ---
> >  src/sim.c |   15 ++++++++-------
> >  1 files changed, 8 insertions(+), 7 deletions(-)
> >
> > diff --git a/src/sim.c b/src/sim.c
> > index 699ebe9..b2277c5 100644
> > --- a/src/sim.c
> > +++ b/src/sim.c
> > @@ -628,15 +628,16 @@ 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;
> > +     DBusMessage *reply;
> >
> > -     if (error->type != OFONO_ERROR_TYPE_NO_ERROR) {
> > -             __ofono_dbus_pending_reply(&sim->pending,
> > -                             __ofono_error_failed(sim->pending));
> > -             return;
> > -     }
> > +     if (error->type != OFONO_ERROR_TYPE_NO_ERROR)
> > +             reply = __ofono_error_failed(sim->pending);
> > +     else
> > +             reply = dbus_message_new_method_return(sim->pending);
> >
> > -     __ofono_dbus_pending_reply(&sim->pending,
> > -
> dbus_message_new_method_return(sim->pending));
> > +     __ofono_dbus_pending_reply(&sim->pending, reply);
> > +
> > +     sim_pin_check(sim);
>
> I don't think that running sim_pin_check is such a good idea.  That
> function initializes the sim interface when +CPIN returns READY.
>
> You also need to tear down the modem state back to pre-sim if the modem
> asks for a PUK after change pin fails.  That entails removing all
> post_sim/post_online atoms and bring the modem back to the offline state ;)
>
> >  }
> >
> >  static DBusMessage *sim_change_pin(DBusConnection *conn, DBusMessage
> *msg,
>
> Regards,
> -Denis
>
_______________________________________________
ofono mailing list
ofono@ofono.org
http://lists.ofono.org/listinfo/ofono

Reply via email to