library: add a receive equivalent for ts_RSL_ChanMode_SIGN

Also take a chance to enrich the already existing send template.

Change-Id: Id39ca75a9194d7c62b9e5e2d96e766c4940c8281
Related: OS#1572, OS#4396
diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn
index 8fc0fa9..a0d2cfe 100644
--- a/bts/BTS_Tests.ttcn
+++ b/bts/BTS_Tests.ttcn
@@ -7921,7 +7921,7 @@
 	var ConnHdlrPars pars;
 	pars.t_guard := 60.0;
 	f_init();
-	ch_mode := ts_RSL_ChanMode_SIGN(dtx_downlink := dtxd);
+	ch_mode := ts_RSL_ChanMode_SIGN(dtxd := dtxd);
 	for (var integer i := 0; i < sizeof(g_AllChannels); i := i + 1) {
 		pars := valueof(t_Pars(g_AllChannels[i], ch_mode));
 		if (dtxd) {
diff --git a/library/RSL_Types.ttcn b/library/RSL_Types.ttcn
index c1b7a80..08e49b5 100644
--- a/library/RSL_Types.ttcn
+++ b/library/RSL_Types.ttcn
@@ -439,12 +439,26 @@
 				data, spd_ind = RSL_SPDI_DATA;
 			      )"}
 
-	template (value) RSL_IE_ChannelMode ts_RSL_ChanMode_SIGN(RSL_ChanRateType t := RSL_CHRT_SDCCH,
-								 boolean dtx_downlink := false) := {
+	template (value) RSL_IE_ChannelMode
+	ts_RSL_ChanMode_SIGN(template (value) RSL_ChanRateType t := RSL_CHRT_SDCCH,
+			     template (value) boolean dtxd := false,
+			     template (value) boolean dtxu := false) := {
 		len := 0,	/* overwritten */
 		reserved := '000000'B,
-		dtx_d := dtx_downlink,
-		dtx_u := false,
+		dtx_d := dtxd,
+		dtx_u := dtxu,
+		spd_ind := RSL_SPDI_SIGN,
+		ch_rate_type := t,
+		u := { sign := RSL_CMOD_NO_RESOURCE }
+	}
+	template RSL_IE_ChannelMode
+	tr_RSL_ChanMode_SIGN(template (present) RSL_ChanRateType t := ?,
+			     template (present) boolean dtxd := ?,
+			     template (present) boolean dtxu := ?) := {
+		len := ?,
+		reserved := ?,
+		dtx_d := dtxd,
+		dtx_u := dtxu,
 		spd_ind := RSL_SPDI_SIGN,
 		ch_rate_type := t,
 		u := { sign := RSL_CMOD_NO_RESOURCE }