/* * * oFono - Open Source Telephony * * Copyright (C) 2008-2011 Intel Corporation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include #include "smsutil.h" #include "stkutil.h" #include "util.h" #include "stk-test-data.h" #define MAX_ITEM 100 struct sms_submit_test { gboolean rd; enum sms_validity_period_format vpf; gboolean rp; gboolean udhi; gboolean srr; guint8 mr; struct sms_address daddr; guint8 pid; guint8 dcs; struct sms_validity_period vp; guint8 udl; guint8 ud[160]; }; struct sms_test { struct sms_address sc_addr; enum sms_type type; union { struct sms_deliver deliver; struct sms_deliver_ack_report deliver_ack_report; struct sms_deliver_err_report deliver_err_report; struct sms_submit_test submit; struct sms_submit_ack_report submit_ack_report; struct sms_submit_err_report submit_err_report; struct sms_command command; struct sms_status_report status_report; }; }; static gboolean g_mem_equal(const unsigned char *v1, const unsigned char *v2, unsigned int len) { unsigned int i; for (i = 0; i < len; i++) if (v1[i] != v2[i]) return FALSE; return TRUE; } static inline void check_common_bool(const ofono_bool_t command, const ofono_bool_t test) { g_assert(command == test); } static inline void check_common_byte(const unsigned char command, const unsigned char test) { g_assert(command == test); } static inline void check_common_text(const char *command, const char *test) { if (test == NULL) { g_assert(command == NULL); return; } g_assert(command != NULL); g_assert(g_str_equal(command, test)); } static inline void check_common_byte_array( const struct stk_common_byte_array *command, const struct stk_common_byte_array *test) { if (test->len == 0) { g_assert(command->len == 0); return; } g_assert(command->len != 0); g_assert(command->len == test->len); g_assert(g_mem_equal(command->array, test->array, test->len)); } /* Defined in TS 102.223 Section 8.1 */ static inline void check_address(const struct stk_address *command, const struct stk_address *test) { g_assert(command->ton_npi == test->ton_npi); check_common_text(command->number, test->number); } /* Defined in TS 102.223 Section 8.2 */ static inline void check_alpha_id(const char *command, const char *test) { if (test != NULL && strlen(test) > 0) check_common_text(command, test); else g_assert(command == NULL); } /* Defined in TS 102.223 Section 8.3 */ static void check_subaddress(const struct stk_subaddress *command, const struct stk_subaddress *test) { if (test->len == 0) { g_assert(command->len == 0); return; } g_assert(command->len != 0); g_assert(g_mem_equal(command->subaddr, test->subaddr, test->len)); } /* Defined in TS 102.223 Section 8.4 */ static void check_ccp(const struct stk_ccp *command, const struct stk_ccp *test) { if (test->len == 0) { g_assert(command->len == 0); return; } g_assert(command->len != 0); g_assert(g_mem_equal(command->ccp, test->ccp, test->len)); } /* Defined in TS 102.223 Section 8.8 */ static void check_duration(const struct stk_duration *command, const struct stk_duration *test) { g_assert(command->unit == test->unit); 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); check_common_text(command->text, test->text); } /* Defined in TS 102.223 Section 8.10 */ static inline void check_item_id(const unsigned char command, const unsigned char test) { check_common_byte(command, test); } 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) { g_assert(command->min == test->min); g_assert(command->max == test->max); } /* Defined in TS 102.223 Section 8.13 */ static void check_gsm_sms(const struct sms *command, const struct sms_test *test) { g_assert(command->sc_addr.number_type == test->sc_addr.number_type); g_assert(command->sc_addr.numbering_plan == test->sc_addr.numbering_plan); g_assert(g_str_equal(command->sc_addr.address, test->sc_addr.address)); switch (test->type) { case SMS_TYPE_SUBMIT: { const struct sms_submit *cs = &command->submit; const struct sms_submit_test *ts = &test->submit; enum sms_charset charset; g_assert(cs->rd == ts->rd); g_assert(cs->vpf == ts->vpf); g_assert(cs->rp == ts->rp); g_assert(cs->udhi == ts->udhi); g_assert(cs->srr == ts->srr); g_assert(cs->mr == ts->mr); g_assert(cs->daddr.number_type == ts->daddr.number_type); g_assert(cs->daddr.numbering_plan == ts->daddr.numbering_plan); g_assert(g_str_equal(cs->daddr.address, ts->daddr.address)); g_assert(cs->pid == ts->pid); g_assert(cs->dcs == ts->dcs); switch (ts->vpf) { case SMS_VALIDITY_PERIOD_FORMAT_RELATIVE: g_assert(cs->vp.relative == ts->vp.relative); break; case SMS_VALIDITY_PERIOD_FORMAT_ABSOLUTE: { const struct sms_scts *ca = &cs->vp.absolute; const struct sms_scts *ta = &ts->vp.absolute; g_assert(ca->year == ta->year); g_assert(ca->month == ta->month); g_assert(ca->day == ta->day); g_assert(ca->hour == ta->hour); g_assert(ca->minute == ta->minute); g_assert(ca->second == ta->second); g_assert(ca->has_timezone == ta->has_timezone); if (ta->has_timezone) g_assert(ca->timezone == ta->timezone); break; } case SMS_VALIDITY_PERIOD_FORMAT_ENHANCED: g_assert(g_mem_equal(cs->vp.enhanced, ts->vp.enhanced, 7)); break; default: break; } g_assert(cs->udl == ts->udl); sms_dcs_decode(ts->dcs, NULL, &charset, NULL, NULL); if (charset == SMS_CHARSET_8BIT) g_assert(g_str_equal(cs->ud, ts->ud)); else { GSList *sms_list = NULL; char *message; sms_list = g_slist_prepend(sms_list, (void *)command); message = sms_decode_text(sms_list); g_assert(g_str_equal(message, ts->ud)); g_free(message); } break; } default: g_assert(FALSE); } } /* Defined in TS 102.223 Section 8.14 */ static inline void check_ss(const struct stk_ss *command, const struct stk_ss *test) { g_assert(command->ton_npi == test->ton_npi); check_common_text(command->ss, test->ss); } /* Defined in TS 102.223 Section 8.15 */ static inline void check_text(const char *command, const char *test) { check_common_text(command, test); } /* Defined in TS 102.223 Section 8.16 */ static inline void check_tone(const ofono_bool_t command, const ofono_bool_t test) { check_common_bool(command, test); } /* Defined in TS 102.223 Section 8.17 */ static inline void check_ussd(const struct stk_ussd_string *command, const char *test) { char *utf8 = ussd_decode(command->dcs, command->len, command->string); check_common_text(utf8, test); g_free(utf8); } /* Defined in TS 102.223 Section 8.18 */ static void check_file_list(GSList *command, const struct stk_file *test) { struct stk_file *sf; GSList *l; unsigned int i = 0; for (l = command; l; l = l->next) { sf = l->data; g_assert(sf->len == test[i].len); g_assert(g_mem_equal(sf->file, test[i++].file, sf->len)); } g_assert(test[i].len == 0); } /* Defined in TS 102.223 Section 8.23 */ static inline void check_default_text(const char *command, const char *test) { check_common_text(command, test); } /* 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.25 */ static void check_event_list(const struct stk_event_list *command, const struct stk_event_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.31 */ static void check_icon_id(const struct stk_icon_id *command, const struct stk_icon_id *test) { g_assert(command->id == test->id); 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.35 */ static void check_c_apdu(const struct stk_c_apdu *command, const struct stk_c_apdu *test) { g_assert(command->cla == test->cla); g_assert(command->ins == test->ins); g_assert(command->p1 == test->p1); g_assert(command->p2 == test->p2); g_assert(command->lc == test->lc); g_assert(g_mem_equal(command->data, test->data, test->lc)); if (test->has_le) g_assert(command->le == test->le); } /* Defined in TS 102.223 Section 8.37 */ static inline void check_timer_id(const unsigned char command, const unsigned char test) { check_common_byte(command, test); } /* Defined in TS 102.223 Section 8.38 */ static inline void check_timer_value(const struct stk_timer_value *command, const struct stk_timer_value *test) { g_assert(command->hour == test->hour); g_assert(command->minute == test->minute); g_assert(command->second == test->second); } /* Defined in TS 102.223 Section 8.40 */ static inline void check_at_command(const char *command, const char *test) { check_common_text(command, test); } /* Defined in TS 102.223 Section 8.43 */ static inline void check_imm_resp(const unsigned char command, const unsigned char test) { check_common_byte(command, test); } /* Defined in TS 102.223 Section 8.44 */ static inline void check_dtmf_string(const char *command, const char *test) { check_common_text(command, test); } /* Defined in TS 102.223 Section 8.45 */ static inline void check_language(const char *command, const char *test) { check_common_text(command, test); } /* Defined in TS 102.223 Section 8.47 */ static inline void check_browser_id(const unsigned char command, const unsigned char test) { check_common_byte(command, test); } /* Defined in TS 102.223 Section 8.48 */ static inline void check_url(const char *command, const char *test) { check_common_text(command, test); } /* Defined in TS 102.223 Section 8.49 */ static inline void check_bearer(const struct stk_common_byte_array *command, const struct stk_common_byte_array *test) { check_common_byte_array(command, test); } /* Defined in TS 102.223 Section 8.50 */ static void check_provisioning_file_reference(const struct stk_file *command, const struct stk_file *test) { g_assert(command->len == test->len); g_assert(g_mem_equal(command->file, test->file, test->len)); } static void check_provisioning_file_references(GSList *command, const struct stk_file *test) { struct stk_file *sf; GSList *l; unsigned int i = 0; for (l = command; l; l = l->next) { sf = l->data; check_provisioning_file_reference(sf, &test[i++]); } g_assert(test[i].len == 0); } /* Defined in TS 102.223 Section 8.52 */ static void check_bearer_desc(const struct stk_bearer_description *command, const struct stk_bearer_description *test) { g_assert(command->type == test->type); if (test->type == STK_BEARER_TYPE_GPRS_UTRAN) { check_common_byte(command->gprs.precedence, test->gprs.precedence); check_common_byte(command->gprs.delay, test->gprs.delay); check_common_byte(command->gprs.reliability, test->gprs.reliability); check_common_byte(command->gprs.peak, test->gprs.peak); check_common_byte(command->gprs.mean, test->gprs.mean); check_common_byte(command->gprs.pdp_type, test->gprs.pdp_type); return; } } /* Defined in TS 102.223 Section 8.53 */ static inline void check_channel_data( const struct stk_common_byte_array *command, const struct stk_common_byte_array *test) { check_common_byte_array(command, test); } /* Defined in TS 102.223 Section 8.58 */ static inline void check_other_address( const struct stk_other_address *command, const struct stk_other_address *test) { check_common_byte(command->type, test->type); if (test->type == STK_ADDRESS_IPV4) g_assert(command->addr.ipv4 == test->addr.ipv4); else g_assert(g_mem_equal(command->addr.ipv6, test->addr.ipv6, 16)); } /* Defined in TS 102.223 Section 8.59 */ static void check_uicc_te_interface(const struct stk_uicc_te_interface *command, const struct stk_uicc_te_interface *test) { check_common_byte(command->protocol, test->protocol); g_assert(command->port == test->port); } /* Defined in TS 102.223 Section 8.60 */ static inline void check_aid(const struct stk_aid *command, const struct stk_aid *test) { g_assert(g_mem_equal(command->aid, test->aid, test->len)); } /* Defined in TS 102.223 Section 8.70 */ static inline void check_network_access_name(const char *command, const char *test) { check_common_text(command, test); } /* Defined in TS 102.223 Section 8.71 */ static inline void check_cdma_sms_tpdu( const struct stk_common_byte_array *command, const struct stk_common_byte_array *test) { check_common_byte_array(command, test); } static void check_text_attr_html(const struct stk_text_attribute *test, char *text, const char *expected_html) { char *html; unsigned short attrs[256]; int i; if (expected_html == NULL) return; for (i = 0; i < test->len; i += 4) { attrs[i] = test->attributes[i]; attrs[i + 1] = test->attributes[i + 1]; attrs[i + 2] = test->attributes[i + 2]; attrs[i + 3] = test->attributes[i + 3]; } html = stk_text_to_html(text, attrs, test->len / 4); g_assert(memcmp(html, expected_html, strlen(expected_html)) == 0); g_free(html); } /* 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) { g_assert(command->len == test->len); 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) { g_assert(command->has_id == test->has_id); if (test->has_id) g_assert(command->id == test->id); } struct display_text_test { const unsigned char *pdu; unsigned int pdu_len; unsigned char qualifier; const char *text; struct stk_icon_id icon_id; ofono_bool_t immediate_response; struct stk_duration duration; struct stk_text_attribute text_attr; struct stk_frame_id frame_id; const char *html; }; static struct display_text_test display_text_data_111 = { .pdu = display_text_111, .pdu_len = sizeof(display_text_111), .qualifier = 0x80, .text = "Toolkit Test 1" }; static struct display_text_test display_text_data_131 = { .pdu = display_text_131, .pdu_len = sizeof(display_text_131), .qualifier = 0x81, .text = "Toolkit Test 2" }; static struct display_text_test display_text_data_141 = { .pdu = display_text_141, .pdu_len = sizeof(display_text_141), .qualifier = 0x80, .text = "Toolkit Test 3" }; static struct display_text_test display_text_data_151 = { .pdu = display_text_151, .pdu_len = sizeof(display_text_151), .qualifier = 0x00, .text = "Toolkit Test 4" }; static struct display_text_test display_text_data_161 = { .pdu = display_text_161, .pdu_len = sizeof(display_text_161), .qualifier = 0x80, .text = "This command instructs the ME to display a text message. " "It allows the SIM to define the priority of that " "message, and the text string format. Two types of " "prio" }; static struct display_text_test display_text_data_171 = { .pdu = display_text_171, .pdu_len = sizeof(display_text_171), .qualifier = 0x80, .text = "" }; static struct display_text_test display_text_data_511 = { .pdu = display_text_511, .pdu_len = sizeof(display_text_511), .qualifier = 0x80, .text = "Basic Icon", .icon_id = { .qualifier = STK_ICON_QUALIFIER_TYPE_SELF_EXPLANATORY, .id = 0x01 } }; static struct display_text_test display_text_data_521 = { .pdu = display_text_521, .pdu_len = sizeof(display_text_521), .qualifier = 0x80, .text = "Colour Icon", .icon_id = { .qualifier = STK_ICON_QUALIFIER_TYPE_SELF_EXPLANATORY, .id = 0x02 } }; static struct display_text_test display_text_data_531 = { .pdu = display_text_531, .pdu_len = sizeof(display_text_531), .qualifier = 0x80, .text = "Basic Icon", .icon_id = { .qualifier = STK_ICON_QUALIFIER_TYPE_NON_SELF_EXPLANATORY, .id = 0x01 } }; static struct display_text_test display_text_data_611 = { .pdu = display_text_611, .pdu_len = sizeof(display_text_611), .qualifier = 0x80, .text = "ЗДРАВСТВУЙТЕ" }; static struct display_text_test display_text_data_711 = { .pdu = display_text_711, .pdu_len = sizeof(display_text_711), .qualifier = 0x80, .text = "10 Second", .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 10, } }; static struct display_text_test display_text_data_811 = { .pdu = display_text_811, .pdu_len = sizeof(display_text_811), .qualifier = 0x80, .text = "Text Attribute 1", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 }, }, .html = "
Text Attribute 1" "
", }; static struct display_text_test display_text_data_821 = { .pdu = display_text_821, .pdu_len = sizeof(display_text_821), .qualifier = 0x80, .text = "Text Attribute 1", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x01, 0xB4 }, }, .html = "
Text Attribute 1" "
", }; static struct display_text_test display_text_data_831 = { .pdu = display_text_831, .pdu_len = sizeof(display_text_831), .qualifier = 0x80, .text = "Text Attribute 1", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x02, 0xB4 }, }, .html = "
Text Attribute 1" "
", }; static struct display_text_test display_text_data_841 = { .pdu = display_text_841, .pdu_len = sizeof(display_text_841), .qualifier = 0x80, .text = "Text Attribute 1", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x04, 0xB4 }, }, .html = "
" "Text Attribute 1
", }; static struct display_text_test display_text_data_851 = { .pdu = display_text_851, .pdu_len = sizeof(display_text_851), .qualifier = 0x80, .text = "Text Attribute 1", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x08, 0xB4 }, }, .html = "
" "Text Attribute 1
", }; static struct display_text_test display_text_data_861 = { .pdu = display_text_861, .pdu_len = sizeof(display_text_861), .qualifier = 0x80, .text = "Text Attribute 1", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x10, 0xB4 }, }, .html = "
" "Text Attribute 1
", }; static struct display_text_test display_text_data_871 = { .pdu = display_text_871, .pdu_len = sizeof(display_text_871), .qualifier = 0x80, .text = "Text Attribute 1", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x20, 0xB4 }, }, .html = "
" "Text Attribute 1
", }; static struct display_text_test display_text_data_881 = { .pdu = display_text_881, .pdu_len = sizeof(display_text_881), .qualifier = 0x80, .text = "Text Attribute 1", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x40, 0xB4 }, }, .html = "
Text Attribute 1
", }; static struct display_text_test display_text_data_891 = { .pdu = display_text_891, .pdu_len = sizeof(display_text_891), .qualifier = 0x80, .text = "Text Attribute 1", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x80, 0xB4 }, }, .html = "
Text Attribute 1
", }; static struct display_text_test display_text_data_911 = { .pdu = display_text_911, .pdu_len = sizeof(display_text_911), .qualifier = 0x80, .text = "你好" }; static struct display_text_test display_text_data_1011 = { .pdu = display_text_1011, .pdu_len = sizeof(display_text_1011), .qualifier = 0x80, .text = "80ル" }; /* Defined in TS 102.384 Section 27.22.4.1 */ static void test_display_text(gconstpointer data) { const struct display_text_test *test = data; struct stk_command *command; command = stk_command_new_from_pdu(test->pdu, test->pdu_len); g_assert(command); g_assert(command->status == STK_PARSE_RESULT_OK); g_assert(command->number == 1); g_assert(command->type == STK_COMMAND_TYPE_DISPLAY_TEXT); g_assert(command->qualifier == test->qualifier); g_assert(command->src == STK_DEVICE_IDENTITY_TYPE_UICC); g_assert(command->dst == STK_DEVICE_IDENTITY_TYPE_DISPLAY); g_assert(command->display_text.text); check_text(command->display_text.text, test->text); check_icon_id(&command->display_text.icon_id, &test->icon_id); check_imm_resp(command->display_text.immediate_response, test->immediate_response); check_duration(&command->display_text.duration, &test->duration); check_text_attr(&command->display_text.text_attr, &test->text_attr); check_text_attr_html(&command->display_text.text_attr, command->display_text.text, test->html); check_frame_id(&command->display_text.frame_id, &test->frame_id); stk_command_free(command); } struct get_inkey_test { const unsigned char *pdu; unsigned int pdu_len; unsigned char qualifier; char *text; struct stk_icon_id icon_id; struct stk_duration duration; struct stk_text_attribute text_attr; struct stk_frame_id frame_id; char *html; }; static unsigned char get_inkey_711[] = { 0xD0, 0x15, 0x81, 0x03, 0x01, 0x22, 0x80, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x0A, 0x04, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x22, 0x2B, 0x22 }; static unsigned char get_inkey_712[] = { 0xD0, 0x15, 0x81, 0x03, 0x01, 0x22, 0x80, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x0A, 0x04, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x22, 0x2B, 0x22 }; static unsigned char get_inkey_912[] = { 0xD0, 0x15, 0x81, 0x03, 0x01, 0x22, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x0A, 0x04, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x22, 0x23, 0x22 }; static unsigned char get_inkey_922[] = { 0xD0, 0x15, 0x81, 0x03, 0x01, 0x22, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x0A, 0x04, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x22, 0x23, 0x22 }; static unsigned char get_inkey_932[] = { 0xD0, 0x15, 0x81, 0x03, 0x01, 0x22, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x0A, 0x04, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x22, 0x23, 0x22 }; static unsigned char get_inkey_942[] = { 0xD0, 0x1B, 0x81, 0x03, 0x01, 0x22, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x0A, 0x04, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x22, 0x23, 0x22, 0xD0, 0x04, 0x00, 0x09, 0x00, 0xB4 }; static unsigned char get_inkey_943[] = { 0xD0, 0x15, 0x81, 0x03, 0x01, 0x22, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x0A, 0x04, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x22, 0x23, 0x22 }; static unsigned char get_inkey_952[] = { 0xD0, 0x1B, 0x81, 0x03, 0x01, 0x22, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x0A, 0x04, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x22, 0x23, 0x22, 0xD0, 0x04, 0x00, 0x09, 0x00, 0xB4 }; static unsigned char get_inkey_953[] = { 0xD0, 0x15, 0x81, 0x03, 0x01, 0x22, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x0A, 0x04, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x22, 0x23, 0x22 }; static unsigned char get_inkey_962[] = { 0xD0, 0x1B, 0x81, 0x03, 0x01, 0x22, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x0A, 0x04, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x22, 0x23, 0x22, 0xD0, 0x04, 0x00, 0x09, 0x00, 0xB4 }; static unsigned char get_inkey_963[] = { 0xD0, 0x15, 0x81, 0x03, 0x01, 0x22, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x0A, 0x04, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x22, 0x23, 0x22 }; static unsigned char get_inkey_972[] = { 0xD0, 0x1B, 0x81, 0x03, 0x01, 0x22, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x0A, 0x04, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x22, 0x23, 0x22, 0xD0, 0x04, 0x00, 0x09, 0x00, 0xB4 }; static unsigned char get_inkey_973[] = { 0xD0, 0x15, 0x81, 0x03, 0x01, 0x22, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x0A, 0x04, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x22, 0x23, 0x22 }; static unsigned char get_inkey_982[] = { 0xD0, 0x1B, 0x81, 0x03, 0x01, 0x22, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x0A, 0x04, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x22, 0x23, 0x22, 0xD0, 0x04, 0x00, 0x09, 0x00, 0xB4 }; static unsigned char get_inkey_983[] = { 0xD0, 0x15, 0x81, 0x03, 0x01, 0x22, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x0A, 0x04, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x22, 0x23, 0x22 }; static unsigned char get_inkey_992a[] = { 0xD0, 0x1B, 0x81, 0x03, 0x01, 0x22, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x0A, 0x04, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x22, 0x23, 0x22, 0xD0, 0x04, 0x00, 0x09, 0x00, 0xB4 }; static unsigned char get_inkey_992b[] = { 0xD0, 0x15, 0x81, 0x03, 0x01, 0x22, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x0A, 0x04, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x22, 0x23, 0x22 }; static unsigned char get_inkey_993[] = { 0xD0, 0x15, 0x81, 0x03, 0x01, 0x22, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x0A, 0x04, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x22, 0x23, 0x22 }; static unsigned char get_inkey_9102[] = { 0xD0, 0x15, 0x81, 0x03, 0x01, 0x22, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x0A, 0x04, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x22, 0x23, 0x22 }; static struct get_inkey_test get_inkey_data_111 = { .pdu = get_inkey_111, .pdu_len = sizeof(get_inkey_111), .qualifier = 0x00, .text = "Enter \"+\"" }; static struct get_inkey_test get_inkey_data_121 = { .pdu = get_inkey_121, .pdu_len = sizeof(get_inkey_121), .qualifier = 0x00, .text = "Enter \"0\"" }; static struct get_inkey_test get_inkey_data_131 = { .pdu = get_inkey_131, .pdu_len = sizeof(get_inkey_131), .qualifier = 0x00, .text = "" }; static struct get_inkey_test get_inkey_data_141 = { .pdu = get_inkey_141, .pdu_len = sizeof(get_inkey_141), .qualifier = 0x00, .text = "" }; static struct get_inkey_test get_inkey_data_151 = { .pdu = get_inkey_151, .pdu_len = sizeof(get_inkey_151), .qualifier = 0x01, .text = "Enter \"q\"" }; static struct get_inkey_test get_inkey_data_161 = { .pdu = get_inkey_161, .pdu_len = sizeof(get_inkey_161), .qualifier = 0x01, .text = "Enter \"x\". This command instructs the ME to display text, " "and to expect the user to enter a single character. Any " "response entered by the user shall be passed t" }; static struct get_inkey_test get_inkey_data_211 = { .pdu = get_inkey_211, .pdu_len = sizeof(get_inkey_211), .qualifier = 0x00, .text = "" }; static struct get_inkey_test get_inkey_data_311 = { .pdu = get_inkey_311, .pdu_len = sizeof(get_inkey_311), .qualifier = 0x00, .text = "ЗДРАВСТВУЙТЕ" }; static struct get_inkey_test get_inkey_data_321 = { .pdu = get_inkey_321, .pdu_len = sizeof(get_inkey_321), .qualifier = 0x00, .text = "ЗДРАВСТВУЙТЕЗДРАВСТВУЙТЕ" "ЗДРАВСТВУЙТЕЗДРАВСТВУЙТЕ" "ЗДРАВСТВУЙТЕЗДРАВСТВУЙ" }; static struct get_inkey_test get_inkey_data_411 = { .pdu = get_inkey_411, .pdu_len = sizeof(get_inkey_411), .qualifier = 0x03, .text = "Enter" }; static struct get_inkey_test get_inkey_data_511 = { .pdu = get_inkey_511, .pdu_len = sizeof(get_inkey_511), .qualifier = 0x04, .text = "Enter YES" }; static struct get_inkey_test get_inkey_data_512 = { .pdu = get_inkey_512, .pdu_len = sizeof(get_inkey_512), .qualifier = 0x04, .text = "Enter NO" }; static struct get_inkey_test get_inkey_data_611 = { .pdu = get_inkey_611, .pdu_len = sizeof(get_inkey_611), .qualifier = 0x00, .text = "", .icon_id = { .qualifier = STK_ICON_QUALIFIER_TYPE_SELF_EXPLANATORY, .id = 0x01 } }; static struct get_inkey_test get_inkey_data_621 = { .pdu = get_inkey_621, .pdu_len = sizeof(get_inkey_621), .qualifier = 0x00, .text = "", .icon_id = { .qualifier = STK_ICON_QUALIFIER_TYPE_NON_SELF_EXPLANATORY, .id = 0x01 } }; static struct get_inkey_test get_inkey_data_631 = { .pdu = get_inkey_631, .pdu_len = sizeof(get_inkey_631), .qualifier = 0x00, .text = "", .icon_id = { .qualifier = STK_ICON_QUALIFIER_TYPE_SELF_EXPLANATORY, .id = 0x02 } }; static struct get_inkey_test get_inkey_data_641 = { .pdu = get_inkey_641, .pdu_len = sizeof(get_inkey_641), .qualifier = 0x00, .text = "", .icon_id = { .qualifier = STK_ICON_QUALIFIER_TYPE_NON_SELF_EXPLANATORY, .id = 0x02 } }; static struct get_inkey_test get_inkey_data_711 = { .pdu = get_inkey_711, .pdu_len = sizeof(get_inkey_711), .qualifier = 0x80, .text = "Enter \"+\"" }; static struct get_inkey_test get_inkey_data_712 = { .pdu = get_inkey_712, .pdu_len = sizeof(get_inkey_712), .qualifier = 0x80, .text = "Enter \"+\"" }; static struct get_inkey_test get_inkey_data_811 = { .pdu = get_inkey_811, .pdu_len = sizeof(get_inkey_811), .qualifier = 0x00, .text = "Enter \"+\"", .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 10 } }; static struct get_inkey_test get_inkey_data_911 = { .pdu = get_inkey_911, .pdu_len = sizeof(get_inkey_911), .qualifier = 0x00, .text = "Enter \"+\"", .text_attr = { .len = 4, .attributes = { 0x00, 0x09, 0x00, 0xB4 } }, .html = "
Enter \"+\"
", }; static struct get_inkey_test get_inkey_data_912 = { .pdu = get_inkey_912, .pdu_len = sizeof(get_inkey_912), .qualifier = 0x00, .text = "Enter \"#\"" }; static struct get_inkey_test get_inkey_data_921 = { .pdu = get_inkey_921, .pdu_len = sizeof(get_inkey_921), .qualifier = 0x00, .text = "Enter \"+\"", .text_attr = { .len = 4, .attributes = { 0x00, 0x09, 0x01, 0xB4 } }, .html = "
Enter \"+\"" "
", }; static struct get_inkey_test get_inkey_data_922 = { .pdu = get_inkey_922, .pdu_len = sizeof(get_inkey_922), .qualifier = 0x00, .text = "Enter \"#\"" }; static struct get_inkey_test get_inkey_data_931 = { .pdu = get_inkey_931, .pdu_len = sizeof(get_inkey_931), .qualifier = 0x00, .text = "Enter \"+\"", .text_attr = { .len = 4, .attributes = { 0x00, 0x09, 0x02, 0xB4 } }, .html = "
Enter \"+\"" "
", }; static struct get_inkey_test get_inkey_data_932 = { .pdu = get_inkey_932, .pdu_len = sizeof(get_inkey_932), .qualifier = 0x00, .text = "Enter \"#\"" }; static struct get_inkey_test get_inkey_data_941 = { .pdu = get_inkey_941, .pdu_len = sizeof(get_inkey_941), .qualifier = 0x00, .text = "Enter \"+\"", .text_attr = { .len = 4, .attributes = { 0x00, 0x09, 0x04, 0xB4 } }, .html = "
Enter \"+\"" "
", }; static struct get_inkey_test get_inkey_data_942 = { .pdu = get_inkey_942, .pdu_len = sizeof(get_inkey_942), .qualifier = 0x00, .text = "Enter \"#\"", .text_attr = { .len = 4, .attributes = { 0x00, 0x09, 0x00, 0xB4 } }, .html = "
Enter \"#\"
", }; static struct get_inkey_test get_inkey_data_943 = { .pdu = get_inkey_943, .pdu_len = sizeof(get_inkey_943), .qualifier = 0x00, .text = "Enter \"#\"" }; static struct get_inkey_test get_inkey_data_951 = { .pdu = get_inkey_951, .pdu_len = sizeof(get_inkey_951), .qualifier = 0x00, .text = "Enter \"+\"", .text_attr = { .len = 4, .attributes = { 0x00, 0x09, 0x08, 0xB4 } }, .html = "
" "Enter \"+\"
", }; static struct get_inkey_test get_inkey_data_952 = { .pdu = get_inkey_952, .pdu_len = sizeof(get_inkey_952), .qualifier = 0x00, .text = "Enter \"#\"", .text_attr = { .len = 4, .attributes = { 0x00, 0x09, 0x00, 0xB4 } }, .html = "
Enter \"#\"
", }; static struct get_inkey_test get_inkey_data_953 = { .pdu = get_inkey_953, .pdu_len = sizeof(get_inkey_953), .qualifier = 0x00, .text = "Enter \"#\"" }; static struct get_inkey_test get_inkey_data_961 = { .pdu = get_inkey_961, .pdu_len = sizeof(get_inkey_961), .qualifier = 0x00, .text = "Enter \"+\"", .text_attr = { .len = 4, .attributes = { 0x00, 0x09, 0x10, 0xB4 } }, .html = "
Enter \"+\"" "
", }; static struct get_inkey_test get_inkey_data_962 = { .pdu = get_inkey_962, .pdu_len = sizeof(get_inkey_962), .qualifier = 0x00, .text = "Enter \"#\"", .text_attr = { .len = 4, .attributes = { 0x00, 0x09, 0x00, 0xB4 } }, .html = "
Enter \"#\"
", }; static struct get_inkey_test get_inkey_data_963 = { .pdu = get_inkey_963, .pdu_len = sizeof(get_inkey_963), .qualifier = 0x00, .text = "Enter \"#\"" }; static struct get_inkey_test get_inkey_data_971 = { .pdu = get_inkey_971, .pdu_len = sizeof(get_inkey_971), .qualifier = 0x00, .text = "Enter \"+\"", .text_attr = { .len = 4, .attributes = { 0x00, 0x09, 0x20, 0xB4 } }, .html = "
" "Enter \"+\"
", }; static struct get_inkey_test get_inkey_data_972 = { .pdu = get_inkey_972, .pdu_len = sizeof(get_inkey_972), .qualifier = 0x00, .text = "Enter \"#\"", .text_attr = { .len = 4, .attributes = { 0x00, 0x09, 0x00, 0xB4 } }, .html = "
Enter \"#\"
", }; static struct get_inkey_test get_inkey_data_973 = { .pdu = get_inkey_973, .pdu_len = sizeof(get_inkey_973), .qualifier = 0x00, .text = "Enter \"#\"" }; static struct get_inkey_test get_inkey_data_981 = { .pdu = get_inkey_981, .pdu_len = sizeof(get_inkey_981), .qualifier = 0x00, .text = "Enter \"+\"", .text_attr = { .len = 4, .attributes = { 0x00, 0x09, 0x40, 0xB4 } }, .html = "
Enter \"+\"
", }; static struct get_inkey_test get_inkey_data_982 = { .pdu = get_inkey_982, .pdu_len = sizeof(get_inkey_982), .qualifier = 0x00, .text = "Enter \"#\"", .text_attr = { .len = 4, .attributes = { 0x00, 0x09, 0x00, 0xB4 } }, .html = "
Enter \"#\"
", }; static struct get_inkey_test get_inkey_data_983 = { .pdu = get_inkey_983, .pdu_len = sizeof(get_inkey_983), .qualifier = 0x00, .text = "Enter \"#\"" }; static struct get_inkey_test get_inkey_data_991 = { .pdu = get_inkey_991, .pdu_len = sizeof(get_inkey_991), .qualifier = 0x00, .text = "Enter \"+\"", .text_attr = { .len = 4, .attributes = { 0x00, 0x09, 0x80, 0xB4 } }, .html = "
Enter \"+\"
", }; static struct get_inkey_test get_inkey_data_992a = { .pdu = get_inkey_992a, .pdu_len = sizeof(get_inkey_992a), .qualifier = 0x00, .text = "Enter \"#\"", .text_attr = { .len = 4, .attributes = { 0x00, 0x09, 0x00, 0xB4 } }, .html = "
Enter \"#\"
", }; static struct get_inkey_test get_inkey_data_992b = { .pdu = get_inkey_992b, .pdu_len = sizeof(get_inkey_992b), .qualifier = 0x00, .text = "Enter \"#\"" }; static struct get_inkey_test get_inkey_data_993 = { .pdu = get_inkey_993, .pdu_len = sizeof(get_inkey_993), .qualifier = 0x00, .text = "Enter \"#\"" }; static struct get_inkey_test get_inkey_data_9101 = { .pdu = get_inkey_9101, .pdu_len = sizeof(get_inkey_9101), .qualifier = 0x00, .text = "Enter \"+\"", .text_attr = { .len = 4, .attributes = { 0x00, 0x09, 0x00, 0xB4 } }, .html = "
Enter \"+\"
", }; static struct get_inkey_test get_inkey_data_9102 = { .pdu = get_inkey_9102, .pdu_len = sizeof(get_inkey_9102), .qualifier = 0x00, .text = "Enter \"#\"" }; static struct get_inkey_test get_inkey_data_1011 = { .pdu = get_inkey_1011, .pdu_len = sizeof(get_inkey_1011), .qualifier = 0x00, .text = "你好" }; static struct get_inkey_test get_inkey_data_1021 = { .pdu = get_inkey_1021, .pdu_len = sizeof(get_inkey_1021), .qualifier = 0x00, .text = "你好你好你好你好你好你好你好你好你好你好" "你好你好你好你好你好你好你好你好你好你好" "你好你好你好你好你好你好你好你好你好你好" "你好你好你好你好你好" }; static struct get_inkey_test get_inkey_data_1111 = { .pdu = get_inkey_1111, .pdu_len = sizeof(get_inkey_1111), .qualifier = 0x03, .text = "Enter" }; static struct get_inkey_test get_inkey_data_1211 = { .pdu = get_inkey_1211, .pdu_len = sizeof(get_inkey_1211), .qualifier = 0x00, .text = "ル" }; static struct get_inkey_test get_inkey_data_1221 = { .pdu = get_inkey_1221, .pdu_len = sizeof(get_inkey_1221), .qualifier = 0x00, .text = "ルルルルルルルルルルルルルルルルルルルル" "ルルルルルルルルルルルルルルルルルルルル" "ルルルルルルルルルルルルルルルルルルルル" "ルルルルルルルルルル" }; static struct get_inkey_test get_inkey_data_1311 = { .pdu = get_inkey_1311, .pdu_len = sizeof(get_inkey_1311), .qualifier = 0x03, .text = "Enter" }; /* Defined in TS 102.384 Section 27.22.4.2 */ static void test_get_inkey(gconstpointer data) { const struct get_inkey_test *test = data; struct stk_command *command; command = stk_command_new_from_pdu(test->pdu, test->pdu_len); g_assert(command); g_assert(command->status == STK_PARSE_RESULT_OK); g_assert(command->number == 1); g_assert(command->type == STK_COMMAND_TYPE_GET_INKEY); g_assert(command->qualifier == test->qualifier); g_assert(command->src == STK_DEVICE_IDENTITY_TYPE_UICC); g_assert(command->dst == STK_DEVICE_IDENTITY_TYPE_TERMINAL); g_assert(command->get_inkey.text); check_text(command->get_inkey.text, test->text); check_icon_id(&command->get_inkey.icon_id, &test->icon_id); check_duration(&command->get_inkey.duration, &test->duration); check_text_attr(&command->get_inkey.text_attr, &test->text_attr); check_text_attr_html(&command->get_inkey.text_attr, command->get_inkey.text, test->html); check_frame_id(&command->get_inkey.frame_id, &test->frame_id); stk_command_free(command); } struct get_input_test { const unsigned char *pdu; unsigned int pdu_len; unsigned char qualifier; char *text; struct stk_response_length resp_len; char *default_text; struct stk_icon_id icon_id; struct stk_text_attribute text_attr; struct stk_frame_id frame_id; char *html; }; static unsigned char get_input_711[] = { 0xD0, 0x1B, 0x81, 0x03, 0x01, 0x23, 0x80, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x0C, 0x04, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x31, 0x32, 0x33, 0x34, 0x35, 0x91, 0x02, 0x05, 0x05 }; static unsigned char get_input_812[] = { 0xD0, 0x1B, 0x81, 0x03, 0x01, 0x23, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x0C, 0x04, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x32, 0x32, 0x32, 0x32, 0x32, 0x91, 0x02, 0x05, 0x05 }; static unsigned char get_input_822[] = { 0xD0, 0x1B, 0x81, 0x03, 0x01, 0x23, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x0C, 0x04, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x32, 0x32, 0x32, 0x32, 0x32, 0x91, 0x02, 0x05, 0x05 }; static unsigned char get_input_832[] = { 0xD0, 0x1B, 0x81, 0x03, 0x01, 0x23, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x0C, 0x04, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x32, 0x32, 0x32, 0x32, 0x32, 0x91, 0x02, 0x05, 0x05 }; static unsigned char get_input_842[] = { 0xD0, 0x21, 0x81, 0x03, 0x01, 0x23, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x0C, 0x04, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x32, 0x32, 0x32, 0x32, 0x32, 0x91, 0x02, 0x05, 0x05, 0xD0, 0x04, 0x00, 0x0B, 0x00, 0xB4 }; static unsigned char get_input_843[] = { 0xD0, 0x1B, 0x81, 0x03, 0x01, 0x23, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x0C, 0x04, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x33, 0x33, 0x33, 0x33, 0x33, 0x91, 0x02, 0x05, 0x05 }; static unsigned char get_input_852[] = { 0xD0, 0x21, 0x81, 0x03, 0x01, 0x23, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x0C, 0x04, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x32, 0x32, 0x32, 0x32, 0x32, 0x91, 0x02, 0x05, 0x05, 0xD0, 0x04, 0x00, 0x0B, 0x00, 0xB4 }; static unsigned char get_input_853[] = { 0xD0, 0x1B, 0x81, 0x03, 0x01, 0x23, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x0C, 0x04, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x33, 0x33, 0x33, 0x33, 0x33, 0x91, 0x02, 0x05, 0x05 }; static unsigned char get_input_862[] = { 0xD0, 0x21, 0x81, 0x03, 0x01, 0x23, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x0C, 0x04, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x32, 0x32, 0x32, 0x32, 0x32, 0x91, 0x02, 0x05, 0x05, 0xD0, 0x04, 0x00, 0x0B, 0x00, 0xB4 }; static unsigned char get_input_863[] = { 0xD0, 0x1B, 0x81, 0x03, 0x01, 0x23, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x0C, 0x04, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x33, 0x33, 0x33, 0x33, 0x33, 0x91, 0x02, 0x05, 0x05 }; static unsigned char get_input_872[] = { 0xD0, 0x21, 0x81, 0x03, 0x01, 0x23, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x0C, 0x04, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x32, 0x32, 0x32, 0x32, 0x32, 0x91, 0x02, 0x05, 0x05, 0xD0, 0x04, 0x00, 0x0B, 0x00, 0xB4 }; static unsigned char get_input_873[] = { 0xD0, 0x1B, 0x81, 0x03, 0x01, 0x23, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x0C, 0x04, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x33, 0x33, 0x33, 0x33, 0x33, 0x91, 0x02, 0x05, 0x05 }; static unsigned char get_input_882[] = { 0xD0, 0x21, 0x81, 0x03, 0x01, 0x23, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x0C, 0x04, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x32, 0x32, 0x32, 0x32, 0x32, 0x91, 0x02, 0x05, 0x05, 0xD0, 0x04, 0x00, 0x0B, 0x00, 0xB4 }; static unsigned char get_input_883[] = { 0xD0, 0x1B, 0x81, 0x03, 0x01, 0x23, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x0C, 0x04, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x33, 0x33, 0x33, 0x33, 0x33, 0x91, 0x02, 0x05, 0x05 }; static unsigned char get_input_892[] = { 0xD0, 0x21, 0x81, 0x03, 0x01, 0x23, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x0C, 0x04, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x32, 0x32, 0x32, 0x32, 0x32, 0x91, 0x02, 0x05, 0x05, 0xD0, 0x04, 0x00, 0x0B, 0x00, 0xB4 }; static unsigned char get_input_893[] = { 0xD0, 0x1B, 0x81, 0x03, 0x01, 0x23, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x0C, 0x04, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x33, 0x33, 0x33, 0x33, 0x33, 0x91, 0x02, 0x05, 0x05 }; static unsigned char get_input_8102[] = { 0xD0, 0x1B, 0x81, 0x03, 0x01, 0x23, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x0C, 0x04, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x32, 0x32, 0x32, 0x32, 0x32, 0x91, 0x02, 0x05, 0x05 }; static struct get_input_test get_input_data_111 = { .pdu = get_input_111, .pdu_len = sizeof(get_input_111), .qualifier = 0x00, .text = "Enter 12345", .resp_len = { .min = 5, .max = 5 } }; static struct get_input_test get_input_data_121 = { .pdu = get_input_121, .pdu_len = sizeof(get_input_121), .qualifier = 0x08, .text = "Enter 67*#+", .resp_len = { .min = 5, .max = 5 } }; static struct get_input_test get_input_data_131 = { .pdu = get_input_131, .pdu_len = sizeof(get_input_131), .qualifier = 0x01, .text = "Enter AbCdE", .resp_len = { .min = 5, .max = 5 } }; static struct get_input_test get_input_data_141 = { .pdu = get_input_141, .pdu_len = sizeof(get_input_141), .qualifier = 0x04, .text = "Password 12345678", .resp_len = { .min = 4, .max = 8 } }; static struct get_input_test get_input_data_151 = { .pdu = get_input_151, .pdu_len = sizeof(get_input_151), .qualifier = 0x00, .text = "Enter 1..9,0..9,0(1)", .resp_len = { .min = 1, .max = 20 } }; static struct get_input_test get_input_data_161 = { .pdu = get_input_161, .pdu_len = sizeof(get_input_161), .qualifier = 0x00, .text = "", .resp_len = { .min = 0, .max = 8 } }; static struct get_input_test get_input_data_171 = { .pdu = get_input_171, .pdu_len = sizeof(get_input_171), .qualifier = 0x00, .text = "", .resp_len = { .min = 0, .max = 8 } }; static struct get_input_test get_input_data_181 = { .pdu = get_input_181, .pdu_len = sizeof(get_input_181), .qualifier = 0x00, .text = "***1111111111###***2222222222###***3333333333###" "***4444444444###***5555555555###***6666666666###" "***7777777777###***8888888888###***9999999999###" "***0000000000###", .resp_len = { .min = 160, .max = 160 } }; static struct get_input_test get_input_data_191 = { .pdu = get_input_191, .pdu_len = sizeof(get_input_191), .qualifier = 0x00, .text = "", .resp_len = { .min = 0, .max = 1 } }; static struct get_input_test get_input_data_1101 = { .pdu = get_input_1101, .pdu_len = sizeof(get_input_1101), .qualifier = 0x00, .text = "", .resp_len = { .min = 1, .max = 5 } }; static struct get_input_test get_input_data_211 = { .pdu = get_input_211, .pdu_len = sizeof(get_input_211), .qualifier = 0x00, .text = "", .resp_len = { .min = 0, .max = 10 } }; static struct get_input_test get_input_data_311 = { .pdu = get_input_311, .pdu_len = sizeof(get_input_311), .qualifier = 0x01, .text = "ЗДРАВСТВУЙТЕ", .resp_len = { .min = 5, .max = 5 } }; static struct get_input_test get_input_data_321 = { .pdu = get_input_321, .pdu_len = sizeof(get_input_321), .qualifier = 0x01, .text = "ЗДРАВСТВУЙТЕЗДРАВСТВУЙТЕ" "ЗДРАВСТВУЙТЕЗДРАВСТВУЙТЕ" "ЗДРАВСТВУЙТЕЗДРАВСТВУЙ", .resp_len = { .min = 5, .max = 5 } }; static struct get_input_test get_input_data_411 = { .pdu = get_input_411, .pdu_len = sizeof(get_input_411), .qualifier = 0x03, .text = "Enter Hello", .resp_len = { .min = 12, .max = 12 } }; static struct get_input_test get_input_data_421 = { .pdu = get_input_421, .pdu_len = sizeof(get_input_421), .qualifier = 0x03, .text = "Enter Hello", .resp_len = { .min = 5, .max = 0xFF } }; static struct get_input_test get_input_data_511 = { .pdu = get_input_511, .pdu_len = sizeof(get_input_511), .qualifier = 0x00, .text = "Enter 12345", .resp_len = { .min = 5, .max = 5 }, .default_text = "12345" }; static struct get_input_test get_input_data_521 = { .pdu = get_input_521, .pdu_len = sizeof(get_input_521), .qualifier = 0x00, .text = "Enter:", .resp_len = { .min = 160, .max = 160 }, .default_text = "***1111111111###***2222222222###***3333333333###" "***4444444444###***5555555555###***6666666666###" "***7777777777###***8888888888###***9999999999###" "***0000000000###" }; static struct get_input_test get_input_data_611 = { .pdu = get_input_611, .pdu_len = sizeof(get_input_611), .qualifier = 0x00, .text = "", .resp_len = { .min = 0, .max = 10 }, .icon_id = { .qualifier = STK_ICON_QUALIFIER_TYPE_SELF_EXPLANATORY, .id = 0x01 } }; static struct get_input_test get_input_data_621 = { .pdu = get_input_621, .pdu_len = sizeof(get_input_621), .qualifier = 0x00, .text = "", .resp_len = { .min = 0, .max = 10 }, .icon_id = { .qualifier = STK_ICON_QUALIFIER_TYPE_NON_SELF_EXPLANATORY, .id = 0x01 } }; static struct get_input_test get_input_data_631 = { .pdu = get_input_631, .pdu_len = sizeof(get_input_631), .qualifier = 0x00, .text = "", .resp_len = { .min = 0, .max = 10 }, .icon_id = { .qualifier = STK_ICON_QUALIFIER_TYPE_SELF_EXPLANATORY, .id = 0x02 } }; static struct get_input_test get_input_data_641 = { .pdu = get_input_641, .pdu_len = sizeof(get_input_641), .qualifier = 0x00, .text = "", .resp_len = { .min = 0, .max = 10 }, .icon_id = { .qualifier = STK_ICON_QUALIFIER_TYPE_NON_SELF_EXPLANATORY, .id = 0x02 } }; static struct get_input_test get_input_data_711 = { .pdu = get_input_711, .pdu_len = sizeof(get_input_711), .qualifier = 0x80, .text = "Enter 12345", .resp_len = { .min = 5, .max = 5 } }; static struct get_input_test get_input_data_811 = { .pdu = get_input_811, .pdu_len = sizeof(get_input_811), .qualifier = 0x00, .text = "Enter 12345", .resp_len = { .min = 5, .max = 5 }, .text_attr = { .len = 4, .attributes = { 0x00, 0x0B, 0x00, 0xB4 } }, .html = "
Enter 12345
" }; static struct get_input_test get_input_data_812 = { .pdu = get_input_812, .pdu_len = sizeof(get_input_812), .qualifier = 0x00, .text = "Enter 22222", .resp_len = { .min = 5, .max = 5 } }; static struct get_input_test get_input_data_821 = { .pdu = get_input_821, .pdu_len = sizeof(get_input_821), .qualifier = 0x00, .text = "Enter 12345", .resp_len = { .min = 5, .max = 5 }, .text_attr = { .len = 4, .attributes = { 0x00, 0x0B, 0x01, 0xB4 } }, .html = "
Enter 12345" "
", }; static struct get_input_test get_input_data_822 = { .pdu = get_input_822, .pdu_len = sizeof(get_input_822), .qualifier = 0x00, .text = "Enter 22222", .resp_len = { .min = 5, .max = 5 } }; static struct get_input_test get_input_data_831 = { .pdu = get_input_831, .pdu_len = sizeof(get_input_831), .qualifier = 0x00, .text = "Enter 12345", .resp_len = { .min = 5, .max = 5 }, .text_attr = { .len = 4, .attributes = { 0x00, 0x0B, 0x02, 0xB4 } }, .html = "
Enter 12345" "
", }; static struct get_input_test get_input_data_832 = { .pdu = get_input_832, .pdu_len = sizeof(get_input_832), .qualifier = 0x00, .text = "Enter 22222", .resp_len = { .min = 5, .max = 5 } }; static struct get_input_test get_input_data_841 = { .pdu = get_input_841, .pdu_len = sizeof(get_input_841), .qualifier = 0x00, .text = "Enter 12345", .resp_len = { .min = 5, .max = 5 }, .text_attr = { .len = 4, .attributes = { 0x00, 0x0B, 0x04, 0xB4 } }, .html = "
Enter 12345" "
", }; static struct get_input_test get_input_data_842 = { .pdu = get_input_842, .pdu_len = sizeof(get_input_842), .qualifier = 0x00, .text = "Enter 22222", .resp_len = { .min = 5, .max = 5 }, .text_attr = { .len = 4, .attributes = { 0x00, 0x0B, 0x00, 0xB4 } }, .html = "
Enter 22222
" }; static struct get_input_test get_input_data_843 = { .pdu = get_input_843, .pdu_len = sizeof(get_input_843), .qualifier = 0x00, .text = "Enter 33333", .resp_len = { .min = 5, .max = 5 } }; static struct get_input_test get_input_data_851 = { .pdu = get_input_851, .pdu_len = sizeof(get_input_851), .qualifier = 0x00, .text = "Enter 12345", .resp_len = { .min = 5, .max = 5 }, .text_attr = { .len = 4, .attributes = { 0x00, 0x0B, 0x08, 0xB4 } }, .html = "
Enter " "12345
", }; static struct get_input_test get_input_data_852 = { .pdu = get_input_852, .pdu_len = sizeof(get_input_852), .qualifier = 0x00, .text = "Enter 22222", .resp_len = { .min = 5, .max = 5 }, .text_attr = { .len = 4, .attributes = { 0x00, 0x0B, 0x00, 0xB4 } }, .html = "
Enter 22222
", }; static struct get_input_test get_input_data_853 = { .pdu = get_input_853, .pdu_len = sizeof(get_input_853), .qualifier = 0x00, .text = "Enter 33333", .resp_len = { .min = 5, .max = 5 } }; static struct get_input_test get_input_data_861 = { .pdu = get_input_861, .pdu_len = sizeof(get_input_861), .qualifier = 0x00, .text = "Enter 12345", .resp_len = { .min = 5, .max = 5 }, .text_attr = { .len = 4, .attributes = { 0x00, 0x0B, 0x10, 0xB4 } }, .html = "
Enter " "12345
" }; static struct get_input_test get_input_data_862 = { .pdu = get_input_862, .pdu_len = sizeof(get_input_862), .qualifier = 0x00, .text = "Enter 22222", .resp_len = { .min = 5, .max = 5 }, .text_attr = { .len = 4, .attributes = { 0x00, 0x0B, 0x00, 0xB4 } }, .html = "
Enter 22222
", }; static struct get_input_test get_input_data_863 = { .pdu = get_input_863, .pdu_len = sizeof(get_input_863), .qualifier = 0x00, .text = "Enter 33333", .resp_len = { .min = 5, .max = 5 } }; static struct get_input_test get_input_data_871 = { .pdu = get_input_871, .pdu_len = sizeof(get_input_871), .qualifier = 0x00, .text = "Enter 12345", .resp_len = { .min = 5, .max = 5 }, .text_attr = { .len = 4, .attributes = { 0x00, 0x0B, 0x20, 0xB4 } }, .html = "
Enter " "12345
", }; static struct get_input_test get_input_data_872 = { .pdu = get_input_872, .pdu_len = sizeof(get_input_872), .qualifier = 0x00, .text = "Enter 22222", .resp_len = { .min = 5, .max = 5 }, .text_attr = { .len = 4, .attributes = { 0x00, 0x0B, 0x00, 0xB4 } }, .html = "
Enter 22222
", }; static struct get_input_test get_input_data_873 = { .pdu = get_input_873, .pdu_len = sizeof(get_input_873), .qualifier = 0x00, .text = "Enter 33333", .resp_len = { .min = 5, .max = 5 } }; static struct get_input_test get_input_data_881 = { .pdu = get_input_881, .pdu_len = sizeof(get_input_881), .qualifier = 0x00, .text = "Enter 12345", .resp_len = { .min = 5, .max = 5 }, .text_attr = { .len = 4, .attributes = { 0x00, 0x0B, 0x40, 0xB4 } }, .html = "
Enter 12345
", }; static struct get_input_test get_input_data_882 = { .pdu = get_input_882, .pdu_len = sizeof(get_input_882), .qualifier = 0x00, .text = "Enter 22222", .resp_len = { .min = 5, .max = 5 }, .text_attr = { .len = 4, .attributes = { 0x00, 0x0B, 0x00, 0xB4 } }, .html = "
Enter 22222
", }; static struct get_input_test get_input_data_883 = { .pdu = get_input_883, .pdu_len = sizeof(get_input_883), .qualifier = 0x00, .text = "Enter 33333", .resp_len = { .min = 5, .max = 5 } }; static struct get_input_test get_input_data_891 = { .pdu = get_input_891, .pdu_len = sizeof(get_input_891), .qualifier = 0x00, .text = "Enter 12345", .resp_len = { .min = 5, .max = 5 }, .text_attr = { .len = 4, .attributes = { 0x00, 0x0B, 0x80, 0xB4 } }, .html = "
Enter 12345
", }; static struct get_input_test get_input_data_892 = { .pdu = get_input_892, .pdu_len = sizeof(get_input_892), .qualifier = 0x00, .text = "Enter 22222", .resp_len = { .min = 5, .max = 5 }, .text_attr = { .len = 4, .attributes = { 0x00, 0x0B, 0x00, 0xB4 } }, .html = "
Enter 22222
", }; static struct get_input_test get_input_data_893 = { .pdu = get_input_893, .pdu_len = sizeof(get_input_893), .qualifier = 0x00, .text = "Enter 33333", .resp_len = { .min = 5, .max = 5 } }; static struct get_input_test get_input_data_8101 = { .pdu = get_input_8101, .pdu_len = sizeof(get_input_8101), .qualifier = 0x00, .text = "Enter 12345", .resp_len = { .min = 5, .max = 5 }, .text_attr = { .len = 4, .attributes = { 0x00, 0x0B, 0x00, 0xB4 } }, .html = "
Enter 12345
", }; static struct get_input_test get_input_data_8102 = { .pdu = get_input_8102, .pdu_len = sizeof(get_input_8102), .qualifier = 0x00, .text = "Enter 22222", .resp_len = { .min = 5, .max = 5 } }; static struct get_input_test get_input_data_911 = { .pdu = get_input_911, .pdu_len = sizeof(get_input_911), .qualifier = 0x01, .text = "你好", .resp_len = { .min = 5, .max = 5 } }; static struct get_input_test get_input_data_921 = { .pdu = get_input_921, .pdu_len = sizeof(get_input_921), .qualifier = 0x01, .text = "你好你好你好你好你好你好你好你好你好你好" "你好你好你好你好你好你好你好你好你好你好" "你好你好你好你好你好你好你好你好你好你好" "你好你好你好你好你好", .resp_len = { .min = 5, .max = 5 } }; static struct get_input_test get_input_data_1011 = { .pdu = get_input_1011, .pdu_len = sizeof(get_input_1011), .qualifier = 0x03, .text = "Enter Hello", .resp_len = { .min = 2, .max = 2 } }; static struct get_input_test get_input_data_1021 = { .pdu = get_input_1021, .pdu_len = sizeof(get_input_1021), .qualifier = 0x03, .text = "Enter Hello", .resp_len = { .min = 5, .max = 0xFF } }; static struct get_input_test get_input_data_1111 = { .pdu = get_input_1111, .pdu_len = sizeof(get_input_1111), .qualifier = 0x01, .text = "ル", .resp_len = { .min = 5, .max = 5 } }; static struct get_input_test get_input_data_1121 = { .pdu = get_input_1121, .pdu_len = sizeof(get_input_1121), .qualifier = 0x01, .text = "ルルルルルルルルルルルルルルルルルルルル" "ルルルルルルルルルルルルルルルルルルルル" "ルルルルルルルルルルルルルルルルルルルル" "ルルルルルルルルルル", .resp_len = { .min = 5, .max = 5 } }; static struct get_input_test get_input_data_1211 = { .pdu = get_input_1211, .pdu_len = sizeof(get_input_1211), .qualifier = 0x03, .text = "Enter Hello", .resp_len = { .min = 2, .max = 2 } }; static struct get_input_test get_input_data_1221 = { .pdu = get_input_1221, .pdu_len = sizeof(get_input_1221), .qualifier = 0x03, .text = "Enter Hello", .resp_len = { .min = 5, .max = 0xFF } }; /* Defined in TS 102.384 Section 27.22.4.3 */ static void test_get_input(gconstpointer data) { const struct get_input_test *test = data; struct stk_command *command; command = stk_command_new_from_pdu(test->pdu, test->pdu_len); g_assert(command); g_assert(command->status == STK_PARSE_RESULT_OK); g_assert(command->number == 1); g_assert(command->type == STK_COMMAND_TYPE_GET_INPUT); 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->text) g_assert(command->get_input.text); check_text(command->get_input.text, test->text); check_response_length(&command->get_input.resp_len, &test->resp_len); check_default_text(command->get_input.default_text, test->default_text); check_icon_id(&command->get_input.icon_id, &test->icon_id); check_text_attr(&command->get_input.text_attr, &test->text_attr); check_text_attr_html(&command->get_input.text_attr, command->get_input.text, test->html); check_frame_id(&command->get_input.frame_id, &test->frame_id); stk_command_free(command); } struct more_time_test { const unsigned char *pdu; unsigned int pdu_len; unsigned char qualifier; }; static struct more_time_test more_time_data_111 = { .pdu = more_time_111, .pdu_len = sizeof(more_time_111), .qualifier = 0x00, }; /* Defined in TS 102.384 Section 27.22.4.4 */ static void test_more_time(gconstpointer data) { const struct get_input_test *test = data; struct stk_command *command; command = stk_command_new_from_pdu(test->pdu, test->pdu_len); g_assert(command); g_assert(command->status == STK_PARSE_RESULT_OK); g_assert(command->number == 1); g_assert(command->type == STK_COMMAND_TYPE_MORE_TIME); g_assert(command->qualifier == test->qualifier); g_assert(command->src == STK_DEVICE_IDENTITY_TYPE_UICC); g_assert(command->dst == STK_DEVICE_IDENTITY_TYPE_TERMINAL); stk_command_free(command); } struct play_tone_test { const unsigned char *pdu; unsigned int pdu_len; unsigned char qualifier; char *alpha_id; unsigned char tone; struct stk_duration duration; struct stk_icon_id icon_id; struct stk_text_attribute text_attr; struct stk_frame_id frame_id; char *html; }; static struct play_tone_test play_tone_data_111 = { .pdu = play_tone_111, .pdu_len = sizeof(play_tone_111), .qualifier = 0x00, .alpha_id = "Dial Tone", .tone = STK_TONE_TYPE_DIAL_TONE, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 5 } }; static struct play_tone_test play_tone_data_112 = { .pdu = play_tone_112, .pdu_len = sizeof(play_tone_112), .qualifier = 0x00, .alpha_id = "Sub. Busy", .tone = STK_TONE_TYPE_BUSY_TONE, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 5 } }; static struct play_tone_test play_tone_data_113 = { .pdu = play_tone_113, .pdu_len = sizeof(play_tone_113), .qualifier = 0x00, .alpha_id = "Congestion", .tone = STK_TONE_TYPE_CONGESTION, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 5 } }; static struct play_tone_test play_tone_data_114 = { .pdu = play_tone_114, .pdu_len = sizeof(play_tone_114), .qualifier = 0x00, .alpha_id = "RP Ack", .tone = STK_TONE_TYPE_RP_ACK, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 5 } }; static struct play_tone_test play_tone_data_115 = { .pdu = play_tone_115, .pdu_len = sizeof(play_tone_115), .qualifier = 0x00, .alpha_id = "No RP", .tone = STK_TONE_TYPE_CALL_DROPPED, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 5 } }; static struct play_tone_test play_tone_data_116 = { .pdu = play_tone_116, .pdu_len = sizeof(play_tone_116), .qualifier = 0x00, .alpha_id = "Spec Info", .tone = STK_TONE_TYPE_ERROR, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 5 } }; static struct play_tone_test play_tone_data_117 = { .pdu = play_tone_117, .pdu_len = sizeof(play_tone_117), .qualifier = 0x00, .alpha_id = "Call Wait", .tone = STK_TONE_TYPE_CALL_WAITING, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 5 } }; static struct play_tone_test play_tone_data_118 = { .pdu = play_tone_118, .pdu_len = sizeof(play_tone_118), .qualifier = 0x00, .alpha_id = "Ring Tone", .tone = STK_TONE_TYPE_RINGING, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 5 } }; static struct play_tone_test play_tone_data_119 = { .pdu = play_tone_119, .pdu_len = sizeof(play_tone_119), .qualifier = 0x00, .alpha_id = "This command instructs the ME to play an audio tone. " "Upon receiving this command, the ME shall check " "if it is currently in, or in the process of setting " "up (SET-UP message sent to the network, see " "GSM\"04.08\"(8)), a speech call. - If the ME I" }; static struct play_tone_test play_tone_data_1110 = { .pdu = play_tone_1110, .pdu_len = sizeof(play_tone_1110), .qualifier = 0x00, .alpha_id = "Beep", .tone = STK_TONE_TYPE_GENERAL_BEEP, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 1 } }; static struct play_tone_test play_tone_data_1111 = { .pdu = play_tone_1111, .pdu_len = sizeof(play_tone_1111), .qualifier = 0x00, .alpha_id = "Positive", .tone = STK_TONE_TYPE_POSITIVE_ACK, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 1 } }; static struct play_tone_test play_tone_data_1112 = { .pdu = play_tone_1112, .pdu_len = sizeof(play_tone_1112), .qualifier = 0x00, .alpha_id = "Negative", .tone = STK_TONE_TYPE_NEGATIVE_ACK, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 1 } }; static struct play_tone_test play_tone_data_1113 = { .pdu = play_tone_1113, .pdu_len = sizeof(play_tone_1113), .qualifier = 0x00, .alpha_id = "Quick", .tone = STK_TONE_TYPE_GENERAL_BEEP, .duration = { .unit = STK_DURATION_TYPE_SECOND_TENTHS, .interval = 2 } }; static struct play_tone_test play_tone_data_1114 = { .pdu = play_tone_1114, .pdu_len = sizeof(play_tone_1114), .qualifier = 0x00, .alpha_id = "", .tone = STK_TONE_TYPE_ERROR, .duration = { .unit = STK_DURATION_TYPE_MINUTES, .interval = 1 } }; static struct play_tone_test play_tone_data_1115 = { .pdu = play_tone_1115, .pdu_len = sizeof(play_tone_1115), .qualifier = 0x00 }; static struct play_tone_test play_tone_data_211 = { .pdu = play_tone_211, .pdu_len = sizeof(play_tone_211), .qualifier = 0x00, .alpha_id = "ЗДРАВСТВУЙТЕ", .tone = STK_TONE_TYPE_POSITIVE_ACK, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 1 } }; static struct play_tone_test play_tone_data_212 = { .pdu = play_tone_212, .pdu_len = sizeof(play_tone_212), .qualifier = 0x00, .alpha_id = "ЗДРАВСТВУЙТЕ", .tone = STK_TONE_TYPE_POSITIVE_ACK, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 1 } }; static struct play_tone_test play_tone_data_213 = { .pdu = play_tone_213, .pdu_len = sizeof(play_tone_213), .qualifier = 0x00, .alpha_id = "ЗДРАВСТВУЙТЕ", .tone = STK_TONE_TYPE_POSITIVE_ACK, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 1 } }; static struct play_tone_test play_tone_data_311 = { .pdu = play_tone_311, .pdu_len = sizeof(play_tone_311), .qualifier = 0x00, .alpha_id = "", .tone = STK_TONE_TYPE_POSITIVE_ACK, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 1 }, .icon_id = { .qualifier = STK_ICON_QUALIFIER_TYPE_SELF_EXPLANATORY, .id = 0x01 } }; static struct play_tone_test play_tone_data_321 = { .pdu = play_tone_321, .pdu_len = sizeof(play_tone_321), .qualifier = 0x00, .alpha_id = "", .tone = STK_TONE_TYPE_POSITIVE_ACK, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 1 }, .icon_id = { .qualifier = STK_ICON_QUALIFIER_TYPE_NON_SELF_EXPLANATORY, .id = 0x01 } }; static struct play_tone_test play_tone_data_331 = { .pdu = play_tone_331, .pdu_len = sizeof(play_tone_331), .qualifier = 0x00, .alpha_id = "", .tone = STK_TONE_TYPE_POSITIVE_ACK, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 1 }, .icon_id = { .qualifier = STK_ICON_QUALIFIER_TYPE_SELF_EXPLANATORY, .id = 0x02 } }; static struct play_tone_test play_tone_data_341 = { .pdu = play_tone_341, .pdu_len = sizeof(play_tone_341), .qualifier = 0x00, .alpha_id = "", .tone = STK_TONE_TYPE_POSITIVE_ACK, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 1 }, .icon_id = { .qualifier = STK_ICON_QUALIFIER_TYPE_NON_SELF_EXPLANATORY, .id = 0x02 } }; static struct play_tone_test play_tone_data_411 = { .pdu = play_tone_411, .pdu_len = sizeof(play_tone_411), .qualifier = 0x00, .alpha_id = "Text Attribute 1", .tone = STK_TONE_TYPE_POSITIVE_ACK, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 1 }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } }, .html = "
Text Attribute 1" "
", }; static struct play_tone_test play_tone_data_412 = { .pdu = play_tone_412, .pdu_len = sizeof(play_tone_412), .qualifier = 0x00, .alpha_id = "Text Attribute 2", .tone = STK_TONE_TYPE_POSITIVE_ACK, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 1 } }; static struct play_tone_test play_tone_data_421 = { .pdu = play_tone_421, .pdu_len = sizeof(play_tone_421), .qualifier = 0x00, .alpha_id = "Text Attribute 1", .tone = STK_TONE_TYPE_POSITIVE_ACK, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 1 }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x01, 0xB4 } }, .html = "
Text Attribute 1" "
", }; static struct play_tone_test play_tone_data_422 = { .pdu = play_tone_422, .pdu_len = sizeof(play_tone_422), .qualifier = 0x00, .alpha_id = "Text Attribute 2", .tone = STK_TONE_TYPE_POSITIVE_ACK, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 1 } }; static struct play_tone_test play_tone_data_431 = { .pdu = play_tone_431, .pdu_len = sizeof(play_tone_431), .qualifier = 0x00, .alpha_id = "Text Attribute 1", .tone = STK_TONE_TYPE_POSITIVE_ACK, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 1 }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x02, 0xB4 } }, .html = "
Text Attribute 1" "
", }; static struct play_tone_test play_tone_data_432 = { .pdu = play_tone_432, .pdu_len = sizeof(play_tone_432), .qualifier = 0x00, .alpha_id = "Text Attribute 2", .tone = STK_TONE_TYPE_POSITIVE_ACK, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 1 } }; static struct play_tone_test play_tone_data_441 = { .pdu = play_tone_441, .pdu_len = sizeof(play_tone_441), .qualifier = 0x00, .alpha_id = "Text Attribute 1", .tone = STK_TONE_TYPE_POSITIVE_ACK, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 1 }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x04, 0xB4 } }, .html = "
" "Text Attribute 1
", }; static struct play_tone_test play_tone_data_442 = { .pdu = play_tone_442, .pdu_len = sizeof(play_tone_442), .qualifier = 0x00, .alpha_id = "Text Attribute 2", .tone = STK_TONE_TYPE_POSITIVE_ACK, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 1 }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } }, .html = "
Text Attribute 2" "
", }; static struct play_tone_test play_tone_data_443 = { .pdu = play_tone_443, .pdu_len = sizeof(play_tone_443), .qualifier = 0x00, .alpha_id = "Text Attribute 3", .tone = STK_TONE_TYPE_POSITIVE_ACK, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 1 } }; static struct play_tone_test play_tone_data_451 = { .pdu = play_tone_451, .pdu_len = sizeof(play_tone_451), .qualifier = 0x00, .alpha_id = "Text Attribute 1", .tone = STK_TONE_TYPE_POSITIVE_ACK, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 1 }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x08, 0xB4 } }, .html = "
" "Text Attribute 1
", }; static struct play_tone_test play_tone_data_452 = { .pdu = play_tone_452, .pdu_len = sizeof(play_tone_452), .qualifier = 0x00, .alpha_id = "Text Attribute 2", .tone = STK_TONE_TYPE_POSITIVE_ACK, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 1 }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } }, .html = "
Text Attribute 2" "
", }; static struct play_tone_test play_tone_data_453 = { .pdu = play_tone_453, .pdu_len = sizeof(play_tone_453), .qualifier = 0x00, .alpha_id = "Text Attribute 3", .tone = STK_TONE_TYPE_POSITIVE_ACK, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 1 } }; static struct play_tone_test play_tone_data_461 = { .pdu = play_tone_461, .pdu_len = sizeof(play_tone_461), .qualifier = 0x00, .alpha_id = "Text Attribute 1", .tone = STK_TONE_TYPE_POSITIVE_ACK, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 1 }, .text_attr = { .len = 4, .attributes = { 0x00, 0x0E, 0x10, 0xB4 } }, .html = "
" "Text Attribute
1" }; static struct play_tone_test play_tone_data_462 = { .pdu = play_tone_462, .pdu_len = sizeof(play_tone_462), .qualifier = 0x00, .alpha_id = "Text Attribute 2", .tone = STK_TONE_TYPE_POSITIVE_ACK, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 1 }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } }, .html = "
Text Attribute 2" "
", }; static struct play_tone_test play_tone_data_463 = { .pdu = play_tone_463, .pdu_len = sizeof(play_tone_463), .qualifier = 0x00, .alpha_id = "Text Attribute 3", .tone = STK_TONE_TYPE_POSITIVE_ACK, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 1 } }; static struct play_tone_test play_tone_data_471 = { .pdu = play_tone_471, .pdu_len = sizeof(play_tone_471), .qualifier = 0x00, .alpha_id = "Text Attribute 1", .tone = STK_TONE_TYPE_POSITIVE_ACK, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 1 }, .text_attr = { .len = 4, .attributes = { 0x00, 0x0E, 0x20, 0xB4 } }, .html = "
" "Text Attribute
1", }; static struct play_tone_test play_tone_data_472 = { .pdu = play_tone_472, .pdu_len = sizeof(play_tone_472), .qualifier = 0x00, .alpha_id = "Text Attribute 2", .tone = STK_TONE_TYPE_POSITIVE_ACK, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 1 }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } }, .html = "
Text Attribute 2" "
", }; static struct play_tone_test play_tone_data_473 = { .pdu = play_tone_473, .pdu_len = sizeof(play_tone_473), .qualifier = 0x00, .alpha_id = "Text Attribute 3", .tone = STK_TONE_TYPE_POSITIVE_ACK, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 1 } }; static struct play_tone_test play_tone_data_481 = { .pdu = play_tone_481, .pdu_len = sizeof(play_tone_481), .qualifier = 0x00, .alpha_id = "Text Attribute 1", .tone = STK_TONE_TYPE_POSITIVE_ACK, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 1 }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x40, 0xB4 } }, .html = "
Text Attribute 1
", }; static struct play_tone_test play_tone_data_482 = { .pdu = play_tone_482, .pdu_len = sizeof(play_tone_482), .qualifier = 0x00, .alpha_id = "Text Attribute 2", .tone = STK_TONE_TYPE_POSITIVE_ACK, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 1 }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } }, .html = "
Text Attribute 2" "
", }; static struct play_tone_test play_tone_data_483 = { .pdu = play_tone_483, .pdu_len = sizeof(play_tone_483), .qualifier = 0x00, .alpha_id = "Text Attribute 3", .tone = STK_TONE_TYPE_POSITIVE_ACK, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 1 } }; static struct play_tone_test play_tone_data_491 = { .pdu = play_tone_491, .pdu_len = sizeof(play_tone_491), .qualifier = 0x00, .alpha_id = "Text Attribute 1", .tone = STK_TONE_TYPE_POSITIVE_ACK, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 1 }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x80, 0xB4 } }, .html = "
Text Attribute 1
", }; static struct play_tone_test play_tone_data_492 = { .pdu = play_tone_492, .pdu_len = sizeof(play_tone_492), .qualifier = 0x00, .alpha_id = "Text Attribute 2", .tone = STK_TONE_TYPE_POSITIVE_ACK, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 1 }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } }, .html = "
Text Attribute 2" "
", }; static struct play_tone_test play_tone_data_493 = { .pdu = play_tone_493, .pdu_len = sizeof(play_tone_493), .qualifier = 0x00, .alpha_id = "Text Attribute 3", .tone = STK_TONE_TYPE_POSITIVE_ACK, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 1 } }; static struct play_tone_test play_tone_data_4101 = { .pdu = play_tone_4101, .pdu_len = sizeof(play_tone_4101), .qualifier = 0x00, .alpha_id = "Text Attribute 1", .tone = STK_TONE_TYPE_POSITIVE_ACK, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 1 }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } }, .html = "
Text Attribute 1" "
", }; static struct play_tone_test play_tone_data_4102 = { .pdu = play_tone_4102, .pdu_len = sizeof(play_tone_4102), .qualifier = 0x00, .alpha_id = "Text Attribute 2", .tone = STK_TONE_TYPE_POSITIVE_ACK, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 1 } }; static struct play_tone_test play_tone_data_511 = { .pdu = play_tone_511, .pdu_len = sizeof(play_tone_511), .qualifier = 0x00, .alpha_id = "中一", .tone = STK_TONE_TYPE_POSITIVE_ACK, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 1 } }; static struct play_tone_test play_tone_data_512 = { .pdu = play_tone_512, .pdu_len = sizeof(play_tone_512), .qualifier = 0x00, .alpha_id = "中一", .tone = STK_TONE_TYPE_POSITIVE_ACK, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 1 } }; static struct play_tone_test play_tone_data_513 = { .pdu = play_tone_513, .pdu_len = sizeof(play_tone_513), .qualifier = 0x00, .alpha_id = "中一", .tone = STK_TONE_TYPE_POSITIVE_ACK, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 1 } }; static struct play_tone_test play_tone_data_611 = { .pdu = play_tone_611, .pdu_len = sizeof(play_tone_611), .qualifier = 0x00, .alpha_id = "80ル0", .tone = STK_TONE_TYPE_DIAL_TONE, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 5 } }; static struct play_tone_test play_tone_data_612 = { .pdu = play_tone_612, .pdu_len = sizeof(play_tone_612), .qualifier = 0x00, .alpha_id = "81ル1", .tone = STK_TONE_TYPE_DIAL_TONE, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 5 } }; static struct play_tone_test play_tone_data_613 = { .pdu = play_tone_613, .pdu_len = sizeof(play_tone_613), .qualifier = 0x00, .alpha_id = "82ル2", .tone = STK_TONE_TYPE_DIAL_TONE, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 5 } }; /* Defined in TS 102.384 Section 27.22.4.5 */ static void test_play_tone(gconstpointer data) { const struct play_tone_test *test = data; struct stk_command *command; command = stk_command_new_from_pdu(test->pdu, test->pdu_len); g_assert(command); g_assert(command->status == STK_PARSE_RESULT_OK); g_assert(command->number == 1); g_assert(command->type == STK_COMMAND_TYPE_PLAY_TONE); g_assert(command->qualifier == test->qualifier); g_assert(command->src == STK_DEVICE_IDENTITY_TYPE_UICC); g_assert(command->dst == STK_DEVICE_IDENTITY_TYPE_EARPIECE); check_alpha_id(command->play_tone.alpha_id, test->alpha_id); check_tone(command->play_tone.tone, test->tone); check_duration(&command->play_tone.duration, &test->duration); check_icon_id(&command->play_tone.icon_id, &test->icon_id); check_text_attr(&command->play_tone.text_attr, &test->text_attr); check_text_attr_html(&command->play_tone.text_attr, command->play_tone.alpha_id, test->html); check_frame_id(&command->play_tone.frame_id, &test->frame_id); stk_command_free(command); } struct poll_interval_test { const unsigned char *pdu; unsigned int pdu_len; unsigned char qualifier; struct stk_duration duration; }; static struct poll_interval_test poll_interval_data_111 = { .pdu = poll_interval_111, .pdu_len = sizeof(poll_interval_111), .qualifier = 0x00, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 20 } }; /* Defined in TS 102.384 Section 27.22.4.6 */ static void test_poll_interval(gconstpointer data) { const struct poll_interval_test *test = data; struct stk_command *command; command = stk_command_new_from_pdu(test->pdu, test->pdu_len); g_assert(command); g_assert(command->status == STK_PARSE_RESULT_OK); g_assert(command->number == 1); g_assert(command->type == STK_COMMAND_TYPE_POLL_INTERVAL); g_assert(command->qualifier == test->qualifier); g_assert(command->src == STK_DEVICE_IDENTITY_TYPE_UICC); g_assert(command->dst == STK_DEVICE_IDENTITY_TYPE_TERMINAL); check_duration(&command->poll_interval.duration, &test->duration); 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; char *html; }; 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 }; /* Negative case: No item is present */ static unsigned char setup_menu_neg_1[] = { 0xD0, 0x0B, 0x81, 0x03, 0x01, 0x25, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x00 }; /* Negative case: Two empty items*/ static unsigned char setup_menu_neg_2[] = { 0xD0, 0x0F, 0x81, 0x03, 0x01, 0x25, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x00, 0x8F, 0x00, 0x8F, 0x00 }; /* Negative case: valid item + empty item */ static unsigned char setup_menu_neg_3[] = { 0xD0, 0x16, 0x81, 0x03, 0x01, 0x25, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x00, 0x8F, 0x07, 0x01, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x31, 0x8F, 0x00 }; /* Negative case: empty item + valid item */ static unsigned char setup_menu_neg_4[] = { 0xD0, 0x16, 0x81, 0x03, 0x01, 0x25, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x00, 0x8F, 0x00, 0x8F, 0x07, 0x01, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x31 }; 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 = { { .id = 1, .text = "Item 1" }, { .id = 2, .text = "Item 2" }, { .id = 3, .text = "Item 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 = { { .id = 0x11, .text = "One" }, { .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, .alpha_id = "" }; 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 = { { .id = 0x50, .text = "Zero" }, { .id = 0x4F, .text = "One" }, { .id = 0x4E, .text = "Two" }, { .id = 0x4D, .text = "Three" }, { .id = 0x4C, .text = "Four" }, { .id = 0x4B, .text = "Five" }, { .id = 0x4A, .text = "Six" }, { .id = 0x49, .text = "Seven" }, { .id = 0x48, .text = "Eight" }, { .id = 0x47, .text = "Nine" }, { .id = 0x46, .text = "Alpha" }, { .id = 0x45, .text = "Bravo" }, { .id = 0x44, .text = "Charlie" }, { .id = 0x43, .text = "Delta" }, { .id = 0x42, .text = "Echo" }, { .id = 0x41, .text = "Fox-trot" }, { .id = 0x40, .text = "Black" }, { .id = 0x3F, .text = "Brown" }, { .id = 0x3E, .text = "Red" }, { .id = 0x3D, .text = "Orange" }, { .id = 0x3C, .text = "Yellow" }, { .id = 0x3B, .text = "Green" }, { .id = 0x3A, .text = "Blue" }, { .id = 0x39, .text = "Violet" }, { .id = 0x38, .text = "Grey" }, { .id = 0x37, .text = "White" }, { .id = 0x36, .text = "milli" }, { .id = 0x35, .text = "micro" }, { .id = 0x34, .text = "nano" }, { .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 = { { .id = 0xFF, .text = "1 Call Forward Unconditional" }, { .id = 0xFE, .text = "2 Call Forward On User Busy" }, { .id = 0xFD, .text = "3 Call Forward On No Reply" }, { .id = 0xFC, .text = "4 Call Forward On User Not Reachable" }, { .id = 0xFB, .text = "5 Barring Of All Outgoing Calls" }, { .id = 0xFA, .text = "6 Barring Of All Outgoing Int Calls" }, { .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 = { { .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 = { { .id = 1, .text = "Item 1" }, { .id = 2, .text = "Item 2" }, { .id = 3, .text = "Item 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 = { { .id = 1, .text = "Item 1" }, { .id = 2, .text = "Item 2" }, { .id = 3, .text = "Item 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 = { { .id = 1, .text = "Item 1" }, { .id = 2, .text = "Item 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 = { { .id = 1, .text = "Item 1" }, { .id = 2, .text = "Item 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 = { { .id = 1, .text = "Item 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 = { { .id = 1, .text = "Item 1" }, { .id = 2, .text = "Item 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 } }, .html = "
Toolkit Menu 1" "
", }; 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 = { { .id = 4, .text = "Item 4" }, { .id = 5, .text = "Item 5" }, { .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 = { { .id = 1, .text = "Item 1" }, { .id = 2, .text = "Item 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 } }, .html = "
Toolkit Menu 1" "
" }; 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 = { { .id = 4, .text = "Item 4" }, { .id = 5, .text = "Item 5" }, { .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 = { { .id = 1, .text = "Item 1" }, { .id = 2, .text = "Item 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 } }, .html = "
Toolkit Menu 1" "
" }; 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 = { { .id = 4, .text = "Item 4" }, { .id = 5, .text = "Item 5" }, { .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 = { { .id = 1, .text = "Item 1" }, { .id = 2, .text = "Item 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 } }, .html = "
" "Toolkit Menu 1
", }; 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 = { { .id = 4, .text = "Item 4" }, { .id = 5, .text = "Item 5" }, { .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 } }, .html = "
Toolkit Menu 2" "
", }; 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 = { { .id = 7, .text = "Item 7" }, { .id = 8, .text = "Item 8" }, { .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 = { { .id = 1, .text = "Item 1" }, { .id = 2, .text = "Item 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 } }, .html = "
" "Toolkit Menu 1
", }; 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 = { { .id = 1, .text = "Item 1" }, { .id = 2, .text = "Item 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 } }, .html = "
" "Toolkit Menu 1
", }; 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 = { { .id = 1, .text = "Item 1" }, { .id = 2, .text = "Item 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 } }, .html = "
" "Toolkit Menu 1
" }; 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 = { { .id = 1, .text = "Item 1" }, { .id = 2, .text = "Item 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 } }, .html = "
Toolkit Menu 1
", }; 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 = { { .id = 1, .text = "Item 1" }, { .id = 2, .text = "Item 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 } }, .html = "
Toolkit Menu 1
", }; 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 = { { .id = 1, .text = "Item 1" }, { .id = 2, .text = "Item 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 } }, .html = "
Toolkit Menu" "
", }; static struct setup_menu_test setup_menu_data_711 = { .pdu = setup_menu_711, .pdu_len = sizeof(setup_menu_711), .qualifier = 0x00, .alpha_id = "ЗДРАВСТВУЙТЕ", .items = { { .id = 1, .text = "ЗДРАВСТВУЙТЕ1" }, { .id = 2, .text = "ЗДРАВСТВУЙТЕ2" }, { .id = 3, .text = "ЗДРАВСТВУЙТЕ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 = { { .id = 0x11, .text = "ЗДРАВСТВУЙТЕ5" }, { .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, .alpha_id = "" }; static struct setup_menu_test setup_menu_data_811 = { .pdu = setup_menu_811, .pdu_len = sizeof(setup_menu_811), .qualifier = 0x00, .alpha_id = "工具箱单", .items = { { .id = 1, .text = "项目一" }, { .id = 2, .text = "项目二" }, { .id = 3, .text = "项目三" }, { .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 = { { .id = 0x11, .text = "一" }, { .id = 0x12, .text = "二" }, } }; static struct setup_menu_test setup_menu_data_813 = { .pdu = setup_menu_813, .pdu_len = sizeof(setup_menu_813), .qualifier = 0x00, .alpha_id = "" }; 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 = { { .id = 1, .text = "80ル1" }, { .id = 2, .text = "80ル2" }, { .id = 3, .text = "80ル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 = { { .id = 0x11, .text = "80ル5" }, { .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, .alpha_id = "" }; static struct setup_menu_test setup_menu_data_neg_1 = { .pdu = setup_menu_neg_1, .pdu_len = sizeof(setup_menu_neg_1) }; static struct setup_menu_test setup_menu_data_neg_2 = { .pdu = setup_menu_neg_2, .pdu_len = sizeof(setup_menu_neg_2) }; static struct setup_menu_test setup_menu_data_neg_3 = { .pdu = setup_menu_neg_3, .pdu_len = sizeof(setup_menu_neg_3) }; static struct setup_menu_test setup_menu_data_neg_4 = { .pdu = setup_menu_neg_4, .pdu_len = sizeof(setup_menu_neg_4) }; /* 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->status == STK_PARSE_RESULT_OK); 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); check_alpha_id(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); check_text_attr_html(&command->setup_menu.text_attr, command->setup_menu.alpha_id, test->html); stk_command_free(command); } static void test_setup_menu_missing_val(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->status == STK_PARSE_RESULT_MISSING_VALUE); stk_command_free(command); } static void test_setup_menu_neg(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->status == STK_PARSE_RESULT_DATA_NOT_UNDERSTOOD); stk_command_free(command); } struct select_item_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; unsigned char item_id; 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; struct stk_frame_id frame_id; char *html; }; static unsigned char select_item_111[] = { 0xD0, 0x3D, 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x0E, 0x54, 0x6F, 0x6F, 0x6C, 0x6B, 0x69, 0x74, 0x20, 0x53, 0x65, 0x6C, 0x65, 0x63, 0x74, 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 select_item_121[] = { 0xD0, 0x81, 0xFC, 0x81, 0x03, 0x01, 0x24, 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 select_item_131[] = { 0xD0, 0x81, 0xFB, 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x0A, 0x4C, 0x61, 0x72, 0x67, 0x65, 0x4D, 0x65, 0x6E, 0x75, 0x32, 0x8F, 0x1E, 0xFF, 0x43, 0x61, 0x6C, 0x6C, 0x20, 0x46, 0x6F, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x55, 0x6E, 0x63, 0x6F, 0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x8F, 0x1D, 0xFE, 0x43, 0x61, 0x6C, 0x6C, 0x20, 0x46, 0x6F, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x4F, 0x6E, 0x20, 0x55, 0x73, 0x65, 0x72, 0x20, 0x42, 0x75, 0x73, 0x79, 0x8F, 0x1C, 0xFD, 0x43, 0x61, 0x6C, 0x6C, 0x20, 0x46, 0x6F, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x4F, 0x6E, 0x20, 0x4E, 0x6F, 0x20, 0x52, 0x65, 0x70, 0x6C, 0x79, 0x8F, 0x26, 0xFC, 0x43, 0x61, 0x6C, 0x6C, 0x20, 0x46, 0x6F, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x4F, 0x6E, 0x20, 0x55, 0x73, 0x65, 0x72, 0x20, 0x4E, 0x6F, 0x74, 0x20, 0x52, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6C, 0x65, 0x8F, 0x1E, 0xFB, 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, 0x2C, 0xFA, 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, 0x65, 0x72, 0x6E, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x43, 0x61, 0x6C, 0x6C, 0x73, 0x8F, 0x11, 0xF9, 0x43, 0x4C, 0x49, 0x20, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6E, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E }; static unsigned char select_item_141[] = { 0xD0, 0x22, 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x0B, 0x53, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x49, 0x74, 0x65, 0x6D, 0x8F, 0x04, 0x11, 0x4F, 0x6E, 0x65, 0x8F, 0x04, 0x12, 0x54, 0x77, 0x6F }; static unsigned char select_item_151[] = { 0xD0, 0x81, 0xFD, 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x81, 0xED, 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, 0x69, 0x74, 0x65, 0x6D, 0x73, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x6D, 0x61, 0x79, 0x20, 0x63, 0x68, 0x6F, 0x6F, 0x73, 0x65, 0x20, 0x6F, 0x6E, 0x65, 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, 0x6F, 0x72, 0x74, 0x20, 0x69, 0x64, 0x65, 0x6E, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x28, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x6E, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x29, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x61, 0x20, 0x74, 0x65, 0x78, 0x74, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2E, 0x20, 0x4F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x53, 0x49, 0x4D, 0x20, 0x6D, 0x61, 0x79, 0x20, 0x69, 0x6E, 0x63, 0x6C, 0x75, 0x64, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x6C, 0x70, 0x68, 0x61, 0x20, 0x69, 0x64, 0x65, 0x6E, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x61, 0x6C, 0x70, 0x68, 0x61, 0x20, 0x69, 0x64, 0x65, 0x6E, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x69, 0x8F, 0x02, 0x01, 0x59 }; static unsigned char select_item_161[] = { 0xD0, 0x81, 0xF3, 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x0A, 0x30, 0x4C, 0x61, 0x72, 0x67, 0x65, 0x4D, 0x65, 0x6E, 0x75, 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 select_item_211[] = { 0xD0, 0x39, 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x0E, 0x54, 0x6F, 0x6F, 0x6C, 0x6B, 0x69, 0x74, 0x20, 0x53, 0x65, 0x6C, 0x65, 0x63, 0x74, 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, 0x18, 0x03, 0x13, 0x10, 0x26 }; static unsigned char select_item_311[] = { 0xD0, 0x37, 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x0E, 0x54, 0x6F, 0x6F, 0x6C, 0x6B, 0x69, 0x74, 0x20, 0x53, 0x65, 0x6C, 0x65, 0x63, 0x74, 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, 0x90, 0x01, 0x02 }; static unsigned char select_item_411[] = { 0xD0, 0x34, 0x81, 0x03, 0x01, 0x24, 0x80, 0x82, 0x02, 0x81, 0x82, 0x85, 0x0E, 0x54, 0x6F, 0x6F, 0x6C, 0x6B, 0x69, 0x74, 0x20, 0x53, 0x65, 0x6C, 0x65, 0x63, 0x74, 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 }; static unsigned char select_item_511[] = { 0xD0, 0x3E, 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x0E, 0x54, 0x6F, 0x6F, 0x6C, 0x6B, 0x69, 0x74, 0x20, 0x53, 0x65, 0x6C, 0x65, 0x63, 0x74, 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 select_item_521[] = { 0xD0, 0x3E, 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x0E, 0x54, 0x6F, 0x6F, 0x6C, 0x6B, 0x69, 0x74, 0x20, 0x53, 0x65, 0x6C, 0x65, 0x63, 0x74, 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 select_item_611[] = { 0xD0, 0x34, 0x81, 0x03, 0x01, 0x24, 0x03, 0x82, 0x02, 0x81, 0x82, 0x85, 0x0E, 0x54, 0x6F, 0x6F, 0x6C, 0x6B, 0x69, 0x74, 0x20, 0x53, 0x65, 0x6C, 0x65, 0x63, 0x74, 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 }; static unsigned char select_item_621[] = { 0xD0, 0x34, 0x81, 0x03, 0x01, 0x24, 0x01, 0x82, 0x02, 0x81, 0x82, 0x85, 0x0E, 0x54, 0x6F, 0x6F, 0x6C, 0x6B, 0x69, 0x74, 0x20, 0x53, 0x65, 0x6C, 0x65, 0x63, 0x74, 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 }; static unsigned char select_item_711[] = { 0xD0, 0x2B, 0x81, 0x03, 0x01, 0x24, 0x04, 0x82, 0x02, 0x81, 0x82, 0x85, 0x0E, 0x54, 0x6F, 0x6F, 0x6C, 0x6B, 0x69, 0x74, 0x20, 0x53, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x8F, 0x07, 0x01, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x31, 0x8F, 0x07, 0x02, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x32 }; static unsigned char select_item_811[] = { 0xD0, 0x30, 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x0A, 0x3C, 0x54, 0x49, 0x4D, 0x45, 0x2D, 0x4F, 0x55, 0x54, 0x3E, 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 }; static unsigned char select_item_911[] = { 0xD0, 0x3D, 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x54, 0x6F, 0x6F, 0x6C, 0x6B, 0x69, 0x74, 0x20, 0x53, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x31, 0x8F, 0x07, 0x01, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x31, 0x8F, 0x07, 0x02, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x32, 0xD0, 0x04, 0x00, 0x10, 0x00, 0xB4, 0xD1, 0x08, 0x00, 0x06, 0x00, 0xB4, 0x00, 0x06, 0x00, 0xB4 }; static unsigned char select_item_912[] = { 0xD0, 0x2D, 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x54, 0x6F, 0x6F, 0x6C, 0x6B, 0x69, 0x74, 0x20, 0x53, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x32, 0x8F, 0x07, 0x01, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x33, 0x8F, 0x07, 0x02, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x34 }; static unsigned char select_item_921[] = { 0xD0, 0x3D, 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x54, 0x6F, 0x6F, 0x6C, 0x6B, 0x69, 0x74, 0x20, 0x53, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x31, 0x8F, 0x07, 0x01, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x31, 0x8F, 0x07, 0x02, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x32, 0xD0, 0x04, 0x00, 0x10, 0x01, 0xB4, 0xD1, 0x08, 0x00, 0x06, 0x01, 0xB4, 0x00, 0x06, 0x01, 0xB4 }; static unsigned char select_item_922[] = { 0xD0, 0x2D, 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x54, 0x6F, 0x6F, 0x6C, 0x6B, 0x69, 0x74, 0x20, 0x53, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x32, 0x8F, 0x07, 0x01, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x33, 0x8F, 0x07, 0x02, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x34 }; static unsigned char select_item_931[] = { 0xD0, 0x3D, 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x54, 0x6F, 0x6F, 0x6C, 0x6B, 0x69, 0x74, 0x20, 0x53, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x31, 0x8F, 0x07, 0x01, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x31, 0x8F, 0x07, 0x02, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x32, 0xD0, 0x04, 0x00, 0x10, 0x02, 0xB4, 0xD1, 0x08, 0x00, 0x06, 0x02, 0xB4, 0x00, 0x06, 0x02, 0xB4 }; static unsigned char select_item_932[] = { 0xD0, 0x2D, 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x54, 0x6F, 0x6F, 0x6C, 0x6B, 0x69, 0x74, 0x20, 0x53, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x32, 0x8F, 0x07, 0x01, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x33, 0x8F, 0x07, 0x02, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x34 }; static unsigned char select_item_941[] = { 0xD0, 0x3D, 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x54, 0x6F, 0x6F, 0x6C, 0x6B, 0x69, 0x74, 0x20, 0x53, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x31, 0x8F, 0x07, 0x01, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x31, 0x8F, 0x07, 0x02, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x32, 0xD0, 0x04, 0x00, 0x10, 0x04, 0xB4, 0xD1, 0x08, 0x00, 0x06, 0x04, 0xB4, 0x00, 0x06, 0x04, 0xB4 }; static unsigned char select_item_942[] = { 0xD0, 0x3D, 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x54, 0x6F, 0x6F, 0x6C, 0x6B, 0x69, 0x74, 0x20, 0x53, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x32, 0x8F, 0x07, 0x01, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x33, 0x8F, 0x07, 0x02, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x34, 0xD0, 0x04, 0x00, 0x10, 0x00, 0xB4, 0xD1, 0x08, 0x00, 0x06, 0x00, 0xB4, 0x00, 0x06, 0x00, 0xB4 }; static unsigned char select_item_943[] = { 0xD0, 0x2D, 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x54, 0x6F, 0x6F, 0x6C, 0x6B, 0x69, 0x74, 0x20, 0x53, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x33, 0x8F, 0x07, 0x01, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x35, 0x8F, 0x07, 0x02, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x36 }; static unsigned char select_item_951[] = { 0xD0, 0x3D, 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x54, 0x6F, 0x6F, 0x6C, 0x6B, 0x69, 0x74, 0x20, 0x53, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x31, 0x8F, 0x07, 0x01, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x31, 0x8F, 0x07, 0x02, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x32, 0xD0, 0x04, 0x00, 0x10, 0x08, 0xB4, 0xD1, 0x08, 0x00, 0x06, 0x08, 0xB4, 0x00, 0x06, 0x08, 0xB4 }; static unsigned char select_item_952[] = { 0xD0, 0x3D, 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x54, 0x6F, 0x6F, 0x6C, 0x6B, 0x69, 0x74, 0x20, 0x53, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x32, 0x8F, 0x07, 0x01, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x33, 0x8F, 0x07, 0x02, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x34, 0xD0, 0x04, 0x00, 0x10, 0x00, 0xB4, 0xD1, 0x08, 0x00, 0x06, 0x00, 0xB4, 0x00, 0x06, 0x00, 0xB4 }; static unsigned char select_item_953[] = { 0xD0, 0x2D, 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x54, 0x6F, 0x6F, 0x6C, 0x6B, 0x69, 0x74, 0x20, 0x53, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x33, 0x8F, 0x07, 0x01, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x35, 0x8F, 0x07, 0x02, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x36 }; static unsigned char select_item_961[] = { 0xD0, 0x3D, 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x54, 0x6F, 0x6F, 0x6C, 0x6B, 0x69, 0x74, 0x20, 0x53, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x31, 0x8F, 0x07, 0x01, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x31, 0x8F, 0x07, 0x02, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x32, 0xD0, 0x04, 0x00, 0x10, 0x10, 0xB4, 0xD1, 0x08, 0x00, 0x06, 0x10, 0xB4, 0x00, 0x06, 0x10, 0xB4 }; static unsigned char select_item_962[] = { 0xD0, 0x3D, 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x54, 0x6F, 0x6F, 0x6C, 0x6B, 0x69, 0x74, 0x20, 0x53, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x32, 0x8F, 0x07, 0x01, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x33, 0x8F, 0x07, 0x02, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x34, 0xD0, 0x04, 0x00, 0x10, 0x00, 0xB4, 0xD1, 0x08, 0x00, 0x06, 0x00, 0xB4, 0x00, 0x06, 0x00, 0xB4 }; static unsigned char select_item_963[] = { 0xD0, 0x2D, 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x54, 0x6F, 0x6F, 0x6C, 0x6B, 0x69, 0x74, 0x20, 0x53, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x33, 0x8F, 0x07, 0x01, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x35, 0x8F, 0x07, 0x02, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x36 }; static unsigned char select_item_971[] = { 0xD0, 0x3D, 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x54, 0x6F, 0x6F, 0x6C, 0x6B, 0x69, 0x74, 0x20, 0x53, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x31, 0x8F, 0x07, 0x01, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x31, 0x8F, 0x07, 0x02, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x32, 0xD0, 0x04, 0x00, 0x10, 0x20, 0xB4, 0xD1, 0x08, 0x00, 0x06, 0x20, 0xB4, 0x00, 0x06, 0x20, 0xB4 }; static unsigned char select_item_972[] = { 0xD0, 0x3D, 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x54, 0x6F, 0x6F, 0x6C, 0x6B, 0x69, 0x74, 0x20, 0x53, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x32, 0x8F, 0x07, 0x01, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x33, 0x8F, 0x07, 0x02, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x34, 0xD0, 0x04, 0x00, 0x10, 0x00, 0xB4, 0xD1, 0x08, 0x00, 0x06, 0x00, 0xB4, 0x00, 0x06, 0x00, 0xB4 }; static unsigned char select_item_973[] = { 0xD0, 0x2D, 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x54, 0x6F, 0x6F, 0x6C, 0x6B, 0x69, 0x74, 0x20, 0x53, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x33, 0x8F, 0x07, 0x01, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x35, 0x8F, 0x07, 0x02, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x36 }; static unsigned char select_item_981[] = { 0xD0, 0x3D, 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x54, 0x6F, 0x6F, 0x6C, 0x6B, 0x69, 0x74, 0x20, 0x53, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x31, 0x8F, 0x07, 0x01, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x31, 0x8F, 0x07, 0x02, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x32, 0xD0, 0x04, 0x00, 0x10, 0x40, 0xB4, 0xD1, 0x08, 0x00, 0x06, 0x40, 0xB4, 0x00, 0x06, 0x40, 0xB4 }; static unsigned char select_item_982[] = { 0xD0, 0x3D, 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x54, 0x6F, 0x6F, 0x6C, 0x6B, 0x69, 0x74, 0x20, 0x53, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x32, 0x8F, 0x07, 0x01, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x33, 0x8F, 0x07, 0x02, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x34, 0xD0, 0x04, 0x00, 0x10, 0x00, 0xB4, 0xD1, 0x08, 0x00, 0x06, 0x00, 0xB4, 0x00, 0x06, 0x00, 0xB4 }; static unsigned char select_item_983[] = { 0xD0, 0x2D, 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x54, 0x6F, 0x6F, 0x6C, 0x6B, 0x69, 0x74, 0x20, 0x53, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x33, 0x8F, 0x07, 0x01, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x35, 0x8F, 0x07, 0x02, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x36 }; static unsigned char select_item_991[] = { 0xD0, 0x3D, 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x54, 0x6F, 0x6F, 0x6C, 0x6B, 0x69, 0x74, 0x20, 0x53, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x31, 0x8F, 0x07, 0x01, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x31, 0x8F, 0x07, 0x02, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x32, 0xD0, 0x04, 0x00, 0x10, 0x80, 0xB4, 0xD1, 0x08, 0x00, 0x06, 0x80, 0xB4, 0x00, 0x06, 0x80, 0xB4 }; static unsigned char select_item_992[] = { 0xD0, 0x3D, 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x54, 0x6F, 0x6F, 0x6C, 0x6B, 0x69, 0x74, 0x20, 0x53, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x32, 0x8F, 0x07, 0x01, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x33, 0x8F, 0x07, 0x02, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x34, 0xD0, 0x04, 0x00, 0x10, 0x00, 0xB4, 0xD1, 0x08, 0x00, 0x06, 0x00, 0xB4, 0x00, 0x06, 0x00, 0xB4 }; static unsigned char select_item_993[] = { 0xD0, 0x2D, 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x54, 0x6F, 0x6F, 0x6C, 0x6B, 0x69, 0x74, 0x20, 0x53, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x33, 0x8F, 0x07, 0x01, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x35, 0x8F, 0x07, 0x02, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x36 }; static unsigned char select_item_9101[] = { 0xD0, 0x3D, 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x54, 0x6F, 0x6F, 0x6C, 0x6B, 0x69, 0x74, 0x20, 0x53, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x31, 0x8F, 0x07, 0x01, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x31, 0x8F, 0x07, 0x02, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x32, 0xD0, 0x04, 0x00, 0x10, 0x00, 0xB4, 0xD1, 0x08, 0x00, 0x06, 0x00, 0xB4, 0x00, 0x06, 0x00, 0xB4 }; static unsigned char select_item_9102[] = { 0xD0, 0x2D, 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x54, 0x6F, 0x6F, 0x6C, 0x6B, 0x69, 0x74, 0x20, 0x53, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x32, 0x8F, 0x07, 0x01, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x33, 0x8F, 0x07, 0x02, 0x49, 0x74, 0x65, 0x6D, 0x20, 0x34 }; static unsigned char select_item_1011[] = { 0xD0, 0x7E, 0x81, 0x03, 0x01, 0x24, 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 }; static unsigned char select_item_1021[] = { 0xD0, 0x53, 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x0F, 0x81, 0x0C, 0x08, 0x97, 0x94, 0xA0, 0x90, 0x92, 0xA1, 0xA2, 0x92, 0xA3, 0x99, 0xA2, 0x95, 0x8F, 0x11, 0x01, 0x81, 0x0D, 0x08, 0x97, 0x94, 0xA0, 0x90, 0x92, 0xA1, 0xA2, 0x92, 0xA3, 0x99, 0xA2, 0x95, 0x31, 0x8F, 0x11, 0x02, 0x81, 0x0D, 0x08, 0x97, 0x94, 0xA0, 0x90, 0x92, 0xA1, 0xA2, 0x92, 0xA3, 0x99, 0xA2, 0x95, 0x32, 0x8F, 0x11, 0x03, 0x81, 0x0D, 0x08, 0x97, 0x94, 0xA0, 0x90, 0x92, 0xA1, 0xA2, 0x92, 0xA3, 0x99, 0xA2, 0x95, 0x33 }; static unsigned char select_item_1031[] = { 0xD0, 0x57, 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x82, 0x0C, 0x04, 0x10, 0x87, 0x84, 0x90, 0x80, 0x82, 0x91, 0x92, 0x82, 0x93, 0x89, 0x92, 0x85, 0x8F, 0x12, 0x01, 0x82, 0x0D, 0x04, 0x10, 0x87, 0x84, 0x90, 0x80, 0x82, 0x91, 0x92, 0x82, 0x93, 0x89, 0x92, 0x85, 0x31, 0x8F, 0x12, 0x02, 0x82, 0x0D, 0x04, 0x10, 0x87, 0x84, 0x90, 0x80, 0x82, 0x91, 0x92, 0x82, 0x93, 0x89, 0x92, 0x85, 0x32, 0x8F, 0x12, 0x03, 0x82, 0x0D, 0x04, 0x10, 0x87, 0x84, 0x90, 0x80, 0x82, 0x91, 0x92, 0x82, 0x93, 0x89, 0x92, 0x85, 0x33 }; static unsigned char select_item_1111[] = { 0xD0, 0x3E, 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x0B, 0x80, 0x5D, 0xE5, 0x51, 0x77, 0x7B, 0xB1, 0x90, 0x09, 0x62, 0xE9, 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 select_item_1211[] = { 0xD0, 0x38, 0x81, 0x03, 0x01, 0x24, 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 }; static unsigned char select_item_1221[] = { 0xD0, 0x30, 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x07, 0x81, 0x04, 0x61, 0x38, 0x31, 0xEB, 0x30, 0x8F, 0x08, 0x01, 0x81, 0x04, 0x61, 0x38, 0x31, 0xEB, 0x31, 0x8F, 0x08, 0x02, 0x81, 0x04, 0x61, 0x38, 0x31, 0xEB, 0x32, 0x8F, 0x08, 0x03, 0x81, 0x04, 0x61, 0x38, 0x31, 0xEB, 0x33 }; static unsigned char select_item_1231[] = { 0xD0, 0x34, 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x08, 0x82, 0x04, 0x30, 0xA0, 0x38, 0x32, 0xCB, 0x30, 0x8F, 0x09, 0x01, 0x82, 0x04, 0x30, 0xA0, 0x38, 0x32, 0xCB, 0x31, 0x8F, 0x09, 0x02, 0x82, 0x04, 0x30, 0xA0, 0x38, 0x32, 0xCB, 0x32, 0x8F, 0x09, 0x03, 0x82, 0x04, 0x30, 0xA0, 0x38, 0x32, 0xCB, 0x33 }; static struct select_item_test select_item_data_111 = { .pdu = select_item_111, .pdu_len = sizeof(select_item_111), .qualifier = 0x00, .alpha_id = "Toolkit Select", .items = { { .id = 1, .text = "Item 1" }, { .id = 2, .text = "Item 2" }, { .id = 3, .text = "Item 3" }, { .id = 4, .text = "Item 4" }, } }; static struct select_item_test select_item_data_121 = { .pdu = select_item_121, .pdu_len = sizeof(select_item_121), .qualifier = 0x00, .alpha_id = "LargeMenu1", .items = { { .id = 0x50, .text = "Zero" }, { .id = 0x4F, .text = "One" }, { .id = 0x4E, .text = "Two" }, { .id = 0x4D, .text = "Three" }, { .id = 0x4C, .text = "Four" }, { .id = 0x4B, .text = "Five" }, { .id = 0x4A, .text = "Six" }, { .id = 0x49, .text = "Seven" }, { .id = 0x48, .text = "Eight" }, { .id = 0x47, .text = "Nine" }, { .id = 0x46, .text = "Alpha" }, { .id = 0x45, .text = "Bravo" }, { .id = 0x44, .text = "Charlie" }, { .id = 0x43, .text = "Delta" }, { .id = 0x42, .text = "Echo" }, { .id = 0x41, .text = "Fox-trot" }, { .id = 0x40, .text = "Black" }, { .id = 0x3F, .text = "Brown" }, { .id = 0x3E, .text = "Red" }, { .id = 0x3D, .text = "Orange" }, { .id = 0x3C, .text = "Yellow" }, { .id = 0x3B, .text = "Green" }, { .id = 0x3A, .text = "Blue" }, { .id = 0x39, .text = "Violet" }, { .id = 0x38, .text = "Grey" }, { .id = 0x37, .text = "White" }, { .id = 0x36, .text = "milli" }, { .id = 0x35, .text = "micro" }, { .id = 0x34, .text = "nano" }, { .id = 0x33, .text = "pico" }, } }; static struct select_item_test select_item_data_131 = { .pdu = select_item_131, .pdu_len = sizeof(select_item_131), .qualifier = 0x00, .alpha_id = "LargeMenu2", .items = { { .id = 0xFF, .text = "Call Forwarding Unconditional" }, { .id = 0xFE, .text = "Call Forwarding On User Busy" }, { .id = 0xFD, .text = "Call Forwarding On No Reply" }, { .id = 0xFC, .text = "Call Forwarding On User Not Reachable" }, { .id = 0xFB, .text = "Barring Of All Outgoing Calls" }, { .id = 0xFA, .text = "Barring Of All Outgoing International Calls" }, { .id = 0xF9, .text = "CLI Presentation" }, } }; static struct select_item_test select_item_data_141 = { .pdu = select_item_141, .pdu_len = sizeof(select_item_141), .qualifier = 0x00, .alpha_id = "Select Item", .items = { { .id = 0x11, .text = "One" }, { .id = 0x12, .text = "Two" }, } }; static struct select_item_test select_item_data_151 = { .pdu = select_item_151, .pdu_len = sizeof(select_item_151), .qualifier = 0x00, .alpha_id = "The SIM shall supply a set of items from which the user " "may choose one. Each item comprises a short identifier (used " "to indicate the selection) and a text string. Optionally the " "SIM may include an alpha identifier. The alpha identifier i", .items = { { .id = 0x01, .text = "Y" }, } }; static struct select_item_test select_item_data_161 = { .pdu = select_item_161, .pdu_len = sizeof(select_item_161), .qualifier = 0x00, .alpha_id = "0LargeMenu", .items = { { .id = 0xFF, .text = "1 Call Forward Unconditional" }, { .id = 0xFE, .text = "2 Call Forward On User Busy" }, { .id = 0xFD, .text = "3 Call Forward On No Reply" }, { .id = 0xFC, .text = "4 Call Forward On User Not Reachable" }, { .id = 0xFB, .text = "5 Barring Of All Outgoing Calls" }, { .id = 0xFA, .text = "6 Barring Of All Outgoing Int Calls" }, { .id = 0xF9, .text = "7 CLI Presentation" }, } }; static struct select_item_test select_item_data_211 = { .pdu = select_item_211, .pdu_len = sizeof(select_item_211), .qualifier = 0x00, .alpha_id = "Toolkit Select", .items = { { .id = 1, .text = "Item 1" }, { .id = 2, .text = "Item 2" }, { .id = 3, .text = "Item 3" }, }, .next_act = { .list = { STK_COMMAND_TYPE_SEND_SMS, STK_COMMAND_TYPE_SETUP_CALL, STK_COMMAND_TYPE_PROVIDE_LOCAL_INFO}, .len = 3 } }; static struct select_item_test select_item_data_311 = { .pdu = select_item_311, .pdu_len = sizeof(select_item_311), .qualifier = 0x00, .alpha_id = "Toolkit Select", .items = { { .id = 1, .text = "Item 1" }, { .id = 2, .text = "Item 2" }, { .id = 3, .text = "Item 3" }, }, .item_id = 0x02 }; static struct select_item_test select_item_data_411 = { .pdu = select_item_411, .pdu_len = sizeof(select_item_411), .qualifier = 0x80, .alpha_id = "Toolkit Select", .items = { { .id = 1, .text = "Item 1" }, { .id = 2, .text = "Item 2" }, { .id = 3, .text = "Item 3" }, } }; static struct select_item_test select_item_data_511 = { .pdu = select_item_511, .pdu_len = sizeof(select_item_511), .qualifier = 0x00, .alpha_id = "Toolkit Select", .items = { { .id = 1, .text = "Item 1" }, { .id = 2, .text = "Item 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 select_item_test select_item_data_521 = { .pdu = select_item_521, .pdu_len = sizeof(select_item_521), .qualifier = 0x00, .alpha_id = "Toolkit Select", .items = { { .id = 1, .text = "Item 1" }, { .id = 2, .text = "Item 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 select_item_test select_item_data_611 = { .pdu = select_item_611, .pdu_len = sizeof(select_item_611), .qualifier = 0x03, .alpha_id = "Toolkit Select", .items = { { .id = 1, .text = "Item 1" }, { .id = 2, .text = "Item 2" }, { .id = 3, .text = "Item 3" }, } }; static struct select_item_test select_item_data_621 = { .pdu = select_item_621, .pdu_len = sizeof(select_item_621), .qualifier = 0x01, .alpha_id = "Toolkit Select", .items = { { .id = 1, .text = "Item 1" }, { .id = 2, .text = "Item 2" }, { .id = 3, .text = "Item 3" }, } }; static struct select_item_test select_item_data_711 = { .pdu = select_item_711, .pdu_len = sizeof(select_item_711), .qualifier = 0x04, .alpha_id = "Toolkit Select", .items = { { .id = 1, .text = "Item 1" }, { .id = 2, .text = "Item 2" }, } }; static struct select_item_test select_item_data_811 = { .pdu = select_item_811, .pdu_len = sizeof(select_item_811), .qualifier = 0x00, .alpha_id = "", .items = { { .id = 1, .text = "Item 1" }, { .id = 2, .text = "Item 2" }, { .id = 3, .text = "Item 3" }, } }; static struct select_item_test select_item_data_911 = { .pdu = select_item_911, .pdu_len = sizeof(select_item_911), .qualifier = 0x00, .alpha_id = "Toolkit Select 1", .items = { { .id = 1, .text = "Item 1" }, { .id = 2, .text = "Item 2" }, }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } }, .item_text_attr_list = { .len = 8, .list = { 0x00, 0x06, 0x00, 0xB4, 0x00, 0x06, 0x00, 0xB4 } }, .html = "
Toolkit Select 1" "
", }; static struct select_item_test select_item_data_912 = { .pdu = select_item_912, .pdu_len = sizeof(select_item_912), .qualifier = 0x00, .alpha_id = "Toolkit Select 2", .items = { { .id = 1, .text = "Item 3" }, { .id = 2, .text = "Item 4" }, } }; static struct select_item_test select_item_data_921 = { .pdu = select_item_921, .pdu_len = sizeof(select_item_921), .qualifier = 0x00, .alpha_id = "Toolkit Select 1", .items = { { .id = 1, .text = "Item 1" }, { .id = 2, .text = "Item 2" }, }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x01, 0xB4 } }, .item_text_attr_list = { .len = 8, .list = { 0x00, 0x06, 0x01, 0xB4, 0x00, 0x06, 0x01, 0xB4 } }, .html = "
Toolkit Select 1" "
", }; static struct select_item_test select_item_data_922 = { .pdu = select_item_922, .pdu_len = sizeof(select_item_922), .qualifier = 0x00, .alpha_id = "Toolkit Select 2", .items = { { .id = 1, .text = "Item 3" }, { .id = 2, .text = "Item 4" }, } }; static struct select_item_test select_item_data_931 = { .pdu = select_item_931, .pdu_len = sizeof(select_item_931), .qualifier = 0x00, .alpha_id = "Toolkit Select 1", .items = { { .id = 1, .text = "Item 1" }, { .id = 2, .text = "Item 2" }, }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x02, 0xB4 } }, .item_text_attr_list = { .len = 8, .list = { 0x00, 0x06, 0x02, 0xB4, 0x00, 0x06, 0x02, 0xB4 } }, .html = "
Toolkit Select 1" "
" }; static struct select_item_test select_item_data_932 = { .pdu = select_item_932, .pdu_len = sizeof(select_item_932), .qualifier = 0x00, .alpha_id = "Toolkit Select 2", .items = { { .id = 1, .text = "Item 3" }, { .id = 2, .text = "Item 4" }, } }; static struct select_item_test select_item_data_941 = { .pdu = select_item_941, .pdu_len = sizeof(select_item_941), .qualifier = 0x00, .alpha_id = "Toolkit Select 1", .items = { { .id = 1, .text = "Item 1" }, { .id = 2, .text = "Item 2" }, }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x04, 0xB4 } }, .item_text_attr_list = { .len = 8, .list = { 0x00, 0x06, 0x04, 0xB4, 0x00, 0x06, 0x04, 0xB4 } }, .html = "
" "Toolkit Select 1
", }; static struct select_item_test select_item_data_942 = { .pdu = select_item_942, .pdu_len = sizeof(select_item_942), .qualifier = 0x00, .alpha_id = "Toolkit Select 2", .items = { { .id = 1, .text = "Item 3" }, { .id = 2, .text = "Item 4" }, }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } }, .item_text_attr_list = { .len = 8, .list = { 0x00, 0x06, 0x00, 0xB4, 0x00, 0x06, 0x00, 0xB4 } }, .html = "
Toolkit Select 2" "
", }; static struct select_item_test select_item_data_943 = { .pdu = select_item_943, .pdu_len = sizeof(select_item_943), .qualifier = 0x00, .alpha_id = "Toolkit Select 3", .items = { { .id = 1, .text = "Item 5" }, { .id = 2, .text = "Item 6" }, } }; static struct select_item_test select_item_data_951 = { .pdu = select_item_951, .pdu_len = sizeof(select_item_951), .qualifier = 0x00, .alpha_id = "Toolkit Select 1", .items = { { .id = 1, .text = "Item 1" }, { .id = 2, .text = "Item 2" }, }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x08, 0xB4 } }, .item_text_attr_list = { .len = 8, .list = { 0x00, 0x06, 0x08, 0xB4, 0x00, 0x06, 0x08, 0xB4 } }, .html = "
" "Toolkit Select 1
", }; static struct select_item_test select_item_data_952 = { .pdu = select_item_952, .pdu_len = sizeof(select_item_952), .qualifier = 0x00, .alpha_id = "Toolkit Select 2", .items = { { .id = 1, .text = "Item 3" }, { .id = 2, .text = "Item 4" }, }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } }, .item_text_attr_list = { .len = 8, .list = { 0x00, 0x06, 0x00, 0xB4, 0x00, 0x06, 0x00, 0xB4 } }, .html = "
Toolkit Select 2" "
", }; static struct select_item_test select_item_data_953 = { .pdu = select_item_953, .pdu_len = sizeof(select_item_953), .qualifier = 0x00, .alpha_id = "Toolkit Select 3", .items = { { .id = 1, .text = "Item 5" }, { .id = 2, .text = "Item 6" }, } }; static struct select_item_test select_item_data_961 = { .pdu = select_item_961, .pdu_len = sizeof(select_item_961), .qualifier = 0x00, .alpha_id = "Toolkit Select 1", .items = { { .id = 1, .text = "Item 1" }, { .id = 2, .text = "Item 2" }, }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x10, 0xB4 } }, .item_text_attr_list = { .len = 8, .list = { 0x00, 0x06, 0x10, 0xB4, 0x00, 0x06, 0x10, 0xB4 } }, .html = "
" "Toolkit Select 1
", }; static struct select_item_test select_item_data_962 = { .pdu = select_item_962, .pdu_len = sizeof(select_item_962), .qualifier = 0x00, .alpha_id = "Toolkit Select 2", .items = { { .id = 1, .text = "Item 3" }, { .id = 2, .text = "Item 4" }, }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } }, .item_text_attr_list = { .len = 8, .list = { 0x00, 0x06, 0x00, 0xB4, 0x00, 0x06, 0x00, 0xB4 } }, .html = "
Toolkit Select 2" "
", }; static struct select_item_test select_item_data_963 = { .pdu = select_item_963, .pdu_len = sizeof(select_item_963), .qualifier = 0x00, .alpha_id = "Toolkit Select 3", .items = { { .id = 1, .text = "Item 5" }, { .id = 2, .text = "Item 6" }, } }; static struct select_item_test select_item_data_971 = { .pdu = select_item_971, .pdu_len = sizeof(select_item_971), .qualifier = 0x00, .alpha_id = "Toolkit Select 1", .items = { { .id = 1, .text = "Item 1" }, { .id = 2, .text = "Item 2" }, }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x20, 0xB4 } }, .item_text_attr_list = { .len = 8, .list = { 0x00, 0x06, 0x20, 0xB4, 0x00, 0x06, 0x20, 0xB4 } }, .html = "
" "Toolkit Select 1
" }; static struct select_item_test select_item_data_972 = { .pdu = select_item_972, .pdu_len = sizeof(select_item_972), .qualifier = 0x00, .alpha_id = "Toolkit Select 2", .items = { { .id = 1, .text = "Item 3" }, { .id = 2, .text = "Item 4" }, }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } }, .item_text_attr_list = { .len = 8, .list = { 0x00, 0x06, 0x00, 0xB4, 0x00, 0x06, 0x00, 0xB4 } }, .html = "
Toolkit Select 2" "
", }; static struct select_item_test select_item_data_973 = { .pdu = select_item_973, .pdu_len = sizeof(select_item_973), .qualifier = 0x00, .alpha_id = "Toolkit Select 3", .items = { { .id = 1, .text = "Item 5" }, { .id = 2, .text = "Item 6" }, } }; static struct select_item_test select_item_data_981 = { .pdu = select_item_981, .pdu_len = sizeof(select_item_981), .qualifier = 0x00, .alpha_id = "Toolkit Select 1", .items = { { .id = 1, .text = "Item 1" }, { .id = 2, .text = "Item 2" }, }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x40, 0xB4 } }, .item_text_attr_list = { .len = 8, .list = { 0x00, 0x06, 0x40, 0xB4, 0x00, 0x06, 0x40, 0xB4 } }, .html = "
Toolkit Select 1
", }; static struct select_item_test select_item_data_982 = { .pdu = select_item_982, .pdu_len = sizeof(select_item_982), .qualifier = 0x00, .alpha_id = "Toolkit Select 2", .items = { { .id = 1, .text = "Item 3" }, { .id = 2, .text = "Item 4" }, }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } }, .item_text_attr_list = { .len = 8, .list = { 0x00, 0x06, 0x00, 0xB4, 0x00, 0x06, 0x00, 0xB4 } }, .html = "
Toolkit Select 2" "
", }; static struct select_item_test select_item_data_983 = { .pdu = select_item_983, .pdu_len = sizeof(select_item_983), .qualifier = 0x00, .alpha_id = "Toolkit Select 3", .items = { { .id = 1, .text = "Item 5" }, { .id = 2, .text = "Item 6" }, } }; static struct select_item_test select_item_data_991 = { .pdu = select_item_991, .pdu_len = sizeof(select_item_991), .qualifier = 0x00, .alpha_id = "Toolkit Select 1", .items = { { .id = 1, .text = "Item 1" }, { .id = 2, .text = "Item 2" }, }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x80, 0xB4 } }, .item_text_attr_list = { .len = 8, .list = { 0x00, 0x06, 0x80, 0xB4, 0x00, 0x06, 0x80, 0xB4 } }, .html = "
Toolkit Select 1
", }; static struct select_item_test select_item_data_992 = { .pdu = select_item_992, .pdu_len = sizeof(select_item_992), .qualifier = 0x00, .alpha_id = "Toolkit Select 2", .items = { { .id = 1, .text = "Item 3" }, { .id = 2, .text = "Item 4" }, }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } }, .item_text_attr_list = { .len = 8, .list = { 0x00, 0x06, 0x00, 0xB4, 0x00, 0x06, 0x00, 0xB4 } }, .html = "
Toolkit Select 2" "
", }; static struct select_item_test select_item_data_993 = { .pdu = select_item_993, .pdu_len = sizeof(select_item_993), .qualifier = 0x00, .alpha_id = "Toolkit Select 3", .items = { { .id = 1, .text = "Item 5" }, { .id = 2, .text = "Item 6" }, } }; static struct select_item_test select_item_data_9101 = { .pdu = select_item_9101, .pdu_len = sizeof(select_item_9101), .qualifier = 0x00, .alpha_id = "Toolkit Select 1", .items = { { .id = 1, .text = "Item 1" }, { .id = 2, .text = "Item 2" }, }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } }, .item_text_attr_list = { .len = 8, .list = { 0x00, 0x06, 0x00, 0xB4, 0x00, 0x06, 0x00, 0xB4 } }, .html = "
Toolkit Select 1" "
", }; static struct select_item_test select_item_data_9102 = { .pdu = select_item_9102, .pdu_len = sizeof(select_item_9102), .qualifier = 0x00, .alpha_id = "Toolkit Select 2", .items = { { .id = 1, .text = "Item 3" }, { .id = 2, .text = "Item 4" }, } }; static struct select_item_test select_item_data_1011 = { .pdu = select_item_1011, .pdu_len = sizeof(select_item_1011), .qualifier = 0x00, .alpha_id = "ЗДРАВСТВУЙТЕ", .items = { { .id = 1, .text = "ЗДРАВСТВУЙТЕ1" }, { .id = 2, .text = "ЗДРАВСТВУЙТЕ2" }, { .id = 3, .text = "ЗДРАВСТВУЙТЕ3" }, } }; static struct select_item_test select_item_data_1021 = { .pdu = select_item_1021, .pdu_len = sizeof(select_item_1021), .qualifier = 0x00, .alpha_id = "ЗДРАВСТВУЙТЕ", .items = { { .id = 1, .text = "ЗДРАВСТВУЙТЕ1" }, { .id = 2, .text = "ЗДРАВСТВУЙТЕ2" }, { .id = 3, .text = "ЗДРАВСТВУЙТЕ3" }, } }; static struct select_item_test select_item_data_1031 = { .pdu = select_item_1031, .pdu_len = sizeof(select_item_1031), .qualifier = 0x00, .alpha_id = "ЗДРАВСТВУЙТЕ", .items = { { .id = 1, .text = "ЗДРАВСТВУЙТЕ1" }, { .id = 2, .text = "ЗДРАВСТВУЙТЕ2" }, { .id = 3, .text = "ЗДРАВСТВУЙТЕ3" }, } }; static struct select_item_test select_item_data_1111 = { .pdu = select_item_1111, .pdu_len = sizeof(select_item_1111), .qualifier = 0x00, .alpha_id = "工具箱选择", .items = { { .id = 1, .text = "项目一" }, { .id = 2, .text = "项目二" }, { .id = 3, .text = "项目三" }, { .id = 4, .text = "项目四" }, } }; static struct select_item_test select_item_data_1211 = { .pdu = select_item_1211, .pdu_len = sizeof(select_item_1211), .qualifier = 0x00, .alpha_id = "80ル0", .items = { { .id = 1, .text = "80ル1" }, { .id = 2, .text = "80ル2" }, { .id = 3, .text = "80ル3" }, } }; static struct select_item_test select_item_data_1221 = { .pdu = select_item_1221, .pdu_len = sizeof(select_item_1221), .qualifier = 0x00, .alpha_id = "81ル0", .items = { { .id = 1, .text = "81ル1" }, { .id = 2, .text = "81ル2" }, { .id = 3, .text = "81ル3" }, } }; static struct select_item_test select_item_data_1231 = { .pdu = select_item_1231, .pdu_len = sizeof(select_item_1231), .qualifier = 0x00, .alpha_id = "82ル0", .items = { { .id = 1, .text = "82ル1" }, { .id = 2, .text = "82ル2" }, { .id = 3, .text = "82ル3" }, } }; static void test_select_item(gconstpointer data) { const struct select_item_test *test = data; struct stk_command *command; command = stk_command_new_from_pdu(test->pdu, test->pdu_len); g_assert(command); g_assert(command->status == STK_PARSE_RESULT_OK); g_assert(command->number == 1); g_assert(command->type == STK_COMMAND_TYPE_SELECT_ITEM); g_assert(command->qualifier == test->qualifier); g_assert(command->src == STK_DEVICE_IDENTITY_TYPE_UICC); g_assert(command->dst == STK_DEVICE_IDENTITY_TYPE_TERMINAL); check_alpha_id(command->select_item.alpha_id, test->alpha_id); check_items(command->select_item.items, test->items); check_items_next_action_indicator(&command->select_item.next_act, &test->next_act); check_item_id(command->select_item.item_id, test->item_id); check_icon_id(&command->select_item.icon_id, &test->icon_id); check_item_icon_id_list(&command->select_item.item_icon_id_list, &test->item_icon_id_list); check_text_attr(&command->select_item.text_attr, &test->text_attr); check_item_text_attribute_list( &command->select_item.item_text_attr_list, &test->item_text_attr_list); check_text_attr_html(&command->select_item.text_attr, command->select_item.alpha_id, test->html); check_frame_id(&command->select_item.frame_id, &test->frame_id); stk_command_free(command); } struct send_sms_test { const unsigned char *pdu; unsigned int pdu_len; unsigned char qualifier; char *alpha_id; struct sms_test gsm_sms; struct stk_common_byte_array cdma_sms; struct stk_icon_id icon_id; struct stk_text_attribute text_attr; struct stk_frame_id frame_id; }; /* 3GPP TS 31.124 Section 27.22.4.10.1.4.2 */ static unsigned char send_sms_111[] = { 0xD0, 0x37, 0x81, 0x03, 0x01, 0x13, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x07, 0x53, 0x65, 0x6E, 0x64, 0x20, 0x53, 0x4D, 0x86, 0x09, 0x91, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xF8, 0x8B, 0x18, 0x01, 0x00, 0x09, 0x91, 0x10, 0x32, 0x54, 0x76, 0xF8, 0x40, 0xF4, 0x0C, 0x54, 0x65, 0x73, 0x74, 0x20, 0x4D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65 }; static unsigned char send_sms_121[] = { 0xD0, 0x32, 0x81, 0x03, 0x01, 0x13, 0x01, 0x82, 0x02, 0x81, 0x83, 0x85, 0x07, 0x53, 0x65, 0x6E, 0x64, 0x20, 0x53, 0x4D, 0x86, 0x09, 0x91, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xF8, 0x8B, 0x13, 0x01, 0x00, 0x09, 0x91, 0x10, 0x32, 0x54, 0x76, 0xF8, 0x40, 0xF4, 0x07, 0x53, 0x65, 0x6E, 0x64, 0x20, 0x53, 0x4D }; static unsigned char send_sms_131[] = { 0xD0, 0x3D, 0x81, 0x03, 0x01, 0x13, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0D, 0x53, 0x68, 0x6F, 0x72, 0x74, 0x20, 0x4D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x86, 0x09, 0x91, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xF8, 0x8B, 0x18, 0x01, 0x00, 0x09, 0x91, 0x10, 0x32, 0x54, 0x76, 0xF8, 0x40, 0xF0, 0x0D, 0x53, 0xF4, 0x5B, 0x4E, 0x07, 0x35, 0xCB, 0xF3, 0x79, 0xF8, 0x5C, 0x06 }; static unsigned char send_sms_141[] = { 0xD0, 0x81, 0xFD, 0x81, 0x03, 0x01, 0x13, 0x01, 0x82, 0x02, 0x81, 0x83, 0x85, 0x38, 0x54, 0x68, 0x65, 0x20, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x6F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x20, 0x68, 0x6F, 0x6C, 0x64, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x52, 0x50, 0x11, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6E, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x11, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x86, 0x09, 0x91, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xF8, 0x8B, 0x81, 0xAC, 0x01, 0x00, 0x09, 0x91, 0x10, 0x32, 0x54, 0x76, 0xF8, 0x40, 0xF4, 0xA0, 0x54, 0x77, 0x6F, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x64, 0x3A, 0x20, 0x2D, 0x20, 0x41, 0x20, 0x73, 0x68, 0x6F, 0x72, 0x74, 0x20, 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x73, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x6E, 0x20, 0x53, 0x4D, 0x53, 0x2D, 0x53, 0x55, 0x42, 0x4D, 0x49, 0x54, 0x20, 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x61, 0x6E, 0x20, 0x53, 0x4D, 0x53, 0x2D, 0x43, 0x4F, 0x4D, 0x4D, 0x41, 0x4E, 0x44, 0x20, 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2C, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x20, 0x74, 0x72, 0x61, 0x6E, 0x73, 0x70 }; static unsigned char send_sms_151[] = { 0xD0, 0x81, 0xE9, 0x81, 0x03, 0x01, 0x13, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x38, 0x54, 0x68, 0x65, 0x20, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x6F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x20, 0x68, 0x6F, 0x6C, 0x64, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x52, 0x50, 0x20, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6E, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x86, 0x09, 0x91, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xF8, 0x8B, 0x81, 0x98, 0x01, 0x00, 0x09, 0x91, 0x10, 0x32, 0x54, 0x76, 0xF8, 0x40, 0xF0, 0xA0, 0xD4, 0xFB, 0x1B, 0x44, 0xCF, 0xC3, 0xCB, 0x73, 0x50, 0x58, 0x5E, 0x06, 0x91, 0xCB, 0xE6, 0xB4, 0xBB, 0x4C, 0xD6, 0x81, 0x5A, 0xA0, 0x20, 0x68, 0x8E, 0x7E, 0xCB, 0xE9, 0xA0, 0x76, 0x79, 0x3E, 0x0F, 0x9F, 0xCB, 0x20, 0xFA, 0x1B, 0x24, 0x2E, 0x83, 0xE6, 0x65, 0x37, 0x1D, 0x44, 0x7F, 0x83, 0xE8, 0xE8, 0x32, 0xC8, 0x5D, 0xA6, 0xDF, 0xDF, 0xF2, 0x35, 0x28, 0xED, 0x06, 0x85, 0xDD, 0xA0, 0x69, 0x73, 0xDA, 0x9A, 0x56, 0x85, 0xCD, 0x24, 0x15, 0xD4, 0x2E, 0xCF, 0xE7, 0xE1, 0x73, 0x99, 0x05, 0x7A, 0xCB, 0x41, 0x61, 0x37, 0x68, 0xDA, 0x9C, 0xB6, 0x86, 0xCF, 0x66, 0x33, 0xE8, 0x24, 0x82, 0xDA, 0xE5, 0xF9, 0x3C, 0x7C, 0x2E, 0xB3, 0x40, 0x77, 0x74, 0x59, 0x5E, 0x06, 0xD1, 0xD1, 0x65, 0x50, 0x7D, 0x5E, 0x96, 0x83, 0xC8, 0x61, 0x7A, 0x18, 0x34, 0x0E, 0xBB, 0x41, 0xE2, 0x32, 0x08, 0x1E, 0x9E, 0xCF, 0xCB, 0x64, 0x10, 0x5D, 0x1E, 0x76, 0xCF, 0xE1 }; static unsigned char send_sms_161[] = { 0xD0, 0x81, 0xFD, 0x81, 0x03, 0x01, 0x13, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x81, 0xE6, 0x54, 0x77, 0x6F, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x64, 0x3A, 0x20, 0x2D, 0x20, 0x41, 0x20, 0x73, 0x68, 0x6F, 0x72, 0x74, 0x20, 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x73, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x6E, 0x20, 0x53, 0x4D, 0x53, 0x2D, 0x53, 0x55, 0x42, 0x4D, 0x49, 0x54, 0x20, 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x61, 0x6E, 0x20, 0x53, 0x4D, 0x53, 0x2D, 0x43, 0x4F, 0x4D, 0x4D, 0x41, 0x4E, 0x44, 0x20, 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2C, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x20, 0x74, 0x72, 0x61, 0x6E, 0x73, 0x70, 0x61, 0x72, 0x65, 0x6E, 0x74, 0x6C, 0x79, 0x3B, 0x20, 0x2D, 0x20, 0x41, 0x20, 0x73, 0x68, 0x6F, 0x72, 0x74, 0x20, 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x73, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x6E, 0x20, 0x53, 0x4D, 0x53, 0x2D, 0x53, 0x55, 0x42, 0x4D, 0x49, 0x54, 0x20, 0x8B, 0x09, 0x01, 0x00, 0x02, 0x91, 0x10, 0x40, 0xF0, 0x01, 0x20 }; static unsigned char send_sms_171[] = { 0xD0, 0x30, 0x81, 0x03, 0x01, 0x13, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x00, 0x86, 0x09, 0x91, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xF8, 0x8B, 0x18, 0x01, 0x00, 0x09, 0x91, 0x10, 0x32, 0x54, 0x76, 0xF8, 0x40, 0xF4, 0x0C, 0x54, 0x65, 0x73, 0x74, 0x20, 0x4D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65 }; static unsigned char send_sms_181[] = { 0xD0, 0x2E, 0x81, 0x03, 0x01, 0x13, 0x00, 0x82, 0x02, 0x81, 0x83, 0x86, 0x09, 0x91, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xF8, 0x8B, 0x18, 0x01, 0x00, 0x09, 0x91, 0x10, 0x32, 0x54, 0x76, 0xF8, 0x40, 0xF4, 0x0C, 0x54, 0x65, 0x73, 0x74, 0x20, 0x4D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65 }; static unsigned char send_sms_211[] = { 0xD0, 0x55, 0x81, 0x03, 0x01, 0x13, 0x00, 0x82, 0x02, 0x81, 0x83, 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, 0x86, 0x09, 0x91, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xF8, 0x8B, 0x24, 0x01, 0x00, 0x09, 0x91, 0x10, 0x32, 0x54, 0x76, 0xF8, 0x40, 0x08, 0x18, 0x04, 0x17, 0x04, 0x14, 0x04, 0x20, 0x04, 0x10, 0x04, 0x12, 0x04, 0x21, 0x04, 0x22, 0x04, 0x12, 0x04, 0x23, 0x04, 0x19, 0x04, 0x22, 0x04, 0x15 }; static unsigned char send_sms_212[] = { 0xD0, 0x4B, 0x81, 0x03, 0x01, 0x13, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0F, 0x81, 0x0C, 0x08, 0x97, 0x94, 0xA0, 0x90, 0x92, 0xA1, 0xA2, 0x92, 0xA3, 0x99, 0xA2, 0x95, 0x86, 0x09, 0x91, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xF8, 0x8B, 0x24, 0x01, 0x00, 0x09, 0x91, 0x10, 0x32, 0x54, 0x76, 0xF8, 0x40, 0x08, 0x18, 0x04, 0x17, 0x04, 0x14, 0x04, 0x20, 0x04, 0x10, 0x04, 0x12, 0x04, 0x21, 0x04, 0x22, 0x04, 0x12, 0x04, 0x23, 0x04, 0x19, 0x04, 0x22, 0x04, 0x15 }; static unsigned char send_sms_213[] = { 0xD0, 0x4C, 0x81, 0x03, 0x01, 0x13, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x82, 0x0C, 0x04, 0x10, 0x87, 0x84, 0x90, 0x80, 0x82, 0x91, 0x92, 0x82, 0x93, 0x89, 0x92, 0x85, 0x86, 0x09, 0x91, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xF8, 0x8B, 0x24, 0x01, 0x00, 0x09, 0x91, 0x10, 0x32, 0x54, 0x76, 0xF8, 0x40, 0x08, 0x18, 0x04, 0x17, 0x04, 0x14, 0x04, 0x20, 0x04, 0x10, 0x04, 0x12, 0x04, 0x21, 0x04, 0x22, 0x04, 0x12, 0x04, 0x23, 0x04, 0x19, 0x04, 0x22, 0x04, 0x15 }; static unsigned char send_sms_311[] = { 0xD0, 0x3B, 0x81, 0x03, 0x01, 0x13, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x07, 0x4E, 0x4F, 0x20, 0x49, 0x43, 0x4F, 0x4E, 0x86, 0x09, 0x91, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xF8, 0x8B, 0x18, 0x01, 0x00, 0x09, 0x91, 0x10, 0x32, 0x54, 0x76, 0xF8, 0x40, 0xF4, 0x0C, 0x54, 0x65, 0x73, 0x74, 0x20, 0x4D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x9E, 0x02, 0x00, 0x01 }; static unsigned char send_sms_321[] = { 0xD0, 0x3B, 0x81, 0x03, 0x01, 0x13, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x07, 0x53, 0x65, 0x6E, 0x64, 0x20, 0x53, 0x4D, 0x86, 0x09, 0x91, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xF8, 0x8B, 0x18, 0x01, 0x00, 0x09, 0x91, 0x10, 0x32, 0x54, 0x76, 0xF8, 0x40, 0xF4, 0x0C, 0x54, 0x65, 0x73, 0x74, 0x20, 0x4D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x1E, 0x02, 0x01, 0x01 }; static unsigned char send_sms_411[] = { 0xD0, 0x2C, 0x81, 0x03, 0x01, 0x13, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x31, 0x8B, 0x09, 0x01, 0x00, 0x02, 0x91, 0x10, 0x40, 0xF0, 0x01, 0x20, 0xD0, 0x04, 0x00, 0x10, 0x00, 0xB4 }; static unsigned char send_sms_412[] = { 0xD0, 0x26, 0x81, 0x03, 0x01, 0x13, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x32, 0x8B, 0x09, 0x01, 0x00, 0x02, 0x91, 0x10, 0x40, 0xF0, 0x01, 0x20 }; static unsigned char send_sms_421[] = { 0xD0, 0x2C, 0x81, 0x03, 0x01, 0x13, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x31, 0x8B, 0x09, 0x01, 0x00, 0x02, 0x91, 0x10, 0x40, 0xF0, 0x01, 0x20, 0xD0, 0x04, 0x00, 0x10, 0x01, 0xB4 }; static unsigned char send_sms_422[] = { 0xD0, 0x26, 0x81, 0x03, 0x01, 0x13, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x32, 0x8B, 0x09, 0x01, 0x00, 0x02, 0x91, 0x10, 0x40, 0xF0, 0x01, 0x20 }; static unsigned char send_sms_431[] = { 0xD0, 0x2C, 0x81, 0x03, 0x01, 0x13, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x31, 0x8B, 0x09, 0x01, 0x00, 0x02, 0x91, 0x10, 0x40, 0xF0, 0x01, 0x20, 0xD0, 0x04, 0x00, 0x10, 0x02, 0xB4 }; static unsigned char send_sms_432[] = { 0xD0, 0x26, 0x81, 0x03, 0x01, 0x13, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x32, 0x8B, 0x09, 0x01, 0x00, 0x02, 0x91, 0x10, 0x40, 0xF0, 0x01, 0x20 }; static unsigned char send_sms_441[] = { 0xD0, 0x2C, 0x81, 0x03, 0x01, 0x13, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x31, 0x8B, 0x09, 0x01, 0x00, 0x02, 0x91, 0x10, 0x40, 0xF0, 0x01, 0x20, 0xD0, 0x04, 0x00, 0x10, 0x04, 0xB4 }; static unsigned char send_sms_442[] = { 0xD0, 0x2C, 0x81, 0x03, 0x01, 0x13, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x32, 0x8B, 0x09, 0x01, 0x00, 0x02, 0x91, 0x10, 0x40, 0xF0, 0x01, 0x20, 0xD0, 0x04, 0x00, 0x10, 0x00, 0xB4 }; static unsigned char send_sms_443[] = { 0xD0, 0x26, 0x81, 0x03, 0x01, 0x13, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x33, 0x8B, 0x09, 0x01, 0x00, 0x02, 0x91, 0x10, 0x40, 0xF0, 0x01, 0x20 }; static unsigned char send_sms_451[] = { 0xD0, 0x2C, 0x81, 0x03, 0x01, 0x13, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x31, 0x8B, 0x09, 0x01, 0x00, 0x02, 0x91, 0x10, 0x40, 0xF0, 0x01, 0x20, 0xD0, 0x04, 0x00, 0x10, 0x08, 0xB4 }; static unsigned char send_sms_452[] = { 0xD0, 0x2C, 0x81, 0x03, 0x01, 0x13, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x32, 0x8B, 0x09, 0x01, 0x00, 0x02, 0x91, 0x10, 0x40, 0xF0, 0x01, 0x20, 0xD0, 0x04, 0x00, 0x10, 0x00, 0xB4 }; static unsigned char send_sms_453[] = { 0xD0, 0x26, 0x81, 0x03, 0x01, 0x13, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x33, 0x8B, 0x09, 0x01, 0x00, 0x02, 0x91, 0x10, 0x40, 0xF0, 0x01, 0x20 }; static unsigned char send_sms_461[] = { 0xD0, 0x2C, 0x81, 0x03, 0x01, 0x13, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x31, 0x8B, 0x09, 0x01, 0x00, 0x02, 0x91, 0x10, 0x40, 0xF0, 0x01, 0x20, 0xD0, 0x04, 0x00, 0x10, 0x10, 0xB4 }; static unsigned char send_sms_462[] = { 0xD0, 0x2C, 0x81, 0x03, 0x01, 0x13, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x32, 0x8B, 0x09, 0x01, 0x00, 0x02, 0x91, 0x10, 0x40, 0xF0, 0x01, 0x20, 0xD0, 0x04, 0x00, 0x10, 0x00, 0xB4 }; static unsigned char send_sms_463[] = { 0xD0, 0x26, 0x81, 0x03, 0x01, 0x13, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x33, 0x8B, 0x09, 0x01, 0x00, 0x02, 0x91, 0x10, 0x40, 0xF0, 0x01, 0x20 }; static unsigned char send_sms_471[] = { 0xD0, 0x2C, 0x81, 0x03, 0x01, 0x13, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x31, 0x8B, 0x09, 0x01, 0x00, 0x02, 0x91, 0x10, 0x40, 0xF0, 0x01, 0x20, 0xD0, 0x04, 0x00, 0x10, 0x20, 0xB4 }; static unsigned char send_sms_472[] = { 0xD0, 0x2C, 0x81, 0x03, 0x01, 0x13, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x32, 0x8B, 0x09, 0x01, 0x00, 0x02, 0x91, 0x10, 0x40, 0xF0, 0x01, 0x20, 0xD0, 0x04, 0x00, 0x10, 0x00, 0xB4 }; static unsigned char send_sms_473[] = { 0xD0, 0x26, 0x81, 0x03, 0x01, 0x13, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x33, 0x8B, 0x09, 0x01, 0x00, 0x02, 0x91, 0x10, 0x40, 0xF0, 0x01, 0x20 }; static unsigned char send_sms_481[] = { 0xD0, 0x2C, 0x81, 0x03, 0x01, 0x13, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x31, 0x8B, 0x09, 0x01, 0x00, 0x02, 0x91, 0x10, 0x40, 0xF0, 0x01, 0x20, 0xD0, 0x04, 0x00, 0x10, 0x40, 0xB4 }; static unsigned char send_sms_482[] = { 0xD0, 0x2C, 0x81, 0x03, 0x01, 0x13, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x32, 0x8B, 0x09, 0x01, 0x00, 0x02, 0x91, 0x10, 0x40, 0xF0, 0x01, 0x20, 0xD0, 0x04, 0x00, 0x10, 0x00, 0xB4 }; static unsigned char send_sms_483[] = { 0xD0, 0x26, 0x81, 0x03, 0x01, 0x13, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x33, 0x8B, 0x09, 0x01, 0x00, 0x02, 0x91, 0x10, 0x40, 0xF0, 0x01, 0x20 }; static unsigned char send_sms_491[] = { 0xD0, 0x2C, 0x81, 0x03, 0x01, 0x13, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x31, 0x8B, 0x09, 0x01, 0x00, 0x02, 0x91, 0x10, 0x40, 0xF0, 0x01, 0x20, 0xD0, 0x04, 0x00, 0x10, 0x80, 0xB4 }; static unsigned char send_sms_492[] = { 0xD0, 0x2C, 0x81, 0x03, 0x01, 0x13, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x32, 0x8B, 0x09, 0x01, 0x00, 0x02, 0x91, 0x10, 0x40, 0xF0, 0x01, 0x20, 0xD0, 0x04, 0x00, 0x10, 0x00, 0xB4 }; static unsigned char send_sms_493[] = { 0xD0, 0x26, 0x81, 0x03, 0x01, 0x13, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x33, 0x8B, 0x09, 0x01, 0x00, 0x02, 0x91, 0x10, 0x40, 0xF0, 0x01, 0x20 }; static unsigned char send_sms_4101[] = { 0xD0, 0x2C, 0x81, 0x03, 0x01, 0x13, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x31, 0x8B, 0x09, 0x01, 0x00, 0x02, 0x91, 0x10, 0x40, 0xF0, 0x01, 0x20, 0xD0, 0x04, 0x00, 0x10, 0x00, 0xB4 }; static unsigned char send_sms_4102[] = { 0xD0, 0x26, 0x81, 0x03, 0x01, 0x13, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x32, 0x8B, 0x09, 0x01, 0x00, 0x02, 0x91, 0x10, 0x40, 0xF0, 0x01, 0x20 }; static unsigned char send_sms_511[] = { 0xD0, 0x2D, 0x81, 0x03, 0x01, 0x13, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x05, 0x80, 0x4E, 0x2D, 0x4E, 0x00, 0x86, 0x09, 0x91, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xF8, 0x8B, 0x10, 0x01, 0x00, 0x09, 0x91, 0x10, 0x32, 0x54, 0x76, 0xF8, 0x40, 0x08, 0x04, 0x4E, 0x2D, 0x4E, 0x00 }; static unsigned char send_sms_512[] = { 0xD0, 0x2D, 0x81, 0x03, 0x01, 0x13, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x05, 0x81, 0x02, 0x9C, 0xAD, 0x80, 0x86, 0x09, 0x91, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xF8, 0x8B, 0x10, 0x01, 0x00, 0x09, 0x91, 0x10, 0x32, 0x54, 0x76, 0xF8, 0x40, 0x08, 0x04, 0x4E, 0x2D, 0x4E, 0x00 }; static unsigned char send_sms_513[] = { 0xD0, 0x2E, 0x81, 0x03, 0x01, 0x13, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x06, 0x82, 0x02, 0x4E, 0x00, 0xAD, 0x80, 0x86, 0x09, 0x91, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xF8, 0x8B, 0x10, 0x01, 0x00, 0x09, 0x91, 0x10, 0x32, 0x54, 0x76, 0xF8, 0x40, 0x08, 0x04, 0x4E, 0x2D, 0x4E, 0x00 }; static unsigned char send_sms_611[] = { 0xD0, 0x35, 0x81, 0x03, 0x01, 0x13, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x09, 0x80, 0x00, 0x38, 0x00, 0x30, 0x30, 0xEB, 0x00, 0x30, 0x86, 0x09, 0x91, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xF8, 0x8B, 0x14, 0x01, 0x00, 0x09, 0x91, 0x10, 0x32, 0x54, 0x76, 0xF8, 0x40, 0x08, 0x08, 0x00, 0x38, 0x00, 0x30, 0x30, 0xEB, 0x00, 0x31 }; static unsigned char send_sms_612[] = { 0xD0, 0x33, 0x81, 0x03, 0x01, 0x13, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x07, 0x81, 0x04, 0x61, 0x38, 0x31, 0xEB, 0x31, 0x86, 0x09, 0x91, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xF8, 0x8B, 0x14, 0x01, 0x00, 0x09, 0x91, 0x10, 0x32, 0x54, 0x76, 0xF8, 0x40, 0x08, 0x08, 0x00, 0x38, 0x00, 0x30, 0x30, 0xEB, 0x00, 0x32 }; static unsigned char send_sms_613[] = { 0xD0, 0x34, 0x81, 0x03, 0x01, 0x13, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x08, 0x82, 0x04, 0x30, 0xA0, 0x38, 0x32, 0xCB, 0x32, 0x86, 0x09, 0x91, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xF8, 0x8B, 0x14, 0x01, 0x00, 0x09, 0x91, 0x10, 0x32, 0x54, 0x76, 0xF8, 0x40, 0x08, 0x08, 0x00, 0x38, 0x00, 0x30, 0x30, 0xEB, 0x00, 0x33 }; static struct send_sms_test send_sms_data_111 = { .pdu = send_sms_111, .pdu_len = sizeof(send_sms_111), .qualifier = 0x00, .alpha_id = "Send SM", .gsm_sms = { { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "112233445566778", }, SMS_TYPE_SUBMIT, {.submit = { .mr = 0x00, .daddr = { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "012345678", }, .pid = 0x40, .dcs = 0xF4, .udl = 12, .ud = "Test Message" } } } }; static struct send_sms_test send_sms_data_121 = { .pdu = send_sms_121, .pdu_len = sizeof(send_sms_121), .qualifier = 0x01, .alpha_id = "Send SM", .gsm_sms = { { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "112233445566778", }, SMS_TYPE_SUBMIT, {.submit = { .mr = 0x00, .daddr = { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "012345678", }, .pid = 0x40, .dcs = 0xF0, .udl = 7, .ud = "Send SM" } } } }; static struct send_sms_test send_sms_data_131 = { .pdu = send_sms_131, .pdu_len = sizeof(send_sms_131), .qualifier = 0x00, .alpha_id = "Short Message", .gsm_sms = { { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "112233445566778", }, SMS_TYPE_SUBMIT, {.submit = { .mr = 0x00, .daddr = { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "012345678", }, .pid = 0x40, .dcs = 0xF0, .udl = 13, .ud = "Short Message" } } }, }; static struct send_sms_test send_sms_data_141 = { .pdu = send_sms_141, .pdu_len = sizeof(send_sms_141), .qualifier = 0x01, .alpha_id = "The address data object holds the RP_Destination_Address", .gsm_sms = { { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "112233445566778", }, SMS_TYPE_SUBMIT, {.submit = { .mr = 0x00, .daddr = { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "012345678", }, .pid = 0x40, .dcs = 0xF0, .udl = 160, .ud = "Two types are defined: - A short message to be " "sent to the network in an SMS-SUBMIT message, " "or an SMS-COMMAND message, where the user " "data can be passed transp" } } } }; static struct send_sms_test send_sms_data_151 = { .pdu = send_sms_151, .pdu_len = sizeof(send_sms_151), .qualifier = 0x00, .alpha_id = "The address data object holds the RP Destination Address", .gsm_sms = { { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "112233445566778", }, SMS_TYPE_SUBMIT, {.submit = { .mr = 0x00, .daddr = { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "012345678", }, .pid = 0x40, .dcs = 0xF0, .udl = 160, .ud = "Two types are defined: - A short message to be " "sent to the network in an SMS-SUBMIT message, " "or an SMS-COMMAND message, where the user " "data can be passed transp" } } } }; /* There should be a space after alpha_id */ static struct send_sms_test send_sms_data_161 = { .pdu = send_sms_161, .pdu_len = sizeof(send_sms_161), .qualifier = 0x00, .alpha_id = "Two types are defined: - A short message to be sent to " "the network in an SMS-SUBMIT message, or an " "SMS-COMMAND message, where the user data can be " "passed transparently; - A short message to be sent " "to the network in an SMS-SUBMIT ", .gsm_sms = { {}, SMS_TYPE_SUBMIT, {.submit = { .mr = 0x00, .daddr = { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "01", }, .pid = 0x40, .dcs = 0xF0, .udl = 1, .ud = " " } } } }; static struct send_sms_test send_sms_data_171 = { .pdu = send_sms_171, .pdu_len = sizeof(send_sms_171), .qualifier = 0x00, .alpha_id = "", .gsm_sms = { { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "112233445566778", }, SMS_TYPE_SUBMIT, {.submit = { .mr = 0x00, .daddr = { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "012345678", }, .pid = 0x40, .dcs = 0xF4, .udl = 12, .ud = "Test Message" } } } }; static struct send_sms_test send_sms_data_181 = { .pdu = send_sms_181, .pdu_len = sizeof(send_sms_181), .qualifier = 0x00, .gsm_sms = { { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "112233445566778", }, SMS_TYPE_SUBMIT, {.submit = { .mr = 0x00, .daddr = { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "012345678", }, .pid = 0x40, .dcs = 0xF4, .udl = 12, .ud = "Test Message" } } } }; static struct send_sms_test send_sms_data_211 = { .pdu = send_sms_211, .pdu_len = sizeof(send_sms_211), .qualifier = 0x00, .alpha_id = "ЗДРАВСТВУЙТЕ", .gsm_sms = { { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "112233445566778", }, SMS_TYPE_SUBMIT, {.submit = { .mr = 0x00, .daddr = { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "012345678", }, .pid = 0x40, .dcs = 0x08, .udl = 24, .ud = "ЗДРАВСТВУЙТЕ" } } } }; static struct send_sms_test send_sms_data_212 = { .pdu = send_sms_212, .pdu_len = sizeof(send_sms_212), .qualifier = 0x00, .alpha_id = "ЗДРАВСТВУЙТЕ", .gsm_sms = { { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "112233445566778", }, SMS_TYPE_SUBMIT, {.submit = { .mr = 0x00, .daddr = { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "012345678", }, .pid = 0x40, .dcs = 0x08, .udl = 24, .ud = "ЗДРАВСТВУЙТЕ" } } } }; static struct send_sms_test send_sms_data_213 = { .pdu = send_sms_213, .pdu_len = sizeof(send_sms_213), .qualifier = 0x00, .alpha_id = "ЗДРАВСТВУЙТЕ", .gsm_sms = { { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "112233445566778", }, SMS_TYPE_SUBMIT, {.submit = { .mr = 0x00, .daddr = { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "012345678", }, .pid = 0x40, .dcs = 0x08, .udl = 24, .ud = "ЗДРАВСТВУЙТЕ" } } } }; static struct send_sms_test send_sms_data_311 = { .pdu = send_sms_311, .pdu_len = sizeof(send_sms_311), .qualifier = 0x00, .alpha_id = "NO ICON", .gsm_sms = { { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "112233445566778", }, SMS_TYPE_SUBMIT, {.submit = { .mr = 0x00, .daddr = { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "012345678", }, .pid = 0x40, .dcs = 0xF4, .udl = 12, .ud = "Test Message" } } }, .icon_id = { .qualifier = STK_ICON_QUALIFIER_TYPE_SELF_EXPLANATORY, .id = 0x01 } }; static struct send_sms_test send_sms_data_321 = { .pdu = send_sms_321, .pdu_len = sizeof(send_sms_321), .qualifier = 0x00, .alpha_id = "Send SM", .gsm_sms = { { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "112233445566778", }, SMS_TYPE_SUBMIT, {.submit = { .mr = 0x00, .daddr = { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "012345678", }, .pid = 0x40, .dcs = 0xF4, .udl = 12, .ud = "Test Message" } } }, .icon_id = { .qualifier = STK_ICON_QUALIFIER_TYPE_NON_SELF_EXPLANATORY, .id = 0x01 } }; static struct send_sms_test send_sms_data_411 = { .pdu = send_sms_411, .pdu_len = sizeof(send_sms_411), .qualifier = 0x00, .alpha_id = "Text Attribute 1", .gsm_sms = { {}, SMS_TYPE_SUBMIT, {.submit = { .mr = 0x00, .daddr = { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "01", }, .pid = 0x40, .dcs = 0xF0, .udl = 1, .ud = " " } } }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } } }; static struct send_sms_test send_sms_data_412 = { .pdu = send_sms_412, .pdu_len = sizeof(send_sms_412), .qualifier = 0x00, .alpha_id = "Text Attribute 2", .gsm_sms = { {}, SMS_TYPE_SUBMIT, {.submit = { .mr = 0x00, .daddr = { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "01", }, .pid = 0x40, .dcs = 0xF0, .udl = 1, .ud = " " } } } }; static struct send_sms_test send_sms_data_421 = { .pdu = send_sms_421, .pdu_len = sizeof(send_sms_421), .qualifier = 0x00, .alpha_id = "Text Attribute 1", .gsm_sms = { {}, SMS_TYPE_SUBMIT, {.submit = { .mr = 0x00, .daddr = { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "01", }, .pid = 0x40, .dcs = 0xF0, .udl = 1, .ud = " " } } }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x01, 0xB4 } } }; static struct send_sms_test send_sms_data_422 = { .pdu = send_sms_422, .pdu_len = sizeof(send_sms_422), .qualifier = 0x00, .alpha_id = "Text Attribute 2", .gsm_sms = { {}, SMS_TYPE_SUBMIT, {.submit = { .mr = 0x00, .daddr = { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "01", }, .pid = 0x40, .dcs = 0xF0, .udl = 1, .ud = " " } } } }; static struct send_sms_test send_sms_data_431 = { .pdu = send_sms_431, .pdu_len = sizeof(send_sms_431), .qualifier = 0x00, .alpha_id = "Text Attribute 1", .gsm_sms = { {}, SMS_TYPE_SUBMIT, {.submit = { .mr = 0x00, .daddr = { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "01", }, .pid = 0x40, .dcs = 0xF0, .udl = 1, .ud = " " } } }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x02, 0xB4 } } }; static struct send_sms_test send_sms_data_432 = { .pdu = send_sms_432, .pdu_len = sizeof(send_sms_432), .qualifier = 0x00, .alpha_id = "Text Attribute 2", .gsm_sms = { {}, SMS_TYPE_SUBMIT, {.submit = { .mr = 0x00, .daddr = { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "01", }, .pid = 0x40, .dcs = 0xF0, .udl = 1, .ud = " " } } } }; static struct send_sms_test send_sms_data_441 = { .pdu = send_sms_441, .pdu_len = sizeof(send_sms_441), .qualifier = 0x00, .alpha_id = "Text Attribute 1", .gsm_sms = { {}, SMS_TYPE_SUBMIT, {.submit = { .mr = 0x00, .daddr = { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "01", }, .pid = 0x40, .dcs = 0xF0, .udl = 1, .ud = " " } } }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x04, 0xB4 } } }; static struct send_sms_test send_sms_data_442 = { .pdu = send_sms_442, .pdu_len = sizeof(send_sms_442), .qualifier = 0x00, .alpha_id = "Text Attribute 2", .gsm_sms = { {}, SMS_TYPE_SUBMIT, {.submit = { .mr = 0x00, .daddr = { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "01", }, .pid = 0x40, .dcs = 0xF0, .udl = 1, .ud = " " } } }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } } }; static struct send_sms_test send_sms_data_443 = { .pdu = send_sms_443, .pdu_len = sizeof(send_sms_443), .qualifier = 0x00, .alpha_id = "Text Attribute 3", .gsm_sms = { {}, SMS_TYPE_SUBMIT, {.submit = { .mr = 0x00, .daddr = { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "01", }, .pid = 0x40, .dcs = 0xF0, .udl = 1, .ud = " " } } } }; static struct send_sms_test send_sms_data_451 = { .pdu = send_sms_451, .pdu_len = sizeof(send_sms_451), .qualifier = 0x00, .alpha_id = "Text Attribute 1", .gsm_sms = { {}, SMS_TYPE_SUBMIT, {.submit = { .mr = 0x00, .daddr = { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "01", }, .pid = 0x40, .dcs = 0xF0, .udl = 1, .ud = " " } } }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x08, 0xB4 } } }; static struct send_sms_test send_sms_data_452 = { .pdu = send_sms_452, .pdu_len = sizeof(send_sms_452), .qualifier = 0x00, .alpha_id = "Text Attribute 2", .gsm_sms = { {}, SMS_TYPE_SUBMIT, {.submit = { .mr = 0x00, .daddr = { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "01", }, .pid = 0x40, .dcs = 0xF0, .udl = 1, .ud = " " } } }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } } }; static struct send_sms_test send_sms_data_453 = { .pdu = send_sms_453, .pdu_len = sizeof(send_sms_453), .qualifier = 0x00, .alpha_id = "Text Attribute 3", .gsm_sms = { {}, SMS_TYPE_SUBMIT, {.submit = { .mr = 0x00, .daddr = { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "01", }, .pid = 0x40, .dcs = 0xF0, .udl = 1, .ud = " " } } } }; static struct send_sms_test send_sms_data_461 = { .pdu = send_sms_461, .pdu_len = sizeof(send_sms_461), .qualifier = 0x00, .alpha_id = "Text Attribute 1", .gsm_sms = { {}, SMS_TYPE_SUBMIT, {.submit = { .mr = 0x00, .daddr = { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "01", }, .pid = 0x40, .dcs = 0xF0, .udl = 1, .ud = " " } } }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x10, 0xB4 } } }; static struct send_sms_test send_sms_data_462 = { .pdu = send_sms_462, .pdu_len = sizeof(send_sms_462), .qualifier = 0x00, .alpha_id = "Text Attribute 2", .gsm_sms = { {}, SMS_TYPE_SUBMIT, {.submit = { .mr = 0x00, .daddr = { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "01", }, .pid = 0x40, .dcs = 0xF0, .udl = 1, .ud = " " } } }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } } }; static struct send_sms_test send_sms_data_463 = { .pdu = send_sms_463, .pdu_len = sizeof(send_sms_463), .qualifier = 0x00, .alpha_id = "Text Attribute 3", .gsm_sms = { {}, SMS_TYPE_SUBMIT, {.submit = { .mr = 0x00, .daddr = { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "01", }, .pid = 0x40, .dcs = 0xF0, .udl = 1, .ud = " " } } } }; static struct send_sms_test send_sms_data_471 = { .pdu = send_sms_471, .pdu_len = sizeof(send_sms_471), .qualifier = 0x00, .alpha_id = "Text Attribute 1", .gsm_sms = { {}, SMS_TYPE_SUBMIT, {.submit = { .mr = 0x00, .daddr = { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "01", }, .pid = 0x40, .dcs = 0xF0, .udl = 1, .ud = " " } } }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x20, 0xB4 } } }; static struct send_sms_test send_sms_data_472 = { .pdu = send_sms_472, .pdu_len = sizeof(send_sms_472), .qualifier = 0x00, .alpha_id = "Text Attribute 2", .gsm_sms = { {}, SMS_TYPE_SUBMIT, {.submit = { .mr = 0x00, .daddr = { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "01", }, .pid = 0x40, .dcs = 0xF0, .udl = 1, .ud = " " } } }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } } }; static struct send_sms_test send_sms_data_473 = { .pdu = send_sms_473, .pdu_len = sizeof(send_sms_473), .qualifier = 0x00, .alpha_id = "Text Attribute 3", .gsm_sms = { {}, SMS_TYPE_SUBMIT, {.submit = { .mr = 0x00, .daddr = { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "01", }, .pid = 0x40, .dcs = 0xF0, .udl = 1, .ud = " " } } } }; static struct send_sms_test send_sms_data_481 = { .pdu = send_sms_481, .pdu_len = sizeof(send_sms_481), .qualifier = 0x00, .alpha_id = "Text Attribute 1", .gsm_sms = { {}, SMS_TYPE_SUBMIT, {.submit = { .mr = 0x00, .daddr = { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "01", }, .pid = 0x40, .dcs = 0xF0, .udl = 1, .ud = " " } } }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x40, 0xB4 } } }; static struct send_sms_test send_sms_data_482 = { .pdu = send_sms_482, .pdu_len = sizeof(send_sms_482), .qualifier = 0x00, .alpha_id = "Text Attribute 2", .gsm_sms = { {}, SMS_TYPE_SUBMIT, {.submit = { .mr = 0x00, .daddr = { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "01", }, .pid = 0x40, .dcs = 0xF0, .udl = 1, .ud = " " } } }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } } }; static struct send_sms_test send_sms_data_483 = { .pdu = send_sms_483, .pdu_len = sizeof(send_sms_483), .qualifier = 0x00, .alpha_id = "Text Attribute 3", .gsm_sms = { {}, SMS_TYPE_SUBMIT, {.submit = { .mr = 0x00, .daddr = { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "01", }, .pid = 0x40, .dcs = 0xF0, .udl = 1, .ud = " " } } } }; static struct send_sms_test send_sms_data_491 = { .pdu = send_sms_491, .pdu_len = sizeof(send_sms_491), .qualifier = 0x00, .alpha_id = "Text Attribute 1", .gsm_sms = { {}, SMS_TYPE_SUBMIT, {.submit = { .mr = 0x00, .daddr = { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "01", }, .pid = 0x40, .dcs = 0xF0, .udl = 1, .ud = " " } } }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x80, 0xB4 } } }; static struct send_sms_test send_sms_data_492 = { .pdu = send_sms_492, .pdu_len = sizeof(send_sms_492), .qualifier = 0x00, .alpha_id = "Text Attribute 2", .gsm_sms = { {}, SMS_TYPE_SUBMIT, {.submit = { .mr = 0x00, .daddr = { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "01", }, .pid = 0x40, .dcs = 0xF0, .udl = 1, .ud = " " } } }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } } }; static struct send_sms_test send_sms_data_493 = { .pdu = send_sms_493, .pdu_len = sizeof(send_sms_493), .qualifier = 0x00, .alpha_id = "Text Attribute 3", .gsm_sms = { {}, SMS_TYPE_SUBMIT, {.submit = { .mr = 0x00, .daddr = { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "01", }, .pid = 0x40, .dcs = 0xF0, .udl = 1, .ud = " " } } } }; static struct send_sms_test send_sms_data_4101 = { .pdu = send_sms_4101, .pdu_len = sizeof(send_sms_4101), .qualifier = 0x00, .alpha_id = "Text Attribute 1", .gsm_sms = { {}, SMS_TYPE_SUBMIT, {.submit = { .mr = 0x00, .daddr = { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "01", }, .pid = 0x40, .dcs = 0xF0, .udl = 1, .ud = " " } } }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } } }; static struct send_sms_test send_sms_data_4102 = { .pdu = send_sms_4102, .pdu_len = sizeof(send_sms_4102), .qualifier = 0x00, .alpha_id = "Text Attribute 2", .gsm_sms = { {}, SMS_TYPE_SUBMIT, {.submit = { .mr = 0x00, .daddr = { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "01", }, .pid = 0x40, .dcs = 0xF0, .udl = 1, .ud = " " } } } }; /* The TP-UDL should be 4, instead of 24 */ static struct send_sms_test send_sms_data_511 = { .pdu = send_sms_511, .pdu_len = sizeof(send_sms_511), .qualifier = 0x00, .alpha_id = "中一", .gsm_sms = { { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "112233445566778", }, SMS_TYPE_SUBMIT, {.submit = { .mr = 0x00, .daddr = { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "012345678", }, .pid = 0x40, .dcs = 0x08, .udl = 4, .ud = "中一" } } } }; /* The TP-UDL should be 4, instead of 24 */ static struct send_sms_test send_sms_data_512 = { .pdu = send_sms_512, .pdu_len = sizeof(send_sms_512), .qualifier = 0x00, .alpha_id = "中一", .gsm_sms = { { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "112233445566778", }, SMS_TYPE_SUBMIT, {.submit = { .mr = 0x00, .daddr = { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "012345678", }, .pid = 0x40, .dcs = 0x08, .udl = 4, .ud = "中一" } } } }; /* The TP-UDL should be 4, instead of 24 */ static struct send_sms_test send_sms_data_513 = { .pdu = send_sms_513, .pdu_len = sizeof(send_sms_513), .qualifier = 0x00, .alpha_id = "中一", .gsm_sms = { { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "112233445566778", }, SMS_TYPE_SUBMIT, {.submit = { .mr = 0x00, .daddr = { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "012345678", }, .pid = 0x40, .dcs = 0x08, .udl = 4, .ud = "中一" } } } }; static struct send_sms_test send_sms_data_611 = { .pdu = send_sms_611, .pdu_len = sizeof(send_sms_611), .qualifier = 0x00, .alpha_id = "80ル0", .gsm_sms = { { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "112233445566778", }, SMS_TYPE_SUBMIT, {.submit = { .mr = 0x00, .daddr = { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "012345678", }, .pid = 0x40, .dcs = 0x08, .udl = 8, .ud = "80ル1" } } } }; static struct send_sms_test send_sms_data_612 = { .pdu = send_sms_612, .pdu_len = sizeof(send_sms_612), .qualifier = 0x00, .alpha_id = "81ル1", .gsm_sms = { { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "112233445566778", }, SMS_TYPE_SUBMIT, {.submit = { .mr = 0x00, .daddr = { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "012345678", }, .pid = 0x40, .dcs = 0x08, .udl = 8, .ud = "80ル2" } } } }; static struct send_sms_test send_sms_data_613 = { .pdu = send_sms_613, .pdu_len = sizeof(send_sms_613), .qualifier = 0x00, .alpha_id = "82ル2", .gsm_sms = { { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "112233445566778", }, SMS_TYPE_SUBMIT, {.submit = { .mr = 0x00, .daddr = { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "012345678", }, .pid = 0x40, .dcs = 0x08, .udl = 8, .ud = "80ル3" } } } }; static void test_send_sms(gconstpointer data) { const struct send_sms_test *test = data; struct stk_command *command; command = stk_command_new_from_pdu(test->pdu, test->pdu_len); g_assert(command); g_assert(command->status == STK_PARSE_RESULT_OK); g_assert(command->number == 1); g_assert(command->type == STK_COMMAND_TYPE_SEND_SMS); g_assert(command->qualifier == test->qualifier); g_assert(command->src == STK_DEVICE_IDENTITY_TYPE_UICC); g_assert(command->dst == STK_DEVICE_IDENTITY_TYPE_NETWORK); check_alpha_id(command->send_sms.alpha_id, test->alpha_id); check_gsm_sms(&command->send_sms.gsm_sms, &test->gsm_sms); check_cdma_sms_tpdu(&command->send_sms.cdma_sms, &test->cdma_sms); check_icon_id(&command->send_sms.icon_id, &test->icon_id); check_text_attr(&command->send_sms.text_attr, &test->text_attr); check_frame_id(&command->send_sms.frame_id, &test->frame_id); stk_command_free(command); } struct send_ss_test { const unsigned char *pdu; unsigned int pdu_len; unsigned char qualifier; char *alpha_id; struct stk_ss ss; struct stk_icon_id icon_id; struct stk_text_attribute text_attr; struct stk_frame_id frame_id; }; static unsigned char send_ss_111[] = { 0xD0, 0x29, 0x81, 0x03, 0x01, 0x11, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0C, 0x43, 0x61, 0x6C, 0x6C, 0x20, 0x46, 0x6F, 0x72, 0x77, 0x61, 0x72, 0x64, 0x89, 0x10, 0x91, 0xAA, 0x12, 0x0A, 0x21, 0x43, 0x65, 0x87, 0x09, 0x21, 0x43, 0x65, 0x87, 0xA9, 0x01, 0xFB }; static unsigned char send_ss_141[] = { 0xD0, 0x2D, 0x81, 0x03, 0x01, 0x11, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0C, 0x43, 0x61, 0x6C, 0x6C, 0x20, 0x46, 0x6F, 0x72, 0x77, 0x61, 0x72, 0x64, 0x89, 0x14, 0x91, 0xAA, 0x12, 0x0A, 0x21, 0x43, 0x65, 0x87, 0x09, 0x21, 0x43, 0x65, 0x87, 0x09, 0x21, 0x43, 0x65, 0xA7, 0x11, 0xFB }; static unsigned char send_ss_151[] = { 0xD0, 0x81, 0xFD, 0x81, 0x03, 0x01, 0x11, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x81, 0xEB, 0x45, 0x76, 0x65, 0x6E, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x46, 0x69, 0x78, 0x65, 0x64, 0x20, 0x44, 0x69, 0x61, 0x6C, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x4E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x20, 0x69, 0x73, 0x20, 0x65, 0x6E, 0x61, 0x62, 0x6C, 0x65, 0x64, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x61, 0x72, 0x79, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x72, 0x6F, 0x6C, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x6E, 0x63, 0x6C, 0x75, 0x64, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x53, 0x45, 0x4E, 0x44, 0x20, 0x53, 0x53, 0x20, 0x70, 0x72, 0x6F, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 0x64, 0x20, 0x73, 0x68, 0x61, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x62, 0x65, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x65, 0x64, 0x20, 0x61, 0x67, 0x61, 0x69, 0x6E, 0x73, 0x74, 0x20, 0x74, 0x68, 0x6F, 0x73, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x46, 0x44, 0x4E, 0x20, 0x6C, 0x69, 0x73, 0x74, 0x2E, 0x20, 0x55, 0x70, 0x6F, 0x6E, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x63, 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 0x64, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4D, 0x45, 0x20, 0x73, 0x68, 0x61, 0x6C, 0x6C, 0x20, 0x64, 0x65, 0x63, 0x69, 0x89, 0x04, 0xFF, 0xBA, 0x13, 0xFB }; static unsigned char send_ss_161[] = { 0xD0, 0x1D, 0x81, 0x03, 0x01, 0x11, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x00, 0x89, 0x10, 0x91, 0xAA, 0x12, 0x0A, 0x21, 0x43, 0x65, 0x87, 0x09, 0x21, 0x43, 0x65, 0x87, 0xA9, 0x01, 0xFB }; static unsigned char send_ss_211[] = { 0xD0, 0x2B, 0x81, 0x03, 0x01, 0x11, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0A, 0x42, 0x61, 0x73, 0x69, 0x63, 0x20, 0x49, 0x63, 0x6F, 0x6E, 0x89, 0x10, 0x91, 0xAA, 0x12, 0x0A, 0x21, 0x43, 0x65, 0x87, 0x09, 0x21, 0x43, 0x65, 0x87, 0xA9, 0x01, 0xFB, 0x9E, 0x02, 0x00, 0x01 }; static unsigned char send_ss_221[] = { 0xD0, 0x2C, 0x81, 0x03, 0x01, 0x11, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0B, 0x43, 0x6F, 0x6C, 0x6F, 0x75, 0x72, 0x20, 0x49, 0x63, 0x6F, 0x6E, 0x89, 0x10, 0x91, 0xAA, 0x12, 0x0A, 0x21, 0x43, 0x65, 0x87, 0x09, 0x21, 0x43, 0x65, 0x87, 0xA9, 0x01, 0xFB, 0x9E, 0x02, 0x00, 0x02 }; static unsigned char send_ss_231[] = { 0xD0, 0x2B, 0x81, 0x03, 0x01, 0x11, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0A, 0x42, 0x61, 0x73, 0x69, 0x63, 0x20, 0x49, 0x63, 0x6F, 0x6E, 0x89, 0x10, 0x91, 0xAA, 0x12, 0x0A, 0x21, 0x43, 0x65, 0x87, 0x09, 0x21, 0x43, 0x65, 0x87, 0xA9, 0x01, 0xFB, 0x9E, 0x02, 0x01, 0x01 }; static unsigned char send_ss_241[] = { 0xD0, 0x1D, 0x81, 0x03, 0x01, 0x11, 0x00, 0x82, 0x02, 0x81, 0x83, 0x89, 0x0E, 0x91, 0xAA, 0x12, 0x0A, 0x21, 0x43, 0x65, 0x87, 0x09, 0x21, 0x43, 0x65, 0x87, 0xB9, 0x9E, 0x02, 0x01, 0x01 }; static unsigned char send_ss_311[] = { 0xD0, 0x36, 0x81, 0x03, 0x01, 0x11, 0x00, 0x82, 0x02, 0x81, 0x83, 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, 0x89, 0x10, 0x91, 0xAA, 0x12, 0x0A, 0x21, 0x43, 0x65, 0x87, 0x09, 0x21, 0x43, 0x65, 0x87, 0xA9, 0x01, 0xFB }; static unsigned char send_ss_411[] = { 0xD0, 0x33, 0x81, 0x03, 0x01, 0x11, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x31, 0x89, 0x10, 0x91, 0xAA, 0x12, 0x0A, 0x21, 0x43, 0x65, 0x87, 0x09, 0x21, 0x43, 0x65, 0x87, 0xA9, 0x01, 0xFB, 0xD0, 0x04, 0x00, 0x10, 0x00, 0xB4 }; static unsigned char send_ss_412[] = { 0xD0, 0x2D, 0x81, 0x03, 0x01, 0x11, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x32, 0x89, 0x10, 0x91, 0xAA, 0x12, 0x0A, 0x21, 0x43, 0x65, 0x87, 0x09, 0x21, 0x43, 0x65, 0x87, 0xA9, 0x01, 0xFB }; static unsigned char send_ss_421[] = { 0xD0, 0x33, 0x81, 0x03, 0x01, 0x11, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x31, 0x89, 0x10, 0x91, 0xAA, 0x12, 0x0A, 0x21, 0x43, 0x65, 0x87, 0x09, 0x21, 0x43, 0x65, 0x87, 0xA9, 0x01, 0xFB, 0xD0, 0x04, 0x00, 0x10, 0x01, 0xB4 }; static unsigned char send_ss_422[] = { 0xD0, 0x2D, 0x81, 0x03, 0x01, 0x11, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x32, 0x89, 0x10, 0x91, 0xAA, 0x12, 0x0A, 0x21, 0x43, 0x65, 0x87, 0x09, 0x21, 0x43, 0x65, 0x87, 0xA9, 0x01, 0xFB }; static unsigned char send_ss_431[] = { 0xD0, 0x33, 0x81, 0x03, 0x01, 0x11, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x31, 0x89, 0x10, 0x91, 0xAA, 0x12, 0x0A, 0x21, 0x43, 0x65, 0x87, 0x09, 0x21, 0x43, 0x65, 0x87, 0xA9, 0x01, 0xFB, 0xD0, 0x04, 0x00, 0x10, 0x02, 0xB4 }; static unsigned char send_ss_432[] = { 0xD0, 0x2D, 0x81, 0x03, 0x01, 0x11, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x32, 0x89, 0x10, 0x91, 0xAA, 0x12, 0x0A, 0x21, 0x43, 0x65, 0x87, 0x09, 0x21, 0x43, 0x65, 0x87, 0xA9, 0x01, 0xFB }; static unsigned char send_ss_441[] = { 0xD0, 0x33, 0x81, 0x03, 0x01, 0x11, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x31, 0x89, 0x10, 0x91, 0xAA, 0x12, 0x0A, 0x21, 0x43, 0x65, 0x87, 0x09, 0x21, 0x43, 0x65, 0x87, 0xA9, 0x01, 0xFB, 0xD0, 0x04, 0x00, 0x10, 0x04, 0xB4 }; static unsigned char send_ss_442[] = { 0xD0, 0x33, 0x81, 0x03, 0x01, 0x11, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x32, 0x89, 0x10, 0x91, 0xAA, 0x12, 0x0A, 0x21, 0x43, 0x65, 0x87, 0x09, 0x21, 0x43, 0x65, 0x87, 0xA9, 0x01, 0xFB, 0xD0, 0x04, 0x00, 0x10, 0x00, 0xB4 }; static unsigned char send_ss_443[] = { 0xD0, 0x2D, 0x81, 0x03, 0x01, 0x11, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x33, 0x89, 0x10, 0x91, 0xAA, 0x12, 0x0A, 0x21, 0x43, 0x65, 0x87, 0x09, 0x21, 0x43, 0x65, 0x87, 0xA9, 0x01, 0xFB }; static unsigned char send_ss_451[] = { 0xD0, 0x33, 0x81, 0x03, 0x01, 0x11, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x31, 0x89, 0x10, 0x91, 0xAA, 0x12, 0x0A, 0x21, 0x43, 0x65, 0x87, 0x09, 0x21, 0x43, 0x65, 0x87, 0xA9, 0x01, 0xFB, 0xD0, 0x04, 0x00, 0x10, 0x08, 0xB4 }; static unsigned char send_ss_452[] = { 0xD0, 0x33, 0x81, 0x03, 0x01, 0x11, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x32, 0x89, 0x10, 0x91, 0xAA, 0x12, 0x0A, 0x21, 0x43, 0x65, 0x87, 0x09, 0x21, 0x43, 0x65, 0x87, 0xA9, 0x01, 0xFB, 0xD0, 0x04, 0x00, 0x10, 0x00, 0xB4 }; static unsigned char send_ss_453[] = { 0xD0, 0x2D, 0x81, 0x03, 0x01, 0x11, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x33, 0x89, 0x10, 0x91, 0xAA, 0x12, 0x0A, 0x21, 0x43, 0x65, 0x87, 0x09, 0x21, 0x43, 0x65, 0x87, 0xA9, 0x01, 0xFB }; static unsigned char send_ss_461[] = { 0xD0, 0x33, 0x81, 0x03, 0x01, 0x11, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x31, 0x89, 0x10, 0x91, 0xAA, 0x12, 0x0A, 0x21, 0x43, 0x65, 0x87, 0x09, 0x21, 0x43, 0x65, 0x87, 0xA9, 0x01, 0xFB, 0xD0, 0x04, 0x00, 0x10, 0x10, 0xB4 }; static unsigned char send_ss_462[] = { 0xD0, 0x33, 0x81, 0x03, 0x01, 0x11, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x32, 0x89, 0x10, 0x91, 0xAA, 0x12, 0x0A, 0x21, 0x43, 0x65, 0x87, 0x09, 0x21, 0x43, 0x65, 0x87, 0xA9, 0x01, 0xFB, 0xD0, 0x04, 0x00, 0x10, 0x00, 0xB4 }; static unsigned char send_ss_463[] = { 0xD0, 0x2D, 0x81, 0x03, 0x01, 0x11, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x33, 0x89, 0x10, 0x91, 0xAA, 0x12, 0x0A, 0x21, 0x43, 0x65, 0x87, 0x09, 0x21, 0x43, 0x65, 0x87, 0xA9, 0x01, 0xFB }; static unsigned char send_ss_471[] = { 0xD0, 0x33, 0x81, 0x03, 0x01, 0x11, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x31, 0x89, 0x10, 0x91, 0xAA, 0x12, 0x0A, 0x21, 0x43, 0x65, 0x87, 0x09, 0x21, 0x43, 0x65, 0x87, 0xA9, 0x01, 0xFB, 0xD0, 0x04, 0x00, 0x10, 0x20, 0xB4 }; static unsigned char send_ss_472[] = { 0xD0, 0x33, 0x81, 0x03, 0x01, 0x11, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x32, 0x89, 0x10, 0x91, 0xAA, 0x12, 0x0A, 0x21, 0x43, 0x65, 0x87, 0x09, 0x21, 0x43, 0x65, 0x87, 0xA9, 0x01, 0xFB, 0xD0, 0x04, 0x00, 0x10, 0x00, 0xB4 }; static unsigned char send_ss_473[] = { 0xD0, 0x2D, 0x81, 0x03, 0x01, 0x11, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x33, 0x89, 0x10, 0x91, 0xAA, 0x12, 0x0A, 0x21, 0x43, 0x65, 0x87, 0x09, 0x21, 0x43, 0x65, 0x87, 0xA9, 0x01, 0xFB }; static unsigned char send_ss_481[] = { 0xD0, 0x33, 0x81, 0x03, 0x01, 0x11, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x31, 0x89, 0x10, 0x91, 0xAA, 0x12, 0x0A, 0x21, 0x43, 0x65, 0x87, 0x09, 0x21, 0x43, 0x65, 0x87, 0xA9, 0x01, 0xFB, 0xD0, 0x04, 0x00, 0x10, 0x40, 0xB4 }; static unsigned char send_ss_482[] = { 0xD0, 0x33, 0x81, 0x03, 0x01, 0x11, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x32, 0x89, 0x10, 0x91, 0xAA, 0x12, 0x0A, 0x21, 0x43, 0x65, 0x87, 0x09, 0x21, 0x43, 0x65, 0x87, 0xA9, 0x01, 0xFB, 0xD0, 0x04, 0x00, 0x10, 0x00, 0xB4 }; static unsigned char send_ss_483[] = { 0xD0, 0x2D, 0x81, 0x03, 0x01, 0x11, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x33, 0x89, 0x10, 0x91, 0xAA, 0x12, 0x0A, 0x21, 0x43, 0x65, 0x87, 0x09, 0x21, 0x43, 0x65, 0x87, 0xA9, 0x01, 0xFB }; static unsigned char send_ss_491[] = { 0xD0, 0x33, 0x81, 0x03, 0x01, 0x11, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x31, 0x89, 0x10, 0x91, 0xAA, 0x12, 0x0A, 0x21, 0x43, 0x65, 0x87, 0x09, 0x21, 0x43, 0x65, 0x87, 0xA9, 0x01, 0xFB, 0xD0, 0x04, 0x00, 0x10, 0x80, 0xB4 }; static unsigned char send_ss_492[] = { 0xD0, 0x33, 0x81, 0x03, 0x01, 0x11, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x32, 0x89, 0x10, 0x91, 0xAA, 0x12, 0x0A, 0x21, 0x43, 0x65, 0x87, 0x09, 0x21, 0x43, 0x65, 0x87, 0xA9, 0x01, 0xFB, 0xD0, 0x04, 0x00, 0x10, 0x00, 0xB4 }; static unsigned char send_ss_493[] = { 0xD0, 0x2D, 0x81, 0x03, 0x01, 0x11, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x33, 0x89, 0x10, 0x91, 0xAA, 0x12, 0x0A, 0x21, 0x43, 0x65, 0x87, 0x09, 0x21, 0x43, 0x65, 0x87, 0xA9, 0x01, 0xFB }; static unsigned char send_ss_4101[] = { 0xD0, 0x33, 0x81, 0x03, 0x01, 0x11, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x31, 0x89, 0x10, 0x91, 0xAA, 0x12, 0x0A, 0x21, 0x43, 0x65, 0x87, 0x09, 0x21, 0x43, 0x65, 0x87, 0xA9, 0x01, 0xFB, 0xD0, 0x04, 0x00, 0x10, 0x00, 0xB4 }; static unsigned char send_ss_4102[] = { 0xD0, 0x2D, 0x81, 0x03, 0x01, 0x11, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x32, 0x89, 0x10, 0x91, 0xAA, 0x12, 0x0A, 0x21, 0x43, 0x65, 0x87, 0x09, 0x21, 0x43, 0x65, 0x87, 0xA9, 0x01, 0xFB }; static unsigned char send_ss_511[] = { 0xD0, 0x22, 0x81, 0x03, 0x01, 0x11, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x05, 0x80, 0x4F, 0x60, 0x59, 0x7D, 0x89, 0x10, 0x91, 0xAA, 0x12, 0x0A, 0x21, 0x43, 0x65, 0x87, 0x09, 0x21, 0x43, 0x65, 0x87, 0xA9, 0x01, 0xFB }; static unsigned char send_ss_611[] = { 0xD0, 0x20, 0x81, 0x03, 0x01, 0x11, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x03, 0x80, 0x30, 0xEB, 0x89, 0x10, 0x91, 0xAA, 0x12, 0x0A, 0x21, 0x43, 0x65, 0x87, 0x09, 0x21, 0x43, 0x65, 0x87, 0xA9, 0x01, 0xFB }; static struct send_ss_test send_ss_data_111 = { .pdu = send_ss_111, .pdu_len = sizeof(send_ss_111), .qualifier = 0x00, .alpha_id = "Call Forward", .ss = { .ton_npi = 0x91, .ss = "**21*01234567890123456789*10#" } }; static struct send_ss_test send_ss_data_141 = { .pdu = send_ss_141, .pdu_len = sizeof(send_ss_141), .qualifier = 0x00, .alpha_id = "Call Forward", .ss = { .ton_npi = 0x91, .ss = "**21*0123456789012345678901234567*11#" } }; static struct send_ss_test send_ss_data_151 = { .pdu = send_ss_151, .pdu_len = sizeof(send_ss_151), .qualifier = 0x00, .alpha_id = "Even if the Fixed Dialling Number service is enabled, the " "supplementary service control string included in the SEND SS " "proactive command shall not be checked against those of the " "FDN list. Upon receiving this command, the ME shall deci", .ss = { .ton_npi = 0xFF, .ss = "*#31#" } }; static struct send_ss_test send_ss_data_161 = { .pdu = send_ss_161, .pdu_len = sizeof(send_ss_161), .qualifier = 0x00, .alpha_id = "", .ss = { .ton_npi = 0x91, .ss = "**21*01234567890123456789*10#" } }; static struct send_ss_test send_ss_data_211 = { .pdu = send_ss_211, .pdu_len = sizeof(send_ss_211), .qualifier = 0x00, .alpha_id = "Basic Icon", .ss = { .ton_npi = 0x91, .ss = "**21*01234567890123456789*10#" }, .icon_id = { .qualifier = STK_ICON_QUALIFIER_TYPE_SELF_EXPLANATORY, .id = 0x01 } }; static struct send_ss_test send_ss_data_221 = { .pdu = send_ss_221, .pdu_len = sizeof(send_ss_221), .qualifier = 0x00, .alpha_id = "Colour Icon", .ss = { .ton_npi = 0x91, .ss = "**21*01234567890123456789*10#" }, .icon_id = { .qualifier = STK_ICON_QUALIFIER_TYPE_SELF_EXPLANATORY, .id = 0x02 } }; static struct send_ss_test send_ss_data_231 = { .pdu = send_ss_231, .pdu_len = sizeof(send_ss_231), .qualifier = 0x00, .alpha_id = "Basic Icon", .ss = { .ton_npi = 0x91, .ss = "**21*01234567890123456789*10#" }, .icon_id = { .qualifier = STK_ICON_QUALIFIER_TYPE_NON_SELF_EXPLANATORY, .id = 0x01 } }; static struct send_ss_test send_ss_data_241 = { .pdu = send_ss_241, .pdu_len = sizeof(send_ss_241), .qualifier = 0x00, .ss = { .ton_npi = 0x91, .ss = "**21*01234567890123456789#" }, .icon_id = { .qualifier = STK_ICON_QUALIFIER_TYPE_NON_SELF_EXPLANATORY, .id = 0x01 } }; static struct send_ss_test send_ss_data_311 = { .pdu = send_ss_311, .pdu_len = sizeof(send_ss_311), .qualifier = 0x00, .alpha_id = "ЗДРАВСТВУЙТЕ", .ss = { .ton_npi = 0x91, .ss = "**21*01234567890123456789*10#" } }; static struct send_ss_test send_ss_data_411 = { .pdu = send_ss_411, .pdu_len = sizeof(send_ss_411), .qualifier = 0x00, .alpha_id = "Text Attribute 1", .ss = { .ton_npi = 0x91, .ss = "**21*01234567890123456789*10#" }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } } }; static struct send_ss_test send_ss_data_412 = { .pdu = send_ss_412, .pdu_len = sizeof(send_ss_412), .qualifier = 0x00, .alpha_id = "Text Attribute 2", .ss = { .ton_npi = 0x91, .ss = "**21*01234567890123456789*10#" } }; static struct send_ss_test send_ss_data_421 = { .pdu = send_ss_421, .pdu_len = sizeof(send_ss_421), .qualifier = 0x00, .alpha_id = "Text Attribute 1", .ss = { .ton_npi = 0x91, .ss = "**21*01234567890123456789*10#" }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x01, 0xB4 } } }; static struct send_ss_test send_ss_data_422 = { .pdu = send_ss_422, .pdu_len = sizeof(send_ss_422), .qualifier = 0x00, .alpha_id = "Text Attribute 2", .ss = { .ton_npi = 0x91, .ss = "**21*01234567890123456789*10#" } }; static struct send_ss_test send_ss_data_431 = { .pdu = send_ss_431, .pdu_len = sizeof(send_ss_431), .qualifier = 0x00, .alpha_id = "Text Attribute 1", .ss = { .ton_npi = 0x91, .ss = "**21*01234567890123456789*10#" }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x02, 0xB4 } } }; static struct send_ss_test send_ss_data_432 = { .pdu = send_ss_432, .pdu_len = sizeof(send_ss_432), .qualifier = 0x00, .alpha_id = "Text Attribute 2", .ss = { .ton_npi = 0x91, .ss = "**21*01234567890123456789*10#" } }; static struct send_ss_test send_ss_data_441 = { .pdu = send_ss_441, .pdu_len = sizeof(send_ss_441), .qualifier = 0x00, .alpha_id = "Text Attribute 1", .ss = { .ton_npi = 0x91, .ss = "**21*01234567890123456789*10#" }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x04, 0xB4 } } }; static struct send_ss_test send_ss_data_442 = { .pdu = send_ss_442, .pdu_len = sizeof(send_ss_442), .qualifier = 0x00, .alpha_id = "Text Attribute 2", .ss = { .ton_npi = 0x91, .ss = "**21*01234567890123456789*10#" }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } } }; static struct send_ss_test send_ss_data_443 = { .pdu = send_ss_443, .pdu_len = sizeof(send_ss_443), .qualifier = 0x00, .alpha_id = "Text Attribute 3", .ss = { .ton_npi = 0x91, .ss = "**21*01234567890123456789*10#" } }; static struct send_ss_test send_ss_data_451 = { .pdu = send_ss_451, .pdu_len = sizeof(send_ss_451), .qualifier = 0x00, .alpha_id = "Text Attribute 1", .ss = { .ton_npi = 0x91, .ss = "**21*01234567890123456789*10#" }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x08, 0xB4 } } }; static struct send_ss_test send_ss_data_452 = { .pdu = send_ss_452, .pdu_len = sizeof(send_ss_452), .qualifier = 0x00, .alpha_id = "Text Attribute 2", .ss = { .ton_npi = 0x91, .ss = "**21*01234567890123456789*10#" }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } } }; static struct send_ss_test send_ss_data_453 = { .pdu = send_ss_453, .pdu_len = sizeof(send_ss_453), .qualifier = 0x00, .alpha_id = "Text Attribute 3", .ss = { .ton_npi = 0x91, .ss = "**21*01234567890123456789*10#" } }; static struct send_ss_test send_ss_data_461 = { .pdu = send_ss_461, .pdu_len = sizeof(send_ss_461), .qualifier = 0x00, .alpha_id = "Text Attribute 1", .ss = { .ton_npi = 0x91, .ss = "**21*01234567890123456789*10#" }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x10, 0xB4 } } }; static struct send_ss_test send_ss_data_462 = { .pdu = send_ss_462, .pdu_len = sizeof(send_ss_462), .qualifier = 0x00, .alpha_id = "Text Attribute 2", .ss = { .ton_npi = 0x91, .ss = "**21*01234567890123456789*10#" }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } } }; static struct send_ss_test send_ss_data_463 = { .pdu = send_ss_463, .pdu_len = sizeof(send_ss_463), .qualifier = 0x00, .alpha_id = "Text Attribute 3", .ss = { .ton_npi = 0x91, .ss = "**21*01234567890123456789*10#" } }; static struct send_ss_test send_ss_data_471 = { .pdu = send_ss_471, .pdu_len = sizeof(send_ss_471), .qualifier = 0x00, .alpha_id = "Text Attribute 1", .ss = { .ton_npi = 0x91, .ss = "**21*01234567890123456789*10#" }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x20, 0xB4 } } }; static struct send_ss_test send_ss_data_472 = { .pdu = send_ss_472, .pdu_len = sizeof(send_ss_472), .qualifier = 0x00, .alpha_id = "Text Attribute 2", .ss = { .ton_npi = 0x91, .ss = "**21*01234567890123456789*10#" }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } } }; static struct send_ss_test send_ss_data_473 = { .pdu = send_ss_473, .pdu_len = sizeof(send_ss_473), .qualifier = 0x00, .alpha_id = "Text Attribute 3", .ss = { .ton_npi = 0x91, .ss = "**21*01234567890123456789*10#" } }; static struct send_ss_test send_ss_data_481 = { .pdu = send_ss_481, .pdu_len = sizeof(send_ss_481), .qualifier = 0x00, .alpha_id = "Text Attribute 1", .ss = { .ton_npi = 0x91, .ss = "**21*01234567890123456789*10#" }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x40, 0xB4 } } }; static struct send_ss_test send_ss_data_482 = { .pdu = send_ss_482, .pdu_len = sizeof(send_ss_482), .qualifier = 0x00, .alpha_id = "Text Attribute 2", .ss = { .ton_npi = 0x91, .ss = "**21*01234567890123456789*10#" }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } } }; static struct send_ss_test send_ss_data_483 = { .pdu = send_ss_483, .pdu_len = sizeof(send_ss_483), .qualifier = 0x00, .alpha_id = "Text Attribute 3", .ss = { .ton_npi = 0x91, .ss = "**21*01234567890123456789*10#" } }; static struct send_ss_test send_ss_data_491 = { .pdu = send_ss_491, .pdu_len = sizeof(send_ss_491), .qualifier = 0x00, .alpha_id = "Text Attribute 1", .ss = { .ton_npi = 0x91, .ss = "**21*01234567890123456789*10#" }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x80, 0xB4 } } }; static struct send_ss_test send_ss_data_492 = { .pdu = send_ss_492, .pdu_len = sizeof(send_ss_492), .qualifier = 0x00, .alpha_id = "Text Attribute 2", .ss = { .ton_npi = 0x91, .ss = "**21*01234567890123456789*10#" }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } } }; static struct send_ss_test send_ss_data_493 = { .pdu = send_ss_493, .pdu_len = sizeof(send_ss_493), .qualifier = 0x00, .alpha_id = "Text Attribute 3", .ss = { .ton_npi = 0x91, .ss = "**21*01234567890123456789*10#" } }; static struct send_ss_test send_ss_data_4101 = { .pdu = send_ss_4101, .pdu_len = sizeof(send_ss_4101), .qualifier = 0x00, .alpha_id = "Text Attribute 1", .ss = { .ton_npi = 0x91, .ss = "**21*01234567890123456789*10#" }, .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } } }; static struct send_ss_test send_ss_data_4102 = { .pdu = send_ss_4102, .pdu_len = sizeof(send_ss_4102), .qualifier = 0x00, .alpha_id = "Text Attribute 2", .ss = { .ton_npi = 0x91, .ss = "**21*01234567890123456789*10#" } }; static struct send_ss_test send_ss_data_511 = { .pdu = send_ss_511, .pdu_len = sizeof(send_ss_511), .qualifier = 0x00, .alpha_id = "你好", .ss = { .ton_npi = 0x91, .ss = "**21*01234567890123456789*10#" } }; static struct send_ss_test send_ss_data_611 = { .pdu = send_ss_611, .pdu_len = sizeof(send_ss_611), .qualifier = 0x00, .alpha_id = "ル", .ss = { .ton_npi = 0x91, .ss = "**21*01234567890123456789*10#" } }; static void test_send_ss(gconstpointer data) { const struct send_ss_test *test = data; struct stk_command *command; command = stk_command_new_from_pdu(test->pdu, test->pdu_len); g_assert(command); g_assert(command->status == STK_PARSE_RESULT_OK); g_assert(command->number == 1); g_assert(command->type == STK_COMMAND_TYPE_SEND_SS); g_assert(command->qualifier == test->qualifier); g_assert(command->src == STK_DEVICE_IDENTITY_TYPE_UICC); g_assert(command->dst == STK_DEVICE_IDENTITY_TYPE_NETWORK); check_alpha_id(command->send_ss.alpha_id, test->alpha_id); check_ss(&command->send_ss.ss, &test->ss); check_icon_id(&command->send_ss.icon_id, &test->icon_id); check_text_attr(&command->send_ss.text_attr, &test->text_attr); check_frame_id(&command->send_ss.frame_id, &test->frame_id); stk_command_free(command); } struct send_ussd_test { const unsigned char *pdu; unsigned int pdu_len; unsigned char qualifier; char *alpha_id; char *ussd; struct stk_icon_id icon_id; struct stk_text_attribute text_attr; struct stk_frame_id frame_id; }; static unsigned char send_ussd_111[] = { 0xD0, 0x50, 0x81, 0x03, 0x01, 0x12, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0A, 0x37, 0x2D, 0x62, 0x69, 0x74, 0x20, 0x55, 0x53, 0x53, 0x44, 0x8A, 0x39, 0xF0, 0x41, 0xE1, 0x90, 0x58, 0x34, 0x1E, 0x91, 0x49, 0xE5, 0x92, 0xD9, 0x74, 0x3E, 0xA1, 0x51, 0xE9, 0x94, 0x5A, 0xB5, 0x5E, 0xB1, 0x59, 0x6D, 0x2B, 0x2C, 0x1E, 0x93, 0xCB, 0xE6, 0x33, 0x3A, 0xAD, 0x5E, 0xB3, 0xDB, 0xEE, 0x37, 0x3C, 0x2E, 0x9F, 0xD3, 0xEB, 0xF6, 0x3B, 0x3E, 0xAF, 0x6F, 0xC5, 0x64, 0x33, 0x5A, 0xCD, 0x76, 0xC3, 0xE5, 0x60 }; static unsigned char send_ussd_121[] = { 0xD0, 0x58, 0x81, 0x03, 0x01, 0x12, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0A, 0x38, 0x2D, 0x62, 0x69, 0x74, 0x20, 0x55, 0x53, 0x53, 0x44, 0x8A, 0x41, 0x44, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x2D, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x2D, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30 }; static unsigned char send_ussd_131[] = { 0xD0, 0x2F, 0x81, 0x03, 0x01, 0x12, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x09, 0x55, 0x43, 0x53, 0x32, 0x20, 0x55, 0x53, 0x53, 0x44, 0x8A, 0x19, 0x48, 0x04, 0x17, 0x04, 0x14, 0x04, 0x20, 0x04, 0x10, 0x04, 0x12, 0x04, 0x21, 0x04, 0x22, 0x04, 0x12, 0x04, 0x23, 0x04, 0x19, 0x04, 0x22, 0x04, 0x15 }; static unsigned char send_ussd_161[] = { 0xD0, 0x81, 0xFD, 0x81, 0x03, 0x01, 0x12, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x81, 0xB6, 0x6F, 0x6E, 0x63, 0x65, 0x20, 0x61, 0x20, 0x52, 0x45, 0x4C, 0x45, 0x41, 0x53, 0x45, 0x20, 0x43, 0x4F, 0x4D, 0x50, 0x4C, 0x45, 0x54, 0x45, 0x20, 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x55, 0x53, 0x53, 0x44, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x52, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x20, 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x68, 0x61, 0x73, 0x20, 0x62, 0x65, 0x65, 0x6E, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4D, 0x45, 0x20, 0x73, 0x68, 0x61, 0x6C, 0x6C, 0x20, 0x69, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x53, 0x49, 0x4D, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 0x64, 0x20, 0x68, 0x61, 0x73, 0x8A, 0x39, 0xF0, 0x41, 0xE1, 0x90, 0x58, 0x34, 0x1E, 0x91, 0x49, 0xE5, 0x92, 0xD9, 0x74, 0x3E, 0xA1, 0x51, 0xE9, 0x94, 0x5A, 0xB5, 0x5E, 0xB1, 0x59, 0x6D, 0x2B, 0x2C, 0x1E, 0x93, 0xCB, 0xE6, 0x33, 0x3A, 0xAD, 0x5E, 0xB3, 0xDB, 0xEE, 0x37, 0x3C, 0x2E, 0x9F, 0xD3, 0xEB, 0xF6, 0x3B, 0x3E, 0xAF, 0x6F, 0xC5, 0x64, 0x33, 0x5A, 0xCD, 0x76, 0xC3, 0xE5, 0x60 }; static unsigned char send_ussd_171[] = { 0xD0, 0x44, 0x81, 0x03, 0x01, 0x12, 0x00, 0x82, 0x02, 0x81, 0x83, 0x8A, 0x39, 0xF0, 0x41, 0xE1, 0x90, 0x58, 0x34, 0x1E, 0x91, 0x49, 0xE5, 0x92, 0xD9, 0x74, 0x3E, 0xA1, 0x51, 0xE9, 0x94, 0x5A, 0xB5, 0x5E, 0xB1, 0x59, 0x6D, 0x2B, 0x2C, 0x1E, 0x93, 0xCB, 0xE6, 0x33, 0x3A, 0xAD, 0x5E, 0xB3, 0xDB, 0xEE, 0x37, 0x3C, 0x2E, 0x9F, 0xD3, 0xEB, 0xF6, 0x3B, 0x3E, 0xAF, 0x6F, 0xC5, 0x64, 0x33, 0x5A, 0xCD, 0x76, 0xC3, 0xE5, 0x60 }; static unsigned char send_ussd_181[] = { 0xD0, 0x46, 0x81, 0x03, 0x01, 0x12, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x00, 0x8A, 0x39, 0xF0, 0x41, 0xE1, 0x90, 0x58, 0x34, 0x1E, 0x91, 0x49, 0xE5, 0x92, 0xD9, 0x74, 0x3E, 0xA1, 0x51, 0xE9, 0x94, 0x5A, 0xB5, 0x5E, 0xB1, 0x59, 0x6D, 0x2B, 0x2C, 0x1E, 0x93, 0xCB, 0xE6, 0x33, 0x3A, 0xAD, 0x5E, 0xB3, 0xDB, 0xEE, 0x37, 0x3C, 0x2E, 0x9F, 0xD3, 0xEB, 0xF6, 0x3B, 0x3E, 0xAF, 0x6F, 0xC5, 0x64, 0x33, 0x5A, 0xCD, 0x76, 0xC3, 0xE5, 0x60 }; static unsigned char send_ussd_211[] = { 0xD0, 0x54, 0x81, 0x03, 0x01, 0x12, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0A, 0x42, 0x61, 0x73, 0x69, 0x63, 0x20, 0x49, 0x63, 0x6F, 0x6E, 0x8A, 0x39, 0xF0, 0x41, 0xE1, 0x90, 0x58, 0x34, 0x1E, 0x91, 0x49, 0xE5, 0x92, 0xD9, 0x74, 0x3E, 0xA1, 0x51, 0xE9, 0x94, 0x5A, 0xB5, 0x5E, 0xB1, 0x59, 0x6D, 0x2B, 0x2C, 0x1E, 0x93, 0xCB, 0xE6, 0x33, 0x3A, 0xAD, 0x5E, 0xB3, 0xDB, 0xEE, 0x37, 0x3C, 0x2E, 0x9F, 0xD3, 0xEB, 0xF6, 0x3B, 0x3E, 0xAF, 0x6F, 0xC5, 0x64, 0x33, 0x5A, 0xCD, 0x76, 0xC3, 0xE5, 0x60, 0x9E, 0x02, 0x00, 0x01 }; static unsigned char send_ussd_221[] = { 0xD0, 0x54, 0x81, 0x03, 0x01, 0x12, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0A, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x20, 0x49, 0x63, 0x6F, 0x6E, 0x8A, 0x39, 0xF0, 0x41, 0xE1, 0x90, 0x58, 0x34, 0x1E, 0x91, 0x49, 0xE5, 0x92, 0xD9, 0x74, 0x3E, 0xA1, 0x51, 0xE9, 0x94, 0x5A, 0xB5, 0x5E, 0xB1, 0x59, 0x6D, 0x2B, 0x2C, 0x1E, 0x93, 0xCB, 0xE6, 0x33, 0x3A, 0xAD, 0x5E, 0xB3, 0xDB, 0xEE, 0x37, 0x3C, 0x2E, 0x9F, 0xD3, 0xEB, 0xF6, 0x3B, 0x3E, 0xAF, 0x6F, 0xC5, 0x64, 0x33, 0x5A, 0xCD, 0x76, 0xC3, 0xE5, 0x60, 0x9E, 0x02, 0x00, 0x02 }; static unsigned char send_ussd_231[] = { 0xD0, 0x54, 0x81, 0x03, 0x01, 0x12, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0A, 0x42, 0x61, 0x73, 0x69, 0x63, 0x20, 0x49, 0x63, 0x6F, 0x6E, 0x8A, 0x39, 0xF0, 0x41, 0xE1, 0x90, 0x58, 0x34, 0x1E, 0x91, 0x49, 0xE5, 0x92, 0xD9, 0x74, 0x3E, 0xA1, 0x51, 0xE9, 0x94, 0x5A, 0xB5, 0x5E, 0xB1, 0x59, 0x6D, 0x2B, 0x2C, 0x1E, 0x93, 0xCB, 0xE6, 0x33, 0x3A, 0xAD, 0x5E, 0xB3, 0xDB, 0xEE, 0x37, 0x3C, 0x2E, 0x9F, 0xD3, 0xEB, 0xF6, 0x3B, 0x3E, 0xAF, 0x6F, 0xC5, 0x64, 0x33, 0x5A, 0xCD, 0x76, 0xC3, 0xE5, 0x60, 0x9E, 0x02, 0x01, 0x01 }; static unsigned char send_ussd_241[] = { 0xD0, 0x48, 0x81, 0x03, 0x01, 0x12, 0x00, 0x82, 0x02, 0x81, 0x83, 0x8A, 0x39, 0xF0, 0x41, 0xE1, 0x90, 0x58, 0x34, 0x1E, 0x91, 0x49, 0xE5, 0x92, 0xD9, 0x74, 0x3E, 0xA1, 0x51, 0xE9, 0x94, 0x5A, 0xB5, 0x5E, 0xB1, 0x59, 0x6D, 0x2B, 0x2C, 0x1E, 0x93, 0xCB, 0xE6, 0x33, 0x3A, 0xAD, 0x5E, 0xB3, 0xDB, 0xEE, 0x37, 0x3C, 0x2E, 0x9F, 0xD3, 0xEB, 0xF6, 0x3B, 0x3E, 0xAF, 0x6F, 0xC5, 0x64, 0x33, 0x5A, 0xCD, 0x76, 0xC3, 0xE5, 0x60, 0x9E, 0x02, 0x01, 0x01 }; static unsigned char send_ussd_311[] = { 0xD0, 0x5F, 0x81, 0x03, 0x01, 0x12, 0x00, 0x82, 0x02, 0x81, 0x83, 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, 0x8A, 0x39, 0xF0, 0x41, 0xE1, 0x90, 0x58, 0x34, 0x1E, 0x91, 0x49, 0xE5, 0x92, 0xD9, 0x74, 0x3E, 0xA1, 0x51, 0xE9, 0x94, 0x5A, 0xB5, 0x5E, 0xB1, 0x59, 0x6D, 0x2B, 0x2C, 0x1E, 0x93, 0xCB, 0xE6, 0x33, 0x3A, 0xAD, 0x5E, 0xB3, 0xDB, 0xEE, 0x37, 0x3C, 0x2E, 0x9F, 0xD3, 0xEB, 0xF6, 0x3B, 0x3E, 0xAF, 0x6F, 0xC5, 0x64, 0x33, 0x5A, 0xCD, 0x76, 0xC3, 0xE5, 0x60 }; static unsigned char send_ussd_411[] = { 0xD0, 0x5C, 0x81, 0x03, 0x01, 0x12, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x31, 0x8A, 0x39, 0xF0, 0x41, 0xE1, 0x90, 0x58, 0x34, 0x1E, 0x91, 0x49, 0xE5, 0x92, 0xD9, 0x74, 0x3E, 0xA1, 0x51, 0xE9, 0x94, 0x5A, 0xB5, 0x5E, 0xB1, 0x59, 0x6D, 0x2B, 0x2C, 0x1E, 0x93, 0xCB, 0xE6, 0x33, 0x3A, 0xAD, 0x5E, 0xB3, 0xDB, 0xEE, 0x37, 0x3C, 0x2E, 0x9F, 0xD3, 0xEB, 0xF6, 0x3B, 0x3E, 0xAF, 0x6F, 0xC5, 0x64, 0x33, 0x5A, 0xCD, 0x76, 0xC3, 0xE5, 0x60, 0xD0, 0x04, 0x00, 0x10, 0x00, 0xB4 }; static unsigned char send_ussd_412[] = { 0xD0, 0x56, 0x81, 0x03, 0x01, 0x12, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x32, 0x8A, 0x39, 0xF0, 0x41, 0xE1, 0x90, 0x58, 0x34, 0x1E, 0x91, 0x49, 0xE5, 0x92, 0xD9, 0x74, 0x3E, 0xA1, 0x51, 0xE9, 0x94, 0x5A, 0xB5, 0x5E, 0xB1, 0x59, 0x6D, 0x2B, 0x2C, 0x1E, 0x93, 0xCB, 0xE6, 0x33, 0x3A, 0xAD, 0x5E, 0xB3, 0xDB, 0xEE, 0x37, 0x3C, 0x2E, 0x9F, 0xD3, 0xEB, 0xF6, 0x3B, 0x3E, 0xAF, 0x6F, 0xC5, 0x64, 0x33, 0x5A, 0xCD, 0x76, 0xC3, 0xE5, 0x60 }; static unsigned char send_ussd_421[] = { 0xD0, 0x5C, 0x81, 0x03, 0x01, 0x12, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x31, 0x8A, 0x39, 0xF0, 0x41, 0xE1, 0x90, 0x58, 0x34, 0x1E, 0x91, 0x49, 0xE5, 0x92, 0xD9, 0x74, 0x3E, 0xA1, 0x51, 0xE9, 0x94, 0x5A, 0xB5, 0x5E, 0xB1, 0x59, 0x6D, 0x2B, 0x2C, 0x1E, 0x93, 0xCB, 0xE6, 0x33, 0x3A, 0xAD, 0x5E, 0xB3, 0xDB, 0xEE, 0x37, 0x3C, 0x2E, 0x9F, 0xD3, 0xEB, 0xF6, 0x3B, 0x3E, 0xAF, 0x6F, 0xC5, 0x64, 0x33, 0x5A, 0xCD, 0x76, 0xC3, 0xE5, 0x60, 0xD0, 0x04, 0x00, 0x10, 0x01, 0xB4 }; static unsigned char send_ussd_422[] = { 0xD0, 0x56, 0x81, 0x03, 0x01, 0x12, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x32, 0x8A, 0x39, 0xF0, 0x41, 0xE1, 0x90, 0x58, 0x34, 0x1E, 0x91, 0x49, 0xE5, 0x92, 0xD9, 0x74, 0x3E, 0xA1, 0x51, 0xE9, 0x94, 0x5A, 0xB5, 0x5E, 0xB1, 0x59, 0x6D, 0x2B, 0x2C, 0x1E, 0x93, 0xCB, 0xE6, 0x33, 0x3A, 0xAD, 0x5E, 0xB3, 0xDB, 0xEE, 0x37, 0x3C, 0x2E, 0x9F, 0xD3, 0xEB, 0xF6, 0x3B, 0x3E, 0xAF, 0x6F, 0xC5, 0x64, 0x33, 0x5A, 0xCD, 0x76, 0xC3, 0xE5, 0x60 }; static unsigned char send_ussd_431[] = { 0xD0, 0x5C, 0x81, 0x03, 0x01, 0x12, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x31, 0x8A, 0x39, 0xF0, 0x41, 0xE1, 0x90, 0x58, 0x34, 0x1E, 0x91, 0x49, 0xE5, 0x92, 0xD9, 0x74, 0x3E, 0xA1, 0x51, 0xE9, 0x94, 0x5A, 0xB5, 0x5E, 0xB1, 0x59, 0x6D, 0x2B, 0x2C, 0x1E, 0x93, 0xCB, 0xE6, 0x33, 0x3A, 0xAD, 0x5E, 0xB3, 0xDB, 0xEE, 0x37, 0x3C, 0x2E, 0x9F, 0xD3, 0xEB, 0xF6, 0x3B, 0x3E, 0xAF, 0x6F, 0xC5, 0x64, 0x33, 0x5A, 0xCD, 0x76, 0xC3, 0xE5, 0x60, 0xD0, 0x04, 0x00, 0x10, 0x02, 0xB4 }; static unsigned char send_ussd_432[] = { 0xD0, 0x56, 0x81, 0x03, 0x01, 0x12, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x32, 0x8A, 0x39, 0xF0, 0x41, 0xE1, 0x90, 0x58, 0x34, 0x1E, 0x91, 0x49, 0xE5, 0x92, 0xD9, 0x74, 0x3E, 0xA1, 0x51, 0xE9, 0x94, 0x5A, 0xB5, 0x5E, 0xB1, 0x59, 0x6D, 0x2B, 0x2C, 0x1E, 0x93, 0xCB, 0xE6, 0x33, 0x3A, 0xAD, 0x5E, 0xB3, 0xDB, 0xEE, 0x37, 0x3C, 0x2E, 0x9F, 0xD3, 0xEB, 0xF6, 0x3B, 0x3E, 0xAF, 0x6F, 0xC5, 0x64, 0x33, 0x5A, 0xCD, 0x76, 0xC3, 0xE5, 0x60 }; static unsigned char send_ussd_441[] = { 0xD0, 0x5C, 0x81, 0x03, 0x01, 0x12, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x31, 0x8A, 0x39, 0xF0, 0x41, 0xE1, 0x90, 0x58, 0x34, 0x1E, 0x91, 0x49, 0xE5, 0x92, 0xD9, 0x74, 0x3E, 0xA1, 0x51, 0xE9, 0x94, 0x5A, 0xB5, 0x5E, 0xB1, 0x59, 0x6D, 0x2B, 0x2C, 0x1E, 0x93, 0xCB, 0xE6, 0x33, 0x3A, 0xAD, 0x5E, 0xB3, 0xDB, 0xEE, 0x37, 0x3C, 0x2E, 0x9F, 0xD3, 0xEB, 0xF6, 0x3B, 0x3E, 0xAF, 0x6F, 0xC5, 0x64, 0x33, 0x5A, 0xCD, 0x76, 0xC3, 0xE5, 0x60, 0xD0, 0x04, 0x00, 0x10, 0x04, 0xB4 }; static unsigned char send_ussd_442[] = { 0xD0, 0x5C, 0x81, 0x03, 0x01, 0x12, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x32, 0x8A, 0x39, 0xF0, 0x41, 0xE1, 0x90, 0x58, 0x34, 0x1E, 0x91, 0x49, 0xE5, 0x92, 0xD9, 0x74, 0x3E, 0xA1, 0x51, 0xE9, 0x94, 0x5A, 0xB5, 0x5E, 0xB1, 0x59, 0x6D, 0x2B, 0x2C, 0x1E, 0x93, 0xCB, 0xE6, 0x33, 0x3A, 0xAD, 0x5E, 0xB3, 0xDB, 0xEE, 0x37, 0x3C, 0x2E, 0x9F, 0xD3, 0xEB, 0xF6, 0x3B, 0x3E, 0xAF, 0x6F, 0xC5, 0x64, 0x33, 0x5A, 0xCD, 0x76, 0xC3, 0xE5, 0x60, 0xD0, 0x04, 0x00, 0x10, 0x00, 0xB4 }; static unsigned char send_ussd_443[] = { 0xD0, 0x56, 0x81, 0x03, 0x01, 0x12, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x33, 0x8A, 0x39, 0xF0, 0x41, 0xE1, 0x90, 0x58, 0x34, 0x1E, 0x91, 0x49, 0xE5, 0x92, 0xD9, 0x74, 0x3E, 0xA1, 0x51, 0xE9, 0x94, 0x5A, 0xB5, 0x5E, 0xB1, 0x59, 0x6D, 0x2B, 0x2C, 0x1E, 0x93, 0xCB, 0xE6, 0x33, 0x3A, 0xAD, 0x5E, 0xB3, 0xDB, 0xEE, 0x37, 0x3C, 0x2E, 0x9F, 0xD3, 0xEB, 0xF6, 0x3B, 0x3E, 0xAF, 0x6F, 0xC5, 0x64, 0x33, 0x5A, 0xCD, 0x76, 0xC3, 0xE5, 0x60 }; static unsigned char send_ussd_451[] = { 0xD0, 0x5C, 0x81, 0x03, 0x01, 0x12, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x31, 0x8A, 0x39, 0xF0, 0x41, 0xE1, 0x90, 0x58, 0x34, 0x1E, 0x91, 0x49, 0xE5, 0x92, 0xD9, 0x74, 0x3E, 0xA1, 0x51, 0xE9, 0x94, 0x5A, 0xB5, 0x5E, 0xB1, 0x59, 0x6D, 0x2B, 0x2C, 0x1E, 0x93, 0xCB, 0xE6, 0x33, 0x3A, 0xAD, 0x5E, 0xB3, 0xDB, 0xEE, 0x37, 0x3C, 0x2E, 0x9F, 0xD3, 0xEB, 0xF6, 0x3B, 0x3E, 0xAF, 0x6F, 0xC5, 0x64, 0x33, 0x5A, 0xCD, 0x76, 0xC3, 0xE5, 0x60, 0xD0, 0x04, 0x00, 0x10, 0x08, 0xB4 }; static unsigned char send_ussd_452[] = { 0xD0, 0x5C, 0x81, 0x03, 0x01, 0x12, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x32, 0x8A, 0x39, 0xF0, 0x41, 0xE1, 0x90, 0x58, 0x34, 0x1E, 0x91, 0x49, 0xE5, 0x92, 0xD9, 0x74, 0x3E, 0xA1, 0x51, 0xE9, 0x94, 0x5A, 0xB5, 0x5E, 0xB1, 0x59, 0x6D, 0x2B, 0x2C, 0x1E, 0x93, 0xCB, 0xE6, 0x33, 0x3A, 0xAD, 0x5E, 0xB3, 0xDB, 0xEE, 0x37, 0x3C, 0x2E, 0x9F, 0xD3, 0xEB, 0xF6, 0x3B, 0x3E, 0xAF, 0x6F, 0xC5, 0x64, 0x33, 0x5A, 0xCD, 0x76, 0xC3, 0xE5, 0x60, 0xD0, 0x04, 0x00, 0x10, 0x00, 0xB4 }; static unsigned char send_ussd_453[] = { 0xD0, 0x56, 0x81, 0x03, 0x01, 0x12, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x33, 0x8A, 0x39, 0xF0, 0x41, 0xE1, 0x90, 0x58, 0x34, 0x1E, 0x91, 0x49, 0xE5, 0x92, 0xD9, 0x74, 0x3E, 0xA1, 0x51, 0xE9, 0x94, 0x5A, 0xB5, 0x5E, 0xB1, 0x59, 0x6D, 0x2B, 0x2C, 0x1E, 0x93, 0xCB, 0xE6, 0x33, 0x3A, 0xAD, 0x5E, 0xB3, 0xDB, 0xEE, 0x37, 0x3C, 0x2E, 0x9F, 0xD3, 0xEB, 0xF6, 0x3B, 0x3E, 0xAF, 0x6F, 0xC5, 0x64, 0x33, 0x5A, 0xCD, 0x76, 0xC3, 0xE5, 0x60 }; static unsigned char send_ussd_461[] = { 0xD0, 0x5C, 0x81, 0x03, 0x01, 0x12, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x31, 0x8A, 0x39, 0xF0, 0x41, 0xE1, 0x90, 0x58, 0x34, 0x1E, 0x91, 0x49, 0xE5, 0x92, 0xD9, 0x74, 0x3E, 0xA1, 0x51, 0xE9, 0x94, 0x5A, 0xB5, 0x5E, 0xB1, 0x59, 0x6D, 0x2B, 0x2C, 0x1E, 0x93, 0xCB, 0xE6, 0x33, 0x3A, 0xAD, 0x5E, 0xB3, 0xDB, 0xEE, 0x37, 0x3C, 0x2E, 0x9F, 0xD3, 0xEB, 0xF6, 0x3B, 0x3E, 0xAF, 0x6F, 0xC5, 0x64, 0x33, 0x5A, 0xCD, 0x76, 0xC3, 0xE5, 0x60, 0xD0, 0x04, 0x00, 0x10, 0x10, 0xB4 }; static unsigned char send_ussd_462[] = { 0xD0, 0x5C, 0x81, 0x03, 0x01, 0x12, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x32, 0x8A, 0x39, 0xF0, 0x41, 0xE1, 0x90, 0x58, 0x34, 0x1E, 0x91, 0x49, 0xE5, 0x92, 0xD9, 0x74, 0x3E, 0xA1, 0x51, 0xE9, 0x94, 0x5A, 0xB5, 0x5E, 0xB1, 0x59, 0x6D, 0x2B, 0x2C, 0x1E, 0x93, 0xCB, 0xE6, 0x33, 0x3A, 0xAD, 0x5E, 0xB3, 0xDB, 0xEE, 0x37, 0x3C, 0x2E, 0x9F, 0xD3, 0xEB, 0xF6, 0x3B, 0x3E, 0xAF, 0x6F, 0xC5, 0x64, 0x33, 0x5A, 0xCD, 0x76, 0xC3, 0xE5, 0x60, 0xD0, 0x04, 0x00, 0x10, 0x00, 0xB4 }; static unsigned char send_ussd_463[] = { 0xD0, 0x56, 0x81, 0x03, 0x01, 0x12, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x33, 0x8A, 0x39, 0xF0, 0x41, 0xE1, 0x90, 0x58, 0x34, 0x1E, 0x91, 0x49, 0xE5, 0x92, 0xD9, 0x74, 0x3E, 0xA1, 0x51, 0xE9, 0x94, 0x5A, 0xB5, 0x5E, 0xB1, 0x59, 0x6D, 0x2B, 0x2C, 0x1E, 0x93, 0xCB, 0xE6, 0x33, 0x3A, 0xAD, 0x5E, 0xB3, 0xDB, 0xEE, 0x37, 0x3C, 0x2E, 0x9F, 0xD3, 0xEB, 0xF6, 0x3B, 0x3E, 0xAF, 0x6F, 0xC5, 0x64, 0x33, 0x5A, 0xCD, 0x76, 0xC3, 0xE5, 0x60 }; static unsigned char send_ussd_471[] = { 0xD0, 0x5C, 0x81, 0x03, 0x01, 0x12, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x31, 0x8A, 0x39, 0xF0, 0x41, 0xE1, 0x90, 0x58, 0x34, 0x1E, 0x91, 0x49, 0xE5, 0x92, 0xD9, 0x74, 0x3E, 0xA1, 0x51, 0xE9, 0x94, 0x5A, 0xB5, 0x5E, 0xB1, 0x59, 0x6D, 0x2B, 0x2C, 0x1E, 0x93, 0xCB, 0xE6, 0x33, 0x3A, 0xAD, 0x5E, 0xB3, 0xDB, 0xEE, 0x37, 0x3C, 0x2E, 0x9F, 0xD3, 0xEB, 0xF6, 0x3B, 0x3E, 0xAF, 0x6F, 0xC5, 0x64, 0x33, 0x5A, 0xCD, 0x76, 0xC3, 0xE5, 0x60, 0xD0, 0x04, 0x00, 0x10, 0x20, 0xB4 }; static unsigned char send_ussd_472[] = { 0xD0, 0x5C, 0x81, 0x03, 0x01, 0x12, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x32, 0x8A, 0x39, 0xF0, 0x41, 0xE1, 0x90, 0x58, 0x34, 0x1E, 0x91, 0x49, 0xE5, 0x92, 0xD9, 0x74, 0x3E, 0xA1, 0x51, 0xE9, 0x94, 0x5A, 0xB5, 0x5E, 0xB1, 0x59, 0x6D, 0x2B, 0x2C, 0x1E, 0x93, 0xCB, 0xE6, 0x33, 0x3A, 0xAD, 0x5E, 0xB3, 0xDB, 0xEE, 0x37, 0x3C, 0x2E, 0x9F, 0xD3, 0xEB, 0xF6, 0x3B, 0x3E, 0xAF, 0x6F, 0xC5, 0x64, 0x33, 0x5A, 0xCD, 0x76, 0xC3, 0xE5, 0x60, 0xD0, 0x04, 0x00, 0x10, 0x00, 0xB4 }; static unsigned char send_ussd_473[] = { 0xD0, 0x56, 0x81, 0x03, 0x01, 0x12, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x33, 0x8A, 0x39, 0xF0, 0x41, 0xE1, 0x90, 0x58, 0x34, 0x1E, 0x91, 0x49, 0xE5, 0x92, 0xD9, 0x74, 0x3E, 0xA1, 0x51, 0xE9, 0x94, 0x5A, 0xB5, 0x5E, 0xB1, 0x59, 0x6D, 0x2B, 0x2C, 0x1E, 0x93, 0xCB, 0xE6, 0x33, 0x3A, 0xAD, 0x5E, 0xB3, 0xDB, 0xEE, 0x37, 0x3C, 0x2E, 0x9F, 0xD3, 0xEB, 0xF6, 0x3B, 0x3E, 0xAF, 0x6F, 0xC5, 0x64, 0x33, 0x5A, 0xCD, 0x76, 0xC3, 0xE5, 0x60 }; static unsigned char send_ussd_481[] = { 0xD0, 0x5C, 0x81, 0x03, 0x01, 0x12, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x31, 0x8A, 0x39, 0xF0, 0x41, 0xE1, 0x90, 0x58, 0x34, 0x1E, 0x91, 0x49, 0xE5, 0x92, 0xD9, 0x74, 0x3E, 0xA1, 0x51, 0xE9, 0x94, 0x5A, 0xB5, 0x5E, 0xB1, 0x59, 0x6D, 0x2B, 0x2C, 0x1E, 0x93, 0xCB, 0xE6, 0x33, 0x3A, 0xAD, 0x5E, 0xB3, 0xDB, 0xEE, 0x37, 0x3C, 0x2E, 0x9F, 0xD3, 0xEB, 0xF6, 0x3B, 0x3E, 0xAF, 0x6F, 0xC5, 0x64, 0x33, 0x5A, 0xCD, 0x76, 0xC3, 0xE5, 0x60, 0xD0, 0x04, 0x00, 0x10, 0x40, 0xB4 }; static unsigned char send_ussd_482[] = { 0xD0, 0x5C, 0x81, 0x03, 0x01, 0x12, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x32, 0x8A, 0x39, 0xF0, 0x41, 0xE1, 0x90, 0x58, 0x34, 0x1E, 0x91, 0x49, 0xE5, 0x92, 0xD9, 0x74, 0x3E, 0xA1, 0x51, 0xE9, 0x94, 0x5A, 0xB5, 0x5E, 0xB1, 0x59, 0x6D, 0x2B, 0x2C, 0x1E, 0x93, 0xCB, 0xE6, 0x33, 0x3A, 0xAD, 0x5E, 0xB3, 0xDB, 0xEE, 0x37, 0x3C, 0x2E, 0x9F, 0xD3, 0xEB, 0xF6, 0x3B, 0x3E, 0xAF, 0x6F, 0xC5, 0x64, 0x33, 0x5A, 0xCD, 0x76, 0xC3, 0xE5, 0x60, 0xD0, 0x04, 0x00, 0x10, 0x00, 0xB4 }; static unsigned char send_ussd_483[] = { 0xD0, 0x56, 0x81, 0x03, 0x01, 0x12, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x33, 0x8A, 0x39, 0xF0, 0x41, 0xE1, 0x90, 0x58, 0x34, 0x1E, 0x91, 0x49, 0xE5, 0x92, 0xD9, 0x74, 0x3E, 0xA1, 0x51, 0xE9, 0x94, 0x5A, 0xB5, 0x5E, 0xB1, 0x59, 0x6D, 0x2B, 0x2C, 0x1E, 0x93, 0xCB, 0xE6, 0x33, 0x3A, 0xAD, 0x5E, 0xB3, 0xDB, 0xEE, 0x37, 0x3C, 0x2E, 0x9F, 0xD3, 0xEB, 0xF6, 0x3B, 0x3E, 0xAF, 0x6F, 0xC5, 0x64, 0x33, 0x5A, 0xCD, 0x76, 0xC3, 0xE5, 0x60 }; static unsigned char send_ussd_491[] = { 0xD0, 0x5C, 0x81, 0x03, 0x01, 0x12, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x31, 0x8A, 0x39, 0xF0, 0x41, 0xE1, 0x90, 0x58, 0x34, 0x1E, 0x91, 0x49, 0xE5, 0x92, 0xD9, 0x74, 0x3E, 0xA1, 0x51, 0xE9, 0x94, 0x5A, 0xB5, 0x5E, 0xB1, 0x59, 0x6D, 0x2B, 0x2C, 0x1E, 0x93, 0xCB, 0xE6, 0x33, 0x3A, 0xAD, 0x5E, 0xB3, 0xDB, 0xEE, 0x37, 0x3C, 0x2E, 0x9F, 0xD3, 0xEB, 0xF6, 0x3B, 0x3E, 0xAF, 0x6F, 0xC5, 0x64, 0x33, 0x5A, 0xCD, 0x76, 0xC3, 0xE5, 0x60, 0xD0, 0x04, 0x00, 0x10, 0x80, 0xB4 }; static unsigned char send_ussd_492[] = { 0xD0, 0x5C, 0x81, 0x03, 0x01, 0x12, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x32, 0x8A, 0x39, 0xF0, 0x41, 0xE1, 0x90, 0x58, 0x34, 0x1E, 0x91, 0x49, 0xE5, 0x92, 0xD9, 0x74, 0x3E, 0xA1, 0x51, 0xE9, 0x94, 0x5A, 0xB5, 0x5E, 0xB1, 0x59, 0x6D, 0x2B, 0x2C, 0x1E, 0x93, 0xCB, 0xE6, 0x33, 0x3A, 0xAD, 0x5E, 0xB3, 0xDB, 0xEE, 0x37, 0x3C, 0x2E, 0x9F, 0xD3, 0xEB, 0xF6, 0x3B, 0x3E, 0xAF, 0x6F, 0xC5, 0x64, 0x33, 0x5A, 0xCD, 0x76, 0xC3, 0xE5, 0x60, 0xD0, 0x04, 0x00, 0x10, 0x00, 0xB4 }; static unsigned char send_ussd_493[] = { 0xD0, 0x56, 0x81, 0x03, 0x01, 0x12, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x33, 0x8A, 0x39, 0xF0, 0x41, 0xE1, 0x90, 0x58, 0x34, 0x1E, 0x91, 0x49, 0xE5, 0x92, 0xD9, 0x74, 0x3E, 0xA1, 0x51, 0xE9, 0x94, 0x5A, 0xB5, 0x5E, 0xB1, 0x59, 0x6D, 0x2B, 0x2C, 0x1E, 0x93, 0xCB, 0xE6, 0x33, 0x3A, 0xAD, 0x5E, 0xB3, 0xDB, 0xEE, 0x37, 0x3C, 0x2E, 0x9F, 0xD3, 0xEB, 0xF6, 0x3B, 0x3E, 0xAF, 0x6F, 0xC5, 0x64, 0x33, 0x5A, 0xCD, 0x76, 0xC3, 0xE5, 0x60 }; static unsigned char send_ussd_4101[] = { 0xD0, 0x5C, 0x81, 0x03, 0x01, 0x12, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x31, 0x8A, 0x39, 0xF0, 0x41, 0xE1, 0x90, 0x58, 0x34, 0x1E, 0x91, 0x49, 0xE5, 0x92, 0xD9, 0x74, 0x3E, 0xA1, 0x51, 0xE9, 0x94, 0x5A, 0xB5, 0x5E, 0xB1, 0x59, 0x6D, 0x2B, 0x2C, 0x1E, 0x93, 0xCB, 0xE6, 0x33, 0x3A, 0xAD, 0x5E, 0xB3, 0xDB, 0xEE, 0x37, 0x3C, 0x2E, 0x9F, 0xD3, 0xEB, 0xF6, 0x3B, 0x3E, 0xAF, 0x6F, 0xC5, 0x64, 0x33, 0x5A, 0xCD, 0x76, 0xC3, 0xE5, 0x60, 0xD0, 0x04, 0x00, 0x10, 0x00, 0xB4 }; static unsigned char send_ussd_4102[] = { 0xD0, 0x56, 0x81, 0x03, 0x01, 0x12, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x10, 0x54, 0x65, 0x78, 0x74, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x32, 0x8A, 0x39, 0xF0, 0x41, 0xE1, 0x90, 0x58, 0x34, 0x1E, 0x91, 0x49, 0xE5, 0x92, 0xD9, 0x74, 0x3E, 0xA1, 0x51, 0xE9, 0x94, 0x5A, 0xB5, 0x5E, 0xB1, 0x59, 0x6D, 0x2B, 0x2C, 0x1E, 0x93, 0xCB, 0xE6, 0x33, 0x3A, 0xAD, 0x5E, 0xB3, 0xDB, 0xEE, 0x37, 0x3C, 0x2E, 0x9F, 0xD3, 0xEB, 0xF6, 0x3B, 0x3E, 0xAF, 0x6F, 0xC5, 0x64, 0x33, 0x5A, 0xCD, 0x76, 0xC3, 0xE5, 0x60 }; static unsigned char send_ussd_511[] = { 0xD0, 0x4B, 0x81, 0x03, 0x01, 0x12, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x05, 0x80, 0x4F, 0x60, 0x59, 0x7D, 0x8A, 0x39, 0xF0, 0x41, 0xE1, 0x90, 0x58, 0x34, 0x1E, 0x91, 0x49, 0xE5, 0x92, 0xD9, 0x74, 0x3E, 0xA1, 0x51, 0xE9, 0x94, 0x5A, 0xB5, 0x5E, 0xB1, 0x59, 0x6D, 0x2B, 0x2C, 0x1E, 0x93, 0xCB, 0xE6, 0x33, 0x3A, 0xAD, 0x5E, 0xB3, 0xDB, 0xEE, 0x37, 0x3C, 0x2E, 0x9F, 0xD3, 0xEB, 0xF6, 0x3B, 0x3E, 0xAF, 0x6F, 0xC5, 0x64, 0x33, 0x5A, 0xCD, 0x76, 0xC3, 0xE5, 0x60 }; static unsigned char send_ussd_611[] = { 0xD0, 0x49, 0x81, 0x03, 0x01, 0x12, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x03, 0x80, 0x30, 0xEB, 0x8A, 0x39, 0xF0, 0x41, 0xE1, 0x90, 0x58, 0x34, 0x1E, 0x91, 0x49, 0xE5, 0x92, 0xD9, 0x74, 0x3E, 0xA1, 0x51, 0xE9, 0x94, 0x5A, 0xB5, 0x5E, 0xB1, 0x59, 0x6D, 0x2B, 0x2C, 0x1E, 0x93, 0xCB, 0xE6, 0x33, 0x3A, 0xAD, 0x5E, 0xB3, 0xDB, 0xEE, 0x37, 0x3C, 0x2E, 0x9F, 0xD3, 0xEB, 0xF6, 0x3B, 0x3E, 0xAF, 0x6F, 0xC5, 0x64, 0x33, 0x5A, 0xCD, 0x76, 0xC3, 0xE5, 0x60 }; static struct send_ussd_test send_ussd_data_111 = { .pdu = send_ussd_111, .pdu_len = sizeof(send_ussd_111), .qualifier = 0x00, .alpha_id = "7-bit USSD", .ussd = "ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz-" "1234567890" }; static struct send_ussd_test send_ussd_data_121 = { .pdu = send_ussd_121, .pdu_len = sizeof(send_ussd_121), .qualifier = 0x00, .alpha_id = "8-bit USSD", .ussd = "ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz-" "1234567890" }; static struct send_ussd_test send_ussd_data_131 = { .pdu = send_ussd_131, .pdu_len = sizeof(send_ussd_131), .qualifier = 0x00, .alpha_id = "UCS2 USSD", .ussd = "ЗДРАВСТВУЙТЕ" }; static struct send_ussd_test send_ussd_data_161 = { .pdu = send_ussd_161, .pdu_len = sizeof(send_ussd_161), .qualifier = 0x00, .alpha_id = "once a RELEASE COMPLETE message containing the USSD " "Return Result message not containing an error has been " "received from the network, the ME shall inform the SIM " "that the command has", .ussd = "ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz-" "1234567890" }; static struct send_ussd_test send_ussd_data_171 = { .pdu = send_ussd_171, .pdu_len = sizeof(send_ussd_171), .qualifier = 0x00, .ussd = "ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz-" "1234567890" }; static struct send_ussd_test send_ussd_data_181 = { .pdu = send_ussd_181, .pdu_len = sizeof(send_ussd_181), .qualifier = 0x00, .alpha_id = "", .ussd = "ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz-" "1234567890" }; static struct send_ussd_test send_ussd_data_211 = { .pdu = send_ussd_211, .pdu_len = sizeof(send_ussd_211), .qualifier = 0x00, .alpha_id = "Basic Icon", .ussd = "ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz-" "1234567890", .icon_id = { .qualifier = STK_ICON_QUALIFIER_TYPE_SELF_EXPLANATORY, .id = 0x01 } }; static struct send_ussd_test send_ussd_data_221 = { .pdu = send_ussd_221, .pdu_len = sizeof(send_ussd_221), .qualifier = 0x00, .alpha_id = "Color Icon", .ussd = "ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz-" "1234567890", .icon_id = { .qualifier = STK_ICON_QUALIFIER_TYPE_SELF_EXPLANATORY, .id = 0x02 } }; static struct send_ussd_test send_ussd_data_231 = { .pdu = send_ussd_231, .pdu_len = sizeof(send_ussd_231), .qualifier = 0x00, .alpha_id = "Basic Icon", .ussd = "ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz-" "1234567890", .icon_id = { .qualifier = STK_ICON_QUALIFIER_TYPE_NON_SELF_EXPLANATORY, .id = 0x01 } }; static struct send_ussd_test send_ussd_data_241 = { .pdu = send_ussd_241, .pdu_len = sizeof(send_ussd_241), .qualifier = 0x00, .ussd = "ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz-" "1234567890", .icon_id = { .qualifier = STK_ICON_QUALIFIER_TYPE_NON_SELF_EXPLANATORY, .id = 0x01 } }; /* The ussd is not complete in spec */ static struct send_ussd_test send_ussd_data_311 = { .pdu = send_ussd_311, .pdu_len = sizeof(send_ussd_311), .qualifier = 0x00, .alpha_id = "ЗДРАВСТВУЙТЕ", .ussd = "ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz-" "1234567890" }; static struct send_ussd_test send_ussd_data_411 = { .pdu = send_ussd_411, .pdu_len = sizeof(send_ussd_411), .qualifier = 0x00, .alpha_id = "Text Attribute 1", .ussd = "ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz-" "1234567890", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } } }; static struct send_ussd_test send_ussd_data_412 = { .pdu = send_ussd_412, .pdu_len = sizeof(send_ussd_412), .qualifier = 0x00, .alpha_id = "Text Attribute 2", .ussd = "ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz-" "1234567890" }; static struct send_ussd_test send_ussd_data_421 = { .pdu = send_ussd_421, .pdu_len = sizeof(send_ussd_421), .qualifier = 0x00, .alpha_id = "Text Attribute 1", .ussd = "ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz-" "1234567890", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x01, 0xB4 } } }; static struct send_ussd_test send_ussd_data_422 = { .pdu = send_ussd_422, .pdu_len = sizeof(send_ussd_422), .qualifier = 0x00, .alpha_id = "Text Attribute 2", .ussd = "ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz-" "1234567890" }; static struct send_ussd_test send_ussd_data_431 = { .pdu = send_ussd_431, .pdu_len = sizeof(send_ussd_431), .qualifier = 0x00, .alpha_id = "Text Attribute 1", .ussd = "ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz-" "1234567890", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x02, 0xB4 } } }; static struct send_ussd_test send_ussd_data_432 = { .pdu = send_ussd_432, .pdu_len = sizeof(send_ussd_432), .qualifier = 0x00, .alpha_id = "Text Attribute 2", .ussd = "ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz-" "1234567890" }; static struct send_ussd_test send_ussd_data_441 = { .pdu = send_ussd_441, .pdu_len = sizeof(send_ussd_441), .qualifier = 0x00, .alpha_id = "Text Attribute 1", .ussd = "ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz-" "1234567890", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x04, 0xB4 } } }; static struct send_ussd_test send_ussd_data_442 = { .pdu = send_ussd_442, .pdu_len = sizeof(send_ussd_442), .qualifier = 0x00, .alpha_id = "Text Attribute 2", .ussd = "ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz-" "1234567890", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } } }; static struct send_ussd_test send_ussd_data_443 = { .pdu = send_ussd_443, .pdu_len = sizeof(send_ussd_443), .qualifier = 0x00, .alpha_id = "Text Attribute 3", .ussd = "ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz-" "1234567890" }; static struct send_ussd_test send_ussd_data_451 = { .pdu = send_ussd_451, .pdu_len = sizeof(send_ussd_451), .qualifier = 0x00, .alpha_id = "Text Attribute 1", .ussd = "ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz-" "1234567890", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x08, 0xB4 } } }; static struct send_ussd_test send_ussd_data_452 = { .pdu = send_ussd_452, .pdu_len = sizeof(send_ussd_452), .qualifier = 0x00, .alpha_id = "Text Attribute 2", .ussd = "ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz-" "1234567890", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } } }; static struct send_ussd_test send_ussd_data_453 = { .pdu = send_ussd_453, .pdu_len = sizeof(send_ussd_453), .qualifier = 0x00, .alpha_id = "Text Attribute 3", .ussd = "ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz-" "1234567890" }; static struct send_ussd_test send_ussd_data_461 = { .pdu = send_ussd_461, .pdu_len = sizeof(send_ussd_461), .qualifier = 0x00, .alpha_id = "Text Attribute 1", .ussd = "ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz-" "1234567890", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x10, 0xB4 } } }; static struct send_ussd_test send_ussd_data_462 = { .pdu = send_ussd_462, .pdu_len = sizeof(send_ussd_462), .qualifier = 0x00, .alpha_id = "Text Attribute 2", .ussd = "ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz-" "1234567890", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } } }; static struct send_ussd_test send_ussd_data_463 = { .pdu = send_ussd_463, .pdu_len = sizeof(send_ussd_463), .qualifier = 0x00, .alpha_id = "Text Attribute 3", .ussd = "ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz-" "1234567890" }; static struct send_ussd_test send_ussd_data_471 = { .pdu = send_ussd_471, .pdu_len = sizeof(send_ussd_471), .qualifier = 0x00, .alpha_id = "Text Attribute 1", .ussd = "ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz-" "1234567890", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x20, 0xB4 } } }; static struct send_ussd_test send_ussd_data_472 = { .pdu = send_ussd_472, .pdu_len = sizeof(send_ussd_472), .qualifier = 0x00, .alpha_id = "Text Attribute 2", .ussd = "ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz-" "1234567890", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } } }; static struct send_ussd_test send_ussd_data_473 = { .pdu = send_ussd_473, .pdu_len = sizeof(send_ussd_473), .qualifier = 0x00, .alpha_id = "Text Attribute 3", .ussd = "ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz-" "1234567890" }; static struct send_ussd_test send_ussd_data_481 = { .pdu = send_ussd_481, .pdu_len = sizeof(send_ussd_481), .qualifier = 0x00, .alpha_id = "Text Attribute 1", .ussd = "ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz-" "1234567890", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x40, 0xB4 } } }; static struct send_ussd_test send_ussd_data_482 = { .pdu = send_ussd_482, .pdu_len = sizeof(send_ussd_482), .qualifier = 0x00, .alpha_id = "Text Attribute 2", .ussd = "ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz-" "1234567890", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } } }; static struct send_ussd_test send_ussd_data_483 = { .pdu = send_ussd_483, .pdu_len = sizeof(send_ussd_483), .qualifier = 0x00, .alpha_id = "Text Attribute 3", .ussd = "ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz-" "1234567890" }; static struct send_ussd_test send_ussd_data_491 = { .pdu = send_ussd_491, .pdu_len = sizeof(send_ussd_491), .qualifier = 0x00, .alpha_id = "Text Attribute 1", .ussd = "ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz-" "1234567890", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x80, 0xB4 } } }; static struct send_ussd_test send_ussd_data_492 = { .pdu = send_ussd_492, .pdu_len = sizeof(send_ussd_492), .qualifier = 0x00, .alpha_id = "Text Attribute 2", .ussd = "ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz-" "1234567890", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } } }; static struct send_ussd_test send_ussd_data_493 = { .pdu = send_ussd_493, .pdu_len = sizeof(send_ussd_493), .qualifier = 0x00, .alpha_id = "Text Attribute 3", .ussd = "ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz-" "1234567890" }; static struct send_ussd_test send_ussd_data_4101 = { .pdu = send_ussd_4101, .pdu_len = sizeof(send_ussd_4101), .qualifier = 0x00, .alpha_id = "Text Attribute 1", .ussd = "ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz-" "1234567890", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } } }; static struct send_ussd_test send_ussd_data_4102 = { .pdu = send_ussd_4102, .pdu_len = sizeof(send_ussd_4102), .qualifier = 0x00, .alpha_id = "Text Attribute 2", .ussd = "ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz-" "1234567890" }; static struct send_ussd_test send_ussd_data_511 = { .pdu = send_ussd_511, .pdu_len = sizeof(send_ussd_511), .qualifier = 0x00, .alpha_id = "你好", .ussd = "ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz-" "1234567890" }; static struct send_ussd_test send_ussd_data_611 = { .pdu = send_ussd_611, .pdu_len = sizeof(send_ussd_611), .qualifier = 0x00, .alpha_id = "ル", .ussd = "ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz-" "1234567890" }; static void test_send_ussd(gconstpointer data) { const struct send_ussd_test *test = data; struct stk_command *command; command = stk_command_new_from_pdu(test->pdu, test->pdu_len); g_assert(command); g_assert(command->status == STK_PARSE_RESULT_OK); g_assert(command->number == 1); g_assert(command->type == STK_COMMAND_TYPE_SEND_USSD); g_assert(command->qualifier == test->qualifier); g_assert(command->src == STK_DEVICE_IDENTITY_TYPE_UICC); g_assert(command->dst == STK_DEVICE_IDENTITY_TYPE_NETWORK); check_alpha_id(command->send_ussd.alpha_id, test->alpha_id); check_ussd(&command->send_ussd.ussd_string, test->ussd); check_icon_id(&command->send_ussd.icon_id, &test->icon_id); check_text_attr(&command->send_ussd.text_attr, &test->text_attr); check_frame_id(&command->send_ussd.frame_id, &test->frame_id); stk_command_free(command); } struct setup_call_test { const unsigned char *pdu; unsigned int pdu_len; unsigned char qualifier; char *alpha_id_usr_cfm; struct stk_address addr; struct stk_ccp ccp; struct stk_subaddress subaddr; struct stk_duration duration; struct stk_icon_id icon_id_usr_cfm; char *alpha_id_call_setup; struct stk_icon_id icon_id_call_setup; struct stk_text_attribute text_attr_usr_cfm; struct stk_text_attribute text_attr_call_setup; struct stk_frame_id frame_id; }; static unsigned char setup_call_111[] = { 0xD0, 0x1E, 0x81, 0x03, 0x01, 0x10, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x08, 0x4E, 0x6F, 0x74, 0x20, 0x62, 0x75, 0x73, 0x79, 0x86, 0x09, 0x91, 0x10, 0x32, 0x04, 0x21, 0x43, 0x65, 0x1C, 0x2C }; static unsigned char setup_call_141[] = { 0xD0, 0x1D, 0x81, 0x03, 0x01, 0x10, 0x02, 0x82, 0x02, 0x81, 0x83, 0x85, 0x07, 0x4F, 0x6E, 0x20, 0x68, 0x6F, 0x6C, 0x64, 0x86, 0x09, 0x91, 0x10, 0x32, 0x04, 0x21, 0x43, 0x65, 0x1C, 0x2C }; static unsigned char setup_call_151[] = { 0xD0, 0x20, 0x81, 0x03, 0x01, 0x10, 0x04, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0A, 0x44, 0x69, 0x73, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x86, 0x09, 0x91, 0x10, 0x32, 0x04, 0x21, 0x43, 0x65, 0x1C, 0x2C }; static unsigned char setup_call_181[] = { 0xD0, 0x2B, 0x81, 0x03, 0x01, 0x10, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x11, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6C, 0x69, 0x74, 0x79, 0x20, 0x63, 0x6F, 0x6E, 0x66, 0x69, 0x67, 0x86, 0x09, 0x91, 0x10, 0x32, 0x04, 0x21, 0x43, 0x65, 0x1C, 0x2C, 0x87, 0x02, 0x01, 0xA0 }; static unsigned char setup_call_191[] = { 0xD0, 0x1C, 0x81, 0x03, 0x01, 0x10, 0x01, 0x82, 0x02, 0x81, 0x83, 0x86, 0x11, 0x91, 0x10, 0x32, 0x54, 0x76, 0x98, 0x10, 0x32, 0x54, 0x76, 0x98, 0x10, 0x32, 0x54, 0x76, 0x98, 0x10 }; static unsigned char setup_call_1101[] = { 0xD0, 0x81, 0xFD, 0x81, 0x03, 0x01, 0x10, 0x01, 0x82, 0x02, 0x81, 0x83, 0x85, 0x81, 0xED, 0x54, 0x68, 0x72, 0x65, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x64, 0x3A, 0x20, 0x2D, 0x20, 0x73, 0x65, 0x74, 0x20, 0x75, 0x70, 0x20, 0x61, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x69, 0x66, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x6C, 0x79, 0x20, 0x62, 0x75, 0x73, 0x79, 0x20, 0x6F, 0x6E, 0x20, 0x61, 0x6E, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x3B, 0x20, 0x2D, 0x20, 0x73, 0x65, 0x74, 0x20, 0x75, 0x70, 0x20, 0x61, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x2C, 0x20, 0x70, 0x75, 0x74, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x73, 0x20, 0x28, 0x69, 0x66, 0x20, 0x61, 0x6E, 0x79, 0x29, 0x20, 0x6F, 0x6E, 0x20, 0x68, 0x6F, 0x6C, 0x64, 0x3B, 0x20, 0x2D, 0x20, 0x73, 0x65, 0x74, 0x20, 0x75, 0x70, 0x20, 0x61, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x2C, 0x20, 0x64, 0x69, 0x73, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x73, 0x20, 0x28, 0x69, 0x66, 0x20, 0x61, 0x6E, 0x79, 0x29, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x2E, 0x20, 0x46, 0x6F, 0x72, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x73, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2C, 0x20, 0x86, 0x02, 0x91, 0x10 }; static unsigned char setup_call_1111[] = { 0xD0, 0x2B, 0x81, 0x03, 0x01, 0x10, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0C, 0x43, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x70, 0x61, 0x72, 0x74, 0x79, 0x86, 0x09, 0x91, 0x10, 0x32, 0x04, 0x21, 0x43, 0x65, 0x1C, 0x2C, 0x88, 0x07, 0x80, 0x50, 0x95, 0x95, 0x95, 0x95, 0x95 }; static unsigned char setup_call_1121[] = { 0xD0, 0x22, 0x81, 0x03, 0x01, 0x10, 0x01, 0x82, 0x02, 0x81, 0x83, 0x85, 0x08, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x86, 0x09, 0x91, 0x10, 0x32, 0x04, 0x21, 0x43, 0x65, 0x1C, 0x2C, 0x84, 0x02, 0x01, 0x0A }; static unsigned char setup_call_211[] = { 0xD0, 0x28, 0x81, 0x03, 0x01, 0x10, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0C, 0x43, 0x4F, 0x4E, 0x46, 0x49, 0x52, 0x4D, 0x41, 0x54, 0x49, 0x4F, 0x4E, 0x86, 0x09, 0x91, 0x10, 0x32, 0x04, 0x21, 0x43, 0x65, 0x1C, 0x2C, 0x85, 0x04, 0x43, 0x41, 0x4C, 0x4C }; static unsigned char setup_call_311[] = { 0xD0, 0x30, 0x81, 0x03, 0x01, 0x10, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x16, 0x53, 0x65, 0x74, 0x20, 0x75, 0x70, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x20, 0x49, 0x63, 0x6F, 0x6E, 0x20, 0x33, 0x2E, 0x31, 0x2E, 0x31, 0x86, 0x09, 0x91, 0x10, 0x32, 0x04, 0x21, 0x43, 0x65, 0x1C, 0x2C, 0x9E, 0x02, 0x01, 0x01 }; static unsigned char setup_call_321[] = { 0xD0, 0x30, 0x81, 0x03, 0x01, 0x10, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x16, 0x53, 0x65, 0x74, 0x20, 0x75, 0x70, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x20, 0x49, 0x63, 0x6F, 0x6E, 0x20, 0x33, 0x2E, 0x32, 0x2E, 0x31, 0x86, 0x09, 0x91, 0x10, 0x32, 0x04, 0x21, 0x43, 0x65, 0x1C, 0x2C, 0x9E, 0x02, 0x00, 0x01 }; static unsigned char setup_call_331[] = { 0xD0, 0x30, 0x81, 0x03, 0x01, 0x10, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x16, 0x53, 0x65, 0x74, 0x20, 0x75, 0x70, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x20, 0x49, 0x63, 0x6F, 0x6E, 0x20, 0x33, 0x2E, 0x33, 0x2E, 0x31, 0x86, 0x09, 0x91, 0x10, 0x32, 0x04, 0x21, 0x43, 0x65, 0x1C, 0x2C, 0x9E, 0x02, 0x01, 0x02 }; static unsigned char setup_call_341[] = { 0xD0, 0x4C, 0x81, 0x03, 0x01, 0x10, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x16, 0x53, 0x65, 0x74, 0x20, 0x75, 0x70, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x20, 0x49, 0x63, 0x6F, 0x6E, 0x20, 0x33, 0x2E, 0x34, 0x2E, 0x31, 0x86, 0x09, 0x91, 0x10, 0x32, 0x04, 0x21, 0x43, 0x65, 0x1C, 0x2C, 0x9E, 0x02, 0x00, 0x01, 0x85, 0x16, 0x53, 0x65, 0x74, 0x20, 0x75, 0x70, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x20, 0x49, 0x63, 0x6F, 0x6E, 0x20, 0x33, 0x2E, 0x34, 0x2E, 0x32, 0x9E, 0x02, 0x00, 0x01 }; static unsigned char setup_call_411[] = { 0xD0, 0x38, 0x81, 0x03, 0x01, 0x10, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0E, 0x43, 0x4F, 0x4E, 0x46, 0x49, 0x52, 0x4D, 0x41, 0x54, 0x49, 0x4F, 0x4E, 0x20, 0x31, 0x86, 0x09, 0x91, 0x10, 0x32, 0x04, 0x21, 0x43, 0x65, 0x1C, 0x2C, 0x85, 0x06, 0x43, 0x41, 0x4C, 0x4C, 0x20, 0x31, 0xD0, 0x04, 0x00, 0x0E, 0x00, 0xB4, 0xD0, 0x04, 0x00, 0x06, 0x00, 0xB4 }; static unsigned char setup_call_412[] = { 0xD0, 0x2C, 0x81, 0x03, 0x01, 0x10, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0E, 0x43, 0x4F, 0x4E, 0x46, 0x49, 0x52, 0x4D, 0x41, 0x54, 0x49, 0x4F, 0x4E, 0x20, 0x32, 0x86, 0x09, 0x91, 0x10, 0x32, 0x04, 0x21, 0x43, 0x65, 0x1C, 0x2C, 0x85, 0x06, 0x43, 0x41, 0x4C, 0x4C, 0x20, 0x32 }; static unsigned char setup_call_421[] = { 0xD0, 0x38, 0x81, 0x03, 0x01, 0x10, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0E, 0x43, 0x4F, 0x4E, 0x46, 0x49, 0x52, 0x4D, 0x41, 0x54, 0x49, 0x4F, 0x4E, 0x20, 0x31, 0x86, 0x09, 0x91, 0x10, 0x32, 0x04, 0x21, 0x43, 0x65, 0x1C, 0x2C, 0x85, 0x06, 0x43, 0x41, 0x4C, 0x4C, 0x20, 0x31, 0xD0, 0x04, 0x00, 0x0E, 0x01, 0xB4, 0xD0, 0x04, 0x00, 0x06, 0x01, 0xB4 }; static unsigned char setup_call_422[] = { 0xD0, 0x2C, 0x81, 0x03, 0x01, 0x10, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0E, 0x43, 0x4F, 0x4E, 0x46, 0x49, 0x52, 0x4D, 0x41, 0x54, 0x49, 0x4F, 0x4E, 0x20, 0x32, 0x86, 0x09, 0x91, 0x10, 0x32, 0x04, 0x21, 0x43, 0x65, 0x1C, 0x2C, 0x85, 0x06, 0x43, 0x41, 0x4C, 0x4C, 0x20, 0x32 }; static unsigned char setup_call_431[] = { 0xD0, 0x38, 0x81, 0x03, 0x01, 0x10, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0E, 0x43, 0x4F, 0x4E, 0x46, 0x49, 0x52, 0x4D, 0x41, 0x54, 0x49, 0x4F, 0x4E, 0x20, 0x31, 0x86, 0x09, 0x91, 0x10, 0x32, 0x04, 0x21, 0x43, 0x65, 0x1C, 0x2C, 0x85, 0x06, 0x43, 0x41, 0x4C, 0x4C, 0x20, 0x31, 0xD0, 0x04, 0x00, 0x0E, 0x02, 0xB4, 0xD0, 0x04, 0x00, 0x06, 0x02, 0xB4 }; static unsigned char setup_call_432[] = { 0xD0, 0x2C, 0x81, 0x03, 0x01, 0x10, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0E, 0x43, 0x4F, 0x4E, 0x46, 0x49, 0x52, 0x4D, 0x41, 0x54, 0x49, 0x4F, 0x4E, 0x20, 0x32, 0x86, 0x09, 0x91, 0x10, 0x32, 0x04, 0x21, 0x43, 0x65, 0x1C, 0x2C, 0x85, 0x06, 0x43, 0x41, 0x4C, 0x4C, 0x20, 0x32 }; static unsigned char setup_call_441[] = { 0xD0, 0x38, 0x81, 0x03, 0x01, 0x10, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0E, 0x43, 0x4F, 0x4E, 0x46, 0x49, 0x52, 0x4D, 0x41, 0x54, 0x49, 0x4F, 0x4E, 0x20, 0x31, 0x86, 0x09, 0x91, 0x10, 0x32, 0x04, 0x21, 0x43, 0x65, 0x1C, 0x2C, 0x85, 0x06, 0x43, 0x41, 0x4C, 0x4C, 0x20, 0x31, 0xD0, 0x04, 0x00, 0x0E, 0x04, 0xB4, 0xD0, 0x04, 0x00, 0x06, 0x04, 0xB4 }; static unsigned char setup_call_442[] = { 0xD0, 0x38, 0x81, 0x03, 0x01, 0x10, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0E, 0x43, 0x4F, 0x4E, 0x46, 0x49, 0x52, 0x4D, 0x41, 0x54, 0x49, 0x4F, 0x4E, 0x20, 0x32, 0x86, 0x09, 0x91, 0x10, 0x32, 0x04, 0x21, 0x43, 0x65, 0x1C, 0x2C, 0x85, 0x06, 0x43, 0x41, 0x4C, 0x4C, 0x20, 0x32, 0xD0, 0x04, 0x00, 0x0E, 0x00, 0xB4, 0xD0, 0x04, 0x00, 0x06, 0x00, 0xB4 }; static unsigned char setup_call_443[] = { 0xD0, 0x2C, 0x81, 0x03, 0x01, 0x10, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0E, 0x43, 0x4F, 0x4E, 0x46, 0x49, 0x52, 0x4D, 0x41, 0x54, 0x49, 0x4F, 0x4E, 0x20, 0x33, 0x86, 0x09, 0x91, 0x10, 0x32, 0x04, 0x21, 0x43, 0x65, 0x1C, 0x2C, 0x85, 0x06, 0x43, 0x41, 0x4C, 0x4C, 0x20, 0x33 }; static unsigned char setup_call_451[] = { 0xD0, 0x38, 0x81, 0x03, 0x01, 0x10, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0E, 0x43, 0x4F, 0x4E, 0x46, 0x49, 0x52, 0x4D, 0x41, 0x54, 0x49, 0x4F, 0x4E, 0x20, 0x31, 0x86, 0x09, 0x91, 0x10, 0x32, 0x04, 0x21, 0x43, 0x65, 0x1C, 0x2C, 0x85, 0x06, 0x43, 0x41, 0x4C, 0x4C, 0x20, 0x31, 0xD0, 0x04, 0x00, 0x0E, 0x08, 0xB4, 0xD0, 0x04, 0x00, 0x06, 0x08, 0xB4 }; static unsigned char setup_call_452[] = { 0xD0, 0x38, 0x81, 0x03, 0x01, 0x10, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0E, 0x43, 0x4F, 0x4E, 0x46, 0x49, 0x52, 0x4D, 0x41, 0x54, 0x49, 0x4F, 0x4E, 0x20, 0x32, 0x86, 0x09, 0x91, 0x10, 0x32, 0x04, 0x21, 0x43, 0x65, 0x1C, 0x2C, 0x85, 0x06, 0x43, 0x41, 0x4C, 0x4C, 0x20, 0x32, 0xD0, 0x04, 0x00, 0x0E, 0x00, 0xB4, 0xD0, 0x04, 0x00, 0x06, 0x00, 0xB4 }; static unsigned char setup_call_453[] = { 0xD0, 0x2C, 0x81, 0x03, 0x01, 0x10, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0E, 0x43, 0x4F, 0x4E, 0x46, 0x49, 0x52, 0x4D, 0x41, 0x54, 0x49, 0x4F, 0x4E, 0x20, 0x33, 0x86, 0x09, 0x91, 0x10, 0x32, 0x04, 0x21, 0x43, 0x65, 0x1C, 0x2C, 0x85, 0x06, 0x43, 0x41, 0x4C, 0x4C, 0x20, 0x33 }; static unsigned char setup_call_461[] = { 0xD0, 0x38, 0x81, 0x03, 0x01, 0x10, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0E, 0x43, 0x4F, 0x4E, 0x46, 0x49, 0x52, 0x4D, 0x41, 0x54, 0x49, 0x4F, 0x4E, 0x20, 0x31, 0x86, 0x09, 0x91, 0x10, 0x32, 0x04, 0x21, 0x43, 0x65, 0x1C, 0x2C, 0x85, 0x06, 0x43, 0x41, 0x4C, 0x4C, 0x20, 0x31, 0xD0, 0x04, 0x00, 0x0E, 0x10, 0xB4, 0xD0, 0x04, 0x00, 0x06, 0x10, 0xB4 }; static unsigned char setup_call_462[] = { 0xD0, 0x38, 0x81, 0x03, 0x01, 0x10, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0E, 0x43, 0x4F, 0x4E, 0x46, 0x49, 0x52, 0x4D, 0x41, 0x54, 0x49, 0x4F, 0x4E, 0x20, 0x32, 0x86, 0x09, 0x91, 0x10, 0x32, 0x04, 0x21, 0x43, 0x65, 0x1C, 0x2C, 0x85, 0x06, 0x43, 0x41, 0x4C, 0x4C, 0x20, 0x32, 0xD0, 0x04, 0x00, 0x0E, 0x00, 0xB4, 0xD0, 0x04, 0x00, 0x06, 0x00, 0xB4 }; static unsigned char setup_call_463[] = { 0xD0, 0x2C, 0x81, 0x03, 0x01, 0x10, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0E, 0x43, 0x4F, 0x4E, 0x46, 0x49, 0x52, 0x4D, 0x41, 0x54, 0x49, 0x4F, 0x4E, 0x20, 0x33, 0x86, 0x09, 0x91, 0x10, 0x32, 0x04, 0x21, 0x43, 0x65, 0x1C, 0x2C, 0x85, 0x06, 0x43, 0x41, 0x4C, 0x4C, 0x20, 0x33 }; static unsigned char setup_call_471[] = { 0xD0, 0x38, 0x81, 0x03, 0x01, 0x10, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0E, 0x43, 0x4F, 0x4E, 0x46, 0x49, 0x52, 0x4D, 0x41, 0x54, 0x49, 0x4F, 0x4E, 0x20, 0x31, 0x86, 0x09, 0x91, 0x10, 0x32, 0x04, 0x21, 0x43, 0x65, 0x1C, 0x2C, 0x85, 0x06, 0x43, 0x41, 0x4C, 0x4C, 0x20, 0x31, 0xD0, 0x04, 0x00, 0x0E, 0x20, 0xB4, 0xD0, 0x04, 0x00, 0x06, 0x20, 0xB4 }; static unsigned char setup_call_472[] = { 0xD0, 0x38, 0x81, 0x03, 0x01, 0x10, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0E, 0x43, 0x4F, 0x4E, 0x46, 0x49, 0x52, 0x4D, 0x41, 0x54, 0x49, 0x4F, 0x4E, 0x20, 0x32, 0x86, 0x09, 0x91, 0x10, 0x32, 0x04, 0x21, 0x43, 0x65, 0x1C, 0x2C, 0x85, 0x06, 0x43, 0x41, 0x4C, 0x4C, 0x20, 0x32, 0xD0, 0x04, 0x00, 0x0E, 0x00, 0xB4, 0xD0, 0x04, 0x00, 0x06, 0x00, 0xB4 }; static unsigned char setup_call_473[] = { 0xD0, 0x2C, 0x81, 0x03, 0x01, 0x10, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0E, 0x43, 0x4F, 0x4E, 0x46, 0x49, 0x52, 0x4D, 0x41, 0x54, 0x49, 0x4F, 0x4E, 0x20, 0x33, 0x86, 0x09, 0x91, 0x10, 0x32, 0x04, 0x21, 0x43, 0x65, 0x1C, 0x2C, 0x85, 0x06, 0x43, 0x41, 0x4C, 0x4C, 0x20, 0x33 }; static unsigned char setup_call_481[] = { 0xD0, 0x38, 0x81, 0x03, 0x01, 0x10, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0E, 0x43, 0x4F, 0x4E, 0x46, 0x49, 0x52, 0x4D, 0x41, 0x54, 0x49, 0x4F, 0x4E, 0x20, 0x31, 0x86, 0x09, 0x91, 0x10, 0x32, 0x04, 0x21, 0x43, 0x65, 0x1C, 0x2C, 0x85, 0x06, 0x43, 0x41, 0x4C, 0x4C, 0x20, 0x31, 0xD0, 0x04, 0x00, 0x0E, 0x40, 0xB4, 0xD0, 0x04, 0x00, 0x06, 0x40, 0xB4 }; static unsigned char setup_call_482[] = { 0xD0, 0x38, 0x81, 0x03, 0x01, 0x10, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0E, 0x43, 0x4F, 0x4E, 0x46, 0x49, 0x52, 0x4D, 0x41, 0x54, 0x49, 0x4F, 0x4E, 0x20, 0x32, 0x86, 0x09, 0x91, 0x10, 0x32, 0x04, 0x21, 0x43, 0x65, 0x1C, 0x2C, 0x85, 0x06, 0x43, 0x41, 0x4C, 0x4C, 0x20, 0x32, 0xD0, 0x04, 0x00, 0x0E, 0x00, 0xB4, 0xD0, 0x04, 0x00, 0x06, 0x00, 0xB4 }; static unsigned char setup_call_483[] = { 0xD0, 0x2C, 0x81, 0x03, 0x01, 0x10, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0E, 0x43, 0x4F, 0x4E, 0x46, 0x49, 0x52, 0x4D, 0x41, 0x54, 0x49, 0x4F, 0x4E, 0x20, 0x33, 0x86, 0x09, 0x91, 0x10, 0x32, 0x04, 0x21, 0x43, 0x65, 0x1C, 0x2C, 0x85, 0x06, 0x43, 0x41, 0x4C, 0x4C, 0x20, 0x33 }; static unsigned char setup_call_491[] = { 0xD0, 0x38, 0x81, 0x03, 0x01, 0x10, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0E, 0x43, 0x4F, 0x4E, 0x46, 0x49, 0x52, 0x4D, 0x41, 0x54, 0x49, 0x4F, 0x4E, 0x20, 0x31, 0x86, 0x09, 0x91, 0x10, 0x32, 0x04, 0x21, 0x43, 0x65, 0x1C, 0x2C, 0x85, 0x06, 0x43, 0x41, 0x4C, 0x4C, 0x20, 0x31, 0xD0, 0x04, 0x00, 0x0E, 0x80, 0xB4, 0xD0, 0x04, 0x00, 0x06, 0x80, 0xB4 }; static unsigned char setup_call_492[] = { 0xD0, 0x38, 0x81, 0x03, 0x01, 0x10, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0E, 0x43, 0x4F, 0x4E, 0x46, 0x49, 0x52, 0x4D, 0x41, 0x54, 0x49, 0x4F, 0x4E, 0x20, 0x32, 0x86, 0x09, 0x91, 0x10, 0x32, 0x04, 0x21, 0x43, 0x65, 0x1C, 0x2C, 0x85, 0x06, 0x43, 0x41, 0x4C, 0x4C, 0x20, 0x32, 0xD0, 0x04, 0x00, 0x0E, 0x00, 0xB4, 0xD0, 0x04, 0x00, 0x06, 0x00, 0xB4 }; static unsigned char setup_call_493[] = { 0xD0, 0x2C, 0x81, 0x03, 0x01, 0x10, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0E, 0x43, 0x4F, 0x4E, 0x46, 0x49, 0x52, 0x4D, 0x41, 0x54, 0x49, 0x4F, 0x4E, 0x20, 0x33, 0x86, 0x09, 0x91, 0x10, 0x32, 0x04, 0x21, 0x43, 0x65, 0x1C, 0x2C, 0x85, 0x06, 0x43, 0x41, 0x4C, 0x4C, 0x20, 0x33 }; static unsigned char setup_call_4101[] = { 0xD0, 0x38, 0x81, 0x03, 0x01, 0x10, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0E, 0x43, 0x4F, 0x4E, 0x46, 0x49, 0x52, 0x4D, 0x41, 0x54, 0x49, 0x4F, 0x4E, 0x20, 0x31, 0x86, 0x09, 0x91, 0x10, 0x32, 0x04, 0x21, 0x43, 0x65, 0x1C, 0x2C, 0x85, 0x06, 0x43, 0x41, 0x4C, 0x4C, 0x20, 0x31, 0xD0, 0x04, 0x00, 0x0E, 0x00, 0xB4, 0xD0, 0x04, 0x00, 0x06, 0x00, 0x4B }; static unsigned char setup_call_4102[] = { 0xD0, 0x2C, 0x81, 0x03, 0x01, 0x10, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0E, 0x43, 0x4F, 0x4E, 0x46, 0x49, 0x52, 0x4D, 0x41, 0x54, 0x49, 0x4F, 0x4E, 0x20, 0x32, 0x86, 0x09, 0x91, 0x10, 0x32, 0x04, 0x21, 0x43, 0x65, 0x1C, 0x2C, 0x85, 0x06, 0x43, 0x41, 0x4C, 0x4C, 0x20, 0x32 }; static unsigned char setup_call_511[] = { 0xD0, 0x2D, 0x81, 0x03, 0x01, 0x10, 0x00, 0x82, 0x02, 0x81, 0x83, 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, 0x86, 0x07, 0x91, 0x10, 0x32, 0x04, 0x21, 0x43, 0x65 }; static unsigned char setup_call_521[] = { 0xD0, 0x4C, 0x81, 0x03, 0x01, 0x10, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x1B, 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, 0x86, 0x07, 0x91, 0x10, 0x32, 0x04, 0x21, 0x43, 0x65, 0x85, 0x1B, 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 }; static unsigned char setup_call_611[] = { 0xD0, 0x19, 0x81, 0x03, 0x01, 0x10, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x05, 0x80, 0x4E, 0x0D, 0x5F, 0xD9, 0x86, 0x07, 0x91, 0x10, 0x32, 0x04, 0x21, 0x43, 0x65 }; static unsigned char setup_call_621[] = { 0xD0, 0x22, 0x81, 0x03, 0x01, 0x10, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x05, 0x80, 0x78, 0x6E, 0x5B, 0x9A, 0x86, 0x07, 0x91, 0x10, 0x32, 0x04, 0x21, 0x43, 0x65, 0x85, 0x07, 0x80, 0x62, 0x53, 0x75, 0x35, 0x8B, 0xDD }; static unsigned char setup_call_711[] = { 0xD0, 0x17, 0x81, 0x03, 0x01, 0x10, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x03, 0x80, 0x30, 0xEB, 0x86, 0x07, 0x91, 0x10, 0x32, 0x04, 0x21, 0x43, 0x65 }; static unsigned char setup_call_721[] = { 0xD0, 0x20, 0x81, 0x03, 0x01, 0x10, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x05, 0x80, 0x30, 0xEB, 0x00, 0x31, 0x86, 0x07, 0x91, 0x10, 0x32, 0x04, 0x21, 0x43, 0x65, 0x85, 0x05, 0x80, 0x30, 0xEB, 0x00, 0x32 }; static struct setup_call_test setup_call_data_111 = { .pdu = setup_call_111, .pdu_len = sizeof(setup_call_111), .qualifier = 0x00, .alpha_id_usr_cfm = "Not busy", .addr = { .ton_npi = 0x91, .number = "012340123456c1c2" } }; static struct setup_call_test setup_call_data_141 = { .pdu = setup_call_141, .pdu_len = sizeof(setup_call_141), .qualifier = 0x02, .alpha_id_usr_cfm = "On hold", .addr = { .ton_npi = 0x91, .number = "012340123456c1c2" } }; static struct setup_call_test setup_call_data_151 = { .pdu = setup_call_151, .pdu_len = sizeof(setup_call_151), .qualifier = 0x04, .alpha_id_usr_cfm = "Disconnect", .addr = { .ton_npi = 0x91, .number = "012340123456c1c2" } }; static struct setup_call_test setup_call_data_181 = { .pdu = setup_call_181, .pdu_len = sizeof(setup_call_181), .qualifier = 0x00, .alpha_id_usr_cfm = "Capability config", .addr = { .ton_npi = 0x91, .number = "012340123456c1c2" }, .ccp = { .len = 0x02, .ccp = { 0x01, 0xA0 } } }; static struct setup_call_test setup_call_data_191 = { .pdu = setup_call_191, .pdu_len = sizeof(setup_call_191), .qualifier = 0x01, .addr = { .ton_npi = 0x91, .number = "01234567890123456789012345678901" } }; static struct setup_call_test setup_call_data_1101 = { .pdu = setup_call_1101, .pdu_len = sizeof(setup_call_1101), .qualifier = 0x01, .alpha_id_usr_cfm = "Three types are defined: - set up a call, but " "only if not currently busy on another call; - set " "up a call, putting all other calls (if any) on hold; " "- set up a call, disconnecting all other calls (if " "any) first. For each of these types, ", .addr = { .ton_npi = 0x91, .number = "01" } }; static struct setup_call_test setup_call_data_1111 = { .pdu = setup_call_1111, .pdu_len = sizeof(setup_call_1111), .qualifier = 0x00, .alpha_id_usr_cfm = "Called party", .addr = { .ton_npi = 0x91, .number = "012340123456c1c2" }, .subaddr = { .len = 0x07, .subaddr = { 0x80, 0x50, 0x95, 0x95, 0x95, 0x95, 0x95 } } }; static struct setup_call_test setup_call_data_1121 = { .pdu = setup_call_1121, .pdu_len = sizeof(setup_call_1121), .qualifier = 0x01, .alpha_id_usr_cfm = "Duration", .addr = { .ton_npi = 0x91, .number = "012340123456c1c2" }, .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 10, } }; static struct setup_call_test setup_call_data_211 = { .pdu = setup_call_211, .pdu_len = sizeof(setup_call_211), .qualifier = 0x00, .alpha_id_usr_cfm = "CONFIRMATION", .addr = { .ton_npi = 0x91, .number = "012340123456c1c2" }, .alpha_id_call_setup = "CALL" }; static struct setup_call_test setup_call_data_311 = { .pdu = setup_call_311, .pdu_len = sizeof(setup_call_311), .qualifier = 0x00, .alpha_id_usr_cfm = "Set up call Icon 3.1.1", .addr = { .ton_npi = 0x91, .number = "012340123456c1c2" }, .icon_id_usr_cfm = { .qualifier = STK_ICON_QUALIFIER_TYPE_NON_SELF_EXPLANATORY, .id = 0x01 } }; static struct setup_call_test setup_call_data_321 = { .pdu = setup_call_321, .pdu_len = sizeof(setup_call_321), .qualifier = 0x00, .alpha_id_usr_cfm = "Set up call Icon 3.2.1", .addr = { .ton_npi = 0x91, .number = "012340123456c1c2" }, .icon_id_usr_cfm = { .qualifier = STK_ICON_QUALIFIER_TYPE_SELF_EXPLANATORY, .id = 0x01 } }; static struct setup_call_test setup_call_data_331 = { .pdu = setup_call_331, .pdu_len = sizeof(setup_call_331), .qualifier = 0x00, .alpha_id_usr_cfm = "Set up call Icon 3.3.1", .addr = { .ton_npi = 0x91, .number = "012340123456c1c2" }, .icon_id_usr_cfm = { .qualifier = STK_ICON_QUALIFIER_TYPE_NON_SELF_EXPLANATORY, .id = 0x02 } }; static struct setup_call_test setup_call_data_341 = { .pdu = setup_call_341, .pdu_len = sizeof(setup_call_341), .qualifier = 0x00, .alpha_id_usr_cfm = "Set up call Icon 3.4.1", .addr = { .ton_npi = 0x91, .number = "012340123456c1c2" }, .icon_id_usr_cfm = { .qualifier = STK_ICON_QUALIFIER_TYPE_SELF_EXPLANATORY, .id = 0x01 }, .alpha_id_call_setup = "Set up call Icon 3.4.2", .icon_id_call_setup = { .qualifier = STK_ICON_QUALIFIER_TYPE_SELF_EXPLANATORY, .id = 0x01 } }; static struct setup_call_test setup_call_data_411 = { .pdu = setup_call_411, .pdu_len = sizeof(setup_call_411), .qualifier = 0x00, .alpha_id_usr_cfm = "CONFIRMATION 1", .addr = { .ton_npi = 0x91, .number = "012340123456c1c2" }, .alpha_id_call_setup = "CALL 1", .text_attr_usr_cfm = { .len = 4, .attributes = { 0x00, 0x0E, 0x00, 0xB4 } }, .text_attr_call_setup = { .len = 4, .attributes = { 0x00, 0x06, 0x00, 0xB4 } } }; static struct setup_call_test setup_call_data_412 = { .pdu = setup_call_412, .pdu_len = sizeof(setup_call_412), .qualifier = 0x00, .alpha_id_usr_cfm = "CONFIRMATION 2", .addr = { .ton_npi = 0x91, .number = "012340123456c1c2" }, .alpha_id_call_setup = "CALL 2" }; static struct setup_call_test setup_call_data_421 = { .pdu = setup_call_421, .pdu_len = sizeof(setup_call_421), .qualifier = 0x00, .alpha_id_usr_cfm = "CONFIRMATION 1", .addr = { .ton_npi = 0x91, .number = "012340123456c1c2" }, .alpha_id_call_setup = "CALL 1", .text_attr_usr_cfm = { .len = 4, .attributes = { 0x00, 0x0E, 0x01, 0xB4 } }, .text_attr_call_setup = { .len = 4, .attributes = { 0x00, 0x06, 0x01, 0xB4 } } }; static struct setup_call_test setup_call_data_422 = { .pdu = setup_call_422, .pdu_len = sizeof(setup_call_422), .qualifier = 0x00, .alpha_id_usr_cfm = "CONFIRMATION 2", .addr = { .ton_npi = 0x91, .number = "012340123456c1c2" }, .alpha_id_call_setup = "CALL 2" }; static struct setup_call_test setup_call_data_431 = { .pdu = setup_call_431, .pdu_len = sizeof(setup_call_431), .qualifier = 0x00, .alpha_id_usr_cfm = "CONFIRMATION 1", .addr = { .ton_npi = 0x91, .number = "012340123456c1c2" }, .alpha_id_call_setup = "CALL 1", .text_attr_usr_cfm = { .len = 4, .attributes = { 0x00, 0x0E, 0x02, 0xB4 } }, .text_attr_call_setup = { .len = 4, .attributes = { 0x00, 0x06, 0x02, 0xB4 } } }; static struct setup_call_test setup_call_data_432 = { .pdu = setup_call_432, .pdu_len = sizeof(setup_call_432), .qualifier = 0x00, .alpha_id_usr_cfm = "CONFIRMATION 2", .addr = { .ton_npi = 0x91, .number = "012340123456c1c2" }, .alpha_id_call_setup = "CALL 2" }; static struct setup_call_test setup_call_data_441 = { .pdu = setup_call_441, .pdu_len = sizeof(setup_call_441), .qualifier = 0x00, .alpha_id_usr_cfm = "CONFIRMATION 1", .addr = { .ton_npi = 0x91, .number = "012340123456c1c2" }, .alpha_id_call_setup = "CALL 1", .text_attr_usr_cfm = { .len = 4, .attributes = { 0x00, 0x0E, 0x04, 0xB4 } }, .text_attr_call_setup = { .len = 4, .attributes = { 0x00, 0x06, 0x04, 0xB4 } } }; static struct setup_call_test setup_call_data_442 = { .pdu = setup_call_442, .pdu_len = sizeof(setup_call_442), .qualifier = 0x00, .alpha_id_usr_cfm = "CONFIRMATION 2", .addr = { .ton_npi = 0x91, .number = "012340123456c1c2" }, .alpha_id_call_setup = "CALL 2", .text_attr_usr_cfm = { .len = 4, .attributes = { 0x00, 0x0E, 0x00, 0xB4 } }, .text_attr_call_setup = { .len = 4, .attributes = { 0x00, 0x06, 0x00, 0xB4 } } }; static struct setup_call_test setup_call_data_443 = { .pdu = setup_call_443, .pdu_len = sizeof(setup_call_443), .qualifier = 0x00, .alpha_id_usr_cfm = "CONFIRMATION 3", .addr = { .ton_npi = 0x91, .number = "012340123456c1c2" }, .alpha_id_call_setup = "CALL 3" }; static struct setup_call_test setup_call_data_451 = { .pdu = setup_call_451, .pdu_len = sizeof(setup_call_451), .qualifier = 0x00, .alpha_id_usr_cfm = "CONFIRMATION 1", .addr = { .ton_npi = 0x91, .number = "012340123456c1c2" }, .alpha_id_call_setup = "CALL 1", .text_attr_usr_cfm = { .len = 4, .attributes = { 0x00, 0x0E, 0x08, 0xB4 } }, .text_attr_call_setup = { .len = 4, .attributes = { 0x00, 0x06, 0x08, 0xB4 } } }; static struct setup_call_test setup_call_data_452 = { .pdu = setup_call_452, .pdu_len = sizeof(setup_call_452), .qualifier = 0x00, .alpha_id_usr_cfm = "CONFIRMATION 2", .addr = { .ton_npi = 0x91, .number = "012340123456c1c2" }, .alpha_id_call_setup = "CALL 2", .text_attr_usr_cfm = { .len = 4, .attributes = { 0x00, 0x0E, 0x00, 0xB4 } }, .text_attr_call_setup = { .len = 4, .attributes = { 0x00, 0x06, 0x00, 0xB4 } } }; static struct setup_call_test setup_call_data_453 = { .pdu = setup_call_453, .pdu_len = sizeof(setup_call_453), .qualifier = 0x00, .alpha_id_usr_cfm = "CONFIRMATION 3", .addr = { .ton_npi = 0x91, .number = "012340123456c1c2" }, .alpha_id_call_setup = "CALL 3" }; static struct setup_call_test setup_call_data_461 = { .pdu = setup_call_461, .pdu_len = sizeof(setup_call_461), .qualifier = 0x00, .alpha_id_usr_cfm = "CONFIRMATION 1", .addr = { .ton_npi = 0x91, .number = "012340123456c1c2" }, .alpha_id_call_setup = "CALL 1", .text_attr_usr_cfm = { .len = 4, .attributes = { 0x00, 0x0E, 0x10, 0xB4 } }, .text_attr_call_setup = { .len = 4, .attributes = { 0x00, 0x06, 0x10, 0xB4 } } }; static struct setup_call_test setup_call_data_462 = { .pdu = setup_call_462, .pdu_len = sizeof(setup_call_462), .qualifier = 0x00, .alpha_id_usr_cfm = "CONFIRMATION 2", .addr = { .ton_npi = 0x91, .number = "012340123456c1c2" }, .alpha_id_call_setup = "CALL 2", .text_attr_usr_cfm = { .len = 4, .attributes = { 0x00, 0x0E, 0x00, 0xB4 } }, .text_attr_call_setup = { .len = 4, .attributes = { 0x00, 0x06, 0x00, 0xB4 } } }; static struct setup_call_test setup_call_data_463 = { .pdu = setup_call_463, .pdu_len = sizeof(setup_call_463), .qualifier = 0x00, .alpha_id_usr_cfm = "CONFIRMATION 3", .addr = { .ton_npi = 0x91, .number = "012340123456c1c2" }, .alpha_id_call_setup = "CALL 3" }; static struct setup_call_test setup_call_data_471 = { .pdu = setup_call_471, .pdu_len = sizeof(setup_call_471), .qualifier = 0x00, .alpha_id_usr_cfm = "CONFIRMATION 1", .addr = { .ton_npi = 0x91, .number = "012340123456c1c2" }, .alpha_id_call_setup = "CALL 1", .text_attr_usr_cfm = { .len = 4, .attributes = { 0x00, 0x0E, 0x20, 0xB4 } }, .text_attr_call_setup = { .len = 4, .attributes = { 0x00, 0x06, 0x20, 0xB4 } } }; static struct setup_call_test setup_call_data_472 = { .pdu = setup_call_472, .pdu_len = sizeof(setup_call_472), .qualifier = 0x00, .alpha_id_usr_cfm = "CONFIRMATION 2", .addr = { .ton_npi = 0x91, .number = "012340123456c1c2" }, .alpha_id_call_setup = "CALL 2", .text_attr_usr_cfm = { .len = 4, .attributes = { 0x00, 0x0E, 0x00, 0xB4 } }, .text_attr_call_setup = { .len = 4, .attributes = { 0x00, 0x06, 0x00, 0xB4 } } }; static struct setup_call_test setup_call_data_473 = { .pdu = setup_call_473, .pdu_len = sizeof(setup_call_473), .qualifier = 0x00, .alpha_id_usr_cfm = "CONFIRMATION 3", .addr = { .ton_npi = 0x91, .number = "012340123456c1c2" }, .alpha_id_call_setup = "CALL 3" }; static struct setup_call_test setup_call_data_481 = { .pdu = setup_call_481, .pdu_len = sizeof(setup_call_481), .qualifier = 0x00, .alpha_id_usr_cfm = "CONFIRMATION 1", .addr = { .ton_npi = 0x91, .number = "012340123456c1c2" }, .alpha_id_call_setup = "CALL 1", .text_attr_usr_cfm = { .len = 4, .attributes = { 0x00, 0x0E, 0x40, 0xB4 } }, .text_attr_call_setup = { .len = 4, .attributes = { 0x00, 0x06, 0x40, 0xB4 } } }; static struct setup_call_test setup_call_data_482 = { .pdu = setup_call_482, .pdu_len = sizeof(setup_call_482), .qualifier = 0x00, .alpha_id_usr_cfm = "CONFIRMATION 2", .addr = { .ton_npi = 0x91, .number = "012340123456c1c2" }, .alpha_id_call_setup = "CALL 2", .text_attr_usr_cfm = { .len = 4, .attributes = { 0x00, 0x0E, 0x00, 0xB4 } }, .text_attr_call_setup = { .len = 4, .attributes = { 0x00, 0x06, 0x00, 0xB4 } } }; static struct setup_call_test setup_call_data_483 = { .pdu = setup_call_483, .pdu_len = sizeof(setup_call_483), .qualifier = 0x00, .alpha_id_usr_cfm = "CONFIRMATION 3", .addr = { .ton_npi = 0x91, .number = "012340123456c1c2" }, .alpha_id_call_setup = "CALL 3" }; static struct setup_call_test setup_call_data_491 = { .pdu = setup_call_491, .pdu_len = sizeof(setup_call_491), .qualifier = 0x00, .alpha_id_usr_cfm = "CONFIRMATION 1", .addr = { .ton_npi = 0x91, .number = "012340123456c1c2" }, .alpha_id_call_setup = "CALL 1", .text_attr_usr_cfm = { .len = 4, .attributes = { 0x00, 0x0E, 0x80, 0xB4 } }, .text_attr_call_setup = { .len = 4, .attributes = { 0x00, 0x06, 0x80, 0xB4 } } }; static struct setup_call_test setup_call_data_492 = { .pdu = setup_call_492, .pdu_len = sizeof(setup_call_492), .qualifier = 0x00, .alpha_id_usr_cfm = "CONFIRMATION 2", .addr = { .ton_npi = 0x91, .number = "012340123456c1c2" }, .alpha_id_call_setup = "CALL 2", .text_attr_usr_cfm = { .len = 4, .attributes = { 0x00, 0x0E, 0x00, 0xB4 } }, .text_attr_call_setup = { .len = 4, .attributes = { 0x00, 0x06, 0x00, 0xB4 } } }; static struct setup_call_test setup_call_data_493 = { .pdu = setup_call_493, .pdu_len = sizeof(setup_call_493), .qualifier = 0x00, .alpha_id_usr_cfm = "CONFIRMATION 3", .addr = { .ton_npi = 0x91, .number = "012340123456c1c2" }, .alpha_id_call_setup = "CALL 3" }; static struct setup_call_test setup_call_data_4101 = { .pdu = setup_call_4101, .pdu_len = sizeof(setup_call_4101), .qualifier = 0x00, .alpha_id_usr_cfm = "CONFIRMATION 1", .addr = { .ton_npi = 0x91, .number = "012340123456c1c2" }, .alpha_id_call_setup = "CALL 1", .text_attr_usr_cfm = { .len = 4, .attributes = { 0x00, 0x0E, 0x00, 0xB4 } }, .text_attr_call_setup = { .len = 4, .attributes = { 0x00, 0x06, 0x00, 0x4B } } }; static struct setup_call_test setup_call_data_4102 = { .pdu = setup_call_4102, .pdu_len = sizeof(setup_call_4102), .qualifier = 0x00, .alpha_id_usr_cfm = "CONFIRMATION 2", .addr = { .ton_npi = 0x91, .number = "012340123456c1c2" }, .alpha_id_call_setup = "CALL 2" }; static struct setup_call_test setup_call_data_511 = { .pdu = setup_call_511, .pdu_len = sizeof(setup_call_511), .qualifier = 0x00, .alpha_id_usr_cfm = "ЗДРАВСТВУЙТЕ", .addr = { .ton_npi = 0x91, .number = "012340123456" } }; static struct setup_call_test setup_call_data_521 = { .pdu = setup_call_521, .pdu_len = sizeof(setup_call_521), .qualifier = 0x00, .alpha_id_usr_cfm = "ЗДРАВСТВУЙТЕ1", .addr = { .ton_npi = 0x91, .number = "012340123456" }, .alpha_id_call_setup = "ЗДРАВСТВУЙТЕ2" }; static struct setup_call_test setup_call_data_611 = { .pdu = setup_call_611, .pdu_len = sizeof(setup_call_611), .qualifier = 0x00, .alpha_id_usr_cfm = "不忙", .addr = { .ton_npi = 0x91, .number = "012340123456" } }; static struct setup_call_test setup_call_data_621 = { .pdu = setup_call_621, .pdu_len = sizeof(setup_call_621), .qualifier = 0x00, .alpha_id_usr_cfm = "确定", .addr = { .ton_npi = 0x91, .number = "012340123456" }, .alpha_id_call_setup = "打电话" }; static struct setup_call_test setup_call_data_711 = { .pdu = setup_call_711, .pdu_len = sizeof(setup_call_711), .qualifier = 0x00, .alpha_id_usr_cfm = "ル", .addr = { .ton_npi = 0x91, .number = "012340123456" } }; static struct setup_call_test setup_call_data_721 = { .pdu = setup_call_721, .pdu_len = sizeof(setup_call_721), .qualifier = 0x00, .alpha_id_usr_cfm = "ル1", .addr = { .ton_npi = 0x91, .number = "012340123456" }, .alpha_id_call_setup = "ル2" }; static void test_setup_call(gconstpointer data) { const struct setup_call_test *test = data; struct stk_command *command; command = stk_command_new_from_pdu(test->pdu, test->pdu_len); g_assert(command); g_assert(command->status == STK_PARSE_RESULT_OK); g_assert(command->number == 1); g_assert(command->type == STK_COMMAND_TYPE_SETUP_CALL); g_assert(command->qualifier == test->qualifier); g_assert(command->src == STK_DEVICE_IDENTITY_TYPE_UICC); g_assert(command->dst == STK_DEVICE_IDENTITY_TYPE_NETWORK); check_alpha_id(command->setup_call.alpha_id_usr_cfm, test->alpha_id_usr_cfm); check_address(&command->setup_call.addr, &test->addr); check_ccp(&command->setup_call.ccp, &test->ccp); check_subaddress(&command->setup_call.subaddr, &test->subaddr); check_duration(&command->setup_call.duration, &test->duration); check_icon_id(&command->setup_call.icon_id_usr_cfm, &test->icon_id_usr_cfm); check_alpha_id(command->setup_call.alpha_id_call_setup, test->alpha_id_call_setup); check_icon_id(&command->setup_call.icon_id_call_setup, &test->icon_id_call_setup); check_text_attr(&command->setup_call.text_attr_usr_cfm, &test->text_attr_usr_cfm); check_text_attr(&command->setup_call.text_attr_call_setup, &test->text_attr_call_setup); check_frame_id(&command->setup_call.frame_id, &test->frame_id); stk_command_free(command); } struct refresh_test { const unsigned char *pdu; unsigned int pdu_len; unsigned char qualifier; struct stk_file file_list[MAX_ITEM]; struct stk_aid aid; char *alpha_id; struct stk_icon_id icon_id; struct stk_text_attribute text_attr; struct stk_frame_id frame_id; }; static unsigned char refresh_121[] = { 0xD0, 0x10, 0x81, 0x03, 0x01, 0x01, 0x01, 0x82, 0x02, 0x81, 0x82, 0x92, 0x05, 0x01, 0x3F, 0x00, 0x2F, 0xE2 }; static unsigned char refresh_151[] = { 0xD0, 0x09, 0x81, 0x03, 0x01, 0x01, 0x04, 0x82, 0x02, 0x81, 0x82 }; static struct refresh_test refresh_data_121 = { .pdu = refresh_121, .pdu_len = sizeof(refresh_121), .qualifier = 0x01, .file_list = {{ .len = 4, .file = { 0x3F, 0x00, 0x2F, 0xE2 } }} }; static struct refresh_test refresh_data_151 = { .pdu = refresh_151, .pdu_len = sizeof(refresh_151), .qualifier = 0x04 }; /* Defined in TS 102.384 Section 27.22.4.7 */ static void test_refresh(gconstpointer data) { const struct refresh_test *test = data; struct stk_command *command; command = stk_command_new_from_pdu(test->pdu, test->pdu_len); g_assert(command); g_assert(command->status == STK_PARSE_RESULT_OK); g_assert(command->number == 1); g_assert(command->type == STK_COMMAND_TYPE_REFRESH); g_assert(command->qualifier == test->qualifier); g_assert(command->src == STK_DEVICE_IDENTITY_TYPE_UICC); g_assert(command->dst == STK_DEVICE_IDENTITY_TYPE_TERMINAL); check_file_list(command->refresh.file_list, test->file_list); check_aid(&command->refresh.aid, &test->aid); check_alpha_id(command->refresh.alpha_id, test->alpha_id); check_icon_id(&command->refresh.icon_id, &test->icon_id); check_text_attr(&command->refresh.text_attr, &test->text_attr); check_frame_id(&command->refresh.frame_id, &test->frame_id); stk_command_free(command); } struct polling_off_test { const unsigned char *pdu; unsigned int pdu_len; unsigned char qualifier; }; static unsigned char polling_off_112[] = { 0xD0, 0x09, 0x81, 0x03, 0x01, 0x04, 0x00, 0x82, 0x02, 0x81, 0x82 }; static struct polling_off_test polling_off_data_112 = { .pdu = polling_off_112, .pdu_len = sizeof(polling_off_112), .qualifier = 0x00, }; static void test_polling_off(gconstpointer data) { const struct polling_off_test *test = data; struct stk_command *command; command = stk_command_new_from_pdu(test->pdu, test->pdu_len); g_assert(command); g_assert(command->status == STK_PARSE_RESULT_OK); g_assert(command->number == 1); g_assert(command->type == STK_COMMAND_TYPE_POLLING_OFF); g_assert(command->qualifier == test->qualifier); g_assert(command->src == STK_DEVICE_IDENTITY_TYPE_UICC); g_assert(command->dst == STK_DEVICE_IDENTITY_TYPE_TERMINAL); stk_command_free(command); } struct provide_local_info_test { const unsigned char *pdu; unsigned int pdu_len; unsigned char qualifier; }; static unsigned char provide_local_info_121[] = { 0xD0, 0x09, 0x81, 0x03, 0x01, 0x26, 0x01, 0x82, 0x02, 0x81, 0x82 }; static unsigned char provide_local_info_141[] = { 0xD0, 0x09, 0x81, 0x03, 0x01, 0x26, 0x03, 0x82, 0x02, 0x81, 0x82 }; static unsigned char provide_local_info_151[] = { 0xD0, 0x09, 0x81, 0x03, 0x01, 0x26, 0x04, 0x82, 0x02, 0x81, 0x82 }; static unsigned char provide_local_info_181[] = { 0xD0, 0x09, 0x81, 0x03, 0x01, 0x26, 0x07, 0x82, 0x02, 0x81, 0x82 }; static unsigned char provide_local_info_191[] = { 0xD0, 0x09, 0x81, 0x03, 0x01, 0x26, 0x08, 0x82, 0x02, 0x81, 0x82 }; static unsigned char provide_local_info_1111[] = { 0xD0, 0x09, 0x81, 0x03, 0x01, 0x26, 0x0A, 0x82, 0x02, 0x81, 0x82 }; static struct provide_local_info_test provide_local_info_data_121 = { .pdu = provide_local_info_121, .pdu_len = sizeof(provide_local_info_121), .qualifier = 0x01 }; static struct provide_local_info_test provide_local_info_data_141 = { .pdu = provide_local_info_141, .pdu_len = sizeof(provide_local_info_141), .qualifier = 0x03 }; static struct provide_local_info_test provide_local_info_data_151 = { .pdu = provide_local_info_151, .pdu_len = sizeof(provide_local_info_151), .qualifier = 0x04 }; static struct provide_local_info_test provide_local_info_data_181 = { .pdu = provide_local_info_181, .pdu_len = sizeof(provide_local_info_181), .qualifier = 0x07 }; static struct provide_local_info_test provide_local_info_data_191 = { .pdu = provide_local_info_191, .pdu_len = sizeof(provide_local_info_191), .qualifier = 0x08 }; static struct provide_local_info_test provide_local_info_data_1111 = { .pdu = provide_local_info_1111, .pdu_len = sizeof(provide_local_info_1111), .qualifier = 0x0A }; static void test_provide_local_info(gconstpointer data) { const struct provide_local_info_test *test = data; struct stk_command *command; command = stk_command_new_from_pdu(test->pdu, test->pdu_len); g_assert(command); g_assert(command->status == STK_PARSE_RESULT_OK); g_assert(command->number == 1); g_assert(command->type == STK_COMMAND_TYPE_PROVIDE_LOCAL_INFO); g_assert(command->qualifier == test->qualifier); g_assert(command->src == STK_DEVICE_IDENTITY_TYPE_UICC); g_assert(command->dst == STK_DEVICE_IDENTITY_TYPE_TERMINAL); stk_command_free(command); } struct setup_event_list_test { const unsigned char *pdu; unsigned int pdu_len; unsigned char qualifier; struct stk_event_list event_list; }; static unsigned char setup_event_list_111[] = { 0xD0, 0x0C, 0x81, 0x03, 0x01, 0x05, 0x00, 0x82, 0x02, 0x81, 0x82, 0x99, 0x01, 0x04 }; static unsigned char setup_event_list_121[] = { 0xD0, 0x0D, 0x81, 0x03, 0x01, 0x05, 0x00, 0x82, 0x02, 0x81, 0x82, 0x99, 0x02, 0x05, 0x07 }; static unsigned char setup_event_list_122[] = { 0xD0, 0x0C, 0x81, 0x03, 0x01, 0x05, 0x00, 0x82, 0x02, 0x81, 0x82, 0x99, 0x01, 0x07 }; static unsigned char setup_event_list_131[] = { 0xD0, 0x0C, 0x81, 0x03, 0x01, 0x05, 0x00, 0x82, 0x02, 0x81, 0x82, 0x99, 0x01, 0x07 }; static unsigned char setup_event_list_132[] = { 0xD0, 0x0B, 0x81, 0x03, 0x01, 0x05, 0x00, 0x82, 0x02, 0x81, 0x82, 0x99, 0x00 }; static unsigned char setup_event_list_141[] = { 0xD0, 0x0C, 0x81, 0x03, 0x01, 0x05, 0x00, 0x82, 0x02, 0x81, 0x82, 0x99, 0x01, 0x07 }; static struct setup_event_list_test setup_event_list_data_111 = { .pdu = setup_event_list_111, .pdu_len = sizeof(setup_event_list_111), .qualifier = 0x00, .event_list = { .len = 1, .list = { STK_EVENT_TYPE_USER_ACTIVITY } } }; static struct setup_event_list_test setup_event_list_data_121 = { .pdu = setup_event_list_121, .pdu_len = sizeof(setup_event_list_121), .qualifier = 0x00, .event_list = { .len = 2, .list = { STK_EVENT_TYPE_IDLE_SCREEN_AVAILABLE, STK_EVENT_TYPE_LANGUAGE_SELECTION } } }; static struct setup_event_list_test setup_event_list_data_122 = { .pdu = setup_event_list_122, .pdu_len = sizeof(setup_event_list_122), .qualifier = 0x00, .event_list = { .len = 1, .list = { STK_EVENT_TYPE_LANGUAGE_SELECTION } } }; static struct setup_event_list_test setup_event_list_data_131 = { .pdu = setup_event_list_131, .pdu_len = sizeof(setup_event_list_131), .qualifier = 0x00, .event_list = { .len = 1, .list = { STK_EVENT_TYPE_LANGUAGE_SELECTION } } }; static struct setup_event_list_test setup_event_list_data_132 = { .pdu = setup_event_list_132, .pdu_len = sizeof(setup_event_list_132), .qualifier = 0x00 }; static struct setup_event_list_test setup_event_list_data_141 = { .pdu = setup_event_list_141, .pdu_len = sizeof(setup_event_list_141), .qualifier = 0x00, .event_list = { .len = 1, .list = { STK_EVENT_TYPE_LANGUAGE_SELECTION } } }; static void test_setup_event_list(gconstpointer data) { const struct setup_event_list_test *test = data; struct stk_command *command; command = stk_command_new_from_pdu(test->pdu, test->pdu_len); g_assert(command); g_assert(command->status == STK_PARSE_RESULT_OK); g_assert(command->number == 1); g_assert(command->type == STK_COMMAND_TYPE_SETUP_EVENT_LIST); g_assert(command->qualifier == test->qualifier); g_assert(command->src == STK_DEVICE_IDENTITY_TYPE_UICC); g_assert(command->dst == STK_DEVICE_IDENTITY_TYPE_TERMINAL); check_event_list(&command->setup_event_list.event_list, &test->event_list); stk_command_free(command); } struct perform_card_apdu_test { const unsigned char *pdu; unsigned int pdu_len; unsigned char qualifier; unsigned char dst; struct stk_c_apdu c_apdu; }; static unsigned char perform_card_apdu_111[] = { 0xD0, 0x12, 0x81, 0x03, 0x01, 0x30, 0x00, 0x82, 0x02, 0x81, 0x11, 0xA2, 0x07, 0xA0, 0xA4, 0x00, 0x00, 0x02, 0x3F, 0x00 }; static unsigned char perform_card_apdu_112[] = { 0xD0, 0x10, 0x81, 0x03, 0x01, 0x30, 0x00, 0x82, 0x02, 0x81, 0x11, 0xA2, 0x05, 0xA0, 0xC0, 0x00, 0x00, 0x1B }; static unsigned char perform_card_apdu_121[] = { 0xD0, 0x12, 0x81, 0x03, 0x01, 0x30, 0x00, 0x82, 0x02, 0x81, 0x11, 0xA2, 0x07, 0xA0, 0xA4, 0x00, 0x00, 0x02, 0x7F, 0x20 }; static unsigned char perform_card_apdu_122[] = { 0xD0, 0x12, 0x81, 0x03, 0x01, 0x30, 0x00, 0x82, 0x02, 0x81, 0x11, 0xA2, 0x07, 0xA0, 0xA4, 0x00, 0x00, 0x02, 0x6F, 0x30 }; static unsigned char perform_card_apdu_123[] = { 0xD0, 0x28, 0x81, 0x03, 0x01, 0x30, 0x00, 0x82, 0x02, 0x81, 0x11, 0xA2, 0x1D, 0xA0, 0xD6, 0x00, 0x00, 0x18, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17 }; static unsigned char perform_card_apdu_124[] = { 0xD0, 0x10, 0x81, 0x03, 0x01, 0x30, 0x00, 0x82, 0x02, 0x81, 0x11, 0xA2, 0x05, 0xA0, 0xB0, 0x00, 0x00, 0x18 }; static unsigned char perform_card_apdu_125[] = { 0xD0, 0x28, 0x81, 0x03, 0x01, 0x30, 0x00, 0x82, 0x02, 0x81, 0x11, 0xA2, 0x1D, 0xA0, 0xD6, 0x00, 0x00, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }; static unsigned char perform_card_apdu_151[] = { 0xD0, 0x12, 0x81, 0x03, 0x01, 0x30, 0x00, 0x82, 0x02, 0x81, 0x17, 0xA2, 0x07, 0xA0, 0xA4, 0x00, 0x00, 0x02, 0x3F, 0x00 }; static unsigned char perform_card_apdu_211[] = { 0xD0, 0x12, 0x81, 0x03, 0x01, 0x30, 0x00, 0x82, 0x02, 0x81, 0x11, 0xA2, 0x07, 0xA0, 0xA4, 0x00, 0x00, 0x02, 0x3F, 0x00 }; static struct perform_card_apdu_test perform_card_apdu_data_111 = { .pdu = perform_card_apdu_111, .pdu_len = sizeof(perform_card_apdu_111), .qualifier = 0x00, .dst = STK_DEVICE_IDENTITY_TYPE_CARD_READER_1, .c_apdu = { .cla = 0xA0, .ins = STK_INS_SELECT, .p1 = 0x00, .p2 = 0x00, .lc = 0x02, .data = { 0x3F, 0x00 } } }; static struct perform_card_apdu_test perform_card_apdu_data_112 = { .pdu = perform_card_apdu_112, .pdu_len = sizeof(perform_card_apdu_112), .qualifier = 0x00, .dst = STK_DEVICE_IDENTITY_TYPE_CARD_READER_1, .c_apdu = { .cla = 0xA0, .ins = STK_INS_GET_RESPONSE, .p1 = 0x00, .p2 = 0x00, .has_le = 1, .le = 0x1B } }; static struct perform_card_apdu_test perform_card_apdu_data_121 = { .pdu = perform_card_apdu_121, .pdu_len = sizeof(perform_card_apdu_121), .qualifier = 0x00, .dst = STK_DEVICE_IDENTITY_TYPE_CARD_READER_1, .c_apdu = { .cla = 0xA0, .ins = STK_INS_SELECT, .p1 = 0x00, .p2 = 0x00, .lc = 0x02, .data = { 0x7F, 0x20 } } }; static struct perform_card_apdu_test perform_card_apdu_data_122 = { .pdu = perform_card_apdu_122, .pdu_len = sizeof(perform_card_apdu_122), .qualifier = 0x00, .dst = STK_DEVICE_IDENTITY_TYPE_CARD_READER_1, .c_apdu = { .cla = 0xA0, .ins = STK_INS_SELECT, .p1 = 0x00, .p2 = 0x00, .lc = 0x02, .data = { 0x6F, 0x30 } } }; /* Byte 14 of Data is not correct in spec. */ static struct perform_card_apdu_test perform_card_apdu_data_123 = { .pdu = perform_card_apdu_123, .pdu_len = sizeof(perform_card_apdu_123), .qualifier = 0x00, .dst = STK_DEVICE_IDENTITY_TYPE_CARD_READER_1, .c_apdu = { .cla = 0xA0, .ins = STK_INS_UPDATE_BINARY_D6, .p1 = 0x00, .p2 = 0x00, .lc = 0x18, .data = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17 } } }; static struct perform_card_apdu_test perform_card_apdu_data_124 = { .pdu = perform_card_apdu_124, .pdu_len = sizeof(perform_card_apdu_124), .qualifier = 0x00, .dst = STK_DEVICE_IDENTITY_TYPE_CARD_READER_1, .c_apdu = { .cla = 0xA0, .ins = STK_INS_READ_BINARY_B0, .p1 = 0x00, .p2 = 0x00, .has_le = 1, .le = 0x18 } }; static struct perform_card_apdu_test perform_card_apdu_data_125 = { .pdu = perform_card_apdu_125, .pdu_len = sizeof(perform_card_apdu_125), .qualifier = 0x00, .dst = STK_DEVICE_IDENTITY_TYPE_CARD_READER_1, .c_apdu = { .cla = 0xA0, .ins = STK_INS_UPDATE_BINARY_D6, .p1 = 0x00, .p2 = 0x00, .lc = 0x18, .data = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF } } }; static struct perform_card_apdu_test perform_card_apdu_data_151 = { .pdu = perform_card_apdu_151, .pdu_len = sizeof(perform_card_apdu_151), .qualifier = 0x00, .dst = STK_DEVICE_IDENTITY_TYPE_CARD_READER_7, .c_apdu = { .cla = 0xA0, .ins = STK_INS_SELECT, .p1 = 0x00, .p2 = 0x00, .lc = 0x02, .data = { 0x3F, 0x00 } } }; static struct perform_card_apdu_test perform_card_apdu_data_211 = { .pdu = perform_card_apdu_211, .pdu_len = sizeof(perform_card_apdu_211), .qualifier = 0x00, .dst = STK_DEVICE_IDENTITY_TYPE_CARD_READER_1, .c_apdu = { .cla = 0xA0, .ins = STK_INS_SELECT, .p1 = 0x00, .p2 = 0x00, .lc = 0x02, .data = { 0x3F, 0x00 } } }; static void test_perform_card_apdu(gconstpointer data) { const struct perform_card_apdu_test *test = data; struct stk_command *command; command = stk_command_new_from_pdu(test->pdu, test->pdu_len); g_assert(command); g_assert(command->status == STK_PARSE_RESULT_OK); g_assert(command->number == 1); g_assert(command->type == STK_COMMAND_TYPE_PERFORM_CARD_APDU); g_assert(command->qualifier == test->qualifier); g_assert(command->src == STK_DEVICE_IDENTITY_TYPE_UICC); g_assert(command->dst == test->dst); check_c_apdu(&command->perform_card_apdu.c_apdu, &test->c_apdu); stk_command_free(command); } struct get_reader_status_test { const unsigned char *pdu; unsigned int pdu_len; unsigned char qualifier; }; static unsigned char get_reader_status_111[] = { 0xD0, 0x09, 0x81, 0x03, 0x01, 0x33, 0x00, 0x82, 0x02, 0x81, 0x82 }; static struct get_reader_status_test get_reader_status_data_111 = { .pdu = get_reader_status_111, .pdu_len = sizeof(get_reader_status_111), .qualifier = STK_QUALIFIER_TYPE_CARD_READER_STATUS, }; static void test_get_reader_status(gconstpointer data) { const struct get_reader_status_test *test = data; struct stk_command *command; command = stk_command_new_from_pdu(test->pdu, test->pdu_len); g_assert(command); g_assert(command->status == STK_PARSE_RESULT_OK); g_assert(command->number == 1); g_assert(command->type == STK_COMMAND_TYPE_GET_READER_STATUS); g_assert(command->qualifier == test->qualifier); g_assert(command->src == STK_DEVICE_IDENTITY_TYPE_UICC); if (command->qualifier == STK_QUALIFIER_TYPE_CARD_READER_STATUS) g_assert(command->dst == STK_DEVICE_IDENTITY_TYPE_TERMINAL); else g_assert(command->dst < STK_DEVICE_IDENTITY_TYPE_CARD_READER_0 || command->dst > STK_DEVICE_IDENTITY_TYPE_CARD_READER_7); stk_command_free(command); } struct timer_mgmt_test { const unsigned char *pdu; unsigned int pdu_len; unsigned char qualifier; unsigned char timer_id; struct stk_timer_value timer_value; }; static unsigned char timer_mgmt_111[] = { 0xD0, 0x11, 0x81, 0x03, 0x01, 0x27, 0x00, 0x82, 0x02, 0x81, 0x82, 0xA4, 0x01, 0x01, 0xA5, 0x03, 0x00, 0x50, 0x00 }; static unsigned char timer_mgmt_112[] = { 0xD0, 0x0C, 0x81, 0x03, 0x01, 0x27, 0x02, 0x82, 0x02, 0x81, 0x82, 0xA4, 0x01, 0x01 }; static unsigned char timer_mgmt_113[] = { 0xD0, 0x11, 0x81, 0x03, 0x01, 0x27, 0x00, 0x82, 0x02, 0x81, 0x82, 0xA4, 0x01, 0x01, 0xA5, 0x03, 0x00, 0x10, 0x03 }; static unsigned char timer_mgmt_114[] = { 0xD0, 0x0C, 0x81, 0x03, 0x01, 0x27, 0x01, 0x82, 0x02, 0x81, 0x82, 0xA4, 0x01, 0x01 }; static unsigned char timer_mgmt_121[] = { 0xD0, 0x11, 0x81, 0x03, 0x01, 0x27, 0x00, 0x82, 0x02, 0x81, 0x82, 0xA4, 0x01, 0x02, 0xA5, 0x03, 0x32, 0x95, 0x95 }; static unsigned char timer_mgmt_122[] = { 0xD0, 0x0C, 0x81, 0x03, 0x01, 0x27, 0x02, 0x82, 0x02, 0x81, 0x82, 0xA4, 0x01, 0x02 }; static unsigned char timer_mgmt_123[] = { 0xD0, 0x11, 0x81, 0x03, 0x01, 0x27, 0x00, 0x82, 0x02, 0x81, 0x82, 0xA4, 0x01, 0x02, 0xA5, 0x03, 0x00, 0x10, 0x01 }; static unsigned char timer_mgmt_124[] = { 0xD0, 0x0C, 0x81, 0x03, 0x01, 0x27, 0x01, 0x82, 0x02, 0x81, 0x82, 0xA4, 0x01, 0x02 }; static unsigned char timer_mgmt_131[] = { 0xD0, 0x11, 0x81, 0x03, 0x01, 0x27, 0x00, 0x82, 0x02, 0x81, 0x82, 0xA4, 0x01, 0x08, 0xA5, 0x03, 0x00, 0x02, 0x00 }; static unsigned char timer_mgmt_132[] = { 0xD0, 0x0C, 0x81, 0x03, 0x01, 0x27, 0x02, 0x82, 0x02, 0x81, 0x82, 0xA4, 0x01, 0x08 }; static unsigned char timer_mgmt_133[] = { 0xD0, 0x11, 0x81, 0x03, 0x01, 0x27, 0x00, 0x82, 0x02, 0x81, 0x82, 0xA4, 0x01, 0x08, 0xA5, 0x03, 0x10, 0x00, 0x00 }; static unsigned char timer_mgmt_134[] = { 0xD0, 0x0C, 0x81, 0x03, 0x01, 0x27, 0x01, 0x82, 0x02, 0x81, 0x82, 0xA4, 0x01, 0x08 }; static unsigned char timer_mgmt_141[] = { 0xD0, 0x0C, 0x81, 0x03, 0x01, 0x27, 0x02, 0x82, 0x02, 0x81, 0x82, 0xA4, 0x01, 0x01 }; static unsigned char timer_mgmt_142[] = { 0xD0, 0x0C, 0x81, 0x03, 0x01, 0x27, 0x02, 0x82, 0x02, 0x81, 0x82, 0xA4, 0x01, 0x02 }; static unsigned char timer_mgmt_143[] = { 0xD0, 0x0C, 0x81, 0x03, 0x01, 0x27, 0x02, 0x82, 0x02, 0x81, 0x82, 0xA4, 0x01, 0x03 }; static unsigned char timer_mgmt_144[] = { 0xD0, 0x0C, 0x81, 0x03, 0x01, 0x27, 0x02, 0x82, 0x02, 0x81, 0x82, 0xA4, 0x01, 0x04 }; static unsigned char timer_mgmt_145[] = { 0xD0, 0x0C, 0x81, 0x03, 0x01, 0x27, 0x02, 0x82, 0x02, 0x81, 0x82, 0xA4, 0x01, 0x05 }; static unsigned char timer_mgmt_146[] = { 0xD0, 0x0C, 0x81, 0x03, 0x01, 0x27, 0x02, 0x82, 0x02, 0x81, 0x82, 0xA4, 0x01, 0x06 }; static unsigned char timer_mgmt_147[] = { 0xD0, 0x0C, 0x81, 0x03, 0x01, 0x27, 0x02, 0x82, 0x02, 0x81, 0x82, 0xA4, 0x01, 0x07 }; static unsigned char timer_mgmt_148[] = { 0xD0, 0x0C, 0x81, 0x03, 0x01, 0x27, 0x02, 0x82, 0x02, 0x81, 0x82, 0xA4, 0x01, 0x08 }; static unsigned char timer_mgmt_151[] = { 0xD0, 0x0C, 0x81, 0x03, 0x01, 0x27, 0x01, 0x82, 0x02, 0x81, 0x82, 0xA4, 0x01, 0x01 }; static unsigned char timer_mgmt_152[] = { 0xD0, 0x0C, 0x81, 0x03, 0x01, 0x27, 0x01, 0x82, 0x02, 0x81, 0x82, 0xA4, 0x01, 0x02 }; static unsigned char timer_mgmt_153[] = { 0xD0, 0x0C, 0x81, 0x03, 0x01, 0x27, 0x01, 0x82, 0x02, 0x81, 0x82, 0xA4, 0x01, 0x03 }; static unsigned char timer_mgmt_154[] = { 0xD0, 0x0C, 0x81, 0x03, 0x01, 0x27, 0x01, 0x82, 0x02, 0x81, 0x82, 0xA4, 0x01, 0x04 }; static unsigned char timer_mgmt_155[] = { 0xD0, 0x0C, 0x81, 0x03, 0x01, 0x27, 0x01, 0x82, 0x02, 0x81, 0x82, 0xA4, 0x01, 0x05 }; static unsigned char timer_mgmt_156[] = { 0xD0, 0x0C, 0x81, 0x03, 0x01, 0x27, 0x01, 0x82, 0x02, 0x81, 0x82, 0xA4, 0x01, 0x06 }; static unsigned char timer_mgmt_157[] = { 0xD0, 0x0C, 0x81, 0x03, 0x01, 0x27, 0x01, 0x82, 0x02, 0x81, 0x82, 0xA4, 0x01, 0x07 }; static unsigned char timer_mgmt_158[] = { 0xD0, 0x0C, 0x81, 0x03, 0x01, 0x27, 0x01, 0x82, 0x02, 0x81, 0x82, 0xA4, 0x01, 0x08 }; static unsigned char timer_mgmt_161[] = { 0xD0, 0x11, 0x81, 0x03, 0x01, 0x27, 0x00, 0x82, 0x02, 0x81, 0x82, 0xA4, 0x01, 0x01, 0xA5, 0x03, 0x00, 0x00, 0x50 }; static unsigned char timer_mgmt_162[] = { 0xD0, 0x11, 0x81, 0x03, 0x01, 0x27, 0x00, 0x82, 0x02, 0x81, 0x82, 0xA4, 0x01, 0x02, 0xA5, 0x03, 0x00, 0x00, 0x50 }; static unsigned char timer_mgmt_163[] = { 0xD0, 0x11, 0x81, 0x03, 0x01, 0x27, 0x00, 0x82, 0x02, 0x81, 0x82, 0xA4, 0x01, 0x03, 0xA5, 0x03, 0x00, 0x00, 0x50 }; static unsigned char timer_mgmt_164[] = { 0xD0, 0x11, 0x81, 0x03, 0x01, 0x27, 0x00, 0x82, 0x02, 0x81, 0x82, 0xA4, 0x01, 0x04, 0xA5, 0x03, 0x00, 0x00, 0x50 }; static unsigned char timer_mgmt_165[] = { 0xD0, 0x11, 0x81, 0x03, 0x01, 0x27, 0x00, 0x82, 0x02, 0x81, 0x82, 0xA4, 0x01, 0x05, 0xA5, 0x03, 0x00, 0x00, 0x50 }; static unsigned char timer_mgmt_166[] = { 0xD0, 0x11, 0x81, 0x03, 0x01, 0x27, 0x00, 0x82, 0x02, 0x81, 0x82, 0xA4, 0x01, 0x06, 0xA5, 0x03, 0x00, 0x00, 0x50 }; static unsigned char timer_mgmt_167[] = { 0xD0, 0x11, 0x81, 0x03, 0x01, 0x27, 0x00, 0x82, 0x02, 0x81, 0x82, 0xA4, 0x01, 0x07, 0xA5, 0x03, 0x00, 0x00, 0x50 }; static unsigned char timer_mgmt_168[] = { 0xD0, 0x11, 0x81, 0x03, 0x01, 0x27, 0x00, 0x82, 0x02, 0x81, 0x82, 0xA4, 0x01, 0x08, 0xA5, 0x03, 0x00, 0x00, 0x50 }; static unsigned char timer_mgmt_211[] = { 0xD0, 0x11, 0x81, 0x03, 0x01, 0x27, 0x00, 0x82, 0x02, 0x81, 0x82, 0xA4, 0x01, 0x01, 0xA5, 0x03, 0x00, 0x00, 0x01 }; static unsigned char timer_mgmt_221[] = { 0xD0, 0x11, 0x81, 0x03, 0x01, 0x27, 0x00, 0x82, 0x02, 0x81, 0x82, 0xA4, 0x01, 0x01, 0xA5, 0x03, 0x00, 0x00, 0x03 }; static struct timer_mgmt_test timer_mgmt_data_111 = { .pdu = timer_mgmt_111, .pdu_len = sizeof(timer_mgmt_111), .qualifier = 0x00, .timer_id = 1, .timer_value = { .minute = 5 } }; static struct timer_mgmt_test timer_mgmt_data_112 = { .pdu = timer_mgmt_112, .pdu_len = sizeof(timer_mgmt_112), .qualifier = 0x02, .timer_id = 1 }; static struct timer_mgmt_test timer_mgmt_data_113 = { .pdu = timer_mgmt_113, .pdu_len = sizeof(timer_mgmt_113), .qualifier = 0x00, .timer_id = 1, .timer_value = { .minute = 1, .second = 30 } }; static struct timer_mgmt_test timer_mgmt_data_114 = { .pdu = timer_mgmt_114, .pdu_len = sizeof(timer_mgmt_114), .qualifier = 0x01, .timer_id = 1 }; static struct timer_mgmt_test timer_mgmt_data_121 = { .pdu = timer_mgmt_121, .pdu_len = sizeof(timer_mgmt_121), .qualifier = 0x00, .timer_id = 2, .timer_value = { .hour = 23, .minute = 59, .second = 59 } }; static struct timer_mgmt_test timer_mgmt_data_122 = { .pdu = timer_mgmt_122, .pdu_len = sizeof(timer_mgmt_122), .qualifier = 0x02, .timer_id = 2 }; static struct timer_mgmt_test timer_mgmt_data_123 = { .pdu = timer_mgmt_123, .pdu_len = sizeof(timer_mgmt_123), .qualifier = 0x00, .timer_id = 2, .timer_value = { .minute = 1, .second = 10 } }; static struct timer_mgmt_test timer_mgmt_data_124 = { .pdu = timer_mgmt_124, .pdu_len = sizeof(timer_mgmt_124), .qualifier = 0x01, .timer_id = 2 }; static struct timer_mgmt_test timer_mgmt_data_131 = { .pdu = timer_mgmt_131, .pdu_len = sizeof(timer_mgmt_131), .qualifier = 0x00, .timer_id = 8, .timer_value = { .minute = 20 } }; static struct timer_mgmt_test timer_mgmt_data_132 = { .pdu = timer_mgmt_132, .pdu_len = sizeof(timer_mgmt_132), .qualifier = 0x02, .timer_id = 8 }; static struct timer_mgmt_test timer_mgmt_data_133 = { .pdu = timer_mgmt_133, .pdu_len = sizeof(timer_mgmt_133), .qualifier = 0x00, .timer_id = 8, .timer_value = { .hour = 1 } }; static struct timer_mgmt_test timer_mgmt_data_134 = { .pdu = timer_mgmt_134, .pdu_len = sizeof(timer_mgmt_134), .qualifier = 0x01, .timer_id = 8 }; static struct timer_mgmt_test timer_mgmt_data_141 = { .pdu = timer_mgmt_141, .pdu_len = sizeof(timer_mgmt_141), .qualifier = 0x02, .timer_id = 1 }; static struct timer_mgmt_test timer_mgmt_data_142 = { .pdu = timer_mgmt_142, .pdu_len = sizeof(timer_mgmt_142), .qualifier = 0x02, .timer_id = 2 }; static struct timer_mgmt_test timer_mgmt_data_143 = { .pdu = timer_mgmt_143, .pdu_len = sizeof(timer_mgmt_143), .qualifier = 0x02, .timer_id = 3 }; static struct timer_mgmt_test timer_mgmt_data_144 = { .pdu = timer_mgmt_144, .pdu_len = sizeof(timer_mgmt_144), .qualifier = 0x02, .timer_id = 4 }; static struct timer_mgmt_test timer_mgmt_data_145 = { .pdu = timer_mgmt_145, .pdu_len = sizeof(timer_mgmt_145), .qualifier = 0x02, .timer_id = 5 }; static struct timer_mgmt_test timer_mgmt_data_146 = { .pdu = timer_mgmt_146, .pdu_len = sizeof(timer_mgmt_146), .qualifier = 0x02, .timer_id = 6 }; static struct timer_mgmt_test timer_mgmt_data_147 = { .pdu = timer_mgmt_147, .pdu_len = sizeof(timer_mgmt_147), .qualifier = 0x02, .timer_id = 7 }; static struct timer_mgmt_test timer_mgmt_data_148 = { .pdu = timer_mgmt_148, .pdu_len = sizeof(timer_mgmt_148), .qualifier = 0x02, .timer_id = 8 }; static struct timer_mgmt_test timer_mgmt_data_151 = { .pdu = timer_mgmt_151, .pdu_len = sizeof(timer_mgmt_151), .qualifier = 0x01, .timer_id = 1 }; static struct timer_mgmt_test timer_mgmt_data_152 = { .pdu = timer_mgmt_152, .pdu_len = sizeof(timer_mgmt_152), .qualifier = 0x01, .timer_id = 2 }; static struct timer_mgmt_test timer_mgmt_data_153 = { .pdu = timer_mgmt_153, .pdu_len = sizeof(timer_mgmt_153), .qualifier = 0x01, .timer_id = 3 }; static struct timer_mgmt_test timer_mgmt_data_154 = { .pdu = timer_mgmt_154, .pdu_len = sizeof(timer_mgmt_154), .qualifier = 0x01, .timer_id = 4 }; static struct timer_mgmt_test timer_mgmt_data_155 = { .pdu = timer_mgmt_155, .pdu_len = sizeof(timer_mgmt_155), .qualifier = 0x01, .timer_id = 5 }; static struct timer_mgmt_test timer_mgmt_data_156 = { .pdu = timer_mgmt_156, .pdu_len = sizeof(timer_mgmt_156), .qualifier = 0x01, .timer_id = 6 }; static struct timer_mgmt_test timer_mgmt_data_157 = { .pdu = timer_mgmt_157, .pdu_len = sizeof(timer_mgmt_157), .qualifier = 0x01, .timer_id = 7 }; static struct timer_mgmt_test timer_mgmt_data_158 = { .pdu = timer_mgmt_158, .pdu_len = sizeof(timer_mgmt_158), .qualifier = 0x01, .timer_id = 8 }; static struct timer_mgmt_test timer_mgmt_data_161 = { .pdu = timer_mgmt_161, .pdu_len = sizeof(timer_mgmt_161), .qualifier = 0x00, .timer_id = 1, .timer_value = { .second = 5 } }; static struct timer_mgmt_test timer_mgmt_data_162 = { .pdu = timer_mgmt_162, .pdu_len = sizeof(timer_mgmt_162), .qualifier = 0x00, .timer_id = 2, .timer_value = { .second = 5 } }; static struct timer_mgmt_test timer_mgmt_data_163 = { .pdu = timer_mgmt_163, .pdu_len = sizeof(timer_mgmt_163), .qualifier = 0x00, .timer_id = 3, .timer_value = { .second = 5 } }; static struct timer_mgmt_test timer_mgmt_data_164 = { .pdu = timer_mgmt_164, .pdu_len = sizeof(timer_mgmt_164), .qualifier = 0x00, .timer_id = 4, .timer_value = { .second = 5 } }; static struct timer_mgmt_test timer_mgmt_data_165 = { .pdu = timer_mgmt_165, .pdu_len = sizeof(timer_mgmt_165), .qualifier = 0x00, .timer_id = 5, .timer_value = { .second = 5 } }; static struct timer_mgmt_test timer_mgmt_data_166 = { .pdu = timer_mgmt_166, .pdu_len = sizeof(timer_mgmt_166), .qualifier = 0x00, .timer_id = 6, .timer_value = { .second = 5 } }; static struct timer_mgmt_test timer_mgmt_data_167 = { .pdu = timer_mgmt_167, .pdu_len = sizeof(timer_mgmt_167), .qualifier = 0x00, .timer_id = 7, .timer_value = { .second = 5 } }; static struct timer_mgmt_test timer_mgmt_data_168 = { .pdu = timer_mgmt_168, .pdu_len = sizeof(timer_mgmt_168), .qualifier = 0x00, .timer_id = 8, .timer_value = { .second = 5 } }; static struct timer_mgmt_test timer_mgmt_data_211 = { .pdu = timer_mgmt_211, .pdu_len = sizeof(timer_mgmt_211), .qualifier = 0x00, .timer_id = 1, .timer_value = { .second = 10 } }; static struct timer_mgmt_test timer_mgmt_data_221 = { .pdu = timer_mgmt_221, .pdu_len = sizeof(timer_mgmt_221), .qualifier = 0x00, .timer_id = 1, .timer_value = { .second = 30 } }; static void test_timer_mgmt(gconstpointer data) { const struct timer_mgmt_test *test = data; struct stk_command *command; command = stk_command_new_from_pdu(test->pdu, test->pdu_len); g_assert(command); g_assert(command->status == STK_PARSE_RESULT_OK); g_assert(command->number == 1); g_assert(command->type == STK_COMMAND_TYPE_TIMER_MANAGEMENT); g_assert(command->qualifier == test->qualifier); g_assert(command->src == STK_DEVICE_IDENTITY_TYPE_UICC); g_assert(command->dst == STK_DEVICE_IDENTITY_TYPE_TERMINAL); check_timer_id(command->timer_mgmt.timer_id, test->timer_id); check_timer_value(&command->timer_mgmt.timer_value, &test->timer_value); stk_command_free(command); } struct setup_idle_mode_text_test { const unsigned char *pdu; unsigned int pdu_len; unsigned char qualifier; char *text; struct stk_icon_id icon_id; struct stk_text_attribute text_attr; struct stk_frame_id frame_id; char *html; enum stk_command_parse_result status; }; static unsigned char setup_idle_mode_text_111[] = { 0xD0, 0x1A, 0x81, 0x03, 0x01, 0x28, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x0F, 0x04, 0x49, 0x64, 0x6C, 0x65, 0x20, 0x4D, 0x6F, 0x64, 0x65, 0x20, 0x54, 0x65, 0x78, 0x74 }; static unsigned char setup_idle_mode_text_121[] = { 0xD0, 0x18, 0x81, 0x03, 0x01, 0x28, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x0D, 0x04, 0x54, 0x6F, 0x6F, 0x6C, 0x6B, 0x69, 0x74, 0x20, 0x54, 0x65, 0x73, 0x74 }; static unsigned char setup_idle_mode_text_131[] = { 0xD0, 0x0B, 0x81, 0x03, 0x01, 0x28, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x00 }; static unsigned char setup_idle_mode_text_171[] = { 0xD0, 0x81, 0xFD, 0x81, 0x03, 0x01, 0x28, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x81, 0xF1, 0x00, 0x54, 0x74, 0x19, 0x34, 0x4D, 0x36, 0x41, 0x73, 0x74, 0x98, 0xCD, 0x06, 0xCD, 0xEB, 0x70, 0x38, 0x3B, 0x0F, 0x0A, 0x83, 0xE8, 0x65, 0x3C, 0x1D, 0x34, 0xA7, 0xCB, 0xD3, 0xEE, 0x33, 0x0B, 0x74, 0x47, 0xA7, 0xC7, 0x68, 0xD0, 0x1C, 0x1D, 0x66, 0xB3, 0x41, 0xE2, 0x32, 0x88, 0x9C, 0x9E, 0xC3, 0xD9, 0xE1, 0x7C, 0x99, 0x0C, 0x12, 0xE7, 0x41, 0x74, 0x74, 0x19, 0xD4, 0x2C, 0x82, 0xC2, 0x73, 0x50, 0xD8, 0x0D, 0x4A, 0x93, 0xD9, 0x65, 0x50, 0xFB, 0x4D, 0x2E, 0x83, 0xE8, 0x65, 0x3C, 0x1D, 0x94, 0x36, 0x83, 0xE8, 0xE8, 0x32, 0xA8, 0x59, 0x04, 0xA5, 0xE7, 0xA0, 0xB0, 0x98, 0x5D, 0x06, 0xD1, 0xDF, 0x20, 0xF2, 0x1B, 0x94, 0xA6, 0xBB, 0xA8, 0xE8, 0x32, 0x08, 0x2E, 0x2F, 0xCF, 0xCB, 0x6E, 0x7A, 0x98, 0x9E, 0x7E, 0xBB, 0x41, 0x73, 0x7A, 0x9E, 0x5D, 0x06, 0xA5, 0xE7, 0x20, 0x76, 0xD9, 0x4C, 0x07, 0x85, 0xE7, 0xA0, 0xB0, 0x1B, 0x94, 0x6E, 0xC3, 0xD9, 0xE5, 0x76, 0xD9, 0x4D, 0x0F, 0xD3, 0xD3, 0x6F, 0x37, 0x88, 0x5C, 0x1E, 0xA7, 0xE7, 0xE9, 0xB7, 0x1B, 0x44, 0x7F, 0x83, 0xE8, 0xE8, 0x32, 0xA8, 0x59, 0x04, 0xB5, 0xC3, 0xEE, 0xBA, 0x39, 0x3C, 0xA6, 0xD7, 0xE5, 0x65, 0xB9, 0x0B, 0x44, 0x45, 0x97, 0x41, 0x69, 0x32, 0xBB, 0x0C, 0x6A, 0xBF, 0xC9, 0x65, 0x10, 0xBD, 0x8C, 0xA7, 0x83, 0xE6, 0xE8, 0x30, 0x9B, 0x0D, 0x12, 0x97, 0x41, 0xE4, 0xF4, 0x1C, 0xCE, 0x0E, 0xE7, 0xCB, 0x64, 0x50, 0xDA, 0x0D, 0x0A, 0x83, 0xDA, 0x61, 0xB7, 0xBB, 0x2C, 0x07, 0xD1, 0xD1, 0x61, 0x3A, 0xA8, 0xEC, 0x9E, 0xD7, 0xE5, 0xE5, 0x39, 0x88, 0x8E, 0x0E, 0xD3, 0x41, 0xEE, 0x32 }; static unsigned char setup_idle_mode_text_211[] = { 0xD0, 0x19, 0x81, 0x03, 0x01, 0x28, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x0A, 0x04, 0x49, 0x64, 0x6C, 0x65, 0x20, 0x74, 0x65, 0x78, 0x74, 0x9E, 0x02, 0x00, 0x01 }; static unsigned char setup_idle_mode_text_221[] = { 0xD0, 0x19, 0x81, 0x03, 0x01, 0x28, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x0A, 0x04, 0x49, 0x64, 0x6C, 0x65, 0x20, 0x74, 0x65, 0x78, 0x74, 0x9E, 0x02, 0x01, 0x01 }; static unsigned char setup_idle_mode_text_231[] = { 0xD0, 0x19, 0x81, 0x03, 0x01, 0x28, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x0A, 0x04, 0x49, 0x64, 0x6C, 0x65, 0x20, 0x74, 0x65, 0x78, 0x74, 0x9E, 0x02, 0x00, 0x02 }; static unsigned char setup_idle_mode_text_241[] = { 0xD0, 0x0F, 0x81, 0x03, 0x01, 0x28, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x00, 0x9E, 0x02, 0x01, 0x01 }; static unsigned char setup_idle_mode_text_311[] = { 0xD0, 0x24, 0x81, 0x03, 0x01, 0x28, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x19, 0x08, 0x04, 0x17, 0x04, 0x14, 0x04, 0x20, 0x04, 0x10, 0x04, 0x12, 0x04, 0x21, 0x04, 0x22, 0x04, 0x12, 0x04, 0x23, 0x04, 0x19, 0x04, 0x22, 0x04, 0x15 }; static unsigned char setup_idle_mode_text_411[] = { 0xD0, 0x22, 0x81, 0x03, 0x01, 0x28, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x11, 0x04, 0x49, 0x64, 0x6C, 0x65, 0x20, 0x4D, 0x6F, 0x64, 0x65, 0x20, 0x54, 0x65, 0x78, 0x74, 0x20, 0x31, 0xD0, 0x04, 0x00, 0x10, 0x00, 0xB4 }; static unsigned char setup_idle_mode_text_412[] = { 0xD0, 0x1C, 0x81, 0x03, 0x01, 0x28, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x11, 0x04, 0x49, 0x64, 0x6C, 0x65, 0x20, 0x4D, 0x6F, 0x64, 0x65, 0x20, 0x54, 0x65, 0x78, 0x74, 0x20, 0x32 }; static unsigned char setup_idle_mode_text_421[] = { 0xD0, 0x22, 0x81, 0x03, 0x01, 0x28, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x11, 0x04, 0x49, 0x64, 0x6C, 0x65, 0x20, 0x4D, 0x6F, 0x64, 0x65, 0x20, 0x54, 0x65, 0x78, 0x74, 0x20, 0x31, 0xD0, 0x04, 0x00, 0x10, 0x01, 0xB4 }; static unsigned char setup_idle_mode_text_422[] = { 0xD0, 0x1C, 0x81, 0x03, 0x01, 0x28, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x11, 0x04, 0x49, 0x64, 0x6C, 0x65, 0x20, 0x4D, 0x6F, 0x64, 0x65, 0x20, 0x54, 0x65, 0x78, 0x74, 0x20, 0x32 }; static unsigned char setup_idle_mode_text_431[] = { 0xD0, 0x22, 0x81, 0x03, 0x01, 0x28, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x11, 0x04, 0x49, 0x64, 0x6C, 0x65, 0x20, 0x4D, 0x6F, 0x64, 0x65, 0x20, 0x54, 0x65, 0x78, 0x74, 0x20, 0x31, 0xD0, 0x04, 0x00, 0x10, 0x02, 0xB4 }; static unsigned char setup_idle_mode_text_432[] = { 0xD0, 0x1C, 0x81, 0x03, 0x01, 0x28, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x11, 0x04, 0x49, 0x64, 0x6C, 0x65, 0x20, 0x4D, 0x6F, 0x64, 0x65, 0x20, 0x54, 0x65, 0x78, 0x74, 0x20, 0x32 }; static unsigned char setup_idle_mode_text_441[] = { 0xD0, 0x22, 0x81, 0x03, 0x01, 0x28, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x11, 0x04, 0x49, 0x64, 0x6C, 0x65, 0x20, 0x4D, 0x6F, 0x64, 0x65, 0x20, 0x54, 0x65, 0x78, 0x74, 0x20, 0x31, 0xD0, 0x04, 0x00, 0x10, 0x04, 0xB4 }; static unsigned char setup_idle_mode_text_442[] = { 0xD0, 0x22, 0x81, 0x03, 0x01, 0x28, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x11, 0x04, 0x49, 0x64, 0x6C, 0x65, 0x20, 0x4D, 0x6F, 0x64, 0x65, 0x20, 0x54, 0x65, 0x78, 0x74, 0x20, 0x32, 0xD0, 0x04, 0x00, 0x10, 0x00, 0xB4 }; static unsigned char setup_idle_mode_text_443[] = { 0xD0, 0x1C, 0x81, 0x03, 0x01, 0x28, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x11, 0x04, 0x49, 0x64, 0x6C, 0x65, 0x20, 0x4D, 0x6F, 0x64, 0x65, 0x20, 0x54, 0x65, 0x78, 0x74, 0x20, 0x33 }; static unsigned char setup_idle_mode_text_451[] = { 0xD0, 0x22, 0x81, 0x03, 0x01, 0x28, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x11, 0x04, 0x49, 0x64, 0x6C, 0x65, 0x20, 0x4D, 0x6F, 0x64, 0x65, 0x20, 0x54, 0x65, 0x78, 0x74, 0x20, 0x31, 0xD0, 0x04, 0x00, 0x10, 0x08, 0xB4 }; static unsigned char setup_idle_mode_text_452[] = { 0xD0, 0x22, 0x81, 0x03, 0x01, 0x28, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x11, 0x04, 0x49, 0x64, 0x6C, 0x65, 0x20, 0x4D, 0x6F, 0x64, 0x65, 0x20, 0x54, 0x65, 0x78, 0x74, 0x20, 0x32, 0xD0, 0x04, 0x00, 0x10, 0x00, 0xB4 }; static unsigned char setup_idle_mode_text_453[] = { 0xD0, 0x1C, 0x81, 0x03, 0x01, 0x28, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x11, 0x04, 0x49, 0x64, 0x6C, 0x65, 0x20, 0x4D, 0x6F, 0x64, 0x65, 0x20, 0x54, 0x65, 0x78, 0x74, 0x20, 0x33 }; static unsigned char setup_idle_mode_text_461[] = { 0xD0, 0x22, 0x81, 0x03, 0x01, 0x28, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x11, 0x04, 0x49, 0x64, 0x6C, 0x65, 0x20, 0x4D, 0x6F, 0x64, 0x65, 0x20, 0x54, 0x65, 0x78, 0x74, 0x20, 0x31, 0xD0, 0x04, 0x00, 0x10, 0x10, 0xB4 }; static unsigned char setup_idle_mode_text_462[] = { 0xD0, 0x22, 0x81, 0x03, 0x01, 0x28, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x11, 0x04, 0x49, 0x64, 0x6C, 0x65, 0x20, 0x4D, 0x6F, 0x64, 0x65, 0x20, 0x54, 0x65, 0x78, 0x74, 0x20, 0x32, 0xD0, 0x04, 0x00, 0x10, 0x00, 0xB4 }; static unsigned char setup_idle_mode_text_463[] = { 0xD0, 0x1C, 0x81, 0x03, 0x01, 0x28, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x11, 0x04, 0x49, 0x64, 0x6C, 0x65, 0x20, 0x4D, 0x6F, 0x64, 0x65, 0x20, 0x54, 0x65, 0x78, 0x74, 0x20, 0x33 }; static unsigned char setup_idle_mode_text_471[] = { 0xD0, 0x22, 0x81, 0x03, 0x01, 0x28, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x11, 0x04, 0x49, 0x64, 0x6C, 0x65, 0x20, 0x4D, 0x6F, 0x64, 0x65, 0x20, 0x54, 0x65, 0x78, 0x74, 0x20, 0x31, 0xD0, 0x04, 0x00, 0x10, 0x20, 0xB4 }; static unsigned char setup_idle_mode_text_472[] = { 0xD0, 0x22, 0x81, 0x03, 0x01, 0x28, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x11, 0x04, 0x49, 0x64, 0x6C, 0x65, 0x20, 0x4D, 0x6F, 0x64, 0x65, 0x20, 0x54, 0x65, 0x78, 0x74, 0x20, 0x32, 0xD0, 0x04, 0x00, 0x10, 0x00, 0xB4 }; static unsigned char setup_idle_mode_text_473[] = { 0xD0, 0x1C, 0x81, 0x03, 0x01, 0x28, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x11, 0x04, 0x49, 0x64, 0x6C, 0x65, 0x20, 0x4D, 0x6F, 0x64, 0x65, 0x20, 0x54, 0x65, 0x78, 0x74, 0x20, 0x33 }; static unsigned char setup_idle_mode_text_481[] = { 0xD0, 0x22, 0x81, 0x03, 0x01, 0x28, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x11, 0x04, 0x49, 0x64, 0x6C, 0x65, 0x20, 0x4D, 0x6F, 0x64, 0x65, 0x20, 0x54, 0x65, 0x78, 0x74, 0x20, 0x31, 0xD0, 0x04, 0x00, 0x10, 0x40, 0xB4 }; static unsigned char setup_idle_mode_text_482[] = { 0xD0, 0x22, 0x81, 0x03, 0x01, 0x28, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x11, 0x04, 0x49, 0x64, 0x6C, 0x65, 0x20, 0x4D, 0x6F, 0x64, 0x65, 0x20, 0x54, 0x65, 0x78, 0x74, 0x20, 0x32, 0xD0, 0x04, 0x00, 0x10, 0x00, 0xB4 }; static unsigned char setup_idle_mode_text_483[] = { 0xD0, 0x1C, 0x81, 0x03, 0x01, 0x28, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x11, 0x04, 0x49, 0x64, 0x6C, 0x65, 0x20, 0x4D, 0x6F, 0x64, 0x65, 0x20, 0x54, 0x65, 0x78, 0x74, 0x20, 0x33 }; static unsigned char setup_idle_mode_text_491[] = { 0xD0, 0x22, 0x81, 0x03, 0x01, 0x28, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x11, 0x04, 0x49, 0x64, 0x6C, 0x65, 0x20, 0x4D, 0x6F, 0x64, 0x65, 0x20, 0x54, 0x65, 0x78, 0x74, 0x20, 0x31, 0xD0, 0x04, 0x00, 0x10, 0x80, 0xB4 }; static unsigned char setup_idle_mode_text_492[] = { 0xD0, 0x22, 0x81, 0x03, 0x01, 0x28, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x11, 0x04, 0x49, 0x64, 0x6C, 0x65, 0x20, 0x4D, 0x6F, 0x64, 0x65, 0x20, 0x54, 0x65, 0x78, 0x74, 0x20, 0x32, 0xD0, 0x04, 0x00, 0x10, 0x00, 0xB4 }; static unsigned char setup_idle_mode_text_493[] = { 0xD0, 0x1C, 0x81, 0x03, 0x01, 0x28, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x11, 0x04, 0x49, 0x64, 0x6C, 0x65, 0x20, 0x4D, 0x6F, 0x64, 0x65, 0x20, 0x54, 0x65, 0x78, 0x74, 0x20, 0x33 }; static unsigned char setup_idle_mode_text_4101[] = { 0xD0, 0x22, 0x81, 0x03, 0x01, 0x28, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x11, 0x04, 0x49, 0x64, 0x6C, 0x65, 0x20, 0x4D, 0x6F, 0x64, 0x65, 0x20, 0x54, 0x65, 0x78, 0x74, 0x20, 0x31, 0xD0, 0x04, 0x00, 0x10, 0x00, 0xB4 }; static unsigned char setup_idle_mode_text_4102[] = { 0xD0, 0x1C, 0x81, 0x03, 0x01, 0x28, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x11, 0x04, 0x49, 0x64, 0x6C, 0x65, 0x20, 0x4D, 0x6F, 0x64, 0x65, 0x20, 0x54, 0x65, 0x78, 0x74, 0x20, 0x32 }; static unsigned char setup_idle_mode_text_511[] = { 0xD0, 0x10, 0x81, 0x03, 0x01, 0x28, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x05, 0x08, 0x4F, 0x60, 0x59, 0x7D }; static unsigned char setup_idle_mode_text_611[] = { 0xD0, 0x14, 0x81, 0x03, 0x01, 0x28, 0x00, 0x82, 0x02, 0x81, 0x82, 0x8D, 0x09, 0x08, 0x00, 0x38, 0x00, 0x30, 0x30, 0xEB, 0x00, 0x30 }; static struct setup_idle_mode_text_test setup_idle_mode_text_data_111 = { .pdu = setup_idle_mode_text_111, .pdu_len = sizeof(setup_idle_mode_text_111), .qualifier = 0x00, .text = "Idle Mode Text" }; static struct setup_idle_mode_text_test setup_idle_mode_text_data_121 = { .pdu = setup_idle_mode_text_121, .pdu_len = sizeof(setup_idle_mode_text_121), .qualifier = 0x00, .text = "Toolkit Test" }; static struct setup_idle_mode_text_test setup_idle_mode_text_data_131 = { .pdu = setup_idle_mode_text_131, .pdu_len = sizeof(setup_idle_mode_text_131), .qualifier = 0x00, .text = "" }; static struct setup_idle_mode_text_test setup_idle_mode_text_data_171 = { .pdu = setup_idle_mode_text_171, .pdu_len = sizeof(setup_idle_mode_text_171), .qualifier = 0x00, .text = "The SIM shall supply a text string, which shall be displayed " "by the ME as an idle mode text if the ME is able to do it." "The presentation style is left as an implementation decision " "to the ME manufacturer. The idle mode text shall be displayed " "in a manner that ensures that ne" }; static struct setup_idle_mode_text_test setup_idle_mode_text_data_211 = { .pdu = setup_idle_mode_text_211, .pdu_len = sizeof(setup_idle_mode_text_211), .qualifier = 0x00, .text = "Idle text", .icon_id = { .qualifier = STK_ICON_QUALIFIER_TYPE_SELF_EXPLANATORY, .id = 0x01 } }; static struct setup_idle_mode_text_test setup_idle_mode_text_data_221 = { .pdu = setup_idle_mode_text_221, .pdu_len = sizeof(setup_idle_mode_text_221), .qualifier = 0x00, .text = "Idle text", .icon_id = { .qualifier = STK_ICON_QUALIFIER_TYPE_NON_SELF_EXPLANATORY, .id = 0x01 } }; static struct setup_idle_mode_text_test setup_idle_mode_text_data_231 = { .pdu = setup_idle_mode_text_231, .pdu_len = sizeof(setup_idle_mode_text_231), .qualifier = 0x00, .text = "Idle text", .icon_id = { .qualifier = STK_ICON_QUALIFIER_TYPE_SELF_EXPLANATORY, .id = 0x02 } }; static struct setup_idle_mode_text_test setup_idle_mode_text_data_241 = { .pdu = setup_idle_mode_text_241, .pdu_len = sizeof(setup_idle_mode_text_241), .qualifier = 0x00, .text = "", .icon_id = { .qualifier = STK_ICON_QUALIFIER_TYPE_NON_SELF_EXPLANATORY, .id = 0x01 }, .status = STK_PARSE_RESULT_DATA_NOT_UNDERSTOOD }; static struct setup_idle_mode_text_test setup_idle_mode_text_data_311 = { .pdu = setup_idle_mode_text_311, .pdu_len = sizeof(setup_idle_mode_text_311), .qualifier = 0x00, .text = "ЗДРАВСТВУЙТЕ" }; static struct setup_idle_mode_text_test setup_idle_mode_text_data_411 = { .pdu = setup_idle_mode_text_411, .pdu_len = sizeof(setup_idle_mode_text_411), .qualifier = 0x00, .text = "Idle Mode Text 1", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } }, .html = "
Idle Mode Text 1" "
", }; static struct setup_idle_mode_text_test setup_idle_mode_text_data_412 = { .pdu = setup_idle_mode_text_412, .pdu_len = sizeof(setup_idle_mode_text_412), .qualifier = 0x00, .text = "Idle Mode Text 2" }; static struct setup_idle_mode_text_test setup_idle_mode_text_data_421 = { .pdu = setup_idle_mode_text_421, .pdu_len = sizeof(setup_idle_mode_text_421), .qualifier = 0x00, .text = "Idle Mode Text 1", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x01, 0xB4 } }, .html = "
Idle Mode Text 1" "
", }; static struct setup_idle_mode_text_test setup_idle_mode_text_data_422 = { .pdu = setup_idle_mode_text_422, .pdu_len = sizeof(setup_idle_mode_text_422), .qualifier = 0x00, .text = "Idle Mode Text 2" }; static struct setup_idle_mode_text_test setup_idle_mode_text_data_431 = { .pdu = setup_idle_mode_text_431, .pdu_len = sizeof(setup_idle_mode_text_431), .qualifier = 0x00, .text = "Idle Mode Text 1", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x02, 0xB4 } }, .html = "
Idle Mode Text 1" "
", }; static struct setup_idle_mode_text_test setup_idle_mode_text_data_432 = { .pdu = setup_idle_mode_text_432, .pdu_len = sizeof(setup_idle_mode_text_432), .qualifier = 0x00, .text = "Idle Mode Text 2" }; static struct setup_idle_mode_text_test setup_idle_mode_text_data_441 = { .pdu = setup_idle_mode_text_441, .pdu_len = sizeof(setup_idle_mode_text_441), .qualifier = 0x00, .text = "Idle Mode Text 1", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x04, 0xB4 } }, .html = "
" "Idle Mode Text 1
", }; static struct setup_idle_mode_text_test setup_idle_mode_text_data_442 = { .pdu = setup_idle_mode_text_442, .pdu_len = sizeof(setup_idle_mode_text_442), .qualifier = 0x00, .text = "Idle Mode Text 2", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } }, .html = "
Idle Mode Text 2" "
", }; static struct setup_idle_mode_text_test setup_idle_mode_text_data_443 = { .pdu = setup_idle_mode_text_443, .pdu_len = sizeof(setup_idle_mode_text_443), .qualifier = 0x00, .text = "Idle Mode Text 3" }; static struct setup_idle_mode_text_test setup_idle_mode_text_data_451 = { .pdu = setup_idle_mode_text_451, .pdu_len = sizeof(setup_idle_mode_text_451), .qualifier = 0x00, .text = "Idle Mode Text 1", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x08, 0xB4 } }, .html = "
" "Idle Mode Text 1
", }; static struct setup_idle_mode_text_test setup_idle_mode_text_data_452 = { .pdu = setup_idle_mode_text_452, .pdu_len = sizeof(setup_idle_mode_text_452), .qualifier = 0x00, .text = "Idle Mode Text 2", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } }, .html = "
Idle Mode Text 2" "
", }; static struct setup_idle_mode_text_test setup_idle_mode_text_data_453 = { .pdu = setup_idle_mode_text_453, .pdu_len = sizeof(setup_idle_mode_text_453), .qualifier = 0x00, .text = "Idle Mode Text 3" }; static struct setup_idle_mode_text_test setup_idle_mode_text_data_461 = { .pdu = setup_idle_mode_text_461, .pdu_len = sizeof(setup_idle_mode_text_461), .qualifier = 0x00, .text = "Idle Mode Text 1", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x10, 0xB4 } }, .html = "
" "Idle Mode Text 1
", }; static struct setup_idle_mode_text_test setup_idle_mode_text_data_462 = { .pdu = setup_idle_mode_text_462, .pdu_len = sizeof(setup_idle_mode_text_462), .qualifier = 0x00, .text = "Idle Mode Text 2", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } }, .html = "
Idle Mode Text 2" "
", }; static struct setup_idle_mode_text_test setup_idle_mode_text_data_463 = { .pdu = setup_idle_mode_text_463, .pdu_len = sizeof(setup_idle_mode_text_463), .qualifier = 0x00, .text = "Idle Mode Text 3" }; static struct setup_idle_mode_text_test setup_idle_mode_text_data_471 = { .pdu = setup_idle_mode_text_471, .pdu_len = sizeof(setup_idle_mode_text_471), .qualifier = 0x00, .text = "Idle Mode Text 1", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x20, 0xB4 } }, .html = "
" "Idle Mode Text 1
", }; static struct setup_idle_mode_text_test setup_idle_mode_text_data_472 = { .pdu = setup_idle_mode_text_472, .pdu_len = sizeof(setup_idle_mode_text_472), .qualifier = 0x00, .text = "Idle Mode Text 2", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } }, .html = "
Idle Mode Text 2" "
", }; static struct setup_idle_mode_text_test setup_idle_mode_text_data_473 = { .pdu = setup_idle_mode_text_473, .pdu_len = sizeof(setup_idle_mode_text_473), .qualifier = 0x00, .text = "Idle Mode Text 3" }; static struct setup_idle_mode_text_test setup_idle_mode_text_data_481 = { .pdu = setup_idle_mode_text_481, .pdu_len = sizeof(setup_idle_mode_text_481), .qualifier = 0x00, .text = "Idle Mode Text 1", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x40, 0xB4 } }, .html = "
Idle Mode Text 1
", }; static struct setup_idle_mode_text_test setup_idle_mode_text_data_482 = { .pdu = setup_idle_mode_text_482, .pdu_len = sizeof(setup_idle_mode_text_482), .qualifier = 0x00, .text = "Idle Mode Text 2", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } }, .html = "
Idle Mode Text 2" "
", }; static struct setup_idle_mode_text_test setup_idle_mode_text_data_483 = { .pdu = setup_idle_mode_text_483, .pdu_len = sizeof(setup_idle_mode_text_483), .qualifier = 0x00, .text = "Idle Mode Text 3" }; static struct setup_idle_mode_text_test setup_idle_mode_text_data_491 = { .pdu = setup_idle_mode_text_491, .pdu_len = sizeof(setup_idle_mode_text_491), .qualifier = 0x00, .text = "Idle Mode Text 1", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x80, 0xB4 } }, .html = "
Idle Mode Text 1" "
", }; static struct setup_idle_mode_text_test setup_idle_mode_text_data_492 = { .pdu = setup_idle_mode_text_492, .pdu_len = sizeof(setup_idle_mode_text_492), .qualifier = 0x00, .text = "Idle Mode Text 2", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } }, .html = "
Idle Mode Text 2" "
", }; static struct setup_idle_mode_text_test setup_idle_mode_text_data_493 = { .pdu = setup_idle_mode_text_493, .pdu_len = sizeof(setup_idle_mode_text_493), .qualifier = 0x00, .text = "Idle Mode Text 3" }; static struct setup_idle_mode_text_test setup_idle_mode_text_data_4101 = { .pdu = setup_idle_mode_text_4101, .pdu_len = sizeof(setup_idle_mode_text_4101), .qualifier = 0x00, .text = "Idle Mode Text 1", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } }, .html = "
Idle Mode Text 1" "
", }; static struct setup_idle_mode_text_test setup_idle_mode_text_data_4102 = { .pdu = setup_idle_mode_text_4102, .pdu_len = sizeof(setup_idle_mode_text_4102), .qualifier = 0x00, .text = "Idle Mode Text 2" }; static struct setup_idle_mode_text_test setup_idle_mode_text_data_511 = { .pdu = setup_idle_mode_text_511, .pdu_len = sizeof(setup_idle_mode_text_511), .qualifier = 0x00, .text = "你好" }; static struct setup_idle_mode_text_test setup_idle_mode_text_data_611 = { .pdu = setup_idle_mode_text_611, .pdu_len = sizeof(setup_idle_mode_text_611), .qualifier = 0x00, .text = "80ル0" }; static void test_setup_idle_mode_text(gconstpointer data) { const struct setup_idle_mode_text_test *test = data; struct stk_command *command; command = stk_command_new_from_pdu(test->pdu, test->pdu_len); g_assert(command); g_assert(command->status == test->status); g_assert(command->number == 1); g_assert(command->type == STK_COMMAND_TYPE_SETUP_IDLE_MODE_TEXT); g_assert(command->qualifier == test->qualifier); g_assert(command->src == STK_DEVICE_IDENTITY_TYPE_UICC); g_assert(command->dst == STK_DEVICE_IDENTITY_TYPE_TERMINAL); check_text(command->setup_idle_mode_text.text, test->text); check_icon_id(&command->setup_idle_mode_text.icon_id, &test->icon_id); check_text_attr(&command->setup_idle_mode_text.text_attr, &test->text_attr); check_text_attr_html(&command->setup_idle_mode_text.text_attr, command->setup_idle_mode_text.text, test->html); check_frame_id(&command->setup_idle_mode_text.frame_id, &test->frame_id); stk_command_free(command); } struct run_at_command_test { const unsigned char *pdu; unsigned int pdu_len; unsigned char qualifier; char *alpha_id; char *at_command; struct stk_icon_id icon_id; struct stk_text_attribute text_attr; struct stk_frame_id frame_id; enum stk_command_parse_result status; }; static unsigned char run_at_command_111[] = { 0xD0, 0x12, 0x81, 0x03, 0x01, 0x34, 0x00, 0x82, 0x02, 0x81, 0x82, 0xA8, 0x07, 0x41, 0x54, 0x2B, 0x43, 0x47, 0x4D, 0x49 }; static unsigned char run_at_command_121[] = { 0xD0, 0x14, 0x81, 0x03, 0x01, 0x34, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x00, 0xA8, 0x07, 0x41, 0x54, 0x2B, 0x43, 0x47, 0x4D, 0x49 }; static unsigned char run_at_command_131[] = { 0xD0, 0x22, 0x81, 0x03, 0x01, 0x34, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x0E, 0x52, 0x75, 0x6E, 0x20, 0x41, 0x54, 0x20, 0x43, 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 0x64, 0xA8, 0x07, 0x41, 0x54, 0x2B, 0x43, 0x47, 0x4D, 0x49 }; static unsigned char run_at_command_211[] = { 0xD0, 0x22, 0x81, 0x03, 0x01, 0x34, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x0A, 0x42, 0x61, 0x73, 0x69, 0x63, 0x20, 0x49, 0x63, 0x6F, 0x6E, 0xA8, 0x07, 0x41, 0x54, 0x2B, 0x43, 0x47, 0x4D, 0x49, 0x9E, 0x02, 0x00, 0x01 }; /* The 12th byte should be 0x85, instead of 0xA8 */ static unsigned char run_at_command_221[] = { 0xD0, 0x23, 0x81, 0x03, 0x01, 0x34, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x0B, 0x43, 0x6F, 0x6C, 0x6F, 0x75, 0x72, 0x20, 0x49, 0x63, 0x6F, 0x6E, 0xA8, 0x07, 0x41, 0x54, 0x2B, 0x43, 0x47, 0x4D, 0x49, 0x9E, 0x02, 0x00, 0x02 }; static unsigned char run_at_command_231[] = { 0xD0, 0x22, 0x81, 0x03, 0x01, 0x34, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x0A, 0x42, 0x61, 0x73, 0x69, 0x63, 0x20, 0x49, 0x63, 0x6F, 0x6E, 0xA8, 0x07, 0x41, 0x54, 0x2B, 0x43, 0x47, 0x4D, 0x49, 0x9E, 0x02, 0x01, 0x01 }; static unsigned char run_at_command_241[] = { 0xD0, 0x23, 0x81, 0x03, 0x01, 0x34, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x0B, 0x43, 0x6F, 0x6C, 0x6F, 0x75, 0x72, 0x20, 0x49, 0x63, 0x6F, 0x6E, 0xA8, 0x07, 0x41, 0x54, 0x2B, 0x43, 0x47, 0x4D, 0x49, 0x9E, 0x02, 0x01, 0x02 }; static unsigned char run_at_command_251[] = { 0xD0, 0x16, 0x81, 0x03, 0x01, 0x34, 0x00, 0x82, 0x02, 0x81, 0x82, 0xA8, 0x07, 0x41, 0x54, 0x2B, 0x43, 0x47, 0x4D, 0x49, 0x9E, 0x02, 0x01, 0x01 }; static unsigned char run_at_command_311[] = { 0xD0, 0x2A, 0x81, 0x03, 0x01, 0x34, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x52, 0x75, 0x6E, 0x20, 0x41, 0x54, 0x20, 0x43, 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 0x64, 0x20, 0x31, 0xA8, 0x07, 0x41, 0x54, 0x2B, 0x43, 0x47, 0x4D, 0x49, 0xD0, 0x04, 0x00, 0x10, 0x00, 0xB4 }; static unsigned char run_at_command_312[] = { 0xD0, 0x24, 0x81, 0x03, 0x01, 0x34, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x52, 0x75, 0x6E, 0x20, 0x41, 0x54, 0x20, 0x43, 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 0x64, 0x20, 0x32, 0xA8, 0x07, 0x41, 0x54, 0x2B, 0x43, 0x47, 0x4D, 0x49 }; static unsigned char run_at_command_321[] = { 0xD0, 0x2A, 0x81, 0x03, 0x01, 0x34, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x52, 0x75, 0x6E, 0x20, 0x41, 0x54, 0x20, 0x43, 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 0x64, 0x20, 0x31, 0xA8, 0x07, 0x41, 0x54, 0x2B, 0x43, 0x47, 0x4D, 0x49, 0xD0, 0x04, 0x00, 0x10, 0x01, 0xB4 }; static unsigned char run_at_command_322[] = { 0xD0, 0x24, 0x81, 0x03, 0x01, 0x34, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x52, 0x75, 0x6E, 0x20, 0x41, 0x54, 0x20, 0x43, 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 0x64, 0x20, 0x32, 0xA8, 0x07, 0x41, 0x54, 0x2B, 0x43, 0x47, 0x4D, 0x49 }; static unsigned char run_at_command_331[] = { 0xD0, 0x2A, 0x81, 0x03, 0x01, 0x34, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x52, 0x75, 0x6E, 0x20, 0x41, 0x54, 0x20, 0x43, 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 0x64, 0x20, 0x31, 0xA8, 0x07, 0x41, 0x54, 0x2B, 0x43, 0x47, 0x4D, 0x49, 0xD0, 0x04, 0x00, 0x10, 0x02, 0xB4 }; static unsigned char run_at_command_332[] = { 0xD0, 0x24, 0x81, 0x03, 0x01, 0x34, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x52, 0x75, 0x6E, 0x20, 0x41, 0x54, 0x20, 0x43, 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 0x64, 0x20, 0x32, 0xA8, 0x07, 0x41, 0x54, 0x2B, 0x43, 0x47, 0x4D, 0x49 }; static unsigned char run_at_command_341[] = { 0xD0, 0x2A, 0x81, 0x03, 0x01, 0x34, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x52, 0x75, 0x6E, 0x20, 0x41, 0x54, 0x20, 0x43, 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 0x64, 0x20, 0x31, 0xA8, 0x07, 0x41, 0x54, 0x2B, 0x43, 0x47, 0x4D, 0x49, 0xD0, 0x04, 0x00, 0x10, 0x04, 0xB4 }; static unsigned char run_at_command_342[] = { 0xD0, 0x2A, 0x81, 0x03, 0x01, 0x34, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x52, 0x75, 0x6E, 0x20, 0x41, 0x54, 0x20, 0x43, 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 0x64, 0x20, 0x32, 0xA8, 0x07, 0x41, 0x54, 0x2B, 0x43, 0x47, 0x4D, 0x49, 0xD0, 0x04, 0x00, 0x10, 0x00, 0xB4 }; static unsigned char run_at_command_343[] = { 0xD0, 0x24, 0x81, 0x03, 0x01, 0x34, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x52, 0x75, 0x6E, 0x20, 0x41, 0x54, 0x20, 0x43, 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 0x64, 0x20, 0x33, 0xA8, 0x07, 0x41, 0x54, 0x2B, 0x43, 0x47, 0x4D, 0x49 }; static unsigned char run_at_command_351[] = { 0xD0, 0x2A, 0x81, 0x03, 0x01, 0x34, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x52, 0x75, 0x6E, 0x20, 0x41, 0x54, 0x20, 0x43, 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 0x64, 0x20, 0x31, 0xA8, 0x07, 0x41, 0x54, 0x2B, 0x43, 0x47, 0x4D, 0x49, 0xD0, 0x04, 0x00, 0x10, 0x08, 0xB4 }; static unsigned char run_at_command_352[] = { 0xD0, 0x2A, 0x81, 0x03, 0x01, 0x34, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x52, 0x75, 0x6E, 0x20, 0x41, 0x54, 0x20, 0x43, 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 0x64, 0x20, 0x32, 0xA8, 0x07, 0x41, 0x54, 0x2B, 0x43, 0x47, 0x4D, 0x49, 0xD0, 0x04, 0x00, 0x10, 0x00, 0xB4 }; static unsigned char run_at_command_353[] = { 0xD0, 0x24, 0x81, 0x03, 0x01, 0x34, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x52, 0x75, 0x6E, 0x20, 0x41, 0x54, 0x20, 0x43, 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 0x64, 0x20, 0x33, 0xA8, 0x07, 0x41, 0x54, 0x2B, 0x43, 0x47, 0x4D, 0x49 }; static unsigned char run_at_command_361[] = { 0xD0, 0x2A, 0x81, 0x03, 0x01, 0x34, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x52, 0x75, 0x6E, 0x20, 0x41, 0x54, 0x20, 0x43, 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 0x64, 0x20, 0x31, 0xA8, 0x07, 0x41, 0x54, 0x2B, 0x43, 0x47, 0x4D, 0x49, 0xD0, 0x04, 0x00, 0x10, 0x10, 0xB4 }; static unsigned char run_at_command_362[] = { 0xD0, 0x2A, 0x81, 0x03, 0x01, 0x34, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x52, 0x75, 0x6E, 0x20, 0x41, 0x54, 0x20, 0x43, 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 0x64, 0x20, 0x32, 0xA8, 0x07, 0x41, 0x54, 0x2B, 0x43, 0x47, 0x4D, 0x49, 0xD0, 0x04, 0x00, 0x10, 0x00, 0xB4 }; static unsigned char run_at_command_363[] = { 0xD0, 0x24, 0x81, 0x03, 0x01, 0x34, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x52, 0x75, 0x6E, 0x20, 0x41, 0x54, 0x20, 0x43, 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 0x64, 0x20, 0x33, 0xA8, 0x07, 0x41, 0x54, 0x2B, 0x43, 0x47, 0x4D, 0x49 }; static unsigned char run_at_command_371[] = { 0xD0, 0x2A, 0x81, 0x03, 0x01, 0x34, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x52, 0x75, 0x6E, 0x20, 0x41, 0x54, 0x20, 0x43, 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 0x64, 0x20, 0x31, 0xA8, 0x07, 0x41, 0x54, 0x2B, 0x43, 0x47, 0x4D, 0x49, 0xD0, 0x04, 0x00, 0x10, 0x20, 0xB4 }; static unsigned char run_at_command_372[] = { 0xD0, 0x2A, 0x81, 0x03, 0x01, 0x34, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x52, 0x75, 0x6E, 0x20, 0x41, 0x54, 0x20, 0x43, 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 0x64, 0x20, 0x32, 0xA8, 0x07, 0x41, 0x54, 0x2B, 0x43, 0x47, 0x4D, 0x49, 0xD0, 0x04, 0x00, 0x10, 0x00, 0xB4 }; static unsigned char run_at_command_373[] = { 0xD0, 0x24, 0x81, 0x03, 0x01, 0x34, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x52, 0x75, 0x6E, 0x20, 0x41, 0x54, 0x20, 0x43, 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 0x64, 0x20, 0x33, 0xA8, 0x07, 0x41, 0x54, 0x2B, 0x43, 0x47, 0x4D, 0x49 }; static unsigned char run_at_command_381[] = { 0xD0, 0x2A, 0x81, 0x03, 0x01, 0x34, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x52, 0x75, 0x6E, 0x20, 0x41, 0x54, 0x20, 0x43, 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 0x64, 0x20, 0x31, 0xA8, 0x07, 0x41, 0x54, 0x2B, 0x43, 0x47, 0x4D, 0x49, 0xD0, 0x04, 0x00, 0x10, 0x40, 0xB4 }; static unsigned char run_at_command_382[] = { 0xD0, 0x2A, 0x81, 0x03, 0x01, 0x34, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x52, 0x75, 0x6E, 0x20, 0x41, 0x54, 0x20, 0x43, 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 0x64, 0x20, 0x32, 0xA8, 0x07, 0x41, 0x54, 0x2B, 0x43, 0x47, 0x4D, 0x49, 0xD0, 0x04, 0x00, 0x10, 0x00, 0xB4 }; static unsigned char run_at_command_383[] = { 0xD0, 0x24, 0x81, 0x03, 0x01, 0x34, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x52, 0x75, 0x6E, 0x20, 0x41, 0x54, 0x20, 0x43, 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 0x64, 0x20, 0x33, 0xA8, 0x07, 0x41, 0x54, 0x2B, 0x43, 0x47, 0x4D, 0x49 }; static unsigned char run_at_command_391[] = { 0xD0, 0x2A, 0x81, 0x03, 0x01, 0x34, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x52, 0x75, 0x6E, 0x20, 0x41, 0x54, 0x20, 0x43, 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 0x64, 0x20, 0x31, 0xA8, 0x07, 0x41, 0x54, 0x2B, 0x43, 0x47, 0x4D, 0x49, 0xD0, 0x04, 0x00, 0x10, 0x80, 0xB4 }; static unsigned char run_at_command_392[] = { 0xD0, 0x2A, 0x81, 0x03, 0x01, 0x34, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x52, 0x75, 0x6E, 0x20, 0x41, 0x54, 0x20, 0x43, 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 0x64, 0x20, 0x32, 0xA8, 0x07, 0x41, 0x54, 0x2B, 0x43, 0x47, 0x4D, 0x49, 0xD0, 0x04, 0x00, 0x10, 0x00, 0xB4 }; static unsigned char run_at_command_393[] = { 0xD0, 0x24, 0x81, 0x03, 0x01, 0x34, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x52, 0x75, 0x6E, 0x20, 0x41, 0x54, 0x20, 0x43, 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 0x64, 0x20, 0x33, 0xA8, 0x07, 0x41, 0x54, 0x2B, 0x43, 0x47, 0x4D, 0x49 }; static unsigned char run_at_command_3101[] = { 0xD0, 0x2A, 0x81, 0x03, 0x01, 0x34, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x52, 0x75, 0x6E, 0x20, 0x41, 0x54, 0x20, 0x43, 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 0x64, 0x20, 0x31, 0xA8, 0x07, 0x41, 0x54, 0x2B, 0x43, 0x47, 0x4D, 0x49, 0xD0, 0x04, 0x00, 0x10, 0x00, 0xB4 }; static unsigned char run_at_command_3102[] = { 0xD0, 0x24, 0x81, 0x03, 0x01, 0x34, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x10, 0x52, 0x75, 0x6E, 0x20, 0x41, 0x54, 0x20, 0x43, 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 0x64, 0x20, 0x32, 0xA8, 0x07, 0x41, 0x54, 0x2B, 0x43, 0x47, 0x4D, 0x49 }; /* The 2nd byte (total size) should be 0x2D, instead of 0x21 */ static unsigned char run_at_command_411[] = { 0xD0, 0x2D, 0x81, 0x03, 0x01, 0x34, 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, 0xA8, 0x07, 0x41, 0x54, 0x2B, 0x43, 0x47, 0x4D, 0x49 }; static unsigned char run_at_command_511[] = { 0xD0, 0x19, 0x81, 0x03, 0x01, 0x34, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x05, 0x80, 0x4F, 0x60, 0x59, 0x7D, 0xA8, 0x07, 0x41, 0x54, 0x2B, 0x43, 0x47, 0x4D, 0x49 }; static unsigned char run_at_command_611[] = { 0xD0, 0x1B, 0x81, 0x03, 0x01, 0x34, 0x00, 0x82, 0x02, 0x81, 0x82, 0x85, 0x07, 0x80, 0x00, 0x38, 0x00, 0x30, 0x30, 0xEB, 0xA8, 0x07, 0x41, 0x54, 0x2B, 0x43, 0x47, 0x4D, 0x49 }; static struct run_at_command_test run_at_command_data_111 = { .pdu = run_at_command_111, .pdu_len = sizeof(run_at_command_111), .qualifier = 0x00, .at_command = "AT+CGMI" }; static struct run_at_command_test run_at_command_data_121 = { .pdu = run_at_command_121, .pdu_len = sizeof(run_at_command_121), .qualifier = 0x00, .alpha_id = "", .at_command = "AT+CGMI" }; static struct run_at_command_test run_at_command_data_131 = { .pdu = run_at_command_131, .pdu_len = sizeof(run_at_command_131), .qualifier = 0x00, .alpha_id = "Run AT Command", .at_command = "AT+CGMI" }; static struct run_at_command_test run_at_command_data_211 = { .pdu = run_at_command_211, .pdu_len = sizeof(run_at_command_211), .qualifier = 0x00, .alpha_id = "Basic Icon", .at_command = "AT+CGMI", .icon_id = { .qualifier = STK_ICON_QUALIFIER_TYPE_SELF_EXPLANATORY, .id = 0x01 } }; static struct run_at_command_test run_at_command_data_221 = { .pdu = run_at_command_221, .pdu_len = sizeof(run_at_command_221), .qualifier = 0x00, .alpha_id = "Colour Icon", .at_command = "AT+CGMI", .icon_id = { .qualifier = STK_ICON_QUALIFIER_TYPE_SELF_EXPLANATORY, .id = 0x02 } }; static struct run_at_command_test run_at_command_data_231 = { .pdu = run_at_command_231, .pdu_len = sizeof(run_at_command_231), .qualifier = 0x00, .alpha_id = "Basic Icon", .at_command = "AT+CGMI", .icon_id = { .qualifier = STK_ICON_QUALIFIER_TYPE_NON_SELF_EXPLANATORY, .id = 0x01 } }; /* The qualifier of icon_id should be non self-explanatory */ static struct run_at_command_test run_at_command_data_241 = { .pdu = run_at_command_241, .pdu_len = sizeof(run_at_command_241), .qualifier = 0x00, .alpha_id = "Colour Icon", .at_command = "AT+CGMI", .icon_id = { .qualifier = STK_ICON_QUALIFIER_TYPE_NON_SELF_EXPLANATORY, .id = 0x02 } }; static struct run_at_command_test run_at_command_data_251 = { .pdu = run_at_command_251, .pdu_len = sizeof(run_at_command_251), .qualifier = 0x00, .at_command = "AT+CGMI", .icon_id = { .qualifier = STK_ICON_QUALIFIER_TYPE_NON_SELF_EXPLANATORY, .id = 0x01 }, .status = STK_PARSE_RESULT_DATA_NOT_UNDERSTOOD }; static struct run_at_command_test run_at_command_data_311 = { .pdu = run_at_command_311, .pdu_len = sizeof(run_at_command_311), .qualifier = 0x00, .alpha_id = "Run AT Command 1", .at_command = "AT+CGMI", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } } }; static struct run_at_command_test run_at_command_data_312 = { .pdu = run_at_command_312, .pdu_len = sizeof(run_at_command_312), .qualifier = 0x00, .alpha_id = "Run AT Command 2", .at_command = "AT+CGMI" }; static struct run_at_command_test run_at_command_data_321 = { .pdu = run_at_command_321, .pdu_len = sizeof(run_at_command_321), .qualifier = 0x00, .alpha_id = "Run AT Command 1", .at_command = "AT+CGMI", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x01, 0xB4 } } }; static struct run_at_command_test run_at_command_data_322 = { .pdu = run_at_command_322, .pdu_len = sizeof(run_at_command_322), .qualifier = 0x00, .alpha_id = "Run AT Command 2", .at_command = "AT+CGMI" }; static struct run_at_command_test run_at_command_data_331 = { .pdu = run_at_command_331, .pdu_len = sizeof(run_at_command_331), .qualifier = 0x00, .alpha_id = "Run AT Command 1", .at_command = "AT+CGMI", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x02, 0xB4 } } }; static struct run_at_command_test run_at_command_data_332 = { .pdu = run_at_command_332, .pdu_len = sizeof(run_at_command_332), .qualifier = 0x00, .alpha_id = "Run AT Command 2", .at_command = "AT+CGMI" }; static struct run_at_command_test run_at_command_data_341 = { .pdu = run_at_command_341, .pdu_len = sizeof(run_at_command_341), .qualifier = 0x00, .alpha_id = "Run AT Command 1", .at_command = "AT+CGMI", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x04, 0xB4 } } }; static struct run_at_command_test run_at_command_data_342 = { .pdu = run_at_command_342, .pdu_len = sizeof(run_at_command_342), .qualifier = 0x00, .alpha_id = "Run AT Command 2", .at_command = "AT+CGMI", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } } }; static struct run_at_command_test run_at_command_data_343 = { .pdu = run_at_command_343, .pdu_len = sizeof(run_at_command_343), .qualifier = 0x00, .alpha_id = "Run AT Command 3", .at_command = "AT+CGMI" }; static struct run_at_command_test run_at_command_data_351 = { .pdu = run_at_command_351, .pdu_len = sizeof(run_at_command_351), .qualifier = 0x00, .alpha_id = "Run AT Command 1", .at_command = "AT+CGMI", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x08, 0xB4 } } }; static struct run_at_command_test run_at_command_data_352 = { .pdu = run_at_command_352, .pdu_len = sizeof(run_at_command_352), .qualifier = 0x00, .alpha_id = "Run AT Command 2", .at_command = "AT+CGMI", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } } }; static struct run_at_command_test run_at_command_data_353 = { .pdu = run_at_command_353, .pdu_len = sizeof(run_at_command_353), .qualifier = 0x00, .alpha_id = "Run AT Command 3", .at_command = "AT+CGMI" }; static struct run_at_command_test run_at_command_data_361 = { .pdu = run_at_command_361, .pdu_len = sizeof(run_at_command_361), .qualifier = 0x00, .alpha_id = "Run AT Command 1", .at_command = "AT+CGMI", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x10, 0xB4 } } }; static struct run_at_command_test run_at_command_data_362 = { .pdu = run_at_command_362, .pdu_len = sizeof(run_at_command_362), .qualifier = 0x00, .alpha_id = "Run AT Command 2", .at_command = "AT+CGMI", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } } }; static struct run_at_command_test run_at_command_data_363 = { .pdu = run_at_command_363, .pdu_len = sizeof(run_at_command_363), .qualifier = 0x00, .alpha_id = "Run AT Command 3", .at_command = "AT+CGMI" }; static struct run_at_command_test run_at_command_data_371 = { .pdu = run_at_command_371, .pdu_len = sizeof(run_at_command_371), .qualifier = 0x00, .alpha_id = "Run AT Command 1", .at_command = "AT+CGMI", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x20, 0xB4 } } }; static struct run_at_command_test run_at_command_data_372 = { .pdu = run_at_command_372, .pdu_len = sizeof(run_at_command_372), .qualifier = 0x00, .alpha_id = "Run AT Command 2", .at_command = "AT+CGMI", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } } }; static struct run_at_command_test run_at_command_data_373 = { .pdu = run_at_command_373, .pdu_len = sizeof(run_at_command_373), .qualifier = 0x00, .alpha_id = "Run AT Command 3", .at_command = "AT+CGMI" }; static struct run_at_command_test run_at_command_data_381 = { .pdu = run_at_command_381, .pdu_len = sizeof(run_at_command_381), .qualifier = 0x00, .alpha_id = "Run AT Command 1", .at_command = "AT+CGMI", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x40, 0xB4 } } }; static struct run_at_command_test run_at_command_data_382 = { .pdu = run_at_command_382, .pdu_len = sizeof(run_at_command_382), .qualifier = 0x00, .alpha_id = "Run AT Command 2", .at_command = "AT+CGMI", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } } }; static struct run_at_command_test run_at_command_data_383 = { .pdu = run_at_command_383, .pdu_len = sizeof(run_at_command_383), .qualifier = 0x00, .alpha_id = "Run AT Command 3", .at_command = "AT+CGMI" }; static struct run_at_command_test run_at_command_data_391 = { .pdu = run_at_command_391, .pdu_len = sizeof(run_at_command_391), .qualifier = 0x00, .alpha_id = "Run AT Command 1", .at_command = "AT+CGMI", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x80, 0xB4 } } }; static struct run_at_command_test run_at_command_data_392 = { .pdu = run_at_command_392, .pdu_len = sizeof(run_at_command_392), .qualifier = 0x00, .alpha_id = "Run AT Command 2", .at_command = "AT+CGMI", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } } }; static struct run_at_command_test run_at_command_data_393 = { .pdu = run_at_command_393, .pdu_len = sizeof(run_at_command_393), .qualifier = 0x00, .alpha_id = "Run AT Command 3", .at_command = "AT+CGMI" }; static struct run_at_command_test run_at_command_data_3101 = { .pdu = run_at_command_3101, .pdu_len = sizeof(run_at_command_3101), .qualifier = 0x00, .alpha_id = "Run AT Command 1", .at_command = "AT+CGMI", .text_attr = { .len = 4, .attributes = { 0x00, 0x10, 0x00, 0xB4 } } }; static struct run_at_command_test run_at_command_data_3102 = { .pdu = run_at_command_3102, .pdu_len = sizeof(run_at_command_3102), .qualifier = 0x00, .alpha_id = "Run AT Command 2", .at_command = "AT+CGMI" }; static struct run_at_command_test run_at_command_data_411 = { .pdu = run_at_command_411, .pdu_len = sizeof(run_at_command_411), .qualifier = 0x00, .alpha_id = "ЗДРАВСТВУЙТЕ", .at_command = "AT+CGMI" }; static struct run_at_command_test run_at_command_data_511 = { .pdu = run_at_command_511, .pdu_len = sizeof(run_at_command_511), .qualifier = 0x00, .alpha_id = "你好", .at_command = "AT+CGMI" }; static struct run_at_command_test run_at_command_data_611 = { .pdu = run_at_command_611, .pdu_len = sizeof(run_at_command_611), .qualifier = 0x00, .alpha_id = "80ル", .at_command = "AT+CGMI" }; static void test_run_at_command(gconstpointer data) { const struct run_at_command_test *test = data; struct stk_command *command; command = stk_command_new_from_pdu(test->pdu, test->pdu_len); g_assert(command); g_assert(command->status == test->status); g_assert(command->number == 1); g_assert(command->type == STK_COMMAND_TYPE_RUN_AT_COMMAND); g_assert(command->qualifier == test->qualifier); g_assert(command->src == STK_DEVICE_IDENTITY_TYPE_UICC); g_assert(command->dst == STK_DEVICE_IDENTITY_TYPE_TERMINAL); check_alpha_id(command->run_at_command.alpha_id, test->alpha_id); check_at_command(command->run_at_command.at_command, test->at_command); check_icon_id(&command->run_at_command.icon_id, &test->icon_id); check_text_attr(&command->run_at_command.text_attr, &test->text_attr); check_frame_id(&command->run_at_command.frame_id, &test->frame_id); stk_command_free(command); } struct send_dtmf_test { const unsigned char *pdu; unsigned int pdu_len; unsigned char qualifier; char *alpha_id; char *dtmf; struct stk_icon_id icon_id; struct stk_text_attribute text_attr; struct stk_frame_id frame_id; }; static unsigned char send_dtmf_111[] = { 0xD0, 0x0D, 0x81, 0x03, 0x01, 0x14, 0x00, 0x82, 0x02, 0x81, 0x83, 0xAC, 0x02, 0xC1, 0xF2 }; static unsigned char send_dtmf_121[] = { 0xD0, 0x1B, 0x81, 0x03, 0x01, 0x14, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x09, 0x53, 0x65, 0x6E, 0x64, 0x20, 0x44, 0x54, 0x4D, 0x46, 0xAC, 0x05, 0x21, 0x43, 0x65, 0x87, 0x09 }; static unsigned char send_dtmf_131[] = { 0xD0, 0x13, 0x81, 0x03, 0x01, 0x14, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x00, 0xAC, 0x06, 0xC1, 0xCC, 0xCC, 0xCC, 0xCC, 0x2C }; static unsigned char send_dtmf_211[] = { 0xD0, 0x1D, 0x81, 0x03, 0x01, 0x14, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0A, 0x42, 0x61, 0x73, 0x69, 0x63, 0x20, 0x49, 0x63, 0x6F, 0x6E, 0xAC, 0x02, 0xC1, 0xF2, 0x9E, 0x02, 0x00, 0x01 }; static unsigned char send_dtmf_221[] = { 0xD0, 0x1E, 0x81, 0x03, 0x01, 0x14, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0B, 0x43, 0x6F, 0x6C, 0x6F, 0x75, 0x72, 0x20, 0x49, 0x63, 0x6F, 0x6E, 0xAC, 0x02, 0xC1, 0xF2, 0x9E, 0x02, 0x00, 0x02 }; static unsigned char send_dtmf_231[] = { 0xD0, 0x1C, 0x81, 0x03, 0x01, 0x14, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x09, 0x53, 0x65, 0x6E, 0x64, 0x20, 0x44, 0x54, 0x4D, 0x46, 0xAC, 0x02, 0xC1, 0xF2, 0x9E, 0x02, 0x01, 0x01 }; static unsigned char send_dtmf_311[] = { 0xD0, 0x28, 0x81, 0x03, 0x01, 0x14, 0x00, 0x82, 0x02, 0x81, 0x83, 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, 0xAC, 0x02, 0xC1, 0xF2 }; static unsigned char send_dtmf_411[] = { 0xD0, 0x23, 0x81, 0x03, 0x01, 0x14, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0B, 0x53, 0x65, 0x6E, 0x64, 0x20, 0x44, 0x54, 0x4D, 0x46, 0x20, 0x31, 0xAC, 0x05, 0x21, 0x43, 0x65, 0x87, 0x09, 0xD0, 0x04, 0x00, 0x0B, 0x00, 0xB4 }; static unsigned char send_dtmf_412[] = { 0xD0, 0x1D, 0x81, 0x03, 0x01, 0x14, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0B, 0x53, 0x65, 0x6E, 0x64, 0x20, 0x44, 0x54, 0x4D, 0x46, 0x20, 0x32, 0xAC, 0x05, 0x21, 0x43, 0x65, 0x87, 0x09 }; static unsigned char send_dtmf_421[] = { 0xD0, 0x23, 0x81, 0x03, 0x01, 0x14, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0B, 0x53, 0x65, 0x6E, 0x64, 0x20, 0x44, 0x54, 0x4D, 0x46, 0x20, 0x31, 0xAC, 0x05, 0x21, 0x43, 0x65, 0x87, 0x09, 0xD0, 0x04, 0x00, 0x0B, 0x01, 0xB4 }; static unsigned char send_dtmf_422[] = { 0xD0, 0x1D, 0x81, 0x03, 0x01, 0x14, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0B, 0x53, 0x65, 0x6E, 0x64, 0x20, 0x44, 0x54, 0x4D, 0x46, 0x20, 0x32, 0xAC, 0x05, 0x21, 0x43, 0x65, 0x87, 0x09 }; static unsigned char send_dtmf_431[] = { 0xD0, 0x23, 0x81, 0x03, 0x01, 0x14, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0B, 0x53, 0x65, 0x6E, 0x64, 0x20, 0x44, 0x54, 0x4D, 0x46, 0x20, 0x31, 0xAC, 0x05, 0x21, 0x43, 0x65, 0x87, 0x09, 0xD0, 0x04, 0x00, 0xB0, 0x02, 0xB4 }; static unsigned char send_dtmf_432[] = { 0xD0, 0x1D, 0x81, 0x03, 0x01, 0x14, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0B, 0x53, 0x65, 0x6E, 0x64, 0x20, 0x44, 0x54, 0x4D, 0x46, 0x20, 0x32, 0xAC, 0x05, 0x21, 0x43, 0x65, 0x87, 0x09 }; static unsigned char send_dtmf_441[] = { 0xD0, 0x23, 0x81, 0x03, 0x01, 0x14, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0B, 0x53, 0x65, 0x6E, 0x64, 0x20, 0x44, 0x54, 0x4D, 0x46, 0x20, 0x31, 0xAC, 0x05, 0x21, 0x43, 0x65, 0x87, 0x09, 0xD0, 0x04, 0x00, 0x0B, 0x04, 0xB4 }; static unsigned char send_dtmf_442[] = { 0xD0, 0x23, 0x81, 0x03, 0x01, 0x14, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0B, 0x53, 0x65, 0x6E, 0x64, 0x20, 0x44, 0x54, 0x4D, 0x46, 0x20, 0x32, 0xAC, 0x05, 0x21, 0x43, 0x65, 0x87, 0x09, 0xD0, 0x04, 0x00, 0x0B, 0x00, 0xB4 }; static unsigned char send_dtmf_443[] = { 0xD0, 0x1D, 0x81, 0x03, 0x01, 0x14, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0B, 0x53, 0x65, 0x6E, 0x64, 0x20, 0x44, 0x54, 0x4D, 0x46, 0x20, 0x33, 0xAC, 0x05, 0x21, 0x43, 0x65, 0x87, 0x09 }; static unsigned char send_dtmf_451[] = { 0xD0, 0x23, 0x81, 0x03, 0x01, 0x14, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0B, 0x53, 0x65, 0x6E, 0x64, 0x20, 0x44, 0x54, 0x4D, 0x46, 0x20, 0x31, 0xAC, 0x05, 0x21, 0x43, 0x65, 0x87, 0x09, 0xD0, 0x04, 0x00, 0x0B, 0x08, 0xB4 }; static unsigned char send_dtmf_452[] = { 0xD0, 0x23, 0x81, 0x03, 0x01, 0x14, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0B, 0x53, 0x65, 0x6E, 0x64, 0x20, 0x44, 0x54, 0x4D, 0x46, 0x20, 0x32, 0xAC, 0x05, 0x21, 0x43, 0x65, 0x87, 0x09, 0xD0, 0x04, 0x00, 0x0B, 0x00, 0xB4 }; static unsigned char send_dtmf_453[] = { 0xD0, 0x1D, 0x81, 0x03, 0x01, 0x14, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0B, 0x53, 0x65, 0x6E, 0x64, 0x20, 0x44, 0x54, 0x4D, 0x46, 0x20, 0x33, 0xAC, 0x05, 0x21, 0x43, 0x65, 0x87, 0x09 }; /* The last 0x00 in spec should be removed. */ static unsigned char send_dtmf_461[] = { 0xD0, 0x23, 0x81, 0x03, 0x01, 0x14, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0B, 0x53, 0x65, 0x6E, 0x64, 0x20, 0x44, 0x54, 0x4D, 0x46, 0x20, 0x31, 0xAC, 0x05, 0x21, 0x43, 0x65, 0x87, 0x09, 0xD0, 0x04, 0x00, 0x0B, 0x10, 0xB4 }; static unsigned char send_dtmf_462[] = { 0xD0, 0x23, 0x81, 0x03, 0x01, 0x14, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0B, 0x53, 0x65, 0x6E, 0x64, 0x20, 0x44, 0x54, 0x4D, 0x46, 0x20, 0x32, 0xAC, 0x05, 0x21, 0x43, 0x65, 0x87, 0x09, 0xD0, 0x04, 0x00, 0x0B, 0x00, 0xB4 }; static unsigned char send_dtmf_463[] = { 0xD0, 0x1D, 0x81, 0x03, 0x01, 0x14, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0B, 0x53, 0x65, 0x6E, 0x64, 0x20, 0x44, 0x54, 0x4D, 0x46, 0x20, 0x33, 0xAC, 0x05, 0x21, 0x43, 0x65, 0x87, 0x09 }; static unsigned char send_dtmf_471[] = { 0xD0, 0x23, 0x81, 0x03, 0x01, 0x14, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0B, 0x53, 0x65, 0x6E, 0x64, 0x20, 0x44, 0x54, 0x4D, 0x46, 0x20, 0x31, 0xAC, 0x05, 0x21, 0x43, 0x65, 0x87, 0x09, 0xD0, 0x04, 0x00, 0x0B, 0x20, 0xB4 }; static unsigned char send_dtmf_472[] = { 0xD0, 0x23, 0x81, 0x03, 0x01, 0x14, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0B, 0x53, 0x65, 0x6E, 0x64, 0x20, 0x44, 0x54, 0x4D, 0x46, 0x20, 0x32, 0xAC, 0x05, 0x21, 0x43, 0x65, 0x87, 0x09, 0xD0, 0x04, 0x00, 0x0B, 0x00, 0xB4 }; static unsigned char send_dtmf_473[] = { 0xD0, 0x1D, 0x81, 0x03, 0x01, 0x14, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0B, 0x53, 0x65, 0x6E, 0x64, 0x20, 0x44, 0x54, 0x4D, 0x46, 0x20, 0x33, 0xAC, 0x05, 0x21, 0x43, 0x65, 0x87, 0x09 }; static unsigned char send_dtmf_481[] = { 0xD0, 0x23, 0x81, 0x03, 0x01, 0x14, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0B, 0x53, 0x65, 0x6E, 0x64, 0x20, 0x44, 0x54, 0x4D, 0x46, 0x20, 0x31, 0xAC, 0x05, 0x21, 0x43, 0x65, 0x87, 0x09, 0xD0, 0x04, 0x00, 0x0B, 0x40, 0xB4 }; static unsigned char send_dtmf_482[] = { 0xD0, 0x23, 0x81, 0x03, 0x01, 0x14, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0B, 0x53, 0x65, 0x6E, 0x64, 0x20, 0x44, 0x54, 0x4D, 0x46, 0x20, 0x32, 0xAC, 0x05, 0x21, 0x43, 0x65, 0x87, 0x09, 0xD0, 0x04, 0x00, 0x0B, 0x00, 0xB4 }; static unsigned char send_dtmf_483[] = { 0xD0, 0x1D, 0x81, 0x03, 0x01, 0x14, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0B, 0x53, 0x65, 0x6E, 0x64, 0x20, 0x44, 0x54, 0x4D, 0x46, 0x20, 0x33, 0xAC, 0x05, 0x21, 0x43, 0x65, 0x87, 0x09 }; /* The second to the last should be 0x80 */ static unsigned char send_dtmf_491[] = { 0xD0, 0x23, 0x81, 0x03, 0x01, 0x14, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0B, 0x53, 0x65, 0x6E, 0x64, 0x20, 0x44, 0x54, 0x4D, 0x46, 0x20, 0x31, 0xAC, 0x05, 0x21, 0x43, 0x65, 0x87, 0x09, 0xD0, 0x04, 0x00, 0x0B, 0x80, 0xB4 }; static unsigned char send_dtmf_492[] = { 0xD0, 0x23, 0x81, 0x03, 0x01, 0x14, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0B, 0x53, 0x65, 0x6E, 0x64, 0x20, 0x44, 0x54, 0x4D, 0x46, 0x20, 0x32, 0xAC, 0x05, 0x21, 0x43, 0x65, 0x87, 0x09, 0xD0, 0x04, 0x00, 0x0B, 0x00, 0xB4 }; static unsigned char send_dtmf_493[] = { 0xD0, 0x1D, 0x81, 0x03, 0x01, 0x14, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0B, 0x53, 0x65, 0x6E, 0x64, 0x20, 0x44, 0x54, 0x4D, 0x46, 0x20, 0x33, 0xAC, 0x05, 0x21, 0x43, 0x65, 0x87, 0x09 }; static unsigned char send_dtmf_4101[] = { 0xD0, 0x23, 0x81, 0x03, 0x01, 0x14, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0B, 0x53, 0x65, 0x6E, 0x64, 0x20, 0x44, 0x54, 0x4D, 0x46, 0x20, 0x31, 0xAC, 0x05, 0x21, 0x43, 0x65, 0x87, 0x09, 0xD0, 0x04, 0x00, 0x0B, 0x00, 0xB4 }; static unsigned char send_dtmf_4102[] = { 0xD0, 0x1D, 0x81, 0x03, 0x01, 0x14, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x0B, 0x53, 0x65, 0x6E, 0x64, 0x20, 0x44, 0x54, 0x4D, 0x46, 0x20, 0x32, 0xAC, 0x05, 0x21, 0x43, 0x65, 0x87, 0x09 }; static unsigned char send_dtmf_511[] = { 0xD0, 0x14, 0x81, 0x03, 0x01, 0x14, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x05, 0x80, 0x4F, 0x60, 0x59, 0x7D, 0xAC, 0x02, 0xC1, 0xF2 }; static unsigned char send_dtmf_611[] = { 0xD0, 0x12, 0x81, 0x03, 0x01, 0x14, 0x00, 0x82, 0x02, 0x81, 0x83, 0x85, 0x03, 0x80, 0x30, 0xEB, 0xAC, 0x02, 0xC1, 0xF2 }; static struct send_dtmf_test send_dtmf_data_111 = { .pdu = send_dtmf_111, .pdu_len = sizeof(send_dtmf_111), .qualifier = 0x00, .dtmf = "1c2" }; static struct send_dtmf_test send_dtmf_data_121 = { .pdu = send_dtmf_121, .pdu_len = sizeof(send_dtmf_121), .qualifier = 0x00, .alpha_id = "Send DTMF", .dtmf = "1234567890" }; static struct send_dtmf_test send_dtmf_data_131 = { .pdu = send_dtmf_131, .pdu_len = sizeof(send_dtmf_131), .qualifier = 0x00, .alpha_id = "", .dtmf = "1cccccccccc2" }; static struct send_dtmf_test send_dtmf_data_211 = { .pdu = send_dtmf_211, .pdu_len = sizeof(send_dtmf_211), .qualifier = 0x00, .alpha_id = "Basic Icon", .dtmf = "1c2", .icon_id = { .qualifier = STK_ICON_QUALIFIER_TYPE_SELF_EXPLANATORY, .id = 0x01 } }; static struct send_dtmf_test send_dtmf_data_221 = { .pdu = send_dtmf_221, .pdu_len = sizeof(send_dtmf_221), .qualifier = 0x00, .alpha_id = "Colour Icon", .dtmf = "1c2", .icon_id = { .qualifier = STK_ICON_QUALIFIER_TYPE_SELF_EXPLANATORY, .id = 0x02 } }; static struct send_dtmf_test send_dtmf_data_231 = { .pdu = send_dtmf_231, .pdu_len = sizeof(send_dtmf_231), .qualifier = 0x00, .alpha_id = "Send DTMF", .dtmf = "1c2", .icon_id = { .qualifier = STK_ICON_QUALIFIER_TYPE_NON_SELF_EXPLANATORY, .id = 0x01 } }; static struct send_dtmf_test send_dtmf_data_311 = { .pdu = send_dtmf_311, .pdu_len = sizeof(send_dtmf_311), .qualifier = 0x00, .alpha_id = "ЗДРАВСТВУЙТЕ", .dtmf = "1c2" }; static struct send_dtmf_test send_dtmf_data_411 = { .pdu = send_dtmf_411, .pdu_len = sizeof(send_dtmf_411), .qualifier = 0x00, .alpha_id = "Send DTMF 1", .dtmf = "1234567890", .text_attr = { .len = 4, .attributes = { 0x00, 0x0B, 0x00, 0xB4 } } }; static struct send_dtmf_test send_dtmf_data_412 = { .pdu = send_dtmf_412, .pdu_len = sizeof(send_dtmf_412), .qualifier = 0x00, .alpha_id = "Send DTMF 2", .dtmf = "1234567890" }; static struct send_dtmf_test send_dtmf_data_421 = { .pdu = send_dtmf_421, .pdu_len = sizeof(send_dtmf_421), .qualifier = 0x00, .alpha_id = "Send DTMF 1", .dtmf = "1234567890", .text_attr = { .len = 4, .attributes = { 0x00, 0x0B, 0x01, 0xB4 } } }; static struct send_dtmf_test send_dtmf_data_422 = { .pdu = send_dtmf_422, .pdu_len = sizeof(send_dtmf_422), .qualifier = 0x00, .alpha_id = "Send DTMF 2", .dtmf = "1234567890" }; static struct send_dtmf_test send_dtmf_data_431 = { .pdu = send_dtmf_431, .pdu_len = sizeof(send_dtmf_431), .qualifier = 0x00, .alpha_id = "Send DTMF 1", .dtmf = "1234567890", .text_attr = { .len = 4, .attributes = { 0x00, 0xB0, 0x02, 0xB4 } } }; static struct send_dtmf_test send_dtmf_data_432 = { .pdu = send_dtmf_432, .pdu_len = sizeof(send_dtmf_432), .qualifier = 0x00, .alpha_id = "Send DTMF 2", .dtmf = "1234567890" }; static struct send_dtmf_test send_dtmf_data_441 = { .pdu = send_dtmf_441, .pdu_len = sizeof(send_dtmf_441), .qualifier = 0x00, .alpha_id = "Send DTMF 1", .dtmf = "1234567890", .text_attr = { .len = 4, .attributes = { 0x00, 0x0B, 0x04, 0xB4 } } }; static struct send_dtmf_test send_dtmf_data_442 = { .pdu = send_dtmf_442, .pdu_len = sizeof(send_dtmf_442), .qualifier = 0x00, .alpha_id = "Send DTMF 2", .dtmf = "1234567890", .text_attr = { .len = 4, .attributes = { 0x00, 0x0B, 0x00, 0xB4 } } }; static struct send_dtmf_test send_dtmf_data_443 = { .pdu = send_dtmf_443, .pdu_len = sizeof(send_dtmf_443), .qualifier = 0x00, .alpha_id = "Send DTMF 3", .dtmf = "1234567890" }; static struct send_dtmf_test send_dtmf_data_451 = { .pdu = send_dtmf_451, .pdu_len = sizeof(send_dtmf_451), .qualifier = 0x00, .alpha_id = "Send DTMF 1", .dtmf = "1234567890", .text_attr = { .len = 4, .attributes = { 0x00, 0x0B, 0x08, 0xB4 } } }; static struct send_dtmf_test send_dtmf_data_452 = { .pdu = send_dtmf_452, .pdu_len = sizeof(send_dtmf_452), .qualifier = 0x00, .alpha_id = "Send DTMF 2", .dtmf = "1234567890", .text_attr = { .len = 4, .attributes = { 0x00, 0x0B, 0x00, 0xB4 } } }; static struct send_dtmf_test send_dtmf_data_453 = { .pdu = send_dtmf_453, .pdu_len = sizeof(send_dtmf_453), .qualifier = 0x00, .alpha_id = "Send DTMF 3", .dtmf = "1234567890" }; static struct send_dtmf_test send_dtmf_data_461 = { .pdu = send_dtmf_461, .pdu_len = sizeof(send_dtmf_461), .qualifier = 0x00, .alpha_id = "Send DTMF 1", .dtmf = "1234567890", .text_attr = { .len = 4, .attributes = { 0x00, 0x0B, 0x10, 0xB4 } } }; static struct send_dtmf_test send_dtmf_data_462 = { .pdu = send_dtmf_462, .pdu_len = sizeof(send_dtmf_462), .qualifier = 0x00, .alpha_id = "Send DTMF 2", .dtmf = "1234567890", .text_attr = { .len = 4, .attributes = { 0x00, 0x0B, 0x00, 0xB4 } } }; static struct send_dtmf_test send_dtmf_data_463 = { .pdu = send_dtmf_463, .pdu_len = sizeof(send_dtmf_463), .qualifier = 0x00, .alpha_id = "Send DTMF 3", .dtmf = "1234567890" }; static struct send_dtmf_test send_dtmf_data_471 = { .pdu = send_dtmf_471, .pdu_len = sizeof(send_dtmf_471), .qualifier = 0x00, .alpha_id = "Send DTMF 1", .dtmf = "1234567890", .text_attr = { .len = 4, .attributes = { 0x00, 0x0B, 0x20, 0xB4 } } }; static struct send_dtmf_test send_dtmf_data_472 = { .pdu = send_dtmf_472, .pdu_len = sizeof(send_dtmf_472), .qualifier = 0x00, .alpha_id = "Send DTMF 2", .dtmf = "1234567890", .text_attr = { .len = 4, .attributes = { 0x00, 0x0B, 0x00, 0xB4 } } }; static struct send_dtmf_test send_dtmf_data_473 = { .pdu = send_dtmf_473, .pdu_len = sizeof(send_dtmf_473), .qualifier = 0x00, .alpha_id = "Send DTMF 3", .dtmf = "1234567890" }; static struct send_dtmf_test send_dtmf_data_481 = { .pdu = send_dtmf_481, .pdu_len = sizeof(send_dtmf_481), .qualifier = 0x00, .alpha_id = "Send DTMF 1", .dtmf = "1234567890", .text_attr = { .len = 4, .attributes = { 0x00, 0x0B, 0x40, 0xB4 } } }; static struct send_dtmf_test send_dtmf_data_482 = { .pdu = send_dtmf_482, .pdu_len = sizeof(send_dtmf_482), .qualifier = 0x00, .alpha_id = "Send DTMF 2", .dtmf = "1234567890", .text_attr = { .len = 4, .attributes = { 0x00, 0x0B, 0x00, 0xB4 } } }; static struct send_dtmf_test send_dtmf_data_483 = { .pdu = send_dtmf_483, .pdu_len = sizeof(send_dtmf_483), .qualifier = 0x00, .alpha_id = "Send DTMF 3", .dtmf = "1234567890" }; static struct send_dtmf_test send_dtmf_data_491 = { .pdu = send_dtmf_491, .pdu_len = sizeof(send_dtmf_491), .qualifier = 0x00, .alpha_id = "Send DTMF 1", .dtmf = "1234567890", .text_attr = { .len = 4, .attributes = { 0x00, 0x0B, 0x80, 0xB4 } } }; static struct send_dtmf_test send_dtmf_data_492 = { .pdu = send_dtmf_492, .pdu_len = sizeof(send_dtmf_492), .qualifier = 0x00, .alpha_id = "Send DTMF 2", .dtmf = "1234567890", .text_attr = { .len = 4, .attributes = { 0x00, 0x0B, 0x00, 0xB4 } } }; static struct send_dtmf_test send_dtmf_data_493 = { .pdu = send_dtmf_493, .pdu_len = sizeof(send_dtmf_493), .qualifier = 0x00, .alpha_id = "Send DTMF 3", .dtmf = "1234567890" }; static struct send_dtmf_test send_dtmf_data_4101 = { .pdu = send_dtmf_4101, .pdu_len = sizeof(send_dtmf_4101), .qualifier = 0x00, .alpha_id = "Send DTMF 1", .dtmf = "1234567890", .text_attr = { .len = 4, .attributes = { 0x00, 0x0B, 0x00, 0xB4 } } }; static struct send_dtmf_test send_dtmf_data_4102 = { .pdu = send_dtmf_4102, .pdu_len = sizeof(send_dtmf_4102), .qualifier = 0x00, .alpha_id = "Send DTMF 2", .dtmf = "1234567890" }; static struct send_dtmf_test send_dtmf_data_511 = { .pdu = send_dtmf_511, .pdu_len = sizeof(send_dtmf_511), .qualifier = 0x00, .alpha_id = "你好", .dtmf = "1c2" }; static struct send_dtmf_test send_dtmf_data_611 = { .pdu = send_dtmf_611, .pdu_len = sizeof(send_dtmf_611), .qualifier = 0x00, .alpha_id = "ル", .dtmf = "1c2" }; static void test_send_dtmf(gconstpointer data) { const struct send_dtmf_test *test = data; struct stk_command *command; command = stk_command_new_from_pdu(test->pdu, test->pdu_len); g_assert(command); g_assert(command->status == STK_PARSE_RESULT_OK); g_assert(command->number == 1); g_assert(command->type == STK_COMMAND_TYPE_SEND_DTMF); g_assert(command->qualifier == test->qualifier); g_assert(command->src == STK_DEVICE_IDENTITY_TYPE_UICC); g_assert(command->dst == STK_DEVICE_IDENTITY_TYPE_NETWORK); check_alpha_id(command->send_dtmf.alpha_id, test->alpha_id); check_dtmf_string(command->send_dtmf.dtmf, test->dtmf); check_icon_id(&command->send_dtmf.icon_id, &test->icon_id); check_text_attr(&command->send_dtmf.text_attr, &test->text_attr); check_frame_id(&command->send_dtmf.frame_id, &test->frame_id); stk_command_free(command); } struct language_notification_test { const unsigned char *pdu; unsigned int pdu_len; unsigned char qualifier; char language[3]; }; static unsigned char language_notification_111[] = { 0xD0, 0x0D, 0x81, 0x03, 0x01, 0x35, 0x01, 0x82, 0x02, 0x81, 0x82, 0xAD, 0x02, 0x73, 0x65 }; static unsigned char language_notification_121[] = { 0xD0, 0x09, 0x81, 0x03, 0x01, 0x35, 0x00, 0x82, 0x02, 0x81, 0x82 }; static struct language_notification_test language_notification_data_111 = { .pdu = language_notification_111, .pdu_len = sizeof(language_notification_111), .qualifier = 0x01, .language = "se" }; static struct language_notification_test language_notification_data_121 = { .pdu = language_notification_121, .pdu_len = sizeof(language_notification_121), .qualifier = 0x00 }; static void test_language_notification(gconstpointer data) { const struct language_notification_test *test = data; struct stk_command *command; command = stk_command_new_from_pdu(test->pdu, test->pdu_len); g_assert(command); g_assert(command->status == STK_PARSE_RESULT_OK); g_assert(command->number == 1); g_assert(command->type == STK_COMMAND_TYPE_LANGUAGE_NOTIFICATION); g_assert(command->qualifier == test->qualifier); g_assert(command->src == STK_DEVICE_IDENTITY_TYPE_UICC); g_assert(command->dst == STK_DEVICE_IDENTITY_TYPE_TERMINAL); check_language(command->language_notification.language, test->language); stk_command_free(command); } struct launch_browser_test { const unsigned char *pdu; unsigned int pdu_len; unsigned char qualifier; unsigned char browser_id; char *url; struct stk_common_byte_array bearer; struct stk_file prov_file_refs[MAX_ITEM]; char *text_gateway_proxy_id; char *alpha_id; struct stk_icon_id icon_id; struct stk_text_attribute text_attr; struct stk_frame_id frame_id; struct stk_common_byte_array network_name; char *text_usr; char *text_passwd; }; static unsigned char launch_browser_111[] = { 0xD0, 0x18, 0x81, 0x03, 0x01, 0x15, 0x00, 0x82, 0x02, 0x81, 0x82, 0x31, 0x00, 0x05, 0x0B, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x55, 0x52, 0x4C }; static unsigned char launch_browser_121[] = { 0xD0, 0x1F, 0x81, 0x03, 0x01, 0x15, 0x00, 0x82, 0x02, 0x81, 0x82, 0x31, 0x12, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x78, 0x78, 0x78, 0x2E, 0x79, 0x79, 0x79, 0x2E, 0x7A, 0x7A, 0x7A, 0x05, 0x00 }; static unsigned char launch_browser_131[] = { 0xD0, 0x0E, 0x81, 0x03, 0x01, 0x15, 0x00, 0x82, 0x02, 0x81, 0x82, 0x30, 0x01, 0x00, 0x31, 0x00 }; static unsigned char launch_browser_141[] = { 0xD0, 0x20, 0x81, 0x03, 0x01, 0x15, 0x00, 0x82, 0x02, 0x81, 0x82, 0x31, 0x00, 0x32, 0x01, 0x03, 0x0D, 0x10, 0x04, 0x61, 0x62, 0x63, 0x2E, 0x64, 0x65, 0x66, 0x2E, 0x67, 0x68, 0x69, 0x2E, 0x6A, 0x6B, 0x6C }; static unsigned char launch_browser_211[] = { 0xD0, 0x18, 0x81, 0x03, 0x01, 0x15, 0x02, 0x82, 0x02, 0x81, 0x82, 0x31, 0x00, 0x05, 0x0B, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x55, 0x52, 0x4C }; static unsigned char launch_browser_221[] = { 0xD0, 0x18, 0x81, 0x03, 0x01, 0x15, 0x03, 0x82, 0x02, 0x81, 0x82, 0x31, 0x00, 0x05, 0x0B, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x55, 0x52, 0x4C }; static unsigned char launch_browser_231[] = { 0xD0, 0x0B, 0x81, 0x03, 0x01, 0x15, 0x00, 0x82, 0x02, 0x81, 0x82, 0x31, 0x00 }; static unsigned char launch_browser_311[] = { 0xD0, 0x26, 0x81, 0x03, 0x01, 0x15, 0x02, 0x82, 0x02, 0x81, 0x82, 0x31, 0x00, 0x05, 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 }; static unsigned char launch_browser_411[] = { 0xD0, 0x21, 0x81, 0x03, 0x01, 0x15, 0x02, 0x82, 0x02, 0x81, 0x82, 0x31, 0x00, 0x05, 0x10, 0x4E, 0x6F, 0x74, 0x20, 0x73, 0x65, 0x6C, 0x66, 0x20, 0x65, 0x78, 0x70, 0x6C, 0x61, 0x6E, 0x2E, 0x1E, 0x02, 0x01, 0x01 }; static unsigned char launch_browser_421[] = { 0xD0, 0x1D, 0x81, 0x03, 0x01, 0x15, 0x02, 0x82, 0x02, 0x81, 0x82, 0x31, 0x00, 0x05, 0x0C, 0x53, 0x65, 0x6C, 0x66, 0x20, 0x65, 0x78, 0x70, 0x6C, 0x61, 0x6E, 0x2E, 0x1E, 0x02, 0x00, 0x01 }; static unsigned char launch_browser_511[] = { 0xD0, 0x20, 0x81, 0x03, 0x01, 0x15, 0x00, 0x82, 0x02, 0x81, 0x82, 0x31, 0x00, 0x05, 0x0D, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x55, 0x52, 0x4C, 0x20, 0x31, 0xD0, 0x04, 0x00, 0x0D, 0x00, 0xB4 }; static unsigned char launch_browser_512[] = { 0xD0, 0x1A, 0x81, 0x03, 0x01, 0x15, 0x00, 0x82, 0x02, 0x81, 0x82, 0x31, 0x00, 0x05, 0x0D, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x55, 0x52, 0x4C, 0x20, 0x32 }; static unsigned char launch_browser_521[] = { 0xD0, 0x20, 0x81, 0x03, 0x01, 0x15, 0x00, 0x82, 0x02, 0x81, 0x82, 0x31, 0x00, 0x05, 0x0D, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x55, 0x52, 0x4C, 0x20, 0x31, 0xD0, 0x04, 0x00, 0x0D, 0x01, 0xB4 }; static unsigned char launch_browser_522[] = { 0xD0, 0x1A, 0x81, 0x03, 0x01, 0x15, 0x00, 0x82, 0x02, 0x81, 0x82, 0x31, 0x00, 0x05, 0x0D, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x55, 0x52, 0x4C, 0x20, 0x32 }; static unsigned char launch_browser_531[] = { 0xD0, 0x20, 0x81, 0x03, 0x01, 0x15, 0x00, 0x82, 0x02, 0x81, 0x82, 0x31, 0x00, 0x05, 0x0D, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x55, 0x52, 0x4C, 0x20, 0x31, 0xD0, 0x04, 0x00, 0x0D, 0x02, 0xB4 }; static unsigned char launch_browser_532[] = { 0xD0, 0x1A, 0x81, 0x03, 0x01, 0x15, 0x00, 0x82, 0x02, 0x81, 0x82, 0x31, 0x00, 0x05, 0x0D, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x55, 0x52, 0x4C, 0x20, 0x32 }; static unsigned char launch_browser_541[] = { 0xD0, 0x20, 0x81, 0x03, 0x01, 0x15, 0x00, 0x82, 0x02, 0x81, 0x82, 0x31, 0x00, 0x05, 0x0D, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x55, 0x52, 0x4C, 0x20, 0x31, 0xD0, 0x04, 0x00, 0x0D, 0x04, 0xB4 }; static unsigned char launch_browser_542[] = { 0xD0, 0x20, 0x81, 0x03, 0x01, 0x15, 0x00, 0x82, 0x02, 0x81, 0x82, 0x31, 0x00, 0x05, 0x0D, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x55, 0x52, 0x4C, 0x20, 0x32, 0xD0, 0x04, 0x00, 0x0D, 0x00, 0xB4 }; static unsigned char launch_browser_543[] = { 0xD0, 0x1A, 0x81, 0x03, 0x01, 0x15, 0x00, 0x82, 0x02, 0x81, 0x82, 0x31, 0x00, 0x05, 0x0D, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x55, 0x52, 0x4C, 0x20, 0x33 }; static unsigned char launch_browser_551[] = { 0xD0, 0x20, 0x81, 0x03, 0x01, 0x15, 0x00, 0x82, 0x02, 0x81, 0x82, 0x31, 0x00, 0x05, 0x0D, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x55, 0x52, 0x4C, 0x20, 0x31, 0xD0, 0x04, 0x00, 0x0D, 0x08, 0xB4 }; static unsigned char launch_browser_552[] = { 0xD0, 0x20, 0x81, 0x03, 0x01, 0x15, 0x00, 0x82, 0x02, 0x81, 0x82, 0x31, 0x00, 0x05, 0x0D, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x55, 0x52, 0x4C, 0x20, 0x32, 0xD0, 0x04, 0x00, 0x0D, 0x00, 0xB4 }; static unsigned char launch_browser_553[] = { 0xD0, 0x1A, 0x81, 0x03, 0x01, 0x15, 0x00, 0x82, 0x02, 0x81, 0x82, 0x31, 0x00, 0x05, 0x0D, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x55, 0x52, 0x4C, 0x20, 0x33 }; static unsigned char launch_browser_561[] = { 0xD0, 0x20, 0x81, 0x03, 0x01, 0x15, 0x00, 0x82, 0x02, 0x81, 0x82, 0x31, 0x00, 0x05, 0x0D, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x55, 0x52, 0x4C, 0x20, 0x31, 0xD0, 0x04, 0x00, 0x0D, 0x10, 0xB4 }; static unsigned char launch_browser_562[] = { 0xD0, 0x20, 0x81, 0x03, 0x01, 0x15, 0x00, 0x82, 0x02, 0x81, 0x82, 0x31, 0x00, 0x05, 0x0D, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x55, 0x52, 0x4C, 0x20, 0x32, 0xD0, 0x04, 0x00, 0x0D, 0x00, 0xB4 }; static unsigned char launch_browser_563[] = { 0xD0, 0x1A, 0x81, 0x03, 0x01, 0x15, 0x00, 0x82, 0x02, 0x81, 0x82, 0x31, 0x00, 0x05, 0x0D, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x55, 0x52, 0x4C, 0x20, 0x33 }; static unsigned char launch_browser_571[] = { 0xD0, 0x20, 0x81, 0x03, 0x01, 0x15, 0x00, 0x82, 0x02, 0x81, 0x82, 0x31, 0x00, 0x05, 0x0D, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x55, 0x52, 0x4C, 0x20, 0x31, 0xD0, 0x04, 0x00, 0x0D, 0x20, 0xB4 }; static unsigned char launch_browser_572[] = { 0xD0, 0x20, 0x81, 0x03, 0x01, 0x15, 0x00, 0x82, 0x02, 0x81, 0x82, 0x31, 0x00, 0x05, 0x0D, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x55, 0x52, 0x4C, 0x20, 0x32, 0xD0, 0x04, 0x00, 0x0D, 0x00, 0xB4 }; static unsigned char launch_browser_573[] = { 0xD0, 0x1A, 0x81, 0x03, 0x01, 0x15, 0x00, 0x82, 0x02, 0x81, 0x82, 0x31, 0x00, 0x05, 0x0D, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x55, 0x52, 0x4C, 0x20, 0x33 }; static unsigned char launch_browser_581[] = { 0xD0, 0x20, 0x81, 0x03, 0x01, 0x15, 0x00, 0x82, 0x02, 0x81, 0x82, 0x31, 0x00, 0x05, 0x0D, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x55, 0x52, 0x4C, 0x20, 0x31, 0xD0, 0x04, 0x00, 0x0D, 0x40, 0xB4 }; static unsigned char launch_browser_582[] = { 0xD0, 0x20, 0x81, 0x03, 0x01, 0x15, 0x00, 0x82, 0x02, 0x81, 0x82, 0x31, 0x00, 0x05, 0x0D, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x55, 0x52, 0x4C, 0x20, 0x32, 0xD0, 0x04, 0x00, 0x0D, 0x00, 0xB4 }; static unsigned char launch_browser_583[] = { 0xD0, 0x1A, 0x81, 0x03, 0x01, 0x15, 0x00, 0x82, 0x02, 0x81, 0x82, 0x31, 0x00, 0x05, 0x0D, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x55, 0x52, 0x4C, 0x20, 0x33 }; static unsigned char launch_browser_591[] = { 0xD0, 0x20, 0x81, 0x03, 0x01, 0x15, 0x00, 0x82, 0x02, 0x81, 0x82, 0x31, 0x00, 0x05, 0x0D, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x55, 0x52, 0x4C, 0x20, 0x31, 0xD0, 0x04, 0x00, 0x0D, 0x80, 0xB4 }; static unsigned char launch_browser_592[] = { 0xD0, 0x20, 0x81, 0x03, 0x01, 0x15, 0x00, 0x82, 0x02, 0x81, 0x82, 0x31, 0x00, 0x05, 0x0D, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x55, 0x52, 0x4C, 0x20, 0x32, 0xD0, 0x04, 0x00, 0x0D, 0x00, 0xB4 }; static unsigned char launch_browser_593[] = { 0xD0, 0x1A, 0x81, 0x03, 0x01, 0x15, 0x00, 0x82, 0x02, 0x81, 0x82, 0x31, 0x00, 0x05, 0x0D, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x55, 0x52, 0x4C, 0x20, 0x33 }; static unsigned char launch_browser_5101[] = { 0xD0, 0x20, 0x81, 0x03, 0x01, 0x15, 0x00, 0x82, 0x02, 0x81, 0x82, 0x31, 0x00, 0x05, 0x0D, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x55, 0x52, 0x4C, 0x20, 0x31, 0xD0, 0x04, 0x00, 0x0D, 0x00, 0xB4 }; static unsigned char launch_browser_5102[] = { 0xD0, 0x1A, 0x81, 0x03, 0x01, 0x15, 0x00, 0x82, 0x02, 0x81, 0x82, 0x31, 0x00, 0x05, 0x0D, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x55, 0x52, 0x4C, 0x20, 0x32 }; static unsigned char launch_browser_611[] = { 0xD0, 0x12, 0x81, 0x03, 0x01, 0x15, 0x02, 0x82, 0x02, 0x81, 0x82, 0x31, 0x00, 0x05, 0x05, 0x80, 0x4F, 0x60, 0x59, 0x7D }; static unsigned char launch_browser_711[] = { 0xD0, 0x10, 0x81, 0x03, 0x01, 0x15, 0x02, 0x82, 0x02, 0x81, 0x82, 0x31, 0x00, 0x05, 0x03, 0x80, 0x30, 0xEB }; static struct launch_browser_test launch_browser_data_111 = { .pdu = launch_browser_111, .pdu_len = sizeof(launch_browser_111), .qualifier = 0x00, .alpha_id = "Default URL" }; static struct launch_browser_test launch_browser_data_121 = { .pdu = launch_browser_121, .pdu_len = sizeof(launch_browser_121), .qualifier = 0x00, .alpha_id = "", .url = "http://xxx.yyy.zzz" }; static struct launch_browser_test launch_browser_data_131 = { .pdu = launch_browser_131, .pdu_len = sizeof(launch_browser_131), .qualifier = 0x00 }; static struct launch_browser_test launch_browser_data_141 = { .pdu = launch_browser_141, .pdu_len = sizeof(launch_browser_141), .qualifier = 0x00, .bearer = { .len = 1, .array = (unsigned char *) "\x03" }, .text_gateway_proxy_id = "abc.def.ghi.jkl" }; static struct launch_browser_test launch_browser_data_211 = { .pdu = launch_browser_211, .pdu_len = sizeof(launch_browser_211), .qualifier = 0x02, .alpha_id = "Default URL" }; static struct launch_browser_test launch_browser_data_221 = { .pdu = launch_browser_221, .pdu_len = sizeof(launch_browser_221), .qualifier = 0x03, .alpha_id = "Default URL" }; static struct launch_browser_test launch_browser_data_231 = { .pdu = launch_browser_231, .pdu_len = sizeof(launch_browser_231), .qualifier = 0x00 }; static struct launch_browser_test launch_browser_data_311 = { .pdu = launch_browser_311, .pdu_len = sizeof(launch_browser_311), .qualifier = 0x02, .alpha_id = "ЗДРАВСТВУЙТЕ" }; static struct launch_browser_test launch_browser_data_411 = { .pdu = launch_browser_411, .pdu_len = sizeof(launch_browser_411), .qualifier = 0x02, .alpha_id = "Not self explan.", .icon_id = { .qualifier = STK_ICON_QUALIFIER_TYPE_NON_SELF_EXPLANATORY, .id = 0x01 } }; static struct launch_browser_test launch_browser_data_421 = { .pdu = launch_browser_421, .pdu_len = sizeof(launch_browser_421), .qualifier = 0x02, .alpha_id = "Self explan.", .icon_id = { .qualifier = STK_ICON_QUALIFIER_TYPE_SELF_EXPLANATORY, .id = 0x01 } }; static struct launch_browser_test launch_browser_data_511 = { .pdu = launch_browser_511, .pdu_len = sizeof(launch_browser_511), .qualifier = 0x00, .alpha_id = "Default URL 1", .text_attr = { .len = 4, .attributes = { 0x00, 0x0D, 0x00, 0xB4 } } }; static struct launch_browser_test launch_browser_data_512 = { .pdu = launch_browser_512, .pdu_len = sizeof(launch_browser_512), .qualifier = 0x00, .alpha_id = "Default URL 2" }; static struct launch_browser_test launch_browser_data_521 = { .pdu = launch_browser_521, .pdu_len = sizeof(launch_browser_521), .qualifier = 0x00, .alpha_id = "Default URL 1", .text_attr = { .len = 4, .attributes = { 0x00, 0x0D, 0x01, 0xB4 } } }; static struct launch_browser_test launch_browser_data_522 = { .pdu = launch_browser_522, .pdu_len = sizeof(launch_browser_522), .qualifier = 0x00, .alpha_id = "Default URL 2" }; static struct launch_browser_test launch_browser_data_531 = { .pdu = launch_browser_531, .pdu_len = sizeof(launch_browser_531), .qualifier = 0x00, .alpha_id = "Default URL 1", .text_attr = { .len = 4, .attributes = { 0x00, 0x0D, 0x02, 0xB4 } } }; static struct launch_browser_test launch_browser_data_532 = { .pdu = launch_browser_532, .pdu_len = sizeof(launch_browser_532), .qualifier = 0x00, .alpha_id = "Default URL 2" }; static struct launch_browser_test launch_browser_data_541 = { .pdu = launch_browser_541, .pdu_len = sizeof(launch_browser_541), .qualifier = 0x00, .alpha_id = "Default URL 1", .text_attr = { .len = 4, .attributes = { 0x00, 0x0D, 0x04, 0xB4 } } }; static struct launch_browser_test launch_browser_data_542 = { .pdu = launch_browser_542, .pdu_len = sizeof(launch_browser_542), .qualifier = 0x00, .alpha_id = "Default URL 2", .text_attr = { .len = 4, .attributes = { 0x00, 0x0D, 0x00, 0xB4 } } }; static struct launch_browser_test launch_browser_data_543 = { .pdu = launch_browser_543, .pdu_len = sizeof(launch_browser_543), .qualifier = 0x00, .alpha_id = "Default URL 3" }; static struct launch_browser_test launch_browser_data_551 = { .pdu = launch_browser_551, .pdu_len = sizeof(launch_browser_551), .qualifier = 0x00, .alpha_id = "Default URL 1", .text_attr = { .len = 4, .attributes = { 0x00, 0x0D, 0x08, 0xB4 } } }; static struct launch_browser_test launch_browser_data_552 = { .pdu = launch_browser_552, .pdu_len = sizeof(launch_browser_552), .qualifier = 0x00, .alpha_id = "Default URL 2", .text_attr = { .len = 4, .attributes = { 0x00, 0x0D, 0x00, 0xB4 } } }; static struct launch_browser_test launch_browser_data_553 = { .pdu = launch_browser_553, .pdu_len = sizeof(launch_browser_553), .qualifier = 0x00, .alpha_id = "Default URL 3" }; static struct launch_browser_test launch_browser_data_561 = { .pdu = launch_browser_561, .pdu_len = sizeof(launch_browser_561), .qualifier = 0x00, .alpha_id = "Default URL 1", .text_attr = { .len = 4, .attributes = { 0x00, 0x0D, 0x10, 0xB4 } } }; static struct launch_browser_test launch_browser_data_562 = { .pdu = launch_browser_562, .pdu_len = sizeof(launch_browser_562), .qualifier = 0x00, .alpha_id = "Default URL 2", .text_attr = { .len = 4, .attributes = { 0x00, 0x0D, 0x00, 0xB4 } } }; static struct launch_browser_test launch_browser_data_563 = { .pdu = launch_browser_563, .pdu_len = sizeof(launch_browser_563), .qualifier = 0x00, .alpha_id = "Default URL 3" }; static struct launch_browser_test launch_browser_data_571 = { .pdu = launch_browser_571, .pdu_len = sizeof(launch_browser_571), .qualifier = 0x00, .alpha_id = "Default URL 1", .text_attr = { .len = 4, .attributes = { 0x00, 0x0D, 0x20, 0xB4 } } }; static struct launch_browser_test launch_browser_data_572 = { .pdu = launch_browser_572, .pdu_len = sizeof(launch_browser_572), .qualifier = 0x00, .alpha_id = "Default URL 2", .text_attr = { .len = 4, .attributes = { 0x00, 0x0D, 0x00, 0xB4 } } }; static struct launch_browser_test launch_browser_data_573 = { .pdu = launch_browser_573, .pdu_len = sizeof(launch_browser_573), .qualifier = 0x00, .alpha_id = "Default URL 3" }; static struct launch_browser_test launch_browser_data_581 = { .pdu = launch_browser_581, .pdu_len = sizeof(launch_browser_581), .qualifier = 0x00, .alpha_id = "Default URL 1", .text_attr = { .len = 4, .attributes = { 0x00, 0x0D, 0x40, 0xB4 } } }; static struct launch_browser_test launch_browser_data_582 = { .pdu = launch_browser_582, .pdu_len = sizeof(launch_browser_582), .qualifier = 0x00, .alpha_id = "Default URL 2", .text_attr = { .len = 4, .attributes = { 0x00, 0x0D, 0x00, 0xB4 } } }; static struct launch_browser_test launch_browser_data_583 = { .pdu = launch_browser_583, .pdu_len = sizeof(launch_browser_583), .qualifier = 0x00, .alpha_id = "Default URL 3" }; static struct launch_browser_test launch_browser_data_591 = { .pdu = launch_browser_591, .pdu_len = sizeof(launch_browser_591), .qualifier = 0x00, .alpha_id = "Default URL 1", .text_attr = { .len = 4, .attributes = { 0x00, 0x0D, 0x80, 0xB4 } } }; static struct launch_browser_test launch_browser_data_592 = { .pdu = launch_browser_592, .pdu_len = sizeof(launch_browser_592), .qualifier = 0x00, .alpha_id = "Default URL 2", .text_attr = { .len = 4, .attributes = { 0x00, 0x0D, 0x00, 0xB4 } } }; static struct launch_browser_test launch_browser_data_593 = { .pdu = launch_browser_593, .pdu_len = sizeof(launch_browser_593), .qualifier = 0x00, .alpha_id = "Default URL 3" }; static struct launch_browser_test launch_browser_data_5101 = { .pdu = launch_browser_5101, .pdu_len = sizeof(launch_browser_5101), .qualifier = 0x00, .alpha_id = "Default URL 1", .text_attr = { .len = 4, .attributes = { 0x00, 0x0D, 0x00, 0xB4 } } }; static struct launch_browser_test launch_browser_data_5102 = { .pdu = launch_browser_5102, .pdu_len = sizeof(launch_browser_5102), .qualifier = 0x00, .alpha_id = "Default URL 2" }; static struct launch_browser_test launch_browser_data_611 = { .pdu = launch_browser_611, .pdu_len = sizeof(launch_browser_611), .qualifier = 0x02, .alpha_id = "你好" }; static struct launch_browser_test launch_browser_data_711 = { .pdu = launch_browser_711, .pdu_len = sizeof(launch_browser_711), .qualifier = 0x02, .alpha_id = "ル" }; static void test_launch_browser(gconstpointer data) { const struct launch_browser_test *test = data; struct stk_command *command; command = stk_command_new_from_pdu(test->pdu, test->pdu_len); g_assert(command); g_assert(command->status == STK_PARSE_RESULT_OK); g_assert(command->number == 1); g_assert(command->type == STK_COMMAND_TYPE_LAUNCH_BROWSER); g_assert(command->qualifier == test->qualifier); g_assert(command->src == STK_DEVICE_IDENTITY_TYPE_UICC); g_assert(command->dst == STK_DEVICE_IDENTITY_TYPE_TERMINAL); check_browser_id(command->launch_browser.browser_id, test->browser_id); check_url(command->launch_browser.url, test->url); check_bearer(&command->launch_browser.bearer, &test->bearer); check_provisioning_file_references( command->launch_browser.prov_file_refs, test->prov_file_refs); check_text(command->launch_browser.text_gateway_proxy_id, test->text_gateway_proxy_id); check_alpha_id(command->launch_browser.alpha_id, test->alpha_id); check_icon_id(&command->launch_browser.icon_id, &test->icon_id); check_text_attr(&command->launch_browser.text_attr, &test->text_attr); check_frame_id(&command->launch_browser.frame_id, &test->frame_id); check_text(command->launch_browser.text_usr, test->text_usr); check_text(command->launch_browser.text_passwd, test->text_passwd); stk_command_free(command); } struct open_channel_test { const unsigned char *pdu; unsigned int pdu_len; unsigned char qualifier; char *alpha_id; struct stk_icon_id icon_id; struct stk_bearer_description bearer_desc; unsigned short buf_size; char *apn; struct stk_other_address local_addr; char *text_usr; char *text_passwd; struct stk_uicc_te_interface uti; struct stk_other_address data_dest_addr; struct stk_text_attribute text_attr; struct stk_frame_id frame_id; }; static unsigned char open_channel_211[] = { 0xD0, 0x36, 0x81, 0x03, 0x01, 0x40, 0x01, 0x82, 0x02, 0x81, 0x82, 0x35, 0x07, 0x02, 0x03, 0x04, 0x03, 0x04, 0x1F, 0x02, 0x39, 0x02, 0x05, 0x78, 0x0D, 0x08, 0xF4, 0x55, 0x73, 0x65, 0x72, 0x4C, 0x6F, 0x67, 0x0D, 0x08, 0xF4, 0x55, 0x73, 0x65, 0x72, 0x50, 0x77, 0x64, 0x3C, 0x03, 0x01, 0xAD, 0x9C, 0x3E, 0x05, 0x21, 0x01, 0x01, 0x01, 0x01 }; static unsigned char open_channel_221[] = { 0xD0, 0x42, 0x81, 0x03, 0x01, 0x40, 0x01, 0x82, 0x02, 0x81, 0x82, 0x35, 0x07, 0x02, 0x03, 0x04, 0x03, 0x04, 0x1F, 0x02, 0x39, 0x02, 0x05, 0x78, 0x47, 0x0A, 0x06, 0x54, 0x65, 0x73, 0x74, 0x47, 0x70, 0x02, 0x72, 0x73, 0x0D, 0x08, 0xF4, 0x55, 0x73, 0x65, 0x72, 0x4C, 0x6F, 0x67, 0x0D, 0x08, 0xF4, 0x55, 0x73, 0x65, 0x72, 0x50, 0x77, 0x64, 0x3C, 0x03, 0x01, 0xAD, 0x9C, 0x3E, 0x05, 0x21, 0x01, 0x01, 0x01, 0x01 }; static unsigned char open_channel_231[] = { 0xD0, 0x4B, 0x81, 0x03, 0x01, 0x40, 0x01, 0x82, 0x02, 0x81, 0x82, 0x05, 0x07, 0x4F, 0x70, 0x65, 0x6E, 0x20, 0x49, 0x44, 0x35, 0x07, 0x02, 0x03, 0x04, 0x03, 0x04, 0x1F, 0x02, 0x39, 0x02, 0x05, 0x78, 0x47, 0x0A, 0x06, 0x54, 0x65, 0x73, 0x74, 0x47, 0x70, 0x02, 0x72, 0x73, 0x0D, 0x08, 0xF4, 0x55, 0x73, 0x65, 0x72, 0x4C, 0x6F, 0x67, 0x0D, 0x08, 0xF4, 0x55, 0x73, 0x65, 0x72, 0x50, 0x77, 0x64, 0x3C, 0x03, 0x01, 0xAD, 0x9C, 0x3E, 0x05, 0x21, 0x01, 0x01, 0x01, 0x01 }; static unsigned char open_channel_241[] = { 0xD0, 0x44, 0x81, 0x03, 0x01, 0x40, 0x01, 0x82, 0x02, 0x81, 0x82, 0x05, 0x00, 0x35, 0x07, 0x02, 0x03, 0x04, 0x03, 0x04, 0x1F, 0x02, 0x39, 0x02, 0x05, 0x78, 0x47, 0x0A, 0x06, 0x54, 0x65, 0x73, 0x74, 0x47, 0x70, 0x02, 0x72, 0x73, 0x0D, 0x08, 0xF4, 0x55, 0x73, 0x65, 0x72, 0x4C, 0x6F, 0x67, 0x0D, 0x08, 0xF4, 0x55, 0x73, 0x65, 0x72, 0x50, 0x77, 0x64, 0x3C, 0x03, 0x01, 0xAD, 0x9C, 0x3E, 0x05, 0x21, 0x01, 0x01, 0x01, 0x01 }; static unsigned char open_channel_511[] = { 0xD0, 0x53, 0x81, 0x03, 0x01, 0x40, 0x01, 0x82, 0x02, 0x81, 0x82, 0x05, 0x09, 0x4F, 0x70, 0x65, 0x6E, 0x20, 0x49, 0x44, 0x20, 0x31, 0x35, 0x07, 0x02, 0x03, 0x04, 0x03, 0x04, 0x1F, 0x02, 0x39, 0x02, 0x05, 0x78, 0x47, 0x0A, 0x06, 0x54, 0x65, 0x73, 0x74, 0x47, 0x70, 0x02, 0x72, 0x73, 0x0D, 0x08, 0xF4, 0x55, 0x73, 0x65, 0x72, 0x4C, 0x6F, 0x67, 0x0D, 0x08, 0xF4, 0x55, 0x73, 0x65, 0x72, 0x50, 0x77, 0x64, 0x3C, 0x03, 0x01, 0xAD, 0x9C, 0x3E, 0x05, 0x21, 0x01, 0x01, 0x01, 0x01, 0xD0, 0x04, 0x00, 0x09, 0x00, 0xB4 }; static struct open_channel_test open_channel_data_211 = { /* * OPEN CHANNEL, immediate link establishment, GPRS, no local address * no alpha identifier, no network access name */ .pdu = open_channel_211, .pdu_len = sizeof(open_channel_211), .qualifier = STK_OPEN_CHANNEL_FLAG_IMMEDIATE, .bearer_desc = { .type = STK_BEARER_TYPE_GPRS_UTRAN, .gprs = { .precedence = 3, .delay = 4, .reliability = 3, .peak = 4, .mean = 31, .pdp_type = 2, }, }, .buf_size = 1400, .text_usr = "UserLog", .text_passwd = "UserPwd", .uti = { .protocol = STK_TRANSPORT_PROTOCOL_UDP_CLIENT_REMOTE, .port = 44444, }, .data_dest_addr = { .type = STK_ADDRESS_IPV4, .addr = { .ipv4 = 0x01010101, }, }, }; static struct open_channel_test open_channel_data_221 = { /* * OPEN CHANNEL, immediate link establishment GPRS, * no alpha identifier, with network access name */ .pdu = open_channel_221, .pdu_len = sizeof(open_channel_221), .qualifier = STK_OPEN_CHANNEL_FLAG_IMMEDIATE, .bearer_desc = { .type = STK_BEARER_TYPE_GPRS_UTRAN, .gprs = { .precedence = 3, .delay = 4, .reliability = 3, .peak = 4, .mean = 31, .pdp_type = 2, }, }, .buf_size = 1400, .apn = "TestGp.rs", .text_usr = "UserLog", .text_passwd = "UserPwd", .uti = { .protocol = STK_TRANSPORT_PROTOCOL_UDP_CLIENT_REMOTE, .port = 44444, }, .data_dest_addr = { .type = STK_ADDRESS_IPV4, .addr = { .ipv4 = 0x01010101, }, }, }; static struct open_channel_test open_channel_data_231 = { /* * OPEN CHANNEL, immediate link establishment, GPRS * with alpha identifier */ .pdu = open_channel_231, .pdu_len = sizeof(open_channel_231), .qualifier = STK_OPEN_CHANNEL_FLAG_IMMEDIATE, .alpha_id = "Open ID", .bearer_desc = { .type = STK_BEARER_TYPE_GPRS_UTRAN, .gprs = { .precedence = 3, .delay = 4, .reliability = 3, .peak = 4, .mean = 31, .pdp_type = 2, }, }, .buf_size = 1400, .apn = "TestGp.rs", .text_usr = "UserLog", .text_passwd = "UserPwd", .uti = { .protocol = STK_TRANSPORT_PROTOCOL_UDP_CLIENT_REMOTE, .port = 44444, }, .data_dest_addr = { .type = STK_ADDRESS_IPV4, .addr = { .ipv4 = 0x01010101, }, }, }; static struct open_channel_test open_channel_data_241 = { /* * OPEN CHANNEL, immediate link establishment, GPRS, * with null alpha identifier */ .pdu = open_channel_241, .pdu_len = sizeof(open_channel_241), .qualifier = STK_OPEN_CHANNEL_FLAG_IMMEDIATE, .alpha_id = "", .bearer_desc = { .type = STK_BEARER_TYPE_GPRS_UTRAN, .gprs = { .precedence = 3, .delay = 4, .reliability = 3, .peak = 4, .mean = 31, .pdp_type = 2, }, }, .buf_size = 1400, .apn = "TestGp.rs", .text_usr = "UserLog", .text_passwd = "UserPwd", .uti = { .protocol = STK_TRANSPORT_PROTOCOL_UDP_CLIENT_REMOTE, .port = 44444, }, .data_dest_addr = { .type = STK_ADDRESS_IPV4, .addr = { .ipv4 = 0x01010101, }, }, }; static struct open_channel_test open_channel_data_511 = { /* * OPEN CHANNEL, immediate link establishment, GPRS * Text Attribute – Left Alignment */ .pdu = open_channel_511, .pdu_len = sizeof(open_channel_511), .qualifier = STK_OPEN_CHANNEL_FLAG_IMMEDIATE, .alpha_id = "Open ID 1", .bearer_desc = { .type = STK_BEARER_TYPE_GPRS_UTRAN, .gprs = { .precedence = 3, .delay = 4, .reliability = 3, .peak = 4, .mean = 31, .pdp_type = 2, }, }, .buf_size = 1400, .apn = "TestGp.rs", .text_usr = "UserLog", .text_passwd = "UserPwd", .uti = { .protocol = STK_TRANSPORT_PROTOCOL_UDP_CLIENT_REMOTE, .port = 44444, }, .data_dest_addr = { .type = STK_ADDRESS_IPV4, .addr = { .ipv4 = 0x01010101, }, }, .text_attr = { .len = 4, .attributes = { 0x00, 0x09, 0x00, 0xB4 } }, }; static void test_open_channel(gconstpointer data) { const struct open_channel_test *test = data; struct stk_command *command; command = stk_command_new_from_pdu(test->pdu, test->pdu_len); g_assert(command); g_assert(command->status == STK_PARSE_RESULT_OK); g_assert(command->number == 1); g_assert(command->type == STK_COMMAND_TYPE_OPEN_CHANNEL); g_assert(command->qualifier == test->qualifier); g_assert(command->src == STK_DEVICE_IDENTITY_TYPE_UICC); g_assert(command->dst == STK_DEVICE_IDENTITY_TYPE_TERMINAL); check_alpha_id(command->open_channel.alpha_id, test->alpha_id); check_icon_id(&command->open_channel.icon_id, &test->icon_id); check_bearer_desc(&command->open_channel.bearer_desc, &test->bearer_desc); g_assert(command->open_channel.buf_size == test->buf_size); check_network_access_name(command->open_channel.apn, test->apn); check_other_address(&command->open_channel.local_addr, &test->local_addr); check_text(command->open_channel.text_usr, test->text_usr); check_text(command->open_channel.text_passwd, test->text_passwd); check_uicc_te_interface(&command->open_channel.uti, &test->uti); check_other_address(&command->open_channel.data_dest_addr, &test->data_dest_addr); check_text_attr(&command->open_channel.text_attr, &test->text_attr); check_frame_id(&command->open_channel.frame_id, &test->frame_id); stk_command_free(command); } struct close_channel_test { const unsigned char *pdu; unsigned int pdu_len; unsigned char qualifier; enum stk_device_identity_type dst; char *alpha_id; struct stk_icon_id icon_id; struct stk_text_attribute text_attr; struct stk_frame_id frame_id; }; static unsigned char close_channel_111[] = { 0xD0, 0x09, 0x81, 0x03, 0x01, 0x41, 0x00, 0x82, 0x02, 0x81, 0x21 }; static struct close_channel_test close_channel_data_111 = { .pdu = close_channel_111, .pdu_len = sizeof(close_channel_111), .qualifier = 0x00, .dst = STK_DEVICE_IDENTITY_TYPE_CHANNEL_1, }; static unsigned char close_channel_211[] = { 0xD0, 0x1B, 0x81, 0x03, 0x01, 0x41, 0x00, 0x82, 0x02, 0x81, 0x21, 0x85, 0x0A, 0x43, 0x6C, 0x6F, 0x73, 0x65, 0x20, 0x49, 0x44, 0x20, 0x31, 0xD0, 0x04, 0x00, 0x0A, 0x00, 0xB4, }; static struct close_channel_test close_channel_data_211 = { .pdu = close_channel_211, .pdu_len = sizeof(close_channel_211), .qualifier = 0x00, .dst = STK_DEVICE_IDENTITY_TYPE_CHANNEL_1, .alpha_id = "Close ID 1", .text_attr = { .len = 4, .attributes = { 0x00, 0x0A, 0x00, 0xB4 } }, }; static void test_close_channel(gconstpointer data) { const struct close_channel_test *test = data; struct stk_command *command; command = stk_command_new_from_pdu(test->pdu, test->pdu_len); g_assert(command); g_assert(command->status == STK_PARSE_RESULT_OK); g_assert(command->number == 1); g_assert(command->type == STK_COMMAND_TYPE_CLOSE_CHANNEL); g_assert(command->qualifier == test->qualifier); g_assert(command->src == STK_DEVICE_IDENTITY_TYPE_UICC); g_assert(command->dst == test->dst); check_alpha_id(command->close_channel.alpha_id, test->alpha_id); check_icon_id(&command->close_channel.icon_id, &test->icon_id); check_text_attr(&command->close_channel.text_attr, &test->text_attr); check_frame_id(&command->close_channel.frame_id, &test->frame_id); stk_command_free(command); } struct receive_data_test { const unsigned char *pdu; unsigned int pdu_len; unsigned char qualifier; enum stk_device_identity_type dst; char *alpha_id; struct stk_icon_id icon_id; unsigned char data_len; struct stk_text_attribute text_attr; struct stk_frame_id frame_id; }; static unsigned char receive_data_111[] = { 0xD0, 0x0C, 0x81, 0x03, 0x01, 0x42, 0x00, 0x82, 0x02, 0x81, 0x21, 0xB7, 0x01, 0xC8 }; static struct receive_data_test receive_data_data_111 = { .pdu = receive_data_111, .pdu_len = sizeof(receive_data_111), .qualifier = 0x00, .dst = STK_DEVICE_IDENTITY_TYPE_CHANNEL_1, .data_len = 200, }; static unsigned char receive_data_211[] = { 0xD0, 0x22, 0x81, 0x03, 0x01, 0x42, 0x00, 0x82, 0x02, 0x81, 0x21, 0x85, 0x0E, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x20, 0x44, 0x61, 0x74, 0x61, 0x20, 0x31, 0xB7, 0x01, 0xC8, 0xD0, 0x04, 0x00, 0x0E, 0x00, 0xB4 }; static struct receive_data_test receive_data_data_211 = { .pdu = receive_data_211, .pdu_len = sizeof(receive_data_211), .qualifier = 0x00, .dst = STK_DEVICE_IDENTITY_TYPE_CHANNEL_1, .data_len = 200, .alpha_id = "Receive Data 1", .text_attr = { .len = 4, .attributes = { 0x00, 0x0E, 0x00, 0xB4 } }, }; static void test_receive_data(gconstpointer data) { const struct receive_data_test *test = data; struct stk_command *command; command = stk_command_new_from_pdu(test->pdu, test->pdu_len); g_assert(command); g_assert(command->status == STK_PARSE_RESULT_OK); g_assert(command->number == 1); g_assert(command->type == STK_COMMAND_TYPE_RECEIVE_DATA); g_assert(command->qualifier == test->qualifier); g_assert(command->src == STK_DEVICE_IDENTITY_TYPE_UICC); g_assert(command->dst == test->dst); check_alpha_id(command->receive_data.alpha_id, test->alpha_id); check_icon_id(&command->receive_data.icon_id, &test->icon_id); check_common_byte(command->receive_data.data_len, test->data_len); check_text_attr(&command->receive_data.text_attr, &test->text_attr); check_frame_id(&command->receive_data.frame_id, &test->frame_id); stk_command_free(command); } struct send_data_test { const unsigned char *pdu; unsigned int pdu_len; unsigned char qualifier; enum stk_device_identity_type dst; char *alpha_id; struct stk_icon_id icon_id; struct stk_common_byte_array data; struct stk_text_attribute text_attr; struct stk_frame_id frame_id; }; static unsigned char send_data_111[] = { 0xD0, 0x13, 0x81, 0x03, 0x01, 0x43, 0x01, 0x82, 0x02, 0x81, 0x21, 0xB6, 0x08, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 }; static struct send_data_test send_data_data_111 = { .pdu = send_data_111, .pdu_len = sizeof(send_data_111), .qualifier = STK_SEND_DATA_IMMEDIATELY, .dst = STK_DEVICE_IDENTITY_TYPE_CHANNEL_1, .data = { .array = (unsigned char[8]) { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 }, .len = 8, }, }; static unsigned char send_data_121[] = { 0xD0, 0x81, 0xD4, 0x81, 0x03, 0x01, 0x43, 0x00, 0x82, 0x02, 0x81, 0x21, 0xB6, 0x81, 0xC8, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7 }; static struct send_data_test send_data_data_121 = { .pdu = send_data_121, .pdu_len = sizeof(send_data_121), .qualifier = STK_SEND_DATA_STORE_DATA, .dst = STK_DEVICE_IDENTITY_TYPE_CHANNEL_1, .data = { .array = (unsigned char[200]) { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, }, .len = 200, }, }; static unsigned char send_data_211[] = { 0xD0, 0x26, 0x81, 0x03, 0x01, 0x43, 0x01, 0x82, 0x02, 0x81, 0x21, 0x85, 0x0B, 0x53, 0x65, 0x6E, 0x64, 0x20, 0x44, 0x61, 0x74, 0x61, 0x20, 0x31, 0xB6, 0x08, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0xD0, 0x04, 0x00, 0x0B, 0x00, 0xB4, }; static struct send_data_test send_data_data_211 = { .pdu = send_data_211, .pdu_len = sizeof(send_data_211), .qualifier = STK_SEND_DATA_IMMEDIATELY, .dst = STK_DEVICE_IDENTITY_TYPE_CHANNEL_1, .alpha_id = "Send Data 1", .data = { .array = (unsigned char[8]) { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 }, .len = 8, }, .text_attr = { .len = 4, .attributes = { 0x00, 0x0B, 0x00, 0xB4 } }, }; static void test_send_data(gconstpointer data) { const struct send_data_test *test = data; struct stk_command *command; command = stk_command_new_from_pdu(test->pdu, test->pdu_len); g_assert(command); g_assert(command->status == STK_PARSE_RESULT_OK); g_assert(command->number == 1); g_assert(command->type == STK_COMMAND_TYPE_SEND_DATA); g_assert(command->qualifier == test->qualifier); g_assert(command->src == STK_DEVICE_IDENTITY_TYPE_UICC); g_assert(command->dst == test->dst); check_alpha_id(command->send_data.alpha_id, test->alpha_id); check_icon_id(&command->send_data.icon_id, &test->icon_id); check_channel_data(&command->send_data.data, &test->data); check_text_attr(&command->send_data.text_attr, &test->text_attr); check_frame_id(&command->send_data.frame_id, &test->frame_id); stk_command_free(command); } struct get_channel_status_test { const unsigned char *pdu; unsigned int pdu_len; unsigned char qualifier; }; static unsigned char get_channel_status_111[] = { 0xD0, 0x09, 0x81, 0x03, 0x01, 0x44, 0x00, 0x82, 0x02, 0x81, 0x82 }; static struct get_channel_status_test get_channel_status_data_111 = { .pdu = get_channel_status_111, .pdu_len = sizeof(get_channel_status_111), .qualifier = 0x00, }; static void test_get_channel_status(gconstpointer data) { const struct get_channel_status_test *test = data; struct stk_command *command; command = stk_command_new_from_pdu(test->pdu, test->pdu_len); g_assert(command); g_assert(command->status == STK_PARSE_RESULT_OK); g_assert(command->number == 1); g_assert(command->type == STK_COMMAND_TYPE_GET_CHANNEL_STATUS); g_assert(command->qualifier == test->qualifier); g_assert(command->src == STK_DEVICE_IDENTITY_TYPE_UICC); g_assert(command->dst == STK_DEVICE_IDENTITY_TYPE_TERMINAL); stk_command_free(command); } struct terminal_response_test { const unsigned char *pdu; unsigned int pdu_len; struct stk_response response; }; static void test_terminal_response_encoding(gconstpointer data) { const struct terminal_response_test *test = data; const unsigned char *pdu; unsigned int pdu_len; pdu = stk_pdu_from_response(&test->response, &pdu_len); if (test->pdu) g_assert(pdu); else g_assert(pdu == NULL); g_assert(pdu_len == test->pdu_len); g_assert(memcmp(pdu, test->pdu, pdu_len) == 0); } static const struct terminal_response_test display_text_response_data_111 = { .pdu = display_text_response_111, .pdu_len = sizeof(display_text_response_111), .response = { .number = 1, .type = STK_COMMAND_TYPE_DISPLAY_TEXT, .qualifier = 0x80, /* Wait for user to clear */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, }, }; static const struct terminal_response_test display_text_response_data_121 = { .pdu = display_text_response_121, .pdu_len = sizeof(display_text_response_121), .response = { .number = 1, .type = STK_COMMAND_TYPE_DISPLAY_TEXT, .qualifier = 0x80, /* Wait for user to clear */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_TERMINAL_BUSY, .additional_len = 1, /* Screen is busy */ .additional = (unsigned char *) "\1", }, }, }; static const struct terminal_response_test display_text_response_data_131 = { .pdu = display_text_response_131, .pdu_len = sizeof(display_text_response_131), .response = { .number = 1, .type = STK_COMMAND_TYPE_DISPLAY_TEXT, .qualifier = 0x81, /* Wait for user to clear, High priority */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, }, }; static const struct terminal_response_test display_text_response_data_151 = { .pdu = display_text_response_151, .pdu_len = sizeof(display_text_response_151), .response = { .number = 1, .type = STK_COMMAND_TYPE_DISPLAY_TEXT, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, }, }; static const struct terminal_response_test display_text_response_data_171 = { .pdu = display_text_response_171, .pdu_len = sizeof(display_text_response_171), .response = { .number = 1, .type = STK_COMMAND_TYPE_DISPLAY_TEXT, .qualifier = 0x80, /* Wait for user to clear */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_GO_BACK, }, }, }; static const struct terminal_response_test display_text_response_data_181 = { .pdu = display_text_response_181, .pdu_len = sizeof(display_text_response_181), .response = { .number = 1, .type = STK_COMMAND_TYPE_DISPLAY_TEXT, .qualifier = 0x80, /* Wait for user to clear */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_USER_TERMINATED, }, }, }; static const struct terminal_response_test display_text_response_data_191 = { .pdu = display_text_response_191, .pdu_len = sizeof(display_text_response_191), .response = { .number = 1, .type = STK_COMMAND_TYPE_DISPLAY_TEXT, .qualifier = 0x80, /* Wait for user to clear */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_DATA_NOT_UNDERSTOOD, }, }, }; static const struct terminal_response_test display_text_response_data_211 = { .pdu = display_text_response_211, .pdu_len = sizeof(display_text_response_211), .response = { .number = 1, .type = STK_COMMAND_TYPE_DISPLAY_TEXT, .qualifier = 0x80, /* Wait for user to clear */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_NO_RESPONSE, }, }, }; static const struct terminal_response_test display_text_response_data_511b = { .pdu = display_text_response_511b, .pdu_len = sizeof(display_text_response_511b), .response = { .number = 1, .type = STK_COMMAND_TYPE_DISPLAY_TEXT, .qualifier = 0x80, /* Wait for user to clear */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_NO_ICON, }, }, }; static const struct terminal_response_test get_inkey_response_data_111 = { .pdu = get_inkey_response_111, .pdu_len = sizeof(get_inkey_response_111), .response = { .number = 1, .type = STK_COMMAND_TYPE_GET_INKEY, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .get_inkey = { .text = { .text = "+", }, }}, }, }; static const struct terminal_response_test get_inkey_response_data_121 = { .pdu = get_inkey_response_121, .pdu_len = sizeof(get_inkey_response_121), .response = { .number = 1, .type = STK_COMMAND_TYPE_GET_INKEY, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .get_inkey = { .text = { .text = "0", }, }}, }, }; static const struct terminal_response_test get_inkey_response_data_131 = { .pdu = get_inkey_response_131, .pdu_len = sizeof(get_inkey_response_131), .response = { .number = 1, .type = STK_COMMAND_TYPE_GET_INKEY, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_GO_BACK, }, }, }; static const struct terminal_response_test get_inkey_response_data_141 = { .pdu = get_inkey_response_141, .pdu_len = sizeof(get_inkey_response_141), .response = { .number = 1, .type = STK_COMMAND_TYPE_GET_INKEY, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_USER_TERMINATED, }, }, }; static const struct terminal_response_test get_inkey_response_data_151 = { .pdu = get_inkey_response_151, .pdu_len = sizeof(get_inkey_response_151), .response = { .number = 1, .type = STK_COMMAND_TYPE_GET_INKEY, .qualifier = 0x01, /* SMS alphabet */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .get_inkey = { .text = { .text = "q", }, }}, }, }; static const struct terminal_response_test get_inkey_response_data_161 = { .pdu = get_inkey_response_161, .pdu_len = sizeof(get_inkey_response_161), .response = { .number = 1, .type = STK_COMMAND_TYPE_GET_INKEY, .qualifier = 0x01, /* SMS alphabet */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .get_inkey = { .text = { .text = "x", }, }}, }, }; static const struct terminal_response_test get_inkey_response_data_211 = { .pdu = get_inkey_response_211, .pdu_len = sizeof(get_inkey_response_211), .response = { .number = 1, .type = STK_COMMAND_TYPE_GET_INKEY, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_NO_RESPONSE, }, }, }; static const struct terminal_response_test get_inkey_response_data_411 = { .pdu = get_inkey_response_411, .pdu_len = sizeof(get_inkey_response_411), .response = { .number = 1, .type = STK_COMMAND_TYPE_GET_INKEY, .qualifier = 0x03, /* UCS2 alphabet */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .get_inkey = { .text = { .text = "Д", }, }}, }, }; static const struct terminal_response_test get_inkey_response_data_511 = { .pdu = get_inkey_response_511, .pdu_len = sizeof(get_inkey_response_511), .response = { .number = 1, .type = STK_COMMAND_TYPE_GET_INKEY, .qualifier = 0x04, /* Yes/No response */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .get_inkey = { .text = { .text = "Yes", .yesno = TRUE, }, }}, }, }; static const struct terminal_response_test get_inkey_response_data_512 = { .pdu = get_inkey_response_512, .pdu_len = sizeof(get_inkey_response_512), .response = { .number = 1, .type = STK_COMMAND_TYPE_GET_INKEY, .qualifier = 0x04, /* Yes/No response */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .get_inkey = { .text = { .text = NULL, .yesno = TRUE, }, }}, }, }; static const unsigned char get_inkey_response_611b[] = { 0x81, 0x03, 0x01, 0x22, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x04, 0x8d, 0x02, 0x04, 0x2b, }; static const struct terminal_response_test get_inkey_response_data_611b = { .pdu = get_inkey_response_611b, .pdu_len = sizeof(get_inkey_response_611b), .response = { .number = 1, .type = STK_COMMAND_TYPE_GET_INKEY, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_NO_ICON, }, { .get_inkey = { .text = { .text = "+", }, }}, }, }; static const unsigned char get_inkey_response_711[] = { 0x81, 0x03, 0x01, 0x22, 0x80, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x13, }; static const struct terminal_response_test get_inkey_response_data_711 = { .pdu = get_inkey_response_711, .pdu_len = sizeof(get_inkey_response_711), .response = { .number = 1, .type = STK_COMMAND_TYPE_GET_INKEY, .qualifier = 0x80, /* Help information available */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_HELP_REQUESTED, }, }, }; static const unsigned char get_inkey_response_712[] = { 0x81, 0x03, 0x01, 0x22, 0x80, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0x8d, 0x02, 0x04, 0x2b, }; static const struct terminal_response_test get_inkey_response_data_712 = { .pdu = get_inkey_response_712, .pdu_len = sizeof(get_inkey_response_712), .response = { .number = 1, .type = STK_COMMAND_TYPE_GET_INKEY, .qualifier = 0x80, /* Help information available */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .get_inkey = { .text = { .text = "+", }, }}, }, }; static const struct terminal_response_test get_inkey_response_data_811 = { .pdu = get_inkey_response_811, .pdu_len = sizeof(get_inkey_response_811), .response = { .number = 1, .type = STK_COMMAND_TYPE_GET_INKEY, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_NO_RESPONSE, }, { .get_inkey = { .duration = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 11, }, }}, }, }; static const unsigned char get_inkey_response_912[] = { 0x81, 0x03, 0x01, 0x22, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0x8d, 0x02, 0x04, 0x23, }; static const struct terminal_response_test get_inkey_response_data_912 = { .pdu = get_inkey_response_912, .pdu_len = sizeof(get_inkey_response_912), .response = { .number = 1, .type = STK_COMMAND_TYPE_GET_INKEY, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .get_inkey = { .text = { .text = "#", }, }}, }, }; static const struct terminal_response_test get_inkey_response_data_1111 = { .pdu = get_inkey_response_1111, .pdu_len = sizeof(get_inkey_response_1111), .response = { .number = 1, .type = STK_COMMAND_TYPE_GET_INKEY, .qualifier = 0x03, /* UCS2 alphabet */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .get_inkey = { .text = { .text = "好", }, }}, }, }; static const struct terminal_response_test get_inkey_response_data_1311 = { .pdu = get_inkey_response_1311, .pdu_len = sizeof(get_inkey_response_1311), .response = { .number = 1, .type = STK_COMMAND_TYPE_GET_INKEY, .qualifier = 0x03, /* UCS2 alphabet */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .get_inkey = { .text = { .text = "ル", }, }}, }, }; static const struct terminal_response_test get_input_response_data_111 = { .pdu = get_input_response_111, .pdu_len = sizeof(get_input_response_111), .response = { .number = 1, .type = STK_COMMAND_TYPE_GET_INPUT, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .get_input = { .text = { .text = "12345", }, }}, }, }; static const struct terminal_response_test get_input_response_data_121 = { .pdu = get_input_response_121, .pdu_len = sizeof(get_input_response_121), .response = { .number = 1, .type = STK_COMMAND_TYPE_GET_INPUT, .qualifier = 0x08, /* Input is packed */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .get_input = { .text = { .text = "67*#+", .packed = TRUE, }, }}, }, }; static const struct terminal_response_test get_input_response_data_131 = { .pdu = get_input_response_131, .pdu_len = sizeof(get_input_response_131), .response = { .number = 1, .type = STK_COMMAND_TYPE_GET_INPUT, .qualifier = 0x01, /* Allow all SMS characters */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .get_input = { .text = { .text = "AbCdE", }, }}, }, }; static const struct terminal_response_test get_input_response_data_141 = { .pdu = get_input_response_141, .pdu_len = sizeof(get_input_response_141), .response = { .number = 1, .type = STK_COMMAND_TYPE_GET_INPUT, .qualifier = 0x04, /* Hide text */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .get_input = { .text = { .text = "2345678", }, }}, }, }; static const struct terminal_response_test get_input_response_data_151 = { .pdu = get_input_response_151, .pdu_len = sizeof(get_input_response_151), .response = { .number = 1, .type = STK_COMMAND_TYPE_GET_INPUT, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .get_input = { .text = { .text = "12345678901234567890", }, }}, }, }; static const struct terminal_response_test get_input_response_data_161 = { .pdu = get_input_response_161, .pdu_len = sizeof(get_input_response_161), .response = { .number = 1, .type = STK_COMMAND_TYPE_GET_INPUT, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_GO_BACK, }, }, }; static const struct terminal_response_test get_input_response_data_171 = { .pdu = get_input_response_171, .pdu_len = sizeof(get_input_response_171), .response = { .number = 1, .type = STK_COMMAND_TYPE_GET_INPUT, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_USER_TERMINATED, }, }, }; static const struct terminal_response_test get_input_response_data_181 = { .pdu = get_input_response_181, .pdu_len = sizeof(get_input_response_181), .response = { .number = 1, .type = STK_COMMAND_TYPE_GET_INPUT, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .get_input = { .text = { .text = "***1111111111###***2222222222###" "***3333333333###***4444444444###" "***5555555555###***6666666666###" "***7777777777###***8888888888###" "***9999999999###***0000000000###", }, }}, }, }; static const unsigned char get_input_response_191b[] = { 0x81, 0x03, 0x01, 0x23, 0x01, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0x8d, 0x00, }; static const struct terminal_response_test get_input_response_data_191 = { /* Either get_input_response_191a or get_input_response_191b is ok */ .pdu = get_input_response_191a, .pdu_len = sizeof(get_input_response_191a), .response = { .number = 1, .type = STK_COMMAND_TYPE_GET_INPUT, .qualifier = 0x00, /* Allow all SMS characters */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .get_input = { .text = { .text = "", }, }}, }, }; static const struct terminal_response_test get_input_response_data_211 = { .pdu = get_input_response_211, .pdu_len = sizeof(get_input_response_211), .response = { .number = 1, .type = STK_COMMAND_TYPE_GET_INPUT, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_NO_RESPONSE, }, }, }; static const struct terminal_response_test get_input_response_data_311 = { .pdu = get_input_response_311, .pdu_len = sizeof(get_input_response_311), .response = { .number = 1, .type = STK_COMMAND_TYPE_GET_INPUT, .qualifier = 0x01, /* Allow all SMS characters */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .get_input = { .text = { .text = "HELLO", }, }}, }, }; static const struct terminal_response_test get_input_response_data_411 = { .pdu = get_input_response_411, .pdu_len = sizeof(get_input_response_411), .response = { .number = 1, .type = STK_COMMAND_TYPE_GET_INPUT, .qualifier = 0x03, /* Allow all UCS2 characters */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .get_input = { .text = { .text = "ЗДРАВСТВУЙТЕ", }, }}, }, }; static const struct terminal_response_test get_input_response_data_421 = { .pdu = get_input_response_421, .pdu_len = sizeof(get_input_response_421), .response = { .number = 1, .type = STK_COMMAND_TYPE_GET_INPUT, .qualifier = 0x03, /* Allow all UCS2 characters */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .get_input = { .text = { .text = "ЗДРАВСТВУЙТЕЗДРАВСТВУЙТЕ" "ЗДРАВСТВУЙТЕЗДРАВСТВУЙТЕ" "ЗДРАВСТВУЙТЕЗДРАВСТВУЙ", }, }}, }, }; static const struct terminal_response_test get_input_response_data_611a = { .pdu = get_input_response_611a, .pdu_len = sizeof(get_input_response_611a), .response = { .number = 1, .type = STK_COMMAND_TYPE_GET_INPUT, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .get_input = { .text = { .text = "+", }, }}, }, }; static const unsigned char get_input_response_611b[] = { 0x81, 0x03, 0x01, 0x23, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x04, 0x8d, 0x02, 0x04, 0x2b, }; static const struct terminal_response_test get_input_response_data_611b = { .pdu = get_input_response_611b, .pdu_len = sizeof(get_input_response_611b), .response = { .number = 1, .type = STK_COMMAND_TYPE_GET_INPUT, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_NO_ICON, }, { .get_input = { .text = { .text = "+", }, }}, }, }; static const unsigned char get_input_response_711[] = { 0x81, 0x03, 0x01, 0x23, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x13, }; static const struct terminal_response_test get_input_response_data_711 = { .pdu = get_input_response_711, .pdu_len = sizeof(get_input_response_711), .response = { .number = 1, .type = STK_COMMAND_TYPE_GET_INPUT, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_HELP_REQUESTED, }, }, }; static const unsigned char get_input_response_812[] = { 0x81, 0x03, 0x01, 0x23, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0x8d, 0x06, 0x04, 0x32, 0x32, 0x32, 0x32, 0x32, }; static const struct terminal_response_test get_input_response_data_812 = { .pdu = get_input_response_812, .pdu_len = sizeof(get_input_response_812), .response = { .number = 1, .type = STK_COMMAND_TYPE_GET_INPUT, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .get_input = { .text = { .text = "22222", }, }}, }, }; static const unsigned char get_input_response_843[] = { 0x81, 0x03, 0x01, 0x23, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0x8d, 0x06, 0x04, 0x33, 0x33, 0x33, 0x33, 0x33, }; static const struct terminal_response_test get_input_response_data_843 = { .pdu = get_input_response_843, .pdu_len = sizeof(get_input_response_843), .response = { .number = 1, .type = STK_COMMAND_TYPE_GET_INPUT, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .get_input = { .text = { .text = "33333", }, }}, }, }; static const struct terminal_response_test get_input_response_data_1011 = { .pdu = get_input_response_1011, .pdu_len = sizeof(get_input_response_1011), .response = { .number = 1, .type = STK_COMMAND_TYPE_GET_INPUT, .qualifier = 0x03, /* Allow all UCS2 characters */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .get_input = { .text = { .text = "你好", }, }}, }, }; static const struct terminal_response_test get_input_response_data_1021 = { .pdu = get_input_response_1021, .pdu_len = sizeof(get_input_response_1021), .response = { .number = 1, .type = STK_COMMAND_TYPE_GET_INPUT, .qualifier = 0x03, /* Allow all UCS2 characters */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .get_input = { .text = { .text = "你好你好你好你好你好你好" "你好你好你好你好你好你好" "你好你好你好你好你好你好" "你好你好你好你好你好你好" "你好你好你好你好你好你好" "你好你好你好你好你好", }, }}, }, }; static const struct terminal_response_test get_input_response_data_1211 = { .pdu = get_input_response_1211, .pdu_len = sizeof(get_input_response_1211), .response = { .number = 1, .type = STK_COMMAND_TYPE_GET_INPUT, .qualifier = 0x03, /* Allow all UCS2 characters */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .get_input = { .text = { .text = "ルル", }, }}, }, }; static const struct terminal_response_test get_input_response_data_1221 = { .pdu = get_input_response_1221, .pdu_len = sizeof(get_input_response_1221), .response = { .number = 1, .type = STK_COMMAND_TYPE_GET_INPUT, .qualifier = 0x03, /* Allow all UCS2 characters */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .get_input = { .text = { .text = "ルルルルルルルルルルルル" "ルルルルルルルルルルルル" "ルルルルルルルルルルルル" "ルルルルルルルルルルルル" "ルルルルルルルルルルルル" "ルルルルルルルルルル", }, }}, }, }; static const struct terminal_response_test more_time_response_data_111 = { .pdu = more_time_response_111, .pdu_len = sizeof(more_time_response_111), .response = { .number = 1, .type = STK_COMMAND_TYPE_MORE_TIME, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, }, }; static const unsigned char send_sms_response_111[] = { 0x81, 0x03, 0x01, 0x13, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, }; static const struct terminal_response_test send_sms_response_data_111 = { .pdu = send_sms_response_111, .pdu_len = sizeof(send_sms_response_111), .response = { .number = 1, .type = STK_COMMAND_TYPE_SEND_SMS, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, }, }; static const unsigned char send_sms_response_121[] = { 0x81, 0x03, 0x01, 0x13, 0x01, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, }; static const struct terminal_response_test send_sms_response_data_121 = { .pdu = send_sms_response_121, .pdu_len = sizeof(send_sms_response_121), .response = { .number = 1, .type = STK_COMMAND_TYPE_SEND_SMS, .qualifier = 0x01, /* Packing required */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, }, }; static const unsigned char send_sms_response_311b[] = { 0x81, 0x03, 0x01, 0x13, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x04, }; static const struct terminal_response_test send_sms_response_data_311b = { .pdu = send_sms_response_311b, .pdu_len = sizeof(send_sms_response_311b), .response = { .number = 1, .type = STK_COMMAND_TYPE_SEND_SMS, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_NO_ICON, }, }, }; static const struct terminal_response_test play_tone_response_data_111 = { .pdu = play_tone_response_111, .pdu_len = sizeof(play_tone_response_111), .response = { .number = 1, .type = STK_COMMAND_TYPE_PLAY_TONE, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, }, }; static const unsigned char play_tone_response_119b[] = { 0x81, 0x03, 0x01, 0x20, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x30, }; static const struct terminal_response_test play_tone_response_data_119b = { .pdu = play_tone_response_119b, .pdu_len = sizeof(play_tone_response_119b), .response = { .number = 1, .type = STK_COMMAND_TYPE_PLAY_TONE, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_NOT_CAPABLE, }, }, }; static const struct terminal_response_test play_tone_response_data_1114 = { .pdu = play_tone_response_1114, .pdu_len = sizeof(play_tone_response_1114), .response = { .number = 1, .type = STK_COMMAND_TYPE_PLAY_TONE, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_USER_TERMINATED, }, }, }; static const unsigned char play_tone_response_311b[] = { 0x81, 0x03, 0x01, 0x20, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x04, }; static const struct terminal_response_test play_tone_response_data_311b = { .pdu = play_tone_response_311b, .pdu_len = sizeof(play_tone_response_311b), .response = { .number = 1, .type = STK_COMMAND_TYPE_PLAY_TONE, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_NO_ICON, }, }, }; static const struct terminal_response_test poll_interval_response_data_111 = { .pdu = poll_interval_response_111, .pdu_len = sizeof(poll_interval_response_111), .response = { .number = 1, .type = STK_COMMAND_TYPE_POLL_INTERVAL, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .poll_interval = { .max_interval = { .unit = STK_DURATION_TYPE_SECONDS, .interval = 20, }, }}, }, }; /* 3GPP TS 31.124 */ static const unsigned char poll_interval_response_111a[] = { 0x81, 0x03, 0x01, 0x03, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0x84, 0x02, 0x00, 0x01, }; static const unsigned char poll_interval_response_111b[] = { 0x81, 0x03, 0x01, 0x03, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0x84, 0x02, 0x01, 0x3c, }; static const struct terminal_response_test poll_interval_response_data_111a = { /* Either poll_interval_response_111a or b is ok */ .pdu = poll_interval_response_111a, .pdu_len = sizeof(poll_interval_response_111a), .response = { .number = 1, .type = STK_COMMAND_TYPE_POLL_INTERVAL, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .poll_interval = { .max_interval = { .unit = STK_DURATION_TYPE_MINUTES, .interval = 1, }, }}, }, }; static const unsigned char refresh_response_111a[] = { 0x81, 0x03, 0x01, 0x01, 0x03, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, }; static const struct terminal_response_test refresh_response_data_111a = { .pdu = refresh_response_111a, .pdu_len = sizeof(refresh_response_111a), .response = { .number = 1, .type = STK_COMMAND_TYPE_REFRESH, .qualifier = 0x03, /* USIM Initialization */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, }, }; static const unsigned char refresh_response_111b[] = { 0x81, 0x03, 0x01, 0x01, 0x03, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x03, }; static const struct terminal_response_test refresh_response_data_111b = { .pdu = refresh_response_111b, .pdu_len = sizeof(refresh_response_111b), .response = { .number = 1, .type = STK_COMMAND_TYPE_REFRESH, .qualifier = 0x03, /* USIM Initialization */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_REFRESH_WITH_EFS, }, }, }; static const unsigned char refresh_response_121a[] = { 0x81, 0x03, 0x01, 0x01, 0x01, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, }; static const struct terminal_response_test refresh_response_data_121a = { .pdu = refresh_response_121a, .pdu_len = sizeof(refresh_response_121a), .response = { .number = 1, .type = STK_COMMAND_TYPE_REFRESH, .qualifier = 0x01, /* File Change Notification */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, }, }; static const unsigned char refresh_response_121b[] = { 0x81, 0x03, 0x01, 0x01, 0x01, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x03, }; static const struct terminal_response_test refresh_response_data_121b = { .pdu = refresh_response_121b, .pdu_len = sizeof(refresh_response_121b), .response = { .number = 1, .type = STK_COMMAND_TYPE_REFRESH, .qualifier = 0x01, /* File Change Notification */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_REFRESH_WITH_EFS, }, }, }; static const unsigned char refresh_response_131a[] = { 0x81, 0x03, 0x01, 0x01, 0x02, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, }; static const struct terminal_response_test refresh_response_data_131a = { .pdu = refresh_response_131a, .pdu_len = sizeof(refresh_response_131a), .response = { .number = 1, .type = STK_COMMAND_TYPE_REFRESH, .qualifier = 0x02, /* USIM Initialization & File Change */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, }, }; static const unsigned char refresh_response_131b[] = { 0x81, 0x03, 0x01, 0x01, 0x02, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x03, }; static const struct terminal_response_test refresh_response_data_131b = { .pdu = refresh_response_131b, .pdu_len = sizeof(refresh_response_131b), .response = { .number = 1, .type = STK_COMMAND_TYPE_REFRESH, .qualifier = 0x02, /* USIM Initialization & File Change */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_REFRESH_WITH_EFS, }, }, }; static const unsigned char refresh_response_141a[] = { 0x81, 0x03, 0x01, 0x01, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, }; static const struct terminal_response_test refresh_response_data_141a = { .pdu = refresh_response_141a, .pdu_len = sizeof(refresh_response_141a), .response = { .number = 1, .type = STK_COMMAND_TYPE_REFRESH, .qualifier = 0x00, /* USIM Initialization & Full File Change */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, }, }; static const unsigned char refresh_response_141b[] = { 0x81, 0x03, 0x01, 0x01, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x03, }; static const struct terminal_response_test refresh_response_data_141b = { .pdu = refresh_response_141b, .pdu_len = sizeof(refresh_response_141b), .response = { .number = 1, .type = STK_COMMAND_TYPE_REFRESH, .qualifier = 0x00, /* USIM Initialization & Full File Change */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_REFRESH_WITH_EFS, }, }, }; static const unsigned char refresh_response_171[] = { 0x81, 0x03, 0x01, 0x01, 0x05, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, }; static const struct terminal_response_test refresh_response_data_171 = { .pdu = refresh_response_171, .pdu_len = sizeof(refresh_response_171), .response = { .number = 1, .type = STK_COMMAND_TYPE_REFRESH, .qualifier = 0x05, /* USIM Application Reset */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, }, }; static const unsigned char refresh_response_241a[] = { 0x81, 0x03, 0x01, 0x01, 0x06, 0x82, 0x02, 0x82, 0x81, 0x83, 0x02, 0x20, 0x02, }; static const struct terminal_response_test refresh_response_data_241a = { .pdu = refresh_response_241a, .pdu_len = sizeof(refresh_response_241a), .response = { .number = 1, .type = STK_COMMAND_TYPE_REFRESH, .qualifier = 0x06, /* 3G Session Reset */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_TERMINAL_BUSY, .additional_len = 1, /* ME currently busy on call */ .additional = (unsigned char *) "\2", }, }, }; static const unsigned char refresh_response_241b[] = { 0x81, 0x03, 0x01, 0x01, 0x06, 0x82, 0x02, 0x82, 0x81, 0x83, 0x02, 0x20, 0x01, }; static const struct terminal_response_test refresh_response_data_241b = { .pdu = refresh_response_241b, .pdu_len = sizeof(refresh_response_241b), .response = { .number = 1, .type = STK_COMMAND_TYPE_REFRESH, .qualifier = 0x06, /* 3G Session Reset */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_TERMINAL_BUSY, .additional_len = 1, /* Screen is busy */ .additional = (unsigned char *) "\1", }, }, }; static const unsigned char refresh_response_311[] = { 0x81, 0x03, 0x01, 0x01, 0x07, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x20, }; static const struct terminal_response_test refresh_response_data_311 = { .pdu = refresh_response_311, .pdu_len = sizeof(refresh_response_311), .response = { .number = 1, .type = STK_COMMAND_TYPE_REFRESH, .qualifier = 0x07, /* Steering of roaming */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_TERMINAL_BUSY, }, }, }; static const unsigned char refresh_response_312[] = { 0x81, 0x03, 0x01, 0x01, 0x07, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, }; static const struct terminal_response_test refresh_response_data_312 = { .pdu = refresh_response_312, .pdu_len = sizeof(refresh_response_312), .response = { .number = 1, .type = STK_COMMAND_TYPE_REFRESH, .qualifier = 0x07, /* Steering of roaming */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, }, }; static const unsigned char set_up_menu_response_111[] = { 0x81, 0x03, 0x01, 0x25, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, }; static const struct terminal_response_test set_up_menu_response_data_111 = { .pdu = set_up_menu_response_111, .pdu_len = sizeof(set_up_menu_response_111), .response = { .number = 1, .type = STK_COMMAND_TYPE_SETUP_MENU, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, }, }; static const unsigned char set_up_menu_response_411b[] = { 0x81, 0x03, 0x01, 0x25, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x04, }; static const struct terminal_response_test set_up_menu_response_data_411b = { .pdu = set_up_menu_response_411b, .pdu_len = sizeof(set_up_menu_response_411b), .response = { .number = 1, .type = STK_COMMAND_TYPE_SETUP_MENU, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_NO_ICON, }, }, }; static const unsigned char set_up_menu_response_511[] = { 0x81, 0x03, 0x01, 0x25, 0x01, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, }; static const struct terminal_response_test set_up_menu_response_data_511 = { .pdu = set_up_menu_response_511, .pdu_len = sizeof(set_up_menu_response_511), .response = { .number = 1, .type = STK_COMMAND_TYPE_SETUP_MENU, .qualifier = 0x01, /* Soft key selection preferred */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, }, }; static const unsigned char select_item_response_111[] = { 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0x90, 0x01, 0x02, }; static const struct terminal_response_test select_item_response_data_111 = { .pdu = select_item_response_111, .pdu_len = sizeof(select_item_response_111), .response = { .number = 1, .type = STK_COMMAND_TYPE_SELECT_ITEM, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .select_item = { .item_id = 2, }}, }, }; static const unsigned char select_item_response_121[] = { 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0x90, 0x01, 0x3d, }; static const struct terminal_response_test select_item_response_data_121 = { .pdu = select_item_response_121, .pdu_len = sizeof(select_item_response_121), .response = { .number = 1, .type = STK_COMMAND_TYPE_SELECT_ITEM, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .select_item = { .item_id = 61, }}, }, }; static const unsigned char select_item_response_131[] = { 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0x90, 0x01, 0xfb, }; static const struct terminal_response_test select_item_response_data_131 = { .pdu = select_item_response_131, .pdu_len = sizeof(select_item_response_131), .response = { .number = 1, .type = STK_COMMAND_TYPE_SELECT_ITEM, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .select_item = { .item_id = 251, }}, }, }; static const unsigned char select_item_response_141[] = { 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x11, }; static const struct terminal_response_test select_item_response_data_141 = { /* The response can be select_item_response_141 or it can optionally * have an ITEM_ID data object appended with any id (90 01 XX). */ .pdu = select_item_response_141, .pdu_len = sizeof(select_item_response_141), .response = { .number = 1, .type = STK_COMMAND_TYPE_SELECT_ITEM, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_GO_BACK, }, }, }; static const unsigned char select_item_response_142[] = { 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x10, }; static const struct terminal_response_test select_item_response_data_142 = { /* The response can be select_item_response_142 or it can optionally * have an ITEM_ID data object appended with any id (90 01 XX). */ .pdu = select_item_response_142, .pdu_len = sizeof(select_item_response_142), .response = { .number = 1, .type = STK_COMMAND_TYPE_SELECT_ITEM, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_USER_TERMINATED, }, }, }; static const unsigned char select_item_response_151[] = { 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0x90, 0x01, 0x01, }; static const struct terminal_response_test select_item_response_data_151 = { .pdu = select_item_response_151, .pdu_len = sizeof(select_item_response_151), .response = { .number = 1, .type = STK_COMMAND_TYPE_SELECT_ITEM, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .select_item = { .item_id = 1, }}, }, }; static const unsigned char select_item_response_311[] = { 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0x90, 0x01, 0x03, }; static const struct terminal_response_test select_item_response_data_311 = { .pdu = select_item_response_311, .pdu_len = sizeof(select_item_response_311), .response = { .number = 1, .type = STK_COMMAND_TYPE_SELECT_ITEM, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .select_item = { .item_id = 3, }}, }, }; static const unsigned char select_item_response_411[] = { 0x81, 0x03, 0x01, 0x24, 0x80, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x13, 0x90, 0x01, 0x01, }; static const struct terminal_response_test select_item_response_data_411 = { .pdu = select_item_response_411, .pdu_len = sizeof(select_item_response_411), .response = { .number = 1, .type = STK_COMMAND_TYPE_SELECT_ITEM, .qualifier = 0x80, /* Help information available */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_HELP_REQUESTED, }, { .select_item = { .item_id = 1, }}, }, }; static const unsigned char select_item_response_511b[] = { 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x04, 0x90, 0x01, 0x01, }; static const struct terminal_response_test select_item_response_data_511b = { .pdu = select_item_response_511b, .pdu_len = sizeof(select_item_response_511b), .response = { .number = 1, .type = STK_COMMAND_TYPE_SELECT_ITEM, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_NO_ICON, }, { .select_item = { .item_id = 1, }}, }, }; static const unsigned char select_item_response_611[] = { 0x81, 0x03, 0x01, 0x24, 0x03, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0x90, 0x01, 0x01, }; static const struct terminal_response_test select_item_response_data_611 = { .pdu = select_item_response_611, .pdu_len = sizeof(select_item_response_611), .response = { .number = 1, .type = STK_COMMAND_TYPE_SELECT_ITEM, .qualifier = 0x03, /* Choice of navigation options */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .select_item = { .item_id = 1, }}, }, }; static const unsigned char select_item_response_621[] = { 0x81, 0x03, 0x01, 0x24, 0x01, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0x90, 0x01, 0x01, }; static const struct terminal_response_test select_item_response_data_621 = { .pdu = select_item_response_621, .pdu_len = sizeof(select_item_response_621), .response = { .number = 1, .type = STK_COMMAND_TYPE_SELECT_ITEM, .qualifier = 0x01, /* Choice of data values presentation */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .select_item = { .item_id = 1, }}, }, }; static const unsigned char select_item_response_711[] = { 0x81, 0x03, 0x01, 0x24, 0x04, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0x90, 0x01, 0x01, }; static const struct terminal_response_test select_item_response_data_711 = { .pdu = select_item_response_711, .pdu_len = sizeof(select_item_response_711), .response = { .number = 1, .type = STK_COMMAND_TYPE_SELECT_ITEM, .qualifier = 0x04, /* Selection using soft keys preferred */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .select_item = { .item_id = 1, }}, }, }; static const unsigned char select_item_response_811[] = { 0x81, 0x03, 0x01, 0x24, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x12, }; static const struct terminal_response_test select_item_response_data_811 = { .pdu = select_item_response_811, .pdu_len = sizeof(select_item_response_811), .response = { .number = 1, .type = STK_COMMAND_TYPE_SELECT_ITEM, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_NO_RESPONSE, }, }, }; static const unsigned char set_up_call_response_111[] = { 0x81, 0x03, 0x01, 0x10, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, }; static const struct terminal_response_test set_up_call_response_data_111 = { .pdu = set_up_call_response_111, .pdu_len = sizeof(set_up_call_response_111), .response = { .number = 1, .type = STK_COMMAND_TYPE_SETUP_CALL, .qualifier = 0x00, /* Only if not busy on another call */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, }, }; static const unsigned char set_up_call_response_121[] = { 0x81, 0x03, 0x01, 0x10, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x22, }; static const struct terminal_response_test set_up_call_response_data_121 = { .pdu = set_up_call_response_121, .pdu_len = sizeof(set_up_call_response_121), .response = { .number = 1, .type = STK_COMMAND_TYPE_SETUP_CALL, .qualifier = 0x00, /* Only if not busy on another call */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_USER_REJECT, }, }, }; static const unsigned char set_up_call_response_141[] = { 0x81, 0x03, 0x01, 0x10, 0x02, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, }; static const struct terminal_response_test set_up_call_response_data_141 = { .pdu = set_up_call_response_141, .pdu_len = sizeof(set_up_call_response_141), .response = { .number = 1, .type = STK_COMMAND_TYPE_SETUP_CALL, .qualifier = 0x02, /* Put all other calls on hold */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, }, }; static const unsigned char set_up_call_response_151[] = { 0x81, 0x03, 0x01, 0x10, 0x04, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, }; static const struct terminal_response_test set_up_call_response_data_151 = { .pdu = set_up_call_response_151, .pdu_len = sizeof(set_up_call_response_151), .response = { .number = 1, .type = STK_COMMAND_TYPE_SETUP_CALL, .qualifier = 0x04, /* Disconnect all other calls */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, }, }; static const unsigned char set_up_call_response_161[] = { 0x81, 0x03, 0x01, 0x10, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x02, 0x20, 0x02, }; static const struct terminal_response_test set_up_call_response_data_161 = { .pdu = set_up_call_response_161, .pdu_len = sizeof(set_up_call_response_161), .response = { .number = 1, .type = STK_COMMAND_TYPE_SETUP_CALL, .qualifier = 0x00, /* Only if not busy on another call */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_TERMINAL_BUSY, .additional_len = 1, /* ME currently busy on call */ .additional = (unsigned char[1]) { 0x02 }, }, }, }; static const unsigned char set_up_call_response_171a[] = { 0x81, 0x03, 0x01, 0x10, 0x02, 0x82, 0x02, 0x82, 0x81, 0x83, 0x02, 0x21, 0x00, }; static const struct terminal_response_test set_up_call_response_data_171a = { .pdu = set_up_call_response_171a, .pdu_len = sizeof(set_up_call_response_171a), .response = { .number = 1, .type = STK_COMMAND_TYPE_SETUP_CALL, .qualifier = 0x02, /* Put all other calls on hold */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_NETWORK_UNAVAILABLE, .additional_len = 1, /* No specific cause given */ .additional = (unsigned char[1]) { 0x00 }, }, }, }; static const unsigned char set_up_call_response_171b[] = { 0x81, 0x03, 0x01, 0x10, 0x02, 0x82, 0x02, 0x82, 0x81, 0x83, 0x02, 0x21, 0x9d, }; static const struct terminal_response_test set_up_call_response_data_171b = { .pdu = set_up_call_response_171b, .pdu_len = sizeof(set_up_call_response_171b), .response = { .number = 1, .type = STK_COMMAND_TYPE_SETUP_CALL, .qualifier = 0x02, /* Put all other calls on hold */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_NETWORK_UNAVAILABLE, .additional_len = 1, /* Facility rejected */ .additional = (unsigned char[1]) { 0x9d }, }, }, }; static const unsigned char set_up_call_response_1101[] = { 0x81, 0x03, 0x01, 0x10, 0x01, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, }; static const struct terminal_response_test set_up_call_response_data_1101 = { .pdu = set_up_call_response_1101, .pdu_len = sizeof(set_up_call_response_1101), .response = { .number = 1, .type = STK_COMMAND_TYPE_SETUP_CALL, .qualifier = 0x01, /* Only if not busy, with redial */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, }, }; static const unsigned char set_up_call_response_1111b[] = { 0x81, 0x03, 0x01, 0x10, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x30, }; static const struct terminal_response_test set_up_call_response_data_1111b = { .pdu = set_up_call_response_1111b, .pdu_len = sizeof(set_up_call_response_1111b), .response = { .number = 1, .type = STK_COMMAND_TYPE_SETUP_CALL, .qualifier = 0x00, /* Only if not busy on another call */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_NOT_CAPABLE, }, }, }; static const unsigned char set_up_call_response_1121[] = { 0x81, 0x03, 0x01, 0x10, 0x01, 0x82, 0x02, 0x82, 0x81, 0x83, 0x02, 0x21, 0x91, }; static const struct terminal_response_test set_up_call_response_data_1121 = { .pdu = set_up_call_response_1121, .pdu_len = sizeof(set_up_call_response_1121), .response = { .number = 1, .type = STK_COMMAND_TYPE_SETUP_CALL, .qualifier = 0x01, /* Only if not busy, with redial */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_NETWORK_UNAVAILABLE, .additional_len = 1, /* User busy */ .additional = (unsigned char[1]) { 0x91 }, }, }, }; static const unsigned char set_up_call_response_311b[] = { 0x81, 0x03, 0x01, 0x10, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x04, }; static const struct terminal_response_test set_up_call_response_data_311b = { .pdu = set_up_call_response_311b, .pdu_len = sizeof(set_up_call_response_311b), .response = { .number = 1, .type = STK_COMMAND_TYPE_SETUP_CALL, .qualifier = 0x00, /* Only if not busy on another call */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_NO_ICON, }, }, }; static const unsigned char polling_off_response_112[] = { 0x81, 0x03, 0x01, 0x04, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, }; static const struct terminal_response_test polling_off_response_data_112 = { .pdu = polling_off_response_112, .pdu_len = sizeof(polling_off_response_112), .response = { .number = 1, .type = STK_COMMAND_TYPE_POLLING_OFF, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, }, }; static const unsigned char provide_local_info_response_111a[] = { 0x81, 0x03, 0x01, 0x26, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0x93, 0x07, 0x00, 0xf1, 0x10, 0x00, 0x01, 0x00, 0x01, }; static const struct terminal_response_test provide_local_info_response_data_111a = { .pdu = provide_local_info_response_111a, .pdu_len = sizeof(provide_local_info_response_111a), .response = { .number = 1, .type = STK_COMMAND_TYPE_PROVIDE_LOCAL_INFO, .qualifier = 0x00, /* Location information (MCC MNC LAC CI) */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .provide_local_info = { { .location = { .mcc = "001", .mnc = "01", .lac_tac = 0x0001, .has_ci = TRUE, .ci = 0x0001, }}, }}, }, }; static const unsigned char provide_local_info_response_111b[] = { 0x81, 0x03, 0x01, 0x26, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0x93, 0x07, 0x00, 0x11, 0x10, 0x00, 0x01, 0x00, 0x01, }; static const struct terminal_response_test provide_local_info_response_data_111b = { .pdu = provide_local_info_response_111b, .pdu_len = sizeof(provide_local_info_response_111b), .response = { .number = 1, .type = STK_COMMAND_TYPE_PROVIDE_LOCAL_INFO, .qualifier = 0x00, /* Location information (MCC MNC LAC CI) */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .provide_local_info = { { .location = { .mcc = "001", .mnc = "011", .lac_tac = 0x0001, .has_ci = TRUE, .ci = 0x0001, }}, }}, }, }; static const unsigned char provide_local_info_response_121[] = { 0x81, 0x03, 0x01, 0x26, 0x01, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0x94, 0x08, 0x1a, 0x32, 0x54, 0x76, 0x98, 0x10, 0x32, 0x54, /* Typo in TS 102 384? */ }; static const struct terminal_response_test provide_local_info_response_data_121 = { .pdu = provide_local_info_response_121, .pdu_len = sizeof(provide_local_info_response_121), .response = { .number = 1, .type = STK_COMMAND_TYPE_PROVIDE_LOCAL_INFO, .qualifier = 0x01, /* IMEI of the Terminal */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .provide_local_info = { { .imei = "123456789012345", } }}, }, }; static const unsigned char provide_local_info_response_131[] = { 0x81, 0x03, 0x01, 0x26, 0x02, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0x96, 0x10, 0x34, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9d, 0x0d, 0x8c, 0x63, 0x58, 0xe2, 0x39, 0x8f, 0x63, 0xf9, 0x06, 0x45, 0x91, 0xa4, 0x90, }; static const short bcch_channels_131[] = { }; static const struct terminal_response_test provide_local_info_response_data_131 = { .pdu = provide_local_info_response_131, .pdu_len = sizeof(provide_local_info_response_131), .response = { .number = 1, .type = STK_COMMAND_TYPE_PROVIDE_LOCAL_INFO, .qualifier = 0x02, /* Network Measurement Results */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .provide_local_info = { { .nmr = { .nmr = { /* RXLEV-FULL-SERVING-CELL=52, no BA, * no DTX */ .array = (unsigned char[16]) { 0x34, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }, .len = 16, }, .bcch_ch_list = { .channels = { 561, 565, 568, 569, 573, 575, 577, 581, 582, 585, }, .num = 10, .has_list = TRUE, }, }}, }}, }, }; static const unsigned char provide_local_info_response_141[] = { 0x81, 0x03, 0x01, 0x26, 0x03, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0xa6, 0x07, 0x20, 0x50, 0x70, 0x41, 0x80, 0x71, 0xff, }; static const struct terminal_response_test provide_local_info_response_data_141 = { .pdu = provide_local_info_response_141, .pdu_len = sizeof(provide_local_info_response_141), .response = { .number = 1, .type = STK_COMMAND_TYPE_PROVIDE_LOCAL_INFO, .qualifier = 0x03, /* Date Time and Time Zone */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .provide_local_info = { { .datetime = { .year = 2, /* 2002 - 1900 - 100 */ .month = 5, .day = 7, .hour = 14, .minute = 8, .second = 17, .timezone = 0xff, /* No information */ }}, }}, }, }; static const unsigned char provide_local_info_response_151[] = { 0x81, 0x03, 0x01, 0x26, 0x04, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0xad, 0x02, 0x65, 0x6e, }; static const struct terminal_response_test provide_local_info_response_data_151 = { .pdu = provide_local_info_response_151, .pdu_len = sizeof(provide_local_info_response_151), .response = { .number = 1, .type = STK_COMMAND_TYPE_PROVIDE_LOCAL_INFO, .qualifier = 0x04, /* Language setting */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .provide_local_info = { { .language = "en", } }}, }, }; static const unsigned char provide_local_info_response_161[] = { 0x81, 0x03, 0x01, 0x26, 0x05, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0xae, 0x02, 0x00, 0x00, }; static const struct terminal_response_test provide_local_info_response_data_161 = { .pdu = provide_local_info_response_161, .pdu_len = sizeof(provide_local_info_response_161), .response = { .number = 1, .type = STK_COMMAND_TYPE_PROVIDE_LOCAL_INFO, .qualifier = 0x05, /* Timing Advance */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .provide_local_info = { { .tadv = { .status = STK_ME_STATUS_IDLE, .advance = 0, }}, }}, }, }; static const unsigned char provide_local_info_response_171[] = { 0x81, 0x03, 0x01, 0x26, 0x06, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0x3f, 0x01, 0x03, }; static const struct terminal_response_test provide_local_info_response_data_171 = { .pdu = provide_local_info_response_171, .pdu_len = sizeof(provide_local_info_response_171), .response = { .number = 1, .type = STK_COMMAND_TYPE_PROVIDE_LOCAL_INFO, .qualifier = 0x06, /* Access technology */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .provide_local_info = { { .access_technology = STK_ACCESS_TECHNOLOGY_UTRAN, } }}, }, }; static const unsigned char provide_local_info_response_181[] = { 0x81, 0x03, 0x01, 0x26, 0x07, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0xc6, 0x04, 0x01, 0x02, 0x03, 0x04, }; static const struct terminal_response_test provide_local_info_response_data_181 = { .pdu = provide_local_info_response_181, .pdu_len = sizeof(provide_local_info_response_181), .response = { .number = 1, .type = STK_COMMAND_TYPE_PROVIDE_LOCAL_INFO, .qualifier = 0x07, /* ESN of the terminal */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .provide_local_info = { { .esn = 0x01020304, } }}, }, }; static const unsigned char provide_local_info_response_191[] = { 0x81, 0x03, 0x01, 0x26, 0x08, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0xe2, 0x09, 0x13, 0x32, 0x54, 0x76, 0x98, 0x10, 0x32, 0x54, 0xf6, }; static const struct terminal_response_test provide_local_info_response_data_191 = { .pdu = provide_local_info_response_191, .pdu_len = sizeof(provide_local_info_response_191), .response = { .number = 1, .type = STK_COMMAND_TYPE_PROVIDE_LOCAL_INFO, .qualifier = 0x08, /* IMEISV of the terminal */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .provide_local_info = { { .imeisv = "1234567890123456", } }}, }, }; static const unsigned char provide_local_info_response_1111[] = { 0x81, 0x03, 0x01, 0x26, 0x0a, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0xe3, 0x01, 0x04, }; static const struct terminal_response_test provide_local_info_response_data_1111 = { .pdu = provide_local_info_response_1111, .pdu_len = sizeof(provide_local_info_response_1111), .response = { .number = 1, .type = STK_COMMAND_TYPE_PROVIDE_LOCAL_INFO, .qualifier = 0x0a, /* Charge state of the battery */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .provide_local_info = { { .battery_charge = STK_BATTERY_FULL, } }}, }, }; static const unsigned char provide_local_info_response_1121[] = { 0x81, 0x03, 0x01, 0x26, 0x02, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0x96, 0x02, 0x80, 0x00, /* Intra-frequency UTRAN Measurement report in ASN.1 goes here */ /* "The remaining bytes shall not be verified" */ }; static const struct terminal_response_test provide_local_info_response_data_1121 = { .pdu = provide_local_info_response_1121, .pdu_len = sizeof(provide_local_info_response_1121), .response = { .number = 1, .type = STK_COMMAND_TYPE_PROVIDE_LOCAL_INFO, .qualifier = 0x02, /* Network Measurement Results */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .provide_local_info = { { .nmr = { .nmr = { .array = (unsigned char[2]) { 0x80, 0x00 }, .len = 2, }, }}, }}, }, }; static const unsigned char provide_local_info_response_1131[] = { 0x81, 0x03, 0x01, 0x26, 0x02, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0x96, 0x02, 0x80, 0x11, /* Inter-frequency UTRAN Measurement report in ASN.1 goes here */ /* "The remaining bytes shall not be verified" */ }; static const struct terminal_response_test provide_local_info_response_data_1131 = { .pdu = provide_local_info_response_1131, .pdu_len = sizeof(provide_local_info_response_1131), .response = { .number = 1, .type = STK_COMMAND_TYPE_PROVIDE_LOCAL_INFO, .qualifier = 0x02, /* Network Measurement Results */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .provide_local_info = { { .nmr = { .nmr = { .array = (unsigned char[2]) { 0x80, 0x11}, .len = 2, }, }}, }}, }, }; static const unsigned char provide_local_info_response_1141[] = { 0x81, 0x03, 0x01, 0x26, 0x06, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0x3f, 0x01, 0x08, }; static const struct terminal_response_test provide_local_info_response_data_1141 = { .pdu = provide_local_info_response_1141, .pdu_len = sizeof(provide_local_info_response_1141), .response = { .number = 1, .type = STK_COMMAND_TYPE_PROVIDE_LOCAL_INFO, .qualifier = 0x06, /* Access technology */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .provide_local_info = { { .access_technology = STK_ACCESS_TECHNOLOGY_EUTRAN, } }}, }, }; static const unsigned char provide_local_info_response_1151[] = { 0x81, 0x03, 0x01, 0x26, 0x02, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0x96, 0x02, 0x80, 0x00, /* Intra-frequency E-UTRAN Measurement report in ASN.1 goes here */ /* "The remaining bytes shall not be verified" */ }; static const struct terminal_response_test provide_local_info_response_data_1151 = { .pdu = provide_local_info_response_1151, .pdu_len = sizeof(provide_local_info_response_1151), .response = { .number = 1, .type = STK_COMMAND_TYPE_PROVIDE_LOCAL_INFO, .qualifier = 0x02, /* Network Measurement Results */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .provide_local_info = { { .nmr = { .nmr = { .array = (unsigned char[2]) { 0x80, 0x00}, .len = 2, }, }}, }}, }, }; static const unsigned char provide_local_info_response_1161[] = { 0x81, 0x03, 0x01, 0x26, 0x02, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0x96, 0x02, 0x80, 0x11, /* Inter-frequency E-UTRAN Measurement report in ASN.1 goes here */ /* "The remaining bytes shall not be verified" */ }; static const struct terminal_response_test provide_local_info_response_data_1161 = { .pdu = provide_local_info_response_1161, .pdu_len = sizeof(provide_local_info_response_1161), .response = { .number = 1, .type = STK_COMMAND_TYPE_PROVIDE_LOCAL_INFO, .qualifier = 0x02, /* Network Measurement Results */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .provide_local_info = { { .nmr = { .nmr = { .array = (unsigned char[2]) { 0x80, 0x11}, .len = 2, }, }}, }}, }, }; static const unsigned char provide_local_info_response_1171[] = { 0x81, 0x03, 0x01, 0x26, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0x93, 0x09, 0x00, 0xf1, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1f, /* Typo in TS 102 223? Byte 18 changed to 01 here */ }; static const struct terminal_response_test provide_local_info_response_data_1171 = { .pdu = provide_local_info_response_1171, .pdu_len = sizeof(provide_local_info_response_1171), .response = { .number = 1, .type = STK_COMMAND_TYPE_PROVIDE_LOCAL_INFO, .qualifier = 0x00, /* Location information (MCC MNC LAC CI) */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .provide_local_info = { { .location = { .mcc = "001", .mnc = "01", .lac_tac = 0x0001, .has_eutran_ci = TRUE, .eutran_ci = 0x0000001, }}, }}, }, }; static const unsigned char set_up_event_list_response_111[] = { 0x81, 0x03, 0x01, 0x05, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, }; static const struct terminal_response_test set_up_event_list_response_data_111 = { .pdu = set_up_event_list_response_111, .pdu_len = sizeof(set_up_event_list_response_111), .response = { .number = 1, .type = STK_COMMAND_TYPE_SETUP_EVENT_LIST, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, }, }; static const unsigned char timer_mgmt_response_111[] = { 0x81, 0x03, 0x01, 0x27, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0xa4, 0x01, 0x01, }; static const struct terminal_response_test timer_mgmt_response_data_111 = { .pdu = timer_mgmt_response_111, .pdu_len = sizeof(timer_mgmt_response_111), .response = { .number = 1, .type = STK_COMMAND_TYPE_TIMER_MANAGEMENT, .qualifier = 0x00, /* Start the Timer */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .timer_mgmt = { .id = 1, }}, }, }; static const unsigned char timer_mgmt_response_112[] = { 0x81, 0x03, 0x01, 0x27, 0x02, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0xa4, 0x01, 0x01, 0xa5, 0x03, 0x00, 0x30, 0x95, }; static const struct terminal_response_test timer_mgmt_response_data_112 = { .pdu = timer_mgmt_response_112, .pdu_len = sizeof(timer_mgmt_response_112), .response = { .number = 1, .type = STK_COMMAND_TYPE_TIMER_MANAGEMENT, .qualifier = 0x02, /* Get the current value of the Timer */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .timer_mgmt = { .id = 1, .value = { .minute = 3, .second = 59, .has_value = TRUE, }, }}, }, }; static const unsigned char timer_mgmt_response_114[] = { 0x81, 0x03, 0x01, 0x27, 0x01, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0xa4, 0x01, 0x01, 0xa5, 0x03, 0x00, 0x00, 0x95, }; static const struct terminal_response_test timer_mgmt_response_data_114 = { .pdu = timer_mgmt_response_114, .pdu_len = sizeof(timer_mgmt_response_114), .response = { .number = 1, .type = STK_COMMAND_TYPE_TIMER_MANAGEMENT, .qualifier = 0x01, /* Deactivate the Timer */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .timer_mgmt = { .id = 1, .value = { .second = 59, .has_value = TRUE, }, }}, }, }; static const unsigned char timer_mgmt_response_121[] = { 0x81, 0x03, 0x01, 0x27, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0xa4, 0x01, 0x02, }; static const struct terminal_response_test timer_mgmt_response_data_121 = { .pdu = timer_mgmt_response_121, .pdu_len = sizeof(timer_mgmt_response_121), .response = { .number = 1, .type = STK_COMMAND_TYPE_TIMER_MANAGEMENT, .qualifier = 0x00, /* Start the Timer */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .timer_mgmt = { .id = 2, }}, }, }; static const unsigned char timer_mgmt_response_122[] = { 0x81, 0x03, 0x01, 0x27, 0x02, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0xa4, 0x01, 0x02, 0xa5, 0x03, 0x32, 0x85, 0x85, }; static const struct terminal_response_test timer_mgmt_response_data_122 = { .pdu = timer_mgmt_response_122, .pdu_len = sizeof(timer_mgmt_response_122), .response = { .number = 1, .type = STK_COMMAND_TYPE_TIMER_MANAGEMENT, .qualifier = 0x02, /* Get the current value of the Timer */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .timer_mgmt = { .id = 2, .value = { .hour = 23, .minute = 58, .second = 58, .has_value = TRUE, }, }}, }, }; static const unsigned char timer_mgmt_response_124[] = { 0x81, 0x03, 0x01, 0x27, 0x01, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0xa4, 0x01, 0x02, 0xa5, 0x03, 0x00, 0x00, 0x95, }; static const struct terminal_response_test timer_mgmt_response_data_124 = { .pdu = timer_mgmt_response_124, .pdu_len = sizeof(timer_mgmt_response_124), .response = { .number = 1, .type = STK_COMMAND_TYPE_TIMER_MANAGEMENT, .qualifier = 0x01, /* Deactivate the Timer */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .timer_mgmt = { .id = 2, .value = { .second = 59, .has_value = TRUE, }, }}, }, }; static const unsigned char timer_mgmt_response_131[] = { 0x81, 0x03, 0x01, 0x27, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0xa4, 0x01, 0x08, }; static const struct terminal_response_test timer_mgmt_response_data_131 = { .pdu = timer_mgmt_response_131, .pdu_len = sizeof(timer_mgmt_response_131), .response = { .number = 1, .type = STK_COMMAND_TYPE_TIMER_MANAGEMENT, .qualifier = 0x00, /* Start the Timer */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .timer_mgmt = { .id = 8, }}, }, }; static const unsigned char timer_mgmt_response_132[] = { 0x81, 0x03, 0x01, 0x27, 0x02, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0xa4, 0x01, 0x08, 0xa5, 0x03, 0x00, 0x81, 0x95, }; static const struct terminal_response_test timer_mgmt_response_data_132 = { .pdu = timer_mgmt_response_132, .pdu_len = sizeof(timer_mgmt_response_132), .response = { .number = 1, .type = STK_COMMAND_TYPE_TIMER_MANAGEMENT, .qualifier = 0x02, /* Get the current value of the Timer */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .timer_mgmt = { .id = 8, .value = { .minute = 18, .second = 59, .has_value = TRUE, }, }}, }, }; static const unsigned char timer_mgmt_response_134[] = { 0x81, 0x03, 0x01, 0x27, 0x01, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0xa4, 0x01, 0x08, 0xa5, 0x03, 0x00, 0x95, 0x92, }; static const struct terminal_response_test timer_mgmt_response_data_134 = { .pdu = timer_mgmt_response_134, .pdu_len = sizeof(timer_mgmt_response_134), .response = { .number = 1, .type = STK_COMMAND_TYPE_TIMER_MANAGEMENT, .qualifier = 0x01, /* Deactivate the Timer */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .timer_mgmt = { .id = 8, .value = { .minute = 59, .second = 29, .has_value = TRUE, }, }}, }, }; static const unsigned char timer_mgmt_response_141a[] = { 0x81, 0x03, 0x01, 0x27, 0x02, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x24, 0xa4, 0x01, 0x01, }; static const struct terminal_response_test timer_mgmt_response_data_141a = { .pdu = timer_mgmt_response_141a, .pdu_len = sizeof(timer_mgmt_response_141a), .response = { .number = 1, .type = STK_COMMAND_TYPE_TIMER_MANAGEMENT, .qualifier = 0x02, /* Get the current value of the Timer */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_TIMER_CONFLICT, }, { .timer_mgmt = { .id = 1, }}, }, }; static const unsigned char timer_mgmt_response_141b[] = { 0x81, 0x03, 0x01, 0x27, 0x02, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x24, }; static const struct terminal_response_test timer_mgmt_response_data_141b = { .pdu = timer_mgmt_response_141b, .pdu_len = sizeof(timer_mgmt_response_141b), .response = { .number = 1, .type = STK_COMMAND_TYPE_TIMER_MANAGEMENT, .qualifier = 0x02, /* Get the current value of the Timer */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_TIMER_CONFLICT, }, }, }; static const unsigned char timer_mgmt_response_142a[] = { 0x81, 0x03, 0x01, 0x27, 0x02, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x24, 0xa4, 0x01, 0x02, }; static const struct terminal_response_test timer_mgmt_response_data_142a = { .pdu = timer_mgmt_response_142a, .pdu_len = sizeof(timer_mgmt_response_142a), .response = { .number = 1, .type = STK_COMMAND_TYPE_TIMER_MANAGEMENT, .qualifier = 0x02, /* Get the current value of the Timer */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_TIMER_CONFLICT, }, { .timer_mgmt = { .id = 2, }}, }, }; static const unsigned char timer_mgmt_response_143a[] = { 0x81, 0x03, 0x01, 0x27, 0x02, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x24, 0xa4, 0x01, 0x03, }; static const struct terminal_response_test timer_mgmt_response_data_143a = { .pdu = timer_mgmt_response_143a, .pdu_len = sizeof(timer_mgmt_response_143a), .response = { .number = 1, .type = STK_COMMAND_TYPE_TIMER_MANAGEMENT, .qualifier = 0x02, /* Get the current value of the Timer */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_TIMER_CONFLICT, }, { .timer_mgmt = { .id = 3, }}, }, }; static const unsigned char timer_mgmt_response_144a[] = { 0x81, 0x03, 0x01, 0x27, 0x02, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x24, 0xa4, 0x01, 0x04, }; static const struct terminal_response_test timer_mgmt_response_data_144a = { .pdu = timer_mgmt_response_144a, .pdu_len = sizeof(timer_mgmt_response_144a), .response = { .number = 1, .type = STK_COMMAND_TYPE_TIMER_MANAGEMENT, .qualifier = 0x02, /* Get the current value of the Timer */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_TIMER_CONFLICT, }, { .timer_mgmt = { .id = 4, }}, }, }; static const unsigned char timer_mgmt_response_145a[] = { 0x81, 0x03, 0x01, 0x27, 0x02, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x24, 0xa4, 0x01, 0x05, }; static const struct terminal_response_test timer_mgmt_response_data_145a = { .pdu = timer_mgmt_response_145a, .pdu_len = sizeof(timer_mgmt_response_145a), .response = { .number = 1, .type = STK_COMMAND_TYPE_TIMER_MANAGEMENT, .qualifier = 0x02, /* Get the current value of the Timer */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_TIMER_CONFLICT, }, { .timer_mgmt = { .id = 5, }}, }, }; static const unsigned char timer_mgmt_response_146a[] = { 0x81, 0x03, 0x01, 0x27, 0x02, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x24, 0xa4, 0x01, 0x06, }; static const struct terminal_response_test timer_mgmt_response_data_146a = { .pdu = timer_mgmt_response_146a, .pdu_len = sizeof(timer_mgmt_response_146a), .response = { .number = 1, .type = STK_COMMAND_TYPE_TIMER_MANAGEMENT, .qualifier = 0x02, /* Get the current value of the Timer */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_TIMER_CONFLICT, }, { .timer_mgmt = { .id = 6, }}, }, }; static const unsigned char timer_mgmt_response_147a[] = { 0x81, 0x03, 0x01, 0x27, 0x02, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x24, 0xa4, 0x01, 0x07, }; static const struct terminal_response_test timer_mgmt_response_data_147a = { .pdu = timer_mgmt_response_147a, .pdu_len = sizeof(timer_mgmt_response_147a), .response = { .number = 1, .type = STK_COMMAND_TYPE_TIMER_MANAGEMENT, .qualifier = 0x02, /* Get the current value of the Timer */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_TIMER_CONFLICT, }, { .timer_mgmt = { .id = 7, }}, }, }; static const unsigned char timer_mgmt_response_148a[] = { 0x81, 0x03, 0x01, 0x27, 0x02, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x24, 0xa4, 0x01, 0x08, }; static const struct terminal_response_test timer_mgmt_response_data_148a = { .pdu = timer_mgmt_response_148a, .pdu_len = sizeof(timer_mgmt_response_148a), .response = { .number = 1, .type = STK_COMMAND_TYPE_TIMER_MANAGEMENT, .qualifier = 0x02, /* Get the current value of the Timer */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_TIMER_CONFLICT, }, { .timer_mgmt = { .id = 8, }}, }, }; static const unsigned char timer_mgmt_response_151a[] = { 0x81, 0x03, 0x01, 0x27, 0x01, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x24, 0xa4, 0x01, 0x01, }; static const struct terminal_response_test timer_mgmt_response_data_151a = { .pdu = timer_mgmt_response_151a, .pdu_len = sizeof(timer_mgmt_response_151a), .response = { .number = 1, .type = STK_COMMAND_TYPE_TIMER_MANAGEMENT, .qualifier = 0x01, /* Deactivate the Timer */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_TIMER_CONFLICT, }, { .timer_mgmt = { .id = 1, }}, }, }; static const unsigned char timer_mgmt_response_151b[] = { 0x81, 0x03, 0x01, 0x27, 0x01, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x24, }; static const struct terminal_response_test timer_mgmt_response_data_151b = { .pdu = timer_mgmt_response_151b, .pdu_len = sizeof(timer_mgmt_response_151b), .response = { .number = 1, .type = STK_COMMAND_TYPE_TIMER_MANAGEMENT, .qualifier = 0x01, /* Deactivate the Timer */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_TIMER_CONFLICT, }, }, }; static const unsigned char timer_mgmt_response_152a[] = { 0x81, 0x03, 0x01, 0x27, 0x01, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x24, 0xa4, 0x01, 0x02, }; static const struct terminal_response_test timer_mgmt_response_data_152a = { .pdu = timer_mgmt_response_152a, .pdu_len = sizeof(timer_mgmt_response_152a), .response = { .number = 1, .type = STK_COMMAND_TYPE_TIMER_MANAGEMENT, .qualifier = 0x01, /* Deactivate the Timer */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_TIMER_CONFLICT, }, { .timer_mgmt = { .id = 2, }}, }, }; static const unsigned char timer_mgmt_response_153a[] = { 0x81, 0x03, 0x01, 0x27, 0x01, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x24, 0xa4, 0x01, 0x03, }; static const struct terminal_response_test timer_mgmt_response_data_153a = { .pdu = timer_mgmt_response_153a, .pdu_len = sizeof(timer_mgmt_response_153a), .response = { .number = 1, .type = STK_COMMAND_TYPE_TIMER_MANAGEMENT, .qualifier = 0x01, /* Deactivate the Timer */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_TIMER_CONFLICT, }, { .timer_mgmt = { .id = 3, }}, }, }; static const unsigned char timer_mgmt_response_154a[] = { 0x81, 0x03, 0x01, 0x27, 0x01, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x24, 0xa4, 0x01, 0x04, }; static const struct terminal_response_test timer_mgmt_response_data_154a = { .pdu = timer_mgmt_response_154a, .pdu_len = sizeof(timer_mgmt_response_154a), .response = { .number = 1, .type = STK_COMMAND_TYPE_TIMER_MANAGEMENT, .qualifier = 0x01, /* Deactivate the Timer */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_TIMER_CONFLICT, }, { .timer_mgmt = { .id = 4, }}, }, }; static const unsigned char timer_mgmt_response_155a[] = { 0x81, 0x03, 0x01, 0x27, 0x01, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x24, 0xa4, 0x01, 0x05, }; static const struct terminal_response_test timer_mgmt_response_data_155a = { .pdu = timer_mgmt_response_155a, .pdu_len = sizeof(timer_mgmt_response_155a), .response = { .number = 1, .type = STK_COMMAND_TYPE_TIMER_MANAGEMENT, .qualifier = 0x01, /* Deactivate the Timer */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_TIMER_CONFLICT, }, { .timer_mgmt = { .id = 5, }}, }, }; static const unsigned char timer_mgmt_response_156a[] = { 0x81, 0x03, 0x01, 0x27, 0x01, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x24, 0xa4, 0x01, 0x06, }; static const struct terminal_response_test timer_mgmt_response_data_156a = { .pdu = timer_mgmt_response_156a, .pdu_len = sizeof(timer_mgmt_response_156a), .response = { .number = 1, .type = STK_COMMAND_TYPE_TIMER_MANAGEMENT, .qualifier = 0x01, /* Deactivate the Timer */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_TIMER_CONFLICT, }, { .timer_mgmt = { .id = 6, }}, }, }; static const unsigned char timer_mgmt_response_157a[] = { 0x81, 0x03, 0x01, 0x27, 0x01, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x24, 0xa4, 0x01, 0x07, }; static const struct terminal_response_test timer_mgmt_response_data_157a = { .pdu = timer_mgmt_response_157a, .pdu_len = sizeof(timer_mgmt_response_157a), .response = { .number = 1, .type = STK_COMMAND_TYPE_TIMER_MANAGEMENT, .qualifier = 0x01, /* Deactivate the Timer */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_TIMER_CONFLICT, }, { .timer_mgmt = { .id = 7, }}, }, }; static const unsigned char timer_mgmt_response_158a[] = { 0x81, 0x03, 0x01, 0x27, 0x01, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x24, 0xa4, 0x01, 0x08, }; static const struct terminal_response_test timer_mgmt_response_data_158a = { .pdu = timer_mgmt_response_158a, .pdu_len = sizeof(timer_mgmt_response_158a), .response = { .number = 1, .type = STK_COMMAND_TYPE_TIMER_MANAGEMENT, .qualifier = 0x01, /* Deactivate the Timer */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_TIMER_CONFLICT, }, { .timer_mgmt = { .id = 8, }}, }, }; static const unsigned char timer_mgmt_response_163[] = { 0x81, 0x03, 0x01, 0x27, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0xa4, 0x01, 0x03, }; static const struct terminal_response_test timer_mgmt_response_data_163 = { .pdu = timer_mgmt_response_163, .pdu_len = sizeof(timer_mgmt_response_163), .response = { .number = 1, .type = STK_COMMAND_TYPE_TIMER_MANAGEMENT, .qualifier = 0x00, /* Start the Timer */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .timer_mgmt = { .id = 3, }}, }, }; static const unsigned char timer_mgmt_response_164[] = { 0x81, 0x03, 0x01, 0x27, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0xa4, 0x01, 0x04, }; static const struct terminal_response_test timer_mgmt_response_data_164 = { .pdu = timer_mgmt_response_164, .pdu_len = sizeof(timer_mgmt_response_164), .response = { .number = 1, .type = STK_COMMAND_TYPE_TIMER_MANAGEMENT, .qualifier = 0x00, /* Start the Timer */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .timer_mgmt = { .id = 4, }}, }, }; static const unsigned char timer_mgmt_response_165[] = { 0x81, 0x03, 0x01, 0x27, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0xa4, 0x01, 0x05, }; static const struct terminal_response_test timer_mgmt_response_data_165 = { .pdu = timer_mgmt_response_165, .pdu_len = sizeof(timer_mgmt_response_165), .response = { .number = 1, .type = STK_COMMAND_TYPE_TIMER_MANAGEMENT, .qualifier = 0x00, /* Start the Timer */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .timer_mgmt = { .id = 5, }}, }, }; static const unsigned char timer_mgmt_response_166[] = { 0x81, 0x03, 0x01, 0x27, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0xa4, 0x01, 0x06, }; static const struct terminal_response_test timer_mgmt_response_data_166 = { .pdu = timer_mgmt_response_166, .pdu_len = sizeof(timer_mgmt_response_166), .response = { .number = 1, .type = STK_COMMAND_TYPE_TIMER_MANAGEMENT, .qualifier = 0x00, /* Start the Timer */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .timer_mgmt = { .id = 6, }}, }, }; static const unsigned char timer_mgmt_response_167[] = { 0x81, 0x03, 0x01, 0x27, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0xa4, 0x01, 0x07, }; static const struct terminal_response_test timer_mgmt_response_data_167 = { .pdu = timer_mgmt_response_167, .pdu_len = sizeof(timer_mgmt_response_167), .response = { .number = 1, .type = STK_COMMAND_TYPE_TIMER_MANAGEMENT, .qualifier = 0x00, /* Start the Timer */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .timer_mgmt = { .id = 7, }}, }, }; static const unsigned char set_up_idle_mode_text_response_111[] = { 0x81, 0x03, 0x01, 0x28, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, }; static const struct terminal_response_test set_up_idle_mode_text_response_data_111 = { .pdu = set_up_idle_mode_text_response_111, .pdu_len = sizeof(set_up_idle_mode_text_response_111), .response = { .number = 1, .type = STK_COMMAND_TYPE_SETUP_IDLE_MODE_TEXT, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, }, }; static const unsigned char set_up_idle_mode_text_response_211b[] = { 0x81, 0x03, 0x01, 0x28, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x04, }; static const struct terminal_response_test set_up_idle_mode_text_response_data_211b = { .pdu = set_up_idle_mode_text_response_211b, .pdu_len = sizeof(set_up_idle_mode_text_response_211b), .response = { .number = 1, .type = STK_COMMAND_TYPE_SETUP_IDLE_MODE_TEXT, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_NO_ICON, }, }, }; static const unsigned char set_up_idle_mode_text_response_241[] = { 0x81, 0x03, 0x01, 0x28, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x32, }; static const struct terminal_response_test set_up_idle_mode_text_response_data_241 = { .pdu = set_up_idle_mode_text_response_241, .pdu_len = sizeof(set_up_idle_mode_text_response_241), .response = { .number = 1, .type = STK_COMMAND_TYPE_SETUP_IDLE_MODE_TEXT, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_DATA_NOT_UNDERSTOOD, }, }, }; static const unsigned char run_at_command_response_111[] = { 0x81, 0x03, 0x01, 0x34, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0xA9, 0x05, 0x2b, 0x43, 0x47, 0x4d, 0x49, }; static const struct terminal_response_test run_at_command_response_data_111 = { .pdu = run_at_command_response_111, .pdu_len = sizeof(run_at_command_response_111), .response = { .number = 1, .type = STK_COMMAND_TYPE_RUN_AT_COMMAND, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .run_at_command = { .at_response = "+CGMI", }}, }, }; static const unsigned char run_at_command_response_211b[] = { 0x81, 0x03, 0x01, 0x34, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x04, 0xA9, 0x05, 0x2b, 0x43, 0x47, 0x4d, 0x49, }; static const struct terminal_response_test run_at_command_response_data_211b = { .pdu = run_at_command_response_211b, .pdu_len = sizeof(run_at_command_response_211b), .response = { .number = 1, .type = STK_COMMAND_TYPE_RUN_AT_COMMAND, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_NO_ICON, }, { .run_at_command = { .at_response = "+CGMI", }}, }, }; static const unsigned char run_at_command_response_251[] = { 0x81, 0x03, 0x01, 0x34, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x32, }; static const struct terminal_response_test run_at_command_response_data_251 = { .pdu = run_at_command_response_251, .pdu_len = sizeof(run_at_command_response_251), .response = { .number = 1, .type = STK_COMMAND_TYPE_RUN_AT_COMMAND, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_DATA_NOT_UNDERSTOOD, }, }, }; static const unsigned char send_dtmf_response_111[] = { 0x81, 0x03, 0x01, 0x14, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, }; static const struct terminal_response_test send_dtmf_response_data_111 = { .pdu = send_dtmf_response_111, .pdu_len = sizeof(send_dtmf_response_111), .response = { .number = 1, .type = STK_COMMAND_TYPE_SEND_DTMF, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, }, }; static const unsigned char send_dtmf_response_141[] = { 0x81, 0x03, 0x01, 0x14, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x02, 0x20, 0x07, }; static const struct terminal_response_test send_dtmf_response_data_141 = { .pdu = send_dtmf_response_141, .pdu_len = sizeof(send_dtmf_response_141), .response = { .number = 1, .type = STK_COMMAND_TYPE_SEND_DTMF, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_TERMINAL_BUSY, .additional_len = 1, /* Not in speech call */ .additional = (unsigned char[1]) { 0x07 }, }, }, }; static const unsigned char send_dtmf_response_211b[] = { 0x81, 0x03, 0x01, 0x14, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x04, }; static const struct terminal_response_test send_dtmf_response_data_211b = { .pdu = send_dtmf_response_211b, .pdu_len = sizeof(send_dtmf_response_211b), .response = { .number = 1, .type = STK_COMMAND_TYPE_SEND_DTMF, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_NO_ICON, }, }, }; static const unsigned char language_notification_response_111[] = { 0x81, 0x03, 0x01, 0x35, 0x01, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, }; static const struct terminal_response_test language_notification_response_data_111 = { .pdu = language_notification_response_111, .pdu_len = sizeof(language_notification_response_111), .response = { .number = 1, .type = STK_COMMAND_TYPE_LANGUAGE_NOTIFICATION, .qualifier = 0x01, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, }, }; static const unsigned char language_notification_response_121[] = { 0x81, 0x03, 0x01, 0x35, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, }; static const struct terminal_response_test language_notification_response_data_121 = { .pdu = language_notification_response_121, .pdu_len = sizeof(language_notification_response_121), .response = { .number = 1, .type = STK_COMMAND_TYPE_LANGUAGE_NOTIFICATION, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, }, }; static const unsigned char launch_browser_response_111[] = { 0x81, 0x03, 0x01, 0x15, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, }; static const struct terminal_response_test launch_browser_response_data_111 = { .pdu = launch_browser_response_111, .pdu_len = sizeof(launch_browser_response_111), .response = { .number = 1, .type = STK_COMMAND_TYPE_LAUNCH_BROWSER, .qualifier = 0x00, /* Launch browser, if not running */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, }, }; static const unsigned char launch_browser_response_211[] = { 0x81, 0x03, 0x01, 0x15, 0x02, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, }; static const struct terminal_response_test launch_browser_response_data_211 = { .pdu = launch_browser_response_211, .pdu_len = sizeof(launch_browser_response_211), .response = { .number = 1, .type = STK_COMMAND_TYPE_LAUNCH_BROWSER, .qualifier = 0x02, /* Use the existing browser */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, }, }; static const unsigned char launch_browser_response_221[] = { 0x81, 0x03, 0x01, 0x15, 0x03, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, }; static const struct terminal_response_test launch_browser_response_data_221 = { .pdu = launch_browser_response_221, .pdu_len = sizeof(launch_browser_response_221), .response = { .number = 1, .type = STK_COMMAND_TYPE_LAUNCH_BROWSER, .qualifier = 0x03, /* Re-start browser session */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, }, }; static const unsigned char launch_browser_response_231[] = { 0x81, 0x03, 0x01, 0x15, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x02, 0x26, 0x02, }; static const struct terminal_response_test launch_browser_response_data_231 = { .pdu = launch_browser_response_231, .pdu_len = sizeof(launch_browser_response_231), .response = { .number = 1, .type = STK_COMMAND_TYPE_LAUNCH_BROWSER, .qualifier = 0x00, /* Launch browser, if not running */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_BROWSER_TEMPORARY, .additional_len = 1, /* Browser unavailable */ .additional = (unsigned char[1]) { 0x02 }, }, }, }; static const unsigned char launch_browser_response_411b[] = { 0x81, 0x03, 0x01, 0x15, 0x02, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x04, }; static const struct terminal_response_test launch_browser_response_data_411b = { .pdu = launch_browser_response_411b, .pdu_len = sizeof(launch_browser_response_411b), .response = { .number = 1, .type = STK_COMMAND_TYPE_LAUNCH_BROWSER, .qualifier = 0x02, /* Use the existing browser */ .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_NO_ICON, }, }, }; static const unsigned char open_channel_response_211[] = { 0x81, 0x03, 0x01, 0x40, 0x01, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0x38, 0x02, 0x81, 0x00, 0x35, 0x07, 0x02, 0x03, 0x04, 0x03, 0x04, 0x1F, 0x02, 0x39, 0x02, 0x05, 0x78, }; static const struct terminal_response_test open_channel_response_data_211 = { .pdu = open_channel_response_211, .pdu_len = sizeof(open_channel_response_211), .response = { .number = 1, .type = STK_COMMAND_TYPE_OPEN_CHANNEL, .qualifier = STK_OPEN_CHANNEL_FLAG_IMMEDIATE, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .open_channel = { .channel = { .id = 1, .status = STK_CHANNEL_PACKET_DATA_SERVICE_ACTIVATED, }, .bearer_desc = { .type = STK_BEARER_TYPE_GPRS_UTRAN, .gprs = { .precedence = 3, .delay = 4, .reliability = 3, .peak = 4, .mean = 31, .pdp_type = 2, }, }, .buf_size = 1400, } }, }, }; static const unsigned char open_channel_response_271[] = { 0x81, 0x03, 0x01, 0x40, 0x01, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x22, 0x35, 0x07, 0x02, 0x03, 0x04, 0x03, 0x04, 0x1F, 0x02, 0x39, 0x02, 0x05, 0x78, }; static const struct terminal_response_test open_channel_response_data_271 = { .pdu = open_channel_response_271, .pdu_len = sizeof(open_channel_response_271), .response = { .number = 1, .type = STK_COMMAND_TYPE_OPEN_CHANNEL, .qualifier = STK_OPEN_CHANNEL_FLAG_IMMEDIATE, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_USER_REJECT, }, { .open_channel = { .bearer_desc = { .type = STK_BEARER_TYPE_GPRS_UTRAN, .gprs = { .precedence = 3, .delay = 4, .reliability = 3, .peak = 4, .mean = 31, .pdp_type = 2, }, }, .buf_size = 1400, } }, }, }; static const unsigned char close_channel_response_121[] = { 0x81, 0x03, 0x01, 0x41, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x02, 0x3A, 0x03, }; static const struct terminal_response_test close_channel_response_data_121 = { .pdu = close_channel_response_121, .pdu_len = sizeof(close_channel_response_121), .response = { .number = 1, .type = STK_COMMAND_TYPE_CLOSE_CHANNEL, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_BIP_ERROR, .additional_len = 1, /* Channel identifier not valid */ .additional = (unsigned char[1]) { 0x03 }, }, }, }; static const unsigned char close_channel_response_131[] = { 0x81, 0x03, 0x01, 0x41, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x02, 0x3A, 0x02, }; static const struct terminal_response_test close_channel_response_data_131 = { .pdu = close_channel_response_131, .pdu_len = sizeof(close_channel_response_131), .response = { .number = 1, .type = STK_COMMAND_TYPE_CLOSE_CHANNEL, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_BIP_ERROR, .additional_len = 1, /* Channel already closed */ .additional = (unsigned char[1]) { 0x02 }, }, }, }; static const unsigned char receive_data_response_111[] = { 0x81, 0x03, 0x01, 0x42, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0xB6, 0x81, 0xC8, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0xB7, 0x01, 0xFF, }; static const struct terminal_response_test receive_data_response_data_111 = { .pdu = receive_data_response_111, .pdu_len = sizeof(receive_data_response_111), .response = { .number = 1, .type = STK_COMMAND_TYPE_RECEIVE_DATA, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .receive_data = { .rx_data = { .array = (unsigned char[200]) { 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, }, .len = 200, }, .rx_remaining = 0xFF, } }, }, }; static const unsigned char send_data_response_111[] = { 0x81, 0x03, 0x01, 0x43, 0x01, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0xB7, 0x01, 0xFF, }; static const struct terminal_response_test send_data_response_data_111 = { .pdu = send_data_response_111, .pdu_len = sizeof(send_data_response_111), .response = { .number = 1, .type = STK_COMMAND_TYPE_SEND_DATA, .qualifier = STK_SEND_DATA_IMMEDIATELY, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .send_data = { /* More than 255 bytes of space available */ .tx_avail = 0xFF, } }, }, }; static const unsigned char send_data_response_121[] = { 0x81, 0x03, 0x01, 0x43, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0xB7, 0x01, 0xFF, }; static const struct terminal_response_test send_data_response_data_121 = { .pdu = send_data_response_121, .pdu_len = sizeof(send_data_response_121), .response = { .number = 1, .type = STK_COMMAND_TYPE_SEND_DATA, .qualifier = STK_SEND_DATA_STORE_DATA, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .send_data = { /* More than 255 bytes of space available */ .tx_avail = 0xFF, } }, }, }; static const unsigned char send_data_response_151[] = { 0x81, 0x03, 0x01, 0x43, 0x01, 0x82, 0x02, 0x82, 0x81, 0x83, 0x02, 0x3A, 0x03, }; static const struct terminal_response_test send_data_response_data_151 = { .pdu = send_data_response_151, .pdu_len = sizeof(send_data_response_151), .response = { .number = 1, .type = STK_COMMAND_TYPE_SEND_DATA, .qualifier = STK_SEND_DATA_IMMEDIATELY, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_BIP_ERROR, .additional_len = 1, /* Channel identifier not valid */ .additional = (unsigned char[1]) { 0x03 }, }, }, }; static const unsigned char get_channel_status_response_111[] = { 0x81, 0x03, 0x01, 0x44, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0xB8, 0x02, 0x00, 0x00, }; static const struct terminal_response_test get_channel_status_response_data_111 = { .pdu = get_channel_status_response_111, .pdu_len = sizeof(get_channel_status_response_111), .response = { .number = 1, .type = STK_COMMAND_TYPE_GET_CHANNEL_STATUS, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .channel_status = { /* * No Channel available, link not established or * PDP context not activated */ .channel = { .id = 0, .status = STK_CHANNEL_PACKET_DATA_SERVICE_NOT_ACTIVATED, } } }, }, }; static const unsigned char get_channel_status_response_121[] = { 0x81, 0x03, 0x01, 0x44, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0xB8, 0x02, 0x81, 0x00, }; static const struct terminal_response_test get_channel_status_response_data_121 = { .pdu = get_channel_status_response_121, .pdu_len = sizeof(get_channel_status_response_121), .response = { .number = 1, .type = STK_COMMAND_TYPE_GET_CHANNEL_STATUS, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .channel_status = { /* Channel 1 open, link established or PDP context activated */ .channel = { .id = 1, .status = STK_CHANNEL_PACKET_DATA_SERVICE_ACTIVATED, }, } }, }, }; static const unsigned char get_channel_status_response_131[] = { 0x81, 0x03, 0x01, 0x44, 0x00, 0x82, 0x02, 0x82, 0x81, 0x83, 0x01, 0x00, 0xB8, 0x02, 0x01, 0x05, }; static const struct terminal_response_test get_channel_status_response_data_131 = { .pdu = get_channel_status_response_131, .pdu_len = sizeof(get_channel_status_response_131), .response = { .number = 1, .type = STK_COMMAND_TYPE_GET_CHANNEL_STATUS, .qualifier = 0x00, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, .result = { .type = STK_RESULT_TYPE_SUCCESS, }, { .channel_status = { /* Channel 1, link dropped */ .channel = { .id = 1, .status = STK_CHANNEL_LINK_DROPPED, }, } }, }, }; struct envelope_test { const unsigned char *pdu; unsigned int pdu_len; struct stk_envelope envelope; }; static void test_envelope_encoding(gconstpointer data) { const struct envelope_test *test = data; const unsigned char *pdu; unsigned int pdu_len; pdu = stk_pdu_from_envelope(&test->envelope, &pdu_len); if (test->pdu) g_assert(pdu); else g_assert(pdu == NULL); g_assert(pdu_len == test->pdu_len); g_assert(memcmp(pdu, test->pdu, pdu_len) == 0); } static const unsigned char sms_pp_data_download_161[] = { 0xd1, 0x2d, 0x82, 0x02, 0x83, 0x81, 0x06, 0x09, 0x91, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xf8, 0x8b, 0x1c, 0x04, 0x04, 0x91, 0x21, 0x43, 0x7f, 0x16, 0x89, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x20, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, }; static const struct envelope_test sms_pp_data_download_data_161 = { .pdu = sms_pp_data_download_161, .pdu_len = sizeof(sms_pp_data_download_161), .envelope = { .type = STK_ENVELOPE_TYPE_SMS_PP_DOWNLOAD, .src = STK_DEVICE_IDENTITY_TYPE_NETWORK, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .sms_pp_download = { .address = { .ton_npi = 0x91, /* Intl, ISDN */ .number = "112233445566778", }, .message = { .oaddr = { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "1234", }, .pid = SMS_PID_TYPE_USIM_DOWNLOAD, .dcs = 0x16, /* Uncompressed, Class 2, 8-bit */ .scts = { .year = 98, .month = 1, .day = 1, .has_timezone = TRUE, .timezone = 0, }, .udl = 13, .ud = "Short Message", }, }}, }, }; static const unsigned char sms_pp_data_download_162[] = { 0xd1, 0x2d, 0x82, 0x02, 0x83, 0x81, 0x06, 0x09, 0x91, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xf8, 0x8b, 0x1c, 0x04, 0x04, 0x91, 0x21, 0x43, 0x7f, 0xf6, 0x89, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x20, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, }; static const struct envelope_test sms_pp_data_download_data_162 = { .pdu = sms_pp_data_download_162, .pdu_len = sizeof(sms_pp_data_download_162), .envelope = { .type = STK_ENVELOPE_TYPE_SMS_PP_DOWNLOAD, .src = STK_DEVICE_IDENTITY_TYPE_NETWORK, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .sms_pp_download = { .address = { .ton_npi = 0x91, /* Intl, ISDN */ .number = "112233445566778", }, .message = { .oaddr = { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "1234", }, .pid = SMS_PID_TYPE_USIM_DOWNLOAD, .dcs = 0xf6, /* Data, Class 2, 8-bit */ .scts = { .year = 98, .month = 1, .day = 1, .has_timezone = TRUE, .timezone = 0, }, .udl = 13, .ud = "Short Message", }, }}, }, }; static const unsigned char sms_pp_data_download_182[] = { 0xd1, 0x3e, 0x82, 0x02, 0x83, 0x81, 0x06, 0x09, 0x91, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xf8, 0x8b, 0x2d, 0x44, 0x04, 0x91, 0x21, 0x43, 0x7f, 0xf6, 0x89, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x02, 0x70, 0x00, 0x00, 0x19, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0xbf, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, }; static const struct envelope_test sms_pp_data_download_data_182 = { .pdu = sms_pp_data_download_182, .pdu_len = sizeof(sms_pp_data_download_182), .envelope = { .type = STK_ENVELOPE_TYPE_SMS_PP_DOWNLOAD, .src = STK_DEVICE_IDENTITY_TYPE_NETWORK, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .sms_pp_download = { .address = { .ton_npi = 0x91, /* Intl, ISDN */ .number = "112233445566778", }, .message = { .udhi = TRUE, .oaddr = { .number_type = SMS_NUMBER_TYPE_INTERNATIONAL, .numbering_plan = SMS_NUMBERING_PLAN_ISDN, .address = "1234", }, .pid = SMS_PID_TYPE_USIM_DOWNLOAD, .dcs = 0xf6, /* Data, Class 2, 8-bit */ .scts = { .year = 98, .month = 1, .day = 1, .has_timezone = TRUE, .timezone = 0, }, .udl = 30, .ud = { 0x02, 0x70, 0x00, 0x00, 0x19, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0xbf, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, }, }, }}, }, }; static const unsigned char cbs_pp_data_download_11[] = { 0xd2, 0x5e, 0x82, 0x02, 0x83, 0x81, 0x8c, 0x58, 0xc0, 0x11, 0x10, 0x01, 0x01, 0x11, 0xc3, 0x32, 0x9b, 0x0d, 0x12, 0xca, 0xdf, 0x61, 0xf2, 0x38, 0x3c, 0xa7, 0x83, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x81, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x81, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x81, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x81, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x81, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x81, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x81, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x81, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x81, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, }; static const struct envelope_test cbs_pp_data_download_data_11 = { .pdu = cbs_pp_data_download_11, .pdu_len = sizeof(cbs_pp_data_download_11), .envelope = { .type = STK_ENVELOPE_TYPE_CBS_PP_DOWNLOAD, .src = STK_DEVICE_IDENTITY_TYPE_NETWORK, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .cbs_pp_download = { .page = { .gs = CBS_GEO_SCOPE_CELL_NORMAL, .message_code = 1, .update_number = 1, .message_identifier = 0x1001, .dcs = CBS_LANGUAGE_ENGLISH, /* GSM 7-bit */ .max_pages = 1, .page = 1, .ud = { /* 7-bit "Cell Broadcast " repeated */ 0xc3, 0x32, 0x9b, 0x0d, 0x12, 0xca, 0xdf, 0x61, 0xf2, 0x38, 0x3c, 0xa7, 0x83, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x81, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x81, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x81, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x81, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x81, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x81, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x81, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x81, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x81, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, }, }, }}, }, }; static const unsigned char cbs_pp_data_download_17[] = { 0xd2, 0x5e, 0x82, 0x02, 0x83, 0x81, 0x8c, 0x58, 0xc0, 0x11, 0x10, 0x01, 0x96, 0x11, 0x02, 0x70, 0x00, 0x00, 0x4d, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0xbf, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, }; static const struct envelope_test cbs_pp_data_download_data_17 = { .pdu = cbs_pp_data_download_17, .pdu_len = sizeof(cbs_pp_data_download_17), .envelope = { .type = STK_ENVELOPE_TYPE_CBS_PP_DOWNLOAD, .src = STK_DEVICE_IDENTITY_TYPE_NETWORK, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .cbs_pp_download = { .page = { .gs = CBS_GEO_SCOPE_CELL_NORMAL, .message_code = 1, .update_number = 1, .message_identifier = 0x1001, .dcs = SMS_CLASS_2 | (SMS_CHARSET_8BIT << 2) | (9 << 4), /* UDHI present */ .max_pages = 1, .page = 1, .ud = { /* Secured User Header */ 0x02, 0x70, 0x00, 0x00, 0x4d, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0xbf, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, }, }, }}, }, }; static const unsigned char menu_selection_111[] = { 0xd3, 0x07, 0x82, 0x02, 0x01, 0x81, 0x90, 0x01, 0x02, }; static const struct envelope_test menu_selection_data_111 = { .pdu = menu_selection_111, .pdu_len = sizeof(menu_selection_111), .envelope = { .type = STK_ENVELOPE_TYPE_MENU_SELECTION, .src = STK_DEVICE_IDENTITY_TYPE_KEYPAD, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .menu_selection = { .item_id = 0x2, }}, }, }; static const unsigned char menu_selection_112[] = { 0xd3, 0x07, 0x82, 0x02, 0x01, 0x81, 0x90, 0x01, 0x12, }; static const struct envelope_test menu_selection_data_112 = { .pdu = menu_selection_112, .pdu_len = sizeof(menu_selection_112), .envelope = { .type = STK_ENVELOPE_TYPE_MENU_SELECTION, .src = STK_DEVICE_IDENTITY_TYPE_KEYPAD, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .menu_selection = { .item_id = 0x12, }}, }, }; static const unsigned char menu_selection_121[] = { 0xd3, 0x07, 0x82, 0x02, 0x01, 0x81, 0x90, 0x01, 0x3d, }; static const struct envelope_test menu_selection_data_121 = { .pdu = menu_selection_121, .pdu_len = sizeof(menu_selection_121), .envelope = { .type = STK_ENVELOPE_TYPE_MENU_SELECTION, .src = STK_DEVICE_IDENTITY_TYPE_KEYPAD, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .menu_selection = { .item_id = 0x3d, }}, }, }; static const unsigned char menu_selection_122[] = { 0xd3, 0x07, 0x82, 0x02, 0x01, 0x81, 0x90, 0x01, 0xfb, }; static const struct envelope_test menu_selection_data_122 = { .pdu = menu_selection_122, .pdu_len = sizeof(menu_selection_122), .envelope = { .type = STK_ENVELOPE_TYPE_MENU_SELECTION, .src = STK_DEVICE_IDENTITY_TYPE_KEYPAD, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .menu_selection = { .item_id = 0xfb, }}, }, }; static const unsigned char menu_selection_123[] = { 0xd3, 0x07, 0x82, 0x02, 0x01, 0x81, 0x90, 0x01, 0x01, }; static const struct envelope_test menu_selection_data_123 = { .pdu = menu_selection_123, .pdu_len = sizeof(menu_selection_123), .envelope = { .type = STK_ENVELOPE_TYPE_MENU_SELECTION, .src = STK_DEVICE_IDENTITY_TYPE_KEYPAD, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .menu_selection = { .item_id = 0x1, }}, }, }; static const unsigned char menu_selection_211[] = { 0xd3, 0x09, 0x82, 0x02, 0x01, 0x81, 0x90, 0x01, 0x02, 0x15, 0x00, }; static const struct envelope_test menu_selection_data_211 = { .pdu = menu_selection_211, .pdu_len = sizeof(menu_selection_211), .envelope = { .type = STK_ENVELOPE_TYPE_MENU_SELECTION, .src = STK_DEVICE_IDENTITY_TYPE_KEYPAD, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .menu_selection = { .item_id = 0x2, .help_request = TRUE, }}, }, }; static const unsigned char menu_selection_612[] = { 0xd3, 0x07, 0x82, 0x02, 0x01, 0x81, 0x90, 0x01, 0x05, }; static const struct envelope_test menu_selection_data_612 = { .pdu = menu_selection_612, .pdu_len = sizeof(menu_selection_612), .envelope = { .type = STK_ENVELOPE_TYPE_MENU_SELECTION, .src = STK_DEVICE_IDENTITY_TYPE_KEYPAD, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .menu_selection = { .item_id = 0x5, }}, }, }; static const unsigned char menu_selection_641[] = { 0xd3, 0x07, 0x82, 0x02, 0x01, 0x81, 0x90, 0x01, 0x08, }; static const struct envelope_test menu_selection_data_641 = { .pdu = menu_selection_641, .pdu_len = sizeof(menu_selection_641), .envelope = { .type = STK_ENVELOPE_TYPE_MENU_SELECTION, .src = STK_DEVICE_IDENTITY_TYPE_KEYPAD, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .menu_selection = { .item_id = 0x8, }}, }, }; static const unsigned char call_control_111a[] = { 0xd4, 0x25, 0x82, 0x02, 0x82, 0x81, 0x86, 0x0b, 0x91, 0x10, 0x32, 0x54, 0x76, 0x98, 0x10, 0x32, 0x54, 0x76, 0x98, 0x07, 0x07, 0x06, 0x60, 0x04, 0x02, 0x00, 0x05, 0x81, 0x13, 0x09, 0x00, 0xf1, 0x10, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, }; static const struct envelope_test call_control_data_111a = { .pdu = call_control_111a, .pdu_len = sizeof(call_control_111a), .envelope = { .type = STK_ENVELOPE_TYPE_CALL_CONTROL, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .call_control = { .type = STK_CC_TYPE_CALL_SETUP, { .address = { .ton_npi = 0x91, /* Intl, ISDN */ .number = "01234567890123456789", }}, .ccp1 = { .ccp = { 0x60, 0x04, 0x02, 0x00, 0x05, 0x81, }, .len = 6, }, .location = { .mcc = "001", .mnc = "01", .lac_tac = 0x0001, .has_ci = TRUE, .ci = 0x0001, .has_ext_ci = TRUE, .ext_ci = 0x0001, }, }}, }, }; static const unsigned char call_control_111b[] = { 0xd4, 0x23, 0x82, 0x02, 0x82, 0x81, 0x86, 0x0b, 0x91, 0x10, 0x32, 0x54, 0x76, 0x98, 0x10, 0x32, 0x54, 0x76, 0x98, 0x07, 0x07, 0x06, 0x60, 0x04, 0x02, 0x00, 0x05, 0x81, 0x13, 0x07, 0x00, 0x11, 0x10, 0x00, 0x01, 0x00, 0x01, }; static const struct envelope_test call_control_data_111b = { .pdu = call_control_111b, .pdu_len = sizeof(call_control_111b), .envelope = { .type = STK_ENVELOPE_TYPE_CALL_CONTROL, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .call_control = { .type = STK_CC_TYPE_CALL_SETUP, { .address = { .ton_npi = 0x91, /* Intl, ISDN */ .number = "01234567890123456789", }}, .ccp1 = { .ccp = { 0x60, 0x04, 0x02, 0x00, 0x05, 0x81, }, .len = 6, }, .location = { .mcc = "001", .mnc = "011", .lac_tac = 0x0001, .has_ci = TRUE, .ci = 0x0001, }, }}, }, }; static const unsigned char call_control_131a[] = { 0xd4, 0x18, 0x82, 0x02, 0x82, 0x81, 0x86, 0x07, 0x91, 0x10, 0x32, 0x04, 0x21, 0x43, 0x65, 0x13, 0x09, 0x00, 0xf1, 0x10, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, /* * Byte 3 changed to 0x82 and byte 7 changed to 0x86 (Comprehension * Required should be set according to TS 102 223 7.3.1.6) */ }; static const struct envelope_test call_control_data_131a = { .pdu = call_control_131a, .pdu_len = sizeof(call_control_131a), .envelope = { .type = STK_ENVELOPE_TYPE_CALL_CONTROL, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .call_control = { .type = STK_CC_TYPE_CALL_SETUP, { .address = { .ton_npi = 0x91, /* Intl, ISDN */ .number = "012340123456", }}, .location = { .mcc = "001", .mnc = "01", .lac_tac = 0x0001, .has_ci = TRUE, .ci = 0x0001, .has_ext_ci = TRUE, .ext_ci = 0x0001, }, }}, }, }; static const unsigned char call_control_131b[] = { 0xd4, 0x16, 0x82, 0x02, 0x82, 0x81, 0x86, 0x07, 0x91, 0x10, 0x32, 0x04, 0x21, 0x43, 0x65, 0x13, 0x07, 0x00, 0x11, 0x10, 0x00, 0x01, 0x00, 0x01, /* * Byte 3 changed to 0x82 and byte 7 changed to 0x86 (Comprehension * Required should be set according to TS 102 223 7.3.1.6) */ }; static const struct envelope_test call_control_data_131b = { .pdu = call_control_131b, .pdu_len = sizeof(call_control_131b), .envelope = { .type = STK_ENVELOPE_TYPE_CALL_CONTROL, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .call_control = { .type = STK_CC_TYPE_CALL_SETUP, { .address = { .ton_npi = 0x91, /* Intl, ISDN */ .number = "012340123456", }}, .location = { .mcc = "001", .mnc = "011", .lac_tac = 0x0001, .has_ci = TRUE, .ci = 0x0001, }, }}, }, }; static const unsigned char mo_short_message_control_111a[] = { 0xd5, 0x22, 0x02, 0x02, 0x82, 0x81, 0x06, 0x09, 0x91, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xf8, 0x06, 0x06, 0x91, 0x10, 0x32, 0x54, 0x76, 0xf8, 0x13, 0x09, 0x00, 0xf1, 0x10, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, }; static const struct envelope_test mo_short_message_control_data_111a = { .pdu = mo_short_message_control_111a, .pdu_len = sizeof(mo_short_message_control_111a), .envelope = { .type = STK_ENVELOPE_TYPE_MO_SMS_CONTROL, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .sms_mo_control = { .sc_address = { .ton_npi = 0x91, /* Intl, ISDN */ .number = "112233445566778", }, .dest_address = { .ton_npi = 0x91, /* Intl, ISDN */ .number = "012345678", }, .location = { .mcc = "001", .mnc = "01", .lac_tac = 0x0001, .has_ci = TRUE, .ci = 0x0001, .has_ext_ci = TRUE, .ext_ci = 0x0001, }, }}, }, }; static const unsigned char mo_short_message_control_111b[] = { 0xd5, 0x20, 0x02, 0x02, 0x82, 0x81, 0x06, 0x09, 0x91, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xf8, 0x06, 0x06, 0x91, 0x10, 0x32, 0x54, 0x76, 0xf8, 0x13, 0x07, 0x00, 0x11, 0x10, 0x00, 0x01, 0x00, 0x01, }; static const struct envelope_test mo_short_message_control_data_111b = { .pdu = mo_short_message_control_111b, .pdu_len = sizeof(mo_short_message_control_111b), .envelope = { .type = STK_ENVELOPE_TYPE_MO_SMS_CONTROL, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .sms_mo_control = { .sc_address = { .ton_npi = 0x91, /* Intl, ISDN */ .number = "112233445566778", }, .dest_address = { .ton_npi = 0x91, /* Intl, ISDN */ .number = "012345678", }, .location = { .mcc = "001", .mnc = "011", .lac_tac = 0x0001, .has_ci = TRUE, .ci = 0x0001, }, }}, }, }; static const unsigned char event_download_mt_call_111[] = { 0xd6, 0x0a, 0x99, 0x01, 0x00, 0x82, 0x02, 0x83, 0x81, 0x9c, 0x01, 0x00, /* * Byte 3 changed to 0x99 and byte 10 to 0x9c (Comprehension * Required should be set according to TS 102 223 7.5.1.2) */ }; static const struct envelope_test event_download_mt_call_data_111 = { .pdu = event_download_mt_call_111, .pdu_len = sizeof(event_download_mt_call_111), .envelope = { .type = STK_ENVELOPE_TYPE_EVENT_DOWNLOAD, .src = STK_DEVICE_IDENTITY_TYPE_NETWORK, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .event_download = { .type = STK_EVENT_TYPE_MT_CALL, { .mt_call = { .transaction_id = 0, }}, }}, }, }; static const unsigned char event_download_mt_call_112[] = { 0xd6, 0x0f, 0x99, 0x01, 0x00, 0x82, 0x02, 0x83, 0x81, 0x9c, 0x01, 0x00, 0x06, 0x03, 0x81, 0x89, 0x67, /* * Byte 3 changed to 0x99 and byte 10 to 0x9c and byte 13 to * 0x06 (Comprehension Required should be set according to * TS 102 223 7.5.1.2) */ }; static const struct envelope_test event_download_mt_call_data_112 = { .pdu = event_download_mt_call_112, .pdu_len = sizeof(event_download_mt_call_112), .envelope = { .type = STK_ENVELOPE_TYPE_EVENT_DOWNLOAD, .src = STK_DEVICE_IDENTITY_TYPE_NETWORK, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .event_download = { .type = STK_EVENT_TYPE_MT_CALL, { .mt_call = { .transaction_id = 0, .caller_address = { .ton_npi = 0x81, /* Unknown, ISDN */ .number = "9876", }, }}, }}, }, }; static const unsigned char event_download_call_connected_111[] = { 0xd6, 0x0a, 0x99, 0x01, 0x01, 0x82, 0x02, 0x82, 0x81, 0x9c, 0x01, 0x80, /* * Byte 3 changed to 0x99 and byte 10 to 0x9c (Comprehension * Required should be set according to TS 102 223 7.5.2.2) */ }; static const struct envelope_test event_download_call_connected_data_111 = { .pdu = event_download_call_connected_111, .pdu_len = sizeof(event_download_call_connected_111), .envelope = { .type = STK_ENVELOPE_TYPE_EVENT_DOWNLOAD, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .event_download = { .type = STK_EVENT_TYPE_CALL_CONNECTED, { .call_connected = { .transaction_id = 0x80, }}, }}, }, }; static const unsigned char event_download_call_connected_112[] = { 0xd6, 0x0a, 0x99, 0x01, 0x01, 0x82, 0x02, 0x83, 0x81, 0x9c, 0x01, 0x80, /* * Byte 3 changed to 0x99 and byte 10 to 0x9c (Comprehension * Required should be set according to TS 102 223 7.5.2.2) */ }; static const struct envelope_test event_download_call_connected_data_112 = { .pdu = event_download_call_connected_112, .pdu_len = sizeof(event_download_call_connected_112), .envelope = { .type = STK_ENVELOPE_TYPE_EVENT_DOWNLOAD, .src = STK_DEVICE_IDENTITY_TYPE_NETWORK, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .event_download = { .type = STK_EVENT_TYPE_CALL_CONNECTED, { .call_connected = { .transaction_id = 0x80, }}, }}, }, }; static const unsigned char event_download_call_disconnected_111[] = { 0xd6, 0x0a, 0x99, 0x01, 0x02, 0x82, 0x02, 0x83, 0x81, 0x9c, 0x01, 0x80, /* * Byte 3 changed to 0x99 and byte 10 to 0x9c (Comprehension * Required should be set according to TS 102 223 7.5.3.2) */ }; static const struct envelope_test event_download_call_disconnected_data_111 = { .pdu = event_download_call_disconnected_111, .pdu_len = sizeof(event_download_call_disconnected_111), .envelope = { .type = STK_ENVELOPE_TYPE_EVENT_DOWNLOAD, .src = STK_DEVICE_IDENTITY_TYPE_NETWORK, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .event_download = { .type = STK_EVENT_TYPE_CALL_DISCONNECTED, { .call_disconnected = { .transaction_ids = { .len = 1, .list = { 0x80 }, }, }}, }}, }, }; static const unsigned char event_download_call_disconnected_112a[] = { 0xd6, 0x0a, 0x99, 0x01, 0x02, 0x82, 0x02, 0x82, 0x81, 0x9c, 0x01, 0x80, /* * Byte 3 changed to 0x99 and byte 10 to 0x9c (Comprehension * Required should be set according to TS 102 223 7.5.3.2) */ }; static const struct envelope_test event_download_call_disconnected_data_112a = { .pdu = event_download_call_disconnected_112a, .pdu_len = sizeof(event_download_call_disconnected_112a), .envelope = { .type = STK_ENVELOPE_TYPE_EVENT_DOWNLOAD, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .event_download = { .type = STK_EVENT_TYPE_CALL_DISCONNECTED, { .call_disconnected = { .transaction_ids = { .len = 1, .list = { 0x80 }, }, }}, }}, }, }; static const unsigned char event_download_call_disconnected_112b[] = { 0xd6, 0x0e, 0x99, 0x01, 0x02, 0x82, 0x02, 0x82, 0x81, 0x9c, 0x01, 0x80, 0x1a, 0x02, 0x60, 0x90, /* * Byte 3 changed to 0x99 and byte 10 to 0x9c and byte 13 to * 1a (Comprehension Required should be set according to TS * 102 223 7.5.3.2) */ }; static const struct envelope_test event_download_call_disconnected_data_112b = { .pdu = event_download_call_disconnected_112b, .pdu_len = sizeof(event_download_call_disconnected_112b), .envelope = { .type = STK_ENVELOPE_TYPE_EVENT_DOWNLOAD, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .event_download = { .type = STK_EVENT_TYPE_CALL_DISCONNECTED, { .call_disconnected = { .transaction_ids = { .len = 1, .list = { 0x80 }, }, .cause = { .has_cause = TRUE, .len = 2, /* Normal call clearing */ .cause = { 0x60, 0x90 }, }, }}, }}, }, }; static const unsigned char event_download_call_disconnected_112c[] = { 0xd6, 0x0e, 0x99, 0x01, 0x02, 0x82, 0x02, 0x82, 0x81, 0x9c, 0x01, 0x80, 0x1a, 0x02, 0xe0, 0x90, /* * Byte 3 changed to 0x99 and byte 10 to 0x9c and byte 13 to * 1a (Comprehension Required should be set according to TS * 102 223 7.5.3.2) */ }; static const struct envelope_test event_download_call_disconnected_data_112c = { .pdu = event_download_call_disconnected_112c, .pdu_len = sizeof(event_download_call_disconnected_112c), .envelope = { .type = STK_ENVELOPE_TYPE_EVENT_DOWNLOAD, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .event_download = { .type = STK_EVENT_TYPE_CALL_DISCONNECTED, { .call_disconnected = { .transaction_ids = { .len = 1, .list = { 0x80 }, }, .cause = { .has_cause = TRUE, .len = 2, /* Normal call clearing */ .cause = { 0xe0, 0x90 }, }, }}, }}, }, }; static const unsigned char event_download_call_disconnected_113a[] = { 0xd6, 0x0e, 0x99, 0x01, 0x02, 0x82, 0x02, 0x83, 0x81, 0x9c, 0x01, 0x00, 0x1a, 0x02, 0x60, 0x90, /* * Byte 3 changed to 0x99 and byte 10 to 0x9c and byte 13 to * 1a (Comprehension Required should be set according to TS * 102 223 7.5.3.2) */ }; static const struct envelope_test event_download_call_disconnected_data_113a = { .pdu = event_download_call_disconnected_113a, .pdu_len = sizeof(event_download_call_disconnected_113a), .envelope = { .type = STK_ENVELOPE_TYPE_EVENT_DOWNLOAD, .src = STK_DEVICE_IDENTITY_TYPE_NETWORK, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .event_download = { .type = STK_EVENT_TYPE_CALL_DISCONNECTED, { .call_disconnected = { .transaction_ids = { .len = 1, .list = { 0 }, }, .cause = { .has_cause = TRUE, .len = 2, /* Normal call clearing */ .cause = { 0x60, 0x90 }, }, }}, }}, }, }; static const unsigned char event_download_call_disconnected_113b[] = { 0xd6, 0x0e, 0x99, 0x01, 0x02, 0x82, 0x02, 0x83, 0x81, 0x9c, 0x01, 0x00, 0x1a, 0x02, 0xe0, 0x90, /* * Byte 3 changed to 0x99 and byte 10 to 0x9c and byte 13 to * 1a (Comprehension Required should be set according to TS * 102 223 7.5.3.2) */ }; static const struct envelope_test event_download_call_disconnected_data_113b = { .pdu = event_download_call_disconnected_113b, .pdu_len = sizeof(event_download_call_disconnected_113b), .envelope = { .type = STK_ENVELOPE_TYPE_EVENT_DOWNLOAD, .src = STK_DEVICE_IDENTITY_TYPE_NETWORK, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .event_download = { .type = STK_EVENT_TYPE_CALL_DISCONNECTED, { .call_disconnected = { .transaction_ids = { .len = 1, .list = { 0 }, }, .cause = { .has_cause = TRUE, .len = 2, /* Normal call clearing */ .cause = { 0xe0, 0x90 }, }, }}, }}, }, }; static const unsigned char event_download_call_disconnected_114a[] = { 0xd6, 0x0c, 0x99, 0x01, 0x02, 0x82, 0x02, 0x82, 0x81, 0x9c, 0x01, 0x80, 0x1a, 0x00, /* * Byte 3 changed to 0x99 and byte 10 to 0x9c and byte 13 to * 1a (Comprehension Required should be set according to TS * 102 223 7.5.3.2) */ }; static const struct envelope_test event_download_call_disconnected_data_114a = { .pdu = event_download_call_disconnected_114a, .pdu_len = sizeof(event_download_call_disconnected_114a), .envelope = { .type = STK_ENVELOPE_TYPE_EVENT_DOWNLOAD, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .event_download = { .type = STK_EVENT_TYPE_CALL_DISCONNECTED, { .call_disconnected = { .transaction_ids = { .len = 1, .list = { 0x80 }, }, .cause = { .has_cause = TRUE, /* Radio link failure */ }, }}, }}, }, }; static const unsigned char event_download_call_disconnected_114b[] = { 0xd6, 0x0c, 0x99, 0x01, 0x02, 0x82, 0x02, 0x82, 0x81, 0x9c, 0x01, 0x00, 0x1a, 0x00, /* * Byte 3 changed to 0x99 and byte 10 to 0x9c and byte 13 to * 1a (Comprehension Required should be set according to TS * 102 223 7.5.3.2) */ }; static const struct envelope_test event_download_call_disconnected_data_114b = { .pdu = event_download_call_disconnected_114b, .pdu_len = sizeof(event_download_call_disconnected_114b), .envelope = { .type = STK_ENVELOPE_TYPE_EVENT_DOWNLOAD, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .event_download = { .type = STK_EVENT_TYPE_CALL_DISCONNECTED, { .call_disconnected = { .transaction_ids = { .len = 1, .list = { 0 }, }, .cause = { .has_cause = TRUE, /* Radio link failure */ }, }}, }}, }, }; static const unsigned char event_download_location_status_111[] = { 0xd6, 0x0a, 0x99, 0x01, 0x03, 0x82, 0x02, 0x82, 0x81, 0x9b, 0x01, 0x02, /* * Byte 3 changed to 0x99 and byte 10 to 0x9b (Comprehension * Required should be set according to TS 102 223 7.5.4.2) */ }; static const struct envelope_test event_download_location_status_data_111 = { .pdu = event_download_location_status_111, .pdu_len = sizeof(event_download_location_status_111), .envelope = { .type = STK_ENVELOPE_TYPE_EVENT_DOWNLOAD, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .event_download = { .type = STK_EVENT_TYPE_LOCATION_STATUS, { .location_status = { .state = STK_NO_SERVICE, }}, }}, }, }; static const unsigned char event_download_location_status_112a[] = { 0xd6, 0x15, 0x99, 0x01, 0x03, 0x82, 0x02, 0x82, 0x81, 0x9b, 0x01, 0x00, 0x13, 0x09, 0x00, 0xf1, 0x10, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, /* * Byte 3 changed to 0x99 and byte 10 to 0x9b (Comprehension * Required should be set according to TS 102 223 7.5.4.2) */ }; static const struct envelope_test event_download_location_status_data_112a = { .pdu = event_download_location_status_112a, .pdu_len = sizeof(event_download_location_status_112a), .envelope = { .type = STK_ENVELOPE_TYPE_EVENT_DOWNLOAD, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .event_download = { .type = STK_EVENT_TYPE_LOCATION_STATUS, { .location_status = { .state = STK_NORMAL_SERVICE, .info = { .mcc = "001", .mnc = "01", .lac_tac = 0x0002, .has_ci = TRUE, .ci = 0x0002, .has_ext_ci = TRUE, .ext_ci = 0x0001, }, }}, }}, }, }; static const unsigned char event_download_location_status_112b[] = { 0xd6, 0x13, 0x99, 0x01, 0x03, 0x82, 0x02, 0x82, 0x81, 0x9b, 0x01, 0x00, 0x13, 0x07, 0x00, 0x11, 0x10, 0x00, 0x02, 0x00, 0x02, /* * Byte 3 changed to 0x99 and byte 10 to 0x9b (Comprehension * Required should be set according to TS 102 223 7.5.4.2) */ }; static const struct envelope_test event_download_location_status_data_112b = { .pdu = event_download_location_status_112b, .pdu_len = sizeof(event_download_location_status_112b), .envelope = { .type = STK_ENVELOPE_TYPE_EVENT_DOWNLOAD, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .event_download = { .type = STK_EVENT_TYPE_LOCATION_STATUS, { .location_status = { .state = STK_NORMAL_SERVICE, .info = { .mcc = "001", .mnc = "011", .lac_tac = 0x0002, .has_ci = TRUE, .ci = 0x0002, }, }}, }}, }, }; static const unsigned char event_download_location_status_122[] = { 0xd6, 0x15, 0x99, 0x01, 0x03, 0x82, 0x02, 0x82, 0x81, 0x9b, 0x01, 0x00, 0x13, 0x09, 0x00, 0xf1, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2f, /* * Byte 3 changed to 0x99 and byte 10 to 0x9b (Comprehension * Required should be set according to TS 102 223 7.5.4.2) */ }; static const struct envelope_test event_download_location_status_data_122 = { .pdu = event_download_location_status_122, .pdu_len = sizeof(event_download_location_status_122), .envelope = { .type = STK_ENVELOPE_TYPE_EVENT_DOWNLOAD, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .event_download = { .type = STK_EVENT_TYPE_LOCATION_STATUS, { .location_status = { .state = STK_NORMAL_SERVICE, .info = { .mcc = "001", .mnc = "01", .lac_tac = 0x0002, .has_eutran_ci = TRUE, .eutran_ci = 0x0000002, }, }}, }}, }, }; /* * This is from 27.22.7.5. The ENVELOPE given in 27.22.4.16.1.1 seems to * have invalid length value (2nd byte), but in turn the Comprehension * Required bit is set correctly.. */ static const unsigned char event_download_user_activity_111[] = { 0xd6, 0x07, 0x99, 0x01, 0x04, 0x82, 0x02, 0x82, 0x81, /* * Byte 3 changed to 0x99 (Comprehension Required should be * set according to TS 102 223 7.5.5.2) */ }; static const struct envelope_test event_download_user_activity_data_111 = { .pdu = event_download_user_activity_111, .pdu_len = sizeof(event_download_user_activity_111), .envelope = { .type = STK_ENVELOPE_TYPE_EVENT_DOWNLOAD, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .event_download = { .type = STK_EVENT_TYPE_USER_ACTIVITY, }}, }, }; static const unsigned char event_download_idle_screen_available_111[] = { 0xd6, 0x07, 0x99, 0x01, 0x05, 0x82, 0x02, 0x02, 0x81, /* * Byte 3 changed to 0x99 (Comprehension Required should be * set according to TS 102 223 7.5.6.2) */ }; static const struct envelope_test event_download_idle_screen_available_data_111 = { .pdu = event_download_idle_screen_available_111, .pdu_len = sizeof(event_download_idle_screen_available_111), .envelope = { .type = STK_ENVELOPE_TYPE_EVENT_DOWNLOAD, .src = STK_DEVICE_IDENTITY_TYPE_DISPLAY, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .event_download = { .type = STK_EVENT_TYPE_IDLE_SCREEN_AVAILABLE, }}, }, }; static const unsigned char event_download_card_reader_status_111a[] = { 0xd6, 0x0a, 0x99, 0x01, 0x06, 0x82, 0x02, 0x82, 0x81, 0xa0, 0x01, 0x79, }; static const struct envelope_test event_download_card_reader_status_data_111a = { .pdu = event_download_card_reader_status_111a, .pdu_len = sizeof(event_download_card_reader_status_111a), .envelope = { .type = STK_ENVELOPE_TYPE_EVENT_DOWNLOAD, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .event_download = { .type = STK_EVENT_TYPE_CARD_READER_STATUS, { .card_reader_status = { .id = 1, .removable = TRUE, .present = TRUE, .id1_size = TRUE, .card_present = TRUE, .card_powered = FALSE, }}, }}, }, }; static const unsigned char event_download_card_reader_status_111b[] = { 0xd6, 0x0a, 0x99, 0x01, 0x06, 0x82, 0x02, 0x82, 0x81, 0xa0, 0x01, 0x59, }; static const struct envelope_test event_download_card_reader_status_data_111b = { .pdu = event_download_card_reader_status_111b, .pdu_len = sizeof(event_download_card_reader_status_111b), .envelope = { .type = STK_ENVELOPE_TYPE_EVENT_DOWNLOAD, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .event_download = { .type = STK_EVENT_TYPE_CARD_READER_STATUS, { .card_reader_status = { .id = 1, .removable = TRUE, .present = TRUE, .id1_size = FALSE, .card_present = TRUE, .card_powered = FALSE, }}, }}, }, }; static const unsigned char event_download_card_reader_status_111c[] = { 0xd6, 0x0a, 0x99, 0x01, 0x06, 0x82, 0x02, 0x82, 0x81, 0xa0, 0x01, 0x71, }; static const struct envelope_test event_download_card_reader_status_data_111c = { .pdu = event_download_card_reader_status_111c, .pdu_len = sizeof(event_download_card_reader_status_111c), .envelope = { .type = STK_ENVELOPE_TYPE_EVENT_DOWNLOAD, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .event_download = { .type = STK_EVENT_TYPE_CARD_READER_STATUS, { .card_reader_status = { .id = 1, .removable = FALSE, .present = TRUE, .id1_size = TRUE, .card_present = TRUE, .card_powered = FALSE, }}, }}, }, }; static const unsigned char event_download_card_reader_status_111d[] = { 0xd6, 0x0a, 0x99, 0x01, 0x06, 0x82, 0x02, 0x82, 0x81, 0xa0, 0x01, 0x51, }; static const struct envelope_test event_download_card_reader_status_data_111d = { .pdu = event_download_card_reader_status_111d, .pdu_len = sizeof(event_download_card_reader_status_111d), .envelope = { .type = STK_ENVELOPE_TYPE_EVENT_DOWNLOAD, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .event_download = { .type = STK_EVENT_TYPE_CARD_READER_STATUS, { .card_reader_status = { .id = 1, .removable = FALSE, .present = TRUE, .id1_size = FALSE, .card_present = TRUE, .card_powered = FALSE, }}, }}, }, }; static const unsigned char event_download_card_reader_status_112a[] = { 0xd6, 0x0a, 0x99, 0x01, 0x06, 0x82, 0x02, 0x82, 0x81, 0xa0, 0x01, 0x39, }; static const struct envelope_test event_download_card_reader_status_data_112a = { .pdu = event_download_card_reader_status_112a, .pdu_len = sizeof(event_download_card_reader_status_112a), .envelope = { .type = STK_ENVELOPE_TYPE_EVENT_DOWNLOAD, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .event_download = { .type = STK_EVENT_TYPE_CARD_READER_STATUS, { .card_reader_status = { .id = 1, .removable = TRUE, .present = TRUE, .id1_size = TRUE, .card_present = FALSE, }}, }}, }, }; static const unsigned char event_download_card_reader_status_112b[] = { 0xd6, 0x0a, 0x99, 0x01, 0x06, 0x82, 0x02, 0x82, 0x81, 0xa0, 0x01, 0x19, }; static const struct envelope_test event_download_card_reader_status_data_112b = { .pdu = event_download_card_reader_status_112b, .pdu_len = sizeof(event_download_card_reader_status_112b), .envelope = { .type = STK_ENVELOPE_TYPE_EVENT_DOWNLOAD, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .event_download = { .type = STK_EVENT_TYPE_CARD_READER_STATUS, { .card_reader_status = { .id = 1, .removable = TRUE, .present = TRUE, .id1_size = FALSE, .card_present = FALSE, }}, }}, }, }; static const unsigned char event_download_card_reader_status_112c[] = { 0xd6, 0x0a, 0x99, 0x01, 0x06, 0x82, 0x02, 0x82, 0x81, 0xa0, 0x01, 0x31, }; static const struct envelope_test event_download_card_reader_status_data_112c = { .pdu = event_download_card_reader_status_112c, .pdu_len = sizeof(event_download_card_reader_status_112c), .envelope = { .type = STK_ENVELOPE_TYPE_EVENT_DOWNLOAD, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .event_download = { .type = STK_EVENT_TYPE_CARD_READER_STATUS, { .card_reader_status = { .id = 1, .removable = FALSE, .present = TRUE, .id1_size = TRUE, .card_present = FALSE, }}, }}, }, }; static const unsigned char event_download_card_reader_status_112d[] = { 0xd6, 0x0a, 0x99, 0x01, 0x06, 0x82, 0x02, 0x82, 0x81, 0xa0, 0x01, 0x11, }; static const struct envelope_test event_download_card_reader_status_data_112d = { .pdu = event_download_card_reader_status_112d, .pdu_len = sizeof(event_download_card_reader_status_112d), .envelope = { .type = STK_ENVELOPE_TYPE_EVENT_DOWNLOAD, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .event_download = { .type = STK_EVENT_TYPE_CARD_READER_STATUS, { .card_reader_status = { .id = 1, .removable = FALSE, .present = TRUE, .id1_size = FALSE, .card_present = FALSE, }}, }}, }, }; static const unsigned char event_download_card_reader_status_212a[] = { 0xd6, 0x0a, 0x99, 0x01, 0x06, 0x82, 0x02, 0x82, 0x81, 0xa0, 0x01, 0x29, }; static const struct envelope_test event_download_card_reader_status_data_212a = { .pdu = event_download_card_reader_status_212a, .pdu_len = sizeof(event_download_card_reader_status_212a), .envelope = { .type = STK_ENVELOPE_TYPE_EVENT_DOWNLOAD, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .event_download = { .type = STK_EVENT_TYPE_CARD_READER_STATUS, { .card_reader_status = { .id = 1, .removable = TRUE, .present = FALSE, .id1_size = TRUE, .card_present = FALSE, }}, }}, }, }; static const unsigned char event_download_card_reader_status_212b[] = { 0xd6, 0x0a, 0x99, 0x01, 0x06, 0x82, 0x02, 0x82, 0x81, 0xa0, 0x01, 0x09, }; static const struct envelope_test event_download_card_reader_status_data_212b = { .pdu = event_download_card_reader_status_212b, .pdu_len = sizeof(event_download_card_reader_status_212b), .envelope = { .type = STK_ENVELOPE_TYPE_EVENT_DOWNLOAD, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .event_download = { .type = STK_EVENT_TYPE_CARD_READER_STATUS, { .card_reader_status = { .id = 1, .removable = TRUE, .present = FALSE, .id1_size = FALSE, .card_present = FALSE, }}, }}, }, }; static const unsigned char event_download_language_selection_111[] = { 0xd6, 0x0b, 0x99, 0x01, 0x07, 0x82, 0x02, 0x82, 0x81, 0xad, 0x02, 0x64, 0x65, /* * Byte 3 changed to 0x99 and byte 10 to 0xad (Comprehension * Required should be set according to TS 102 223 7.5.8.2) */ }; static const struct envelope_test event_download_language_selection_data_111 = { .pdu = event_download_language_selection_111, .pdu_len = sizeof(event_download_language_selection_111), .envelope = { .type = STK_ENVELOPE_TYPE_EVENT_DOWNLOAD, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .event_download = { .type = STK_EVENT_TYPE_LANGUAGE_SELECTION, { .language_selection = "de" }, }}, }, }; static const unsigned char event_download_language_selection_122[] = { 0xd6, 0x0b, 0x99, 0x01, 0x07, 0x82, 0x02, 0x82, 0x81, 0xad, 0x02, 0x73, 0x65, /* Byte 5 changed to 0x07 (Event: Language Selection) */ /* Byte 8 changed to 0x82 (Source device: Terminal) */ /* Removed the (unexpected?) Transaction ID data object (0x2d) */ }; static const struct envelope_test event_download_language_selection_data_122 = { .pdu = event_download_language_selection_122, .pdu_len = sizeof(event_download_language_selection_122), .envelope = { .type = STK_ENVELOPE_TYPE_EVENT_DOWNLOAD, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .event_download = { .type = STK_EVENT_TYPE_LANGUAGE_SELECTION, { .language_selection = "se" }, }}, }, }; static const unsigned char event_download_browser_termination_111[] = { 0xd6, 0x0a, 0x99, 0x01, 0x08, 0x82, 0x02, 0x82, 0x81, 0xb4, 0x01, 0x00, }; static const struct envelope_test event_download_browser_termination_data_111 = { .pdu = event_download_browser_termination_111, .pdu_len = sizeof(event_download_browser_termination_111), .envelope = { .type = STK_ENVELOPE_TYPE_EVENT_DOWNLOAD, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .event_download = { .type = STK_EVENT_TYPE_BROWSER_TERMINATION, { .browser_termination = { .cause = STK_BROWSER_USER_TERMINATION, }}, }}, }, }; static const unsigned char event_download_data_available_111[] = { 0xd6, 0x0e, 0x99, 0x01, 0x09, 0x82, 0x02, 0x82, 0x81, 0xb8, 0x02, 0x81, 0x00, 0xb7, 0x01, 0xff, }; static const struct envelope_test event_download_data_available_data_111 = { .pdu = event_download_data_available_111, .pdu_len = sizeof(event_download_data_available_111), .envelope = { .type = STK_ENVELOPE_TYPE_EVENT_DOWNLOAD, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .event_download = { .type = STK_EVENT_TYPE_DATA_AVAILABLE, { .data_available = { /* Channel 1 open, Link established */ .channel = { .id = 1, .status = STK_CHANNEL_PACKET_DATA_SERVICE_ACTIVATED, }, .channel_data_len = 255, } }, } }, }, }; static const unsigned char event_download_data_available_211[] = { 0xd6, 0x0e, 0x99, 0x01, 0x09, 0x82, 0x02, 0x82, 0x81, 0xb8, 0x02, 0x81, 0x00, 0xb7, 0x01, 0xff, }; static const struct envelope_test event_download_data_available_data_211 = { .pdu = event_download_data_available_211, .pdu_len = sizeof(event_download_data_available_211), .envelope = { .type = STK_ENVELOPE_TYPE_EVENT_DOWNLOAD, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .event_download = { .type = STK_EVENT_TYPE_DATA_AVAILABLE, { .data_available = { /* Channel 1 open, Link established */ .channel = { .id = 1, .status = STK_CHANNEL_PACKET_DATA_SERVICE_ACTIVATED, }, .channel_data_len = 255, } }, } }, }, }; static const unsigned char event_download_channel_status_131[] = { 0xd6, 0x0b, 0x99, 0x01, 0x0a, 0x82, 0x02, 0x82, 0x81, 0xb8, 0x02, 0x01, 0x05, }; static const struct envelope_test event_download_channel_status_data_131 = { .pdu = event_download_channel_status_131, .pdu_len = sizeof(event_download_channel_status_131), .envelope = { .type = STK_ENVELOPE_TYPE_EVENT_DOWNLOAD, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .event_download = { .type = STK_EVENT_TYPE_CHANNEL_STATUS, { .channel_status = { /* Channel 1, Link dropped */ .channel = { .id = 1, .status = STK_CHANNEL_LINK_DROPPED, }, } }, } }, }, }; static const unsigned char event_download_channel_status_211[] = { 0xd6, 0x0b, 0x99, 0x01, 0x0a, 0x82, 0x02, 0x82, 0x81, 0xb8, 0x02, 0x41, 0x00, /* * Byte 10 changed to 0xb8 (Comprehension Required should be * set according to TS 102 223 7.5.11.2) */ }; static const struct envelope_test event_download_channel_status_data_211 = { .pdu = event_download_channel_status_211, .pdu_len = sizeof(event_download_channel_status_211), .envelope = { .type = STK_ENVELOPE_TYPE_EVENT_DOWNLOAD, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .event_download = { .type = STK_EVENT_TYPE_CHANNEL_STATUS, { .channel_status = { /* Channel 1, TCP in LISTEN state */ .channel = { .id = 1, .status = STK_CHANNEL_TCP_IN_LISTEN_STATE, }, } }, } }, }, }; static const unsigned char event_download_channel_status_221[] = { 0xd6, 0x0b, 0x99, 0x01, 0x0a, 0x82, 0x02, 0x82, 0x81, 0xb8, 0x02, 0x81, 0x00, /* * Byte 10 changed to 0xb8 (Comprehension Required should be * set according to TS 102 223 7.5.11.2) */ }; static const struct envelope_test event_download_channel_status_data_221 = { .pdu = event_download_channel_status_221, .pdu_len = sizeof(event_download_channel_status_221), .envelope = { .type = STK_ENVELOPE_TYPE_EVENT_DOWNLOAD, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .event_download = { .type = STK_EVENT_TYPE_CHANNEL_STATUS, { .channel_status = { /* Channel 1 open, TCP Link established */ .channel = { .id = 1, .status = STK_CHANNEL_PACKET_DATA_SERVICE_ACTIVATED, }, } }, } }, }, }; static const unsigned char event_download_network_rejection_111[] = { 0xd6, 0x17, 0x99, 0x01, 0x12, 0x82, 0x02, 0x83, 0x81, 0x7d, 0x05, 0x00, 0xf1, 0x10, 0x00, 0x01, 0xbf, 0x01, 0x08, 0xf4, 0x01, 0x09, 0xf5, 0x01, 0x0b, /* * Byte 3 changed to 99, byte 17 changed to bf, byte 19 to f4 and * byte 22 to f5 (Comprehension Required should be set according * to TS 131 111 7.5.2.2) */ }; static const struct envelope_test event_download_network_rejection_data_111 = { .pdu = event_download_network_rejection_111, .pdu_len = sizeof(event_download_network_rejection_111), .envelope = { .type = STK_ENVELOPE_TYPE_EVENT_DOWNLOAD, .src = STK_DEVICE_IDENTITY_TYPE_NETWORK, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .event_download = { .type = STK_EVENT_TYPE_NETWORK_REJECTION, { .network_rejection = { .tai = { .mcc = "001", .mnc = "01", .tac = 0x0001, }, .access_tech = STK_ACCESS_TECHNOLOGY_EUTRAN, .update_attach = STK_UPDATE_ATTACH_EPS_ATTACH, .cause = STK_CAUSE_EMM_PLMN_NOT_ALLOWED, }}, }}, }, }; static const unsigned char event_download_network_rejection_121[] = { 0xd6, 0x17, 0x99, 0x01, 0x12, 0x82, 0x02, 0x83, 0x81, 0x7d, 0x05, 0x00, 0xf1, 0x10, 0x00, 0x01, 0xbf, 0x01, 0x08, 0xf4, 0x01, 0x0b, 0xf5, 0x01, 0x0c, /* * Byte 3 changed to 99, byte 17 changed to bf, byte 19 to f4 and * byte 22 to f5 (Comprehension Required should be set according * to TS 131 111 7.5.2.2) */ }; static const struct envelope_test event_download_network_rejection_data_121 = { .pdu = event_download_network_rejection_121, .pdu_len = sizeof(event_download_network_rejection_121), .envelope = { .type = STK_ENVELOPE_TYPE_EVENT_DOWNLOAD, .src = STK_DEVICE_IDENTITY_TYPE_NETWORK, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .event_download = { .type = STK_EVENT_TYPE_NETWORK_REJECTION, { .network_rejection = { .tai = { .mcc = "001", .mnc = "01", .tac = 0x0001, }, .access_tech = STK_ACCESS_TECHNOLOGY_EUTRAN, .update_attach = STK_UPDATE_ATTACH_TA_UPDATING, .cause = STK_CAUSE_EMM_TAC_NOT_ALLOWED, }}, }}, }, }; static const unsigned char timer_expiration_211[] = { 0xd7, 0x0c, 0x82, 0x02, 0x82, 0x81, 0xa4, 0x01, 0x01, 0xa5, 0x03, 0x00, 0x00, 0x01, }; static const struct envelope_test timer_expiration_data_211 = { .pdu = timer_expiration_211, .pdu_len = sizeof(timer_expiration_211), .envelope = { .type = STK_ENVELOPE_TYPE_TIMER_EXPIRATION, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .timer_expiration = { .id = 1, .value = { .second = 10, .has_value = TRUE, }, }}, }, }; static const unsigned char timer_expiration_221a[] = { 0xd7, 0x0c, 0x82, 0x02, 0x82, 0x81, 0xa4, 0x01, 0x01, 0xa5, 0x03, 0x00, 0x00, 0x03, }; static const struct envelope_test timer_expiration_data_221a = { .pdu = timer_expiration_221a, .pdu_len = sizeof(timer_expiration_221a), .envelope = { .type = STK_ENVELOPE_TYPE_TIMER_EXPIRATION, .src = STK_DEVICE_IDENTITY_TYPE_TERMINAL, .dst = STK_DEVICE_IDENTITY_TYPE_UICC, { .timer_expiration = { .id = 1, .value = { .second = 30, .has_value = TRUE, }, }}, }, }; struct html_attr_test { char *text; struct stk_text_attribute text_attr; char *html; }; static struct html_attr_test html_attr_data_1 = { .text = "Blue green green green", .text_attr = { .len = 8, .attributes = { 0x00, 0x00, 0x03, 0x94, 0x00, 0x04, 0x03, 0x96 }, }, .html = "" "Blue green green green", }; static struct html_attr_test html_attr_data_2 = { .text = "abc", .text_attr = { .len = 8, .attributes = { 0x00, 0x02, 0x03, 0x94, 0x01, 0x02, 0x03, 0x96 }, }, .html = "" "abc", }; static struct html_attr_test html_attr_data_3 = { .text = "1 < 2, 2 > 1, 1 & 0 == 0\nSpecial Chars are Fun\r\nTo Write", .text_attr = { .len = 4, .attributes = { 0x00, 0x00, 0x03, 0x00 }, }, .html = "1 < 2, 2 > 1, 1 & 0 == 0
Special Chars are Fun" "
To Write", }; static struct html_attr_test html_attr_data_4 = { .text = "€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€" "€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€" "€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€" "€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€" "€€€€€€€€€€€€€€€", .text_attr = { .len = 4, .attributes = { 0x00, 0x00, 0x03, 0x94 }, }, .html = "" "€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€" "€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€" "€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€" "€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€" "€€€€€€€€€€€€€€€", }; static void test_html_attr(gconstpointer data) { const struct html_attr_test *test = data; check_text_attr_html(&test->text_attr, test->text, test->html); } struct img_xpm_test { const unsigned char *img; unsigned int len; const unsigned char *clut; unsigned short clut_len; guint8 scheme; char *xpm; }; const unsigned char img1[] = { 0x05, 0x05, 0xFE, 0xEB, 0xBF, 0xFF, 0xFF, 0xFF }; const unsigned char img2[] = { 0x08, 0x08, 0x02, 0x03, 0x00, 0x16, 0xAA, 0xAA, 0x80, 0x02, 0x85, 0x42, 0x81, 0x42, 0x81, 0x42, 0x81, 0x52, 0x80, 0x02, 0xAA, 0xAA, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF }; const unsigned char img3[] = { 0x2E, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x77, 0xFE, 0x00, 0x00, 0x00, 0x01, 0xBF, 0xF8, 0x00, 0x00, 0x00, 0x06, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x1A, 0x03, 0x80, 0x00, 0x00, 0x00, 0x6B, 0xF6, 0xBC, 0x00, 0x00, 0x01, 0xAF, 0xD8, 0x38, 0x00, 0x00, 0x06, 0xBF, 0x60, 0x20, 0x00, 0x00, 0x1A, 0xFD, 0x80, 0x40, 0x00, 0x00, 0x6B, 0xF6, 0x00, 0x80, 0x00, 0x01, 0xA0, 0x1F, 0x02, 0x00, 0x00, 0x06, 0xFF, 0xE4, 0x04, 0x00, 0x00, 0x1B, 0xFF, 0x90, 0x10, 0x00, 0x00, 0x6D, 0xEE, 0x40, 0x40, 0x00, 0x01, 0xBF, 0xF9, 0x01, 0x00, 0x00, 0x6F, 0xFF, 0xE4, 0x04, 0x00, 0x00, 0x1B, 0xFF, 0x90, 0x10, 0x00, 0x00, 0x6F, 0xFE, 0x40, 0x40, 0x00, 0x01, 0xBF, 0xF9, 0x01, 0x00, 0x00, 0x06, 0xFF, 0xE6, 0x04, 0x00, 0x00, 0x1B, 0xFF, 0x88, 0x10, 0x00, 0x00, 0x6F, 0xFE, 0x20, 0x40, 0x00, 0x01, 0xBF, 0xF8, 0x66, 0x00, 0x00, 0x06, 0xFF, 0xE0, 0xF0, 0x00, 0x00, 0x1B, 0xFF, 0x80, 0x80, 0x00, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x21, 0x08, 0x44, 0xEE, 0x00, 0x48, 0xC4, 0x31, 0x92, 0x20, 0x01, 0x25, 0x11, 0x45, 0x50, 0x80, 0x07, 0x14, 0x45, 0x15, 0x43, 0x80, 0x12, 0x71, 0x1C, 0x4D, 0x08, 0x00, 0x4A, 0x24, 0x89, 0x32, 0x20, 0x01, 0xC8, 0x9E, 0x24, 0x4E, 0xE0 }; const unsigned char img4[] = { 0x18, 0x10, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x8F, 0x3C, 0xF1, 0x89, 0x20, 0x81, 0x89, 0x20, 0x81, 0x89, 0x20, 0xF1, 0x89, 0x20, 0x11, 0x89, 0x20, 0x11, 0x89, 0x20, 0x11, 0x8F, 0x3C, 0xF1, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0xFF, 0xFF, 0xFF }; const unsigned char img5[] = { 0x08, 0x08, 0xFF, 0x03, 0xA5, 0x99, 0x99, 0xA5, 0xC3, 0xFF }; static struct img_xpm_test xpm_test_1 = { .img = img1, .len = sizeof(img1), .scheme = STK_IMG_SCHEME_BASIC, .xpm = "/* XPM */\n" "static char *xpm[] = {\n" "\"5 5 2 1\",\n" "\"0 c #000000\",\n" "\"1 c #FFFFFF\",\n" "\"11111\",\n" "\"11011\",\n" "\"10101\",\n" "\"11011\",\n" "\"11111\",\n" "};", }; static struct img_xpm_test xpm_test_2 = { .img = img2, .len = sizeof(img2), .clut = img2 + 0x16, .clut_len = 0x09, .scheme = STK_IMG_SCHEME_COLOR, .xpm = "/* XPM */\n" "static char *xpm[] = {\n" "\"8 8 3 1\",\n" "\"0 c #FF0000\",\n" "\"1 c #00FF00\",\n" "\"2 c #0000FF\",\n" "\"22222222\",\n" "\"20000002\",\n" "\"20111002\",\n" "\"20011002\",\n" "\"20011002\",\n" "\"20011102\",\n" "\"20000002\",\n" "\"22222222\",\n" "};", }; static struct img_xpm_test xpm_test_3 = { .img = img3, .len = sizeof(img3), .scheme = STK_IMG_SCHEME_BASIC, .xpm = "/* XPM */\n" "static char *xpm[] = {\n" "\"46 40 2 1\",\n" "\"0 c #000000\",\n" "\"1 c #FFFFFF\",\n" "\"0000000000000000000000000000000000000000000000\",\n" "\"0000000000000000011111111110000000000000000000\",\n" "\"0000000000000000111111111111000000000000000000\",\n" "\"0000000000000001110111111111100000000000000000\",\n" "\"0000000000000001101111111111100000000000000000\",\n" "\"0000000000000001101111111111100000000000000000\",\n" "\"0000000000000001101000000011100000000000000000\",\n" "\"0000000000000001101011111101101011110000000000\",\n" "\"0000000000000001101011111101100000111000000000\",\n" "\"0000000000000001101011111101100000001000000000\",\n" "\"0000000000000001101011111101100000000100000000\",\n" "\"0000000000000001101011111101100000000010000000\",\n" "\"0000000000000001101000000001111100000010000000\",\n" "\"0000000000000001101111111111100100000001000000\",\n" "\"0000000000000001101111111111100100000001000000\",\n" "\"0000000000000001101101111011100100000001000000\",\n" "\"0000000000000001101111111111100100000001000000\",\n" "\"0000000000011011111111111111100100000001000000\",\n" "\"0000000000000001101111111111100100000001000000\",\n" "\"0000000000000001101111111111100100000001000000\",\n" "\"0000000000000001101111111111100100000001000000\",\n" "\"0000000000000001101111111111100110000001000000\",\n" "\"0000000000000001101111111111100010000001000000\",\n" "\"0000000000000001101111111111100010000001000000\",\n" "\"0000000000000001101111111111100001100110000000\",\n" "\"0000000000000001101111111111100000111100000000\",\n" "\"0000000000000001101111111111100000001000000000\",\n" "\"0000000000000001111111111111100000000000000000\",\n" "\"0000000000000011000000000000110000000000000000\",\n" "\"0000000000000111111111111111111000000000000000\",\n" "\"0000000000000000000000000000000000000000000000\",\n" "\"0000000000000000000000000000000000000000000000\",\n" "\"0000000000000000000000000000000000000000000000\",\n" "\"0000011100001000010000100001000100111011100000\",\n" "\"0000010010001100010000110001100100100010000000\",\n" "\"0000010010010100010001010001010101000010000000\",\n" "\"0000011100010100010001010001010101000011100000\",\n" "\"0000010010011100010001110001001101000010000000\",\n" "\"0000010010100010010010001001001100100010000000\",\n" "\"0000011100100010011110001001000100111011100000\",\n" "};", }; static struct img_xpm_test xpm_test_4 = { .img = img4, .len = sizeof(img4), .scheme = STK_IMG_SCHEME_BASIC, .xpm = "/* XPM */\n" "static char *xpm[] = {\n" "\"24 16 2 1\",\n" "\"0 c #000000\",\n" "\"1 c #FFFFFF\",\n" "\"111111111111111111111111\",\n" "\"100000000000000000000001\",\n" "\"100000000000000000000001\",\n" "\"100000000000000000000001\",\n" "\"100011110011110011110001\",\n" "\"100010010010000010000001\",\n" "\"100010010010000010000001\",\n" "\"100010010010000011110001\",\n" "\"100010010010000000010001\",\n" "\"100010010010000000010001\",\n" "\"100010010010000000010001\",\n" "\"100011110011110011110001\",\n" "\"100000000000000000000001\",\n" "\"100000000000000000000001\",\n" "\"100000000000000000000001\",\n" "\"111111111111111111111111\",\n" "};", }; static struct img_xpm_test xpm_test_5 = { .img = img5, .len = sizeof(img5), .scheme = STK_IMG_SCHEME_BASIC, .xpm = "/* XPM */\n" "static char *xpm[] = {\n" "\"8 8 2 1\",\n" "\"0 c #000000\",\n" "\"1 c #FFFFFF\",\n" "\"11111111\",\n" "\"00000011\",\n" "\"10100101\",\n" "\"10011001\",\n" "\"10011001\",\n" "\"10100101\",\n" "\"11000011\",\n" "\"11111111\",\n" "};", }; static struct img_xpm_test xpm_test_6 = { .img = img2, .len = sizeof(img2), .clut = img2 + 0x16, .clut_len = 0x09, .scheme = STK_IMG_SCHEME_TRANSPARENCY, .xpm = "/* XPM */\n" "static char *xpm[] = {\n" "\"8 8 3 1\",\n" "\"0 c #FF0000\",\n" "\"1 c #00FF00\",\n" "\"2 c None\",\n" "\"22222222\",\n" "\"20000002\",\n" "\"20111002\",\n" "\"20011002\",\n" "\"20011002\",\n" "\"20011102\",\n" "\"20000002\",\n" "\"22222222\",\n" "};", }; static void test_img_to_xpm(gconstpointer data) { const struct img_xpm_test *test = data; char *xpm; xpm = stk_image_to_xpm(test->img, test->len, test->scheme, test->clut, test->clut_len); g_assert(memcmp(xpm, test->xpm, strlen(test->xpm)) == 0); g_free(xpm); } int main(int argc, char **argv) { g_test_init(&argc, &argv, NULL); g_test_add_data_func("/teststk/Display Text 1.1.1", &display_text_data_111, test_display_text); g_test_add_data_func("/teststk/Display Text 1.3.1", &display_text_data_131, test_display_text); g_test_add_data_func("/teststk/Display Text 1.4.1", &display_text_data_141, test_display_text); g_test_add_data_func("/teststk/Display Text 1.5.1", &display_text_data_151, test_display_text); g_test_add_data_func("/teststk/Display Text 1.6.1", &display_text_data_161, test_display_text); g_test_add_data_func("/teststk/Display Text 1.7.1", &display_text_data_171, test_display_text); g_test_add_data_func("/teststk/Display Text 5.1.1", &display_text_data_511, test_display_text); g_test_add_data_func("/teststk/Display Text 5.2.1", &display_text_data_521, test_display_text); g_test_add_data_func("/teststk/Display Text 5.3.1", &display_text_data_531, test_display_text); g_test_add_data_func("/teststk/Display Text 6.1.1", &display_text_data_611, test_display_text); g_test_add_data_func("/teststk/Display Text 7.1.1", &display_text_data_711, test_display_text); g_test_add_data_func("/teststk/Display Text 8.1.1", &display_text_data_811, test_display_text); g_test_add_data_func("/teststk/Display Text 8.2.1", &display_text_data_821, test_display_text); g_test_add_data_func("/teststk/Display Text 8.3.1", &display_text_data_831, test_display_text); g_test_add_data_func("/teststk/Display Text 8.4.1", &display_text_data_841, test_display_text); g_test_add_data_func("/teststk/Display Text 8.5.1", &display_text_data_851, test_display_text); g_test_add_data_func("/teststk/Display Text 8.6.1", &display_text_data_861, test_display_text); g_test_add_data_func("/teststk/Display Text 8.7.1", &display_text_data_871, test_display_text); g_test_add_data_func("/teststk/Display Text 8.8.1", &display_text_data_881, test_display_text); g_test_add_data_func("/teststk/Display Text 8.9.1", &display_text_data_891, test_display_text); g_test_add_data_func("/teststk/Display Text 9.1.1", &display_text_data_911, test_display_text); g_test_add_data_func("/teststk/Display Text 10.1.1", &display_text_data_1011, test_display_text); g_test_add_data_func("/teststk/Display Text response 1.1.1", &display_text_response_data_111, test_terminal_response_encoding); g_test_add_data_func("/teststk/Display Text response 1.2.1", &display_text_response_data_121, test_terminal_response_encoding); g_test_add_data_func("/teststk/Display Text response 1.3.1", &display_text_response_data_131, test_terminal_response_encoding); g_test_add_data_func("/teststk/Display Text response 1.5.1", &display_text_response_data_151, test_terminal_response_encoding); g_test_add_data_func("/teststk/Display Text response 1.7.1", &display_text_response_data_171, test_terminal_response_encoding); g_test_add_data_func("/teststk/Display Text response 1.8.1", &display_text_response_data_181, test_terminal_response_encoding); g_test_add_data_func("/teststk/Display Text response 1.9.1", &display_text_response_data_191, test_terminal_response_encoding); g_test_add_data_func("/teststk/Display Text response 2.1.1", &display_text_response_data_211, test_terminal_response_encoding); g_test_add_data_func("/teststk/Display Text response 5.1.1B", &display_text_response_data_511b, test_terminal_response_encoding); g_test_add_data_func("/teststk/Get Inkey 1.1.1", &get_inkey_data_111, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 1.2.1", &get_inkey_data_121, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 1.3.1", &get_inkey_data_131, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 1.4.1", &get_inkey_data_141, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 1.5.1", &get_inkey_data_151, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 1.6.1", &get_inkey_data_161, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 2.1.1", &get_inkey_data_211, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 3.1.1", &get_inkey_data_311, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 3.2.1", &get_inkey_data_321, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 4.1.1", &get_inkey_data_411, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 5.1.1", &get_inkey_data_511, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 5.1.2", &get_inkey_data_512, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 6.1.1", &get_inkey_data_611, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 6.2.1", &get_inkey_data_621, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 6.3.1", &get_inkey_data_631, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 6.4.1", &get_inkey_data_641, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 7.1.1", &get_inkey_data_711, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 7.1.2", &get_inkey_data_712, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 8.1.1", &get_inkey_data_811, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 9.1.1", &get_inkey_data_911, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 9.1.2", &get_inkey_data_912, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 9.2.1", &get_inkey_data_921, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 9.2.2", &get_inkey_data_922, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 9.3.1", &get_inkey_data_931, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 9.3.2", &get_inkey_data_932, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 9.4.1", &get_inkey_data_941, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 9.4.2", &get_inkey_data_942, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 9.4.3", &get_inkey_data_943, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 9.5.1", &get_inkey_data_951, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 9.5.2", &get_inkey_data_952, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 9.5.3", &get_inkey_data_953, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 9.6.1", &get_inkey_data_961, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 9.6.2", &get_inkey_data_962, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 9.6.3", &get_inkey_data_963, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 9.7.1", &get_inkey_data_971, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 9.7.2", &get_inkey_data_972, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 9.7.3", &get_inkey_data_973, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 9.8.1", &get_inkey_data_981, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 9.8.2", &get_inkey_data_982, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 9.8.3", &get_inkey_data_983, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 9.9.1", &get_inkey_data_991, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 9.9.2a", &get_inkey_data_992a, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 9.9.2b", &get_inkey_data_992b, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 9.9.3", &get_inkey_data_993, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 9.10.1", &get_inkey_data_9101, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 9.10.2", &get_inkey_data_9102, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 10.1.1", &get_inkey_data_1011, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 10.2.1", &get_inkey_data_1021, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 11.1.1", &get_inkey_data_1111, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 12.1.1", &get_inkey_data_1211, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 12.2.1", &get_inkey_data_1221, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey 13.1.1", &get_inkey_data_1311, test_get_inkey); g_test_add_data_func("/teststk/Get Inkey response 1.1.1", &get_inkey_response_data_111, test_terminal_response_encoding); g_test_add_data_func("/teststk/Get Inkey response 1.2.1", &get_inkey_response_data_121, test_terminal_response_encoding); g_test_add_data_func("/teststk/Get Inkey response 1.3.1", &get_inkey_response_data_131, test_terminal_response_encoding); g_test_add_data_func("/teststk/Get Inkey response 1.4.1", &get_inkey_response_data_141, test_terminal_response_encoding); g_test_add_data_func("/teststk/Get Inkey response 1.5.1", &get_inkey_response_data_151, test_terminal_response_encoding); g_test_add_data_func("/teststk/Get Inkey response 1.6.1", &get_inkey_response_data_161, test_terminal_response_encoding); g_test_add_data_func("/teststk/Get Inkey response 2.1.1", &get_inkey_response_data_211, test_terminal_response_encoding); g_test_add_data_func("/teststk/Get Inkey response 4.1.1", &get_inkey_response_data_411, test_terminal_response_encoding); g_test_add_data_func("/teststk/Get Inkey response 5.1.1", &get_inkey_response_data_511, test_terminal_response_encoding); g_test_add_data_func("/teststk/Get Inkey response 5.1.2", &get_inkey_response_data_512, test_terminal_response_encoding); g_test_add_data_func("/teststk/Get Inkey response 6.1.1B", &get_inkey_response_data_611b, test_terminal_response_encoding); g_test_add_data_func("/teststk/Get Inkey response 7.1.1", &get_inkey_response_data_711, test_terminal_response_encoding); g_test_add_data_func("/teststk/Get Inkey response 7.1.2", &get_inkey_response_data_712, test_terminal_response_encoding); g_test_add_data_func("/teststk/Get Inkey response 8.1.1", &get_inkey_response_data_811, test_terminal_response_encoding); g_test_add_data_func("/teststk/Get Inkey response 9.1.2", &get_inkey_response_data_912, test_terminal_response_encoding); g_test_add_data_func("/teststk/Get Inkey response 11.1.1", &get_inkey_response_data_1111, test_terminal_response_encoding); g_test_add_data_func("/teststk/Get Inkey response 13.1.1", &get_inkey_response_data_1311, test_terminal_response_encoding); g_test_add_data_func("/teststk/Get Input 1.1.1", &get_input_data_111, test_get_input); g_test_add_data_func("/teststk/Get Input 1.2.1", &get_input_data_121, test_get_input); g_test_add_data_func("/teststk/Get Input 1.3.1", &get_input_data_131, test_get_input); g_test_add_data_func("/teststk/Get Input 1.4.1", &get_input_data_141, test_get_input); g_test_add_data_func("/teststk/Get Input 1.5.1", &get_input_data_151, test_get_input); g_test_add_data_func("/teststk/Get Input 1.6.1", &get_input_data_161, test_get_input); g_test_add_data_func("/teststk/Get Input 1.7.1", &get_input_data_171, test_get_input); g_test_add_data_func("/teststk/Get Input 1.8.1", &get_input_data_181, test_get_input); g_test_add_data_func("/teststk/Get Input 1.9.1", &get_input_data_191, test_get_input); g_test_add_data_func("/teststk/Get Input 1.10.1", &get_input_data_1101, test_get_input); g_test_add_data_func("/teststk/Get Input 2.1.1", &get_input_data_211, test_get_input); g_test_add_data_func("/teststk/Get Input 3.1.1", &get_input_data_311, test_get_input); g_test_add_data_func("/teststk/Get Input 3.2.1", &get_input_data_321, test_get_input); g_test_add_data_func("/teststk/Get Input 4.1.1", &get_input_data_411, test_get_input); g_test_add_data_func("/teststk/Get Input 4.2.1", &get_input_data_421, test_get_input); g_test_add_data_func("/teststk/Get Input 5.1.1", &get_input_data_511, test_get_input); g_test_add_data_func("/teststk/Get Input 5.2.1", &get_input_data_521, test_get_input); g_test_add_data_func("/teststk/Get Input 6.1.1", &get_input_data_611, test_get_input); g_test_add_data_func("/teststk/Get Input 6.2.1", &get_input_data_621, test_get_input); g_test_add_data_func("/teststk/Get Input 6.3.1", &get_input_data_631, test_get_input); g_test_add_data_func("/teststk/Get Input 6.4.1", &get_input_data_641, test_get_input); g_test_add_data_func("/teststk/Get Input 7.1.1", &get_input_data_711, test_get_input); g_test_add_data_func("/teststk/Get Input 8.1.1", &get_input_data_811, test_get_input); g_test_add_data_func("/teststk/Get Input 8.1.2", &get_input_data_812, test_get_input); g_test_add_data_func("/teststk/Get Input 8.2.1", &get_input_data_821, test_get_input); g_test_add_data_func("/teststk/Get Input 8.2.2", &get_input_data_822, test_get_input); g_test_add_data_func("/teststk/Get Input 8.3.1", &get_input_data_831, test_get_input); g_test_add_data_func("/teststk/Get Input 8.3.2", &get_input_data_832, test_get_input); g_test_add_data_func("/teststk/Get Input 8.4.1", &get_input_data_841, test_get_input); g_test_add_data_func("/teststk/Get Input 8.4.2", &get_input_data_842, test_get_input); g_test_add_data_func("/teststk/Get Input 8.4.3", &get_input_data_843, test_get_input); g_test_add_data_func("/teststk/Get Input 8.5.1", &get_input_data_851, test_get_input); g_test_add_data_func("/teststk/Get Input 8.5.2", &get_input_data_852, test_get_input); g_test_add_data_func("/teststk/Get Input 8.5.3", &get_input_data_853, test_get_input); g_test_add_data_func("/teststk/Get Input 8.6.1", &get_input_data_861, test_get_input); g_test_add_data_func("/teststk/Get Input 8.6.2", &get_input_data_862, test_get_input); g_test_add_data_func("/teststk/Get Input 8.6.3", &get_input_data_863, test_get_input); g_test_add_data_func("/teststk/Get Input 8.7.1", &get_input_data_871, test_get_input); g_test_add_data_func("/teststk/Get Input 8.7.2", &get_input_data_872, test_get_input); g_test_add_data_func("/teststk/Get Input 8.7.3", &get_input_data_873, test_get_input); g_test_add_data_func("/teststk/Get Input 8.8.1", &get_input_data_881, test_get_input); g_test_add_data_func("/teststk/Get Input 8.8.2", &get_input_data_882, test_get_input); g_test_add_data_func("/teststk/Get Input 8.8.3", &get_input_data_883, test_get_input); g_test_add_data_func("/teststk/Get Input 8.9.1", &get_input_data_891, test_get_input); g_test_add_data_func("/teststk/Get Input 8.9.2", &get_input_data_892, test_get_input); g_test_add_data_func("/teststk/Get Input 8.9.3", &get_input_data_893, test_get_input); g_test_add_data_func("/teststk/Get Input 8.10.1", &get_input_data_8101, test_get_input); g_test_add_data_func("/teststk/Get Input 8.10.2", &get_input_data_8102, test_get_input); g_test_add_data_func("/teststk/Get Input 9.1.1", &get_input_data_911, test_get_input); g_test_add_data_func("/teststk/Get Input 9.2.1", &get_input_data_921, test_get_input); g_test_add_data_func("/teststk/Get Input 10.1.1", &get_input_data_1011, test_get_input); g_test_add_data_func("/teststk/Get Input 10.2.1", &get_input_data_1021, test_get_input); g_test_add_data_func("/teststk/Get Input 11.1.1", &get_input_data_1111, test_get_input); g_test_add_data_func("/teststk/Get Input 11.2.1", &get_input_data_1121, test_get_input); g_test_add_data_func("/teststk/Get Input 12.1.1", &get_input_data_1211, test_get_input); g_test_add_data_func("/teststk/Get Input 12.2.1", &get_input_data_1221, test_get_input); g_test_add_data_func("/teststk/Get Input response 1.1.1", &get_input_response_data_111, test_terminal_response_encoding); g_test_add_data_func("/teststk/Get Input response 1.2.1", &get_input_response_data_121, test_terminal_response_encoding); g_test_add_data_func("/teststk/Get Input response 1.3.1", &get_input_response_data_131, test_terminal_response_encoding); g_test_add_data_func("/teststk/Get Input response 1.4.1", &get_input_response_data_141, test_terminal_response_encoding); g_test_add_data_func("/teststk/Get Input response 1.5.1", &get_input_response_data_151, test_terminal_response_encoding); g_test_add_data_func("/teststk/Get Input response 1.6.1", &get_input_response_data_161, test_terminal_response_encoding); g_test_add_data_func("/teststk/Get Input response 1.7.1", &get_input_response_data_171, test_terminal_response_encoding); g_test_add_data_func("/teststk/Get Input response 1.8.1", &get_input_response_data_181, test_terminal_response_encoding); g_test_add_data_func("/teststk/Get Input response 1.9.1", &get_input_response_data_191, test_terminal_response_encoding); g_test_add_data_func("/teststk/Get Input response 2.1.1", &get_input_response_data_211, test_terminal_response_encoding); g_test_add_data_func("/teststk/Get Input response 3.1.1", &get_input_response_data_311, test_terminal_response_encoding); g_test_add_data_func("/teststk/Get Input response 4.1.1", &get_input_response_data_411, test_terminal_response_encoding); g_test_add_data_func("/teststk/Get Input response 4.2.1", &get_input_response_data_421, test_terminal_response_encoding); g_test_add_data_func("/teststk/Get Input response 6.1.1A", &get_input_response_data_611a, test_terminal_response_encoding); g_test_add_data_func("/teststk/Get Input response 6.1.1B", &get_input_response_data_611b, test_terminal_response_encoding); g_test_add_data_func("/teststk/Get Input response 7.1.1", &get_input_response_data_711, test_terminal_response_encoding); g_test_add_data_func("/teststk/Get Input response 8.1.2", &get_input_response_data_812, test_terminal_response_encoding); g_test_add_data_func("/teststk/Get Input response 8.4.3", &get_input_response_data_843, test_terminal_response_encoding); g_test_add_data_func("/teststk/Get Input response 10.1.1", &get_input_response_data_1011, test_terminal_response_encoding); g_test_add_data_func("/teststk/Get Input response 10.2.1", &get_input_response_data_1021, test_terminal_response_encoding); g_test_add_data_func("/teststk/Get Input response 12.1.1", &get_input_response_data_1211, test_terminal_response_encoding); g_test_add_data_func("/teststk/Get Input response 12.2.1", &get_input_response_data_1221, test_terminal_response_encoding); g_test_add_data_func("/teststk/More Time 1.1.1", &more_time_data_111, test_more_time); g_test_add_data_func("/teststk/More Time response 1.1.1", &more_time_response_data_111, test_terminal_response_encoding); g_test_add_data_func("/teststk/Play Tone 1.1.1", &play_tone_data_111, test_play_tone); g_test_add_data_func("/teststk/Play Tone 1.1.2", &play_tone_data_112, test_play_tone); g_test_add_data_func("/teststk/Play Tone 1.1.3", &play_tone_data_113, test_play_tone); g_test_add_data_func("/teststk/Play Tone 1.1.4", &play_tone_data_114, test_play_tone); g_test_add_data_func("/teststk/Play Tone 1.1.5", &play_tone_data_115, test_play_tone); g_test_add_data_func("/teststk/Play Tone 1.1.6", &play_tone_data_116, test_play_tone); g_test_add_data_func("/teststk/Play Tone 1.1.7", &play_tone_data_117, test_play_tone); g_test_add_data_func("/teststk/Play Tone 1.1.8", &play_tone_data_118, test_play_tone); g_test_add_data_func("/teststk/Play Tone 1.1.9", &play_tone_data_119, test_play_tone); g_test_add_data_func("/teststk/Play Tone 1.1.10", &play_tone_data_1110, test_play_tone); g_test_add_data_func("/teststk/Play Tone 1.1.11", &play_tone_data_1111, test_play_tone); g_test_add_data_func("/teststk/Play Tone 1.1.12", &play_tone_data_1112, test_play_tone); g_test_add_data_func("/teststk/Play Tone 1.1.13", &play_tone_data_1113, test_play_tone); g_test_add_data_func("/teststk/Play Tone 1.1.14", &play_tone_data_1114, test_play_tone); g_test_add_data_func("/teststk/Play Tone 1.1.15", &play_tone_data_1115, test_play_tone); g_test_add_data_func("/teststk/Play Tone 2.1.1", &play_tone_data_211, test_play_tone); g_test_add_data_func("/teststk/Play Tone 2.1.2", &play_tone_data_212, test_play_tone); g_test_add_data_func("/teststk/Play Tone 2.1.3", &play_tone_data_213, test_play_tone); g_test_add_data_func("/teststk/Play Tone 3.1.1", &play_tone_data_311, test_play_tone); g_test_add_data_func("/teststk/Play Tone 3.2.1", &play_tone_data_321, test_play_tone); g_test_add_data_func("/teststk/Play Tone 3.3.1", &play_tone_data_331, test_play_tone); g_test_add_data_func("/teststk/Play Tone 3.4.1", &play_tone_data_341, test_play_tone); g_test_add_data_func("/teststk/Play Tone 4.1.1", &play_tone_data_411, test_play_tone); g_test_add_data_func("/teststk/Play Tone 4.1.2", &play_tone_data_412, test_play_tone); g_test_add_data_func("/teststk/Play Tone 4.2.1", &play_tone_data_421, test_play_tone); g_test_add_data_func("/teststk/Play Tone 4.2.2", &play_tone_data_422, test_play_tone); g_test_add_data_func("/teststk/Play Tone 4.3.1", &play_tone_data_431, test_play_tone); g_test_add_data_func("/teststk/Play Tone 4.3.2", &play_tone_data_432, test_play_tone); g_test_add_data_func("/teststk/Play Tone 4.4.1", &play_tone_data_441, test_play_tone); g_test_add_data_func("/teststk/Play Tone 4.4.2", &play_tone_data_442, test_play_tone); g_test_add_data_func("/teststk/Play Tone 4.4.3", &play_tone_data_443, test_play_tone); g_test_add_data_func("/teststk/Play Tone 4.5.1", &play_tone_data_451, test_play_tone); g_test_add_data_func("/teststk/Play Tone 4.5.2", &play_tone_data_452, test_play_tone); g_test_add_data_func("/teststk/Play Tone 4.5.3", &play_tone_data_453, test_play_tone); g_test_add_data_func("/teststk/Play Tone 4.6.1", &play_tone_data_461, test_play_tone); g_test_add_data_func("/teststk/Play Tone 4.6.2", &play_tone_data_462, test_play_tone); g_test_add_data_func("/teststk/Play Tone 4.6.3", &play_tone_data_463, test_play_tone); g_test_add_data_func("/teststk/Play Tone 4.7.1", &play_tone_data_471, test_play_tone); g_test_add_data_func("/teststk/Play Tone 4.7.2", &play_tone_data_472, test_play_tone); g_test_add_data_func("/teststk/Play Tone 4.7.3", &play_tone_data_473, test_play_tone); g_test_add_data_func("/teststk/Play Tone 4.8.1", &play_tone_data_481, test_play_tone); g_test_add_data_func("/teststk/Play Tone 4.8.2", &play_tone_data_482, test_play_tone); g_test_add_data_func("/teststk/Play Tone 4.8.3", &play_tone_data_483, test_play_tone); g_test_add_data_func("/teststk/Play Tone 4.9.1", &play_tone_data_491, test_play_tone); g_test_add_data_func("/teststk/Play Tone 4.9.2", &play_tone_data_492, test_play_tone); g_test_add_data_func("/teststk/Play Tone 4.9.3", &play_tone_data_493, test_play_tone); g_test_add_data_func("/teststk/Play Tone 4.10.1", &play_tone_data_4101, test_play_tone); g_test_add_data_func("/teststk/Play Tone 4.10.2", &play_tone_data_4102, test_play_tone); g_test_add_data_func("/teststk/Play Tone 5.1.1", &play_tone_data_511, test_play_tone); g_test_add_data_func("/teststk/Play Tone 5.1.2", &play_tone_data_512, test_play_tone); g_test_add_data_func("/teststk/Play Tone 5.1.3", &play_tone_data_513, test_play_tone); g_test_add_data_func("/teststk/Play Tone 6.1.1", &play_tone_data_611, test_play_tone); g_test_add_data_func("/teststk/Play Tone 6.1.2", &play_tone_data_612, test_play_tone); g_test_add_data_func("/teststk/Play Tone 6.1.3", &play_tone_data_613, test_play_tone); g_test_add_data_func("/teststk/Play Tone response 1.1.1", &play_tone_response_data_111, test_terminal_response_encoding); g_test_add_data_func("/teststk/Play Tone response 1.1.9B", &play_tone_response_data_119b, test_terminal_response_encoding); g_test_add_data_func("/teststk/Play Tone response 1.1.14", &play_tone_response_data_1114, test_terminal_response_encoding); g_test_add_data_func("/teststk/Play Tone response 3.1.1B", &play_tone_response_data_311b, test_terminal_response_encoding); g_test_add_data_func("/teststk/Poll Interval 1.1.1", &poll_interval_data_111, test_poll_interval); g_test_add_data_func("/teststk/Poll Interval response 1.1.1", &poll_interval_response_data_111, test_terminal_response_encoding); g_test_add_data_func("/teststk/Poll Interval response 1.1.1A", &poll_interval_response_data_111a, test_terminal_response_encoding); 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/Setup Menu Negative 1", &setup_menu_data_neg_1, test_setup_menu_missing_val); g_test_add_data_func("/teststk/Setup Menu Negative 2", &setup_menu_data_neg_2, test_setup_menu_neg); g_test_add_data_func("/teststk/Setup Menu Negative 3", &setup_menu_data_neg_3, test_setup_menu_neg); g_test_add_data_func("/teststk/Setup Menu Negative 4", &setup_menu_data_neg_4, test_setup_menu_neg); g_test_add_data_func("/teststk/Set Up Menu response 1.1.1", &set_up_menu_response_data_111, test_terminal_response_encoding); g_test_add_data_func("/teststk/Set Up Menu response 4.1.1B", &set_up_menu_response_data_411b, test_terminal_response_encoding); g_test_add_data_func("/teststk/Set Up Menu response 5.1.1", &set_up_menu_response_data_511, test_terminal_response_encoding); g_test_add_data_func("/teststk/Select Item 1.1.1", &select_item_data_111, test_select_item); g_test_add_data_func("/teststk/Select Item 1.2.1", &select_item_data_121, test_select_item); g_test_add_data_func("/teststk/Select Item 1.3.1", &select_item_data_131, test_select_item); g_test_add_data_func("/teststk/Select Item 1.4.1", &select_item_data_141, test_select_item); g_test_add_data_func("/teststk/Select Item 1.5.1", &select_item_data_151, test_select_item); g_test_add_data_func("/teststk/Select Item 1.6.1", &select_item_data_161, test_select_item); g_test_add_data_func("/teststk/Select Item 2.1.1", &select_item_data_211, test_select_item); g_test_add_data_func("/teststk/Select Item 3.1.1", &select_item_data_311, test_select_item); g_test_add_data_func("/teststk/Select Item 4.1.1", &select_item_data_411, test_select_item); g_test_add_data_func("/teststk/Select Item 5.1.1", &select_item_data_511, test_select_item); g_test_add_data_func("/teststk/Select Item 5.2.1", &select_item_data_521, test_select_item); g_test_add_data_func("/teststk/Select Item 6.1.1", &select_item_data_611, test_select_item); g_test_add_data_func("/teststk/Select Item 6.2.1", &select_item_data_621, test_select_item); g_test_add_data_func("/teststk/Select Item 7.1.1", &select_item_data_711, test_select_item); g_test_add_data_func("/teststk/Select Item 8.1.1", &select_item_data_811, test_select_item); g_test_add_data_func("/teststk/Select Item 9.1.1", &select_item_data_911, test_select_item); g_test_add_data_func("/teststk/Select Item 9.1.2", &select_item_data_912, test_select_item); g_test_add_data_func("/teststk/Select Item 9.2.1", &select_item_data_921, test_select_item); g_test_add_data_func("/teststk/Select Item 9.2.2", &select_item_data_922, test_select_item); g_test_add_data_func("/teststk/Select Item 9.3.1", &select_item_data_931, test_select_item); g_test_add_data_func("/teststk/Select Item 9.3.2", &select_item_data_932, test_select_item); g_test_add_data_func("/teststk/Select Item 9.4.1", &select_item_data_941, test_select_item); g_test_add_data_func("/teststk/Select Item 9.4.2", &select_item_data_942, test_select_item); g_test_add_data_func("/teststk/Select Item 9.4.3", &select_item_data_943, test_select_item); g_test_add_data_func("/teststk/Select Item 9.5.1", &select_item_data_951, test_select_item); g_test_add_data_func("/teststk/Select Item 9.5.2", &select_item_data_952, test_select_item); g_test_add_data_func("/teststk/Select Item 9.5.3", &select_item_data_953, test_select_item); g_test_add_data_func("/teststk/Select Item 9.6.1", &select_item_data_961, test_select_item); g_test_add_data_func("/teststk/Select Item 9.6.2", &select_item_data_962, test_select_item); g_test_add_data_func("/teststk/Select Item 9.6.3", &select_item_data_963, test_select_item); g_test_add_data_func("/teststk/Select Item 9.7.1", &select_item_data_971, test_select_item); g_test_add_data_func("/teststk/Select Item 9.7.2", &select_item_data_972, test_select_item); g_test_add_data_func("/teststk/Select Item 9.7.3", &select_item_data_973, test_select_item); g_test_add_data_func("/teststk/Select Item 9.8.1", &select_item_data_981, test_select_item); g_test_add_data_func("/teststk/Select Item 9.8.2", &select_item_data_982, test_select_item); g_test_add_data_func("/teststk/Select Item 9.8.3", &select_item_data_983, test_select_item); g_test_add_data_func("/teststk/Select Item 9.9.1", &select_item_data_991, test_select_item); g_test_add_data_func("/teststk/Select Item 9.9.2", &select_item_data_992, test_select_item); g_test_add_data_func("/teststk/Select Item 9.9.3", &select_item_data_993, test_select_item); g_test_add_data_func("/teststk/Select Item 9.10.1", &select_item_data_9101, test_select_item); g_test_add_data_func("/teststk/Select Item 9.10.2", &select_item_data_9102, test_select_item); g_test_add_data_func("/teststk/Select Item 10.1.1", &select_item_data_1011, test_select_item); g_test_add_data_func("/teststk/Select Item 10.2.1", &select_item_data_1021, test_select_item); g_test_add_data_func("/teststk/Select Item 10.3.1", &select_item_data_1031, test_select_item); g_test_add_data_func("/teststk/Select Item 11.1.1", &select_item_data_1111, test_select_item); g_test_add_data_func("/teststk/Select Item 12.1.1", &select_item_data_1211, test_select_item); g_test_add_data_func("/teststk/Select Item 12.2.1", &select_item_data_1221, test_select_item); g_test_add_data_func("/teststk/Select Item 12.3.1", &select_item_data_1231, test_select_item); g_test_add_data_func("/teststk/Select Item response 1.1.1", &select_item_response_data_111, test_terminal_response_encoding); g_test_add_data_func("/teststk/Select Item response 1.2.1", &select_item_response_data_121, test_terminal_response_encoding); g_test_add_data_func("/teststk/Select Item response 1.3.1", &select_item_response_data_131, test_terminal_response_encoding); g_test_add_data_func("/teststk/Select Item response 1.4.1", &select_item_response_data_141, test_terminal_response_encoding); g_test_add_data_func("/teststk/Select Item response 1.4.2", &select_item_response_data_142, test_terminal_response_encoding); g_test_add_data_func("/teststk/Select Item response 1.5.1", &select_item_response_data_151, test_terminal_response_encoding); g_test_add_data_func("/teststk/Select Item response 3.1.1", &select_item_response_data_311, test_terminal_response_encoding); g_test_add_data_func("/teststk/Select Item response 4.1.1", &select_item_response_data_411, test_terminal_response_encoding); g_test_add_data_func("/teststk/Select Item response 5.1.1B", &select_item_response_data_511b, test_terminal_response_encoding); g_test_add_data_func("/teststk/Select Item response 6.1.1", &select_item_response_data_611, test_terminal_response_encoding); g_test_add_data_func("/teststk/Select Item response 6.2.1", &select_item_response_data_621, test_terminal_response_encoding); g_test_add_data_func("/teststk/Select Item response 7.1.1", &select_item_response_data_711, test_terminal_response_encoding); g_test_add_data_func("/teststk/Select Item response 8.1.1", &select_item_response_data_811, test_terminal_response_encoding); g_test_add_data_func("/teststk/Send SMS 1.1.1", &send_sms_data_111, test_send_sms); g_test_add_data_func("/teststk/Send SMS 1.2.1", &send_sms_data_121, test_send_sms); g_test_add_data_func("/teststk/Send SMS 1.3.1", &send_sms_data_131, test_send_sms); g_test_add_data_func("/teststk/Send SMS 1.4.1", &send_sms_data_141, test_send_sms); g_test_add_data_func("/teststk/Send SMS 1.5.1", &send_sms_data_151, test_send_sms); g_test_add_data_func("/teststk/Send SMS 1.6.1", &send_sms_data_161, test_send_sms); g_test_add_data_func("/teststk/Send SMS 1.7.1", &send_sms_data_171, test_send_sms); g_test_add_data_func("/teststk/Send SMS 1.8.1", &send_sms_data_181, test_send_sms); g_test_add_data_func("/teststk/Send SMS 2.1.1", &send_sms_data_211, test_send_sms); g_test_add_data_func("/teststk/Send SMS 2.1.2", &send_sms_data_212, test_send_sms); g_test_add_data_func("/teststk/Send SMS 2.1.3", &send_sms_data_213, test_send_sms); g_test_add_data_func("/teststk/Send SMS 3.1.1", &send_sms_data_311, test_send_sms); g_test_add_data_func("/teststk/Send SMS 3.2.1", &send_sms_data_321, test_send_sms); g_test_add_data_func("/teststk/Send SMS 4.1.1", &send_sms_data_411, test_send_sms); g_test_add_data_func("/teststk/Send SMS 4.1.2", &send_sms_data_412, test_send_sms); g_test_add_data_func("/teststk/Send SMS 4.2.1", &send_sms_data_421, test_send_sms); g_test_add_data_func("/teststk/Send SMS 4.2.2", &send_sms_data_422, test_send_sms); g_test_add_data_func("/teststk/Send SMS 4.3.1", &send_sms_data_431, test_send_sms); g_test_add_data_func("/teststk/Send SMS 4.3.2", &send_sms_data_432, test_send_sms); g_test_add_data_func("/teststk/Send SMS 4.4.1", &send_sms_data_441, test_send_sms); g_test_add_data_func("/teststk/Send SMS 4.4.2", &send_sms_data_442, test_send_sms); g_test_add_data_func("/teststk/Send SMS 4.4.3", &send_sms_data_443, test_send_sms); g_test_add_data_func("/teststk/Send SMS 4.5.1", &send_sms_data_451, test_send_sms); g_test_add_data_func("/teststk/Send SMS 4.5.2", &send_sms_data_452, test_send_sms); g_test_add_data_func("/teststk/Send SMS 4.5.3", &send_sms_data_453, test_send_sms); g_test_add_data_func("/teststk/Send SMS 4.6.1", &send_sms_data_461, test_send_sms); g_test_add_data_func("/teststk/Send SMS 4.6.2", &send_sms_data_462, test_send_sms); g_test_add_data_func("/teststk/Send SMS 4.6.3", &send_sms_data_463, test_send_sms); g_test_add_data_func("/teststk/Send SMS 4.7.1", &send_sms_data_471, test_send_sms); g_test_add_data_func("/teststk/Send SMS 4.7.2", &send_sms_data_472, test_send_sms); g_test_add_data_func("/teststk/Send SMS 4.7.3", &send_sms_data_473, test_send_sms); g_test_add_data_func("/teststk/Send SMS 4.8.1", &send_sms_data_481, test_send_sms); g_test_add_data_func("/teststk/Send SMS 4.8.2", &send_sms_data_482, test_send_sms); g_test_add_data_func("/teststk/Send SMS 4.8.3", &send_sms_data_483, test_send_sms); g_test_add_data_func("/teststk/Send SMS 4.9.1", &send_sms_data_491, test_send_sms); g_test_add_data_func("/teststk/Send SMS 4.9.2", &send_sms_data_492, test_send_sms); g_test_add_data_func("/teststk/Send SMS 4.9.3", &send_sms_data_493, test_send_sms); g_test_add_data_func("/teststk/Send SMS 4.10.1", &send_sms_data_4101, test_send_sms); g_test_add_data_func("/teststk/Send SMS 4.10.2", &send_sms_data_4102, test_send_sms); g_test_add_data_func("/teststk/Send SMS 5.1.1", &send_sms_data_511, test_send_sms); g_test_add_data_func("/teststk/Send SMS 5.1.2", &send_sms_data_512, test_send_sms); g_test_add_data_func("/teststk/Send SMS 5.1.3", &send_sms_data_513, test_send_sms); g_test_add_data_func("/teststk/Send SMS 6.1.1", &send_sms_data_611, test_send_sms); g_test_add_data_func("/teststk/Send SMS 6.1.2", &send_sms_data_612, test_send_sms); g_test_add_data_func("/teststk/Send SMS 6.1.3", &send_sms_data_613, test_send_sms); g_test_add_data_func("/teststk/Send SS 1.1.1", &send_ss_data_111, test_send_ss); g_test_add_data_func("/teststk/Send SS 1.4.1", &send_ss_data_141, test_send_ss); g_test_add_data_func("/teststk/Send SS 1.5.1", &send_ss_data_151, test_send_ss); g_test_add_data_func("/teststk/Send SS 1.6.1", &send_ss_data_161, test_send_ss); g_test_add_data_func("/teststk/Send SS 2.1.1", &send_ss_data_211, test_send_ss); g_test_add_data_func("/teststk/Send SS 2.2.1", &send_ss_data_221, test_send_ss); g_test_add_data_func("/teststk/Send SS 2.3.1", &send_ss_data_231, test_send_ss); g_test_add_data_func("/teststk/Send SS 2.4.1", &send_ss_data_241, test_send_ss); g_test_add_data_func("/teststk/Send SS 3.1.1", &send_ss_data_311, test_send_ss); g_test_add_data_func("/teststk/Send SS 4.1.1", &send_ss_data_411, test_send_ss); g_test_add_data_func("/teststk/Send SS 4.1.2", &send_ss_data_412, test_send_ss); g_test_add_data_func("/teststk/Send SS 4.2.1", &send_ss_data_421, test_send_ss); g_test_add_data_func("/teststk/Send SS 4.2.2", &send_ss_data_422, test_send_ss); g_test_add_data_func("/teststk/Send SS 4.3.1", &send_ss_data_431, test_send_ss); g_test_add_data_func("/teststk/Send SS 4.3.2", &send_ss_data_432, test_send_ss); g_test_add_data_func("/teststk/Send SS 4.4.1", &send_ss_data_441, test_send_ss); g_test_add_data_func("/teststk/Send SS 4.4.2", &send_ss_data_442, test_send_ss); g_test_add_data_func("/teststk/Send SS 4.4.3", &send_ss_data_443, test_send_ss); g_test_add_data_func("/teststk/Send SS 4.5.1", &send_ss_data_451, test_send_ss); g_test_add_data_func("/teststk/Send SS 4.5.2", &send_ss_data_452, test_send_ss); g_test_add_data_func("/teststk/Send SS 4.5.3", &send_ss_data_453, test_send_ss); g_test_add_data_func("/teststk/Send SS 4.6.1", &send_ss_data_461, test_send_ss); g_test_add_data_func("/teststk/Send SS 4.6.2", &send_ss_data_462, test_send_ss); g_test_add_data_func("/teststk/Send SS 4.6.3", &send_ss_data_463, test_send_ss); g_test_add_data_func("/teststk/Send SS 4.7.1", &send_ss_data_471, test_send_ss); g_test_add_data_func("/teststk/Send SS 4.7.2", &send_ss_data_472, test_send_ss); g_test_add_data_func("/teststk/Send SS 4.7.3", &send_ss_data_473, test_send_ss); g_test_add_data_func("/teststk/Send SS 4.8.1", &send_ss_data_481, test_send_ss); g_test_add_data_func("/teststk/Send SS 4.8.2", &send_ss_data_482, test_send_ss); g_test_add_data_func("/teststk/Send SS 4.8.3", &send_ss_data_483, test_send_ss); g_test_add_data_func("/teststk/Send SS 4.9.1", &send_ss_data_491, test_send_ss); g_test_add_data_func("/teststk/Send SS 4.9.2", &send_ss_data_492, test_send_ss); g_test_add_data_func("/teststk/Send SS 4.9.3", &send_ss_data_493, test_send_ss); g_test_add_data_func("/teststk/Send SS 4.10.1", &send_ss_data_4101, test_send_ss); g_test_add_data_func("/teststk/Send SS 4.10.2", &send_ss_data_4102, test_send_ss); g_test_add_data_func("/teststk/Send SS 5.1.1", &send_ss_data_511, test_send_ss); g_test_add_data_func("/teststk/Send SS 6.1.1", &send_ss_data_611, test_send_ss); g_test_add_data_func("/teststk/Send USSD 1.1.1", &send_ussd_data_111, test_send_ussd); g_test_add_data_func("/teststk/Send USSD 1.2.1", &send_ussd_data_121, test_send_ussd); g_test_add_data_func("/teststk/Send USSD 1.3.1", &send_ussd_data_131, test_send_ussd); g_test_add_data_func("/teststk/Send USSD 1.6.1", &send_ussd_data_161, test_send_ussd); g_test_add_data_func("/teststk/Send USSD 1.7.1", &send_ussd_data_171, test_send_ussd); g_test_add_data_func("/teststk/Send USSD 1.8.1", &send_ussd_data_181, test_send_ussd); g_test_add_data_func("/teststk/Send USSD 2.1.1", &send_ussd_data_211, test_send_ussd); g_test_add_data_func("/teststk/Send USSD 2.2.1", &send_ussd_data_221, test_send_ussd); g_test_add_data_func("/teststk/Send USSD 2.3.1", &send_ussd_data_231, test_send_ussd); g_test_add_data_func("/teststk/Send USSD 2.4.1", &send_ussd_data_241, test_send_ussd); g_test_add_data_func("/teststk/Send USSD 3.1.1", &send_ussd_data_311, test_send_ussd); g_test_add_data_func("/teststk/Send USSD 4.1.1", &send_ussd_data_411, test_send_ussd); g_test_add_data_func("/teststk/Send USSD 4.1.2", &send_ussd_data_412, test_send_ussd); g_test_add_data_func("/teststk/Send USSD 4.2.1", &send_ussd_data_421, test_send_ussd); g_test_add_data_func("/teststk/Send USSD 4.2.2", &send_ussd_data_422, test_send_ussd); g_test_add_data_func("/teststk/Send USSD 4.3.1", &send_ussd_data_431, test_send_ussd); g_test_add_data_func("/teststk/Send USSD 4.3.2", &send_ussd_data_432, test_send_ussd); g_test_add_data_func("/teststk/Send USSD 4.4.1", &send_ussd_data_441, test_send_ussd); g_test_add_data_func("/teststk/Send USSD 4.4.2", &send_ussd_data_442, test_send_ussd); g_test_add_data_func("/teststk/Send USSD 4.4.3", &send_ussd_data_443, test_send_ussd); g_test_add_data_func("/teststk/Send USSD 4.5.1", &send_ussd_data_451, test_send_ussd); g_test_add_data_func("/teststk/Send USSD 4.5.2", &send_ussd_data_452, test_send_ussd); g_test_add_data_func("/teststk/Send USSD 4.5.3", &send_ussd_data_453, test_send_ussd); g_test_add_data_func("/teststk/Send USSD 4.6.1", &send_ussd_data_461, test_send_ussd); g_test_add_data_func("/teststk/Send USSD 4.6.2", &send_ussd_data_462, test_send_ussd); g_test_add_data_func("/teststk/Send USSD 4.6.3", &send_ussd_data_463, test_send_ussd); g_test_add_data_func("/teststk/Send USSD 4.7.1", &send_ussd_data_471, test_send_ussd); g_test_add_data_func("/teststk/Send USSD 4.7.2", &send_ussd_data_472, test_send_ussd); g_test_add_data_func("/teststk/Send USSD 4.7.3", &send_ussd_data_473, test_send_ussd); g_test_add_data_func("/teststk/Send USSD 4.8.1", &send_ussd_data_481, test_send_ussd); g_test_add_data_func("/teststk/Send USSD 4.8.2", &send_ussd_data_482, test_send_ussd); g_test_add_data_func("/teststk/Send USSD 4.8.3", &send_ussd_data_483, test_send_ussd); g_test_add_data_func("/teststk/Send USSD 4.9.1", &send_ussd_data_491, test_send_ussd); g_test_add_data_func("/teststk/Send USSD 4.9.2", &send_ussd_data_492, test_send_ussd); g_test_add_data_func("/teststk/Send USSD 4.9.3", &send_ussd_data_493, test_send_ussd); g_test_add_data_func("/teststk/Send USSD 4.10.1", &send_ussd_data_4101, test_send_ussd); g_test_add_data_func("/teststk/Send USSD 4.10.2", &send_ussd_data_4102, test_send_ussd); g_test_add_data_func("/teststk/Send USSD 5.1.1", &send_ussd_data_511, test_send_ussd); g_test_add_data_func("/teststk/Send USSD 6.1.1", &send_ussd_data_611, test_send_ussd); g_test_add_data_func("/teststk/Send SMS response 1.1.1", &send_sms_response_data_111, test_terminal_response_encoding); g_test_add_data_func("/teststk/Send SMS response 1.2.1", &send_sms_response_data_121, test_terminal_response_encoding); g_test_add_data_func("/teststk/Send SMS response 3.1.1B", &send_sms_response_data_311b, test_terminal_response_encoding); g_test_add_data_func("/teststk/Setup Call 1.1.1", &setup_call_data_111, test_setup_call); g_test_add_data_func("/teststk/Setup Call 1.4.1", &setup_call_data_141, test_setup_call); g_test_add_data_func("/teststk/Setup Call 1.5.1", &setup_call_data_151, test_setup_call); g_test_add_data_func("/teststk/Setup Call 1.8.1", &setup_call_data_181, test_setup_call); g_test_add_data_func("/teststk/Setup Call 1.9.1", &setup_call_data_191, test_setup_call); g_test_add_data_func("/teststk/Setup Call 1.10.1", &setup_call_data_1101, test_setup_call); g_test_add_data_func("/teststk/Setup Call 1.11.1", &setup_call_data_1111, test_setup_call); g_test_add_data_func("/teststk/Setup Call 1.12.1", &setup_call_data_1121, test_setup_call); g_test_add_data_func("/teststk/Setup Call 2.1.1", &setup_call_data_211, test_setup_call); g_test_add_data_func("/teststk/Setup Call 3.1.1", &setup_call_data_311, test_setup_call); g_test_add_data_func("/teststk/Setup Call 3.2.1", &setup_call_data_321, test_setup_call); g_test_add_data_func("/teststk/Setup Call 3.3.1", &setup_call_data_331, test_setup_call); g_test_add_data_func("/teststk/Setup Call 3.4.1", &setup_call_data_341, test_setup_call); g_test_add_data_func("/teststk/Setup Call 4.1.1", &setup_call_data_411, test_setup_call); g_test_add_data_func("/teststk/Setup Call 4.1.2", &setup_call_data_412, test_setup_call); g_test_add_data_func("/teststk/Setup Call 4.2.1", &setup_call_data_421, test_setup_call); g_test_add_data_func("/teststk/Setup Call 4.2.2", &setup_call_data_422, test_setup_call); g_test_add_data_func("/teststk/Setup Call 4.3.1", &setup_call_data_431, test_setup_call); g_test_add_data_func("/teststk/Setup Call 4.3.2", &setup_call_data_432, test_setup_call); g_test_add_data_func("/teststk/Setup Call 4.4.1", &setup_call_data_441, test_setup_call); g_test_add_data_func("/teststk/Setup Call 4.4.2", &setup_call_data_442, test_setup_call); g_test_add_data_func("/teststk/Setup Call 4.4.3", &setup_call_data_443, test_setup_call); g_test_add_data_func("/teststk/Setup Call 4.5.1", &setup_call_data_451, test_setup_call); g_test_add_data_func("/teststk/Setup Call 4.5.2", &setup_call_data_452, test_setup_call); g_test_add_data_func("/teststk/Setup Call 4.5.3", &setup_call_data_453, test_setup_call); g_test_add_data_func("/teststk/Setup Call 4.6.1", &setup_call_data_461, test_setup_call); g_test_add_data_func("/teststk/Setup Call 4.6.2", &setup_call_data_462, test_setup_call); g_test_add_data_func("/teststk/Setup Call 4.6.3", &setup_call_data_463, test_setup_call); g_test_add_data_func("/teststk/Setup Call 4.7.1", &setup_call_data_471, test_setup_call); g_test_add_data_func("/teststk/Setup Call 4.7.2", &setup_call_data_472, test_setup_call); g_test_add_data_func("/teststk/Setup Call 4.7.3", &setup_call_data_473, test_setup_call); g_test_add_data_func("/teststk/Setup Call 4.8.1", &setup_call_data_481, test_setup_call); g_test_add_data_func("/teststk/Setup Call 4.8.2", &setup_call_data_482, test_setup_call); g_test_add_data_func("/teststk/Setup Call 4.8.3", &setup_call_data_483, test_setup_call); g_test_add_data_func("/teststk/Setup Call 4.9.1", &setup_call_data_491, test_setup_call); g_test_add_data_func("/teststk/Setup Call 4.9.2", &setup_call_data_492, test_setup_call); g_test_add_data_func("/teststk/Setup Call 4.9.3", &setup_call_data_493, test_setup_call); g_test_add_data_func("/teststk/Setup Call 4.10.1", &setup_call_data_4101, test_setup_call); g_test_add_data_func("/teststk/Setup Call 4.10.2", &setup_call_data_4102, test_setup_call); g_test_add_data_func("/teststk/Setup Call 5.1.1", &setup_call_data_511, test_setup_call); g_test_add_data_func("/teststk/Setup Call 5.2.1", &setup_call_data_521, test_setup_call); g_test_add_data_func("/teststk/Setup Call 6.1.1", &setup_call_data_611, test_setup_call); g_test_add_data_func("/teststk/Setup Call 6.2.1", &setup_call_data_621, test_setup_call); g_test_add_data_func("/teststk/Setup Call 7.1.1", &setup_call_data_711, test_setup_call); g_test_add_data_func("/teststk/Setup Call 7.2.1", &setup_call_data_721, test_setup_call); g_test_add_data_func("/teststk/Set Up Call response 1.1.1", &set_up_call_response_data_111, test_terminal_response_encoding); g_test_add_data_func("/teststk/Set Up Call response 1.2.1", &set_up_call_response_data_121, test_terminal_response_encoding); g_test_add_data_func("/teststk/Set Up Call response 1.4.1", &set_up_call_response_data_141, test_terminal_response_encoding); g_test_add_data_func("/teststk/Set Up Call response 1.5.1", &set_up_call_response_data_151, test_terminal_response_encoding); g_test_add_data_func("/teststk/Set Up Call response 1.6.1", &set_up_call_response_data_161, test_terminal_response_encoding); g_test_add_data_func("/teststk/Set Up Call response 1.7.1A", &set_up_call_response_data_171a, test_terminal_response_encoding); g_test_add_data_func("/teststk/Set Up Call response 1.7.1B", &set_up_call_response_data_171b, test_terminal_response_encoding); g_test_add_data_func("/teststk/Set Up Call response 1.10.1", &set_up_call_response_data_1101, test_terminal_response_encoding); g_test_add_data_func("/teststk/Set Up Call response 1.11.1B", &set_up_call_response_data_1111b, test_terminal_response_encoding); g_test_add_data_func("/teststk/Set Up Call response 1.12.1", &set_up_call_response_data_1121, test_terminal_response_encoding); g_test_add_data_func("/teststk/Set Up Call response 3.1.1B", &set_up_call_response_data_311b, test_terminal_response_encoding); g_test_add_data_func("/teststk/Refresh 1.2.1", &refresh_data_121, test_refresh); g_test_add_data_func("/teststk/Refresh 1.5.1", &refresh_data_151, test_refresh); g_test_add_data_func("/teststk/Refresh response 1.1.1A", &refresh_response_data_111a, test_terminal_response_encoding); g_test_add_data_func("/teststk/Refresh response 1.1.1B", &refresh_response_data_111b, test_terminal_response_encoding); g_test_add_data_func("/teststk/Refresh response 1.2.1A", &refresh_response_data_121a, test_terminal_response_encoding); g_test_add_data_func("/teststk/Refresh response 1.2.1B", &refresh_response_data_121b, test_terminal_response_encoding); g_test_add_data_func("/teststk/Refresh response 1.3.1A", &refresh_response_data_131a, test_terminal_response_encoding); g_test_add_data_func("/teststk/Refresh response 1.3.1B", &refresh_response_data_141b, test_terminal_response_encoding); g_test_add_data_func("/teststk/Refresh response 1.4.1A", &refresh_response_data_141a, test_terminal_response_encoding); g_test_add_data_func("/teststk/Refresh response 1.4.1B", &refresh_response_data_141b, test_terminal_response_encoding); g_test_add_data_func("/teststk/Refresh response 1.7.1", &refresh_response_data_171, test_terminal_response_encoding); g_test_add_data_func("/teststk/Refresh response 2.4.1A", &refresh_response_data_241a, test_terminal_response_encoding); g_test_add_data_func("/teststk/Refresh response 2.4.1B", &refresh_response_data_241b, test_terminal_response_encoding); g_test_add_data_func("/teststk/Refresh response 3.1.1", &refresh_response_data_311, test_terminal_response_encoding); g_test_add_data_func("/teststk/Refresh response 3.1.2", &refresh_response_data_312, test_terminal_response_encoding); g_test_add_data_func("/teststk/Polling off 1.1.2", &polling_off_data_112, test_polling_off); g_test_add_data_func("/teststk/Polling off response 1.1.2", &polling_off_response_data_112, test_terminal_response_encoding); g_test_add_data_func("/teststk/Provide Local Info 1.2.1", &provide_local_info_data_121, test_provide_local_info); g_test_add_data_func("/teststk/Provide Local Info 1.4.1", &provide_local_info_data_141, test_provide_local_info); g_test_add_data_func("/teststk/Provide Local Info 1.5.1", &provide_local_info_data_151, test_provide_local_info); g_test_add_data_func("/teststk/Provide Local Info 1.8.1", &provide_local_info_data_181, test_provide_local_info); g_test_add_data_func("/teststk/Provide Local Info 1.9.1", &provide_local_info_data_191, test_provide_local_info); g_test_add_data_func("/teststk/Provide Local Info 1.11.1", &provide_local_info_data_1111, test_provide_local_info); g_test_add_data_func("/teststk/Provide Local Info response 1.1.1A", &provide_local_info_response_data_111a, test_terminal_response_encoding); g_test_add_data_func("/teststk/Provide Local Info response 1.1.1B", &provide_local_info_response_data_111b, test_terminal_response_encoding); g_test_add_data_func("/teststk/Provide Local Info response 1.2.1", &provide_local_info_response_data_121, test_terminal_response_encoding); g_test_add_data_func("/teststk/Provide Local Info response 1.3.1", &provide_local_info_response_data_131, test_terminal_response_encoding); g_test_add_data_func("/teststk/Provide Local Info response 1.4.1", &provide_local_info_response_data_141, test_terminal_response_encoding); g_test_add_data_func("/teststk/Provide Local Info response 1.5.1", &provide_local_info_response_data_151, test_terminal_response_encoding); g_test_add_data_func("/teststk/Provide Local Info response 1.6.1", &provide_local_info_response_data_161, test_terminal_response_encoding); g_test_add_data_func("/teststk/Provide Local Info response 1.7.1", &provide_local_info_response_data_171, test_terminal_response_encoding); g_test_add_data_func("/teststk/Provide Local Info response 1.8.1", &provide_local_info_response_data_181, test_terminal_response_encoding); g_test_add_data_func("/teststk/Provide Local Info response 1.9.1", &provide_local_info_response_data_191, test_terminal_response_encoding); g_test_add_data_func("/teststk/Provide Local Info response 1.11.1", &provide_local_info_response_data_1111, test_terminal_response_encoding); g_test_add_data_func("/teststk/Provide Local Info response 1.12.1", &provide_local_info_response_data_1121, test_terminal_response_encoding); g_test_add_data_func("/teststk/Provide Local Info response 1.13.1", &provide_local_info_response_data_1131, test_terminal_response_encoding); g_test_add_data_func("/teststk/Provide Local Info response 1.14.1", &provide_local_info_response_data_1141, test_terminal_response_encoding); g_test_add_data_func("/teststk/Provide Local Info response 1.15.1", &provide_local_info_response_data_1151, test_terminal_response_encoding); g_test_add_data_func("/teststk/Provide Local Info response 1.16.1", &provide_local_info_response_data_1161, test_terminal_response_encoding); g_test_add_data_func("/teststk/Provide Local Info response 1.17.1", &provide_local_info_response_data_1171, test_terminal_response_encoding); g_test_add_data_func("/teststk/Setup Event List 1.1.1", &setup_event_list_data_111, test_setup_event_list); g_test_add_data_func("/teststk/Setup Event List 1.2.1", &setup_event_list_data_121, test_setup_event_list); g_test_add_data_func("/teststk/Setup Event List 1.2.2", &setup_event_list_data_122, test_setup_event_list); g_test_add_data_func("/teststk/Setup Event List 1.3.1", &setup_event_list_data_131, test_setup_event_list); g_test_add_data_func("/teststk/Setup Event List 1.3.2", &setup_event_list_data_132, test_setup_event_list); g_test_add_data_func("/teststk/Setup Event List 1.4.1", &setup_event_list_data_141, test_setup_event_list); g_test_add_data_func("/teststk/Set Up Event List response 1.1.1", &set_up_event_list_response_data_111, test_terminal_response_encoding); g_test_add_data_func("/teststk/Perform Card APDU 1.1.1", &perform_card_apdu_data_111, test_perform_card_apdu); g_test_add_data_func("/teststk/Perform Card APDU 1.1.2", &perform_card_apdu_data_112, test_perform_card_apdu); g_test_add_data_func("/teststk/Perform Card APDU 1.2.1", &perform_card_apdu_data_121, test_perform_card_apdu); g_test_add_data_func("/teststk/Perform Card APDU 1.2.2", &perform_card_apdu_data_122, test_perform_card_apdu); g_test_add_data_func("/teststk/Perform Card APDU 1.2.3", &perform_card_apdu_data_123, test_perform_card_apdu); g_test_add_data_func("/teststk/Perform Card APDU 1.2.4", &perform_card_apdu_data_124, test_perform_card_apdu); g_test_add_data_func("/teststk/Perform Card APDU 1.2.5", &perform_card_apdu_data_125, test_perform_card_apdu); g_test_add_data_func("/teststk/Perform Card APDU 1.5.1", &perform_card_apdu_data_151, test_perform_card_apdu); g_test_add_data_func("/teststk/Perform Card APDU 2.1.1", &perform_card_apdu_data_211, test_perform_card_apdu); g_test_add_data_func("/teststk/Get Reader Status 1.1.1", &get_reader_status_data_111, test_get_reader_status); g_test_add_data_func("/teststk/Timer Management 1.1.1", &timer_mgmt_data_111, test_timer_mgmt); g_test_add_data_func("/teststk/Timer Management 1.1.2", &timer_mgmt_data_112, test_timer_mgmt); g_test_add_data_func("/teststk/Timer Management 1.1.3", &timer_mgmt_data_113, test_timer_mgmt); g_test_add_data_func("/teststk/Timer Management 1.1.4", &timer_mgmt_data_114, test_timer_mgmt); g_test_add_data_func("/teststk/Timer Management 1.2.1", &timer_mgmt_data_121, test_timer_mgmt); g_test_add_data_func("/teststk/Timer Management 1.2.2", &timer_mgmt_data_122, test_timer_mgmt); g_test_add_data_func("/teststk/Timer Management 1.2.3", &timer_mgmt_data_123, test_timer_mgmt); g_test_add_data_func("/teststk/Timer Management 1.2.4", &timer_mgmt_data_124, test_timer_mgmt); g_test_add_data_func("/teststk/Timer Management 1.3.1", &timer_mgmt_data_131, test_timer_mgmt); g_test_add_data_func("/teststk/Timer Management 1.3.2", &timer_mgmt_data_132, test_timer_mgmt); g_test_add_data_func("/teststk/Timer Management 1.3.3", &timer_mgmt_data_133, test_timer_mgmt); g_test_add_data_func("/teststk/Timer Management 1.3.4", &timer_mgmt_data_134, test_timer_mgmt); g_test_add_data_func("/teststk/Timer Management 1.4.1", &timer_mgmt_data_141, test_timer_mgmt); g_test_add_data_func("/teststk/Timer Management 1.4.2", &timer_mgmt_data_142, test_timer_mgmt); g_test_add_data_func("/teststk/Timer Management 1.4.3", &timer_mgmt_data_143, test_timer_mgmt); g_test_add_data_func("/teststk/Timer Management 1.4.4", &timer_mgmt_data_144, test_timer_mgmt); g_test_add_data_func("/teststk/Timer Management 1.4.5", &timer_mgmt_data_145, test_timer_mgmt); g_test_add_data_func("/teststk/Timer Management 1.4.6", &timer_mgmt_data_146, test_timer_mgmt); g_test_add_data_func("/teststk/Timer Management 1.4.7", &timer_mgmt_data_147, test_timer_mgmt); g_test_add_data_func("/teststk/Timer Management 1.4.8", &timer_mgmt_data_148, test_timer_mgmt); g_test_add_data_func("/teststk/Timer Management 1.5.1", &timer_mgmt_data_151, test_timer_mgmt); g_test_add_data_func("/teststk/Timer Management 1.5.2", &timer_mgmt_data_152, test_timer_mgmt); g_test_add_data_func("/teststk/Timer Management 1.5.3", &timer_mgmt_data_153, test_timer_mgmt); g_test_add_data_func("/teststk/Timer Management 1.5.4", &timer_mgmt_data_154, test_timer_mgmt); g_test_add_data_func("/teststk/Timer Management 1.5.5", &timer_mgmt_data_155, test_timer_mgmt); g_test_add_data_func("/teststk/Timer Management 1.5.6", &timer_mgmt_data_156, test_timer_mgmt); g_test_add_data_func("/teststk/Timer Management 1.5.7", &timer_mgmt_data_157, test_timer_mgmt); g_test_add_data_func("/teststk/Timer Management 1.5.8", &timer_mgmt_data_158, test_timer_mgmt); g_test_add_data_func("/teststk/Timer Management 1.6.1", &timer_mgmt_data_161, test_timer_mgmt); g_test_add_data_func("/teststk/Timer Management 1.6.2", &timer_mgmt_data_162, test_timer_mgmt); g_test_add_data_func("/teststk/Timer Management 1.6.3", &timer_mgmt_data_163, test_timer_mgmt); g_test_add_data_func("/teststk/Timer Management 1.6.4", &timer_mgmt_data_164, test_timer_mgmt); g_test_add_data_func("/teststk/Timer Management 1.6.5", &timer_mgmt_data_165, test_timer_mgmt); g_test_add_data_func("/teststk/Timer Management 1.6.6", &timer_mgmt_data_166, test_timer_mgmt); g_test_add_data_func("/teststk/Timer Management 1.6.7", &timer_mgmt_data_167, test_timer_mgmt); g_test_add_data_func("/teststk/Timer Management 1.6.8", &timer_mgmt_data_168, test_timer_mgmt); g_test_add_data_func("/teststk/Timer Management 2.1.1", &timer_mgmt_data_211, test_timer_mgmt); g_test_add_data_func("/teststk/Timer Management 2.2.1", &timer_mgmt_data_221, test_timer_mgmt); g_test_add_data_func("/teststk/Timer Management response 1.1.1", &timer_mgmt_response_data_111, test_terminal_response_encoding); g_test_add_data_func("/teststk/Timer Management response 1.1.2", &timer_mgmt_response_data_112, test_terminal_response_encoding); g_test_add_data_func("/teststk/Timer Management response 1.1.4", &timer_mgmt_response_data_114, test_terminal_response_encoding); g_test_add_data_func("/teststk/Timer Management response 1.2.1", &timer_mgmt_response_data_121, test_terminal_response_encoding); g_test_add_data_func("/teststk/Timer Management response 1.2.2", &timer_mgmt_response_data_122, test_terminal_response_encoding); g_test_add_data_func("/teststk/Timer Management response 1.2.4", &timer_mgmt_response_data_124, test_terminal_response_encoding); g_test_add_data_func("/teststk/Timer Management response 1.3.1", &timer_mgmt_response_data_131, test_terminal_response_encoding); g_test_add_data_func("/teststk/Timer Management response 1.3.2", &timer_mgmt_response_data_132, test_terminal_response_encoding); g_test_add_data_func("/teststk/Timer Management response 1.3.4", &timer_mgmt_response_data_134, test_terminal_response_encoding); g_test_add_data_func("/teststk/Timer Management response 1.4.1A", &timer_mgmt_response_data_141a, test_terminal_response_encoding); g_test_add_data_func("/teststk/Timer Management response 1.4.1B", &timer_mgmt_response_data_141b, test_terminal_response_encoding); g_test_add_data_func("/teststk/Timer Management response 1.4.2A", &timer_mgmt_response_data_142a, test_terminal_response_encoding); g_test_add_data_func("/teststk/Timer Management response 1.4.3A", &timer_mgmt_response_data_143a, test_terminal_response_encoding); g_test_add_data_func("/teststk/Timer Management response 1.4.4A", &timer_mgmt_response_data_144a, test_terminal_response_encoding); g_test_add_data_func("/teststk/Timer Management response 1.4.5A", &timer_mgmt_response_data_145a, test_terminal_response_encoding); g_test_add_data_func("/teststk/Timer Management response 1.4.6A", &timer_mgmt_response_data_146a, test_terminal_response_encoding); g_test_add_data_func("/teststk/Timer Management response 1.4.7A", &timer_mgmt_response_data_147a, test_terminal_response_encoding); g_test_add_data_func("/teststk/Timer Management response 1.4.8A", &timer_mgmt_response_data_148a, test_terminal_response_encoding); g_test_add_data_func("/teststk/Timer Management response 1.5.1A", &timer_mgmt_response_data_151a, test_terminal_response_encoding); g_test_add_data_func("/teststk/Timer Management response 1.5.1B", &timer_mgmt_response_data_151b, test_terminal_response_encoding); g_test_add_data_func("/teststk/Timer Management response 1.5.2A", &timer_mgmt_response_data_152a, test_terminal_response_encoding); g_test_add_data_func("/teststk/Timer Management response 1.5.3A", &timer_mgmt_response_data_153a, test_terminal_response_encoding); g_test_add_data_func("/teststk/Timer Management response 1.5.4A", &timer_mgmt_response_data_154a, test_terminal_response_encoding); g_test_add_data_func("/teststk/Timer Management response 1.5.5A", &timer_mgmt_response_data_155a, test_terminal_response_encoding); g_test_add_data_func("/teststk/Timer Management response 1.5.6A", &timer_mgmt_response_data_156a, test_terminal_response_encoding); g_test_add_data_func("/teststk/Timer Management response 1.5.7A", &timer_mgmt_response_data_157a, test_terminal_response_encoding); g_test_add_data_func("/teststk/Timer Management response 1.5.8A", &timer_mgmt_response_data_158a, test_terminal_response_encoding); g_test_add_data_func("/teststk/Timer Management response 1.6.3", &timer_mgmt_response_data_163, test_terminal_response_encoding); g_test_add_data_func("/teststk/Timer Management response 1.6.4", &timer_mgmt_response_data_164, test_terminal_response_encoding); g_test_add_data_func("/teststk/Timer Management response 1.6.5", &timer_mgmt_response_data_165, test_terminal_response_encoding); g_test_add_data_func("/teststk/Timer Management response 1.6.6", &timer_mgmt_response_data_166, test_terminal_response_encoding); g_test_add_data_func("/teststk/Timer Management response 1.6.7", &timer_mgmt_response_data_167, test_terminal_response_encoding); g_test_add_data_func("/teststk/Setup Idle Mode Text 1.1.1", &setup_idle_mode_text_data_111, test_setup_idle_mode_text); g_test_add_data_func("/teststk/Setup Idle Mode Text 1.2.1", &setup_idle_mode_text_data_121, test_setup_idle_mode_text); g_test_add_data_func("/teststk/Setup Idle Mode Text 1.3.1", &setup_idle_mode_text_data_131, test_setup_idle_mode_text); g_test_add_data_func("/teststk/Setup Idle Mode Text 1.7.1", &setup_idle_mode_text_data_171, test_setup_idle_mode_text); g_test_add_data_func("/teststk/Setup Idle Mode Text 2.1.1", &setup_idle_mode_text_data_211, test_setup_idle_mode_text); g_test_add_data_func("/teststk/Setup Idle Mode Text 2.2.1", &setup_idle_mode_text_data_221, test_setup_idle_mode_text); g_test_add_data_func("/teststk/Setup Idle Mode Text 2.3.1", &setup_idle_mode_text_data_231, test_setup_idle_mode_text); g_test_add_data_func("/teststk/Setup Idle Mode Text 2.4.1", &setup_idle_mode_text_data_241, test_setup_idle_mode_text); g_test_add_data_func("/teststk/Setup Idle Mode Text 3.1.1", &setup_idle_mode_text_data_311, test_setup_idle_mode_text); g_test_add_data_func("/teststk/Setup Idle Mode Text 4.1.1", &setup_idle_mode_text_data_411, test_setup_idle_mode_text); g_test_add_data_func("/teststk/Setup Idle Mode Text 4.1.2", &setup_idle_mode_text_data_412, test_setup_idle_mode_text); g_test_add_data_func("/teststk/Setup Idle Mode Text 4.2.1", &setup_idle_mode_text_data_421, test_setup_idle_mode_text); g_test_add_data_func("/teststk/Setup Idle Mode Text 4.2.2", &setup_idle_mode_text_data_422, test_setup_idle_mode_text); g_test_add_data_func("/teststk/Setup Idle Mode Text 4.3.1", &setup_idle_mode_text_data_431, test_setup_idle_mode_text); g_test_add_data_func("/teststk/Setup Idle Mode Text 4.3.2", &setup_idle_mode_text_data_432, test_setup_idle_mode_text); g_test_add_data_func("/teststk/Setup Idle Mode Text 4.4.1", &setup_idle_mode_text_data_441, test_setup_idle_mode_text); g_test_add_data_func("/teststk/Setup Idle Mode Text 4.4.2", &setup_idle_mode_text_data_442, test_setup_idle_mode_text); g_test_add_data_func("/teststk/Setup Idle Mode Text 4.4.3", &setup_idle_mode_text_data_443, test_setup_idle_mode_text); g_test_add_data_func("/teststk/Setup Idle Mode Text 4.5.1", &setup_idle_mode_text_data_451, test_setup_idle_mode_text); g_test_add_data_func("/teststk/Setup Idle Mode Text 4.5.2", &setup_idle_mode_text_data_452, test_setup_idle_mode_text); g_test_add_data_func("/teststk/Setup Idle Mode Text 4.5.3", &setup_idle_mode_text_data_453, test_setup_idle_mode_text); g_test_add_data_func("/teststk/Setup Idle Mode Text 4.6.1", &setup_idle_mode_text_data_461, test_setup_idle_mode_text); g_test_add_data_func("/teststk/Setup Idle Mode Text 4.6.2", &setup_idle_mode_text_data_462, test_setup_idle_mode_text); g_test_add_data_func("/teststk/Setup Idle Mode Text 4.6.3", &setup_idle_mode_text_data_463, test_setup_idle_mode_text); g_test_add_data_func("/teststk/Setup Idle Mode Text 4.7.1", &setup_idle_mode_text_data_471, test_setup_idle_mode_text); g_test_add_data_func("/teststk/Setup Idle Mode Text 4.7.2", &setup_idle_mode_text_data_472, test_setup_idle_mode_text); g_test_add_data_func("/teststk/Setup Idle Mode Text 4.7.3", &setup_idle_mode_text_data_473, test_setup_idle_mode_text); g_test_add_data_func("/teststk/Setup Idle Mode Text 4.8.1", &setup_idle_mode_text_data_481, test_setup_idle_mode_text); g_test_add_data_func("/teststk/Setup Idle Mode Text 4.8.2", &setup_idle_mode_text_data_482, test_setup_idle_mode_text); g_test_add_data_func("/teststk/Setup Idle Mode Text 4.8.3", &setup_idle_mode_text_data_483, test_setup_idle_mode_text); g_test_add_data_func("/teststk/Setup Idle Mode Text 4.9.1", &setup_idle_mode_text_data_491, test_setup_idle_mode_text); g_test_add_data_func("/teststk/Setup Idle Mode Text 4.9.2", &setup_idle_mode_text_data_492, test_setup_idle_mode_text); g_test_add_data_func("/teststk/Setup Idle Mode Text 4.9.3", &setup_idle_mode_text_data_493, test_setup_idle_mode_text); g_test_add_data_func("/teststk/Setup Idle Mode Text 4.10.1", &setup_idle_mode_text_data_4101, test_setup_idle_mode_text); g_test_add_data_func("/teststk/Setup Idle Mode Text 4.10.2", &setup_idle_mode_text_data_4102, test_setup_idle_mode_text); g_test_add_data_func("/teststk/Setup Idle Mode Text 5.1.1", &setup_idle_mode_text_data_511, test_setup_idle_mode_text); g_test_add_data_func("/teststk/Setup Idle Mode Text 6.1.1", &setup_idle_mode_text_data_611, test_setup_idle_mode_text); g_test_add_data_func("/teststk/Set Up Idle Mode Text response 1.1.1", &set_up_idle_mode_text_response_data_111, test_terminal_response_encoding); g_test_add_data_func("/teststk/Set Up Idle Mode Text response 2.1.1B", &set_up_idle_mode_text_response_data_211b, test_terminal_response_encoding); g_test_add_data_func("/teststk/Set Up Idle Mode Text response 2.4.1", &set_up_idle_mode_text_response_data_241, test_terminal_response_encoding); g_test_add_data_func("/teststk/Run At Command 1.1.1", &run_at_command_data_111, test_run_at_command); g_test_add_data_func("/teststk/Run At Command 1.2.1", &run_at_command_data_121, test_run_at_command); g_test_add_data_func("/teststk/Run At Command 1.3.1", &run_at_command_data_131, test_run_at_command); g_test_add_data_func("/teststk/Run At Command 2.1.1", &run_at_command_data_211, test_run_at_command); g_test_add_data_func("/teststk/Run At Command 2.2.1", &run_at_command_data_221, test_run_at_command); g_test_add_data_func("/teststk/Run At Command 2.3.1", &run_at_command_data_231, test_run_at_command); g_test_add_data_func("/teststk/Run At Command 2.4.1", &run_at_command_data_241, test_run_at_command); g_test_add_data_func("/teststk/Run At Command 2.5.1", &run_at_command_data_251, test_run_at_command); g_test_add_data_func("/teststk/Run At Command 3.1.1", &run_at_command_data_311, test_run_at_command); g_test_add_data_func("/teststk/Run At Command 3.1.2", &run_at_command_data_312, test_run_at_command); g_test_add_data_func("/teststk/Run At Command 3.2.1", &run_at_command_data_321, test_run_at_command); g_test_add_data_func("/teststk/Run At Command 3.2.2", &run_at_command_data_322, test_run_at_command); g_test_add_data_func("/teststk/Run At Command 3.3.1", &run_at_command_data_331, test_run_at_command); g_test_add_data_func("/teststk/Run At Command 3.3.2", &run_at_command_data_332, test_run_at_command); g_test_add_data_func("/teststk/Run At Command 3.4.1", &run_at_command_data_341, test_run_at_command); g_test_add_data_func("/teststk/Run At Command 3.4.2", &run_at_command_data_342, test_run_at_command); g_test_add_data_func("/teststk/Run At Command 3.4.3", &run_at_command_data_343, test_run_at_command); g_test_add_data_func("/teststk/Run At Command 3.5.1", &run_at_command_data_351, test_run_at_command); g_test_add_data_func("/teststk/Run At Command 3.5.2", &run_at_command_data_352, test_run_at_command); g_test_add_data_func("/teststk/Run At Command 3.5.3", &run_at_command_data_353, test_run_at_command); g_test_add_data_func("/teststk/Run At Command 3.6.1", &run_at_command_data_361, test_run_at_command); g_test_add_data_func("/teststk/Run At Command 3.6.2", &run_at_command_data_362, test_run_at_command); g_test_add_data_func("/teststk/Run At Command 3.6.3", &run_at_command_data_363, test_run_at_command); g_test_add_data_func("/teststk/Run At Command 3.7.1", &run_at_command_data_371, test_run_at_command); g_test_add_data_func("/teststk/Run At Command 3.7.2", &run_at_command_data_372, test_run_at_command); g_test_add_data_func("/teststk/Run At Command 3.7.3", &run_at_command_data_373, test_run_at_command); g_test_add_data_func("/teststk/Run At Command 3.8.1", &run_at_command_data_381, test_run_at_command); g_test_add_data_func("/teststk/Run At Command 3.8.2", &run_at_command_data_382, test_run_at_command); g_test_add_data_func("/teststk/Run At Command 3.8.3", &run_at_command_data_383, test_run_at_command); g_test_add_data_func("/teststk/Run At Command 3.9.1", &run_at_command_data_391, test_run_at_command); g_test_add_data_func("/teststk/Run At Command 3.9.2", &run_at_command_data_392, test_run_at_command); g_test_add_data_func("/teststk/Run At Command 3.9.3", &run_at_command_data_393, test_run_at_command); g_test_add_data_func("/teststk/Run At Command 3.10.1", &run_at_command_data_3101, test_run_at_command); g_test_add_data_func("/teststk/Run At Command 3.10.2", &run_at_command_data_3102, test_run_at_command); g_test_add_data_func("/teststk/Run At Command 4.1.1", &run_at_command_data_411, test_run_at_command); g_test_add_data_func("/teststk/Run At Command 5.1.1", &run_at_command_data_511, test_run_at_command); g_test_add_data_func("/teststk/Run At Command 6.1.1", &run_at_command_data_611, test_run_at_command); g_test_add_data_func("/teststk/Run AT Command response 1.1.1", &run_at_command_response_data_111, test_terminal_response_encoding); g_test_add_data_func("/teststk/Run AT Command response 2.1.1B", &run_at_command_response_data_211b, test_terminal_response_encoding); g_test_add_data_func("/teststk/Run AT Command response 2.5.1", &run_at_command_response_data_251, test_terminal_response_encoding); g_test_add_data_func("/teststk/Send DTMF 1.1.1", &send_dtmf_data_111, test_send_dtmf); g_test_add_data_func("/teststk/Send DTMF 1.2.1", &send_dtmf_data_121, test_send_dtmf); g_test_add_data_func("/teststk/Send DTMF 1.3.1", &send_dtmf_data_131, test_send_dtmf); g_test_add_data_func("/teststk/Send DTMF 2.1.1", &send_dtmf_data_211, test_send_dtmf); g_test_add_data_func("/teststk/Send DTMF 2.2.1", &send_dtmf_data_221, test_send_dtmf); g_test_add_data_func("/teststk/Send DTMF 2.3.1", &send_dtmf_data_231, test_send_dtmf); g_test_add_data_func("/teststk/Send DTMF 3.1.1", &send_dtmf_data_311, test_send_dtmf); g_test_add_data_func("/teststk/Send DTMF 4.1.1", &send_dtmf_data_411, test_send_dtmf); g_test_add_data_func("/teststk/Send DTMF 4.1.2", &send_dtmf_data_412, test_send_dtmf); g_test_add_data_func("/teststk/Send DTMF 4.2.1", &send_dtmf_data_421, test_send_dtmf); g_test_add_data_func("/teststk/Send DTMF 4.2.2", &send_dtmf_data_422, test_send_dtmf); g_test_add_data_func("/teststk/Send DTMF 4.3.1", &send_dtmf_data_431, test_send_dtmf); g_test_add_data_func("/teststk/Send DTMF 4.3.2", &send_dtmf_data_432, test_send_dtmf); g_test_add_data_func("/teststk/Send DTMF 4.4.1", &send_dtmf_data_441, test_send_dtmf); g_test_add_data_func("/teststk/Send DTMF 4.4.2", &send_dtmf_data_442, test_send_dtmf); g_test_add_data_func("/teststk/Send DTMF 4.4.3", &send_dtmf_data_443, test_send_dtmf); g_test_add_data_func("/teststk/Send DTMF 4.5.1", &send_dtmf_data_451, test_send_dtmf); g_test_add_data_func("/teststk/Send DTMF 4.5.2", &send_dtmf_data_452, test_send_dtmf); g_test_add_data_func("/teststk/Send DTMF 4.5.3", &send_dtmf_data_453, test_send_dtmf); g_test_add_data_func("/teststk/Send DTMF 4.6.1", &send_dtmf_data_461, test_send_dtmf); g_test_add_data_func("/teststk/Send DTMF 4.6.2", &send_dtmf_data_462, test_send_dtmf); g_test_add_data_func("/teststk/Send DTMF 4.6.3", &send_dtmf_data_463, test_send_dtmf); g_test_add_data_func("/teststk/Send DTMF 4.7.1", &send_dtmf_data_471, test_send_dtmf); g_test_add_data_func("/teststk/Send DTMF 4.7.2", &send_dtmf_data_472, test_send_dtmf); g_test_add_data_func("/teststk/Send DTMF 4.7.3", &send_dtmf_data_473, test_send_dtmf); g_test_add_data_func("/teststk/Send DTMF 4.8.1", &send_dtmf_data_481, test_send_dtmf); g_test_add_data_func("/teststk/Send DTMF 4.8.2", &send_dtmf_data_482, test_send_dtmf); g_test_add_data_func("/teststk/Send DTMF 4.8.3", &send_dtmf_data_483, test_send_dtmf); g_test_add_data_func("/teststk/Send DTMF 4.9.1", &send_dtmf_data_491, test_send_dtmf); g_test_add_data_func("/teststk/Send DTMF 4.9.2", &send_dtmf_data_492, test_send_dtmf); g_test_add_data_func("/teststk/Send DTMF 4.9.3", &send_dtmf_data_493, test_send_dtmf); g_test_add_data_func("/teststk/Send DTMF 4.10.1", &send_dtmf_data_4101, test_send_dtmf); g_test_add_data_func("/teststk/Send DTMF 4.10.2", &send_dtmf_data_4102, test_send_dtmf); g_test_add_data_func("/teststk/Send DTMF 5.1.1", &send_dtmf_data_511, test_send_dtmf); g_test_add_data_func("/teststk/Send DTMF 6.1.1", &send_dtmf_data_611, test_send_dtmf); g_test_add_data_func("/teststk/Send DTMF response 1.1.1", &send_dtmf_response_data_111, test_terminal_response_encoding); g_test_add_data_func("/teststk/Send DTMF response 1.4.1", &send_dtmf_response_data_141, test_terminal_response_encoding); g_test_add_data_func("/teststk/Send DTMF response 2.1.1B", &send_dtmf_response_data_211b, test_terminal_response_encoding); g_test_add_data_func("/teststk/Language Notification 1.1.1", &language_notification_data_111, test_language_notification); g_test_add_data_func("/teststk/Language Notification 1.2.1", &language_notification_data_121, test_language_notification); g_test_add_data_func("/teststk/Language Notification response 1.1.1", &language_notification_response_data_111, test_terminal_response_encoding); g_test_add_data_func("/teststk/Language Notification response 1.2.1", &language_notification_response_data_121, test_terminal_response_encoding); g_test_add_data_func("/teststk/Launch Browser 1.1.1", &launch_browser_data_111, test_launch_browser); g_test_add_data_func("/teststk/Launch Browser 1.2.1", &launch_browser_data_121, test_launch_browser); g_test_add_data_func("/teststk/Launch Browser 1.3.1", &launch_browser_data_131, test_launch_browser); g_test_add_data_func("/teststk/Launch Browser 1.4.1", &launch_browser_data_141, test_launch_browser); g_test_add_data_func("/teststk/Launch Browser 2.1.1", &launch_browser_data_211, test_launch_browser); g_test_add_data_func("/teststk/Launch Browser 2.2.1", &launch_browser_data_221, test_launch_browser); g_test_add_data_func("/teststk/Launch Browser 2.3.1", &launch_browser_data_231, test_launch_browser); g_test_add_data_func("/teststk/Launch Browser 3.1.1", &launch_browser_data_311, test_launch_browser); g_test_add_data_func("/teststk/Launch Browser 4.1.1", &launch_browser_data_411, test_launch_browser); g_test_add_data_func("/teststk/Launch Browser 4.2.1", &launch_browser_data_421, test_launch_browser); g_test_add_data_func("/teststk/Launch Browser 5.1.1", &launch_browser_data_511, test_launch_browser); g_test_add_data_func("/teststk/Launch Browser 5.1.2", &launch_browser_data_512, test_launch_browser); g_test_add_data_func("/teststk/Launch Browser 5.2.1", &launch_browser_data_521, test_launch_browser); g_test_add_data_func("/teststk/Launch Browser 5.2.2", &launch_browser_data_522, test_launch_browser); g_test_add_data_func("/teststk/Launch Browser 5.3.1", &launch_browser_data_531, test_launch_browser); g_test_add_data_func("/teststk/Launch Browser 5.3.2", &launch_browser_data_532, test_launch_browser); g_test_add_data_func("/teststk/Launch Browser 5.4.1", &launch_browser_data_541, test_launch_browser); g_test_add_data_func("/teststk/Launch Browser 5.4.2", &launch_browser_data_542, test_launch_browser); g_test_add_data_func("/teststk/Launch Browser 5.4.3", &launch_browser_data_543, test_launch_browser); g_test_add_data_func("/teststk/Launch Browser 5.5.1", &launch_browser_data_551, test_launch_browser); g_test_add_data_func("/teststk/Launch Browser 5.5.2", &launch_browser_data_552, test_launch_browser); g_test_add_data_func("/teststk/Launch Browser 5.5.3", &launch_browser_data_553, test_launch_browser); g_test_add_data_func("/teststk/Launch Browser 5.6.1", &launch_browser_data_561, test_launch_browser); g_test_add_data_func("/teststk/Launch Browser 5.6.2", &launch_browser_data_562, test_launch_browser); g_test_add_data_func("/teststk/Launch Browser 5.6.3", &launch_browser_data_563, test_launch_browser); g_test_add_data_func("/teststk/Launch Browser 5.7.1", &launch_browser_data_571, test_launch_browser); g_test_add_data_func("/teststk/Launch Browser 5.7.2", &launch_browser_data_572, test_launch_browser); g_test_add_data_func("/teststk/Launch Browser 5.7.3", &launch_browser_data_573, test_launch_browser); g_test_add_data_func("/teststk/Launch Browser 5.8.1", &launch_browser_data_581, test_launch_browser); g_test_add_data_func("/teststk/Launch Browser 5.8.2", &launch_browser_data_582, test_launch_browser); g_test_add_data_func("/teststk/Launch Browser 5.8.3", &launch_browser_data_583, test_launch_browser); g_test_add_data_func("/teststk/Launch Browser 5.9.1", &launch_browser_data_591, test_launch_browser); g_test_add_data_func("/teststk/Launch Browser 5.9.2", &launch_browser_data_592, test_launch_browser); g_test_add_data_func("/teststk/Launch Browser 5.9.3", &launch_browser_data_593, test_launch_browser); g_test_add_data_func("/teststk/Launch Browser 5.10.1", &launch_browser_data_5101, test_launch_browser); g_test_add_data_func("/teststk/Launch Browser 5.10.2", &launch_browser_data_5102, test_launch_browser); g_test_add_data_func("/teststk/Launch Browser 6.1.1", &launch_browser_data_611, test_launch_browser); g_test_add_data_func("/teststk/Launch Browser 7.1.1", &launch_browser_data_711, test_launch_browser); g_test_add_data_func("/teststk/Launch Browser response 1.1.1", &launch_browser_response_data_111, test_terminal_response_encoding); g_test_add_data_func("/teststk/Launch Browser response 2.1.1", &launch_browser_response_data_211, test_terminal_response_encoding); g_test_add_data_func("/teststk/Launch Browser response 2.2.1", &launch_browser_response_data_221, test_terminal_response_encoding); g_test_add_data_func("/teststk/Launch Browser response 2.3.1", &launch_browser_response_data_231, test_terminal_response_encoding); g_test_add_data_func("/teststk/Launch Browser response 4.1.1B", &launch_browser_response_data_411b, test_terminal_response_encoding); g_test_add_data_func("/teststk/Open channel 2.1.1", &open_channel_data_211, test_open_channel); g_test_add_data_func("/teststk/Open channel 2.2.1", &open_channel_data_221, test_open_channel); g_test_add_data_func("/teststk/Open channel 2.3.1", &open_channel_data_231, test_open_channel); g_test_add_data_func("/teststk/Open channel 2.4.1", &open_channel_data_241, test_open_channel); g_test_add_data_func("/teststk/Open channel 5.1.1", &open_channel_data_511, test_open_channel); g_test_add_data_func("/teststk/Open channel response 2.1.1", &open_channel_response_data_211, test_terminal_response_encoding); g_test_add_data_func("/teststk/Open channel response 2.7.1", &open_channel_response_data_271, test_terminal_response_encoding); g_test_add_data_func("/teststk/Close channel 1.1.1", &close_channel_data_111, test_close_channel); g_test_add_data_func("/teststk/Close channel 2.1.1", &close_channel_data_211, test_close_channel); g_test_add_data_func("/teststk/Close channel response 1.2.1", &close_channel_response_data_121, test_terminal_response_encoding); g_test_add_data_func("/teststk/Close channel response 1.3.1", &close_channel_response_data_131, test_terminal_response_encoding); g_test_add_data_func("/teststk/Receive data 1.1.1", &receive_data_data_111, test_receive_data); g_test_add_data_func("/teststk/Receive data 2.1.1", &receive_data_data_211, test_receive_data); g_test_add_data_func("/teststk/Receive data response 1.1.1", &receive_data_response_data_111, test_terminal_response_encoding); g_test_add_data_func("/teststk/Send data 1.1.1", &send_data_data_111, test_send_data); g_test_add_data_func("/teststk/Send data 1.2.1", &send_data_data_121, test_send_data); g_test_add_data_func("/teststk/Send data 2.1.1", &send_data_data_211, test_send_data); g_test_add_data_func("/teststk/Send data response 1.1.1", &send_data_response_data_111, test_terminal_response_encoding); g_test_add_data_func("/teststk/Send data response 1.2.1", &send_data_response_data_121, test_terminal_response_encoding); g_test_add_data_func("/teststk/Send data response 1.5.1", &send_data_response_data_151, test_terminal_response_encoding); g_test_add_data_func("/teststk/Get Channel status 1.1.1", &get_channel_status_data_111, test_get_channel_status); g_test_add_data_func("/teststk/Get Channel status response 1.1.1", &get_channel_status_response_data_111, test_terminal_response_encoding); g_test_add_data_func("/teststk/Get Channel status response 1.2.1", &get_channel_status_response_data_121, test_terminal_response_encoding); g_test_add_data_func("/teststk/Get Channel status response 1.3.1", &get_channel_status_response_data_131, test_terminal_response_encoding); g_test_add_data_func("/teststk/SMS-PP data download 1.6.1", &sms_pp_data_download_data_161, test_envelope_encoding); g_test_add_data_func("/teststk/SMS-PP data download 1.6.2", &sms_pp_data_download_data_162, test_envelope_encoding); g_test_add_data_func("/teststk/SMS-PP data download 1.8.2", &sms_pp_data_download_data_182, test_envelope_encoding); g_test_add_data_func("/teststk/CBS-PP data download 1.1", &cbs_pp_data_download_data_11, test_envelope_encoding); g_test_add_data_func("/teststk/CBS-PP data download 1.7", &cbs_pp_data_download_data_17, test_envelope_encoding); g_test_add_data_func("/teststk/Menu Selection 1.1.1", &menu_selection_data_111, test_envelope_encoding); g_test_add_data_func("/teststk/Menu Selection 1.1.2", &menu_selection_data_112, test_envelope_encoding); g_test_add_data_func("/teststk/Menu Selection 1.2.1", &menu_selection_data_121, test_envelope_encoding); g_test_add_data_func("/teststk/Menu Selection 1.2.2", &menu_selection_data_122, test_envelope_encoding); g_test_add_data_func("/teststk/Menu Selection 1.2.3", &menu_selection_data_123, test_envelope_encoding); g_test_add_data_func("/teststk/Menu Selection 2.1.1", &menu_selection_data_211, test_envelope_encoding); g_test_add_data_func("/teststk/Menu Selection 6.1.2", &menu_selection_data_612, test_envelope_encoding); g_test_add_data_func("/teststk/Menu Selection 6.4.1", &menu_selection_data_641, test_envelope_encoding); g_test_add_data_func("/teststk/Call Control 1.1.1A", &call_control_data_111a, test_envelope_encoding); g_test_add_data_func("/teststk/Call Control 1.1.1B", &call_control_data_111b, test_envelope_encoding); g_test_add_data_func("/teststk/Call Control 1.3.1A", &call_control_data_131a, test_envelope_encoding); g_test_add_data_func("/teststk/Call Control 1.3.1B", &call_control_data_131b, test_envelope_encoding); g_test_add_data_func("/teststk/MO Short Message Control 1.1.1A", &mo_short_message_control_data_111a, test_envelope_encoding); g_test_add_data_func("/teststk/MO Short Message Control 1.1.1B", &mo_short_message_control_data_111b, test_envelope_encoding); g_test_add_data_func("/teststk/Event: MT Call 1.1.1", &event_download_mt_call_data_111, test_envelope_encoding); g_test_add_data_func("/teststk/Event: MT Call 1.1.2", &event_download_mt_call_data_112, test_envelope_encoding); g_test_add_data_func("/teststk/Event: Call Connected 1.1.1", &event_download_call_connected_data_111, test_envelope_encoding); g_test_add_data_func("/teststk/Event: Call Connected 1.1.2", &event_download_call_connected_data_112, test_envelope_encoding); g_test_add_data_func("/teststk/Event: Call Disconnected 1.1.1", &event_download_call_disconnected_data_111, test_envelope_encoding); g_test_add_data_func("/teststk/Event: Call Disconnected 1.1.2A", &event_download_call_disconnected_data_112a, test_envelope_encoding); g_test_add_data_func("/teststk/Event: Call Disconnected 1.1.2B", &event_download_call_disconnected_data_112b, test_envelope_encoding); g_test_add_data_func("/teststk/Event: Call Disconnected 1.1.2C", &event_download_call_disconnected_data_112c, test_envelope_encoding); g_test_add_data_func("/teststk/Event: Call Disconnected 1.1.3A", &event_download_call_disconnected_data_113a, test_envelope_encoding); g_test_add_data_func("/teststk/Event: Call Disconnected 1.1.3B", &event_download_call_disconnected_data_113b, test_envelope_encoding); g_test_add_data_func("/teststk/Event: Call Disconnected 1.1.4A", &event_download_call_disconnected_data_114a, test_envelope_encoding); g_test_add_data_func("/teststk/Event: Call Disconnected 1.1.4B", &event_download_call_disconnected_data_114b, test_envelope_encoding); g_test_add_data_func("/teststk/Event: Location Status 1.1.1", &event_download_location_status_data_111, test_envelope_encoding); g_test_add_data_func("/teststk/Event: Location Status 1.1.2A", &event_download_location_status_data_112a, test_envelope_encoding); g_test_add_data_func("/teststk/Event: Location Status 1.1.2B", &event_download_location_status_data_112b, test_envelope_encoding); g_test_add_data_func("/teststk/Event: Location Status 1.2.2", &event_download_location_status_data_122, test_envelope_encoding); g_test_add_data_func("/teststk/Event: User Activity 1.1.1", &event_download_user_activity_data_111, test_envelope_encoding); g_test_add_data_func("/teststk/Event: Idle Screen Available 1.1.1", &event_download_idle_screen_available_data_111, test_envelope_encoding); g_test_add_data_func("/teststk/Event: Card Reader Status 1.1.1A", &event_download_card_reader_status_data_111a, test_envelope_encoding); g_test_add_data_func("/teststk/Event: Card Reader Status 1.1.1B", &event_download_card_reader_status_data_111b, test_envelope_encoding); g_test_add_data_func("/teststk/Event: Card Reader Status 1.1.1C", &event_download_card_reader_status_data_111c, test_envelope_encoding); g_test_add_data_func("/teststk/Event: Card Reader Status 1.1.1D", &event_download_card_reader_status_data_111d, test_envelope_encoding); g_test_add_data_func("/teststk/Event: Card Reader Status 1.1.2A", &event_download_card_reader_status_data_112a, test_envelope_encoding); g_test_add_data_func("/teststk/Event: Card Reader Status 1.1.2B", &event_download_card_reader_status_data_112b, test_envelope_encoding); g_test_add_data_func("/teststk/Event: Card Reader Status 1.1.2C", &event_download_card_reader_status_data_112c, test_envelope_encoding); g_test_add_data_func("/teststk/Event: Card Reader Status 1.1.2D", &event_download_card_reader_status_data_112d, test_envelope_encoding); g_test_add_data_func("/teststk/Event: Card Reader Status 2.1.2A", &event_download_card_reader_status_data_212a, test_envelope_encoding); g_test_add_data_func("/teststk/Event: Card Reader Status 2.1.2B", &event_download_card_reader_status_data_212b, test_envelope_encoding); g_test_add_data_func("/teststk/Event: Language Selection 1.1.1", &event_download_language_selection_data_111, test_envelope_encoding); g_test_add_data_func("/teststk/Event: Language Selection 1.2.2", &event_download_language_selection_data_122, test_envelope_encoding); g_test_add_data_func("/teststk/Event: Browser Termination 1.1.1", &event_download_browser_termination_data_111, test_envelope_encoding); g_test_add_data_func("/teststk/Event: Data Available 1.1.1", &event_download_data_available_data_111, test_envelope_encoding); g_test_add_data_func("/teststk/Event: Data Available 2.1.1", &event_download_data_available_data_211, test_envelope_encoding); g_test_add_data_func("/teststk/Event: Channel Status 1.3.1", &event_download_channel_status_data_131, test_envelope_encoding); g_test_add_data_func("/teststk/Event: Channel Status 2.1.1", &event_download_channel_status_data_211, test_envelope_encoding); g_test_add_data_func("/teststk/Event: Channel Status 2.2.1", &event_download_channel_status_data_221, test_envelope_encoding); g_test_add_data_func("/teststk/Event: Network Rejection 1.1.1", &event_download_network_rejection_data_111, test_envelope_encoding); g_test_add_data_func("/teststk/Event: Network Rejection 1.2.1", &event_download_network_rejection_data_121, test_envelope_encoding); g_test_add_data_func("/teststk/Timer Expiration 2.1.1", &timer_expiration_data_211, test_envelope_encoding); g_test_add_data_func("/teststk/Timer Expiration 2.2.1A", &timer_expiration_data_221a, test_envelope_encoding); g_test_add_data_func("/teststk/HTML Attribute Test 1", &html_attr_data_1, test_html_attr); g_test_add_data_func("/teststk/HTML Attribute Test 2", &html_attr_data_2, test_html_attr); g_test_add_data_func("/teststk/HTML Attribute Test 3", &html_attr_data_3, test_html_attr); g_test_add_data_func("/teststk/HTML Attribute Test 4", &html_attr_data_4, test_html_attr); g_test_add_data_func("/teststk/IMG to XPM Test 1", &xpm_test_1, test_img_to_xpm); g_test_add_data_func("/teststk/IMG to XPM Test 2", &xpm_test_2, test_img_to_xpm); g_test_add_data_func("/teststk/IMG to XPM Test 3", &xpm_test_3, test_img_to_xpm); g_test_add_data_func("/teststk/IMG to XPM Test 4", &xpm_test_4, test_img_to_xpm); g_test_add_data_func("/teststk/IMG to XPM Test 5", &xpm_test_5, test_img_to_xpm); g_test_add_data_func("/teststk/IMG to XPM Test 6", &xpm_test_6, test_img_to_xpm); return g_test_run(); }