fixeria has submitted this change. ( 
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/34278?usp=email )

Change subject: BTS_Tests: decouple payload generation from f_rtpem_activate()
......................................................................

BTS_Tests: decouple payload generation from f_rtpem_activate()

This function is going to be used by the upcoming testcases for CSD
specific channel modes.  Generating the Rx/Tx payload(s) now becomes
the duty of the calling function.  So far the only user of this API
is f_TC_speech_rtp(), so move the speech payload generation there.

Change-Id: I9e823c33b1dbbadd57bc63df25b8ddf368d76232
Related: OS#1572
---
M bts/BTS_Tests.ttcn
1 file changed, 51 insertions(+), 41 deletions(-)

Approvals:
  laforge: Looks good to me, approved
  Jenkins Builder: Verified
  pespin: Looks good to me, but someone else must approve




diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn
index cd13688..888abf5 100644
--- a/bts/BTS_Tests.ttcn
+++ b/bts/BTS_Tests.ttcn
@@ -2607,9 +2607,8 @@
 }

 /* Initialize and start the RTP emulation component for a ConnHdlr */
-friend function f_rtpem_activate(inout octetstring payload,
-                                RtpemConfig cfg := c_RtpemDefaultCfg,
-                                RtpemMode mode := RTPEM_MODE_BIDIR,
+friend function f_rtpem_activate(RtpemConfig cfg := c_RtpemDefaultCfg,
+                                RtpemMode mode := RTPEM_MODE_LOOPBACK,
                                 uint7_t rtp_pt := 0)
 runs on ConnHdlr {
        /* Step 0: initialize, connect and start the emulation component */
@@ -2621,38 +2620,6 @@
        vc_RTPEM.start(RTP_Emulation.f_main());

        /* Step 1: configure the RTP parameters */
-       var integer payload_len := 0;
-       var octetstring hdr := ''O;
-       var OCT1 pad := '00'O;
-
-       select (g_pars.chan_mode) {
-       case (tr_RSL_ChanMode(RSL_CHRT_TCH_F, RSL_CMOD_SP_GSM1)) /* TCH/FS */
-               { payload_len := 33; hdr := 'D0'O; pad := 'FF'O; }
-       case (tr_RSL_ChanMode(RSL_CHRT_TCH_H, RSL_CMOD_SP_GSM1)) /* TCH/HS */
-               { 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 */
-               {
-                       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__);
-               }
-       }
-
-       /* Pad the payload to conform the expected length */
-       payload := f_pad_oct(hdr & payload, payload_len, pad);
-       cfg.tx_payloads[0].fixed_payload := payload;
        f_rtpem_configure(RTPEM_CTRL, cfg);

        /* Step 2: bind the RTP emulation to the configured address */
@@ -8351,9 +8318,9 @@

 /* Verify handling of Downlink and Uplink speech frames */
 private function f_TC_speech_rtp(charstring id) runs on ConnHdlr {
+       var octetstring payload;
        var L1ctlMessage l1_dl;
        var PDU_RTP rtp_pdu;
-       var octetstring pl;
        timer Td, Tu;

        log("Testing channel mode ", g_pars.chan_mode);
@@ -8361,9 +8328,37 @@
        f_l1_tune(L1CTL);
        f_est_dchan();

+       select (g_pars.chan_mode) {
+       case (tr_RSL_ChanMode(RSL_CHRT_TCH_F, RSL_CMOD_SP_GSM1)) /* TCH/FS */
+               { payload := f_pad_oct('D0'O & f_rnd_octstring(6), 33, 'FF'O); }
+       case (tr_RSL_ChanMode(RSL_CHRT_TCH_H, RSL_CMOD_SP_GSM1)) /* TCH/HS */
+               { payload := f_pad_oct('00'O & f_rnd_octstring(6), 15, '00'O); }
+       case (tr_RSL_ChanMode(RSL_CHRT_TCH_F, RSL_CMOD_SP_GSM2)) /* TCH/EFS */
+               { payload := f_pad_oct('C0'O & f_rnd_octstring(6), 31, '00'O); }
+       case (tr_RSL_ChanMode(RSL_CHRT_TCH_F, RSL_CMOD_SP_GSM3)) /* TCH/AFS */
+               {
+                       var integer amr_ft := get_start_amr_ft();
+                       var integer payload_len := f_amrft_payload_len(amr_ft) 
+ 2;
+                       payload := 
enc_RTP_AMR_Hdr(valueof(ts_RTP_AMR_Hdr(amr_ft, amr_ft, '1'B)));
+                       payload := f_pad_oct(payload & f_rnd_octstring(6), 
payload_len, '00'O);
+               }
+       case (tr_RSL_ChanMode(RSL_CHRT_TCH_H, RSL_CMOD_SP_GSM3)) /* TCH/AHS */
+               {
+                       var integer amr_ft := get_start_amr_ft();
+                       var integer payload_len := f_amrft_payload_len(amr_ft) 
+ 2;
+                       payload := 
enc_RTP_AMR_Hdr(valueof(ts_RTP_AMR_Hdr(amr_ft, amr_ft, '1'B)));
+                       payload := f_pad_oct(payload & f_rnd_octstring(6), 
payload_len, '00'O);
+               }
+       case else {
+               setverdict(fail, "Unhandled RSL channel mode := ", 
g_pars.chan_mode);
+               Misc_Helpers.f_shutdown(__BFILE__, __LINE__);
+               }
+       }
+
        /* Activate the RTP emulation */
-       pl := f_rnd_octstring(6);
-       f_rtpem_activate(pl);
+       var RtpemConfig cfg := c_RtpemDefaultCfg;
+       cfg.tx_payloads[0].fixed_payload := payload;
+       f_rtpem_activate(cfg, RTPEM_MODE_BIDIR);

        /* Give the scheduler some time to fill up the buffers */
        f_sleep(2.0);
@@ -8373,7 +8368,7 @@
        /* Make sure that Downlink frames are received at the UE */
        Td.start(2.0);
        alt {
-       [] L1CTL.receive(tr_L1CTL_TRAFFIC_IND(g_chan_nr, frame := pl)) -> value 
l1_dl {
+       [] L1CTL.receive(tr_L1CTL_TRAFFIC_IND(g_chan_nr, frame := payload)) -> 
value l1_dl {
                var octetstring data := l1_dl.payload.traffic_ind.data;
                log("TCH received (len=", lengthof(data), "): ", data);
                L1CTL.send(ts_L1CTL_TRAFFIC_REQ(g_chan_nr, 
l1_dl.dl_info.link_id,
@@ -8383,7 +8378,7 @@
        [] L1CTL.receive(tr_L1CTL_TRAFFIC_IND(g_chan_nr, frame := ?)) -> value 
l1_dl {
                setverdict(fail, "Rx unexpected Downlink speech frame ",
                           "(", l1_dl.payload.traffic_ind.data, ") ",
-                          "expected (", pl, ")");
+                          "expected (", payload, ")");
                Misc_Helpers.f_shutdown(__BFILE__, __LINE__);
                }
        [] as_l1_sacch();
@@ -8401,7 +8396,7 @@
        [] as_l1_tch_loop();
        [] as_l1_sacch();
        [] RTPEM_DATA.receive(PDU_RTP:?) -> value rtp_pdu {
-               if (rtp_pdu.data != pl)
+               if (rtp_pdu.data != payload)
                        { repeat; }
                }
        [] RTPEM_DATA.receive { repeat; }

--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/34278?usp=email
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: I9e823c33b1dbbadd57bc63df25b8ddf368d76232
Gerrit-Change-Number: 34278
Gerrit-PatchSet: 2
Gerrit-Owner: fixeria <[email protected]>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <[email protected]>
Gerrit-Reviewer: laforge <[email protected]>
Gerrit-Reviewer: pespin <[email protected]>
Gerrit-MessageType: merged

Reply via email to