},
};
+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 = (short[]) {
+ 561, 565, 568, 569, 573,
+ 575, 577, 581, 582, 585,
+ },
+ .length = 10,
+ },
+ }},
+ }},
+ },
+};
+
+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_TIMING_ADVANCE_ME_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,
+ }},
+ }},
+ },
+};
+
int main(int argc, char **argv)
{
g_test_init(&argc, &argv, NULL);
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",