diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn
index b95648a..39dca7a 100644
--- a/bts/BTS_Tests.ttcn
+++ b/bts/BTS_Tests.ttcn
@@ -873,6 +873,62 @@
 	}
 }
 
+/* This altstep triggers on receipt of a L1CTL DATA.ind matching the given
+ * RSL chan_nr/link_id and data templates.  Used as a base for other altsteps. */
+private altstep as_l1ctl_dl_msg(out L1ctlDlMessage msg,
+				template (present) octetstring tr_data := ?,
+				template (present) RslChannelNr chan_nr := ?,
+				template (present) RslLinkId link_id := ?)
+runs on ConnHdlr {
+	[] L1CTL.receive(tr_L1CTL_DATA_IND(chan_nr, link_id, tr_data)) -> value msg;
+}
+
+/* This altstep is built on top of as_l1ctl_dl_msg(), and triggers on receipt
+ * of dummy LAPDm func=UI frames with empty payload.  Repeats by default. */
+private altstep as_dl_lapdm_dummy(template (present) RslChannelNr chan_nr := ?,
+				  template (present) RslLinkId link_id := ?,
+				  template (present) LapdmSapi sapi := ?,
+				  boolean do_repeat := true)
+runs on ConnHdlr {
+	template (present) LapdmFrame tr_frame := tr_LAPDm_UI(sapi, true, ''O);
+	var L1ctlDlMessage dl_msg;
+
+	[] as_l1ctl_dl_msg(dl_msg, decmatch tr_frame, chan_nr, link_id) {
+		if (do_repeat) {
+			repeat;
+		}
+	}
+}
+
+/* This altstep triggers on receipt of a Downlink DCCH containing a L2 payload
+ * that matches the given LAPDm frame.  The L2 is treated as LapdmFrameAB. */
+private altstep as_dl_dcch_lapdm_ab(out LapdmFrameAB frame,
+				    template (present) LapdmFrameAB tr_frame := ?,
+				    template (present) RslLinkId link_id := ?)
+runs on ConnHdlr {
+	var L1ctlDlMessage dl_msg;
+
+	[] as_l1ctl_dl_msg(dl_msg, decmatch tr_frame, g_chan_nr, link_id) {
+		frame := dec_LapdmFrameAB(dl_msg.payload.data_ind.payload);
+	}
+}
+
+/* This altstep is built on top of as_dl_dcch_lapdm_ab(), and triggers on receipt
+ * of a LAPDm AB frame with a L3 payload matching the given template.  The L3
+ * payload is treated as PDU_ML3_NW_MS. */
+private altstep as_dl_dcch_pdu(out PDU_ML3_NW_MS pdu,
+			       template (present) PDU_ML3_NW_MS tr_pdu := ?,
+			       template (present) GsmSapi sapi := 0)
+runs on ConnHdlr {
+	template (present) LapdmFrame tr_frame := tr_LAPDm_UI(sapi, true, decmatch tr_pdu);
+	template (present) RslLinkId link_id := tr_RslLinkID_DCCH(sapi);
+	var LapdmFrameAB lapdm_frame;
+
+	[] as_dl_dcch_lapdm_ab(lapdm_frame, tr_frame.ab, link_id) {
+		pdu := dec_PDU_ML3_NW_MS(lapdm_frame.payload);
+	}
+}
+
 /***********************************************************************
  * Channel Activation / Deactivation
  ***********************************************************************/
