Hi Lucas, On 01/04/2011 07:06 AM, Lucas De Marchi wrote: > --- > include/sim.h | 11 +++++++++++ > 1 files changed, 11 insertions(+), 0 deletions(-) > > diff --git a/include/sim.h b/include/sim.h > index 7860e24..bf4aaf9 100644 > --- a/include/sim.h > +++ b/include/sim.h > @@ -77,6 +77,11 @@ enum ofono_sim_state { > OFONO_SIM_STATE_READY, > }; > > +struct ofono_sim_pin_retry { > + enum ofono_sim_password_type id; > + int val; > +}; > + > typedef void (*ofono_sim_file_info_cb_t)(const struct ofono_error *error, > int filelength, > enum ofono_sim_file_structure structure, > @@ -108,6 +113,10 @@ typedef void (*ofono_sim_passwd_cb_t)(const struct ofono_error *error, > enum ofono_sim_password_type type, > void *data); > > +typedef void (*ofono_sim_pin_retries_cb_t)(const struct ofono_error *error, > + GSList *pin_retries, One of the restrictions on the public ofono API is that we cannot use G* types. We can solve this in several ways: - Use an array of ints with the size always being OFONO_SIM_PASSWORD_INVALID. The integer value contains the number of retries or -1 if unknown / unsupported. - Use an int length, struct ofono_sim_pin_retry *retries elements. This is similar to the approach taken in e.g. voicecall ofono_call_list_cb_t or netreg ofono_netreg_operator_list_cb_t > + void *data); > + > typedef void (*ofono_sim_lock_unlock_cb_t)(const struct ofono_error *error, > void *data); > > @@ -144,6 +153,8 @@ struct ofono_sim_driver { > ofono_sim_passwd_cb_t cb, void *data); > void (*send_passwd)(struct ofono_sim *sim, const char *passwd, > ofono_sim_lock_unlock_cb_t cb, void *data); > + void (*query_pin_retries)(struct ofono_sim *sim, > + ofono_sim_pin_retries_cb_t cb, void *data); > void (*reset_passwd)(struct ofono_sim *sim, const char *puk, > const char *passwd, > ofono_sim_lock_unlock_cb_t cb, void *data); Regards, -Denis