From e8552dde07dba231610f71bdb6c43fe55aa763f2 Mon Sep 17 00:00:00 2001 From: Andrzej Zaborowski Date: Wed, 5 Aug 2009 09:08:40 +0200 Subject: Add utility for building ADN records Used to populate MSISDN, MBDN, etc records on the SIM --- src/simutil.c | 27 +++++++++++++++++++++++++++ src/simutil.h | 2 ++ 2 files changed, 29 insertions(+) (limited to 'src') diff --git a/src/simutil.c b/src/simutil.c index 51b1f5cc..7a0830ea 100644 --- a/src/simutil.c +++ b/src/simutil.c @@ -426,3 +426,30 @@ gboolean sim_adn_parse(const unsigned char *data, int length, return TRUE; } + +void sim_adn_build(unsigned char *data, int length, + const struct ofono_phone_number *ph) +{ + int number_len = strlen(ph->number); + + /* Alpha-Identifier field */ + if (length > 14) { + memset(data, 0xff, length - 14); + data += length - 14; + } + + number_len = (number_len + 1) / 2; + *data++ = number_len + 1; + + /* Use given number type and 'Unknown' for Numbering Plan */ + *data++ = 0x80 | (ph->type << 4) | 0; + + encode_bcd_number(ph->number, data); + memset(data + number_len, 0xff, 10 - number_len); + data += 10; + + /* CCP1 unused */ + *data++ = 0xff; + /* Ext1 unused */ + *data++ = 0xff; +} diff --git a/src/simutil.h b/src/simutil.h index c2b1e20c..9d198dbe 100644 --- a/src/simutil.h +++ b/src/simutil.h @@ -82,3 +82,5 @@ static inline enum sim_file_access file_access_condition_decode(int bcd) gboolean sim_adn_parse(const unsigned char *data, int length, struct ofono_phone_number *ph); +void sim_adn_build(unsigned char *data, int length, + const struct ofono_phone_number *ph); -- cgit v1.2.3