---
 src/stkutil.c |   23 +++++++++++++++++++++++
 1 files changed, 23 insertions(+), 0 deletions(-)

diff --git a/src/stkutil.c b/src/stkutil.c
index ae4cc32..c69ebba 100644
--- a/src/stkutil.c
+++ b/src/stkutil.c
@@ -4170,6 +4170,22 @@ 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;
+
+       if (!text->text)
+               return TRUE;
+
+       return stk_tlv_builder_open_container(tlv, cr, tag, TRUE) &&
+               stk_tlv_builder_append_byte(tlv, text->dcs) &&
+               stk_tlv_builder_append_bytes(tlv, text->text, text->len) &&
+               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)
@@ -5459,6 +5475,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;
        };
-- 
1.7.0.4

_______________________________________________
ofono mailing list
[email protected]
http://lists.ofono.org/listinfo/ofono

Reply via email to