aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVadim Yanitskiy <vyanitskiy@sysmocom.de>2020-11-15 20:41:02 +0700
committerVadim Yanitskiy <vyanitskiy@sysmocom.de>2020-11-24 11:58:49 +0100
commit42d8bd50126f391c69389bf2729fc69e6888131a (patch)
tree06c31feec7771979d487cb964f3434febfa8c7d3
parent802508e696c1c918043baaf1a6acaa16dd9e6426 (diff)
BTS_Tests: re-organize configuration of TRX/TS params
-rw-r--r--bts/BTS_Tests.default56
-rw-r--r--bts/BTS_Tests.ttcn34
-rw-r--r--bts/BTS_Tests_LAPDm.ttcn8
-rw-r--r--bts/BTS_Tests_SMSCB.ttcn2
-rw-r--r--library/GSM_Types.ttcn17
5 files changed, 98 insertions, 19 deletions
diff --git a/bts/BTS_Tests.default b/bts/BTS_Tests.default
index 89b04e82..0657b658 100644
--- a/bts/BTS_Tests.default
+++ b/bts/BTS_Tests.default
@@ -31,4 +31,60 @@ mtc.FileMask := LOG_ALL | TTCN_DEBUG | TTCN_MATCHING | DEBUG_ENCDEC;
Osmocom_VTY_Functions.mp_prompt_prefix := "OsmoBTS";
PCUIF_Types.mp_pcuif_version := 10;
+# Configuration for each individual transceiver
+BTS_Tests.mp_trx_pars := {
+ { # TRX0
+ arfcn := 871,
+ ts := {
+ { config := GSM_PCHAN_CCCH_SDCCH4 },
+ { config := GSM_PCHAN_TCHF },
+ { config := GSM_PCHAN_TCHF },
+ { config := GSM_PCHAN_TCHF_PDCH },
+ { config := GSM_PCHAN_TCHH_TCHF_PDCH },
+ { config := GSM_PCHAN_TCHH },
+ { config := GSM_PCHAN_SDCCH8 },
+ { config := GSM_PCHAN_PDCH }
+ }
+ },
+ { # TRX1
+ arfcn := 873,
+ ts := {
+ { config := GSM_PCHAN_TCHF },
+ { config := GSM_PCHAN_SDCCH8 },
+ { config := GSM_PCHAN_PDCH },
+ { config := GSM_PCHAN_TCHH_TCHF_PDCH },
+ { config := GSM_PCHAN_TCHF_PDCH },
+ { config := GSM_PCHAN_SDCCH8 },
+ { config := GSM_PCHAN_PDCH },
+ { config := GSM_PCHAN_PDCH }
+ }
+ },
+ { # TRX2
+ arfcn := 875,
+ ts := {
+ { config := GSM_PCHAN_TCHH },
+ { config := GSM_PCHAN_PDCH },
+ { config := GSM_PCHAN_SDCCH8 },
+ { config := GSM_PCHAN_TCHF },
+ { config := GSM_PCHAN_SDCCH8 },
+ { config := GSM_PCHAN_TCHF },
+ { config := GSM_PCHAN_PDCH },
+ { config := GSM_PCHAN_PDCH }
+ }
+ },
+ { # TRX3
+ arfcn := 877,
+ ts := {
+ { config := GSM_PCHAN_PDCH },
+ { config := GSM_PCHAN_TCHH },
+ { config := GSM_PCHAN_TCHH },
+ { config := GSM_PCHAN_SDCCH8 },
+ { config := GSM_PCHAN_PDCH },
+ { config := GSM_PCHAN_TCHF },
+ { config := GSM_PCHAN_PDCH },
+ { config := GSM_PCHAN_SDCCH8 }
+ }
+ }
+};
+
[EXECUTE]
diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn
index cf468cf8..8895c6ba 100644
--- a/bts/BTS_Tests.ttcn
+++ b/bts/BTS_Tests.ttcn
@@ -84,10 +84,6 @@ friend module BTS_Tests_perf;
modulepar {
charstring mp_rsl_ip := "127.0.0.2";
integer mp_rsl_port := 3003;
- integer mp_trx0_arfcn := 871;
- integer mp_trx1_arfcn := 873;
- integer mp_trx2_arfcn := 875;
- integer mp_trx3_arfcn := 877;
charstring mp_bts_trxc_ip := "127.0.0.1";
integer mp_bts_trxc_port := 5701;
charstring mp_pcu_socket := PCU_SOCK_DEFAULT;
@@ -118,6 +114,8 @@ modulepar {
boolean mp_freq_hop_enabled := false;
/* frequency hopping parameters */
FreqHopConfig mp_fh_config;
+ /* configuration for each individual transceiver */
+ TrxPars mp_trx_pars; /* see BTS_Tests.default */
}
type record of RslChannelNr ChannelNrs;
@@ -256,6 +254,17 @@ private function f_init_rsl(charstring id) runs on test_CT {
}
}
+friend type record length(1 .. 256) of TrxParsItem TrxPars;
+friend type record TrxParsItem {
+ GsmArfcn arfcn,
+ TrxTsPars ts
+};
+
+friend type record length(8) of TrxTsParsItem TrxTsPars;
+friend type record TrxTsParsItem {
+ PchanConfig config
+};
+
friend type record FreqHopPars {
/* Whether frequency hopping is in use */
boolean enabled,
@@ -584,7 +593,7 @@ friend function f_resolve_fh_params(inout FreqHopPars fhp, uint8_t tn,
/* Compose the actual Mobile Allocation and the bitmask */
for (j := 0; j < lengthof(g.trx_maio); j := j + 1) {
var FreqHopGroupItem gi := g.trx_maio[j];
- var GsmArfcn arfcn := c_arfcn_list[gi.trx_nr];
+ var GsmArfcn arfcn := mp_trx_pars[gi.trx_nr].arfcn;
fhp.ma := fhp.ma & { valueof(ts_GsmBandArfcn(arfcn)) };
fhp.ma_map.ma[gi.trx_nr] := '1'B;
}
@@ -636,7 +645,7 @@ private altstep as_Tguard() runs on ConnHdlr {
}
friend function f_l1_tune(L1CTL_PT L1CTL, L1ctlCcchMode ccch_mode := CCCH_MODE_COMBINED) {
- var GsmBandArfcn arfcn := valueof(ts_GsmBandArfcn(mp_trx0_arfcn));
+ var GsmBandArfcn arfcn := valueof(ts_GsmBandArfcn(mp_trx_pars[0].arfcn));
f_L1CTL_FBSB(L1CTL, arfcn, ccch_mode, mp_rxlev_exp);
}
@@ -727,12 +736,6 @@ friend function f_rsl_chan_deact() runs on ConnHdlr {
"RF CHAN REL", true);
}
-/* TODO: move this to module parameters */
-private const GsmArfcn c_arfcn_list[4] := {
- mp_trx0_arfcn, mp_trx1_arfcn,
- mp_trx2_arfcn, mp_trx3_arfcn
-};
-
friend template ConnHdlrPars t_Pars(template RslChannelNr chan_nr,
template RSL_IE_ChannelMode chan_mode,
float t_guard := 20.0) := {
@@ -2145,7 +2148,7 @@ private function f_l1ctl_est_dchan(L1CTL_PT pt, ConnHdlrPars pars) {
if (not pars.fhp.enabled) {
pt.send(ts_L1CTL_DM_EST_REQ_H0(pars.chan_nr,
7 /* TODO: mp_tsc */,
- mp_trx0_arfcn));
+ mp_trx_pars[0].arfcn));
} else {
pt.send(ts_L1CTL_DM_EST_REQ_H1(pars.chan_nr,
7 /* TODO: mp_tsc */,
@@ -2172,7 +2175,7 @@ private function f_est_dchan(boolean encr_enable := false, RSL_IE_List more_ies
if (g_pars.fhp.enabled) {
ch_desc := valueof(ts_ChanDescH1(g_pars.chan_nr, g_pars.fhp.maio_hsn));
} else {
- ch_desc := valueof(ts_ChanDescH0(g_pars.chan_nr, mp_trx0_arfcn));
+ ch_desc := valueof(ts_ChanDescH0(g_pars.chan_nr, mp_trx_pars[0].arfcn));
}
/* Send IMM.ASS via CCHAN */
@@ -3729,7 +3732,8 @@ private function f_TC_imm_ass(integer num_total, float sleep_s, float exp_pass)
f_l1_tune(L1CTL);
for (var integer i := 0; i < num_total; i := i+1) {
- var ChannelDescription ch_desc := valueof(ts_ChanDescH0(ts_RslChanNr_SDCCH4(0, 0), mp_trx0_arfcn));
+ var ChannelDescription ch_desc := valueof(ts_ChanDescH0(ts_RslChanNr_SDCCH4(0, 0),
+ mp_trx_pars[0].arfcn));
var GsmRrMessage ia := valueof(ts_IMM_ASS(42, i, 5, ch_desc, c_MA_null));
var octetstring ia_enc := enc_GsmRrMessage(ia);
RSL_CCHAN.send(ts_ASP_RSL_UD(ts_RSL_IMM_ASSIGN(ia_enc, 0)));
diff --git a/bts/BTS_Tests_LAPDm.ttcn b/bts/BTS_Tests_LAPDm.ttcn
index 0c032bbe..a4fa2e8b 100644
--- a/bts/BTS_Tests_LAPDm.ttcn
+++ b/bts/BTS_Tests_LAPDm.ttcn
@@ -43,16 +43,18 @@ function f_lapdm_exit() runs on lapdm_test_CT {
/* master function switching to a dedicated radio channel */
function f_switch_dcch() runs on ConnHdlr {
- var GsmBandArfcn arfcn := valueof(ts_GsmBandArfcn(mp_trx0_arfcn));
+ var GsmBandArfcn arfcn := valueof(ts_GsmBandArfcn(mp_trx_pars[0].arfcn));
var BCCH_tune_req tune_req := { arfcn := arfcn, combined_ccch := true };
var DCCH_switch_req sw_req;
/* Craft channel description (with or without frequency hopping parameters) */
if (g_pars.fhp.enabled) {
- sw_req.chan_desc := valueof(ts_ChanDescH1(g_pars.chan_nr, g_pars.fhp.maio_hsn));
+ sw_req.chan_desc := valueof(ts_ChanDescH1(g_pars.chan_nr,
+ g_pars.fhp.maio_hsn));
sw_req.ma := g_pars.fhp.ma;
} else {
- sw_req.chan_desc := valueof(ts_ChanDescH0(g_pars.chan_nr, mp_trx0_arfcn));
+ sw_req.chan_desc := valueof(ts_ChanDescH0(g_pars.chan_nr,
+ mp_trx_pars[0].arfcn));
sw_req.ma := omit;
}
diff --git a/bts/BTS_Tests_SMSCB.ttcn b/bts/BTS_Tests_SMSCB.ttcn
index 6d080f2a..5f06f044 100644
--- a/bts/BTS_Tests_SMSCB.ttcn
+++ b/bts/BTS_Tests_SMSCB.ttcn
@@ -267,7 +267,7 @@ private function f_smscb_setup(inout CbchTestPars pars) runs on test_CT {
} else {
L1CTL.send(ts_L1CTL_DM_EST_REQ_H0(pars.chan_nr,
7 /* TODO: mp_tsc */,
- mp_trx0_arfcn));
+ mp_trx_pars[0].arfcn));
}
}
diff --git a/library/GSM_Types.ttcn b/library/GSM_Types.ttcn
index e7d8a7cd..34b65176 100644
--- a/library/GSM_Types.ttcn
+++ b/library/GSM_Types.ttcn
@@ -59,6 +59,23 @@ tr_GsmBandArfcn(template (present) GsmArfcn arfcn,
arfcn := arfcn
};
+/* see enum 'gsm_phys_chan_config' in libosmocore */
+type enumerated PchanConfig {
+ GSM_PCHAN_NONE,
+ GSM_PCHAN_CCCH,
+ GSM_PCHAN_CCCH_SDCCH4,
+ GSM_PCHAN_CCCH_SDCCH4_CBCH,
+ GSM_PCHAN_SDCCH8,
+ GSM_PCHAN_SDCCH8_CBCH,
+ GSM_PCHAN_TCHF,
+ GSM_PCHAN_TCHH,
+ GSM_PCHAN_PDCH,
+ /* IPA style dynamic TCH/F+PDCH */
+ GSM_PCHAN_TCHF_PDCH,
+ /* Osmocom style dynamic TCH/H+TCH/F+PDCH */
+ GSM_PCHAN_TCHH_TCHF_PDCH
+};
+
type enumerated GprsCodingScheme {
CS1, CS2, CS3, CS4
};