library/L1CTL_PortType: f_L1CTL_DM_EST_REQ_IA(): handle hopping params

Change-Id: I8c14fee3ec8f7a799469c681b5afe79ab74a5dfc
Related: OS#4546
diff --git a/library/L1CTL_PortType.ttcn b/library/L1CTL_PortType.ttcn
index cc2ff93..94f807a 100644
--- a/library/L1CTL_PortType.ttcn
+++ b/library/L1CTL_PortType.ttcn
@@ -203,10 +203,27 @@
 	}
 
 	/* Send DM_EST_REQ from parameters derived from IMM ASS */
-	function f_L1CTL_DM_EST_REQ_IA(L1CTL_PT pt, ImmediateAssignment imm_ass) {
-		pt.send(ts_L1CTL_DM_EST_REQ_H0(imm_ass.chan_desc.chan_nr,
-					       imm_ass.chan_desc.tsc,
-					       imm_ass.chan_desc.arfcn));
+	function f_L1CTL_DM_EST_REQ_IA(L1CTL_PT pt, ImmediateAssignment imm_ass, L1ctlMA ma := {}) {
+		/* FIXME: handle Packet Channel Description */
+		if (imm_ass.ded_or_tbf.tbf == true) {
+			setverdict(fail, "TBF assignment is not handled by ", __SCOPE__);
+			mtc.stop;
+		}
+
+		/* Single channel or frequency hopping? */
+		if (not imm_ass.chan_desc.h) {
+			pt.send(ts_L1CTL_DM_EST_REQ_H0(imm_ass.chan_desc.chan_nr,
+						       imm_ass.chan_desc.tsc,
+						       imm_ass.chan_desc.arfcn));
+		} else {
+			/* TODO: we probably want to apply a bitmask from imm_ass.mobile_allocation
+			 * on the list of channels, if it's present. Use all channels for now. */
+			pt.send(ts_L1CTL_DM_EST_REQ_H1(imm_ass.chan_desc.chan_nr,
+						       imm_ass.chan_desc.tsc,
+						       imm_ass.chan_desc.maio_hsn.hsn,
+						       imm_ass.chan_desc.maio_hsn.maio,
+						       ma));
+		}
 	}
 
 	/* Send DM_REL_REQ from parameters derived from IMM ASS */