library/GSM_RR_Types: add minimalistic AssignmentCommand

Unfortunately, the existing implementation [1] is somewhat
incomplete and unfriendly to build templates on:

  - some fields holding integer numbers defined as BITx,
    so we would have to do bit2int() / int2bit();

  - some bit-map fields defined as octetstrings;

  - some fields are not decoded at all (raw octetstrings).

Let's work this around by defining a minimalistic implementation
of (RR) Assignment Command with all mandatory and some optional
fields.  Reuse some IEs directly from MobileL3_RRM_Types.

[1] titan.ProtocolModules.MobileL3_v13.4.0
    MobileL3_RRM_Types.PDU_RRM_AssignmentCommand_NW_MS

Change-Id: If1a5244a688abed6e6de2bf3f6e19e0e28129ea5
Related: SYS#4868, OS#4545
diff --git a/library/GSM_RR_Types.ttcn b/library/GSM_RR_Types.ttcn
index 59fe6d5..e4c0d57 100644
--- a/library/GSM_RR_Types.ttcn
+++ b/library/GSM_RR_Types.ttcn
@@ -17,6 +17,7 @@
 	import from GSM_Types all;
 	import from RLCMAC_CSN1_Types all;
 	import from MobileL3_CommonIE_Types all;
+	import from MobileL3_RRM_Types all;
 
 	/* Table 10.4.1 of Section 10.4 / 3GPP TS 44.018 */
 	type enumerated RrMessageType {
@@ -671,6 +672,29 @@
 	type record of NcellReport NcellReports;
 
 
+	/* 3GPP TS 44.018, section 9.1.2 (minimalistic implementation) */
+	type record AssignmentCommand {
+		ChannelDescription		chan_desc,
+		PowerCommand_V			power_cmd,
+		FrequencyList_TLV		freq_list_at optional,
+		CellChannelDescription_TV	cell_chan_desc optional,
+		/* TODO: Multislot Allocation IE */
+		ChannelMode_TV			chan1_mode optional,
+		ChannelMode_TV			chan2_mode optional,
+		/* TODO: Mode of Channel Set 3..8 IE */
+		MobileAllocationTLV		mobile_allocation optional
+		/* TODO: more optional IEs... */
+	} with {
+		variant "TAG(
+			freq_list_at,		elementIdentifier = '05'O;
+			cell_chan_desc,		elementIdentifier = '62'O;
+			chan1_mode,		elementIdentifier = '63'O;
+			chan2_mode,		elementIdentifier = '11'O;
+			mobile_allocation,	iei = '72'O;
+		)"
+	};
+
+
 	/* 9.1.18 */
 	type record ImmediateAssignment {
 		DedicatedModeOrTbf		ded_or_tbf,
@@ -828,6 +852,7 @@
 	type union RrL3Union {
 		PagingResponse	paging_response,
 		MeasurementReport meas_rep,
+		AssignmentCommand ass_cmd,
 		octetstring	other
 	};
 
@@ -837,6 +862,7 @@
 	} with { variant (payload) "CROSSTAG(
 				paging_response, header.message_type = PAGING_RESPONSE;
 				meas_rep, header.message_type = MEASUREMENT_REPORT;
+				ass_cmd, header.message_type = ASSIGNMENT_COMMAND;
 				other, OTHERWISE;
 		)" }
 
diff --git a/sysinfo/gen_links.sh b/sysinfo/gen_links.sh
index 0648e7b..fa3cd33 100755
--- a/sysinfo/gen_links.sh
+++ b/sysinfo/gen_links.sh
@@ -9,7 +9,7 @@
 gen_links $DIR $FILES
 
 DIR=$BASEDIR/titan.ProtocolModules.MobileL3_v13.4.0/src
-FILES="MobileL3_CommonIE_Types.ttcn MobileL3_GMM_SM_Types.ttcn MobileL3_MM_Types.ttcn"
+FILES="MobileL3_CommonIE_Types.ttcn MobileL3_GMM_SM_Types.ttcn MobileL3_MM_Types.ttcn MobileL3_RRM_Types.ttcn"
 gen_links $DIR $FILES
 
 DIR=$BASEDIR/titan.TestPorts.Common_Components.Socket-API/src