diff options
author | Jeevaka Badrappan <jeevaka.badrappan@elektrobit.com> | 2010-09-13 16:00:10 -0700 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2010-09-14 09:58:45 -0500 |
commit | fd9570500ef61caba52cc6494de96cdcf1ec725b (patch) | |
tree | e846fd8f1034c470c9338ac4da8328d34fce6d83 /src/smsutil.c | |
parent | c44e6361a07f37ea17c3fad8919436bfeb288ed4 (diff) | |
download | ofono-fd9570500ef61caba52cc6494de96cdcf1ec725b.tar.bz2 |
smsutil: Add USSD encoding function
Diffstat (limited to 'src/smsutil.c')
-rw-r--r-- | src/smsutil.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/smsutil.c b/src/smsutil.c index 26c79513..0d68d331 100644 --- a/src/smsutil.c +++ b/src/smsutil.c @@ -4179,3 +4179,32 @@ char *ussd_decode(int dcs, int len, const unsigned char *data) return utf8; } + +gboolean ussd_encode(const char *str, long *items_written, unsigned char *pdu) +{ + unsigned char *converted = NULL; + long written; + long num_packed; + + if (!pdu) + return FALSE; + + converted = convert_utf8_to_gsm(str, -1, NULL, &written, 0); + if (!converted || written > 182) + goto error; + + pack_7bit_own_buf(converted, written, 0, TRUE, &num_packed, 0, pdu); + + g_free(converted); + + if (num_packed < 1) + return FALSE; + + if (items_written) + *items_written = num_packed; + + return TRUE; +error: + g_free(converted); + return FALSE; +} |