Implement SystemInformation13 Rest Octets types
Related: SYS#5358
Change-Id: Id8845ebe28a9a6ed79d2d408dc7c1ad8a275b809
diff --git a/library/GSM_RestOctets.ttcn b/library/GSM_RestOctets.ttcn
index d47e510..9aa1217 100644
--- a/library/GSM_RestOctets.ttcn
+++ b/library/GSM_RestOctets.ttcn
@@ -15,6 +15,7 @@
import from General_Types all;
import from Osmocom_Types all;
+import from RLCMAC_CSN1_Types all;
/* 10.5.2.33b SI 2quater Rest Octets */
type record SI2quaterRestOctets {
@@ -692,6 +693,34 @@
variant "PADDING(yes), PADDING_PATTERN('00101011'B)"
};
+/* 10.5.2.37b SI 13 Rest Octets (O & S) */
+type record SI13RestOctets {
+ BIT1 presence, // L/H
+ uint3_t bcch_change_mark,
+ BIT4 si_change_field,
+ BIT1 presence2,
+ BIT2 si13_change_mark optional,
+ GprsMobileAllocation gprs_ma optional,
+ BIT1 zero ('0'B), /* PBCCH not present in cell */
+ uint8_t rac,
+ BIT1 spgc_ccch_sup,
+ BIT3 priority_access_thr,
+ BIT2 network_control_order,
+ GprsCellOptions gprs_cell_opts,
+ GprsPowerControlParameters gprs_pwr_ctrl_params
+ /* TODO: Additions in release 99 */
+} with {
+
+ variant (presence) "CSN.1 L/H"
+ /* TODO: for all fields after presencte: variant (<field>) "PRESENCE(presence = '1'B)" */
+ variant (si13_change_mark) "PRESENCE(presence2 = '1'B)"
+ variant (gprs_ma) "PRESENCE(presence2 = '1'B)"
+
+ /* The TITAN's RAW encoder generates an octet-aligned octetstring,
+ * so we should make sure that unused bits contain proper padding. */
+ variant "PADDING(yes), PADDING_PATTERN('00101011'B)"
+};
+
/* Selection Parameters */
type record SelectionParams {
boolean cbq,
@@ -777,6 +806,11 @@
external function dec_SI4RestOctets(in octetstring stream) return SI4RestOctets
with { extension "prototype(convert) decode(RAW)" };
+external function enc_SI13RestOctets(in SI13RestOctets ro) return octetstring
+ with { extension "prototype(convert) encode(RAW)" };
+external function dec_SI13RestOctets(in octetstring stream) return SI13RestOctets
+ with { extension "prototype(convert) decode(RAW)" };
+
/* Basic templates to be extended in place */
template (value) SI3RestOctets ts_SI3RestOctets := {