summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClayton Craft <clayton@craftyguy.net>2017-09-10 11:41:04 -0700
committerDenis Kenzior <denkenz@gmail.com>2017-09-11 10:37:06 -0500
commitcbac15cdd9858e797f223bf9d16116f82e184d88 (patch)
tree54e63c7bc1503c24af0e85f189f1b52adf62d81b
parent9650ab183b1429b9cd7400f16f81816482493e5f (diff)
downloadofono-cbac15cdd9858e797f223bf9d16116f82e184d88.tar.gz
isimodem: Use correct callback for pin status
-rw-r--r--drivers/isimodem/sim.c27
1 files changed, 25 insertions, 2 deletions
diff --git a/drivers/isimodem/sim.c b/drivers/isimodem/sim.c
index 4379a159..9e86d870 100644
--- a/drivers/isimodem/sim.c
+++ b/drivers/isimodem/sim.c
@@ -646,8 +646,31 @@ error:
/* ISI callback: PIN state (enabled/disabled) query */
static void sec_code_state_resp_cb(const GIsiMessage *msg, void *opaque)
{
- check_sec_response(msg, opaque, SEC_CODE_STATE_OK_RESP,
- SEC_CODE_STATE_FAIL_RESP);
+ struct isi_cb_data *cbd = opaque;
+ ofono_query_facility_lock_cb_t cb = cbd->cb;
+ int locked;
+ uint8_t state;
+ uint8_t status;
+
+ if (!g_isi_msg_data_get_byte(msg, 0, &state) ||
+ !g_isi_msg_data_get_byte(msg, 1, &status))
+ goto error;
+
+ if (state != SEC_CODE_STATE_OK_RESP)
+ goto error;
+
+ if (status == SEC_CODE_ENABLE)
+ locked = 1;
+ else if (status == SEC_CODE_DISABLE)
+ locked = 0;
+ else
+ goto error;
+
+ CALLBACK_WITH_SUCCESS(cb, locked, cbd->data);
+ return;
+
+error:
+ CALLBACK_WITH_FAILURE(cb, -1, cbd->data);
}
static void isi_query_locked(struct ofono_sim *sim,