[MERGED] osmo-ttcn3-hacks[master]: WIP: bts: SI scheduling tests

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

Harald Welte gerrit-no-reply at lists.osmocom.org
Tue Feb 27 06:59:40 UTC 2018


Harald Welte has submitted this change and it was merged.

Change subject: WIP: bts: SI scheduling tests
......................................................................


WIP: bts: SI scheduling tests

This imports those tests from ../sysinfo/Tests.ttcn which deal with
the scheduling of SI, not with the actual payload/correctness of their
contents. (the latter tests must move to the BSC test suite, as the BTS
is only concerned with scheduling the opaque SI blocks as received from
the BSC).

Change-Id: I65f4b91e81174717a0c484ba5c22bede68683ae1
---
M bts/BTS_Tests.ttcn
1 file changed, 459 insertions(+), 1 deletion(-)

Approvals:
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn
index ab93c30..0679df7 100644
--- a/bts/BTS_Tests.ttcn
+++ b/bts/BTS_Tests.ttcn
@@ -52,6 +52,26 @@
 
 	/* L1CTL port (for classic tests) */
 	port L1CTL_PT L1CTL;
+
+	/* SI configuration */
+	var SystemInformationConfig si_cfg := {
+		bcch_extended := false,
+		si1_present := false,
+		si2bis_present := false,
+		si2ter_present := false,
+		si2quater_present := false,
+		si7_present := false,
+		si8_present := false,
+		si9_present := false,
+		si13_present := false,
+		si13alt_present := false,
+		si15_present := false,
+		si16_present := false,
+		si17_present := false,
+		si2n_present := false,
+		si21_present := false,
+		si22_present := false
+	};
 }
 
 /* an individual call / channel */
@@ -1008,6 +1028,438 @@
 	f_sleep(100.0);
 }
 
+/***********************************************************************
+ * BCCH
+ ***********************************************************************/
+
+/* tuple of Frame Number + decoded SI */
+type record SystemInformationFn {
+	GsmFrameNumber frame_number,
+	SystemInformation si
+}
+
+/* an arbitrary-length vector of decoded SI + gsmtap header */
+type record of SystemInformationFn SystemInformationVector;
+
+/* an array of SI-vectors indexed by TC value */
+type SystemInformationVector SystemInformationVectorPerTc[8];
+
+/* determine if a given SI vector contains given SI type at least once */
+function f_si_vecslot_contains(SystemInformationVector arr, RrMessageType key, boolean bcch_ext := false) return boolean {
+	for (var integer i:= 0; i< sizeof(arr); i := i + 1) {
+		var integer fn_mod51 := arr[i].frame_number mod 51;
+		if (not bcch_ext and fn_mod51 == 2 or
+		        bcch_ext and fn_mod51 == 6) {
+			if (arr[i].si.header.message_type == key) {
+				return true;
+			}
+		}
+	}
+	return false;
+}
+
+/* ensure a given TC slot of the SI vector contains given SI type at least once at TC */
+function f_ensure_si_vec_contains(SystemInformationVectorPerTc arr, integer tc, RrMessageType key, boolean ext_bcch := false) {
+	if (not f_si_vecslot_contains(arr[tc], key, ext_bcch)) {
+		setverdict(fail, "No ", key, " in TC=", tc, "!");
+	}
+}
+
+/* check if a given SI vector contains given SI type at least once on any TC */
+function f_si_vec_contains(SystemInformationVectorPerTc arr, RrMessageType key) return boolean {
+	for (var integer tc:= 0; tc < sizeof(arr); tc := tc + 1) {
+		if (f_si_vecslot_contains(arr[tc], key) or
+		    f_si_vecslot_contains(arr[tc], key, true)) {
+			return true;
+		}
+	}
+	return false;
+}
+
+/* determine if a given SI vector contains given SI type at least N of M times */
+function f_si_vecslot_contains_n_of_m(SystemInformationVector arr, RrMessageType key, boolean bcch_ext := false, integer n := 1, integer m := 4) return boolean {
+	var integer count := 0;
+	if (sizeof(arr) < m) {
+		setverdict(fail, "Error: Insufficient SI in array");
+		self.stop;
+	}
+	for (var integer i:= 0; i < m; i := i + 1) {
+		var integer fn_mod51 := arr[i].frame_number mod 51;
+		if (not bcch_ext and fn_mod51 == 2 or
+		        bcch_ext and fn_mod51 == 6) {
+			if (arr[i].si.header.message_type == key) {
+				count := count + 1;
+			}
+		}
+	}
+	if (count >= n) {
+		return true;
+	} else {
+		return false;
+	}
+}
+
+/* ensure a given TC slot of the SI vector contains given SI type at least N out of M times at TC */
+function f_ensure_si_vec_contains_n_of_m(SystemInformationVectorPerTc arr, integer tc, RrMessageType key, boolean ext_bcch := false, integer n, integer m) {
+	if (not f_si_vecslot_contains_n_of_m(arr[tc], key, ext_bcch, n, m)) {
+		setverdict(fail, "Not ", n, "/", m, " of ", key, " in TC=", tc, "!");
+	}
+}
+
+/* determine if a given SI vector contains given SI type at least once */
+function f_si_vecslot_contains_only(SystemInformationVector arr, RrMessageType key, boolean bcch_ext := false) return boolean {
+	for (var integer i:= 0; i< sizeof(arr); i := i + 1) {
+		var integer fn_mod51 := arr[i].frame_number mod 51;
+		if (not bcch_ext and fn_mod51 == 2 or
+		        bcch_ext and fn_mod51 == 6) {
+			if (arr[i].si.header.message_type != key) {
+				return false;
+			}
+		}
+	}
+	return true;
+}
+
+/* ensure a given TC slot of the SI vector contains only given SI type */
+function f_ensure_si_vec_contains_only(SystemInformationVectorPerTc arr, integer tc, RrMessageType key, boolean ext_bcch := false) {
+	if (not f_si_vecslot_contains_only(arr[tc], key, ext_bcch)) {
+		setverdict(fail, "Not all ", key, " in TC=", tc, "!");
+	}
+}
+
+/* SI configuration of cell, against which we validate actual SI messages */
+type set SystemInformationConfig {
+	boolean bcch_extended,
+	boolean si1_present,
+	boolean si2bis_present,
+	boolean si2ter_present,
+	boolean si2quater_present,
+	boolean si7_present,
+	boolean si8_present,
+	boolean si9_present,
+	boolean si13_present,
+	boolean si13alt_present,
+	boolean si15_present,
+	boolean si16_present,
+	boolean si17_present,
+	boolean si2n_present,
+	boolean si21_present,
+	boolean si22_present
+}
+
+/* validate the SI scheduling according to TS 45.002 version 14.1.0 Release 14, Section 6.3.1.3 */
+function f_validate_si_scheduling(SystemInformationConfig cfg, SystemInformationVectorPerTc si_per_tc) {
+	var integer i;
+	for (i := 0; i < sizeof(si_per_tc); i := i + 1) {
+		if (sizeof(si_per_tc[i]) == 0) {
+			setverdict(fail, "No SI messages for TC=0!");
+		}
+	}
+	if (cfg.si1_present) {
+		/* ii) System Information Type 1 needs to be sent if frequency hopping is in use or
+		 * when the NCH is present in a cell. If the MS finds another message on BCCH Norm
+		 * when TC = 0, it can assume that System Information Type 1 is not in use. */
+		f_ensure_si_vec_contains(si_per_tc, 0, SYSTEM_INFORMATION_TYPE_1);
+		/* make sure *ALL* contain SI1 */
+		f_ensure_si_vec_contains_only(si_per_tc, 0, SYSTEM_INFORMATION_TYPE_1);
+	}
+	f_ensure_si_vec_contains(si_per_tc, 1, SYSTEM_INFORMATION_TYPE_2);
+	/* iii) A SI 2 message will be sent at least every time TC = 1 */
+	f_ensure_si_vec_contains(si_per_tc, 2, SYSTEM_INFORMATION_TYPE_3);
+	f_ensure_si_vec_contains(si_per_tc, 6, SYSTEM_INFORMATION_TYPE_3);
+	f_ensure_si_vec_contains(si_per_tc, 3, SYSTEM_INFORMATION_TYPE_4);
+	f_ensure_si_vec_contains(si_per_tc, 7, SYSTEM_INFORMATION_TYPE_4);
+
+	/*  iii) System information type 2 bis or 2 ter messages are sent if needed, as determined by the
+	 *  system operator. If only one of them is needed, it is sent when TC = 5. If both are
+	 *  needed, 2bis is sent when TC = 5 and 2ter is sent at least once within any of 4
+	 *  consecutive occurrences of TC = 4. */
+	if (cfg.si2bis_present and not cfg.si2ter_present) {
+		f_ensure_si_vec_contains(si_per_tc, 5, SYSTEM_INFORMATION_TYPE_2bis);
+	} else if (cfg.si2ter_present and not cfg.si2bis_present) {
+		f_ensure_si_vec_contains(si_per_tc, 5, SYSTEM_INFORMATION_TYPE_2ter);
+	} else if (cfg.si2ter_present and cfg.si2bis_present) {
+		f_ensure_si_vec_contains(si_per_tc, 5, SYSTEM_INFORMATION_TYPE_2bis);
+		f_ensure_si_vec_contains_n_of_m(si_per_tc, 4, SYSTEM_INFORMATION_TYPE_2ter, false, 1, 4);
+	}
+
+	if (cfg.si7_present or cfg.si8_present) {
+		/* vi) Use of System Information type 7 and 8 is not always necessary. It is necessary
+		 * if System Information type 4 does not contain all information needed for cell
+		 * selection and reselection. */
+		if (not cfg.bcch_extended) {
+			testcase.stop("Error: SI7/SI8 require BCCH Extd.");
+		}
+		if (cfg.si7_present) {
+			f_ensure_si_vec_contains(si_per_tc, 7, SYSTEM_INFORMATION_TYPE_7, true);
+		}
+		if (cfg.si8_present) {
+			f_ensure_si_vec_contains(si_per_tc, 3, SYSTEM_INFORMATION_TYPE_8, true);
+		}
+	}
+
+	if (cfg.si2quater_present) {
+		/*  iii) System information type 2 quater is sent if needed, as determined by the system
+		 *  operator.  If sent on BCCH Norm, it shall be sent when TC = 5 if neither of 2bis
+		 *  and 2ter are used, otherwise it shall be sent at least once within any of 4
+		 *  consecutive occurrences of TC = 4. If sent on BCCH Ext, it is sent at least once
+		 *  within any of 4 consecutive occurrences of TC = 5. */
+		if (not (cfg.bcch_extended)) {
+			if (not (cfg.si2bis_present or cfg.si2ter_present)) {
+				f_ensure_si_vec_contains(si_per_tc, 5, SYSTEM_INFORMATION_TYPE_2quater);
+			} else {
+				f_ensure_si_vec_contains_n_of_m(si_per_tc, 4, SYSTEM_INFORMATION_TYPE_2quater, false, 1, 4);
+			}
+		} else {
+			f_ensure_si_vec_contains_n_of_m(si_per_tc, 5, SYSTEM_INFORMATION_TYPE_2quater, true, 1, 4);
+		}
+	}
+	if (cfg.si9_present) {
+		/* vi) System Information type 9 is sent in those blocks with TC = 4 which are specified
+		 * in system information type 3 as defined in 3GPP TS 44.018. */
+		f_ensure_si_vec_contains(si_per_tc, 4, SYSTEM_INFORMATION_TYPE_9); // FIXME SI3
+	}
+	if (cfg.si13_present) {
+		/* vii) System Information type 13 is only related to the GPRS service. System Information
+		 * Type 13 need only be sent if GPRS support is indicated in one or more of System
+		 * Information Type 3 or 4 or 7 or 8 messages. These messages also indicate if the
+		 * message is sent on the BCCH Norm or if the message is transmitted on the BCCH Ext.
+		 * In the case that the message is sent on the BCCH Norm, it is sent at least once
+		 * within any of 4 consecutive occurrences of TC=4. */
+		if (not cfg.bcch_extended) {
+			log("not-bccch-extended");
+			f_ensure_si_vec_contains_n_of_m(si_per_tc, 4, SYSTEM_INFORMATION_TYPE_13, false, 1, 4);
+		} else {
+			log("bccch-extended");
+			f_ensure_si_vec_contains(si_per_tc, 0, SYSTEM_INFORMATION_TYPE_13, true);
+		}
+		if (f_si_vec_contains(si_per_tc, SYSTEM_INFORMATION_TYPE_13alt)) {
+			setverdict(fail, "Cannot have SI13alt and SI13");
+		}
+	}
+	if (cfg.si16_present or cfg.si17_present) {
+		/* viii) System Information type 16 and 17 are only related to the SoLSA service. They
+		 * should not be sent in a cell where network sharing is used (see rule xv). */
+		if (cfg.si22_present) {
+			testcase.stop("Error: Cannot have SI16/SI17 and SI22!");
+		}
+		if (f_si_vec_contains(si_per_tc, SYSTEM_INFORMATION_TYPE_22)) {
+			setverdict(fail, "Cannot have SI16/SI17 and SI22!");
+		}
+		if (not cfg.bcch_extended) {
+			testcase.stop("Error: SI16/SI17 requires BCCH Extd!");
+		}
+		if (cfg.si16_present) {
+			f_ensure_si_vec_contains(si_per_tc, 6, SYSTEM_INFORMATION_TYPE_16, true);
+		}
+		if (cfg.si17_present) {
+			f_ensure_si_vec_contains(si_per_tc, 2, SYSTEM_INFORMATION_TYPE_17, true);
+		}
+	}
+
+		/* ix) System Information type 18 and 20 are sent in order to transmit non-GSM
+		 * broadcast information. The frequency with which they are sent is determined by the
+		 * system operator. System Information type 9 identifies the scheduling of System
+		 * Information type 18 and 20 messages. */
+
+		/* x) System Information Type 19 is sent if COMPACT neighbours exist. If System
+		 * Information Type 19 is present, then its scheduling shall be indicated in System
+		 * Information Type 9. */
+
+	if (cfg.si15_present) {
+		/* xi) System Information Type 15 is broadcast if dynamic ARFCN mapping is used in the
+		 * PLMN. If sent on BCCH Norm, it is sent at least once within any of 4 consecutive
+		 * occurrences of TC = 4. If sent on BCCH Ext, it is sent at least once within any of
+		 * 4 consecutive occurrences of TC = 1. */
+		if (not cfg.bcch_extended) {
+			f_ensure_si_vec_contains_n_of_m(si_per_tc, 4, SYSTEM_INFORMATION_TYPE_15, false, 1, 4);
+		} else {
+			f_ensure_si_vec_contains_n_of_m(si_per_tc, 1, SYSTEM_INFORMATION_TYPE_15, true, 1, 4);
+		}
+	}
+	if (cfg.si13alt_present) {
+		/* xii) System Information type 13 alt is only related to the GERAN Iu mode. System
+		 * Information Type 13 alt need only be sent if GERAN Iu mode support is indicated in
+		 * one or more of System Information Type 3 or 4 or 7 or 8 messages and SI 13 is not
+		 * broadcast. These messages also indicate if the message is sent on the BCCH Norm or
+		 * if the message is transmitted on the BCCH Ext. In the case that the message is sent
+		 * on the BCCH Norm, it is sent at least once within any of 4 consecutive occurrences
+		 * of TC = 4. */
+		if (cfg.si13_present) {
+			testcase.stop("Error: Cannot have SI13alt and SI13");
+		}
+		if (f_si_vec_contains(si_per_tc, SYSTEM_INFORMATION_TYPE_13)) {
+			setverdict(fail, "Cannot have SI13alt and SI13");
+		}
+		if (not cfg.bcch_extended) {
+			f_ensure_si_vec_contains_n_of_m(si_per_tc, 4, SYSTEM_INFORMATION_TYPE_13alt, false, 1, 4);
+		} else {
+			f_ensure_si_vec_contains(si_per_tc, 0, SYSTEM_INFORMATION_TYPE_13alt, true);
+		}
+	}
+	if (cfg.si2n_present) {
+		/* xiii) System Information Type 2n is optionally sent on BCCH Norm or BCCH Ext if needed,
+		 * as determined by the system operator. In the case that the message is sent on the
+		 * BCCH Norm, it is sent at least once within any of 4 consecutive occurrences of TC =
+		 * 4. If the message is sent on BCCH Ext, it is sent at least once within any of 2
+		 * consecutive occurrences of TC = 4. */
+		if (not cfg.bcch_extended) {
+			f_ensure_si_vec_contains_n_of_m(si_per_tc, 4, SYSTEM_INFORMATION_TYPE_2n, false, 1, 4);
+		} else {
+			f_ensure_si_vec_contains_n_of_m(si_per_tc, 4, SYSTEM_INFORMATION_TYPE_2n, true, 2, 4);
+		}
+	}
+	if (cfg.si21_present) {
+		/* xiv) System Information Type 21 is optionally sent on BCCH Norm or BCCH Ext, as
+		 * determined by the system operator. If Extended Access Barring is in use in the cell
+		 * then this message is sent at least once within any of 4 consecutive occurrences of
+		 * TC = 4 regardless if it is sent on BCCH Norm or BCCH Ext. If BCCH Ext is used in a
+		 * cell then this message shall only be sent on BCCH Ext. */
+		if (not cfg.bcch_extended) {
+			f_ensure_si_vec_contains_n_of_m(si_per_tc, 4, SYSTEM_INFORMATION_TYPE_21, false, 1, 4);
+		} else {
+			f_ensure_si_vec_contains_n_of_m(si_per_tc, 4, SYSTEM_INFORMATION_TYPE_21, true, 1, 4);
+			if (f_si_vecslot_contains(si_per_tc[4], SYSTEM_INFORMATION_TYPE_21)) {
+				setverdict(fail, "Cannot have SI21 on BCCH Norm if BCCH Extd enabled!");
+			}
+		}
+	}
+	if (cfg.si22_present) {
+		/* xv) System Information Type 22 is sent if network sharing is in use in the cell. It
+		 * should not be sent in a cell where SoLSA is used (see rule viii). System
+		 * Information Type 22 instances shall be sent on BCCH Ext within any occurrence of TC
+		 * =2 and TC=6. */
+		if (cfg.si16_present or cfg.si17_present) {
+			testcase.stop("Error: Cannot have SI16/SI17 and SI22!");
+		}
+		if (f_si_vec_contains(si_per_tc, SYSTEM_INFORMATION_TYPE_16) or
+		    f_si_vec_contains(si_per_tc, SYSTEM_INFORMATION_TYPE_17)) {
+			setverdict(fail, "Cannot have SI16/SI17 and SI22!");
+		}
+		if (not cfg.bcch_extended) {
+			testcase.stop("Error: SI22 requires BCCH Extd!");
+		} else {
+			f_ensure_si_vec_contains_only(si_per_tc, 2, SYSTEM_INFORMATION_TYPE_22, true);
+			f_ensure_si_vec_contains_only(si_per_tc, 6, SYSTEM_INFORMATION_TYPE_22, true);
+		}
+	}
+}
+
+/* sample Systme Information for specified duration via L1CTL */
+function f_l1_sample_si(L1CTL_PT pt, float duration := 8.0) return SystemInformationVectorPerTc {
+	timer T := duration;
+	var SystemInformationVectorPerTc si_per_tc;
+	var L1ctlDlMessage l1_dl;
+
+	/* initialize all per-TC vectors empty */
+	for (var integer i:= 0; i < sizeof(si_per_tc); i := i+1) {
+		si_per_tc[i] := {};
+	}
+
+	/* flush all previous L1 queued msgs */
+	pt.clear;
+
+	T.start;
+	alt {
+	[] pt.receive(t_L1CTL_DATA_IND(t_RslChanNr_BCCH(0), ?)) -> value l1_dl {
+		/* somehow dec_SystemInformation will try to decode even non-RR as SI */
+		if (not (l1_dl.payload.data_ind.payload[1] ==  '06'O)) {
+			log("Ignoring non-RR SI ", l1_dl);
+			repeat;
+		}
+		var SystemInformationFn sig := {
+			frame_number := l1_dl.dl_info.frame_nr,
+			si := dec_SystemInformation(l1_dl.payload.data_ind.payload)
+		}
+		var integer tc := f_gsm_compute_tc(sig.frame_number);
+		log("SI received at TC=", tc, ": ", sig.si);
+		/* append to the per-TC bucket */
+		si_per_tc[tc] := si_per_tc[tc] & { sig };
+		repeat;
+		}
+	[] pt.receive { repeat; }
+	[] T.timeout { }
+	}
+
+	for (var integer i:= 0; i < sizeof(si_per_tc); i := i+1) {
+		log(testcasename(), ": TC=", i, " has #of SI=", sizeof(si_per_tc[i]));
+	}
+	log("si_per_tc=", si_per_tc);
+	return si_per_tc;
+}
+
+/* helper function: Set given SI via RSL + validate scheduling.
+ * CALLER MUST MAKE SURE TO CHANGE GLOBAL si_cfg! */
+function f_TC_si_sched() runs on test_CT {
+	var SystemInformationVectorPerTc si_per_tc;
+	f_init_l1ctl();
+	f_l1_tune(L1CTL);
+
+	/* Sample + Validate Scheduling */
+	si_per_tc := f_l1_sample_si(L1CTL);
+	f_validate_si_scheduling(si_cfg, si_per_tc);
+
+	setverdict(pass);
+}
+
+testcase TC_si_sched_default() runs on test_CT {
+	f_init();
+	f_rsl_bcch_fill(RSL_SYSTEM_INFO_2, ts_SI2_default);
+	f_rsl_bcch_fill(RSL_SYSTEM_INFO_4, ts_SI4_default);
+	f_TC_si_sched();
+}
+
+testcase TC_si_sched_2bis() runs on test_CT {
+	f_init();
+	si_cfg.si2bis_present := true;
+	f_rsl_bcch_fill_raw(RSL_SYSTEM_INFO_2bis, '550602bfe809b3ff00000000000000000000007900002b'O);
+	f_TC_si_sched();
+}
+
+testcase TC_si_sched_2ter() runs on test_CT {
+	f_init();
+	si_cfg.si2ter_present := true;
+	f_rsl_bcch_fill_raw(RSL_SYSTEM_INFO_2ter, '010603bf66b0aa0a00000002000000000000002b2b2b2b'O);
+	f_TC_si_sched();
+}
+
+testcase TC_si_sched_2ter_2bis() runs on test_CT {
+	f_init();
+	si_cfg.si2bis_present := true;
+	f_rsl_bcch_fill_raw(RSL_SYSTEM_INFO_2bis, '550602bfe809b3ff00000000000000000000007900002b'O);
+	si_cfg.si2ter_present := true;
+	f_rsl_bcch_fill_raw(RSL_SYSTEM_INFO_2ter, '010603bf66b0aa0a00000002000000000000002b2b2b2b'O);
+	f_TC_si_sched();
+}
+
+testcase TC_si_sched_2quater() runs on test_CT {
+	f_init();
+	si_cfg.si2quater_present := true;
+	f_rsl_bcch_fill_raw(RSL_SYSTEM_INFO_2quater, '050607a8a0364aa698d72ff424feee0506d5e7fff02043'O);
+	f_TC_si_sched();
+}
+
+testcase TC_si_sched_13() runs on test_CT {
+	f_init();
+	si_cfg.si13_present := true;
+	//f_rsl_bcch_fill_raw(RSL_SYSTEM_INFO_13, fixme);
+	f_TC_si_sched();
+}
+
+testcase TC_si_sched_13_2bis_2ter_2quater() runs on test_CT {
+	f_init();
+	si_cfg.si2bis_present := true;
+	f_rsl_bcch_fill_raw(RSL_SYSTEM_INFO_2bis, '550602bfe809b3ff00000000000000000000007900002b'O);
+	si_cfg.si2ter_present := true;
+	f_rsl_bcch_fill_raw(RSL_SYSTEM_INFO_2ter, '010603bf66b0aa0a00000002000000000000002b2b2b2b'O);
+	si_cfg.si2quater_present := true;
+	f_rsl_bcch_fill_raw(RSL_SYSTEM_INFO_2quater, '050607a8a0364aa698d72ff424feee0506d5e7fff02043'O);
+	si_cfg.si13_present := true;
+	//f_rsl_bcch_fill_raw(RSL_SYSTEM_INFO_13, fixme);
+	f_TC_si_sched();
+}
+
+
 testcase TC_bcch_info() runs on test_CT {
 	f_init(testcasename());
 	/* FIXME: enable / disable individual BCCH info */
@@ -1186,7 +1638,6 @@
 * BS Power Control
 * Physical Context
 * SACCH info modify
-* BCCH INFO (SI Broadcasting)
 * CCCH Load Indication for PCH and RACH
 * Delete Indication on AGCH overflow
 * SMS Broadcast Req / Cmd / CBCH LOad Ind
@@ -1217,6 +1668,13 @@
 	execute( TC_rsl_protocol_error() );
 	execute( TC_rsl_mand_ie_error() );
 	execute( TC_rsl_ie_content_error() );
+	execute( TC_si_sched_default() );
+	execute( TC_si_sched_2bis() );
+	execute( TC_si_sched_2ter() );
+	execute( TC_si_sched_2ter_2bis() );
+	execute( TC_si_sched_2quater() );
+	execute( TC_si_sched_13() );
+	execute( TC_si_sched_13_2bis_2ter_2quater() );
 	execute( TC_ipa_dlcx_not_active() );
 	execute( TC_ipa_crcx_twice_not_active() );
 	execute( TC_ipa_crcx_mdcx_dlcx_not_active() );

-- 
To view, visit https://gerrit.osmocom.org/6921
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I65f4b91e81174717a0c484ba5c22bede68683ae1
Gerrit-PatchSet: 1
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Owner: Harald Welte <laforge at gnumonks.org>
Gerrit-Reviewer: Harald Welte <laforge at gnumonks.org>
Gerrit-Reviewer: Jenkins Builder



More information about the gerrit-log mailing list