diff options
author | Clayton Craft <clayton@craftyguy.net> | 2017-09-10 11:41:04 -0700 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2017-09-11 10:37:06 -0500 |
commit | cbac15cdd9858e797f223bf9d16116f82e184d88 (patch) | |
tree | 54e63c7bc1503c24af0e85f189f1b52adf62d81b | |
parent | 9650ab183b1429b9cd7400f16f81816482493e5f (diff) | |
download | ofono-cbac15cdd9858e797f223bf9d16116f82e184d88.tar.gz |
isimodem: Use correct callback for pin status
-rw-r--r-- | drivers/isimodem/sim.c | 27 |
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, |