aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/osmocom/bsc/codec_pref.h6
-rw-r--r--src/osmo-bsc/codec_pref.c65
-rw-r--r--src/osmo-bsc/gsm_08_08.c9
-rw-r--r--tests/codec_pref/codec_pref_test.c93
-rw-r--r--tests/codec_pref/codec_pref_test.ok1068
5 files changed, 1240 insertions, 1 deletions
diff --git a/include/osmocom/bsc/codec_pref.h b/include/osmocom/bsc/codec_pref.h
index 94fc987eb..09aaa604b 100644
--- a/include/osmocom/bsc/codec_pref.h
+++ b/include/osmocom/bsc/codec_pref.h
@@ -7,6 +7,8 @@ struct gsm0808_channel_type;
struct gsm0808_speech_codec_list;
struct gsm_audio_support;
struct bts_codec_conf;
+struct bsc_msc_data;
+struct gsm_bts;
int match_codec_pref(enum gsm48_chan_mode *chan_mode,
bool *full_rate,
@@ -15,3 +17,7 @@ int match_codec_pref(enum gsm48_chan_mode *chan_mode,
struct gsm_audio_support * const *audio_support,
int audio_length,
const struct bts_codec_conf *bts_codec);
+
+void gen_bss_supported_codec_list(struct gsm0808_speech_codec_list *scl,
+ const struct bsc_msc_data *msc,
+ const struct gsm_bts *bts);
diff --git a/src/osmo-bsc/codec_pref.c b/src/osmo-bsc/codec_pref.c
index 924f77fe2..c998e6007 100644
--- a/src/osmo-bsc/codec_pref.c
+++ b/src/osmo-bsc/codec_pref.c
@@ -242,3 +242,68 @@ int match_codec_pref(enum gsm48_chan_mode *chan_mode,
return 0;
}
+
+/*! Determine the BSS supported speech codec list that is sent to the MSC with
+ * the COMPLETE LAYER 3 INFORMATION message.
+ * \param[out] scl GSM 08.08 speech codec list with BSS supported codecs.
+ * \param[in] msc associated msc (current codec settings).
+ * \param[in] bts associated bts (current codec settings). */
+void gen_bss_supported_codec_list(struct gsm0808_speech_codec_list *scl,
+ const struct bsc_msc_data *msc, const struct gsm_bts *bts)
+{
+ uint8_t perm_spch;
+ unsigned int i;
+ int rc;
+ uint16_t amr_s15_s0_bts;
+ uint16_t amr_s15_s0_msc;
+ uint16_t amr_s15_s0;
+ const struct gsm48_multi_rate_conf *amr_cfg_bts;
+ const struct gsm48_multi_rate_conf *amr_cfg_msc;
+
+ memset(scl, 0, sizeof(*scl));
+
+ for (i = 0; i < msc->audio_length; i++) {
+
+ /* Pick a permitted speech value from the global codec configuration list */
+ perm_spch = audio_support_to_gsm88(msc->audio_support[i]);
+
+ /* Check this permitted speech value against the BTS specific parameters.
+ * if the BTS does not support the codec, try the next one */
+ if (!test_codec_support_bts(&bts->codec, perm_spch))
+ continue;
+
+ /* Write item into codec list */
+ rc = gsm0808_speech_codec_from_chan_type(&scl->codec[scl->len], perm_spch);
+ if (rc != 0)
+ continue;
+
+ /* AMR (HR/FR version 3) is the only codec that requires a codec
+ * configuration (S0-S15). Determine the current configuration and update
+ * the cfg flag. */
+ if (msc->audio_support[i]->ver == 3) {
+
+ /* First lookup the BTS specific AMR rate configuration. Thsi config
+ * is set via the VTY for each BTS individually. In cases where no
+ * configuration is set we will assume a safe default */
+ if (msc->audio_support[i]->hr) {
+ amr_cfg_bts = (struct gsm48_multi_rate_conf *)&bts->mr_half.gsm48_ie;
+ amr_s15_s0_bts = gsm0808_sc_cfg_from_gsm48_mr_cfg(amr_cfg_bts, false);
+ } else {
+ amr_cfg_bts = (struct gsm48_multi_rate_conf *)&bts->mr_full.gsm48_ie;
+ amr_s15_s0_bts = gsm0808_sc_cfg_from_gsm48_mr_cfg(amr_cfg_bts, true);
+ }
+
+ /* At next, lookup the AMR rate configuration that is set for the MSC */
+ amr_cfg_msc = &msc->amr_conf;
+ amr_s15_s0_msc = gsm0808_sc_cfg_from_gsm48_mr_cfg(amr_cfg_msc, true);
+
+ /* Calculate the intersection of the two configurations and update S0-S15
+ * in the codec list. */
+ amr_s15_s0 = amr_s15_s0_bts & amr_s15_s0_msc;
+ scl->codec[scl->len].cfg = amr_s15_s0;
+ }
+
+ scl->len++;
+ }
+}
+
diff --git a/src/osmo-bsc/gsm_08_08.c b/src/osmo-bsc/gsm_08_08.c
index 0d7cdf0d5..807eb8c44 100644
--- a/src/osmo-bsc/gsm_08_08.c
+++ b/src/osmo-bsc/gsm_08_08.c
@@ -24,6 +24,7 @@
#include <osmocom/bsc/debug.h>
#include <osmocom/bsc/paging.h>
#include <osmocom/bsc/gsm_08_08.h>
+#include <osmocom/bsc/codec_pref.h>
#include <osmocom/bsc/gsm_04_80.h>
#include <osmocom/bsc/gsm_04_08_rr.h>
@@ -446,6 +447,7 @@ static bool complete_layer3(struct gsm_subscriber_connection *conn,
char *imsi = NULL;
struct msgb *resp;
enum bsc_con ret;
+ struct gsm0808_speech_codec_list scl;
/* Check the filter */
rc = bsc_filter_initial(msc->network->bsc_data, msc, conn, msg,
@@ -491,7 +493,12 @@ static bool complete_layer3(struct gsm_subscriber_connection *conn,
bsc_scan_bts_msg(conn, msg);
- resp = gsm0808_create_layer3_2(msg, cgi_for_msc(conn->sccp.msc, conn_get_bts(conn)), NULL);
+ if (gscon_is_aoip(conn)) {
+ gen_bss_supported_codec_list(&scl, msc, conn_get_bts(conn));
+ resp = gsm0808_create_layer3_2(msg, cgi_for_msc(conn->sccp.msc, conn_get_bts(conn)), &scl);
+ } else
+ resp = gsm0808_create_layer3_2(msg, cgi_for_msc(conn->sccp.msc, conn_get_bts(conn)), NULL);
+
if (!resp) {
LOGP(DMSC, LOGL_DEBUG, "Failed to create layer3 message.\n");
return false;
diff --git a/tests/codec_pref/codec_pref_test.c b/tests/codec_pref/codec_pref_test.c
index efc77f645..20e3525f0 100644
--- a/tests/codec_pref/codec_pref_test.c
+++ b/tests/codec_pref/codec_pref_test.c
@@ -201,6 +201,17 @@ static void make_msc_config(struct bsc_msc_data *msc, uint8_t config_no)
OSMO_ASSERT(config_no < N_CONFIG_VARIANTS);
+ /* Setup an AMR configuration, this configuration is separate and does
+ * not influence other codecs than AMR */
+ msc->amr_conf.m4_75 = 1;
+ msc->amr_conf.m5_15 = 1;
+ msc->amr_conf.m5_90 = 1;
+ msc->amr_conf.m6_70 = 1;
+ msc->amr_conf.m7_40 = 1;
+ msc->amr_conf.m7_95 = 1;
+ msc->amr_conf.m10_2 = 1;
+ msc->amr_conf.m12_2 = 1;
+
switch (config_no) {
case 0:
/* FR1 only */
@@ -282,11 +293,36 @@ static void make_bts_config(struct gsm_bts *bts, uint8_t config_no)
{
/* Note: FR is supported by all BTSs, so there is no flag for it */
+ struct gsm48_multi_rate_conf *cfg;
+
OSMO_ASSERT(config_no < N_CONFIG_VARIANTS);
bts->codec.hr = 0;
bts->codec.efr = 0;
bts->codec.amr = 0;
+ memset(&bts->mr_full.gsm48_ie, 0, sizeof(bts->mr_full.gsm48_ie));
+ memset(&bts->mr_full.gsm48_ie, 0, sizeof(bts->mr_half.gsm48_ie));
+
+ /* Setup an AMR configuration, this configuration is separate and does
+ * not influence other codecs than AMR */
+ cfg = (struct gsm48_multi_rate_conf*) &bts->mr_full.gsm48_ie;
+ cfg->m4_75 = 1;
+ cfg->m5_15 = 1;
+ cfg->m5_90 = 1;
+ cfg->m6_70 = 1;
+ cfg->m7_40 = 1;
+ cfg->m7_95 = 1;
+ cfg->m10_2 = 1;
+ cfg->m12_2 = 1;
+ cfg = (struct gsm48_multi_rate_conf*) &bts->mr_half.gsm48_ie;
+ cfg->m4_75 = 1;
+ cfg->m5_15 = 1;
+ cfg->m5_90 = 1;
+ cfg->m6_70 = 1;
+ cfg->m7_40 = 1;
+ cfg->m7_95 = 1;
+ cfg->m10_2 = 0;
+ cfg->m12_2 = 0;
switch (config_no) {
case 0:
@@ -590,6 +626,62 @@ static void test_selected_non_working(void)
free_msc_config(&msc_local);
}
+/* Try execute bss_supp_codec_list(), display input and output parameters */
+static void test_gen_bss_supported_codec_list(const struct bsc_msc_data *msc, struct gsm_bts *bts)
+{
+ unsigned int i;
+ struct gsm0808_speech_codec_list scl;
+
+ printf("Determining Codec List (BSS Supported):\n");
+
+ printf(" * BSS: audio support settings (%u items):\n", msc->audio_length);
+ for (i = 0; i < msc->audio_length; i++)
+ if (msc->audio_support[i]->hr)
+ printf(" audio_support[%u]=HR%u\n", i, msc->audio_support[i]->ver);
+ else
+ printf(" audio_support[%u]=FR%u\n", i, msc->audio_support[i]->ver);
+
+ printf(" * BTS: audio support settings:\n");
+ printf(" (GSM-FR implicitly supported)\n");
+ printf(" codec->hr=%u\n", bts->codec.hr);
+ printf(" codec->efr=%u\n", bts->codec.efr);
+ printf(" codec->amr=%u\n", bts->codec.amr);
+
+ gen_bss_supported_codec_list(&scl, msc, bts);
+
+ printf(" * result: speech codec list (%u items):\n", scl.len);
+ for (i = 0; i < scl.len; i++) {
+ printf(" codec[%u]->type=%s", i, gsm0808_speech_codec_type_name(scl.codec[i].type));
+ if (msc->audio_support[i]->ver == 3)
+ printf(" S15-S0=%04x", scl.codec[i].cfg);
+ printf("\n");
+ }
+ printf("\n");
+}
+
+/* Test gen_bss_supported_codec_list() with some mixed configurations */
+static void test_gen_bss_supported_codec_list_cfgs(void)
+{
+ struct bsc_msc_data msc_local;
+ struct gsm_bts bts_local;
+ uint8_t i;
+ uint8_t k;
+
+ printf("============== test_gen_bss_supp_codec_list_cfgs ==============\n\n");
+ init_msc_config(&msc_local);
+
+ for (i = 0; i < N_CONFIG_VARIANTS; i++) {
+ for (k = 0; k < N_CONFIG_VARIANTS; k++) {
+ make_msc_config(&msc_local, i);
+ make_bts_config(&bts_local, k);
+ printf("MSC config: %u, BTS config: %u\n", i, k);
+ test_gen_bss_supported_codec_list(&msc_local, &bts_local);
+ }
+ }
+
+ free_msc_config(&msc_local);
+}
+
static const struct log_info_cat log_categories[] = {
[DMSC] = {
.name = "DMSC",
@@ -615,6 +707,7 @@ int main(int argc, char **argv)
test_msc();
test_selected_working();
test_selected_non_working();
+ test_gen_bss_supported_codec_list_cfgs();
printf("Testing execution completed.\n");
talloc_free(ctx);
diff --git a/tests/codec_pref/codec_pref_test.ok b/tests/codec_pref/codec_pref_test.ok
index 3b36ea1c4..befc4972e 100644
--- a/tests/codec_pref/codec_pref_test.ok
+++ b/tests/codec_pref/codec_pref_test.ok
@@ -1018,4 +1018,1072 @@ Determining channel mode and rate:
codec->amr=1
* result: rc=-1, full_rate=0, chan_mode=SIGNALLING
+============== test_gen_bss_supp_codec_list_cfgs ==============
+
+MSC config: 0, BTS config: 0
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (1 items):
+ audio_support[0]=FR1
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=0
+ codec->efr=0
+ codec->amr=0
+ * result: speech codec list (1 items):
+ codec[0]->type=FR1
+
+MSC config: 0, BTS config: 1
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (1 items):
+ audio_support[0]=FR1
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=1
+ codec->efr=0
+ codec->amr=0
+ * result: speech codec list (1 items):
+ codec[0]->type=FR1
+
+MSC config: 0, BTS config: 2
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (1 items):
+ audio_support[0]=FR1
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=0
+ codec->efr=1
+ codec->amr=0
+ * result: speech codec list (1 items):
+ codec[0]->type=FR1
+
+MSC config: 0, BTS config: 3
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (1 items):
+ audio_support[0]=FR1
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=0
+ codec->efr=0
+ codec->amr=1
+ * result: speech codec list (1 items):
+ codec[0]->type=FR1
+
+MSC config: 0, BTS config: 4
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (1 items):
+ audio_support[0]=FR1
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=0
+ codec->efr=0
+ codec->amr=1
+ * result: speech codec list (1 items):
+ codec[0]->type=FR1
+
+MSC config: 0, BTS config: 5
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (1 items):
+ audio_support[0]=FR1
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=1
+ codec->efr=0
+ codec->amr=0
+ * result: speech codec list (1 items):
+ codec[0]->type=FR1
+
+MSC config: 0, BTS config: 6
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (1 items):
+ audio_support[0]=FR1
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=1
+ codec->efr=1
+ codec->amr=0
+ * result: speech codec list (1 items):
+ codec[0]->type=FR1
+
+MSC config: 0, BTS config: 7
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (1 items):
+ audio_support[0]=FR1
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=0
+ codec->efr=0
+ codec->amr=1
+ * result: speech codec list (1 items):
+ codec[0]->type=FR1
+
+MSC config: 0, BTS config: 8
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (1 items):
+ audio_support[0]=FR1
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=1
+ codec->efr=1
+ codec->amr=1
+ * result: speech codec list (1 items):
+ codec[0]->type=FR1
+
+MSC config: 1, BTS config: 0
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (1 items):
+ audio_support[0]=HR1
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=0
+ codec->efr=0
+ codec->amr=0
+ * result: speech codec list (0 items):
+
+MSC config: 1, BTS config: 1
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (1 items):
+ audio_support[0]=HR1
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=1
+ codec->efr=0
+ codec->amr=0
+ * result: speech codec list (1 items):
+ codec[0]->type=HR1
+
+MSC config: 1, BTS config: 2
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (1 items):
+ audio_support[0]=HR1
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=0
+ codec->efr=1
+ codec->amr=0
+ * result: speech codec list (0 items):
+
+MSC config: 1, BTS config: 3
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (1 items):
+ audio_support[0]=HR1
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=0
+ codec->efr=0
+ codec->amr=1
+ * result: speech codec list (0 items):
+
+MSC config: 1, BTS config: 4
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (1 items):
+ audio_support[0]=HR1
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=0
+ codec->efr=0
+ codec->amr=1
+ * result: speech codec list (0 items):
+
+MSC config: 1, BTS config: 5
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (1 items):
+ audio_support[0]=HR1
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=1
+ codec->efr=0
+ codec->amr=0
+ * result: speech codec list (1 items):
+ codec[0]->type=HR1
+
+MSC config: 1, BTS config: 6
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (1 items):
+ audio_support[0]=HR1
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=1
+ codec->efr=1
+ codec->amr=0
+ * result: speech codec list (1 items):
+ codec[0]->type=HR1
+
+MSC config: 1, BTS config: 7
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (1 items):
+ audio_support[0]=HR1
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=0
+ codec->efr=0
+ codec->amr=1
+ * result: speech codec list (0 items):
+
+MSC config: 1, BTS config: 8
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (1 items):
+ audio_support[0]=HR1
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=1
+ codec->efr=1
+ codec->amr=1
+ * result: speech codec list (1 items):
+ codec[0]->type=HR1
+
+MSC config: 2, BTS config: 0
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (1 items):
+ audio_support[0]=FR2
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=0
+ codec->efr=0
+ codec->amr=0
+ * result: speech codec list (0 items):
+
+MSC config: 2, BTS config: 1
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (1 items):
+ audio_support[0]=FR2
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=1
+ codec->efr=0
+ codec->amr=0
+ * result: speech codec list (0 items):
+
+MSC config: 2, BTS config: 2
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (1 items):
+ audio_support[0]=FR2
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=0
+ codec->efr=1
+ codec->amr=0
+ * result: speech codec list (1 items):
+ codec[0]->type=FR2
+
+MSC config: 2, BTS config: 3
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (1 items):
+ audio_support[0]=FR2
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=0
+ codec->efr=0
+ codec->amr=1
+ * result: speech codec list (0 items):
+
+MSC config: 2, BTS config: 4
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (1 items):
+ audio_support[0]=FR2
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=0
+ codec->efr=0
+ codec->amr=1
+ * result: speech codec list (0 items):
+
+MSC config: 2, BTS config: 5
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (1 items):
+ audio_support[0]=FR2
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=1
+ codec->efr=0
+ codec->amr=0
+ * result: speech codec list (0 items):
+
+MSC config: 2, BTS config: 6
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (1 items):
+ audio_support[0]=FR2
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=1
+ codec->efr=1
+ codec->amr=0
+ * result: speech codec list (1 items):
+ codec[0]->type=FR2
+
+MSC config: 2, BTS config: 7
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (1 items):
+ audio_support[0]=FR2
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=0
+ codec->efr=0
+ codec->amr=1
+ * result: speech codec list (0 items):
+
+MSC config: 2, BTS config: 8
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (1 items):
+ audio_support[0]=FR2
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=1
+ codec->efr=1
+ codec->amr=1
+ * result: speech codec list (1 items):
+ codec[0]->type=FR2
+
+MSC config: 3, BTS config: 0
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (1 items):
+ audio_support[0]=FR3
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=0
+ codec->efr=0
+ codec->amr=0
+ * result: speech codec list (0 items):
+
+MSC config: 3, BTS config: 1
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (1 items):
+ audio_support[0]=FR3
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=1
+ codec->efr=0
+ codec->amr=0
+ * result: speech codec list (0 items):
+
+MSC config: 3, BTS config: 2
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (1 items):
+ audio_support[0]=FR3
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=0
+ codec->efr=1
+ codec->amr=0
+ * result: speech codec list (0 items):
+
+MSC config: 3, BTS config: 3
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (1 items):
+ audio_support[0]=FR3
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=0
+ codec->efr=0
+ codec->amr=1
+ * result: speech codec list (1 items):
+ codec[0]->type=FR3 S15-S0=57ff
+
+MSC config: 3, BTS config: 4
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (1 items):
+ audio_support[0]=FR3
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=0
+ codec->efr=0
+ codec->amr=1
+ * result: speech codec list (1 items):
+ codec[0]->type=FR3 S15-S0=57ff
+
+MSC config: 3, BTS config: 5
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (1 items):
+ audio_support[0]=FR3
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=1
+ codec->efr=0
+ codec->amr=0
+ * result: speech codec list (0 items):
+
+MSC config: 3, BTS config: 6
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (1 items):
+ audio_support[0]=FR3
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=1
+ codec->efr=1
+ codec->amr=0
+ * result: speech codec list (0 items):
+
+MSC config: 3, BTS config: 7
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (1 items):
+ audio_support[0]=FR3
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=0
+ codec->efr=0
+ codec->amr=1
+ * result: speech codec list (1 items):
+ codec[0]->type=FR3 S15-S0=57ff
+
+MSC config: 3, BTS config: 8
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (1 items):
+ audio_support[0]=FR3
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=1
+ codec->efr=1
+ codec->amr=1
+ * result: speech codec list (1 items):
+ codec[0]->type=FR3 S15-S0=57ff
+
+MSC config: 4, BTS config: 0
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (1 items):
+ audio_support[0]=HR3
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=0
+ codec->efr=0
+ codec->amr=0
+ * result: speech codec list (0 items):
+
+MSC config: 4, BTS config: 1
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (1 items):
+ audio_support[0]=HR3
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=1
+ codec->efr=0
+ codec->amr=0
+ * result: speech codec list (0 items):
+
+MSC config: 4, BTS config: 2
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (1 items):
+ audio_support[0]=HR3
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=0
+ codec->efr=1
+ codec->amr=0
+ * result: speech codec list (0 items):
+
+MSC config: 4, BTS config: 3
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (1 items):
+ audio_support[0]=HR3
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=0
+ codec->efr=0
+ codec->amr=1
+ * result: speech codec list (1 items):
+ codec[0]->type=HR3 S15-S0=073f
+
+MSC config: 4, BTS config: 4
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (1 items):
+ audio_support[0]=HR3
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=0
+ codec->efr=0
+ codec->amr=1
+ * result: speech codec list (1 items):
+ codec[0]->type=HR3 S15-S0=073f
+
+MSC config: 4, BTS config: 5
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (1 items):
+ audio_support[0]=HR3
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=1
+ codec->efr=0
+ codec->amr=0
+ * result: speech codec list (0 items):
+
+MSC config: 4, BTS config: 6
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (1 items):
+ audio_support[0]=HR3
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=1
+ codec->efr=1
+ codec->amr=0
+ * result: speech codec list (0 items):
+
+MSC config: 4, BTS config: 7
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (1 items):
+ audio_support[0]=HR3
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=0
+ codec->efr=0
+ codec->amr=1
+ * result: speech codec list (1 items):
+ codec[0]->type=HR3 S15-S0=073f
+
+MSC config: 4, BTS config: 8
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (1 items):
+ audio_support[0]=HR3
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=1
+ codec->efr=1
+ codec->amr=1
+ * result: speech codec list (1 items):
+ codec[0]->type=HR3 S15-S0=073f
+
+MSC config: 5, BTS config: 0
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (2 items):
+ audio_support[0]=FR1
+ audio_support[1]=HR1
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=0
+ codec->efr=0
+ codec->amr=0
+ * result: speech codec list (1 items):
+ codec[0]->type=FR1
+
+MSC config: 5, BTS config: 1
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (2 items):
+ audio_support[0]=FR1
+ audio_support[1]=HR1
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=1
+ codec->efr=0
+ codec->amr=0
+ * result: speech codec list (2 items):
+ codec[0]->type=FR1
+ codec[1]->type=HR1
+
+MSC config: 5, BTS config: 2
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (2 items):
+ audio_support[0]=FR1
+ audio_support[1]=HR1
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=0
+ codec->efr=1
+ codec->amr=0
+ * result: speech codec list (1 items):
+ codec[0]->type=FR1
+
+MSC config: 5, BTS config: 3
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (2 items):
+ audio_support[0]=FR1
+ audio_support[1]=HR1
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=0
+ codec->efr=0
+ codec->amr=1
+ * result: speech codec list (1 items):
+ codec[0]->type=FR1
+
+MSC config: 5, BTS config: 4
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (2 items):
+ audio_support[0]=FR1
+ audio_support[1]=HR1
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=0
+ codec->efr=0
+ codec->amr=1
+ * result: speech codec list (1 items):
+ codec[0]->type=FR1
+
+MSC config: 5, BTS config: 5
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (2 items):
+ audio_support[0]=FR1
+ audio_support[1]=HR1
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=1
+ codec->efr=0
+ codec->amr=0
+ * result: speech codec list (2 items):
+ codec[0]->type=FR1
+ codec[1]->type=HR1
+
+MSC config: 5, BTS config: 6
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (2 items):
+ audio_support[0]=FR1
+ audio_support[1]=HR1
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=1
+ codec->efr=1
+ codec->amr=0
+ * result: speech codec list (2 items):
+ codec[0]->type=FR1
+ codec[1]->type=HR1
+
+MSC config: 5, BTS config: 7
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (2 items):
+ audio_support[0]=FR1
+ audio_support[1]=HR1
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=0
+ codec->efr=0
+ codec->amr=1
+ * result: speech codec list (1 items):
+ codec[0]->type=FR1
+
+MSC config: 5, BTS config: 8
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (2 items):
+ audio_support[0]=FR1
+ audio_support[1]=HR1
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=1
+ codec->efr=1
+ codec->amr=1
+ * result: speech codec list (2 items):
+ codec[0]->type=FR1
+ codec[1]->type=HR1
+
+MSC config: 6, BTS config: 0
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (3 items):
+ audio_support[0]=FR1
+ audio_support[1]=FR2
+ audio_support[2]=HR1
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=0
+ codec->efr=0
+ codec->amr=0
+ * result: speech codec list (1 items):
+ codec[0]->type=FR1
+
+MSC config: 6, BTS config: 1
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (3 items):
+ audio_support[0]=FR1
+ audio_support[1]=FR2
+ audio_support[2]=HR1
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=1
+ codec->efr=0
+ codec->amr=0
+ * result: speech codec list (2 items):
+ codec[0]->type=FR1
+ codec[1]->type=HR1
+
+MSC config: 6, BTS config: 2
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (3 items):
+ audio_support[0]=FR1
+ audio_support[1]=FR2
+ audio_support[2]=HR1
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=0
+ codec->efr=1
+ codec->amr=0
+ * result: speech codec list (2 items):
+ codec[0]->type=FR1
+ codec[1]->type=FR2
+
+MSC config: 6, BTS config: 3
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (3 items):
+ audio_support[0]=FR1
+ audio_support[1]=FR2
+ audio_support[2]=HR1
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=0
+ codec->efr=0
+ codec->amr=1
+ * result: speech codec list (1 items):
+ codec[0]->type=FR1
+
+MSC config: 6, BTS config: 4
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (3 items):
+ audio_support[0]=FR1
+ audio_support[1]=FR2
+ audio_support[2]=HR1
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=0
+ codec->efr=0
+ codec->amr=1
+ * result: speech codec list (1 items):
+ codec[0]->type=FR1
+
+MSC config: 6, BTS config: 5
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (3 items):
+ audio_support[0]=FR1
+ audio_support[1]=FR2
+ audio_support[2]=HR1
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=1
+ codec->efr=0
+ codec->amr=0
+ * result: speech codec list (2 items):
+ codec[0]->type=FR1
+ codec[1]->type=HR1
+
+MSC config: 6, BTS config: 6
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (3 items):
+ audio_support[0]=FR1
+ audio_support[1]=FR2
+ audio_support[2]=HR1
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=1
+ codec->efr=1
+ codec->amr=0
+ * result: speech codec list (3 items):
+ codec[0]->type=FR1
+ codec[1]->type=FR2
+ codec[2]->type=HR1
+
+MSC config: 6, BTS config: 7
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (3 items):
+ audio_support[0]=FR1
+ audio_support[1]=FR2
+ audio_support[2]=HR1
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=0
+ codec->efr=0
+ codec->amr=1
+ * result: speech codec list (1 items):
+ codec[0]->type=FR1
+
+MSC config: 6, BTS config: 8
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (3 items):
+ audio_support[0]=FR1
+ audio_support[1]=FR2
+ audio_support[2]=HR1
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=1
+ codec->efr=1
+ codec->amr=1
+ * result: speech codec list (3 items):
+ codec[0]->type=FR1
+ codec[1]->type=FR2
+ codec[2]->type=HR1
+
+MSC config: 7, BTS config: 0
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (3 items):
+ audio_support[0]=FR1
+ audio_support[1]=FR3
+ audio_support[2]=HR3
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=0
+ codec->efr=0
+ codec->amr=0
+ * result: speech codec list (1 items):
+ codec[0]->type=FR1
+
+MSC config: 7, BTS config: 1
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (3 items):
+ audio_support[0]=FR1
+ audio_support[1]=FR3
+ audio_support[2]=HR3
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=1
+ codec->efr=0
+ codec->amr=0
+ * result: speech codec list (1 items):
+ codec[0]->type=FR1
+
+MSC config: 7, BTS config: 2
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (3 items):
+ audio_support[0]=FR1
+ audio_support[1]=FR3
+ audio_support[2]=HR3
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=0
+ codec->efr=1
+ codec->amr=0
+ * result: speech codec list (1 items):
+ codec[0]->type=FR1
+
+MSC config: 7, BTS config: 3
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (3 items):
+ audio_support[0]=FR1
+ audio_support[1]=FR3
+ audio_support[2]=HR3
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=0
+ codec->efr=0
+ codec->amr=1
+ * result: speech codec list (3 items):
+ codec[0]->type=FR1
+ codec[1]->type=FR3 S15-S0=57ff
+ codec[2]->type=HR3 S15-S0=073f
+
+MSC config: 7, BTS config: 4
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (3 items):
+ audio_support[0]=FR1
+ audio_support[1]=FR3
+ audio_support[2]=HR3
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=0
+ codec->efr=0
+ codec->amr=1
+ * result: speech codec list (3 items):
+ codec[0]->type=FR1
+ codec[1]->type=FR3 S15-S0=57ff
+ codec[2]->type=HR3 S15-S0=073f
+
+MSC config: 7, BTS config: 5
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (3 items):
+ audio_support[0]=FR1
+ audio_support[1]=FR3
+ audio_support[2]=HR3
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=1
+ codec->efr=0
+ codec->amr=0
+ * result: speech codec list (1 items):
+ codec[0]->type=FR1
+
+MSC config: 7, BTS config: 6
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (3 items):
+ audio_support[0]=FR1
+ audio_support[1]=FR3
+ audio_support[2]=HR3
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=1
+ codec->efr=1
+ codec->amr=0
+ * result: speech codec list (1 items):
+ codec[0]->type=FR1
+
+MSC config: 7, BTS config: 7
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (3 items):
+ audio_support[0]=FR1
+ audio_support[1]=FR3
+ audio_support[2]=HR3
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=0
+ codec->efr=0
+ codec->amr=1
+ * result: speech codec list (3 items):
+ codec[0]->type=FR1
+ codec[1]->type=FR3 S15-S0=57ff
+ codec[2]->type=HR3 S15-S0=073f
+
+MSC config: 7, BTS config: 8
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (3 items):
+ audio_support[0]=FR1
+ audio_support[1]=FR3
+ audio_support[2]=HR3
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=1
+ codec->efr=1
+ codec->amr=1
+ * result: speech codec list (3 items):
+ codec[0]->type=FR1
+ codec[1]->type=FR3 S15-S0=57ff
+ codec[2]->type=HR3 S15-S0=073f
+
+MSC config: 8, BTS config: 0
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (5 items):
+ audio_support[0]=FR1
+ audio_support[1]=FR2
+ audio_support[2]=FR3
+ audio_support[3]=HR1
+ audio_support[4]=HR3
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=0
+ codec->efr=0
+ codec->amr=0
+ * result: speech codec list (1 items):
+ codec[0]->type=FR1
+
+MSC config: 8, BTS config: 1
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (5 items):
+ audio_support[0]=FR1
+ audio_support[1]=FR2
+ audio_support[2]=FR3
+ audio_support[3]=HR1
+ audio_support[4]=HR3
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=1
+ codec->efr=0
+ codec->amr=0
+ * result: speech codec list (2 items):
+ codec[0]->type=FR1
+ codec[1]->type=HR1
+
+MSC config: 8, BTS config: 2
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (5 items):
+ audio_support[0]=FR1
+ audio_support[1]=FR2
+ audio_support[2]=FR3
+ audio_support[3]=HR1
+ audio_support[4]=HR3
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=0
+ codec->efr=1
+ codec->amr=0
+ * result: speech codec list (2 items):
+ codec[0]->type=FR1
+ codec[1]->type=FR2
+
+MSC config: 8, BTS config: 3
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (5 items):
+ audio_support[0]=FR1
+ audio_support[1]=FR2
+ audio_support[2]=FR3
+ audio_support[3]=HR1
+ audio_support[4]=HR3
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=0
+ codec->efr=0
+ codec->amr=1
+ * result: speech codec list (3 items):
+ codec[0]->type=FR1
+ codec[1]->type=FR3
+ codec[2]->type=HR3 S15-S0=073f
+
+MSC config: 8, BTS config: 4
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (5 items):
+ audio_support[0]=FR1
+ audio_support[1]=FR2
+ audio_support[2]=FR3
+ audio_support[3]=HR1
+ audio_support[4]=HR3
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=0
+ codec->efr=0
+ codec->amr=1
+ * result: speech codec list (3 items):
+ codec[0]->type=FR1
+ codec[1]->type=FR3
+ codec[2]->type=HR3 S15-S0=073f
+
+MSC config: 8, BTS config: 5
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (5 items):
+ audio_support[0]=FR1
+ audio_support[1]=FR2
+ audio_support[2]=FR3
+ audio_support[3]=HR1
+ audio_support[4]=HR3
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=1
+ codec->efr=0
+ codec->amr=0
+ * result: speech codec list (2 items):
+ codec[0]->type=FR1
+ codec[1]->type=HR1
+
+MSC config: 8, BTS config: 6
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (5 items):
+ audio_support[0]=FR1
+ audio_support[1]=FR2
+ audio_support[2]=FR3
+ audio_support[3]=HR1
+ audio_support[4]=HR3
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=1
+ codec->efr=1
+ codec->amr=0
+ * result: speech codec list (3 items):
+ codec[0]->type=FR1
+ codec[1]->type=FR2
+ codec[2]->type=HR1 S15-S0=0000
+
+MSC config: 8, BTS config: 7
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (5 items):
+ audio_support[0]=FR1
+ audio_support[1]=FR2
+ audio_support[2]=FR3
+ audio_support[3]=HR1
+ audio_support[4]=HR3
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=0
+ codec->efr=0
+ codec->amr=1
+ * result: speech codec list (3 items):
+ codec[0]->type=FR1
+ codec[1]->type=FR3
+ codec[2]->type=HR3 S15-S0=073f
+
+MSC config: 8, BTS config: 8
+Determining Codec List (BSS Supported):
+ * BSS: audio support settings (5 items):
+ audio_support[0]=FR1
+ audio_support[1]=FR2
+ audio_support[2]=FR3
+ audio_support[3]=HR1
+ audio_support[4]=HR3
+ * BTS: audio support settings:
+ (GSM-FR implicitly supported)
+ codec->hr=1
+ codec->efr=1
+ codec->amr=1
+ * result: speech codec list (5 items):
+ codec[0]->type=FR1
+ codec[1]->type=FR2
+ codec[2]->type=FR3 S15-S0=57ff
+ codec[3]->type=HR1
+ codec[4]->type=HR3 S15-S0=073f
+
Testing execution completed.