[PATCH 12/19] test-stkutil: Add unit test for setup menu parser

Yang Gu yang.gu at intel.com
Mon May 10 03:38:55 PDT 2010


---
 unit/test-stkutil.c | 1617 ++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 1616 insertions(+), 1 deletions(-)

diff --git a/unit/test-stkutil.c b/unit/test-stkutil.c
index fdfaf68..941c443 100644
--- a/unit/test-stkutil.c
+++ b/unit/test-stkutil.c
@@ -23,7 +23,6 @@
 #include <config.h>
 #endif
 
-#include <stdio.h>
 #include <unistd.h>
 #include <stdlib.h>
 #include <string.h>
@@ -35,6 +34,8 @@
 #include "smsutil.h"
 #include "stkutil.h"
 
+#define MAX_ITEM 100
+
 static gboolean g_mem_equal(const unsigned char *v1, const unsigned char *v2,
 				unsigned int len)
 {
@@ -77,6 +78,28 @@ static void check_duration(const struct stk_duration *command,
 	g_assert(command->interval == test->interval);
 }
 
+/* Defined in TS 102.223 Section 8.9 */
+static void check_item(const struct stk_item *command,
+					const struct stk_item *test)
+{
+	g_assert(command->id == test->id);
+	g_assert(g_str_equal(command->text, test->text));
+}
+
+static void check_items(GSList *command, const struct stk_item *test)
+{
+	struct stk_item *si;
+	GSList *l;
+	unsigned int i = 0;
+
+	for (l = command; l; l = l->next) {
+		si = l->data;
+		check_item(si, &test[i++]);
+	}
+
+	g_assert(test[i].id == 0);
+}
+
 /* Defined in TS 102.223 Section 8.11 */
 static void check_response_length(const struct stk_response_length *command,
 					const struct stk_response_length *test)
@@ -85,6 +108,15 @@ static void check_response_length(const struct stk_response_length *command,
 	g_assert(command->max == test->max);
 }
 
+/* Defined in TS 102.223 Section 8.24 */
+static void check_items_next_action_indicator(
+			const struct stk_items_next_action_indicator *command,
+			const struct stk_items_next_action_indicator *test)
+{
+	g_assert(command->len == test->len);
+	g_assert(g_mem_equal(command->list, test->list, test->len));
+}
+
 /* Defined in TS 102.223 Section 8.31 */
 static void check_icon_id(const struct stk_icon_id *command,
 					const struct stk_icon_id *test)
@@ -93,6 +125,15 @@ static void check_icon_id(const struct stk_icon_id *command,
 	g_assert(command->qualifier == test->qualifier);
 }
 
+/* Defined in TS 102.223 Section 8.32 */
+static void check_item_icon_id_list(const struct stk_item_icon_id_list *command,
+				const struct stk_item_icon_id_list *test)
+{
+	g_assert(command->qualifier == test->qualifier);
+	g_assert(command->len == test->len);
+	g_assert(g_mem_equal(command->list, test->list, test->len));
+}
+
 /* Defined in TS 102.223 Section 8.72 */
 static void check_text_attr(const struct stk_text_attribute *command,
 					const struct stk_text_attribute *test)
@@ -101,6 +142,15 @@ static void check_text_attr(const struct stk_text_attribute *command,
 	g_assert(g_mem_equal(command->attributes, test->attributes, test->len));
 }
 
+/* Defined in TS 102.223 Section 8.73 */
+static void check_item_text_attribute_list(
+			const struct stk_item_text_attribute_list *command,
+			const struct stk_item_text_attribute_list *test)
+{
+	g_assert(command->len == test->len);
+	g_assert(g_mem_equal(command->list, test->list, test->len));
+}
+
 /* Defined in TS 102.223 Section 8.80 */
 static void check_frame_id(const struct stk_frame_id *command,
 					const struct stk_frame_id *test)
@@ -3925,6 +3975,1500 @@ static void test_poll_interval(gconstpointer data)
 	stk_command_free(command);
 }
 
+struct setup_menu_test {
+	const unsigned char *pdu;
+	unsigned int pdu_len;
+	unsigned char qualifier;
+	char *alpha_id;
+	struct stk_item items[MAX_ITEM];
+	struct stk_items_next_action_indicator next_act;
+	struct stk_icon_id icon_id;
+	struct stk_item_icon_id_list item_icon_id_list;
+	struct stk_text_attribute text_attr;
+	struct stk_item_text_attribute_list item_text_attr_list;
+};
+
+static unsigned char setup_menu_111[] = { 0xD0, 0x3B, 0x81, 0x03, 0x01, 0x25,
+						0x00, 0x82, 0x02, 0x81, 0x82,
+						0x85, 0x0C, 0x54, 0x6F, 0x6F,
+						0x6C, 0x6B, 0x69, 0x74, 0x20,
+						0x4D, 0x65, 0x6E, 0x75, 0x8F,
+						0x07, 0x01, 0x49, 0x74, 0x65,
+						0x6D, 0x20, 0x31, 0x8F, 0x07,
+						0x02, 0x49, 0x74, 0x65, 0x6D,
+						0x20, 0x32, 0x8F, 0x07, 0x03,
+						0x49, 0x74, 0x65, 0x6D, 0x20,
+						0x33, 0x8F, 0x07, 0x04, 0x49,
+						0x74, 0x65, 0x6D, 0x20, 0x34 };
+
+static unsigned char setup_menu_112[] = { 0xD0, 0x23, 0x81, 0x03, 0x01, 0x25,
+						0x00, 0x82, 0x02, 0x81, 0x82,
+						0x85, 0x0C, 0x54, 0x6F, 0x6F,
+						0x6C, 0x6B, 0x69, 0x74, 0x20,
+						0x4D, 0x65, 0x6E, 0x75, 0x8F,
+						0x04, 0x11, 0x4F, 0x6E, 0x65,
+						0x8F, 0x04, 0x12, 0x54, 0x77,
+						0x6F };
+
+static unsigned char setup_menu_113[] = { 0xD0, 0x0D, 0x81, 0x03, 0x01, 0x25,
+						0x00, 0x82, 0x02, 0x81, 0x82,
+						0x85, 0x00, 0x8F, 0x00 };
+
+static unsigned char setup_menu_121[] = { 0xD0, 0x81, 0xFC, 0x81, 0x03, 0x01,
+						0x25, 0x00, 0x82, 0x02, 0x81,
+						0x82, 0x85, 0x0A, 0x4C, 0x61,
+						0x72, 0x67, 0x65, 0x4D, 0x65,
+						0x6E, 0x75, 0x31, 0x8F, 0x05,
+						0x50, 0x5A, 0x65, 0x72, 0x6F,
+						0x8F, 0x04, 0x4F, 0x4F, 0x6E,
+						0x65, 0x8F, 0x04, 0x4E, 0x54,
+						0x77, 0x6F, 0x8F, 0x06, 0x4D,
+						0x54, 0x68, 0x72, 0x65, 0x65,
+						0x8F, 0x05, 0x4C, 0x46, 0x6F,
+						0x75, 0x72, 0x8F, 0x05, 0x4B,
+						0x46, 0x69, 0x76, 0x65, 0x8F,
+						0x04, 0x4A, 0x53, 0x69, 0x78,
+						0x8F, 0x06, 0x49, 0x53, 0x65,
+						0x76, 0x65, 0x6E, 0x8F, 0x06,
+						0x48, 0x45, 0x69, 0x67, 0x68,
+						0x74, 0x8F, 0x05, 0x47, 0x4E,
+						0x69, 0x6E, 0x65, 0x8F, 0x06,
+						0x46, 0x41, 0x6C, 0x70, 0x68,
+						0x61, 0x8F, 0x06, 0x45, 0x42,
+						0x72, 0x61, 0x76, 0x6F, 0x8F,
+						0x08, 0x44, 0x43, 0x68, 0x61,
+						0x72, 0x6C, 0x69, 0x65, 0x8F,
+						0x06, 0x43, 0x44, 0x65, 0x6C,
+						0x74, 0x61, 0x8F, 0x05, 0x42,
+						0x45, 0x63, 0x68, 0x6F, 0x8F,
+						0x09, 0x41, 0x46, 0x6F, 0x78,
+						0x2D, 0x74, 0x72, 0x6F, 0x74,
+						0x8F, 0x06, 0x40, 0x42, 0x6C,
+						0x61, 0x63, 0x6B, 0x8F, 0x06,
+						0x3F, 0x42, 0x72, 0x6F, 0x77,
+						0x6E, 0x8F, 0x04, 0x3E, 0x52,
+						0x65, 0x64, 0x8F, 0x07, 0x3D,
+						0x4F, 0x72, 0x61, 0x6E, 0x67,
+						0x65, 0x8F, 0x07, 0x3C, 0x59,
+						0x65, 0x6C, 0x6C, 0x6F, 0x77,
+						0x8F, 0x06, 0x3B, 0x47, 0x72,
+						0x65, 0x65, 0x6E, 0x8F, 0x05,
+						0x3A, 0x42, 0x6C, 0x75, 0x65,
+						0x8F, 0x07, 0x39, 0x56, 0x69,
+						0x6F, 0x6C, 0x65, 0x74, 0x8F,
+						0x05, 0x38, 0x47, 0x72, 0x65,
+						0x79, 0x8F, 0x06, 0x37, 0x57,
+						0x68, 0x69, 0x74, 0x65, 0x8F,
+						0x06, 0x36, 0x6D, 0x69, 0x6C,
+						0x6C, 0x69, 0x8F, 0x06, 0x35,
+						0x6D, 0x69, 0x63, 0x72, 0x6F,
+						0x8F, 0x05, 0x34, 0x6E, 0x61,
+						0x6E, 0x6F, 0x8F, 0x05, 0x33,
+						0x70, 0x69, 0x63, 0x6F };
+
+static unsigned char setup_menu_122[] = { 0xD0, 0x81, 0xF3, 0x81, 0x03, 0x01,
+						0x25, 0x00, 0x82, 0x02, 0x81,
+						0x82, 0x85, 0x0A, 0x4C, 0x61,
+						0x72, 0x67, 0x65, 0x4D, 0x65,
+						0x6E, 0x75, 0x32, 0x8F, 0x1D,
+						0xFF, 0x31, 0x20, 0x43, 0x61,
+						0x6C, 0x6C, 0x20, 0x46, 0x6F,
+						0x72, 0x77, 0x61, 0x72, 0x64,
+						0x20, 0x55, 0x6E, 0x63, 0x6F,
+						0x6E, 0x64, 0x69, 0x74, 0x69,
+						0x6F, 0x6E, 0x61, 0x6C, 0x8F,
+						0x1C, 0xFE, 0x32, 0x20, 0x43,
+						0x61, 0x6C, 0x6C, 0x20, 0x46,
+						0x6F, 0x72, 0x77, 0x61, 0x72,
+						0x64, 0x20, 0x4F, 0x6E, 0x20,
+						0x55, 0x73, 0x65, 0x72, 0x20,
+						0x42, 0x75, 0x73, 0x79, 0x8F,
+						0x1B, 0xFD, 0x33, 0x20, 0x43,
+						0x61, 0x6C, 0x6C, 0x20, 0x46,
+						0x6F, 0x72, 0x77, 0x61, 0x72,
+						0x64, 0x20, 0x4F, 0x6E, 0x20,
+						0x4E, 0x6F, 0x20, 0x52, 0x65,
+						0x70, 0x6C, 0x79, 0x8F, 0x25,
+						0xFC, 0x34, 0x20, 0x43, 0x61,
+						0x6C, 0x6C, 0x20, 0x46, 0x6F,
+						0x72, 0x77, 0x61, 0x72, 0x64,
+						0x20, 0x4F, 0x6E, 0x20, 0x55,
+						0x73, 0x65, 0x72, 0x20, 0x4E,
+						0x6F, 0x74, 0x20, 0x52, 0x65,
+						0x61, 0x63, 0x68, 0x61, 0x62,
+						0x6C, 0x65, 0x8F, 0x20, 0xFB,
+						0x35, 0x20, 0x42, 0x61, 0x72,
+						0x72, 0x69, 0x6E, 0x67, 0x20,
+						0x4F, 0x66, 0x20, 0x41, 0x6C,
+						0x6C, 0x20, 0x4F, 0x75, 0x74,
+						0x67, 0x6F, 0x69, 0x6E, 0x67,
+						0x20, 0x43, 0x61, 0x6C, 0x6C,
+						0x73, 0x8F, 0x24, 0xFA, 0x36,
+						0x20, 0x42, 0x61, 0x72, 0x72,
+						0x69, 0x6E, 0x67, 0x20, 0x4F,
+						0x66, 0x20, 0x41, 0x6C, 0x6C,
+						0x20, 0x4F, 0x75, 0x74, 0x67,
+						0x6F, 0x69, 0x6E, 0x67, 0x20,
+						0x49, 0x6E, 0x74, 0x20, 0x43,
+						0x61, 0x6C, 0x6C, 0x73, 0x8F,
+						0x13, 0xF9, 0x37, 0x20, 0x43,
+						0x4C, 0x49, 0x20, 0x50, 0x72,
+						0x65, 0x73, 0x65, 0x6E, 0x74,
+						0x61, 0x74, 0x69, 0x6F, 0x6E };
+
+static unsigned char setup_menu_123[] = { 0xD0, 0x81, 0xFC, 0x81, 0x03, 0x01,
+						0x25, 0x00, 0x82, 0x02, 0x81,
+						0x82, 0x85, 0x81, 0xEC, 0x54,
+						0x68, 0x65, 0x20, 0x53, 0x49,
+						0x4D, 0x20, 0x73, 0x68, 0x61,
+						0x6C, 0x6C, 0x20, 0x73, 0x75,
+						0x70, 0x70, 0x6C, 0x79, 0x20,
+						0x61, 0x20, 0x73, 0x65, 0x74,
+						0x20, 0x6F, 0x66, 0x20, 0x6D,
+						0x65, 0x6E, 0x75, 0x20, 0x69,
+						0x74, 0x65, 0x6D, 0x73, 0x2C,
+						0x20, 0x77, 0x68, 0x69, 0x63,
+						0x68, 0x20, 0x73, 0x68, 0x61,
+						0x6C, 0x6C, 0x20, 0x62, 0x65,
+						0x20, 0x69, 0x6E, 0x74, 0x65,
+						0x67, 0x72, 0x61, 0x74, 0x65,
+						0x64, 0x20, 0x77, 0x69, 0x74,
+						0x68, 0x20, 0x74, 0x68, 0x65,
+						0x20, 0x6D, 0x65, 0x6E, 0x75,
+						0x20, 0x73, 0x79, 0x73, 0x74,
+						0x65, 0x6D, 0x20, 0x28, 0x6F,
+						0x72, 0x20, 0x6F, 0x74, 0x68,
+						0x65, 0x72, 0x20, 0x4D, 0x4D,
+						0x49, 0x20, 0x66, 0x61, 0x63,
+						0x69, 0x6C, 0x69, 0x74, 0x79,
+						0x29, 0x20, 0x69, 0x6E, 0x20,
+						0x6F, 0x72, 0x64, 0x65, 0x72,
+						0x20, 0x74, 0x6F, 0x20, 0x67,
+						0x69, 0x76, 0x65, 0x20, 0x74,
+						0x68, 0x65, 0x20, 0x75, 0x73,
+						0x65, 0x72, 0x20, 0x74, 0x68,
+						0x65, 0x20, 0x6F, 0x70, 0x70,
+						0x6F, 0x72, 0x74, 0x75, 0x6E,
+						0x69, 0x74, 0x79, 0x20, 0x74,
+						0x6F, 0x20, 0x63, 0x68, 0x6F,
+						0x6F, 0x73, 0x65, 0x20, 0x6F,
+						0x6E, 0x65, 0x20, 0x6F, 0x66,
+						0x20, 0x74, 0x68, 0x65, 0x73,
+						0x65, 0x20, 0x6D, 0x65, 0x6E,
+						0x75, 0x20, 0x69, 0x74, 0x65,
+						0x6D, 0x73, 0x20, 0x61, 0x74,
+						0x20, 0x68, 0x69, 0x73, 0x20,
+						0x6F, 0x77, 0x6E, 0x20, 0x64,
+						0x69, 0x73, 0x63, 0x72, 0x65,
+						0x74, 0x69, 0x6F, 0x6E, 0x2E,
+						0x20, 0x45, 0x61, 0x63, 0x68,
+						0x20, 0x69, 0x74, 0x65, 0x6D,
+						0x20, 0x63, 0x6F, 0x6D, 0x70,
+						0x72, 0x69, 0x73, 0x65, 0x73,
+						0x20, 0x61, 0x20, 0x73, 0x68,
+						0x8F, 0x02, 0x01, 0x59 };
+
+static unsigned char setup_menu_211[] = { 0xD0, 0x3B, 0x81, 0x03, 0x01, 0x25,
+						0x80, 0x82, 0x02, 0x81, 0x82,
+						0x85, 0x0C, 0x54, 0x6F, 0x6F,
+						0x6C, 0x6B, 0x69, 0x74, 0x20,
+						0x4D, 0x65, 0x6E, 0x75, 0x8F,
+						0x07, 0x01, 0x49, 0x74, 0x65,
+						0x6D, 0x20, 0x31, 0x8F, 0x07,
+						0x02, 0x49, 0x74, 0x65, 0x6D,
+						0x20, 0x32, 0x8F, 0x07, 0x03,
+						0x49, 0x74, 0x65, 0x6D, 0x20,
+						0x33, 0x8F, 0x07, 0x04, 0x49,
+						0x74, 0x65, 0x6D, 0x20, 0x34 };
+
+static unsigned char setup_menu_311[] = { 0xD0, 0x41, 0x81, 0x03, 0x01, 0x25,
+						0x00, 0x82, 0x02, 0x81, 0x82,
+						0x85, 0x0C, 0x54, 0x6F, 0x6F,
+						0x6C, 0x6B, 0x69, 0x74, 0x20,
+						0x4D, 0x65, 0x6E, 0x75, 0x8F,
+						0x07, 0x01, 0x49, 0x74, 0x65,
+						0x6D, 0x20, 0x31, 0x8F, 0x07,
+						0x02, 0x49, 0x74, 0x65, 0x6D,
+						0x20, 0x32, 0x8F, 0x07, 0x03,
+						0x49, 0x74, 0x65, 0x6D, 0x20,
+						0x33, 0x8F, 0x07, 0x04, 0x49,
+						0x74, 0x65, 0x6D, 0x20, 0x34,
+						0x18, 0x04, 0x13, 0x10, 0x15,
+						0x26 };
+
+static unsigned char setup_menu_411[] = { 0xD0, 0x3C, 0x81, 0x03, 0x01, 0x25,
+						0x00, 0x82, 0x02, 0x81, 0x82,
+						0x85, 0x0C, 0x54, 0x6F, 0x6F,
+						0x6C, 0x6B, 0x69, 0x74, 0x20,
+						0x4D, 0x65, 0x6E, 0x75, 0x8F,
+						0x07, 0x01, 0x49, 0x74, 0x65,
+						0x6D, 0x20, 0x31, 0x8F, 0x07,
+						0x02, 0x49, 0x74, 0x65, 0x6D,
+						0x20, 0x32, 0x8F, 0x07, 0x03,
+						0x49, 0x74, 0x65, 0x6D, 0x20,
+						0x33, 0x9E, 0x02, 0x01, 0x01,
+						0x9F, 0x04, 0x01, 0x05, 0x05,
+						0x05 };
+
+static unsigned char setup_menu_421[] = { 0xD0, 0x3C, 0x81, 0x03, 0x01, 0x25,
+						0x00, 0x82, 0x02, 0x81, 0x82,
+						0x85, 0x0C, 0x54, 0x6F, 0x6F,
+						0x6C, 0x6B, 0x69, 0x74, 0x20,
+						0x4D, 0x65, 0x6E, 0x75, 0x8F,
+						0x07, 0x01, 0x49, 0x74, 0x65,
+						0x6D, 0x20, 0x31, 0x8F, 0x07,
+						0x02, 0x49, 0x74, 0x65, 0x6D,
+						0x20, 0x32, 0x8F, 0x07, 0x03,
+						0x49, 0x74, 0x65, 0x6D, 0x20,
+						0x33, 0x9E, 0x02, 0x00, 0x01,
+						0x9F, 0x04, 0x00, 0x05, 0x05,
+						0x05 };
+
+static unsigned char setup_menu_511[] = { 0xD0, 0x29, 0x81, 0x03, 0x01, 0x25,
+						0x01, 0x82, 0x02, 0x81, 0x82,
+						0x85, 0x0C, 0x54, 0x6F, 0x6F,
+						0x6C, 0x6B, 0x69, 0x74, 0x20,
+						0x4D, 0x65, 0x6E, 0x75, 0x8F,
+						0x07, 0x01, 0x49, 0x74, 0x65,
+						0x6D, 0x20, 0x31, 0x8F, 0x07,
+						0x02, 0x49, 0x74, 0x65, 0x6D,
+						0x20, 0x32 };
+
+static unsigned char setup_menu_611[] = { 0xD0, 0x48, 0x81, 0x03, 0x01, 0x25,
+						0x00, 0x82, 0x02, 0x81, 0x82,
+						0x85, 0x0E, 0x54, 0x6F, 0x6F,
+						0x6C, 0x6B, 0x69, 0x74, 0x20,
+						0x4D, 0x65, 0x6E, 0x75, 0x20,
+						0x31, 0x8F, 0x07, 0x01, 0x49,
+						0x74, 0x65, 0x6D, 0x20, 0x31,
+						0x8F, 0x07, 0x02, 0x49, 0x74,
+						0x65, 0x6D, 0x20, 0x32, 0x8F,
+						0x07, 0x03, 0x49, 0x74, 0x65,
+						0x6D, 0x20, 0x33, 0xD0, 0x04,
+						0x00, 0x0E, 0x00, 0xB4, 0xD1,
+						0x0C, 0x00, 0x06, 0x00, 0xB4,
+						0x00, 0x06, 0x00, 0xB4, 0x00,
+						0x06, 0x00, 0xB4 };
+
+static unsigned char setup_menu_612[] = { 0xD0, 0x34, 0x81, 0x03, 0x01, 0x25,
+						0x00, 0x82, 0x02, 0x81, 0x82,
+						0x85, 0x0E, 0x54, 0x6F, 0x6F,
+						0x6C, 0x6B, 0x69, 0x74, 0x20,
+						0x4D, 0x65, 0x6E, 0x75, 0x20,
+						0x32, 0x8F, 0x07, 0x04, 0x49,
+						0x74, 0x65, 0x6D, 0x20, 0x34,
+						0x8F, 0x07, 0x05, 0x49, 0x74,
+						0x65, 0x6D, 0x20, 0x35, 0x8F,
+						0x07, 0x06, 0x49, 0x74, 0x65,
+						0x6D, 0x20, 0x36 };
+
+static unsigned char setup_menu_621[] = { 0xD0, 0x48, 0x81, 0x03, 0x01, 0x25,
+						0x00, 0x82, 0x02, 0x81, 0x82,
+						0x85, 0x0E, 0x54, 0x6F, 0x6F,
+						0x6C, 0x6B, 0x69, 0x74, 0x20,
+						0x4D, 0x65, 0x6E, 0x75, 0x20,
+						0x31, 0x8F, 0x07, 0x01, 0x49,
+						0x74, 0x65, 0x6D, 0x20, 0x31,
+						0x8F, 0x07, 0x02, 0x49, 0x74,
+						0x65, 0x6D, 0x20, 0x32, 0x8F,
+						0x07, 0x03, 0x49, 0x74, 0x65,
+						0x6D, 0x20, 0x33, 0xD0, 0x04,
+						0x00, 0x0E, 0x01, 0xB4, 0xD1,
+						0x0C, 0x00, 0x06, 0x01, 0xB4,
+						0x00, 0x06, 0x01, 0xB4, 0x00,
+						0x06, 0x01, 0xB4 };
+
+static unsigned char setup_menu_622[] = { 0xD0, 0x34, 0x81, 0x03, 0x01, 0x25,
+						0x00, 0x82, 0x02, 0x81, 0x82,
+						0x85, 0x0E, 0x54, 0x6F, 0x6F,
+						0x6C, 0x6B, 0x69, 0x74, 0x20,
+						0x4D, 0x65, 0x6E, 0x75, 0x20,
+						0x32, 0x8F, 0x07, 0x04, 0x49,
+						0x74, 0x65, 0x6D, 0x20, 0x34,
+						0x8F, 0x07, 0x05, 0x49, 0x74,
+						0x65, 0x6D, 0x20, 0x35, 0x8F,
+						0x07, 0x06, 0x49, 0x74, 0x65,
+						0x6D, 0x20, 0x36 };
+
+static unsigned char setup_menu_631[] = { 0xD0, 0x48, 0x81, 0x03, 0x01, 0x25,
+						0x00, 0x82, 0x02, 0x81, 0x82,
+						0x85, 0x0E, 0x54, 0x6F, 0x6F,
+						0x6C, 0x6B, 0x69, 0x74, 0x20,
+						0x4D, 0x65, 0x6E, 0x75, 0x20,
+						0x31, 0x8F, 0x07, 0x01, 0x49,
+						0x74, 0x65, 0x6D, 0x20, 0x31,
+						0x8F, 0x07, 0x02, 0x49, 0x74,
+						0x65, 0x6D, 0x20, 0x32, 0x8F,
+						0x07, 0x03, 0x49, 0x74, 0x65,
+						0x6D, 0x20, 0x33, 0xD0, 0x04,
+						0x00, 0x0E, 0x02, 0xB4, 0xD1,
+						0x0C, 0x00, 0x06, 0x02, 0xB4,
+						0x00, 0x06, 0x02, 0xB4, 0x00,
+						0x06, 0x02, 0xB4 };
+
+static unsigned char setup_menu_632[] = { 0xD0, 0x34, 0x81, 0x03, 0x01, 0x25,
+						0x00, 0x82, 0x02, 0x81, 0x82,
+						0x85, 0x0E, 0x54, 0x6F, 0x6F,
+						0x6C, 0x6B, 0x69, 0x74, 0x20,
+						0x4D, 0x65, 0x6E, 0x75, 0x20,
+						0x32, 0x8F, 0x07, 0x04, 0x49,
+						0x74, 0x65, 0x6D, 0x20, 0x34,
+						0x8F, 0x07, 0x05, 0x49, 0x74,
+						0x65, 0x6D, 0x20, 0x35, 0x8F,
+						0x07, 0x06, 0x49, 0x74, 0x65,
+						0x6D, 0x20, 0x36 };
+
+static unsigned char setup_menu_641[] = { 0xD0, 0x48, 0x81, 0x03, 0x01, 0x25,
+						0x00, 0x82, 0x02, 0x81, 0x82,
+						0x85, 0x0E, 0x54, 0x6F, 0x6F,
+						0x6C, 0x6B, 0x69, 0x74, 0x20,
+						0x4D, 0x65, 0x6E, 0x75, 0x20,
+						0x31, 0x8F, 0x07, 0x01, 0x49,
+						0x74, 0x65, 0x6D, 0x20, 0x31,
+						0x8F, 0x07, 0x02, 0x49, 0x74,
+						0x65, 0x6D, 0x20, 0x32, 0x8F,
+						0x07, 0x03, 0x49, 0x74, 0x65,
+						0x6D, 0x20, 0x33, 0xD0, 0x04,
+						0x00, 0x0E, 0x04, 0xB4, 0xD1,
+						0x0C, 0x00, 0x06, 0x04, 0xB4,
+						0x00, 0x06, 0x04, 0xB4, 0x00,
+						0x06, 0x04, 0xB4 };
+
+static unsigned char setup_menu_642[] = { 0xD0, 0x48, 0x81, 0x03, 0x01, 0x25,
+						0x00, 0x82, 0x02, 0x81, 0x82,
+						0x85, 0x0E, 0x54, 0x6F, 0x6F,
+						0x6C, 0x6B, 0x69, 0x74, 0x20,
+						0x4D, 0x65, 0x6E, 0x75, 0x20,
+						0x32, 0x8F, 0x07, 0x04, 0x49,
+						0x74, 0x65, 0x6D, 0x20, 0x34,
+						0x8F, 0x07, 0x05, 0x49, 0x74,
+						0x65, 0x6D, 0x20, 0x35, 0x8F,
+						0x07, 0x06, 0x49, 0x74, 0x65,
+						0x6D, 0x20, 0x36, 0xD0, 0x04,
+						0x00, 0x0E, 0x00, 0xB4, 0xD1,
+						0x0C, 0x00, 0x06, 0x00, 0xB4,
+						0x00, 0x06, 0x00, 0xB4, 0x00,
+						0x06, 0x00, 0xB4 };
+
+static unsigned char setup_menu_643[] = { 0xD0, 0x34, 0x81, 0x03, 0x01, 0x25,
+						0x00, 0x82, 0x02, 0x81, 0x82,
+						0x85, 0x0E, 0x54, 0x6F, 0x6F,
+						0x6C, 0x6B, 0x69, 0x74, 0x20,
+						0x4D, 0x65, 0x6E, 0x75, 0x20,
+						0x33, 0x8F, 0x07, 0x07, 0x49,
+						0x74, 0x65, 0x6D, 0x20, 0x37,
+						0x8F, 0x07, 0x08, 0x49, 0x74,
+						0x65, 0x6D, 0x20, 0x38, 0x8F,
+						0x07, 0x09, 0x49, 0x74, 0x65,
+						0x6D, 0x20, 0x39 };
+
+static unsigned char setup_menu_651[] = { 0xD0, 0x48, 0x81, 0x03, 0x01, 0x25,
+						0x00, 0x82, 0x02, 0x81, 0x82,
+						0x85, 0x0E, 0x54, 0x6F, 0x6F,
+						0x6C, 0x6B, 0x69, 0x74, 0x20,
+						0x4D, 0x65, 0x6E, 0x75, 0x20,
+						0x31, 0x8F, 0x07, 0x01, 0x49,
+						0x74, 0x65, 0x6D, 0x20, 0x31,
+						0x8F, 0x07, 0x02, 0x49, 0x74,
+						0x65, 0x6D, 0x20, 0x32, 0x8F,
+						0x07, 0x03, 0x49, 0x74, 0x65,
+						0x6D, 0x20, 0x33, 0xD0, 0x04,
+						0x00, 0x0E, 0x08, 0xB4, 0xD1,
+						0x0C, 0x00, 0x06, 0x08, 0xB4,
+						0x00, 0x06, 0x08, 0xB4, 0x00,
+						0x06, 0x08, 0xB4 };
+
+static unsigned char setup_menu_661[] = { 0xD0, 0x48, 0x81, 0x03, 0x01, 0x25,
+						0x00, 0x82, 0x02, 0x81, 0x82,
+						0x85, 0x0E, 0x54, 0x6F, 0x6F,
+						0x6C, 0x6B, 0x69, 0x74, 0x20,
+						0x4D, 0x65, 0x6E, 0x75, 0x20,
+						0x31, 0x8F, 0x07, 0x01, 0x49,
+						0x74, 0x65, 0x6D, 0x20, 0x31,
+						0x8F, 0x07, 0x02, 0x49, 0x74,
+						0x65, 0x6D, 0x20, 0x32, 0x8F,
+						0x07, 0x03, 0x49, 0x74, 0x65,
+						0x6D, 0x20, 0x33, 0xD0, 0x04,
+						0x00, 0x0E, 0x10, 0xB4, 0xD1,
+						0x0C, 0x00, 0x06, 0x10, 0xB4,
+						0x00, 0x06, 0x10, 0xB4, 0x00,
+						0x06, 0x10, 0xB4 };
+
+static unsigned char setup_menu_671[] = { 0xD0, 0x48, 0x81, 0x03, 0x01, 0x25,
+						0x00, 0x82, 0x02, 0x81, 0x82,
+						0x85, 0x0E, 0x54, 0x6F, 0x6F,
+						0x6C, 0x6B, 0x69, 0x74, 0x20,
+						0x4D, 0x65, 0x6E, 0x75, 0x20,
+						0x31, 0x8F, 0x07, 0x01, 0x49,
+						0x74, 0x65, 0x6D, 0x20, 0x31,
+						0x8F, 0x07, 0x02, 0x49, 0x74,
+						0x65, 0x6D, 0x20, 0x32, 0x8F,
+						0x07, 0x03, 0x49, 0x74, 0x65,
+						0x6D, 0x20, 0x33, 0xD0, 0x04,
+						0x00, 0x0E, 0x20, 0xB4, 0xD1,
+						0x0C, 0x00, 0x06, 0x20, 0xB4,
+						0x00, 0x06, 0x20, 0xB4, 0x00,
+						0x06, 0x20, 0xB4 };
+
+static unsigned char setup_menu_681[] = { 0xD0, 0x48, 0x81, 0x03, 0x01, 0x25,
+						0x00, 0x82, 0x02, 0x81, 0x82,
+						0x85, 0x0E, 0x54, 0x6F, 0x6F,
+						0x6C, 0x6B, 0x69, 0x74, 0x20,
+						0x4D, 0x65, 0x6E, 0x75, 0x20,
+						0x31, 0x8F, 0x07, 0x01, 0x49,
+						0x74, 0x65, 0x6D, 0x20, 0x31,
+						0x8F, 0x07, 0x02, 0x49, 0x74,
+						0x65, 0x6D, 0x20, 0x32, 0x8F,
+						0x07, 0x03, 0x49, 0x74, 0x65,
+						0x6D, 0x20, 0x33, 0xD0, 0x04,
+						0x00, 0x0E, 0x40, 0xB4, 0xD1,
+						0x0C, 0x00, 0x06, 0x40, 0xB4,
+						0x00, 0x06, 0x40, 0xB4, 0x00,
+						0x06, 0x40, 0xB4 };
+
+static unsigned char setup_menu_691[] = { 0xD0, 0x48, 0x81, 0x03, 0x01, 0x25,
+						0x00, 0x82, 0x02, 0x81, 0x82,
+						0x85, 0x0E, 0x54, 0x6F, 0x6F,
+						0x6C, 0x6B, 0x69, 0x74, 0x20,
+						0x4D, 0x65, 0x6E, 0x75, 0x20,
+						0x31, 0x8F, 0x07, 0x01, 0x49,
+						0x74, 0x65, 0x6D, 0x20, 0x31,
+						0x8F, 0x07, 0x02, 0x49, 0x74,
+						0x65, 0x6D, 0x20, 0x32, 0x8F,
+						0x07, 0x03, 0x49, 0x74, 0x65,
+						0x6D, 0x20, 0x33, 0xD0, 0x04,
+						0x00, 0x0E, 0x80, 0xB4, 0xD1,
+						0x0C, 0x00, 0x06, 0x80, 0xB4,
+						0x00, 0x06, 0x80, 0xB4, 0x00,
+						0x06, 0x80, 0xB4 };
+
+static unsigned char setup_menu_6101[] = { 0xD0, 0x46, 0x81, 0x03, 0x01, 0x25,
+						0x00, 0x82, 0x02, 0x81, 0x82,
+						0x85, 0x0C, 0x54, 0x6F, 0x6F,
+						0x6C, 0x6B, 0x69, 0x74, 0x20,
+						0x4D, 0x65, 0x6E, 0x75, 0x8F,
+						0x07, 0x01, 0x49, 0x74, 0x65,
+						0x6D, 0x20, 0x31, 0x8F, 0x07,
+						0x02, 0x49, 0x74, 0x65, 0x6D,
+						0x20, 0x32, 0x8F, 0x07, 0x03,
+						0x49, 0x74, 0x65, 0x6D, 0x20,
+						0x33, 0xD0, 0x04, 0x00, 0x0C,
+						0x00, 0xB4, 0xD1, 0x0C, 0x00,
+						0x06, 0x00, 0xB4, 0x00, 0x06,
+						0x00, 0xB4, 0x00, 0x06, 0x00,
+						0xB4 };
+
+static unsigned char setup_menu_711[] = { 0xD0, 0x81, 0x9C, 0x81, 0x03, 0x01,
+						0x25, 0x00, 0x82, 0x02, 0x81,
+						0x82, 0x85, 0x19, 0x80, 0x04,
+						0x17, 0x04, 0x14, 0x04, 0x20,
+						0x04, 0x10, 0x04, 0x12, 0x04,
+						0x21, 0x04, 0x22, 0x04, 0x12,
+						0x04, 0x23, 0x04, 0x19, 0x04,
+						0x22, 0x04, 0x15, 0x8F, 0x1C,
+						0x01, 0x80, 0x04, 0x17, 0x04,
+						0x14, 0x04, 0x20, 0x04, 0x10,
+						0x04, 0x12, 0x04, 0x21, 0x04,
+						0x22, 0x04, 0x12, 0x04, 0x23,
+						0x04, 0x19, 0x04, 0x22, 0x04,
+						0x15, 0x00, 0x31, 0x8F, 0x1C,
+						0x02, 0x80, 0x04, 0x17, 0x04,
+						0x14, 0x04, 0x20, 0x04, 0x10,
+						0x04, 0x12, 0x04, 0x21, 0x04,
+						0x22, 0x04, 0x12, 0x04, 0x23,
+						0x04, 0x19, 0x04, 0x22, 0x04,
+						0x15, 0x00, 0x32, 0x8F, 0x1C,
+						0x03, 0x80, 0x04, 0x17, 0x04,
+						0x14, 0x04, 0x20, 0x04, 0x10,
+						0x04, 0x12, 0x04, 0x21, 0x04,
+						0x22, 0x04, 0x12, 0x04, 0x23,
+						0x04, 0x19, 0x04, 0x22, 0x04,
+						0x15, 0x00, 0x33, 0x8F, 0x1C,
+						0x04, 0x80, 0x04, 0x17, 0x04,
+						0x14, 0x04, 0x20, 0x04, 0x10,
+						0x04, 0x12, 0x04, 0x21, 0x04,
+						0x22, 0x04, 0x12, 0x04, 0x23,
+						0x04, 0x19, 0x04, 0x22, 0x04,
+						0x15, 0x00, 0x34 };
+
+static unsigned char setup_menu_712[] = { 0xD0, 0x60, 0x81, 0x03, 0x01, 0x25,
+						0x00, 0x82, 0x02, 0x81, 0x82,
+						0x85, 0x19, 0x80, 0x04, 0x17,
+						0x04, 0x14, 0x04, 0x20, 0x04,
+						0x10, 0x04, 0x12, 0x04, 0x21,
+						0x04, 0x22, 0x04, 0x12, 0x04,
+						0x23, 0x04, 0x19, 0x04, 0x22,
+						0x04, 0x15, 0x8F, 0x1C, 0x11,
+						0x80, 0x04, 0x17, 0x04, 0x14,
+						0x04, 0x20, 0x04, 0x10, 0x04,
+						0x12, 0x04, 0x21, 0x04, 0x22,
+						0x04, 0x12, 0x04, 0x23, 0x04,
+						0x19, 0x04, 0x22, 0x04, 0x15,
+						0x00, 0x35, 0x8F, 0x1C, 0x12,
+						0x80, 0x04, 0x17, 0x04, 0x14,
+						0x04, 0x20, 0x04, 0x10, 0x04,
+						0x12, 0x04, 0x21, 0x04, 0x22,
+						0x04, 0x12, 0x04, 0x23, 0x04,
+						0x19, 0x04, 0x22, 0x04, 0x15,
+						0x00, 0x36 };
+
+static unsigned char setup_menu_713[] = { 0xD0, 0x0D, 0x81, 0x03, 0x01, 0x25,
+						0x00, 0x82, 0x02, 0x81, 0x82,
+						0x85, 0x00, 0x8F, 0x00 };
+
+static unsigned char setup_menu_811[] = { 0xD0, 0x3C, 0x81, 0x03, 0x01, 0x25,
+						0x00, 0x82, 0x02, 0x81, 0x82,
+						0x85, 0x09, 0x80, 0x5D, 0xE5,
+						0x51, 0x77, 0x7B, 0xB1, 0x53,
+						0x55, 0x8F, 0x08, 0x01, 0x80,
+						0x98, 0x79, 0x76, 0xEE, 0x4E,
+						0x00, 0x8F, 0x08, 0x02, 0x80,
+						0x98, 0x79, 0x76, 0xEE, 0x4E,
+						0x8C, 0x8F, 0x08, 0x03, 0x80,
+						0x98, 0x79, 0x76, 0xEE, 0x4E,
+						0x09, 0x8F, 0x08, 0x04, 0x80,
+						0x98, 0x79, 0x76, 0xEE, 0x56,
+						0xDB };
+
+static unsigned char setup_menu_812[] = { 0xD0, 0x20, 0x81, 0x03, 0x01, 0x25,
+						0x00, 0x82, 0x02, 0x81, 0x82,
+						0x85, 0x09, 0x80, 0x5D, 0xE5,
+						0x51, 0x77, 0x7B, 0xB1, 0x53,
+						0x55, 0x8F, 0x04, 0x11, 0x80,
+						0x4E, 0x00, 0x8F, 0x04, 0x12,
+						0x80, 0x4E, 0x8C };
+
+static unsigned char setup_menu_813[] = { 0xD0, 0x0D, 0x81, 0x03, 0x01, 0x25,
+						0x00, 0x82, 0x02, 0x81, 0x82,
+						0x85, 0x00, 0x8F, 0x00 };
+
+static unsigned char setup_menu_911[] = { 0xD0, 0x44, 0x81, 0x03, 0x01, 0x25,
+						0x00, 0x82, 0x02, 0x81, 0x82,
+						0x85, 0x09, 0x80, 0x00, 0x38,
+						0x00, 0x30, 0x30, 0xEB, 0x00,
+						0x30, 0x8F, 0x0A, 0x01, 0x80,
+						0x00, 0x38, 0x00, 0x30, 0x30,
+						0xEB, 0x00, 0x31, 0x8F, 0x0A,
+						0x02, 0x80, 0x00, 0x38, 0x00,
+						0x30, 0x30, 0xEB, 0x00, 0x32,
+						0x8F, 0x0A, 0x03, 0x80, 0x00,
+						0x38, 0x00, 0x30, 0x30, 0xEB,
+						0x00, 0x33, 0x8F, 0x0A, 0x04,
+						0x80, 0x00, 0x38, 0x00, 0x30,
+						0x30, 0xEB, 0x00, 0x34 };
+
+static unsigned char setup_menu_912[] = { 0xD0, 0x2C, 0x81, 0x03, 0x01, 0x25,
+						0x00, 0x82, 0x02, 0x81, 0x82,
+						0x85, 0x09, 0x80, 0x00, 0x38,
+						0x00, 0x30, 0x30, 0xEB, 0x00,
+						0x30, 0x8F, 0x0A, 0x11, 0x80,
+						0x00, 0x38, 0x00, 0x30, 0x30,
+						0xEB, 0x00, 0x35, 0x8F, 0x0A,
+						0x12, 0x80, 0x00, 0x38, 0x00,
+						0x30, 0x30, 0xEB, 0x00, 0x36 };
+
+static unsigned char setup_menu_913[] = { 0xD0, 0x0D, 0x81, 0x03, 0x01, 0x25,
+						0x00, 0x82, 0x02, 0x81, 0x82,
+						0x85, 0x00, 0x8F, 0x00 };
+
+static struct setup_menu_test setup_menu_data_111 = {
+	.pdu = setup_menu_111,
+	.pdu_len = sizeof(setup_menu_111),
+	.qualifier = 0x00,
+	.alpha_id = "Toolkit Menu",
+	.items[0] = {
+		.id = 1,
+		.text = "Item 1"
+	},
+	.items[1] = {
+		.id = 2,
+		.text = "Item 2"
+	},
+	.items[2] = {
+		.id = 3,
+		.text = "Item 3"
+	},
+	.items[3] = {
+		.id = 4,
+		.text = "Item 4"
+	}
+};
+
+static struct setup_menu_test setup_menu_data_112 = {
+	.pdu = setup_menu_112,
+	.pdu_len = sizeof(setup_menu_112),
+	.qualifier = 0x00,
+	.alpha_id = "Toolkit Menu",
+	.items[0] = {
+		.id = 0x11,
+		.text = "One"
+	},
+	.items[1] = {
+		.id = 0x12,
+		.text = "Two"
+	}
+};
+
+static struct setup_menu_test setup_menu_data_113 = {
+	.pdu = setup_menu_113,
+	.pdu_len = sizeof(setup_menu_113),
+	.qualifier = 0x00
+};
+
+static struct setup_menu_test setup_menu_data_121 = {
+	.pdu = setup_menu_121,
+	.pdu_len = sizeof(setup_menu_121),
+	.qualifier = 0x00,
+	.alpha_id = "LargeMenu1",
+	.items[0] = {
+		.id = 0x50,
+		.text = "Zero"
+	},
+	.items[1] = {
+		.id = 0x4F,
+		.text = "One"
+	},
+	.items[2] = {
+		.id = 0x4E,
+		.text = "Two"
+	},
+	.items[3] = {
+		.id = 0x4D,
+		.text = "Three"
+	},
+	.items[4] = {
+		.id = 0x4C,
+		.text = "Four"
+	},
+	.items[5] = {
+		.id = 0x4B,
+		.text = "Five"
+	},
+	.items[6] = {
+		.id = 0x4A,
+		.text = "Six"
+	},
+	.items[7] = {
+		.id = 0x49,
+		.text = "Seven"
+	},
+	.items[8] = {
+		.id = 0x48,
+		.text = "Eight"
+	},
+	.items[9] = {
+		.id = 0x47,
+		.text = "Nine"
+	},
+	.items[10] = {
+		.id = 0x46,
+		.text = "Alpha"
+	},
+	.items[11] = {
+		.id = 0x45,
+		.text = "Bravo"
+	},
+	.items[12] = {
+		.id = 0x44,
+		.text = "Charlie"
+	},
+	.items[13] = {
+		.id = 0x43,
+		.text = "Delta"
+	},
+	.items[14] = {
+		.id = 0x42,
+		.text = "Echo"
+	},
+	.items[15] = {
+		.id = 0x41,
+		.text = "Fox-trot"
+	},
+	.items[16] = {
+		.id = 0x40,
+		.text = "Black"
+	},
+	.items[17] = {
+		.id = 0x3F,
+		.text = "Brown"
+	},
+	.items[18] = {
+		.id = 0x3E,
+		.text = "Red"
+	},
+	.items[19] = {
+		.id = 0x3D,
+		.text = "Orange"
+	},
+	.items[20] = {
+		.id = 0x3C,
+		.text = "Yellow"
+	},
+	.items[21] = {
+		.id = 0x3B,
+		.text = "Green"
+	},
+	.items[22] = {
+		.id = 0x3A,
+		.text = "Blue"
+	},
+	.items[23] = {
+		.id = 0x39,
+		.text = "Violet"
+	},
+	.items[24] = {
+		.id = 0x38,
+		.text = "Grey"
+	},
+	.items[25] = {
+		.id = 0x37,
+		.text = "White"
+	},
+	.items[26] = {
+		.id = 0x36,
+		.text = "milli"
+	},
+	.items[27] = {
+		.id = 0x35,
+		.text = "micro"
+	},
+	.items[28] = {
+		.id = 0x34,
+		.text = "nano"
+	},
+	.items[29] = {
+		.id = 0x33,
+		.text = "pico"
+	}
+};
+
+static struct setup_menu_test setup_menu_data_122 = {
+	.pdu = setup_menu_122,
+	.pdu_len = sizeof(setup_menu_122),
+	.qualifier = 0x00,
+	.alpha_id = "LargeMenu2",
+	.items[0] = {
+		.id = 0xFF,
+		.text = "1 Call Forward Unconditional"
+	},
+	.items[1] = {
+		.id = 0xFE,
+		.text = "2 Call Forward On User Busy"
+	},
+	.items[2] = {
+		.id = 0xFD,
+		.text = "3 Call Forward On No Reply"
+	},
+	.items[3] = {
+		.id = 0xFC,
+		.text = "4 Call Forward On User Not Reachable"
+	},
+	.items[4] = {
+		.id = 0xFB,
+		.text = "5 Barring Of All Outgoing Calls"
+	},
+	.items[5] = {
+		.id = 0xFA,
+		.text = "6 Barring Of All Outgoing Int Calls"
+	},
+	.items[6] = {
+		.id = 0xF9,
+		.text = "7 CLI Presentation"
+	}
+};
+
+static struct setup_menu_test setup_menu_data_123 = {
+	.pdu = setup_menu_123,
+	.pdu_len = sizeof(setup_menu_123),
+	.qualifier = 0x00,
+	.alpha_id = "The SIM shall supply a set of menu items, which shall "
+			"be integrated with the menu system (or other MMI "
+			"facility) in order to give the user the opportunity "
+			"to choose one of these menu items at his own "
+			"discretion. Each item comprises a sh",
+	.items[0] = {
+		.id = 0x01,
+		.text = "Y"
+	}
+};
+
+static struct setup_menu_test setup_menu_data_211 = {
+	.pdu = setup_menu_211,
+	.pdu_len = sizeof(setup_menu_211),
+	.qualifier = 0x80,
+	.alpha_id = "Toolkit Menu",
+	.items[0] = {
+		.id = 1,
+		.text = "Item 1"
+	},
+	.items[1] = {
+		.id = 2,
+		.text = "Item 2"
+	},
+	.items[2] = {
+		.id = 3,
+		.text = "Item 3"
+	},
+	.items[3] = {
+		.id = 4,
+		.text = "Item 4"
+	}
+};
+
+static struct setup_menu_test setup_menu_data_311 = {
+	.pdu = setup_menu_311,
+	.pdu_len = sizeof(setup_menu_311),
+	.qualifier = 0x00,
+	.alpha_id = "Toolkit Menu",
+	.items[0] = {
+		.id = 1,
+		.text = "Item 1"
+	},
+	.items[1] = {
+		.id = 2,
+		.text = "Item 2"
+	},
+	.items[2] = {
+		.id = 3,
+		.text = "Item 3"
+	},
+	.items[3] = {
+		.id = 4,
+		.text = "Item 4"
+	},
+	.next_act = {
+		.list = { STK_COMMAND_TYPE_SEND_SMS,
+				STK_COMMAND_TYPE_SETUP_CALL,
+				STK_COMMAND_TYPE_LAUNCH_BROWSER,
+				STK_COMMAND_TYPE_PROVIDE_LOCAL_INFO },
+		.len = 4
+	}
+};
+
+static struct setup_menu_test setup_menu_data_411 = {
+	.pdu = setup_menu_411,
+	.pdu_len = sizeof(setup_menu_411),
+	.qualifier = 0x00,
+	.alpha_id = "Toolkit Menu",
+	.items[0] = {
+		.id = 1,
+		.text = "Item 1"
+	},
+	.items[1] = {
+		.id = 2,
+		.text = "Item 2"
+	},
+	.items[2] = {
+		.id = 3,
+		.text = "Item 3"
+	},
+	.icon_id = {
+		.qualifier = STK_ICON_QUALIFIER_TYPE_NON_SELF_EXPLANATORY,
+		.id = 1
+	},
+	.item_icon_id_list = {
+		.qualifier = STK_ICON_QUALIFIER_TYPE_NON_SELF_EXPLANATORY,
+		.list = { 5, 5, 5 },
+		.len = 3
+	}
+};
+
+static struct setup_menu_test setup_menu_data_421 = {
+	.pdu = setup_menu_421,
+	.pdu_len = sizeof(setup_menu_421),
+	.qualifier = 0x00,
+	.alpha_id = "Toolkit Menu",
+	.items[0] = {
+		.id = 1,
+		.text = "Item 1"
+	},
+	.items[1] = {
+		.id = 2,
+		.text = "Item 2"
+	},
+	.items[2] = {
+		.id = 3,
+		.text = "Item 3"
+	},
+	.icon_id = {
+		.qualifier = STK_ICON_QUALIFIER_TYPE_SELF_EXPLANATORY,
+		.id = 1
+	},
+	.item_icon_id_list = {
+		.qualifier = STK_ICON_QUALIFIER_TYPE_SELF_EXPLANATORY,
+		.list = { 5, 5, 5 },
+		.len = 3
+	}
+};
+
+static struct setup_menu_test setup_menu_data_511 = {
+	.pdu = setup_menu_511,
+	.pdu_len = sizeof(setup_menu_511),
+	.qualifier = 0x01,
+	.alpha_id = "Toolkit Menu",
+	.items[0] = {
+		.id = 1,
+		.text = "Item 1"
+	},
+	.items[1] = {
+		.id = 2,
+		.text = "Item 2"
+	}
+};
+
+static struct setup_menu_test setup_menu_data_611 = {
+	.pdu = setup_menu_611,
+	.pdu_len = sizeof(setup_menu_611),
+	.qualifier = 0x00,
+	.alpha_id = "Toolkit Menu 1",
+	.items[0] = {
+		.id = 1,
+		.text = "Item 1"
+	},
+	.items[1] = {
+		.id = 2,
+		.text = "Item 2"
+	},
+	.items[2] = {
+		.id = 3,
+		.text = "Item 3"
+	},
+	.text_attr = {
+		.len = 4,
+		.attributes = { 0x00, 0x0E, 0x00, 0xB4 }
+	},
+	.item_text_attr_list = {
+		.len = 12,
+		.list = { 0x00, 0x06, 0x00, 0xB4, 0x00, 0x06, 0x00, 0xB4,
+				0x00, 0x06, 0x00, 0xB4 }
+	}
+};
+
+static struct setup_menu_test setup_menu_data_612 = {
+	.pdu = setup_menu_612,
+	.pdu_len = sizeof(setup_menu_612),
+	.qualifier = 0x00,
+	.alpha_id = "Toolkit Menu 2",
+	.items[0] = {
+		.id = 4,
+		.text = "Item 4"
+	},
+	.items[1] = {
+		.id = 5,
+		.text = "Item 5"
+	},
+	.items[2] = {
+		.id = 6,
+		.text = "Item 6"
+	}
+};
+
+static struct setup_menu_test setup_menu_data_621 = {
+	.pdu = setup_menu_621,
+	.pdu_len = sizeof(setup_menu_621),
+	.qualifier = 0x00,
+	.alpha_id = "Toolkit Menu 1",
+	.items[0] = {
+		.id = 1,
+		.text = "Item 1"
+	},
+	.items[1] = {
+		.id = 2,
+		.text = "Item 2"
+	},
+	.items[2] = {
+		.id = 3,
+		.text = "Item 3"
+	},
+	.text_attr = {
+		.len = 4,
+		.attributes = { 0x00, 0x0E, 0x01, 0xB4 }
+	},
+	.item_text_attr_list = {
+		.len = 12,
+		.list = { 0x00, 0x06, 0x01, 0xB4, 0x00, 0x06, 0x01, 0xB4,
+				0x00, 0x06, 0x01, 0xB4 }
+	}
+};
+
+static struct setup_menu_test setup_menu_data_622 = {
+	.pdu = setup_menu_622,
+	.pdu_len = sizeof(setup_menu_622),
+	.qualifier = 0x00,
+	.alpha_id = "Toolkit Menu 2",
+	.items[0] = {
+		.id = 4,
+		.text = "Item 4"
+	},
+	.items[1] = {
+		.id = 5,
+		.text = "Item 5"
+	},
+	.items[2] = {
+		.id = 6,
+		.text = "Item 6"
+	}
+};
+
+/*
+ * Some problem with data of item #3 in item_text_attr_list
+ * and the explanation
+ */
+static struct setup_menu_test setup_menu_data_631 = {
+	.pdu = setup_menu_631,
+	.pdu_len = sizeof(setup_menu_631),
+	.qualifier = 0x00,
+	.alpha_id = "Toolkit Menu 1",
+	.items[0] = {
+		.id = 1,
+		.text = "Item 1"
+	},
+	.items[1] = {
+		.id = 2,
+		.text = "Item 2"
+	},
+	.items[2] = {
+		.id = 3,
+		.text = "Item 3"
+	},
+	.text_attr = {
+		.len = 4,
+		.attributes = { 0x00, 0x0E, 0x02, 0xB4 }
+	},
+	.item_text_attr_list = {
+		.len = 12,
+		.list = { 0x00, 0x06, 0x02, 0xB4, 0x00, 0x06, 0x02, 0xB4,
+				0x00, 0x06, 0x02, 0xB4 }
+	}
+};
+
+static struct setup_menu_test setup_menu_data_632 = {
+	.pdu = setup_menu_632,
+	.pdu_len = sizeof(setup_menu_632),
+	.qualifier = 0x00,
+	.alpha_id = "Toolkit Menu 2",
+	.items[0] = {
+		.id = 4,
+		.text = "Item 4"
+	},
+	.items[1] = {
+		.id = 5,
+		.text = "Item 5"
+	},
+	.items[2] = {
+		.id = 6,
+		.text = "Item 6"
+	}
+};
+
+static struct setup_menu_test setup_menu_data_641 = {
+	.pdu = setup_menu_641,
+	.pdu_len = sizeof(setup_menu_641),
+	.qualifier = 0x00,
+	.alpha_id = "Toolkit Menu 1",
+	.items[0] = {
+		.id = 1,
+		.text = "Item 1"
+	},
+	.items[1] = {
+		.id = 2,
+		.text = "Item 2"
+	},
+	.items[2] = {
+		.id = 3,
+		.text = "Item 3"
+	},
+	.text_attr = {
+		.len = 4,
+		.attributes = { 0x00, 0x0E, 0x04, 0xB4 }
+	},
+	.item_text_attr_list = {
+		.len = 12,
+		.list = { 0x00, 0x06, 0x04, 0xB4, 0x00, 0x06, 0x04, 0xB4,
+				0x00, 0x06, 0x04, 0xB4 }
+	}
+};
+
+static struct setup_menu_test setup_menu_data_642 = {
+	.pdu = setup_menu_642,
+	.pdu_len = sizeof(setup_menu_642),
+	.qualifier = 0x00,
+	.alpha_id = "Toolkit Menu 2",
+	.items[0] = {
+		.id = 4,
+		.text = "Item 4"
+	},
+	.items[1] = {
+		.id = 5,
+		.text = "Item 5"
+	},
+	.items[2] = {
+		.id = 6,
+		.text = "Item 6"
+	},
+	.text_attr = {
+		.len = 4,
+		.attributes = { 0x00, 0x0E, 0x00, 0xB4 }
+	},
+	.item_text_attr_list = {
+		.len = 12,
+		.list = { 0x00, 0x06, 0x00, 0xB4, 0x00, 0x06, 0x00, 0xB4,
+				0x00, 0x06, 0x00, 0xB4 }
+	}
+};
+
+static struct setup_menu_test setup_menu_data_643 = {
+	.pdu = setup_menu_643,
+	.pdu_len = sizeof(setup_menu_643),
+	.qualifier = 0x00,
+	.alpha_id = "Toolkit Menu 3",
+	.items[0] = {
+		.id = 7,
+		.text = "Item 7"
+	},
+	.items[1] = {
+		.id = 8,
+		.text = "Item 8"
+	},
+	.items[2] = {
+		.id = 9,
+		.text = "Item 9"
+	}
+};
+
+static struct setup_menu_test setup_menu_data_651 = {
+	.pdu = setup_menu_651,
+	.pdu_len = sizeof(setup_menu_651),
+	.qualifier = 0x00,
+	.alpha_id = "Toolkit Menu 1",
+	.items[0] = {
+		.id = 1,
+		.text = "Item 1"
+	},
+	.items[1] = {
+		.id = 2,
+		.text = "Item 2"
+	},
+	.items[2] = {
+		.id = 3,
+		.text = "Item 3"
+	},
+	.text_attr = {
+		.len = 4,
+		.attributes = { 0x00, 0x0E, 0x08, 0xB4 }
+	},
+	.item_text_attr_list = {
+		.len = 12,
+		.list = { 0x00, 0x06, 0x08, 0xB4, 0x00, 0x06, 0x08, 0xB4,
+				0x00, 0x06, 0x08, 0xB4 }
+	}
+};
+
+static struct setup_menu_test setup_menu_data_661 = {
+	.pdu = setup_menu_661,
+	.pdu_len = sizeof(setup_menu_661),
+	.qualifier = 0x00,
+	.alpha_id = "Toolkit Menu 1",
+	.items[0] = {
+		.id = 1,
+		.text = "Item 1"
+	},
+	.items[1] = {
+		.id = 2,
+		.text = "Item 2"
+	},
+	.items[2] = {
+		.id = 3,
+		.text = "Item 3"
+	},
+	.text_attr = {
+		.len = 4,
+		.attributes = { 0x00, 0x0E, 0x10, 0xB4 }
+	},
+	.item_text_attr_list = {
+		.len = 12,
+		.list = { 0x00, 0x06, 0x10, 0xB4, 0x00, 0x06, 0x10, 0xB4,
+				0x00, 0x06, 0x10, 0xB4 }
+	}
+};
+
+static struct setup_menu_test setup_menu_data_671 = {
+	.pdu = setup_menu_671,
+	.pdu_len = sizeof(setup_menu_671),
+	.qualifier = 0x00,
+	.alpha_id = "Toolkit Menu 1",
+	.items[0] = {
+		.id = 1,
+		.text = "Item 1"
+	},
+	.items[1] = {
+		.id = 2,
+		.text = "Item 2"
+	},
+	.items[2] = {
+		.id = 3,
+		.text = "Item 3"
+	},
+	.text_attr = {
+		.len = 4,
+		.attributes = { 0x00, 0x0E, 0x20, 0xB4 }
+	},
+	.item_text_attr_list = {
+		.len = 12,
+		.list = { 0x00, 0x06, 0x20, 0xB4, 0x00, 0x06, 0x20, 0xB4,
+				0x00, 0x06, 0x20, 0xB4 }
+	}
+};
+
+static struct setup_menu_test setup_menu_data_681 = {
+	.pdu = setup_menu_681,
+	.pdu_len = sizeof(setup_menu_681),
+	.qualifier = 0x00,
+	.alpha_id = "Toolkit Menu 1",
+	.items[0] = {
+		.id = 1,
+		.text = "Item 1"
+	},
+	.items[1] = {
+		.id = 2,
+		.text = "Item 2"
+	},
+	.items[2] = {
+		.id = 3,
+		.text = "Item 3"
+	},
+	.text_attr = {
+		.len = 4,
+		.attributes = { 0x00, 0x0E, 0x40, 0xB4 }
+	},
+	.item_text_attr_list = {
+		.len = 12,
+		.list = { 0x00, 0x06, 0x40, 0xB4, 0x00, 0x06, 0x40, 0xB4,
+				0x00, 0x06, 0x40, 0xB4 }
+	}
+};
+
+static struct setup_menu_test setup_menu_data_691 = {
+	.pdu = setup_menu_691,
+	.pdu_len = sizeof(setup_menu_691),
+	.qualifier = 0x00,
+	.alpha_id = "Toolkit Menu 1",
+	.items[0] = {
+		.id = 1,
+		.text = "Item 1"
+	},
+	.items[1] = {
+		.id = 2,
+		.text = "Item 2"
+	},
+	.items[2] = {
+		.id = 3,
+		.text = "Item 3"
+	},
+	.text_attr = {
+		.len = 4,
+		.attributes = { 0x00, 0x0E, 0x80, 0xB4 }
+	},
+	.item_text_attr_list = {
+		.len = 12,
+		.list = { 0x00, 0x06, 0x80, 0xB4, 0x00, 0x06, 0x80, 0xB4,
+				0x00, 0x06, 0x80, 0xB4 }
+	}
+};
+
+static struct setup_menu_test setup_menu_data_6101 = {
+	.pdu = setup_menu_6101,
+	.pdu_len = sizeof(setup_menu_6101),
+	.qualifier = 0x00,
+	.alpha_id = "Toolkit Menu",
+	.items[0] = {
+		.id = 1,
+		.text = "Item 1"
+	},
+	.items[1] = {
+		.id = 2,
+		.text = "Item 2"
+	},
+	.items[2] = {
+		.id = 3,
+		.text = "Item 3"
+	},
+	.text_attr = {
+		.len = 4,
+		.attributes = { 0x00, 0x0C, 0x00, 0xB4 }
+	},
+	.item_text_attr_list = {
+		.len = 12,
+		.list = { 0x00, 0x06, 0x00, 0xB4, 0x00, 0x06, 0x00, 0xB4,
+				0x00, 0x06, 0x00, 0xB4 }
+	}
+};
+
+static struct setup_menu_test setup_menu_data_711 = {
+	.pdu = setup_menu_711,
+	.pdu_len = sizeof(setup_menu_711),
+	.qualifier = 0x00,
+	.alpha_id = "ЗДРАВСТВУЙТЕ",
+	.items[0] = {
+		.id = 1,
+		.text = "ЗДРАВСТВУЙТЕ1"
+	},
+	.items[1] = {
+		.id = 2,
+		.text = "ЗДРАВСТВУЙТЕ2"
+	},
+	.items[2] = {
+		.id = 3,
+		.text = "ЗДРАВСТВУЙТЕ3"
+	},
+	.items[3] = {
+		.id = 4,
+		.text = "ЗДРАВСТВУЙТЕ4"
+	}
+};
+
+static struct setup_menu_test setup_menu_data_712 = {
+	.pdu = setup_menu_712,
+	.pdu_len = sizeof(setup_menu_712),
+	.qualifier = 0x00,
+	.alpha_id = "ЗДРАВСТВУЙТЕ",
+	.items[0] = {
+		.id = 0x11,
+		.text = "ЗДРАВСТВУЙТЕ5"
+	},
+	.items[1] = {
+		.id = 0x12,
+		.text = "ЗДРАВСТВУЙТЕ6"
+	}
+};
+
+static struct setup_menu_test setup_menu_data_713 = {
+	.pdu = setup_menu_713,
+	.pdu_len = sizeof(setup_menu_713),
+	.qualifier = 0x00
+};
+
+static struct setup_menu_test setup_menu_data_811 = {
+	.pdu = setup_menu_811,
+	.pdu_len = sizeof(setup_menu_811),
+	.qualifier = 0x00,
+	.alpha_id = "工具箱单",
+	.items[0] = {
+		.id = 1,
+		.text = "项目一"
+	},
+	.items[1] = {
+		.id = 2,
+		.text = "项目二"
+	},
+	.items[2] = {
+		.id = 3,
+		.text = "项目三"
+	},
+	.items[3] = {
+		.id = 4,
+		.text = "项目四"
+	}
+};
+
+static struct setup_menu_test setup_menu_data_812 = {
+	.pdu = setup_menu_812,
+	.pdu_len = sizeof(setup_menu_812),
+	.qualifier = 0x00,
+	.alpha_id = "工具箱单",
+	.items[0] = {
+		.id = 0x11,
+		.text = "一"
+	},
+	.items[1] = {
+		.id = 0x12,
+		.text = "二"
+	}
+};
+
+static struct setup_menu_test setup_menu_data_813 = {
+	.pdu = setup_menu_813,
+	.pdu_len = sizeof(setup_menu_813),
+	.qualifier = 0x00
+};
+
+static struct setup_menu_test setup_menu_data_911 = {
+	.pdu = setup_menu_911,
+	.pdu_len = sizeof(setup_menu_911),
+	.qualifier = 0x00,
+	.alpha_id = "80ル0",
+	.items[0] = {
+		.id = 1,
+		.text = "80ル1"
+	},
+	.items[1] = {
+		.id = 2,
+		.text = "80ル2"
+	},
+	.items[2] = {
+		.id = 3,
+		.text = "80ル3"
+	},
+	.items[3] = {
+		.id = 4,
+		.text = "80ル4"
+	}
+};
+
+static struct setup_menu_test setup_menu_data_912 = {
+	.pdu = setup_menu_912,
+	.pdu_len = sizeof(setup_menu_912),
+	.qualifier = 0x00,
+	.alpha_id = "80ル0",
+	.items[0] = {
+		.id = 0x11,
+		.text = "80ル5"
+	},
+	.items[1] = {
+		.id = 0x12,
+		.text = "80ル6"
+	}
+};
+
+static struct setup_menu_test setup_menu_data_913 = {
+	.pdu = setup_menu_913,
+	.pdu_len = sizeof(setup_menu_913),
+	.qualifier = 0x00
+};
+
+/* Defined in TS 102.384 Section 27.22.4.7 */
+static void test_setup_menu(gconstpointer data)
+{
+	const struct setup_menu_test *test = data;
+	struct stk_command *command;
+
+	command = stk_command_new_from_pdu(test->pdu, test->pdu_len);
+
+	g_assert(command);
+
+	g_assert(command->number == 1);
+	g_assert(command->type == STK_COMMAND_TYPE_SETUP_MENU);
+	g_assert(command->qualifier == test->qualifier);
+
+	g_assert(command->src == STK_DEVICE_IDENTITY_TYPE_UICC);
+	g_assert(command->dst == STK_DEVICE_IDENTITY_TYPE_TERMINAL);
+
+	if (test->alpha_id)
+		g_assert(command->setup_menu.alpha_id);
+	check_common_text(command->setup_menu.alpha_id, test->alpha_id);
+	check_items(command->setup_menu.items, test->items);
+	check_items_next_action_indicator(&command->setup_menu.next_act,
+						&test->next_act);
+	check_icon_id(&command->setup_menu.icon_id, &test->icon_id);
+	check_item_icon_id_list(&command->setup_menu.item_icon_id_list,
+					&test->item_icon_id_list);
+	check_text_attr(&command->setup_menu.text_attr, &test->text_attr);
+	check_item_text_attribute_list(&command->setup_menu.item_text_attr_list,
+					&test->item_text_attr_list);
+
+	stk_command_free(command);
+}
+
 struct send_sms_test {
 	const unsigned char *pdu;
 	unsigned int pdu_len;
@@ -4366,6 +5910,77 @@ int main(int argc, char **argv)
 	g_test_add_data_func("/teststk/Poll Interval 1.1.1",
 				&poll_interval_data_111, test_poll_interval);
 
+	g_test_add_data_func("/teststk/Setup Menu 1.1.1",
+				&setup_menu_data_111, test_setup_menu);
+	g_test_add_data_func("/teststk/Setup Menu 1.1.2",
+				&setup_menu_data_112, test_setup_menu);
+	g_test_add_data_func("/teststk/Setup Menu 1.1.3",
+				&setup_menu_data_113, test_setup_menu);
+	g_test_add_data_func("/teststk/Setup Menu 1.2.1",
+				&setup_menu_data_121, test_setup_menu);
+	g_test_add_data_func("/teststk/Setup Menu 1.2.2",
+				&setup_menu_data_122, test_setup_menu);
+	g_test_add_data_func("/teststk/Setup Menu 1.2.3",
+				&setup_menu_data_123, test_setup_menu);
+	g_test_add_data_func("/teststk/Setup Menu 2.1.1",
+				&setup_menu_data_211, test_setup_menu);
+	g_test_add_data_func("/teststk/Setup Menu 3.1.1",
+				&setup_menu_data_311, test_setup_menu);
+	g_test_add_data_func("/teststk/Setup Menu 4.1.1",
+				&setup_menu_data_411, test_setup_menu);
+	g_test_add_data_func("/teststk/Setup Menu 4.2.1",
+				&setup_menu_data_421, test_setup_menu);
+	g_test_add_data_func("/teststk/Setup Menu 5.1.1",
+				&setup_menu_data_511, test_setup_menu);
+	g_test_add_data_func("/teststk/Setup Menu 6.1.1",
+				&setup_menu_data_611, test_setup_menu);
+	g_test_add_data_func("/teststk/Setup Menu 6.1.2",
+				&setup_menu_data_612, test_setup_menu);
+	g_test_add_data_func("/teststk/Setup Menu 6.2.1",
+				&setup_menu_data_621, test_setup_menu);
+	g_test_add_data_func("/teststk/Setup Menu 6.2.2",
+				&setup_menu_data_622, test_setup_menu);
+	g_test_add_data_func("/teststk/Setup Menu 6.3.1",
+				&setup_menu_data_631, test_setup_menu);
+	g_test_add_data_func("/teststk/Setup Menu 6.3.2",
+				&setup_menu_data_632, test_setup_menu);
+	g_test_add_data_func("/teststk/Setup Menu 6.4.1",
+				&setup_menu_data_641, test_setup_menu);
+	g_test_add_data_func("/teststk/Setup Menu 6.4.2",
+				&setup_menu_data_642, test_setup_menu);
+	g_test_add_data_func("/teststk/Setup Menu 6.4.3",
+				&setup_menu_data_643, test_setup_menu);
+	g_test_add_data_func("/teststk/Setup Menu 6.5.1",
+				&setup_menu_data_651, test_setup_menu);
+	g_test_add_data_func("/teststk/Setup Menu 6.6.1",
+				&setup_menu_data_661, test_setup_menu);
+	g_test_add_data_func("/teststk/Setup Menu 6.7.1",
+				&setup_menu_data_671, test_setup_menu);
+	g_test_add_data_func("/teststk/Setup Menu 6.8.1",
+				&setup_menu_data_681, test_setup_menu);
+	g_test_add_data_func("/teststk/Setup Menu 6.9.1",
+				&setup_menu_data_691, test_setup_menu);
+	g_test_add_data_func("/teststk/Setup Menu 6.10.1",
+				&setup_menu_data_6101, test_setup_menu);
+	g_test_add_data_func("/teststk/Setup Menu 7.1.1",
+				&setup_menu_data_711, test_setup_menu);
+	g_test_add_data_func("/teststk/Setup Menu 7.1.2",
+				&setup_menu_data_712, test_setup_menu);
+	g_test_add_data_func("/teststk/Setup Menu 7.1.3",
+				&setup_menu_data_713, test_setup_menu);
+	g_test_add_data_func("/teststk/Setup Menu 8.1.1",
+				&setup_menu_data_811, test_setup_menu);
+	g_test_add_data_func("/teststk/Setup Menu 8.1.2",
+				&setup_menu_data_812, test_setup_menu);
+	g_test_add_data_func("/teststk/Setup Menu 8.1.3",
+				&setup_menu_data_813, test_setup_menu);
+	g_test_add_data_func("/teststk/Setup Menu 9.1.1",
+				&setup_menu_data_911, test_setup_menu);
+	g_test_add_data_func("/teststk/Setup Menu 9.1.2",
+				&setup_menu_data_912, test_setup_menu);
+	g_test_add_data_func("/teststk/Setup Menu 9.1.3",
+				&setup_menu_data_913, test_setup_menu);
+
 	g_test_add_data_func("/teststk/Send SMS 1.1",
 				&send_sms_data_11, test_send_sms);
 
-- 
1.7.0.4



More information about the ofono mailing list