codec_pref: check bts codec support
The vty option bts->codec-support allows the user to set the supported codecs per BTS level. However, those values are currently only used to make the handover decision but the logic that handles the BSSMAP ASSIGNMENT REQUEST does not check those flags. - Do not ignore bts->codec-support flags on BSSMAP ASSIGNMENT REQUEST Change-Id: I285234e9c81de74d9fb9907fca2c443b08537435 Closes: OS#3361
This commit is contained in:
parent
844876f8d5
commit
5bc43cd107
|
@ -1,6 +1,6 @@
|
|||
#pragma once
|
||||
|
||||
int match_codec_pref(int *full_rate, enum gsm48_chan_mode *chan_mode,
|
||||
const struct gsm0808_channel_type *ct,
|
||||
const struct gsm0808_speech_codec_list *scl,
|
||||
const struct bsc_msc_data *msc);
|
||||
struct gsm_bts;
|
||||
|
||||
int match_codec_pref(int *full_rate, enum gsm48_chan_mode *chan_mode, const struct gsm0808_channel_type *ct,
|
||||
const struct gsm0808_speech_codec_list *scl, const struct bsc_msc_data *msc, struct gsm_bts *bts);
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
#include <osmocom/gsm/gsm0808_utils.h>
|
||||
#include <osmocom/bsc/bsc_msc_data.h>
|
||||
#include <osmocom/bsc/codec_pref.h>
|
||||
#include <osmocom/bsc/gsm_data.h>
|
||||
|
||||
/* Helper function for match_codec_pref(), looks up a matching chan mode for
|
||||
* a given permitted speech value */
|
||||
|
@ -130,6 +131,34 @@ static bool test_codec_pref(const struct gsm0808_channel_type *ct,
|
|||
return false;
|
||||
}
|
||||
|
||||
/* Helper function to check if the given permitted speech value is supported
|
||||
* by the BTS. (vty option bts->codec-support). */
|
||||
static bool test_codec_support_bts(struct gsm_bts *bts, uint8_t perm_spch)
|
||||
{
|
||||
switch (perm_spch) {
|
||||
case GSM0808_PERM_FR1:
|
||||
/* GSM-FR is always supported by all BTSs. There is also no way to
|
||||
* selectively disable GSM-RF per BTS via VTY. */
|
||||
return true;
|
||||
case GSM0808_PERM_FR2:
|
||||
if (bts->codec.efr)
|
||||
return true;
|
||||
case GSM0808_PERM_FR3:
|
||||
if (bts->codec.amr)
|
||||
return true;
|
||||
case GSM0808_PERM_HR1:
|
||||
if (bts->codec.hr)
|
||||
return true;
|
||||
case GSM0808_PERM_HR3:
|
||||
if (bts->codec.amr)
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/*! Helper function for bssmap_handle_assignm_req(), matches the codec
|
||||
* preferences from the MSC with the codec preferences
|
||||
* \param[out] full_rate '1' if full-rate, '0' if half-rate, '-1' if no match
|
||||
|
@ -137,17 +166,26 @@ static bool test_codec_pref(const struct gsm0808_channel_type *ct,
|
|||
* \param[in] ct GSM 08.08 channel type
|
||||
* \param[in] scl GSM 08.08 speech codec list
|
||||
* \param[in] msc MSC data [for configuration]
|
||||
* \param[in] bts BTS data [for configuration]
|
||||
* \returns 0 on success, -1 in case no match was found */
|
||||
int match_codec_pref(int *full_rate, enum gsm48_chan_mode *chan_mode,
|
||||
const struct gsm0808_channel_type *ct,
|
||||
const struct gsm0808_speech_codec_list *scl, const struct bsc_msc_data *msc)
|
||||
int match_codec_pref(int *full_rate, enum gsm48_chan_mode *chan_mode, const struct gsm0808_channel_type *ct,
|
||||
const struct gsm0808_speech_codec_list *scl, const struct bsc_msc_data *msc, struct gsm_bts *bts)
|
||||
{
|
||||
unsigned int i;
|
||||
uint8_t perm_spch;
|
||||
bool match = false;
|
||||
|
||||
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, perm_spch) == false)
|
||||
continue;
|
||||
|
||||
/* Match the permitted speech value against the codec lists that were
|
||||
* advertised by the MS and the MSC */
|
||||
if (test_codec_pref(ct, scl, perm_spch)) {
|
||||
match = true;
|
||||
break;
|
||||
|
|
|
@ -680,7 +680,7 @@ static int bssmap_handle_assignm_req(struct gsm_subscriber_connection *conn,
|
|||
|
||||
/* Match codec information from the assignment command against the
|
||||
* local preferences of the BSC */
|
||||
rc = match_codec_pref(&full_rate, &chan_mode, &ct, scl_ptr, msc);
|
||||
rc = match_codec_pref(&full_rate, &chan_mode, &ct, scl_ptr, msc, conn_get_bts(conn));
|
||||
if (rc < 0) {
|
||||
LOGP(DMSC, LOGL_ERROR, "No supported audio type found for channel_type ="
|
||||
" { ch_indctr=0x%x, ch_rate_type=0x%x, perm_spch=[ %s] }\n",
|
||||
|
|
|
@ -270,9 +270,62 @@ static void make_msc_config(struct bsc_msc_data *msc, uint8_t config_no)
|
|||
}
|
||||
}
|
||||
|
||||
/* Generate a realitically looking bts codec configuration */
|
||||
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 */
|
||||
|
||||
OSMO_ASSERT(config_no < N_CONFIG_VARIANTS);
|
||||
|
||||
bts->codec.hr = 0;
|
||||
bts->codec.efr = 0;
|
||||
bts->codec.amr = 0;
|
||||
|
||||
switch (config_no) {
|
||||
case 0:
|
||||
/* FR1 (implicit) only */
|
||||
break;
|
||||
case 1:
|
||||
/* HR1 only (+FR implicit) */
|
||||
bts->codec.hr = 1;
|
||||
break;
|
||||
case 2:
|
||||
/* FR2 only (+FR implicit) */
|
||||
bts->codec.efr = 1;
|
||||
break;
|
||||
case 3:
|
||||
/* FR3 only (+FR implicit) */
|
||||
bts->codec.amr = 1;
|
||||
break;
|
||||
case 4:
|
||||
/* HR3 only (+FR implicit) */
|
||||
bts->codec.amr = 1;
|
||||
break;
|
||||
case 5:
|
||||
/* FR1 (implicit) and HR1 */
|
||||
bts->codec.hr = 1;
|
||||
break;
|
||||
case 6:
|
||||
/* FR1 (implicit), FR2 and HR1 */
|
||||
bts->codec.efr = 1;
|
||||
bts->codec.hr = 1;
|
||||
break;
|
||||
case 7:
|
||||
/* FR1 (implicit), FR3 and HR3 */
|
||||
bts->codec.amr = 1;
|
||||
break;
|
||||
case 8:
|
||||
/* FR1 (implicit), FR2, FR3, HR1 and HR3 */
|
||||
bts->codec.hr = 1;
|
||||
bts->codec.efr = 1;
|
||||
bts->codec.amr = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* Try execute match_codec_pref(), display input and output parameters */
|
||||
static int test_match_codec_pref(const struct gsm0808_channel_type *ct,
|
||||
const struct gsm0808_speech_codec_list *scl, const struct bsc_msc_data *msc)
|
||||
static int test_match_codec_pref(const struct gsm0808_channel_type *ct, const struct gsm0808_speech_codec_list *scl,
|
||||
const struct bsc_msc_data *msc, struct gsm_bts *bts)
|
||||
{
|
||||
int rc;
|
||||
unsigned int i;
|
||||
|
@ -296,7 +349,13 @@ static int test_match_codec_pref(const struct gsm0808_channel_type *ct,
|
|||
else
|
||||
printf(" audio_support[%u]=FR%u\n", i, msc->audio_support[i]->ver);
|
||||
|
||||
rc = match_codec_pref(&full_rate, &chan_mode, ct, scl, msc);
|
||||
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);
|
||||
|
||||
rc = match_codec_pref(&full_rate, &chan_mode, ct, scl, msc, bts);
|
||||
printf(" * result: rc=%i, full_rate=%i, chan_mode=%s\n", rc, full_rate, gsm48_chan_mode_name(chan_mode));
|
||||
|
||||
printf("\n");
|
||||
|
@ -311,6 +370,7 @@ static void test_one_to_one(void)
|
|||
struct gsm0808_channel_type ct_msc;
|
||||
struct gsm0808_speech_codec_list scl_ms;
|
||||
struct bsc_msc_data msc_local;
|
||||
struct gsm_bts bts_local;
|
||||
int rc;
|
||||
|
||||
printf("============== test_one_to_one ==============\n\n");
|
||||
|
@ -321,7 +381,8 @@ static void test_one_to_one(void)
|
|||
make_msc_config(&msc_local, i);
|
||||
make_scl_config(&scl_ms, i);
|
||||
make_ct_config(&ct_msc, i);
|
||||
rc = test_match_codec_pref(&ct_msc, &scl_ms, &msc_local);
|
||||
make_bts_config(&bts_local, i);
|
||||
rc = test_match_codec_pref(&ct_msc, &scl_ms, &msc_local, &bts_local);
|
||||
OSMO_ASSERT(rc == 0);
|
||||
}
|
||||
|
||||
|
@ -335,6 +396,7 @@ static void test_ms(void)
|
|||
struct gsm0808_channel_type ct_msc;
|
||||
struct gsm0808_speech_codec_list scl_ms;
|
||||
struct bsc_msc_data msc_local;
|
||||
struct gsm_bts bts_local;
|
||||
int rc;
|
||||
|
||||
printf("============== test_ms ==============\n\n");
|
||||
|
@ -343,9 +405,10 @@ static void test_ms(void)
|
|||
|
||||
make_msc_config(&msc_local, 8);
|
||||
make_ct_config(&ct_msc, 8);
|
||||
make_bts_config(&bts_local, 8);
|
||||
for (i = 0; i < N_CONFIG_VARIANTS; i++) {
|
||||
make_scl_config(&scl_ms, i);
|
||||
rc = test_match_codec_pref(&ct_msc, &scl_ms, &msc_local);
|
||||
rc = test_match_codec_pref(&ct_msc, &scl_ms, &msc_local, &bts_local);
|
||||
OSMO_ASSERT(rc == 0);
|
||||
}
|
||||
|
||||
|
@ -359,6 +422,7 @@ static void test_ct(void)
|
|||
struct gsm0808_channel_type ct_msc;
|
||||
struct gsm0808_speech_codec_list scl_ms;
|
||||
struct bsc_msc_data msc_local;
|
||||
struct gsm_bts bts_local;
|
||||
int rc;
|
||||
|
||||
printf("============== test_ct ==============\n\n");
|
||||
|
@ -367,9 +431,10 @@ static void test_ct(void)
|
|||
|
||||
make_msc_config(&msc_local, 8);
|
||||
make_scl_config(&scl_ms, 8);
|
||||
make_bts_config(&bts_local, 8);
|
||||
for (i = 0; i < N_CONFIG_VARIANTS; i++) {
|
||||
make_ct_config(&ct_msc, i);
|
||||
rc = test_match_codec_pref(&ct_msc, &scl_ms, &msc_local);
|
||||
rc = test_match_codec_pref(&ct_msc, &scl_ms, &msc_local, &bts_local);
|
||||
OSMO_ASSERT(rc == 0);
|
||||
}
|
||||
|
||||
|
@ -383,6 +448,7 @@ static void test_msc(void)
|
|||
struct gsm0808_channel_type ct_msc;
|
||||
struct gsm0808_speech_codec_list scl_ms;
|
||||
struct bsc_msc_data msc_local;
|
||||
struct gsm_bts bts_local;
|
||||
int rc;
|
||||
|
||||
printf("============== test_msc ==============\n\n");
|
||||
|
@ -391,9 +457,10 @@ static void test_msc(void)
|
|||
|
||||
make_ct_config(&ct_msc, 8);
|
||||
make_scl_config(&scl_ms, 8);
|
||||
make_bts_config(&bts_local, 8);
|
||||
for (i = 0; i < N_CONFIG_VARIANTS; i++) {
|
||||
make_msc_config(&msc_local, 8);
|
||||
rc = test_match_codec_pref(&ct_msc, &scl_ms, &msc_local);
|
||||
rc = test_match_codec_pref(&ct_msc, &scl_ms, &msc_local, &bts_local);
|
||||
OSMO_ASSERT(rc == 0);
|
||||
}
|
||||
|
||||
|
@ -406,6 +473,7 @@ static void test_selected_working(void)
|
|||
struct gsm0808_channel_type ct_msc;
|
||||
struct gsm0808_speech_codec_list scl_ms;
|
||||
struct bsc_msc_data msc_local;
|
||||
struct gsm_bts bts_local;
|
||||
int rc;
|
||||
|
||||
printf("============== test_selected_working ==============\n\n");
|
||||
|
@ -415,19 +483,43 @@ static void test_selected_working(void)
|
|||
make_scl_config(&scl_ms, 6);
|
||||
make_ct_config(&ct_msc, 5);
|
||||
make_msc_config(&msc_local, 7);
|
||||
rc = test_match_codec_pref(&ct_msc, &scl_ms, &msc_local);
|
||||
make_bts_config(&bts_local, 8);
|
||||
rc = test_match_codec_pref(&ct_msc, &scl_ms, &msc_local, &bts_local);
|
||||
OSMO_ASSERT(rc == 0);
|
||||
|
||||
make_scl_config(&scl_ms, 0);
|
||||
make_ct_config(&ct_msc, 5);
|
||||
make_msc_config(&msc_local, 7);
|
||||
rc = test_match_codec_pref(&ct_msc, &scl_ms, &msc_local);
|
||||
make_bts_config(&bts_local, 8);
|
||||
rc = test_match_codec_pref(&ct_msc, &scl_ms, &msc_local, &bts_local);
|
||||
OSMO_ASSERT(rc == 0);
|
||||
|
||||
make_scl_config(&scl_ms, 1);
|
||||
make_ct_config(&ct_msc, 5);
|
||||
make_msc_config(&msc_local, 6);
|
||||
rc = test_match_codec_pref(&ct_msc, &scl_ms, &msc_local);
|
||||
make_bts_config(&bts_local, 8);
|
||||
rc = test_match_codec_pref(&ct_msc, &scl_ms, &msc_local, &bts_local);
|
||||
OSMO_ASSERT(rc == 0);
|
||||
|
||||
make_scl_config(&scl_ms, 6);
|
||||
make_ct_config(&ct_msc, 5);
|
||||
make_msc_config(&msc_local, 7);
|
||||
make_bts_config(&bts_local, 4);
|
||||
rc = test_match_codec_pref(&ct_msc, &scl_ms, &msc_local, &bts_local);
|
||||
OSMO_ASSERT(rc == 0);
|
||||
|
||||
make_scl_config(&scl_ms, 0);
|
||||
make_ct_config(&ct_msc, 5);
|
||||
make_msc_config(&msc_local, 7);
|
||||
make_bts_config(&bts_local, 2);
|
||||
rc = test_match_codec_pref(&ct_msc, &scl_ms, &msc_local, &bts_local);
|
||||
OSMO_ASSERT(rc == 0);
|
||||
|
||||
make_scl_config(&scl_ms, 1);
|
||||
make_ct_config(&ct_msc, 5);
|
||||
make_msc_config(&msc_local, 6);
|
||||
make_bts_config(&bts_local, 1);
|
||||
rc = test_match_codec_pref(&ct_msc, &scl_ms, &msc_local, &bts_local);
|
||||
OSMO_ASSERT(rc == 0);
|
||||
|
||||
free_msc_config(&msc_local);
|
||||
|
@ -439,6 +531,7 @@ static void test_selected_non_working(void)
|
|||
struct gsm0808_channel_type ct_msc;
|
||||
struct gsm0808_speech_codec_list scl_ms;
|
||||
struct bsc_msc_data msc_local;
|
||||
struct gsm_bts bts_local;
|
||||
int rc;
|
||||
|
||||
printf("============== test_selected_non_working ==============\n\n");
|
||||
|
@ -448,19 +541,43 @@ static void test_selected_non_working(void)
|
|||
make_scl_config(&scl_ms, 1);
|
||||
make_ct_config(&ct_msc, 5);
|
||||
make_msc_config(&msc_local, 7);
|
||||
rc = test_match_codec_pref(&ct_msc, &scl_ms, &msc_local);
|
||||
make_bts_config(&bts_local, 8);
|
||||
rc = test_match_codec_pref(&ct_msc, &scl_ms, &msc_local, &bts_local);
|
||||
OSMO_ASSERT(rc == -1);
|
||||
|
||||
make_scl_config(&scl_ms, 1);
|
||||
make_ct_config(&ct_msc, 5);
|
||||
make_msc_config(&msc_local, 7);
|
||||
rc = test_match_codec_pref(&ct_msc, &scl_ms, &msc_local);
|
||||
make_bts_config(&bts_local, 8);
|
||||
rc = test_match_codec_pref(&ct_msc, &scl_ms, &msc_local, &bts_local);
|
||||
OSMO_ASSERT(rc == -1);
|
||||
|
||||
make_scl_config(&scl_ms, 1);
|
||||
make_ct_config(&ct_msc, 4);
|
||||
make_msc_config(&msc_local, 6);
|
||||
rc = test_match_codec_pref(&ct_msc, &scl_ms, &msc_local);
|
||||
make_bts_config(&bts_local, 8);
|
||||
rc = test_match_codec_pref(&ct_msc, &scl_ms, &msc_local, &bts_local);
|
||||
OSMO_ASSERT(rc == -1);
|
||||
|
||||
make_scl_config(&scl_ms, 1);
|
||||
make_ct_config(&ct_msc, 2);
|
||||
make_msc_config(&msc_local, 7);
|
||||
make_bts_config(&bts_local, 8);
|
||||
rc = test_match_codec_pref(&ct_msc, &scl_ms, &msc_local, &bts_local);
|
||||
OSMO_ASSERT(rc == -1);
|
||||
|
||||
make_scl_config(&scl_ms, 1);
|
||||
make_ct_config(&ct_msc, 5);
|
||||
make_msc_config(&msc_local, 4);
|
||||
make_bts_config(&bts_local, 8);
|
||||
rc = test_match_codec_pref(&ct_msc, &scl_ms, &msc_local, &bts_local);
|
||||
OSMO_ASSERT(rc == -1);
|
||||
|
||||
make_scl_config(&scl_ms, 8);
|
||||
make_ct_config(&ct_msc, 4);
|
||||
make_msc_config(&msc_local, 6);
|
||||
make_bts_config(&bts_local, 7);
|
||||
rc = test_match_codec_pref(&ct_msc, &scl_ms, &msc_local, &bts_local);
|
||||
OSMO_ASSERT(rc == -1);
|
||||
|
||||
free_msc_config(&msc_local);
|
||||
|
|
|
@ -7,6 +7,11 @@ Determining channel mode and rate:
|
|||
perm_spch[0]=FR1
|
||||
* 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: rc=0, full_rate=1, chan_mode=SPEECH_V1
|
||||
|
||||
Determining channel mode and rate:
|
||||
|
@ -16,6 +21,11 @@ Determining channel mode and rate:
|
|||
perm_spch[0]=HR1
|
||||
* 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: rc=0, full_rate=0, chan_mode=SPEECH_V1
|
||||
|
||||
Determining channel mode and rate:
|
||||
|
@ -25,6 +35,11 @@ Determining channel mode and rate:
|
|||
perm_spch[0]=FR2
|
||||
* 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: rc=0, full_rate=1, chan_mode=SPEECH_EFR
|
||||
|
||||
Determining channel mode and rate:
|
||||
|
@ -34,6 +49,11 @@ Determining channel mode and rate:
|
|||
perm_spch[0]=FR3
|
||||
* 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: rc=0, full_rate=1, chan_mode=SPEECH_AMR
|
||||
|
||||
Determining channel mode and rate:
|
||||
|
@ -43,6 +63,11 @@ Determining channel mode and rate:
|
|||
perm_spch[0]=HR3
|
||||
* 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: rc=0, full_rate=0, chan_mode=SPEECH_AMR
|
||||
|
||||
Determining channel mode and rate:
|
||||
|
@ -55,6 +80,11 @@ Determining channel mode and rate:
|
|||
* 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: rc=0, full_rate=1, chan_mode=SPEECH_V1
|
||||
|
||||
Determining channel mode and rate:
|
||||
|
@ -70,6 +100,11 @@ Determining channel mode and rate:
|
|||
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: rc=0, full_rate=1, chan_mode=SPEECH_V1
|
||||
|
||||
Determining channel mode and rate:
|
||||
|
@ -85,6 +120,11 @@ Determining channel mode and rate:
|
|||
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: rc=0, full_rate=1, chan_mode=SPEECH_V1
|
||||
|
||||
Determining channel mode and rate:
|
||||
|
@ -106,6 +146,11 @@ Determining channel mode and rate:
|
|||
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: rc=0, full_rate=1, chan_mode=SPEECH_V1
|
||||
|
||||
============== test_ms ==============
|
||||
|
@ -125,6 +170,11 @@ Determining channel mode and rate:
|
|||
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: rc=0, full_rate=1, chan_mode=SPEECH_V1
|
||||
|
||||
Determining channel mode and rate:
|
||||
|
@ -142,6 +192,11 @@ Determining channel mode and rate:
|
|||
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: rc=0, full_rate=0, chan_mode=SPEECH_V1
|
||||
|
||||
Determining channel mode and rate:
|
||||
|
@ -159,6 +214,11 @@ Determining channel mode and rate:
|
|||
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: rc=0, full_rate=1, chan_mode=SPEECH_EFR
|
||||
|
||||
Determining channel mode and rate:
|
||||
|
@ -176,6 +236,11 @@ Determining channel mode and rate:
|
|||
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: rc=0, full_rate=1, chan_mode=SPEECH_AMR
|
||||
|
||||
Determining channel mode and rate:
|
||||
|
@ -193,6 +258,11 @@ Determining channel mode and rate:
|
|||
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: rc=0, full_rate=0, chan_mode=SPEECH_AMR
|
||||
|
||||
Determining channel mode and rate:
|
||||
|
@ -211,6 +281,11 @@ Determining channel mode and rate:
|
|||
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: rc=0, full_rate=1, chan_mode=SPEECH_V1
|
||||
|
||||
Determining channel mode and rate:
|
||||
|
@ -230,6 +305,11 @@ Determining channel mode and rate:
|
|||
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: rc=0, full_rate=1, chan_mode=SPEECH_V1
|
||||
|
||||
Determining channel mode and rate:
|
||||
|
@ -249,6 +329,11 @@ Determining channel mode and rate:
|
|||
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: rc=0, full_rate=1, chan_mode=SPEECH_V1
|
||||
|
||||
Determining channel mode and rate:
|
||||
|
@ -270,6 +355,11 @@ Determining channel mode and rate:
|
|||
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: rc=0, full_rate=1, chan_mode=SPEECH_V1
|
||||
|
||||
============== test_ct ==============
|
||||
|
@ -289,6 +379,11 @@ Determining channel mode and rate:
|
|||
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: rc=0, full_rate=1, chan_mode=SPEECH_V1
|
||||
|
||||
Determining channel mode and rate:
|
||||
|
@ -306,6 +401,11 @@ Determining channel mode and rate:
|
|||
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: rc=0, full_rate=0, chan_mode=SPEECH_V1
|
||||
|
||||
Determining channel mode and rate:
|
||||
|
@ -323,6 +423,11 @@ Determining channel mode and rate:
|
|||
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: rc=0, full_rate=1, chan_mode=SPEECH_EFR
|
||||
|
||||
Determining channel mode and rate:
|
||||
|
@ -340,6 +445,11 @@ Determining channel mode and rate:
|
|||
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: rc=0, full_rate=1, chan_mode=SPEECH_AMR
|
||||
|
||||
Determining channel mode and rate:
|
||||
|
@ -357,6 +467,11 @@ Determining channel mode and rate:
|
|||
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: rc=0, full_rate=0, chan_mode=SPEECH_AMR
|
||||
|
||||
Determining channel mode and rate:
|
||||
|
@ -375,6 +490,11 @@ Determining channel mode and rate:
|
|||
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: rc=0, full_rate=1, chan_mode=SPEECH_V1
|
||||
|
||||
Determining channel mode and rate:
|
||||
|
@ -394,6 +514,11 @@ Determining channel mode and rate:
|
|||
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: rc=0, full_rate=1, chan_mode=SPEECH_V1
|
||||
|
||||
Determining channel mode and rate:
|
||||
|
@ -413,6 +538,11 @@ Determining channel mode and rate:
|
|||
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: rc=0, full_rate=1, chan_mode=SPEECH_V1
|
||||
|
||||
Determining channel mode and rate:
|
||||
|
@ -434,6 +564,11 @@ Determining channel mode and rate:
|
|||
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: rc=0, full_rate=1, chan_mode=SPEECH_V1
|
||||
|
||||
============== test_msc ==============
|
||||
|
@ -457,6 +592,11 @@ Determining channel mode and rate:
|
|||
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: rc=0, full_rate=1, chan_mode=SPEECH_V1
|
||||
|
||||
Determining channel mode and rate:
|
||||
|
@ -478,6 +618,11 @@ Determining channel mode and rate:
|
|||
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: rc=0, full_rate=1, chan_mode=SPEECH_V1
|
||||
|
||||
Determining channel mode and rate:
|
||||
|
@ -499,6 +644,11 @@ Determining channel mode and rate:
|
|||
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: rc=0, full_rate=1, chan_mode=SPEECH_V1
|
||||
|
||||
Determining channel mode and rate:
|
||||
|
@ -520,6 +670,11 @@ Determining channel mode and rate:
|
|||
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: rc=0, full_rate=1, chan_mode=SPEECH_V1
|
||||
|
||||
Determining channel mode and rate:
|
||||
|
@ -541,6 +696,11 @@ Determining channel mode and rate:
|
|||
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: rc=0, full_rate=1, chan_mode=SPEECH_V1
|
||||
|
||||
Determining channel mode and rate:
|
||||
|
@ -562,6 +722,11 @@ Determining channel mode and rate:
|
|||
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: rc=0, full_rate=1, chan_mode=SPEECH_V1
|
||||
|
||||
Determining channel mode and rate:
|
||||
|
@ -583,6 +748,11 @@ Determining channel mode and rate:
|
|||
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: rc=0, full_rate=1, chan_mode=SPEECH_V1
|
||||
|
||||
Determining channel mode and rate:
|
||||
|
@ -604,6 +774,11 @@ Determining channel mode and rate:
|
|||
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: rc=0, full_rate=1, chan_mode=SPEECH_V1
|
||||
|
||||
Determining channel mode and rate:
|
||||
|
@ -625,6 +800,11 @@ Determining channel mode and rate:
|
|||
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: rc=0, full_rate=1, chan_mode=SPEECH_V1
|
||||
|
||||
============== test_selected_working ==============
|
||||
|
@ -641,6 +821,11 @@ Determining channel mode and rate:
|
|||
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: rc=0, full_rate=1, chan_mode=SPEECH_V1
|
||||
|
||||
Determining channel mode and rate:
|
||||
|
@ -653,6 +838,11 @@ Determining channel mode and rate:
|
|||
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: rc=0, full_rate=1, chan_mode=SPEECH_V1
|
||||
|
||||
Determining channel mode and rate:
|
||||
|
@ -665,6 +855,64 @@ Determining channel mode and rate:
|
|||
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: rc=0, full_rate=0, chan_mode=SPEECH_V1
|
||||
|
||||
Determining channel mode and rate:
|
||||
* MS: speech codec list (3 items):
|
||||
codec[0]->type=FR1
|
||||
codec[1]->type=FR2
|
||||
codec[2]->type=HR1
|
||||
* MSC: channel type permitted speech (2 items):
|
||||
perm_spch[0]=FR1
|
||||
perm_spch[1]=HR1
|
||||
* 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: rc=0, full_rate=1, chan_mode=SPEECH_V1
|
||||
|
||||
Determining channel mode and rate:
|
||||
* MS: speech codec list (1 items):
|
||||
codec[0]->type=FR1
|
||||
* MSC: channel type permitted speech (2 items):
|
||||
perm_spch[0]=FR1
|
||||
perm_spch[1]=HR1
|
||||
* 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: rc=0, full_rate=1, chan_mode=SPEECH_V1
|
||||
|
||||
Determining channel mode and rate:
|
||||
* MS: speech codec list (1 items):
|
||||
codec[0]->type=HR1
|
||||
* MSC: channel type permitted speech (2 items):
|
||||
perm_spch[0]=FR1
|
||||
perm_spch[1]=HR1
|
||||
* 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: rc=0, full_rate=0, chan_mode=SPEECH_V1
|
||||
|
||||
============== test_selected_non_working ==============
|
||||
|
@ -679,6 +927,11 @@ Determining channel mode and rate:
|
|||
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: rc=-1, full_rate=-1, chan_mode=SIGNALLING
|
||||
|
||||
Determining channel mode and rate:
|
||||
|
@ -691,6 +944,11 @@ Determining channel mode and rate:
|
|||
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: rc=-1, full_rate=-1, chan_mode=SIGNALLING
|
||||
|
||||
Determining channel mode and rate:
|
||||
|
@ -702,6 +960,62 @@ Determining channel mode and rate:
|
|||
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: rc=-1, full_rate=-1, chan_mode=SIGNALLING
|
||||
|
||||
Determining channel mode and rate:
|
||||
* MS: speech codec list (1 items):
|
||||
codec[0]->type=HR1
|
||||
* MSC: channel type permitted speech (1 items):
|
||||
perm_spch[0]=FR2
|
||||
* 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: rc=-1, full_rate=-1, chan_mode=SIGNALLING
|
||||
|
||||
Determining channel mode and rate:
|
||||
* MS: speech codec list (1 items):
|
||||
codec[0]->type=HR1
|
||||
* MSC: channel type permitted speech (2 items):
|
||||
perm_spch[0]=FR1
|
||||
perm_spch[1]=HR1
|
||||
* 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: rc=-1, full_rate=-1, chan_mode=SIGNALLING
|
||||
|
||||
Determining channel mode and rate:
|
||||
* MS: speech codec list (5 items):
|
||||
codec[0]->type=FR1
|
||||
codec[1]->type=FR2
|
||||
codec[2]->type=FR3
|
||||
codec[3]->type=HR1
|
||||
codec[4]->type=HR3
|
||||
* MSC: channel type permitted speech (1 items):
|
||||
perm_spch[0]=HR3
|
||||
* 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: rc=-1, full_rate=-1, chan_mode=SIGNALLING
|
||||
|
||||
Testing execution completed.
|
||||
|
|
Loading…
Reference in New Issue