pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/29272 )
Change subject: bts: Test AMR in TC_speech_rtp_tch{h,f}() ......................................................................
bts: Test AMR in TC_speech_rtp_tch{h,f}()
Related: SYS#5987 Requires: osmocom-bb.git Ib80be434c06d07b3611bd18ae25dff8b14a7aad9 (trxcon) Change-Id: I8cf7792a00b0a858f6a02bf5cb0d283484b820eb --- M bts/BTS_Tests.ttcn M bts/gen_links.sh 2 files changed, 48 insertions(+), 3 deletions(-)
Approvals: Jenkins Builder: Verified fixeria: Looks good to me, approved
diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn index 646e5bf..68e5cf1 100644 --- a/bts/BTS_Tests.ttcn +++ b/bts/BTS_Tests.ttcn @@ -47,6 +47,8 @@ import from RSL_Emulation all; import from RTP_Emulation all;
+import from AMR_Types all; + import from IPL4asp_Types all; import from TRXC_Types all; import from TRXC_CodecPort all; @@ -2542,6 +2544,28 @@ g_first_meas_res := true; }
+private function get_start_amr_ft() runs on ConnHdlr return integer { + var integer start_nth; + if (g_pars.mr_conf.icmi) { + start_nth := 0; /* FIXME: implement 3GPP TS 45.009 3.4.3 */ + } else { + start_nth := g_pars.mr_conf.start_mode; + } + + var integer n := 0; + for (var integer i:= 7; i >= 0; i := i - 1) { + if (g_pars.mr_conf.amr_codec_modes[i] == '1'B) { + if (n == start_nth) { + return 7 - i; + } + n := n + 1; + } + } + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, + log2str("mr_conf is wrong! ", g_pars.mr_conf)); + return 0; +} + /* Initialize and start the RTP emulation component for a ConnHdlr */ friend function f_rtpem_activate(inout octetstring payload, RtpemConfig cfg := c_RtpemDefaultCfg, @@ -2566,7 +2590,19 @@ { 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 else { /* FIXME: also handle TCH/AFS and TCH/AHS */ + case (tr_RSL_ChanMode(RSL_CHRT_TCH_F, RSL_CMOD_SP_GSM3)) /* 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 */ + { + 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 else { setverdict(fail, "Unhandled RSL channel mode := ", g_pars.chan_mode); Misc_Helpers.f_shutdown(__BFILE__, __LINE__); } @@ -8147,7 +8183,11 @@ vc_conn := f_start_handler(refers(f_TC_speech_rtp), pars); vc_conn.done;
- /* TODO: also test V3 (AMR codec) */ + /* 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.mr_conf := valueof(ts_RSL_MultirateCfg(false, 0, '00000100'B /* 5,90k */)); + vc_conn := f_start_handler(refers(f_TC_speech_rtp), pars); + vc_conn.done;
Misc_Helpers.f_shutdown(__BFILE__, __LINE__); } @@ -8162,7 +8202,11 @@ vc_conn := f_start_handler(refers(f_TC_speech_rtp), pars); vc_conn.done;
- /* TODO: also test V3 (AMR codec) */ + /* 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.mr_conf := valueof(ts_RSL_MultirateCfg(false, 0, '00000100'B /* 5,90k */)); + vc_conn := f_start_handler(refers(f_TC_speech_rtp), pars); + vc_conn.done;
Misc_Helpers.f_shutdown(__BFILE__, __LINE__); } diff --git a/bts/gen_links.sh b/bts/gen_links.sh index c8c2b98..b7ba2cc 100755 --- a/bts/gen_links.sh +++ b/bts/gen_links.sh @@ -44,6 +44,7 @@ FILES+="L3_Templates.ttcn L3_Common.ttcn " FILES+="Native_Functions.ttcn Native_FunctionDefs.cc " FILES+="TRXC_Types.ttcn TRXC_CodecPort.ttcn TRXC_CodecPort_CtrlFunct.ttcn TRXC_CodecPort_CtrlFunctDef.cc " +FILES+="AMR_Types.ttcn " FILES+="RTP_CodecPort.ttcn RTP_Emulation.ttcn IuUP_Types.ttcn IuUP_Emulation.ttcn IuUP_EncDec.cc " FILES+="RTP_CodecPort_CtrlFunct.ttcn RTP_CodecPort_CtrlFunctDef.cc " FILES+="PCUIF_Types.ttcn PCUIF_CodecPort.ttcn "
3 is the latest approved patch-set. No files were changed between the latest approved patch-set and the submitted one.