All of lore.kernel.org
 help / color / mirror / Atom feed
* Re: [PATCH 1/2] [sim] Emit LockedPins after pin_type is queried
  2015-06-18 11:46 ` [PATCH 1/2] [sim] Emit LockedPins after pin_type is queried Tommi Kenakkala
@ 2015-06-18  4:07   ` Denis Kenzior
  2015-06-22 13:37     ` [PATCH 2/2] " Tommi Kenakkala
  0 siblings, 1 reply; 7+ messages in thread
From: Denis Kenzior @ 2015-06-18  4:07 UTC (permalink / raw)
  To: ofono

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

Hi Tommi,

On 06/18/2015 06:46 AM, Tommi Kenakkala wrote:
> Fixes property change not being emited when hot-swapping a
> PIN-enabled card.
> ---
>   src/sim.c |   20 +++++++++++++++++++-
>   1 file changed, 19 insertions(+), 1 deletion(-)
>
> diff --git a/src/sim.c b/src/sim.c
> index b5badf1..0bcafe0 100644
> --- a/src/sim.c
> +++ b/src/sim.c
> @@ -2737,6 +2737,10 @@ static void sim_pin_query_cb(const struct ofono_error *error,
>   	DBusConnection *conn = ofono_dbus_get_connection();
>   	const char *path = __ofono_atom_get_path(sim->atom);
>   	const char *pin_name;
> +	char **locked_pins;
> +	gboolean lock_changed;
> +
> +	DBG("sim->pin_type: %d, pin_type: %d", sim->pin_type, pin_type);
>
>   	if (error->type != OFONO_ERROR_TYPE_NO_ERROR) {
>   		ofono_error("Querying PIN authentication state failed");
> @@ -2751,9 +2755,23 @@ static void sim_pin_query_cb(const struct ofono_error *error,
>   				password_is_pin(pin_type) == FALSE)
>   			pin_type = puk2pin(pin_type);
>
> -		if (pin_type != OFONO_SIM_PASSWORD_INVALID)
> +		if (pin_type != OFONO_SIM_PASSWORD_INVALID) {

you might want to add && pin_type != OFONO_SIM_PASSWORD_NONE here.  See 
below.

> +			lock_changed = !sim->locked_pins[pin_type];
> +

So when do you want to emit LockedPins here?  Only when the list is 
non-empty or always?

There is a subtlety here.  OFONO_SIM_PASSWORD_NONE is never considered 
when emitting LockedPins.  However, in this proposal you can trigger a 
LockedPins emission even if there's no PIN set.

To me it seems like emitting LockedPins with an empty value seems 
unnecessary.  Thoughts?

>   			sim->locked_pins[pin_type] = TRUE;
>
> +			if (lock_changed) {
> +				locked_pins = get_locked_pins(sim);
> +
> +				ofono_dbus_signal_array_property_changed(conn,
> +						path,
> +						OFONO_SIM_MANAGER_INTERFACE,
> +						"LockedPins", DBUS_TYPE_STRING,
> +						&locked_pins);
> +
> +				g_strfreev(locked_pins);
> +			}
> +		}
>   		ofono_dbus_signal_property_changed(conn, path,
>   						OFONO_SIM_MANAGER_INTERFACE,
>   						"PinRequired", DBUS_TYPE_STRING,
>

Regards,
-Denis

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

* Re: [PATCH 2/2] [sim] Reset pin_type on card remove
  2015-06-18 11:46 ` [PATCH 2/2] [sim] Reset pin_type on card remove Tommi Kenakkala
@ 2015-06-18  4:09   ` Denis Kenzior
  0 siblings, 0 replies; 7+ messages in thread
From: Denis Kenzior @ 2015-06-18  4:09 UTC (permalink / raw)
  To: ofono

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

Hi Tommi,

On 06/18/2015 06:46 AM, Tommi Kenakkala wrote:
> Fixes PinRequired not being emitted when a card is inserted
> ---
>   src/sim.c |    7 +++++--
>   1 file changed, 5 insertions(+), 2 deletions(-)
>

Applied, thanks.

Regards,
-Denis


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

* [PATCH 0/2] Improve support for card hot-swapping
@ 2015-06-18 11:46 Tommi Kenakkala
  2015-06-18 11:46 ` [PATCH 1/2] [sim] Emit LockedPins after pin_type is queried Tommi Kenakkala
  2015-06-18 11:46 ` [PATCH 2/2] [sim] Reset pin_type on card remove Tommi Kenakkala
  0 siblings, 2 replies; 7+ messages in thread
From: Tommi Kenakkala @ 2015-06-18 11:46 UTC (permalink / raw)
  To: ofono

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

Events after inserting a card are as follows. Problem is
async steps 2 and 3+4 complete independently so client can't
rely on Present, CardIdentifier or other properties to know 
when PinRequired and LockedPins are updated.
1. ofono_sim_inserted_notify > emit "Present" ==> sim_initialize
2. sim_iccid_read_cb > emit "CardIdentifier"
3. sim_efpl_read_cb > __ofono_sim_recheck_pin
4. sim_pin_query_cb
    ==> "PinRequired" emitted at startup but not on pin-enabled hotswaps
    ==> "LockedPins" never emitted 

These patches improve the situation.

Tommi Kenakkala (2):
  [sim] Emit LockedPins after pin_type is queried
  [sim] Reset pin_type on card remove

 src/sim.c |   27 ++++++++++++++++++++++++---
 1 file changed, 24 insertions(+), 3 deletions(-)

-- 
1.7.9.5


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

* [PATCH 1/2] [sim] Emit LockedPins after pin_type is queried
  2015-06-18 11:46 [PATCH 0/2] Improve support for card hot-swapping Tommi Kenakkala
@ 2015-06-18 11:46 ` Tommi Kenakkala
  2015-06-18  4:07   ` Denis Kenzior
  2015-06-18 11:46 ` [PATCH 2/2] [sim] Reset pin_type on card remove Tommi Kenakkala
  1 sibling, 1 reply; 7+ messages in thread
From: Tommi Kenakkala @ 2015-06-18 11:46 UTC (permalink / raw)
  To: ofono

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

Fixes property change not being emited when hot-swapping a
PIN-enabled card.
---
 src/sim.c |   20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/src/sim.c b/src/sim.c
index b5badf1..0bcafe0 100644
--- a/src/sim.c
+++ b/src/sim.c
@@ -2737,6 +2737,10 @@ static void sim_pin_query_cb(const struct ofono_error *error,
 	DBusConnection *conn = ofono_dbus_get_connection();
 	const char *path = __ofono_atom_get_path(sim->atom);
 	const char *pin_name;
+	char **locked_pins;
+	gboolean lock_changed;
+
+	DBG("sim->pin_type: %d, pin_type: %d", sim->pin_type, pin_type);
 
 	if (error->type != OFONO_ERROR_TYPE_NO_ERROR) {
 		ofono_error("Querying PIN authentication state failed");
@@ -2751,9 +2755,23 @@ static void sim_pin_query_cb(const struct ofono_error *error,
 				password_is_pin(pin_type) == FALSE)
 			pin_type = puk2pin(pin_type);
 
-		if (pin_type != OFONO_SIM_PASSWORD_INVALID)
+		if (pin_type != OFONO_SIM_PASSWORD_INVALID) {
+			lock_changed = !sim->locked_pins[pin_type];
+
 			sim->locked_pins[pin_type] = TRUE;
 
+			if (lock_changed) {
+				locked_pins = get_locked_pins(sim);
+
+				ofono_dbus_signal_array_property_changed(conn,
+						path,
+						OFONO_SIM_MANAGER_INTERFACE,
+						"LockedPins", DBUS_TYPE_STRING,
+						&locked_pins);
+
+				g_strfreev(locked_pins);
+			}
+		}
 		ofono_dbus_signal_property_changed(conn, path,
 						OFONO_SIM_MANAGER_INTERFACE,
 						"PinRequired", DBUS_TYPE_STRING,
-- 
1.7.9.5


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

* [PATCH 2/2] [sim] Reset pin_type on card remove
  2015-06-18 11:46 [PATCH 0/2] Improve support for card hot-swapping Tommi Kenakkala
  2015-06-18 11:46 ` [PATCH 1/2] [sim] Emit LockedPins after pin_type is queried Tommi Kenakkala
@ 2015-06-18 11:46 ` Tommi Kenakkala
  2015-06-18  4:09   ` Denis Kenzior
  1 sibling, 1 reply; 7+ messages in thread
From: Tommi Kenakkala @ 2015-06-18 11:46 UTC (permalink / raw)
  To: ofono

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

Fixes PinRequired not being emitted when a card is inserted
---
 src/sim.c |    7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/sim.c b/src/sim.c
index 0bcafe0..997ac27 100644
--- a/src/sim.c
+++ b/src/sim.c
@@ -2485,10 +2485,13 @@ void ofono_sim_inserted_notify(struct ofono_sim *sim, ofono_bool_t inserted)
 	sim_inserted_update(sim);
 	call_state_watches(sim);
 
-	if (inserted)
+	if (inserted) {
 		sim_initialize(sim);
-	else
+	} else {
+		sim->pin_type = OFONO_SIM_PASSWORD_NONE;
+
 		sim_free_state(sim);
+	}
 }
 
 unsigned int ofono_sim_add_state_watch(struct ofono_sim *sim,
-- 
1.7.9.5


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

* Re: [PATCH 2/2] [sim] Emit LockedPins after pin_type is queried
  2015-06-22 13:37     ` [PATCH 2/2] " Tommi Kenakkala
@ 2015-06-18 19:59       ` Denis Kenzior
  0 siblings, 0 replies; 7+ messages in thread
From: Denis Kenzior @ 2015-06-18 19:59 UTC (permalink / raw)
  To: ofono

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

Hi Tommi,

On 06/22/2015 08:37 AM, Tommi Kenakkala wrote:
> Fixes property change not being emited when hot-swapping a
> PIN-enabled card.
> ---
>   src/sim.c |   22 +++++++++++++++++++++-
>   1 file changed, 21 insertions(+), 1 deletion(-)
>

Applied, thanks.

Regards,
-Denis


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

* [PATCH 2/2] [sim] Emit LockedPins after pin_type is queried
  2015-06-18  4:07   ` Denis Kenzior
@ 2015-06-22 13:37     ` Tommi Kenakkala
  2015-06-18 19:59       ` Denis Kenzior
  0 siblings, 1 reply; 7+ messages in thread
From: Tommi Kenakkala @ 2015-06-22 13:37 UTC (permalink / raw)
  To: ofono

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

Fixes property change not being emited when hot-swapping a
PIN-enabled card.
---
 src/sim.c |   22 +++++++++++++++++++++-
 1 file changed, 21 insertions(+), 1 deletion(-)

diff --git a/src/sim.c b/src/sim.c
index 715f3c0..8341af0 100644
--- a/src/sim.c
+++ b/src/sim.c
@@ -2740,6 +2740,10 @@ static void sim_pin_query_cb(const struct ofono_error *error,
 	DBusConnection *conn = ofono_dbus_get_connection();
 	const char *path = __ofono_atom_get_path(sim->atom);
 	const char *pin_name;
+	char **locked_pins;
+	gboolean lock_changed;
+
+	DBG("sim->pin_type: %d, pin_type: %d", sim->pin_type, pin_type);
 
 	if (error->type != OFONO_ERROR_TYPE_NO_ERROR) {
 		ofono_error("Querying PIN authentication state failed");
@@ -2754,9 +2758,25 @@ static void sim_pin_query_cb(const struct ofono_error *error,
 				password_is_pin(pin_type) == FALSE)
 			pin_type = puk2pin(pin_type);
 
-		if (pin_type != OFONO_SIM_PASSWORD_INVALID)
+
+		if (pin_type != OFONO_SIM_PASSWORD_INVALID
+				&& pin_type != OFONO_SIM_PASSWORD_NONE) {
+			lock_changed = !sim->locked_pins[pin_type];
+
 			sim->locked_pins[pin_type] = TRUE;
 
+			if (lock_changed) {
+				locked_pins = get_locked_pins(sim);
+
+				ofono_dbus_signal_array_property_changed(conn,
+						path,
+						OFONO_SIM_MANAGER_INTERFACE,
+						"LockedPins", DBUS_TYPE_STRING,
+						&locked_pins);
+
+				g_strfreev(locked_pins);
+			}
+		}
 		ofono_dbus_signal_property_changed(conn, path,
 						OFONO_SIM_MANAGER_INTERFACE,
 						"PinRequired", DBUS_TYPE_STRING,
-- 
1.7.9.5


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

end of thread, other threads:[~2015-06-22 13:37 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-06-18 11:46 [PATCH 0/2] Improve support for card hot-swapping Tommi Kenakkala
2015-06-18 11:46 ` [PATCH 1/2] [sim] Emit LockedPins after pin_type is queried Tommi Kenakkala
2015-06-18  4:07   ` Denis Kenzior
2015-06-22 13:37     ` [PATCH 2/2] " Tommi Kenakkala
2015-06-18 19:59       ` Denis Kenzior
2015-06-18 11:46 ` [PATCH 2/2] [sim] Reset pin_type on card remove Tommi Kenakkala
2015-06-18  4:09   ` 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.