summaryrefslogtreecommitdiffstats
path: root/src/simutil.h
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2010-02-23 11:22:06 -0600
committerDenis Kenzior <denkenz@gmail.com>2010-02-23 12:03:03 -0600
commitd98be70fa98f35e253bb367a52347c309d8cfc6d (patch)
treedb150444b586caaed1f3bd4908f95435a927ac1a /src/simutil.h
parent0db01081200f80092deeeef40e6d08ecb04a2d99 (diff)
downloadofono-d98be70fa98f35e253bb367a52347c309d8cfc6d.tar.bz2
Add Simple TLV iterator utilities
Diffstat (limited to 'src/simutil.h')
-rw-r--r--src/simutil.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/simutil.h b/src/simutil.h
index 816c3c9d..5cad1d78 100644
--- a/src/simutil.h
+++ b/src/simutil.h
@@ -84,6 +84,15 @@ struct sim_ef_info {
enum sim_file_access perm_update;
};
+struct simple_tlv_iter {
+ unsigned int max;
+ unsigned int pos;
+ const unsigned char *pdu;
+ unsigned char tag;
+ unsigned short len;
+ const unsigned char *data;
+};
+
struct ber_tlv_iter {
unsigned int max;
unsigned int pos;
@@ -95,6 +104,13 @@ struct ber_tlv_iter {
const unsigned char *data;
};
+void simple_tlv_iter_init(struct simple_tlv_iter *iter,
+ const unsigned char *pdu, unsigned int len);
+gboolean simple_tlv_iter_next(struct simple_tlv_iter *iter);
+unsigned char simple_tlv_iter_get_tag(struct simple_tlv_iter *iter);
+unsigned short simple_tlv_iter_get_length(struct simple_tlv_iter *iter);
+const unsigned char *simple_tlv_iter_get_data(struct simple_tlv_iter *iter);
+
void ber_tlv_iter_init(struct ber_tlv_iter *iter, const unsigned char *pdu,
unsigned int len);
/*
@@ -122,6 +138,8 @@ const unsigned char *ber_tlv_iter_get_data(struct ber_tlv_iter *iter);
gboolean ber_tlv_iter_next(struct ber_tlv_iter *iter);
void ber_tlv_iter_recurse(struct ber_tlv_iter *iter,
struct ber_tlv_iter *recurse);
+void ber_tlv_iter_recurse_simple(struct ber_tlv_iter *iter,
+ struct simple_tlv_iter *container);
struct sim_eons *sim_eons_new(int pnn_records);
void sim_eons_add_pnn_record(struct sim_eons *eons, int record,