summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAndrzej Zaborowski <andrew.zaborowski@intel.com>2010-05-16 16:07:22 +0200
committerDenis Kenzior <denkenz@gmail.com>2010-05-25 16:52:54 -0500
commit429d03c965cbfbd06620969060fff569711d4746 (patch)
tree6d87323c8bfa173df3e1ff008b0a52bbf6266ea7 /src
parent0366159a66f377d1d3e71e7c41f08dc3af0358a2 (diff)
downloadofono-429d03c965cbfbd06620969060fff569711d4746.tar.bz2
stkutil: Add Select Item response builder
Diffstat (limited to 'src')
-rw-r--r--src/stkutil.c21
-rw-r--r--src/stkutil.h5
2 files changed, 26 insertions, 0 deletions
diff --git a/src/stkutil.c b/src/stkutil.c
index 6dc55a11..c9a9918f 100644
--- a/src/stkutil.c
+++ b/src/stkutil.c
@@ -3038,6 +3038,21 @@ static inline gboolean stk_tlv_append_bytes(struct stk_tlv_builder *iter,
return TRUE;
}
+/* Described in TS 102.223 Section 8.6 */
+static gboolean build_dataobj_item_id(struct stk_tlv_builder *tlv,
+ const void *data, gboolean cr)
+{
+ const unsigned char *item_id = data;
+
+ if (*item_id == 0)
+ return TRUE;
+
+ return stk_tlv_open_container(tlv, cr,
+ STK_DATA_OBJECT_TYPE_ITEM_ID, FALSE) &&
+ stk_tlv_append_byte(tlv, *item_id) &&
+ stk_tlv_close_container(tlv);
+}
+
/* Described in TS 102.223 Section 8.8 */
static gboolean build_dataobj_duration(struct stk_tlv_builder *tlv,
const void *data, gboolean cr)
@@ -3220,6 +3235,12 @@ unsigned int stk_pdu_from_response(const struct stk_response *response,
case STK_COMMAND_TYPE_REFRESH:
case STK_COMMAND_TYPE_SETUP_MENU:
break;
+ case STK_COMMAND_TYPE_SELECT_ITEM:
+ ok = build_dataobj(&builder,
+ build_dataobj_item_id, DATAOBJ_FLAG_CR,
+ &response->select_item.item_id,
+ NULL);
+ break;
default:
return 0;
};
diff --git a/src/stkutil.h b/src/stkutil.h
index 96919f3a..1810b8ed 100644
--- a/src/stkutil.h
+++ b/src/stkutil.h
@@ -1018,6 +1018,10 @@ struct stk_response_poll_interval {
struct stk_duration max_interval;
};
+struct stk_response_select_item {
+ unsigned char item_id;
+};
+
struct stk_response {
unsigned char number;
unsigned char type;
@@ -1034,6 +1038,7 @@ struct stk_response {
struct stk_response_poll_interval poll_interval;
struct stk_response_generic refresh;
struct stk_response_generic set_up_menu;
+ struct stk_response_select_item select_item;
struct stk_response_generic send_sms;
};