BSC: Implement RSL_IE_MultirateCfg and use it in BSC_Tests

Change-Id: I0a5ddce570c0fd70f096d897b0b609d20b552ff7
This commit is contained in:
Pau Espin 2022-09-02 17:56:00 +02:00
parent 8539312f8f
commit f7634dc706
2 changed files with 34 additions and 24 deletions

View File

@ -111,6 +111,9 @@ private const BtsParams c_BtsParams[NUM_BTS_CFG] := {
/* BTS3 */ { trx_num := 1, tsc := 4 }
}
private const RSL_IE_Body mr_conf_amr_5_90 :=
valueof(RSL_IE_Body:{multirate_cfg := ts_RSL_MultirateCfg(true, 0, '00000100'B /* 5,90k */)});
/* per-BTS state which we keep */
type record BTS_State {
/* component reference to the IPA_Client component used for RSL */
@ -4504,17 +4507,10 @@ testcase TC_assignment_codec_amr_f() runs on test_CT {
/* Note: This setups the codec configuration. The parameter payload in
* mr_conf must be consistant with the parameter codecElements in pars
* and also must match the amr-config in osmo-bsc.cfg! */
var RSL_IE_Body mr_conf := {
other := {
len := 2,
payload := '2804'O
}
};
pars.ass_codec_list := valueof(ts_BSSMAP_IE_CodecList({ts_CodecAMR_F}));
pars.ass_codec_list.codecElements[0].s0_7 := '00000100'B; /* 5,90k */
pars.ass_codec_list.codecElements[0].s8_15 := '01010111'B;
pars.expect_mr_conf_ie := mr_conf;
pars.expect_mr_conf_ie := mr_conf_amr_5_90;
f_init(1, true);
f_sleep(1.0);
@ -4539,17 +4535,10 @@ testcase TC_assignment_codec_amr_h() runs on test_CT {
var MSC_ConnHdlr vc_conn;
/* See note above */
var RSL_IE_Body mr_conf := {
other := {
len := 2,
payload := '2804'O
}
};
pars.ass_codec_list := valueof(ts_BSSMAP_IE_CodecList({ts_CodecAMR_H}));
pars.ass_codec_list.codecElements[0].s0_7 := '00000100'B; /* 5,90k */
pars.ass_codec_list.codecElements[0].s8_15 := '00000111'B;
pars.expect_mr_conf_ie := mr_conf;
pars.expect_mr_conf_ie := mr_conf_amr_5_90;
f_init(1, true);
f_sleep(1.0);
@ -4598,17 +4587,11 @@ testcase TC_assignment_codec_amr_startmode_cruft() runs on test_CT {
var TestHdlrParams pars := f_gen_test_hdlr_pars();
var MSC_ConnHdlr vc_conn;
var RSL_IE_Body mr_conf := {
other := {
len := 2,
payload := '2004'O /* <- expect ICMI=0, smod=00 */
}
};
pars.ass_codec_list := valueof(ts_BSSMAP_IE_CodecList({ts_CodecAMR_F}));
pars.ass_codec_list.codecElements[0].s0_7 := '00000100'B; /* 5,90k */
pars.ass_codec_list.codecElements[0].s8_15 := '01010111'B;
pars.expect_mr_conf_ie := mr_conf;
/* expect ICMI=0, smod=00: */
pars.expect_mr_conf_ie := valueof(RSL_IE_Body:{multirate_cfg := ts_RSL_MultirateCfg(false, 0, '00000100'B /* 5,90k */)});
f_init(1, true);
f_sleep(1.0);

View File

@ -814,6 +814,31 @@ module RSL_Types {
slot_count := slot_count
}
/* 9.3.52, 3GPP TS 44.018 10.5.2.21aa */
type record RSL_IE_MultirateCfg {
uint8_t len,
uint3_t mr_speech_ver,
boolean nscb,
boolean icmi,
BIT1 spare,
uint2_t start_mode,
BIT8 amr_codec_modes,
octetstring parameters
} with {
variant (len) "LENGTHTO(mr_speech_ver,nscb,icmi,spare,start_mode,amr_codec_modes,parameters)"
};
template (value) RSL_IE_MultirateCfg ts_RSL_MultirateCfg(boolean icmi := true, uint2_t start_mode := 0,
BIT8 amr_codec_modes := '00000100'B /* 5,90k */) := {
len := 2,
mr_speech_ver := 1,
nscb := false,
icmi := icmi,
spare := '0'B,
start_mode := start_mode,
amr_codec_modes := amr_codec_modes,
parameters := ''O
}
/* 9.3.53 */
type record RSL_IE_MultirateCtrl {
uint3_t spare,
@ -952,6 +977,7 @@ module RSL_Types {
RSL_IE_MS_Power ms_power,
RSL_IE_MS_Power_Parameters ms_power_params,
uint8_t timing_adv,
RSL_IE_MultirateCfg multirate_cfg,
RSL_IE_MultirateCtrl multirate_ctrl,
uint8_t msg_id,
RSL_IE_FrameNumber frame_nr,
@ -1014,6 +1040,7 @@ module RSL_Types {
ms_power, iei = RSL_IE_MS_POWER;
ms_power_params, iei = RSL_IE_MS_POWER_PARAM;
timing_adv, iei = RSL_IE_TIMING_ADVANCE;
multirate_cfg, iei = RSL_IE_MR_CONFIG;
multirate_ctrl, iei = RSL_IE_MR_CONTROL;
msg_id, iei = RSL_IE_MSG_ID;