aboutsummaryrefslogtreecommitdiffstats
path: root/bts
diff options
context:
space:
mode:
authorVadim Yanitskiy <vyanitskiy@sysmocom.de>2020-11-16 17:08:03 +0700
committerVadim Yanitskiy <vyanitskiy@sysmocom.de>2020-11-24 11:58:49 +0100
commit7e70709689862b367de4176b320c5e61ce3964b9 (patch)
tree530403e410c1a3f6eced59b20c179a966605ad75 /bts
parent42d8bd50126f391c69389bf2729fc69e6888131a (diff)
BTS_Tests: generate g_AllChannels from module parameters
Diffstat (limited to 'bts')
-rw-r--r--bts/BTS_Tests.ttcn65
1 files changed, 48 insertions, 17 deletions
diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn
index 8895c6ba..68503dd1 100644
--- a/bts/BTS_Tests.ttcn
+++ b/bts/BTS_Tests.ttcn
@@ -469,25 +469,14 @@ private function f_init_trxc(TRXC_CODEC_PT pt, charstring id,
}
/* global init function */
-friend function f_init() runs on test_CT {
+friend function f_init(uint8_t trx_nr := 0)
+runs on test_CT
+{
+ var TrxParsItem trx_pars := mp_trx_pars[trx_nr];
var charstring id := testcasename();
- g_AllChannels := {
- /* TS 1..4: TCH/F */
- valueof(ts_RslChanNr_Bm(1)), valueof(ts_RslChanNr_Bm(2)),
- valueof(ts_RslChanNr_Bm(3)), valueof(ts_RslChanNr_Bm(4)),
- /* TS 5: TCH/H */
- valueof(ts_RslChanNr_Lm(5,0)), valueof(ts_RslChanNr_Lm(5,1)),
- /* TS 0: SDCCH/4 */
- valueof(ts_RslChanNr_SDCCH4(0,0)), valueof(ts_RslChanNr_SDCCH4(0,1)),
- valueof(ts_RslChanNr_SDCCH4(0,2)), valueof(ts_RslChanNr_SDCCH4(0,3)),
- /* TS 6: SDCCH/8 */
- valueof(ts_RslChanNr_SDCCH8(6,0)), valueof(ts_RslChanNr_SDCCH8(6,1)),
- valueof(ts_RslChanNr_SDCCH8(6,2)), valueof(ts_RslChanNr_SDCCH8(6,3)),
- valueof(ts_RslChanNr_SDCCH8(6,4)), valueof(ts_RslChanNr_SDCCH8(6,5)),
- valueof(ts_RslChanNr_SDCCH8(6,6)), valueof(ts_RslChanNr_SDCCH8(6,7))
- };
- /* FIXME: FACCH/H is unreliable with calypso firmware, see OS#3653 */
+ /* FIXME: FACCH/H is unreliable with calypso firmware, see OS#3653.
+ * TODO: also generate this list dynamically from module parameters. */
if (mp_bts_trxc_port != -1) {
g_AllChanTypes := {
/* TS 1..4: TCH/F */
@@ -509,6 +498,48 @@ friend function f_init() runs on test_CT {
valueof(ts_RslChanNr_SDCCH8(6,4))
};
}
+
+ g_AllChannels := { };
+
+ /* Generate list of all logical channels from module parameters */
+ for (var integer tn := 0; tn < lengthof(trx_pars.ts); tn := tn + 1) {
+ select (trx_pars.ts[tn].config) {
+ case (GSM_PCHAN_CCCH_SDCCH4) {
+ g_AllChannels := g_AllChannels &
+ { valueof(ts_RslChanNr_SDCCH4(tn, 0)),
+ valueof(ts_RslChanNr_SDCCH4(tn, 1)),
+ valueof(ts_RslChanNr_SDCCH4(tn, 2)),
+ valueof(ts_RslChanNr_SDCCH4(tn, 3)) };
+ }
+ case (GSM_PCHAN_SDCCH8) {
+ g_AllChannels := g_AllChannels &
+ { valueof(ts_RslChanNr_SDCCH8(tn, 0)),
+ valueof(ts_RslChanNr_SDCCH8(tn, 1)),
+ valueof(ts_RslChanNr_SDCCH8(tn, 2)),
+ valueof(ts_RslChanNr_SDCCH8(tn, 3)),
+ valueof(ts_RslChanNr_SDCCH8(tn, 4)),
+ valueof(ts_RslChanNr_SDCCH8(tn, 5)),
+ valueof(ts_RslChanNr_SDCCH8(tn, 6)),
+ valueof(ts_RslChanNr_SDCCH8(tn, 7)) };
+ }
+ case (GSM_PCHAN_TCHH_TCHF_PDCH) {
+ g_AllChannels := g_AllChannels &
+ { valueof(ts_RslChanNr_Lm(tn, 0)),
+ valueof(ts_RslChanNr_Lm(tn, 1)),
+ valueof(ts_RslChanNr_Bm(tn)) };
+ }
+ case (GSM_PCHAN_TCHH) {
+ g_AllChannels := g_AllChannels &
+ { valueof(ts_RslChanNr_Lm(tn, 0)),
+ valueof(ts_RslChanNr_Lm(tn, 1)) };
+ }
+ case (GSM_PCHAN_TCHF, GSM_PCHAN_TCHF_PDCH) {
+ g_AllChannels := g_AllChannels &
+ { valueof(ts_RslChanNr_Bm(tn)) };
+ }
+ }
+ }
+
f_init_rsl(id);
f_sleep(0.5); /* workaround for OS#3000 */
f_init_vty(id);