summaryrefslogtreecommitdiff
path: root/src/stkutil.c
diff options
context:
space:
mode:
authorJeevaka Badrappan <jeevaka.badrappan@elektrobit.com>2010-09-10 13:19:01 -0700
committerDenis Kenzior <denkenz@gmail.com>2010-09-10 15:21:20 -0500
commite6fbe5e75d9eb2dba309ec8de07159288208fc97 (patch)
tree68d93c072eb65fd5b9f14a0552e0fdd1fb5cfcce /src/stkutil.c
parenta632cfe11bd49855a37e069f7efb1f496fe9a7b3 (diff)
downloadofono-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.c24
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;
};