diff --git a/unit/test-stkutil.c b/unit/test-stkutil.c index 404f0920..389a865a 100644 --- a/unit/test-stkutil.c +++ b/unit/test-stkutil.c @@ -18303,6 +18303,155 @@ static const struct envelope_test menu_selection_data_641 = { }, }; +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, @@ -20077,6 +20226,15 @@ int main(int argc, char **argv) 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);