---
 src/stkutil.c |   25 +++++++++++++++++++++++++
 src/stkutil.h |    6 ++++++
 2 files changed, 31 insertions(+), 0 deletions(-)

diff --git a/src/stkutil.c b/src/stkutil.c
index acdf34f..83ff5c7 100644
--- a/src/stkutil.c
+++ b/src/stkutil.c
@@ -3561,6 +3561,20 @@ static gboolean build_dataobj_imei(struct 
stk_tlv_builder *tlv,
                stk_tlv_builder_close_container(tlv);
 }
 
+/* Described in TS 102.223 Section 8.21 */
+static gboolean build_dataobj_help_request(struct stk_tlv_builder *tlv,
+                                               const void *data, gboolean cr)
+{
+       const ofono_bool_t *help = data;
+       unsigned char tag = STK_DATA_OBJECT_TYPE_HELP_REQUEST;
+
+       if (*help != TRUE)
+               return TRUE;
+
+       return stk_tlv_builder_open_container(tlv, cr, tag, FALSE) &&
+               stk_tlv_builder_close_container(tlv);
+}
+
 /* Described in TS 102.223 Section 8.22 */
 static gboolean build_dataobj_network_measurement_results(
                                                struct stk_tlv_builder *tlv,
@@ -4242,6 +4256,17 @@ const unsigned char *stk_pdu_from_envelope(const struct 
stk_envelope *envelope,
                                        &envelope->cbs_pp_download.page,
                                        NULL);
                break;
+       case STK_ENVELOPE_TYPE_MENU_SELECTION:
+               ok = build_dataobj(&builder,
+                                       build_envelope_dataobj_device_ids,
+                                       DATAOBJ_FLAG_CR,
+                                       envelope,
+                                       build_dataobj_item_id, DATAOBJ_FLAG_CR,
+                                       &envelope->menu_selection.item_id,
+                                       build_dataobj_help_request, 0,
+                                       &envelope->menu_selection.help_request,
+                                       NULL);
+               break;
        default:
                return NULL;
        };
diff --git a/src/stkutil.h b/src/stkutil.h
index 65ccfd3..d4b5b23 100644
--- a/src/stkutil.h
+++ b/src/stkutil.h
@@ -1182,6 +1182,11 @@ struct stk_envelope_cbs_pp_download {
        struct cbs page;
 };
 
+struct stk_envelope_menu_selection {
+       unsigned char item_id;
+       ofono_bool_t help_request;
+};
+
 struct stk_envelope {
        enum stk_envelope_type type;
        enum stk_device_identity_type src;
@@ -1189,6 +1194,7 @@ struct stk_envelope {
        union {
                struct stk_envelope_sms_pp_download sms_pp_download;
                struct stk_envelope_cbs_pp_download cbs_pp_download;
+               struct stk_envelope_menu_selection menu_selection;
        };
 };
 
-- 
1.7.1.86.g0e460.dirty

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

Reply via email to