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,
