diff options
author | Andrzej Zaborowski <andrew.zaborowski@intel.com> | 2009-07-30 10:04:59 +0200 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2009-07-31 09:55:46 -0500 |
commit | ebf6fca07a760eb85e8f339542706425dbd8de48 (patch) | |
tree | 4532fab6d1c9278562d2eb38b28712f5726ecbbd /src/simutil.c | |
parent | 049e57369190c80f36f6f39bf1724e1fecb051d6 (diff) | |
download | ofono-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.c | 28 |
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; +} |