From ebf6fca07a760eb85e8f339542706425dbd8de48 Mon Sep 17 00:00:00 2001 From: Andrzej Zaborowski Date: Thu, 30 Jul 2009 10:04:59 +0200 Subject: 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. --- src/simutil.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'src/simutil.c') 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; +} -- cgit v1.2.3