summaryrefslogtreecommitdiffstats
path: root/src/simutil.c
diff options
context:
space:
mode:
authorAndrzej Zaborowski <andrew.zaborowski@intel.com>2009-07-30 10:04:59 +0200
committerDenis Kenzior <denkenz@gmail.com>2009-07-31 09:55:46 -0500
commitebf6fca07a760eb85e8f339542706425dbd8de48 (patch)
tree4532fab6d1c9278562d2eb38b28712f5726ecbbd /src/simutil.c
parent049e57369190c80f36f6f39bf1724e1fecb051d6 (diff)
downloadofono-ebf6fca07a760eb85e8f339542706425dbd8de48.tar.bz2
Clean up in sim.c.
Remove unused variables and fields. Move EFadn format parsing to a common function because various files use this same format.
Diffstat (limited to 'src/simutil.c')
-rw-r--r--src/simutil.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/simutil.c b/src/simutil.c
index 1430ec32..51b1f5cc 100644
--- a/src/simutil.c
+++ b/src/simutil.c
@@ -398,3 +398,31 @@ const struct sim_eons_operator_info *sim_eons_lookup_with_lac(
{
return sim_eons_lookup_common(eons, mcc, mnc, TRUE, lac);
}
+
+gboolean sim_adn_parse(const unsigned char *data, int length,
+ struct ofono_phone_number *ph)
+{
+ int number_len;
+ int ton_npi;
+
+ if (length < 14)
+ return FALSE;
+
+ /* Skip Alpha-Identifier field */
+ data += length - 14;
+
+ number_len = *data++;
+ ton_npi = *data++;
+
+ if (number_len > 11 || ton_npi == 0xff)
+ return FALSE;
+
+ ph->type = bit_field(ton_npi, 4, 3);
+
+ /* BCD coded, however the TON/NPI is given by the first byte */
+ number_len = (number_len - 1) * 2;
+
+ extract_bcd_number(data, number_len, ph->number);
+
+ return TRUE;
+}