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