osmith has uploaded this change for review. (
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/31556 )
Change subject: library/RSL_Types: RSL_SpeechAlgo: support CSD
......................................................................
library/RSL_Types: RSL_SpeechAlgo: support CSD
Add data rates from 3GPP TS 48.058 § 9.3.6 octet 6 to the enum, and
rename it from RSL_SpeechAlgo to RSL_SpeechAlgoDataRate so it's clear
that it contains both.
Rename RSL_CMOD_SP_GSM3 to RSL_CMOD_SP_GSM3_DT_NT1 and
RSL_CMOD_SP_GSM4 to RSL_CMOD_SP_GSM4_DT_NT8 because their values are
shared between a speech and a data entry.
Related: OS#4393
Change-Id: Ief2d95c7e9d71afb26fa74da755294226c8e158d
---
M bsc/BSC_Tests.ttcn
M bts/BTS_Tests.ttcn
M bts/BTS_Tests_VAMOS.ttcn
M library/RSL_Types.ttcn
4 files changed, 70 insertions(+), 36 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/56/31556/1
diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn
index b9182e3..965873e 100644
--- a/bsc/BSC_Tests.ttcn
+++ b/bsc/BSC_Tests.ttcn
@@ -4273,12 +4273,12 @@
}
}
case (FR_AMR) {
- if (match(rsl_mode, tr_RSL_ChanMode(RSL_CHRT_TCH_F, RSL_CMOD_SP_GSM3))) {
+ if (match(rsl_mode, tr_RSL_ChanMode(RSL_CHRT_TCH_F, RSL_CMOD_SP_GSM3_DT_NT1))) {
return true;
}
}
case (HR_AMR) {
- if (match(rsl_mode, tr_RSL_ChanMode(RSL_CHRT_TCH_H, RSL_CMOD_SP_GSM3))) {
+ if (match(rsl_mode, tr_RSL_ChanMode(RSL_CHRT_TCH_H, RSL_CMOD_SP_GSM3_DT_NT1))) {
return true;
}
}
@@ -4361,11 +4361,11 @@
}
case (FR_AMR) {
mode_ie.chan_mode.ch_rate_type := RSL_CHRT_TCH_F;
- mode_ie.chan_mode.coding_alg_rate := RSL_CMOD_SP_GSM3;
+ mode_ie.chan_mode.coding_alg_rate := RSL_CMOD_SP_GSM3_DT_NT1;
}
case (HR_AMR) {
mode_ie.chan_mode.ch_rate_type := RSL_CHRT_TCH_H;
- mode_ie.chan_mode.coding_alg_rate := RSL_CMOD_SP_GSM3;
+ mode_ie.chan_mode.coding_alg_rate := RSL_CMOD_SP_GSM3_DT_NT1;
}
}
return mode_ie;
diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn
index 1859eed..54c27a2 100644
--- a/bts/BTS_Tests.ttcn
+++ b/bts/BTS_Tests.ttcn
@@ -871,7 +871,7 @@
ch_act.ies := ch_act.ies & { valueof(t_RSL_IE(RSL_IE_ENCR_INFO,
RSL_IE_Body:{encr_info :=
encr_info})) };
}
- if (mode.coding_alg_rate == RSL_CMOD_SP_GSM3) {
+ if (mode.coding_alg_rate == RSL_CMOD_SP_GSM3_DT_NT1) {
ch_act.ies := ch_act.ies & { valueof(t_RSL_IE(RSL_IE_MR_CONFIG,
RSL_IE_Body:{multirate_cfg := g_pars.mr_conf})) };
}
@@ -2546,7 +2546,7 @@
case (RSL_CMOD_NO_RESOURCE) { tch_mode := L1CTL_CHAN_MODE_SIGN; }
case (RSL_CMOD_SP_GSM1) { tch_mode := L1CTL_CHAN_MODE_SPEECH_V1; }
case (RSL_CMOD_SP_GSM2) { tch_mode := L1CTL_CHAN_MODE_SPEECH_V2; }
- case (RSL_CMOD_SP_GSM3) { tch_mode := L1CTL_CHAN_MODE_SPEECH_V3;
+ case (RSL_CMOD_SP_GSM3_DT_NT1) { tch_mode := L1CTL_CHAN_MODE_SPEECH_V3;
amr_codecs_bitmask := g_pars.mr_conf.codec_modes;
}
case else {
@@ -2611,13 +2611,13 @@
{ payload_len := 15; hdr := '00'O; }
case (tr_RSL_ChanMode(RSL_CHRT_TCH_F, RSL_CMOD_SP_GSM2)) /* TCH/EFS */
{ payload_len := 31; hdr := 'C0'O; }
- case (tr_RSL_ChanMode(RSL_CHRT_TCH_F, RSL_CMOD_SP_GSM3)) /* TCH/AFS */
+ case (tr_RSL_ChanMode(RSL_CHRT_TCH_F, RSL_CMOD_SP_GSM3_DT_NT1)) /* TCH/AFS */
{
var integer amr_ft := get_start_amr_ft();
payload_len := f_amrft_payload_len(amr_ft) + 2;
hdr := enc_RTP_AMR_Hdr(valueof(ts_RTP_AMR_Hdr(amr_ft, amr_ft, '1'B)));
}
- case (tr_RSL_ChanMode(RSL_CHRT_TCH_H, RSL_CMOD_SP_GSM3)) /* TCH/AHS */
+ case (tr_RSL_ChanMode(RSL_CHRT_TCH_H, RSL_CMOD_SP_GSM3_DT_NT1)) /* TCH/AHS */
{
var integer amr_ft := get_start_amr_ft();
payload_len := f_amrft_payload_len(amr_ft) + 2;
@@ -8312,7 +8312,7 @@
vc_conn.done;
/* TS1, TCH/F, V3 (AMR codec) */
- pars := valueof(t_Pars(ts_RslChanNr_Bm(1), ts_RSL_ChanMode(RSL_CHRT_TCH_F,
RSL_CMOD_SP_GSM3)));
+ pars := valueof(t_Pars(ts_RslChanNr_Bm(1), ts_RSL_ChanMode(RSL_CHRT_TCH_F,
RSL_CMOD_SP_GSM3_DT_NT1)));
pars.mr_conf := valueof(ts_RSL_MultirateCfg);
vc_conn := f_start_handler(refers(f_TC_speech_rtp), pars);
vc_conn.done;
@@ -8331,7 +8331,7 @@
vc_conn.done;
/* TS1, TCH/H0, V3 (AMR codec) */
- pars := valueof(t_Pars(ts_RslChanNr_Lm(5, 0), ts_RSL_ChanMode(RSL_CHRT_TCH_H,
RSL_CMOD_SP_GSM3)));
+ pars := valueof(t_Pars(ts_RslChanNr_Lm(5, 0), ts_RSL_ChanMode(RSL_CHRT_TCH_H,
RSL_CMOD_SP_GSM3_DT_NT1)));
pars.mr_conf := valueof(ts_RSL_MultirateCfg);
vc_conn := f_start_handler(refers(f_TC_speech_rtp), pars);
vc_conn.done;
@@ -8431,7 +8431,7 @@
f_init();
/* TS5, TCH/H0, V3 (AMR codec) */
- pars := valueof(t_Pars(ts_RslChanNr_Bm(1), ts_RSL_ChanMode(RSL_CHRT_TCH_F,
RSL_CMOD_SP_GSM3)));
+ pars := valueof(t_Pars(ts_RslChanNr_Bm(1), ts_RSL_ChanMode(RSL_CHRT_TCH_F,
RSL_CMOD_SP_GSM3_DT_NT1)));
pars.mr_conf := valueof(ts_RSL_MultirateCfg);
vc_conn := f_start_handler(refers(f_TC_speech_osmux), pars);
vc_conn.done;
@@ -8445,7 +8445,7 @@
f_init();
/* TS5, TCH/H0, V3 (AMR codec) */
- pars := valueof(t_Pars(ts_RslChanNr_Lm(5, 0), ts_RSL_ChanMode(RSL_CHRT_TCH_H,
RSL_CMOD_SP_GSM3)));
+ pars := valueof(t_Pars(ts_RslChanNr_Lm(5, 0), ts_RSL_ChanMode(RSL_CHRT_TCH_H,
RSL_CMOD_SP_GSM3_DT_NT1)));
pars.mr_conf := valueof(ts_RSL_MultirateCfg);
vc_conn := f_start_handler(refers(f_TC_speech_osmux), pars);
vc_conn.done;
diff --git a/bts/BTS_Tests_VAMOS.ttcn b/bts/BTS_Tests_VAMOS.ttcn
index 2d03411..a71a047 100644
--- a/bts/BTS_Tests_VAMOS.ttcn
+++ b/bts/BTS_Tests_VAMOS.ttcn
@@ -57,13 +57,13 @@
{ ts_RslChanNr_Bm(tn), /* V0(TCH/F), EFR codec */
ts_RSL_ChanMode(RSL_CHRT_OSMO_TCH_F_VAMOS, RSL_CMOD_SP_GSM2) },
{ ts_RslChanNr_Osmo_VAMOS_Bm(tn), /* V1(TCH/F), AMR codec */
- ts_RSL_ChanMode(RSL_CHRT_OSMO_TCH_F_VAMOS, RSL_CMOD_SP_GSM3) }
+ ts_RSL_ChanMode(RSL_CHRT_OSMO_TCH_F_VAMOS, RSL_CMOD_SP_GSM3_DT_NT1) }
},
{
{ ts_RslChanNr_Bm(tn), /* V0(TCH/F), AMR codec */
- ts_RSL_ChanMode(RSL_CHRT_OSMO_TCH_F_VAMOS, RSL_CMOD_SP_GSM3) },
+ ts_RSL_ChanMode(RSL_CHRT_OSMO_TCH_F_VAMOS, RSL_CMOD_SP_GSM3_DT_NT1) },
{ ts_RslChanNr_Osmo_VAMOS_Bm(tn), /* V1(TCH/F), AMR codec */
- ts_RSL_ChanMode(RSL_CHRT_OSMO_TCH_F_VAMOS, RSL_CMOD_SP_GSM3) }
+ ts_RSL_ChanMode(RSL_CHRT_OSMO_TCH_F_VAMOS, RSL_CMOD_SP_GSM3_DT_NT1) }
}
};
@@ -94,7 +94,7 @@
{ ts_RslChanNr_Lm(tn, 0), /* V0(TCH/H0), HR codec */
ts_RSL_ChanMode(RSL_CHRT_OSMO_TCH_H_VAMOS, RSL_CMOD_SP_GSM1) },
{ ts_RslChanNr_Lm(tn, 1), /* V0(TCH/H1), AMR codec */
- ts_RSL_ChanMode(RSL_CHRT_OSMO_TCH_H_VAMOS, RSL_CMOD_SP_GSM3) },
+ ts_RSL_ChanMode(RSL_CHRT_OSMO_TCH_H_VAMOS, RSL_CMOD_SP_GSM3_DT_NT1) },
{ ts_RslChanNr_Osmo_VAMOS_Lm(tn, 0), /* V1(TCH/H0), signalling */
ts_RSL_ChanMode_SIGN(RSL_CHRT_OSMO_TCH_H_VAMOS) },
{ ts_RslChanNr_Osmo_VAMOS_Lm(tn, 1), /* V1(TCH/H1), signalling */
@@ -102,13 +102,13 @@
},
{
{ ts_RslChanNr_Lm(tn, 0), /* V0(TCH/H0), AMR codec */
- ts_RSL_ChanMode(RSL_CHRT_OSMO_TCH_H_VAMOS, RSL_CMOD_SP_GSM3) },
+ ts_RSL_ChanMode(RSL_CHRT_OSMO_TCH_H_VAMOS, RSL_CMOD_SP_GSM3_DT_NT1) },
{ ts_RslChanNr_Lm(tn, 1), /* V0(TCH/H1), AMR codec */
- ts_RSL_ChanMode(RSL_CHRT_OSMO_TCH_H_VAMOS, RSL_CMOD_SP_GSM3) },
+ ts_RSL_ChanMode(RSL_CHRT_OSMO_TCH_H_VAMOS, RSL_CMOD_SP_GSM3_DT_NT1) },
{ ts_RslChanNr_Osmo_VAMOS_Lm(tn, 0), /* V1(TCH/H0), AMR codec */
- ts_RSL_ChanMode(RSL_CHRT_OSMO_TCH_H_VAMOS, RSL_CMOD_SP_GSM3) },
+ ts_RSL_ChanMode(RSL_CHRT_OSMO_TCH_H_VAMOS, RSL_CMOD_SP_GSM3_DT_NT1) },
{ ts_RslChanNr_Osmo_VAMOS_Lm(tn, 1), /* V1(TCH/H1), AMR codec */
- ts_RSL_ChanMode(RSL_CHRT_OSMO_TCH_H_VAMOS, RSL_CMOD_SP_GSM3) }
+ ts_RSL_ChanMode(RSL_CHRT_OSMO_TCH_H_VAMOS, RSL_CMOD_SP_GSM3_DT_NT1) }
}
};
@@ -127,9 +127,9 @@
{ ts_RslChanNr_Lm(tn, 0), /* TCH/H0, signalling */
ts_RSL_ChanMode_SIGN(RSL_CHRT_TCH_H) },
{ ts_RslChanNr_Lm(tn, 1), /* V0(TCH/H1), AMR codec */
- ts_RSL_ChanMode(RSL_CHRT_OSMO_TCH_H_VAMOS, RSL_CMOD_SP_GSM3) },
+ ts_RSL_ChanMode(RSL_CHRT_OSMO_TCH_H_VAMOS, RSL_CMOD_SP_GSM3_DT_NT1) },
{ ts_RslChanNr_Osmo_VAMOS_Lm(tn, 1), /* V1(TCH/H1), AMR codec */
- ts_RSL_ChanMode(RSL_CHRT_OSMO_TCH_H_VAMOS, RSL_CMOD_SP_GSM3) }
+ ts_RSL_ChanMode(RSL_CHRT_OSMO_TCH_H_VAMOS, RSL_CMOD_SP_GSM3_DT_NT1) }
},
{
{ ts_RslChanNr_Lm(tn, 0), /* TCH/H0, HR codec */
@@ -137,15 +137,15 @@
{ ts_RslChanNr_Lm(tn, 1), /* V0(TCH/H1), HR codec */
ts_RSL_ChanMode(RSL_CHRT_OSMO_TCH_H_VAMOS, RSL_CMOD_SP_GSM1) },
{ ts_RslChanNr_Osmo_VAMOS_Lm(tn, 1), /* V1(TCH/H1), AMR codec */
- ts_RSL_ChanMode(RSL_CHRT_OSMO_TCH_H_VAMOS, RSL_CMOD_SP_GSM3) }
+ ts_RSL_ChanMode(RSL_CHRT_OSMO_TCH_H_VAMOS, RSL_CMOD_SP_GSM3_DT_NT1) }
},
{
{ ts_RslChanNr_Lm(tn, 0), /* TCH/H0, AMR codec */
- ts_RSL_ChanMode(RSL_CHRT_TCH_H, RSL_CMOD_SP_GSM3) },
+ ts_RSL_ChanMode(RSL_CHRT_TCH_H, RSL_CMOD_SP_GSM3_DT_NT1) },
{ ts_RslChanNr_Lm(tn, 1), /* V0(TCH/H1), AMR codec */
- ts_RSL_ChanMode(RSL_CHRT_OSMO_TCH_H_VAMOS, RSL_CMOD_SP_GSM3) },
+ ts_RSL_ChanMode(RSL_CHRT_OSMO_TCH_H_VAMOS, RSL_CMOD_SP_GSM3_DT_NT1) },
{ ts_RslChanNr_Osmo_VAMOS_Lm(tn, 1), /* V1(TCH/H1), AMR codec */
- ts_RSL_ChanMode(RSL_CHRT_OSMO_TCH_H_VAMOS, RSL_CMOD_SP_GSM3) }
+ ts_RSL_ChanMode(RSL_CHRT_OSMO_TCH_H_VAMOS, RSL_CMOD_SP_GSM3_DT_NT1) }
}
};
@@ -174,7 +174,7 @@
for (var integer ch := 0; ch < lengthof(test[i]); ch := ch + 1) {
pars[ch] := valueof(t_Pars(test[i][ch].chan_nr,
test[i][ch].chan_mode));
- if (test[i][ch].chan_mode.coding_alg_rate == RSL_CMOD_SP_GSM3) {
+ if (test[i][ch].chan_mode.coding_alg_rate == RSL_CMOD_SP_GSM3_DT_NT1) {
pars[ch].mr_conf := valueof(ts_RSL_MultirateCfg);
}
vc_conn[ch] := f_start_handler(handler, pars[ch], l1ctl := false);
diff --git a/library/RSL_Types.ttcn b/library/RSL_Types.ttcn
index cad8a34..085784c 100644
--- a/library/RSL_Types.ttcn
+++ b/library/RSL_Types.ttcn
@@ -386,14 +386,30 @@
RSL_CHRT_OSMO_TCH_F_VAMOS ('10001000'B),
RSL_CHRT_OSMO_TCH_H_VAMOS ('10001001'B)
} with { variant "FIELDLENGTH(8)" };
- type enumerated RSL_SpeechAlgo {
+ type enumerated RSL_SpeechAlgoDataRate {
RSL_CMOD_NO_RESOURCE ('00000000'B),
RSL_CMOD_SP_GSM1 ('00000001'B),
RSL_CMOD_SP_GSM2 ('00010001'B),
- RSL_CMOD_SP_GSM3 ('00100001'B),
- RSL_CMOD_SP_GSM4 ('00110001'B),
+ RSL_CMOD_SP_GSM3_DT_NT1 ('00100001'B),
+ RSL_CMOD_SP_GSM4_DT_NT8 ('00110001'B),
RSL_CMOD_SP_GSM5 ('00001001'B),
- RSL_CMOD_SP_GSM6 ('00001101'B)
+ RSL_CMOD_SP_GSM6 ('00001101'B),
+ RSL_CMOD_DT_NT2 ('00100010'B),
+ RSL_CMOD_DT_NT3 ('00100011'B),
+ RSL_CMOD_DT_NT4 ('00101001'B),
+ RSL_CMOD_DT_NT5 ('00101010'B),
+ RSL_CMOD_DT_NT6 ('00101011'B),
+ RSL_CMOD_DT_NT7 ('00110100'B),
+ RSL_CMOD_DT_NT9 ('00011000'B),
+ RSL_CMOD_DT_T1 ('01111000'B),
+ RSL_CMOD_DT_T2 ('01111001'B),
+ RSL_CMOD_DT_T3 ('01011000'B),
+ RSL_CMOD_DT_T4 ('01010000'B),
+ RSL_CMOD_DT_T5 ('01010001'B),
+ RSL_CMOD_DT_T6 ('01010010'B),
+ RSL_CMOD_DT_T7 ('01010011'B),
+ RSL_CMOD_DT_T8 ('01010100'B),
+ RSL_CMOD_DT_T9 ('01010101'B)
} with { variant "FIELDLENGTH(8)" };
type record RSL_IE_ChannelMode {
uint8_t len,
@@ -402,7 +418,7 @@
boolean dtx_u,
RSL_SpeechDataInd spd_ind,
RSL_ChanRateType ch_rate_type,
- RSL_SpeechAlgo coding_alg_rate
+ RSL_SpeechAlgoDataRate coding_alg_rate
} with { variant (len)
"LENGTHTO(reserved,dtx_d,dtx_u,spd_ind,ch_rate_type,coding_alg_rate)" }
template (value) RSL_IE_ChannelMode ts_RSL_ChanMode_SIGN(RSL_ChanRateType t :=
RSL_CHRT_SDCCH,
@@ -416,7 +432,7 @@
coding_alg_rate := RSL_CMOD_NO_RESOURCE
}
- template (value) RSL_IE_ChannelMode ts_RSL_ChanMode(RSL_ChanRateType t, RSL_SpeechAlgo
alg,
+ template (value) RSL_IE_ChannelMode ts_RSL_ChanMode(RSL_ChanRateType t,
RSL_SpeechAlgoDataRate alg_rate,
boolean dtx_downlink := false) := {
len := 0, /* overwritten */
reserved := '000000'B,
@@ -424,17 +440,17 @@
dtx_u := false,
spd_ind := RSL_SPDI_SPEECH,
ch_rate_type := t,
- coding_alg_rate := alg
+ coding_alg_rate := alg_rate
}
template RSL_IE_ChannelMode tr_RSL_ChanMode(template RSL_ChanRateType t,
- template RSL_SpeechAlgo alg) := {
+ template RSL_SpeechAlgoDataRate alg_rate) := {
len := ?,
reserved := '000000'B,
dtx_d := ?,
dtx_u := ?,
spd_ind := RSL_SPDI_SPEECH,
ch_rate_type := t,
- coding_alg_rate := alg
+ coding_alg_rate := alg_rate
}
/* 9.3.4 BS Power IE */
--
To view, visit
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/31556
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: Ief2d95c7e9d71afb26fa74da755294226c8e158d
Gerrit-Change-Number: 31556
Gerrit-PatchSet: 1
Gerrit-Owner: osmith <osmith(a)sysmocom.de>
Gerrit-MessageType: newchange