BTS_Tests: f_est_dchan(): add support for CSD channel modes

Change-Id: I066657941dd751183aa5e937a6bfe9ab7837d46b
Related: OS#1572, OS#4396
diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn
index a0d2cfe..8dcfb01 100644
--- a/bts/BTS_Tests.ttcn
+++ b/bts/BTS_Tests.ttcn
@@ -2542,24 +2542,35 @@
 		var uint8_t amr_start_codec := 0;
 		var BIT8 amr_codecs_bitmask := '00000000'B;
 
-		if (ischosen(g_pars.chan_mode.u.sign) and g_pars.chan_mode.u.sign == RSL_CMOD_NO_RESOURCE) {
-			tch_mode := L1CTL_CHAN_MODE_SIGN;
-		} else if (ischosen(g_pars.chan_mode.u.speech)) {
-			select (g_pars.chan_mode.u.speech) {
-			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;
-						  amr_codecs_bitmask := g_pars.mr_conf.codec_modes;
-						}
-			case else {
-				log("RSL channel mode := ", g_pars.chan_mode.u.speech,
-				    " is not supported by the L1, falling back to signalling");
-				tch_mode := L1CTL_CHAN_MODE_SIGN;
-				}
-			}
-		} else {
+		select (g_pars.chan_mode) {
+		case (tr_RSL_ChanMode_SIGN)
+			{ tch_mode := L1CTL_CHAN_MODE_SIGN; }
+		/* Speech modes */
+		case (tr_RSL_ChanMode((RSL_CHRT_TCH_F, RSL_CHRT_TCH_H), RSL_CMOD_SP_GSM1))
+			{ tch_mode := L1CTL_CHAN_MODE_SPEECH_V1; }
+		case (tr_RSL_ChanMode((RSL_CHRT_TCH_F, RSL_CHRT_TCH_H), RSL_CMOD_SP_GSM2))
+			{ tch_mode := L1CTL_CHAN_MODE_SPEECH_V2; }
+		case (tr_RSL_ChanMode((RSL_CHRT_TCH_F, RSL_CHRT_TCH_H), RSL_CMOD_SP_GSM3))
+			{ tch_mode := L1CTL_CHAN_MODE_SPEECH_V3;
+			  amr_codecs_bitmask := g_pars.mr_conf.codec_modes; }
+		/* Data modes */
+		case (tr_RSL_ChanMode_DATA(RSL_CHRT_TCH_F, /* TCH/F14.4 */
+					   (RSL_CMOD_CSD_T_14k4, RSL_CMOD_CSD_NT_14k5)))
+			{ tch_mode := L1CTL_CHAN_MODE_DATA_14k5; }
+		case (tr_RSL_ChanMode_DATA(RSL_CHRT_TCH_F, /* TCH/F9.6 */
+					   (RSL_CMOD_CSD_T_9k6, RSL_CMOD_CSD_NT_12k0)))
+			{ tch_mode := L1CTL_CHAN_MODE_DATA_12k0; }
+		case (tr_RSL_ChanMode_DATA((RSL_CHRT_TCH_F, RSL_CHRT_TCH_H), /* TCH/[FH]4.8 */
+					   (RSL_CMOD_CSD_T_4k8, RSL_CMOD_CSD_NT_6k0)))
+			{ tch_mode := L1CTL_CHAN_MODE_DATA_6k0; }
+		case (tr_RSL_ChanMode_DATA((RSL_CHRT_TCH_F, RSL_CHRT_TCH_H), /* TCH/[FH]2.4 */
+					   (RSL_CMOD_CSD_T_2k4, RSL_CMOD_CSD_T_1k2,
+					    RSL_CMOD_CSD_T_600, RSL_CMOD_CSD_T_1200_75)))
+			{ tch_mode := L1CTL_CHAN_MODE_DATA_3k6; }
+		case else {
 			log("RSL channel mode is not supported by the L1, falling back to signalling");
 			tch_mode := L1CTL_CHAN_MODE_SIGN;
+			}
 		}
 
 		f_L1CTL_TCH_MODE(L1CTL,