diff options
author | Jeevaka Badrappan <jeevaka.badrappan@elektrobit.com> | 2010-09-10 13:19:01 -0700 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2010-09-10 15:21:20 -0500 |
commit | e6fbe5e75d9eb2dba309ec8de07159288208fc97 (patch) | |
tree | 68d93c072eb65fd5b9f14a0552e0fdd1fb5cfcce /src/stkutil.c | |
parent | a632cfe11bd49855a37e069f7efb1f496fe9a7b3 (diff) | |
download | ofono-e6fbe5e75d9eb2dba309ec8de07159288208fc97.tar.gz |
stkutil: Add build_dataobj_ussd_text
for ussd specific 'Text' Data object handling
Diffstat (limited to 'src/stkutil.c')
-rw-r--r-- | src/stkutil.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/stkutil.c b/src/stkutil.c index 056f2e7b..3cfe06ae 100644 --- a/src/stkutil.c +++ b/src/stkutil.c @@ -4170,6 +4170,23 @@ static gboolean build_dataobj_text(struct stk_tlv_builder *tlv, return stk_tlv_builder_close_container(tlv); } +/* Defined in TS 102.223 Section 8.15 - USSD specific case*/ +static gboolean build_dataobj_ussd_text(struct stk_tlv_builder *tlv, + const void *data, gboolean cr) +{ + const struct stk_ussd_text *text = data; + unsigned char tag = STK_DATA_OBJECT_TYPE_TEXT; + + stk_tlv_builder_open_container(tlv, cr, tag, TRUE); + + if (text->len > 0) { + stk_tlv_builder_append_byte(tlv, text->dcs); + stk_tlv_builder_append_bytes(tlv, text->text, text->len); + } + + return stk_tlv_builder_close_container(tlv); +} + /* Described in TS 131.111 Section 8.17 */ static gboolean build_dataobj_ussd_string(struct stk_tlv_builder *tlv, const void *data, gboolean cr) @@ -5457,6 +5474,13 @@ const unsigned char *stk_pdu_from_response(const struct stk_response *response, case STK_COMMAND_TYPE_LANGUAGE_NOTIFICATION: case STK_COMMAND_TYPE_LAUNCH_BROWSER: break; + case STK_COMMAND_TYPE_SEND_USSD: + ok = build_dataobj(&builder, + build_dataobj_ussd_text, + DATAOBJ_FLAG_CR, + &response->send_ussd.text, + NULL); + break; default: return NULL; }; |