library/GSM_RestOctets: add partial definition of SI 6 Rest Octets
Change-Id: I5aeed4986820a71f761f21b57c87782d3000293f
diff --git a/library/GSM_RestOctets.ttcn b/library/GSM_RestOctets.ttcn
index 9aa1217..94dce04 100644
--- a/library/GSM_RestOctets.ttcn
+++ b/library/GSM_RestOctets.ttcn
@@ -693,6 +693,55 @@
variant "PADDING(yes), PADDING_PATTERN('00101011'B)"
};
+/* 10.5.2.35a SI 6 Rest Octets */
+type record SI6RestOctets {
+ PchAndNchInfoOpt pch_nch_info,
+ VbsVgcsOptionsOpt vbs_vgcs_options,
+ BIT1 dtm_support, // L/H
+ uint8_t rac optional,
+ uint3_t max_lapdm optional,
+ BIT1 band_ind // L/H (DCS/PCS)
+ /* TODO: add more fields */
+} with {
+ variant (dtm_support) "CSN.1 L/H"
+ variant (rac) "PRESENCE(dtm_support = '1'B)"
+ variant (max_lapdm) "PRESENCE(dtm_support = '1'B)"
+ variant (band_ind) "CSN.1 L/H"
+
+ /* 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)"
+};
+
+/* Optional PCH and NCH info: L | H < PCH and NCH info > */
+type record PchAndNchInfoOpt {
+ BIT1 presence, // L/H
+ PchAndNchInfo info optional
+} with {
+ variant (presence) "CSN.1 L/H"
+ variant (info) "PRESENCE(presence = '1'B)"
+};
+
+/* PCH and NCH info */
+type record PchAndNchInfo {
+ BIT1 pag_chan_restruct,
+ uint2_t nln_sacch,
+ BIT1 call_prio_presence,
+ uint3_t call_prio optional,
+ BIT1 nln_status_sacch
+} with {
+ variant (call_prio) "PRESENCE(call_prio_presence = '1'B)"
+};
+
+/* Optional VBS/VGCS options: L | H < VBS/VGCS options > */
+type record VbsVgcsOptionsOpt {
+ BIT1 presence, // L/H
+ BIT2 options optional
+} with {
+ variant (presence) "CSN.1 L/H"
+ variant (options) "PRESENCE(presence = '1'B)"
+};
+
/* 10.5.2.37b SI 13 Rest Octets (O & S) */
type record SI13RestOctets {
BIT1 presence, // L/H
@@ -806,6 +855,11 @@
external function dec_SI4RestOctets(in octetstring stream) return SI4RestOctets
with { extension "prototype(convert) decode(RAW)" };
+external function enc_SI6RestOctets(in SI4RestOctets ro) return octetstring
+ with { extension "prototype(convert) encode(RAW)" };
+external function dec_SI6RestOctets(in octetstring stream) return SI6RestOctets
+ 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