msc_vlr_test_call: assignment indicate FR or HR
Change-Id: I47c18a56a86005d6ae270bfd78bc13b2a7560192
This commit is contained in:
parent
602961bc5d
commit
2b83b385cd
|
@ -272,7 +272,7 @@ static void test_call_mo()
|
||||||
|
|
||||||
btw("Assignment succeeds, triggering MNCC_RTP_CREATE ack to MNCC");
|
btw("Assignment succeeds, triggering MNCC_RTP_CREATE ack to MNCC");
|
||||||
cc_to_mncc_expect_tx("", MNCC_RTP_CREATE);
|
cc_to_mncc_expect_tx("", MNCC_RTP_CREATE);
|
||||||
ms_sends_assignment_complete("AMR");
|
ms_sends_assignment_complete(true, "AMR:octet-align=1");
|
||||||
OSMO_ASSERT(cc_to_mncc_tx_confirmed);
|
OSMO_ASSERT(cc_to_mncc_tx_confirmed);
|
||||||
|
|
||||||
btw("MNCC says that's fine");
|
btw("MNCC says that's fine");
|
||||||
|
@ -408,7 +408,7 @@ static void test_call_mt()
|
||||||
|
|
||||||
btw("Assignment completes, triggering CRCX to CN");
|
btw("Assignment completes, triggering CRCX to CN");
|
||||||
expect_crcx(RTP_TO_CN);
|
expect_crcx(RTP_TO_CN);
|
||||||
ms_sends_assignment_complete("AMR");
|
ms_sends_assignment_complete(true, "AMR:octet-align=1");
|
||||||
|
|
||||||
btw("MNCC sends MNCC_RTP_CREATE, which first waits for the CN side RTP");
|
btw("MNCC sends MNCC_RTP_CREATE, which first waits for the CN side RTP");
|
||||||
mncc_sends_to_cc(MNCC_RTP_CREATE, &mncc_rtp);
|
mncc_sends_to_cc(MNCC_RTP_CREATE, &mncc_rtp);
|
||||||
|
@ -548,7 +548,7 @@ static void test_call_mt2()
|
||||||
OSMO_ASSERT(iu_rab_assignment_sent);
|
OSMO_ASSERT(iu_rab_assignment_sent);
|
||||||
|
|
||||||
btw("Assignment completes, triggering CRCX to CN");
|
btw("Assignment completes, triggering CRCX to CN");
|
||||||
ms_sends_assignment_complete("AMR");
|
ms_sends_assignment_complete(true, "AMR:octet-align=1");
|
||||||
|
|
||||||
btw("When the CN side RTP address is known, ack MNCC_RTP_CREATE with full SDP");
|
btw("When the CN side RTP address is known, ack MNCC_RTP_CREATE with full SDP");
|
||||||
cc_to_mncc_expect_tx("", MNCC_RTP_CREATE);
|
cc_to_mncc_expect_tx("", MNCC_RTP_CREATE);
|
||||||
|
@ -653,7 +653,7 @@ static void test_call_mo_to_unknown()
|
||||||
|
|
||||||
btw("Assignment succeeds, triggering MNCC_RTP_CREATE ack to MNCC");
|
btw("Assignment succeeds, triggering MNCC_RTP_CREATE ack to MNCC");
|
||||||
cc_to_mncc_expect_tx("", MNCC_RTP_CREATE);
|
cc_to_mncc_expect_tx("", MNCC_RTP_CREATE);
|
||||||
ms_sends_assignment_complete("AMR");
|
ms_sends_assignment_complete(true, "AMR:octet-align=1");
|
||||||
OSMO_ASSERT(cc_to_mncc_tx_confirmed);
|
OSMO_ASSERT(cc_to_mncc_tx_confirmed);
|
||||||
|
|
||||||
btw("MNCC says that's fine");
|
btw("MNCC says that's fine");
|
||||||
|
@ -750,7 +750,7 @@ static void test_call_mo_to_unknown_timeout()
|
||||||
|
|
||||||
btw("Assignment succeeds, triggering MNCC_RTP_CREATE ack to MNCC");
|
btw("Assignment succeeds, triggering MNCC_RTP_CREATE ack to MNCC");
|
||||||
cc_to_mncc_expect_tx("", MNCC_RTP_CREATE);
|
cc_to_mncc_expect_tx("", MNCC_RTP_CREATE);
|
||||||
ms_sends_assignment_complete("AMR");
|
ms_sends_assignment_complete(true, "AMR:octet-align=1");
|
||||||
OSMO_ASSERT(cc_to_mncc_tx_confirmed);
|
OSMO_ASSERT(cc_to_mncc_tx_confirmed);
|
||||||
|
|
||||||
btw("MNCC says that's fine");
|
btw("MNCC says that's fine");
|
||||||
|
@ -802,6 +802,7 @@ struct codec_test {
|
||||||
enum gsm0808_permitted_speech mo_tx_assignment_perm_speech[8];
|
enum gsm0808_permitted_speech mo_tx_assignment_perm_speech[8];
|
||||||
|
|
||||||
/* What codec to assign in the Assignment Complete's Codec (Chosen) IE. Just a subtype name. */
|
/* What codec to assign in the Assignment Complete's Codec (Chosen) IE. Just a subtype name. */
|
||||||
|
bool mo_rx_assigned_codec_fr;
|
||||||
const char *mo_rx_assigned_codec;
|
const char *mo_rx_assigned_codec;
|
||||||
|
|
||||||
/* MO acks the MNCC_RTP_CREATE with these codecs (if any). */
|
/* MO acks the MNCC_RTP_CREATE with these codecs (if any). */
|
||||||
|
@ -819,6 +820,7 @@ struct codec_test {
|
||||||
const char *mt_tx_sdp_mncc_call_conf_ind[16];
|
const char *mt_tx_sdp_mncc_call_conf_ind[16];
|
||||||
|
|
||||||
enum gsm0808_permitted_speech mt_tx_assignment_perm_speech[8];
|
enum gsm0808_permitted_speech mt_tx_assignment_perm_speech[8];
|
||||||
|
bool mt_rx_assigned_codec_fr;
|
||||||
const char *mt_rx_assigned_codec;
|
const char *mt_rx_assigned_codec;
|
||||||
|
|
||||||
const char *mt_rx_sdp_mncc_rtp_create[16];
|
const char *mt_rx_sdp_mncc_rtp_create[16];
|
||||||
|
@ -829,6 +831,7 @@ struct codec_test {
|
||||||
|
|
||||||
bool mo_expect_reassignment;
|
bool mo_expect_reassignment;
|
||||||
enum gsm0808_permitted_speech mo_tx_reassignment_perm_speech[8];
|
enum gsm0808_permitted_speech mo_tx_reassignment_perm_speech[8];
|
||||||
|
bool mo_rx_reassigned_codec_fr;
|
||||||
const char *mo_rx_reassigned_codec;
|
const char *mo_rx_reassigned_codec;
|
||||||
|
|
||||||
const char *mt_tx_sdp_mncc_setup_cnf[16];
|
const char *mt_tx_sdp_mncc_setup_cnf[16];
|
||||||
|
@ -905,6 +908,7 @@ static const struct codec_test codec_tests[] = {
|
||||||
.mo_tx_sdp_mncc_setup_ind = SDP_CODECS_ALL_GSM,
|
.mo_tx_sdp_mncc_setup_ind = SDP_CODECS_ALL_GSM,
|
||||||
.mo_rx_sdp_mncc_rtp_create = {},
|
.mo_rx_sdp_mncc_rtp_create = {},
|
||||||
.mo_tx_assignment_perm_speech = PERM_SPEECH_ALL_GSM,
|
.mo_tx_assignment_perm_speech = PERM_SPEECH_ALL_GSM,
|
||||||
|
.mo_rx_assigned_codec_fr = true,
|
||||||
.mo_rx_assigned_codec = "AMR",
|
.mo_rx_assigned_codec = "AMR",
|
||||||
.mo_tx_sdp_mncc_rtp_create = SDP_CODECS_ALL_GSM,
|
.mo_tx_sdp_mncc_rtp_create = SDP_CODECS_ALL_GSM,
|
||||||
/* mt_rx_sdp_mncc_setup_req == mo_tx_sdp_mncc_rtp_create */
|
/* mt_rx_sdp_mncc_setup_req == mo_tx_sdp_mncc_rtp_create */
|
||||||
|
@ -928,6 +932,7 @@ static const struct codec_test codec_tests[] = {
|
||||||
GSM0808_PERM_HR1,
|
GSM0808_PERM_HR1,
|
||||||
LIST_END
|
LIST_END
|
||||||
},
|
},
|
||||||
|
.mt_rx_assigned_codec_fr = true,
|
||||||
.mt_rx_assigned_codec = "AMR",
|
.mt_rx_assigned_codec = "AMR",
|
||||||
.mt_tx_sdp_mncc_rtp_create = SDP_CODECS_ALL_GSM,
|
.mt_tx_sdp_mncc_rtp_create = SDP_CODECS_ALL_GSM,
|
||||||
.mt_tx_sdp_mncc_alert_ind = SDP_CODECS_ALL_GSM,
|
.mt_tx_sdp_mncc_alert_ind = SDP_CODECS_ALL_GSM,
|
||||||
|
@ -942,6 +947,7 @@ static const struct codec_test codec_tests[] = {
|
||||||
.mo_tx_sdp_mncc_setup_ind = { "GSM#3" },
|
.mo_tx_sdp_mncc_setup_ind = { "GSM#3" },
|
||||||
.mo_rx_sdp_mncc_rtp_create = {},
|
.mo_rx_sdp_mncc_rtp_create = {},
|
||||||
.mo_tx_assignment_perm_speech = { GSM0808_PERM_FR1, LIST_END },
|
.mo_tx_assignment_perm_speech = { GSM0808_PERM_FR1, LIST_END },
|
||||||
|
.mo_rx_assigned_codec_fr = true,
|
||||||
.mo_rx_assigned_codec = "GSM",
|
.mo_rx_assigned_codec = "GSM",
|
||||||
.mo_tx_sdp_mncc_rtp_create = { "GSM#3" },
|
.mo_tx_sdp_mncc_rtp_create = { "GSM#3" },
|
||||||
/* mt_rx_sdp_mncc_setup_req == mo_tx_sdp_mncc_rtp_create */
|
/* mt_rx_sdp_mncc_setup_req == mo_tx_sdp_mncc_rtp_create */
|
||||||
|
@ -951,6 +957,7 @@ static const struct codec_test codec_tests[] = {
|
||||||
.mt_tx_sdp_mncc_call_conf_ind = {},
|
.mt_tx_sdp_mncc_call_conf_ind = {},
|
||||||
.mt_rx_sdp_mncc_rtp_create = {},
|
.mt_rx_sdp_mncc_rtp_create = {},
|
||||||
.mt_tx_assignment_perm_speech = { GSM0808_PERM_FR1, LIST_END },
|
.mt_tx_assignment_perm_speech = { GSM0808_PERM_FR1, LIST_END },
|
||||||
|
.mt_rx_assigned_codec_fr = true,
|
||||||
.mt_rx_assigned_codec = "GSM",
|
.mt_rx_assigned_codec = "GSM",
|
||||||
.mt_tx_sdp_mncc_rtp_create = { "GSM#3" },
|
.mt_tx_sdp_mncc_rtp_create = { "GSM#3" },
|
||||||
.mt_tx_sdp_mncc_alert_ind = { "GSM#3" },
|
.mt_tx_sdp_mncc_alert_ind = { "GSM#3" },
|
||||||
|
@ -965,6 +972,7 @@ static const struct codec_test codec_tests[] = {
|
||||||
.mo_tx_sdp_mncc_setup_ind = { "GSM#3" },
|
.mo_tx_sdp_mncc_setup_ind = { "GSM#3" },
|
||||||
.mo_rx_sdp_mncc_rtp_create = {},
|
.mo_rx_sdp_mncc_rtp_create = {},
|
||||||
.mo_tx_assignment_perm_speech = { GSM0808_PERM_FR1, LIST_END },
|
.mo_tx_assignment_perm_speech = { GSM0808_PERM_FR1, LIST_END },
|
||||||
|
.mo_rx_assigned_codec_fr = true,
|
||||||
.mo_rx_assigned_codec = "GSM",
|
.mo_rx_assigned_codec = "GSM",
|
||||||
.mo_tx_sdp_mncc_rtp_create = { "GSM#3" },
|
.mo_tx_sdp_mncc_rtp_create = { "GSM#3" },
|
||||||
/* mt_rx_sdp_mncc_setup_req == mo_tx_sdp_mncc_rtp_create */
|
/* mt_rx_sdp_mncc_setup_req == mo_tx_sdp_mncc_rtp_create */
|
||||||
|
@ -974,6 +982,7 @@ static const struct codec_test codec_tests[] = {
|
||||||
.mt_tx_sdp_mncc_call_conf_ind = {},
|
.mt_tx_sdp_mncc_call_conf_ind = {},
|
||||||
.mt_rx_sdp_mncc_rtp_create = {},
|
.mt_rx_sdp_mncc_rtp_create = {},
|
||||||
.mt_tx_assignment_perm_speech = { GSM0808_PERM_FR1, LIST_END },
|
.mt_tx_assignment_perm_speech = { GSM0808_PERM_FR1, LIST_END },
|
||||||
|
.mt_rx_assigned_codec_fr = true,
|
||||||
.mt_rx_assigned_codec = "GSM",
|
.mt_rx_assigned_codec = "GSM",
|
||||||
.mt_tx_sdp_mncc_rtp_create = { "GSM#3" },
|
.mt_tx_sdp_mncc_rtp_create = { "GSM#3" },
|
||||||
.mt_tx_sdp_mncc_alert_ind = { "GSM#3" },
|
.mt_tx_sdp_mncc_alert_ind = { "GSM#3" },
|
||||||
|
@ -988,6 +997,7 @@ static const struct codec_test codec_tests[] = {
|
||||||
.mo_tx_sdp_mncc_setup_ind = SDP_CODECS_ALL_GSM,
|
.mo_tx_sdp_mncc_setup_ind = SDP_CODECS_ALL_GSM,
|
||||||
.mo_rx_sdp_mncc_rtp_create = {},
|
.mo_rx_sdp_mncc_rtp_create = {},
|
||||||
.mo_tx_assignment_perm_speech = PERM_SPEECH_ALL_GSM,
|
.mo_tx_assignment_perm_speech = PERM_SPEECH_ALL_GSM,
|
||||||
|
.mo_rx_assigned_codec_fr = true,
|
||||||
.mo_rx_assigned_codec = "AMR", /* <- Early Assignment first picks a mismatching codec */
|
.mo_rx_assigned_codec = "AMR", /* <- Early Assignment first picks a mismatching codec */
|
||||||
.mo_tx_sdp_mncc_rtp_create = SDP_CODECS_ALL_GSM,
|
.mo_tx_sdp_mncc_rtp_create = SDP_CODECS_ALL_GSM,
|
||||||
|
|
||||||
|
@ -1007,6 +1017,7 @@ static const struct codec_test codec_tests[] = {
|
||||||
GSM0808_PERM_FR1,
|
GSM0808_PERM_FR1,
|
||||||
LIST_END
|
LIST_END
|
||||||
},
|
},
|
||||||
|
.mt_rx_assigned_codec_fr = true,
|
||||||
.mt_rx_assigned_codec = "GSM",
|
.mt_rx_assigned_codec = "GSM",
|
||||||
.mt_tx_sdp_mncc_rtp_create = { "GSM#3" },
|
.mt_tx_sdp_mncc_rtp_create = { "GSM#3" },
|
||||||
.mt_tx_sdp_mncc_alert_ind = { "GSM#3" },
|
.mt_tx_sdp_mncc_alert_ind = { "GSM#3" },
|
||||||
|
@ -1016,6 +1027,7 @@ static const struct codec_test codec_tests[] = {
|
||||||
GSM0808_PERM_FR1,
|
GSM0808_PERM_FR1,
|
||||||
LIST_END
|
LIST_END
|
||||||
},
|
},
|
||||||
|
.mo_rx_reassigned_codec_fr = true,
|
||||||
.mo_rx_reassigned_codec = "GSM",
|
.mo_rx_reassigned_codec = "GSM",
|
||||||
|
|
||||||
.mt_tx_sdp_mncc_setup_cnf = { "GSM#3" },
|
.mt_tx_sdp_mncc_setup_cnf = { "GSM#3" },
|
||||||
|
@ -1029,6 +1041,7 @@ static const struct codec_test codec_tests[] = {
|
||||||
.mo_tx_sdp_mncc_setup_ind = SDP_CODECS_ALL_GSM,
|
.mo_tx_sdp_mncc_setup_ind = SDP_CODECS_ALL_GSM,
|
||||||
.mo_rx_sdp_mncc_rtp_create = {},
|
.mo_rx_sdp_mncc_rtp_create = {},
|
||||||
.mo_tx_assignment_perm_speech = PERM_SPEECH_ALL_GSM,
|
.mo_tx_assignment_perm_speech = PERM_SPEECH_ALL_GSM,
|
||||||
|
.mo_rx_assigned_codec_fr = true,
|
||||||
.mo_rx_assigned_codec = "AMR", /* <- Early Assignment first picks a mismatching codec */
|
.mo_rx_assigned_codec = "AMR", /* <- Early Assignment first picks a mismatching codec */
|
||||||
.mo_tx_sdp_mncc_rtp_create = SDP_CODECS_ALL_GSM,
|
.mo_tx_sdp_mncc_rtp_create = SDP_CODECS_ALL_GSM,
|
||||||
|
|
||||||
|
@ -1046,6 +1059,7 @@ static const struct codec_test codec_tests[] = {
|
||||||
GSM0808_PERM_FR1,
|
GSM0808_PERM_FR1,
|
||||||
LIST_END
|
LIST_END
|
||||||
},
|
},
|
||||||
|
.mt_rx_assigned_codec_fr = true,
|
||||||
.mt_rx_assigned_codec = "GSM",
|
.mt_rx_assigned_codec = "GSM",
|
||||||
.mt_tx_sdp_mncc_rtp_create = { "GSM#3" },
|
.mt_tx_sdp_mncc_rtp_create = { "GSM#3" },
|
||||||
.mt_tx_sdp_mncc_alert_ind = { "GSM#3" },
|
.mt_tx_sdp_mncc_alert_ind = { "GSM#3" },
|
||||||
|
@ -1055,6 +1069,7 @@ static const struct codec_test codec_tests[] = {
|
||||||
GSM0808_PERM_FR1,
|
GSM0808_PERM_FR1,
|
||||||
LIST_END
|
LIST_END
|
||||||
},
|
},
|
||||||
|
.mo_rx_reassigned_codec_fr = true,
|
||||||
.mo_rx_reassigned_codec = "GSM",
|
.mo_rx_reassigned_codec = "GSM",
|
||||||
|
|
||||||
.mt_tx_sdp_mncc_setup_cnf = { "GSM#3" },
|
.mt_tx_sdp_mncc_setup_cnf = { "GSM#3" },
|
||||||
|
@ -1068,6 +1083,7 @@ static const struct codec_test codec_tests[] = {
|
||||||
.mo_tx_sdp_mncc_setup_ind = SDP_CODECS_ALL_GSM,
|
.mo_tx_sdp_mncc_setup_ind = SDP_CODECS_ALL_GSM,
|
||||||
.mo_rx_sdp_mncc_rtp_create = {},
|
.mo_rx_sdp_mncc_rtp_create = {},
|
||||||
.mo_tx_assignment_perm_speech = PERM_SPEECH_ALL_GSM,
|
.mo_tx_assignment_perm_speech = PERM_SPEECH_ALL_GSM,
|
||||||
|
.mo_rx_assigned_codec_fr = true,
|
||||||
.mo_rx_assigned_codec = "AMR",
|
.mo_rx_assigned_codec = "AMR",
|
||||||
.mo_tx_sdp_mncc_rtp_create = SDP_CODECS_ALL_GSM,
|
.mo_tx_sdp_mncc_rtp_create = SDP_CODECS_ALL_GSM,
|
||||||
/* mt_rx_sdp_mncc_setup_req == mo_tx_sdp_mncc_rtp_create */
|
/* mt_rx_sdp_mncc_setup_req == mo_tx_sdp_mncc_rtp_create */
|
||||||
|
@ -1091,6 +1107,7 @@ static const struct codec_test codec_tests[] = {
|
||||||
GSM0808_PERM_HR1,
|
GSM0808_PERM_HR1,
|
||||||
LIST_END
|
LIST_END
|
||||||
},
|
},
|
||||||
|
.mt_rx_assigned_codec_fr = true,
|
||||||
.mt_rx_assigned_codec = "AMR",
|
.mt_rx_assigned_codec = "AMR",
|
||||||
|
|
||||||
/* We want to test how osmo-msc reacts to a peer using different payload type nrs. So below SDP string
|
/* We want to test how osmo-msc reacts to a peer using different payload type nrs. So below SDP string
|
||||||
|
@ -1117,6 +1134,7 @@ static const struct codec_test codec_tests[] = {
|
||||||
.mo_tx_sdp_mncc_setup_ind = SDP_CODECS_ALL_GSM,
|
.mo_tx_sdp_mncc_setup_ind = SDP_CODECS_ALL_GSM,
|
||||||
.mo_rx_sdp_mncc_rtp_create = {},
|
.mo_rx_sdp_mncc_rtp_create = {},
|
||||||
.mo_tx_assignment_perm_speech = PERM_SPEECH_ALL_GSM,
|
.mo_tx_assignment_perm_speech = PERM_SPEECH_ALL_GSM,
|
||||||
|
.mo_rx_assigned_codec_fr = true,
|
||||||
.mo_rx_assigned_codec = "AMR",
|
.mo_rx_assigned_codec = "AMR",
|
||||||
/* We want to test how osmo-msc reacts to a peer using different payload type nrs. So below SDP string
|
/* We want to test how osmo-msc reacts to a peer using different payload type nrs. So below SDP string
|
||||||
* features odd numbers that osmo-msc would never pick.
|
* features odd numbers that osmo-msc would never pick.
|
||||||
|
@ -1150,6 +1168,7 @@ static const struct codec_test codec_tests[] = {
|
||||||
GSM0808_PERM_HR1,
|
GSM0808_PERM_HR1,
|
||||||
LIST_END
|
LIST_END
|
||||||
},
|
},
|
||||||
|
.mt_rx_assigned_codec_fr = true,
|
||||||
.mt_rx_assigned_codec = "AMR",
|
.mt_rx_assigned_codec = "AMR",
|
||||||
.mt_tx_sdp_mncc_rtp_create = SDP_CODECS_ALL_GSM_WITH_ODD_PT_NRS,
|
.mt_tx_sdp_mncc_rtp_create = SDP_CODECS_ALL_GSM_WITH_ODD_PT_NRS,
|
||||||
.mt_tx_sdp_mncc_alert_ind = SDP_CODECS_ALL_GSM_WITH_ODD_PT_NRS,
|
.mt_tx_sdp_mncc_alert_ind = SDP_CODECS_ALL_GSM_WITH_ODD_PT_NRS,
|
||||||
|
@ -1422,10 +1441,11 @@ static void test_codecs_mo(const struct codec_test *t)
|
||||||
OSMO_ASSERT(bssap_assignment_sent);
|
OSMO_ASSERT(bssap_assignment_sent);
|
||||||
VALIDATE_PERM_SPEECH(&bssap_assignment_command_last_channel_type, t->mo_tx_assignment_perm_speech);
|
VALIDATE_PERM_SPEECH(&bssap_assignment_command_last_channel_type, t->mo_tx_assignment_perm_speech);
|
||||||
|
|
||||||
btw("Assignment succeeds with %s, triggering MNCC_RTP_CREATE ack to MNCC with %s", t->mo_rx_assigned_codec,
|
btw("Assignment succeeds with %s %s, triggering MNCC_RTP_CREATE ack to MNCC with %s",
|
||||||
|
t->mo_rx_assigned_codec_fr ? "FR" : "HR", t->mo_rx_assigned_codec,
|
||||||
strlist_name(t->mo_tx_sdp_mncc_rtp_create));
|
strlist_name(t->mo_tx_sdp_mncc_rtp_create));
|
||||||
cc_to_mncc_expect_tx("", MNCC_RTP_CREATE);
|
cc_to_mncc_expect_tx("", MNCC_RTP_CREATE);
|
||||||
ms_sends_assignment_complete(t->mo_rx_assigned_codec);
|
ms_sends_assignment_complete(t->mo_rx_assigned_codec_fr, t->mo_rx_assigned_codec);
|
||||||
OSMO_ASSERT(cc_to_mncc_tx_confirmed);
|
OSMO_ASSERT(cc_to_mncc_tx_confirmed);
|
||||||
VALIDATE_SDP(cc_to_mncc_tx_last_sdp, t->mo_tx_sdp_mncc_rtp_create,
|
VALIDATE_SDP(cc_to_mncc_tx_last_sdp, t->mo_tx_sdp_mncc_rtp_create,
|
||||||
!t->mo_tx__ignore_pt_nrs);
|
!t->mo_tx__ignore_pt_nrs);
|
||||||
|
@ -1454,7 +1474,7 @@ static void test_codecs_mo(const struct codec_test *t)
|
||||||
btw("Validating re-assignment");
|
btw("Validating re-assignment");
|
||||||
OSMO_ASSERT(bssap_assignment_sent);
|
OSMO_ASSERT(bssap_assignment_sent);
|
||||||
VALIDATE_PERM_SPEECH(&bssap_assignment_command_last_channel_type, t->mo_tx_reassignment_perm_speech);
|
VALIDATE_PERM_SPEECH(&bssap_assignment_command_last_channel_type, t->mo_tx_reassignment_perm_speech);
|
||||||
ms_sends_assignment_complete(t->mo_rx_reassigned_codec);
|
ms_sends_assignment_complete(t->mo_rx_reassigned_codec_fr, t->mo_rx_reassigned_codec);
|
||||||
}
|
}
|
||||||
|
|
||||||
dtap_expect_tx("8307" /* CC: Connect */);
|
dtap_expect_tx("8307" /* CC: Connect */);
|
||||||
|
@ -1591,7 +1611,7 @@ static void test_codecs_mt(const struct codec_test *t)
|
||||||
VALIDATE_PERM_SPEECH(&bssap_assignment_command_last_channel_type, t->mt_tx_assignment_perm_speech);
|
VALIDATE_PERM_SPEECH(&bssap_assignment_command_last_channel_type, t->mt_tx_assignment_perm_speech);
|
||||||
|
|
||||||
btw("Assignment completes, triggering CRCX to CN");
|
btw("Assignment completes, triggering CRCX to CN");
|
||||||
ms_sends_assignment_complete(t->mt_rx_assigned_codec);
|
ms_sends_assignment_complete(t->mt_rx_assigned_codec_fr, t->mt_rx_assigned_codec);
|
||||||
|
|
||||||
btw("MNCC sends MNCC_RTP_CREATE, which first waits for the CN side RTP");
|
btw("MNCC sends MNCC_RTP_CREATE, which first waits for the CN side RTP");
|
||||||
sdp_str_from_codec_strs(mncc_rtp.sdp, sizeof(mncc_rtp.sdp), t->mt_rx_sdp_mncc_rtp_create);
|
sdp_str_from_codec_strs(mncc_rtp.sdp, sizeof(mncc_rtp.sdp), t->mt_rx_sdp_mncc_rtp_create);
|
||||||
|
|
|
@ -1059,7 +1059,7 @@ void ms_sends_security_mode_complete(uint8_t utran_encryption)
|
||||||
g_msub = NULL;
|
g_msub = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ms_sends_assignment_complete(const char *sdp_codec_str)
|
void ms_sends_assignment_complete(bool fr, const char *sdp_codec_str)
|
||||||
{
|
{
|
||||||
const struct codec_mapping *m;
|
const struct codec_mapping *m;
|
||||||
struct sdp_audio_codec codec;
|
struct sdp_audio_codec codec;
|
||||||
|
@ -1069,11 +1069,27 @@ void ms_sends_assignment_complete(const char *sdp_codec_str)
|
||||||
codec_mapping_foreach (m) {
|
codec_mapping_foreach (m) {
|
||||||
if (!m->has_gsm0808_speech_codec)
|
if (!m->has_gsm0808_speech_codec)
|
||||||
continue;
|
continue;
|
||||||
if (!sdp_audio_codec_cmp(&m->sdp, &codec, true, false))
|
|
||||||
break;
|
if (fr) {
|
||||||
|
if (m->frhr != CODEC_FRHR_FR)
|
||||||
|
continue;
|
||||||
|
} else {
|
||||||
|
if (m->frhr != CODEC_FRHR_HR)
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sdp_audio_codec_cmp(&m->sdp, &codec, true, false))
|
||||||
|
continue;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
if (!m)
|
||||||
|
btw("ERROR: no codec_mapping for %s", sdp_codec_str);
|
||||||
OSMO_ASSERT(m);
|
OSMO_ASSERT(m);
|
||||||
|
|
||||||
|
btw("ms_sends_assignment_complete(%s) -> %s 0x%x", sdp_codec_str,
|
||||||
|
gsm0808_speech_codec_type_name(m->gsm0808_speech_codec.type),
|
||||||
|
m->gsm0808_speech_codec.cfg);
|
||||||
|
|
||||||
ran_dec = (struct ran_msg){
|
ran_dec = (struct ran_msg){
|
||||||
.msg_type = RAN_MSG_ASSIGNMENT_COMPLETE,
|
.msg_type = RAN_MSG_ASSIGNMENT_COMPLETE,
|
||||||
.assignment_complete = {
|
.assignment_complete = {
|
||||||
|
|
|
@ -192,7 +192,7 @@ void ms_sends_compl_l3(const char *hex, const struct gsm0808_speech_codec_list *
|
||||||
void ms_sends_classmark_update(const struct osmo_gsm48_classmark *classmark);
|
void ms_sends_classmark_update(const struct osmo_gsm48_classmark *classmark);
|
||||||
void ms_sends_ciphering_mode_complete(const char *inner_nas_msg);
|
void ms_sends_ciphering_mode_complete(const char *inner_nas_msg);
|
||||||
void ms_sends_security_mode_complete(uint8_t utran_encryption);
|
void ms_sends_security_mode_complete(uint8_t utran_encryption);
|
||||||
void ms_sends_assignment_complete(const char *sdp_codec_name);
|
void ms_sends_assignment_complete(bool fr, const char *sdp_codec_str);
|
||||||
void gsup_rx(const char *rx_hex, const char *expect_tx_hex);
|
void gsup_rx(const char *rx_hex, const char *expect_tx_hex);
|
||||||
void send_sms(struct vlr_subscr *receiver,
|
void send_sms(struct vlr_subscr *receiver,
|
||||||
struct vlr_subscr *sender,
|
struct vlr_subscr *sender,
|
||||||
|
|
Loading…
Reference in New Issue