diff options
author | Petteri Tikander <petteri.tikander@ixonos.com> | 2010-10-15 00:02:51 +0300 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2010-10-15 02:19:02 -0500 |
commit | 84efadcf5a648391b5665e810618485d71644738 (patch) | |
tree | 5117bf7ec5776a05475ca4000402d0b04fac14c0 | |
parent | d34ddeccafe9801d2c53b9046a5879be357f937e (diff) | |
download | ofono-84efadcf5a648391b5665e810618485d71644738.tar.bz2 |
atmodem: returns file-status of SIM EF-file
-rw-r--r-- | drivers/atmodem/sim.c | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/drivers/atmodem/sim.c b/drivers/atmodem/sim.c index d0a7148c..90d87bc9 100644 --- a/drivers/atmodem/sim.c +++ b/drivers/atmodem/sim.c @@ -64,11 +64,12 @@ static void at_crsm_info_cb(gboolean ok, GAtResult *result, gpointer user_data) int flen, rlen; int str; unsigned char access[3]; + unsigned char file_status; decode_at_error(&error, g_at_result_final_response(result)); if (!ok) { - cb(&error, -1, -1, -1, NULL, cbd->data); + cb(&error, -1, -1, -1, NULL, 0, cbd->data); return; } @@ -88,27 +89,31 @@ static void at_crsm_info_cb(gboolean ok, GAtResult *result, gpointer user_data) error.type = OFONO_ERROR_TYPE_SIM; error.error = (sw1 << 8) | sw2; - cb(&error, -1, -1, -1, NULL, cbd->data); + cb(&error, -1, -1, -1, NULL, 0, cbd->data); return; } DBG("crsm_info_cb: %02x, %02x, %i", sw1, sw2, len); - if (response[0] == 0x62) + if (response[0] == 0x62) { ok = sim_parse_3g_get_response(response, len, &flen, &rlen, &str, access, NULL); + + file_status = SIM_FILE_STATUS_VALID; + } else ok = sim_parse_2g_get_response(response, len, &flen, &rlen, - &str, access); + &str, access, &file_status); if (!ok) goto error; - cb(&error, flen, str, rlen, access, cbd->data); + cb(&error, flen, str, rlen, access, file_status, cbd->data); + return; error: - CALLBACK_WITH_FAILURE(cb, -1, -1, -1, NULL, cbd->data); + CALLBACK_WITH_FAILURE(cb, -1, -1, -1, NULL, 0, cbd->data); } static void at_sim_read_info(struct ofono_sim *sim, int fileid, @@ -123,7 +128,7 @@ static void at_sim_read_info(struct ofono_sim *sim, int fileid, unsigned char access[3] = { 0x00, 0x00, 0x00 }; if (fileid == SIM_EFAD_FILEID) { - CALLBACK_WITH_SUCCESS(cb, 4, 0, 0, access, data); + CALLBACK_WITH_SUCCESS(cb, 4, 0, 0, access, 1, data); return; } } @@ -142,7 +147,7 @@ static void at_sim_read_info(struct ofono_sim *sim, int fileid, return; error: - CALLBACK_WITH_FAILURE(cb, -1, -1, -1, NULL, data); + CALLBACK_WITH_FAILURE(cb, -1, -1, -1, NULL, 0, data); } static void at_crsm_read_cb(gboolean ok, GAtResult *result, |