summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/simutil.c5
-rw-r--r--src/simutil.h10
2 files changed, 13 insertions, 2 deletions
diff --git a/src/simutil.c b/src/simutil.c
index ed0970cd..0474d2af 100644
--- a/src/simutil.c
+++ b/src/simutil.c
@@ -1406,7 +1406,8 @@ gboolean sim_parse_3g_get_response(const unsigned char *data, int len,
gboolean sim_parse_2g_get_response(const unsigned char *response, int len,
int *file_len, int *record_len,
- int *structure, unsigned char *access)
+ int *structure, unsigned char *access,
+ unsigned char *file_status)
{
if (len < 14 || response[6] != 0x04)
return FALSE;
@@ -1421,6 +1422,8 @@ gboolean sim_parse_2g_get_response(const unsigned char *response, int len,
access[1] = response[9];
access[2] = response[10];
+ *file_status = response[11];
+
if (response[13] == 0x01 || response[13] == 0x03)
*record_len = response[14];
else
diff --git a/src/simutil.h b/src/simutil.h
index 69ef528e..dc4ff57e 100644
--- a/src/simutil.h
+++ b/src/simutil.h
@@ -58,6 +58,13 @@ enum sim_file_access {
SIM_FILE_ACCESS_NEVER = 15,
};
+/* 51.011 Section 9.3 */
+enum sim_file_status {
+ SIM_FILE_STATUS_INVALID = 0x00,
+ SIM_FILE_STATUS_VALID = 0x01,
+ SIM_FILE_STATUS_RW_WHEN_INVALID = 0x04,
+};
+
/* 131.102 Section 4.2.8 */
enum sim_ust_service {
SIM_UST_SERVICE_LOCAL_PHONE_BOOK = 0,
@@ -426,7 +433,8 @@ gboolean sim_parse_3g_get_response(const unsigned char *data, int len,
gboolean sim_parse_2g_get_response(const unsigned char *response, int len,
int *file_len, int *record_len,
- int *structure, unsigned char *access);
+ int *structure, unsigned char *access,
+ unsigned char *file_status);
gboolean sim_ust_is_available(unsigned char *service_ust, unsigned char len,
enum sim_ust_service index);