bts: Add timing offset tolerance module parameter to support real HW

When we don't use trxcon (ie we run real HW) we need to relax template
matching when we receive UL measurements in that case.

Change-Id: Icf1d2216d29c1ebf68c672e6ca06c54a7457304b
This commit is contained in:
Pau Espin 2018-09-28 15:58:12 +02:00
parent 8e1f3c5d2f
commit dd0e8f3409
1 changed files with 15 additions and 17 deletions

View File

@ -51,11 +51,14 @@ modulepar {
charstring mp_bb_trxc_ip := "127.0.0.1";
integer mp_bb_trxc_port := 6701;
charstring mp_pcu_socket := PCU_SOCK_DEFAULT;
integer mp_tolerance_rxqual := 1;
integer mp_tolerance_rxlev := 3;
charstring mp_ctrl_ip := "127.0.0.1";
integer mp_ctrl_port := 4238;
integer mp_tolerance_rxqual := 1;
integer mp_tolerance_rxlev := 3;
integer mp_tolerance_timing_offset_256syms := 0;
integer mp_rxlev_exp := 57;
integer mp_ms_actual_ta_exp := 0;
integer mp_timing_offset_256syms_exp := 512;
}
type record of RslChannelNr ChannelNrs;
@ -521,10 +524,10 @@ private template ConnHdlrPars t_Pars(template RslChannelNr chan_nr,
rxqual := 0
}
},
timing_offset_256syms := 0,
timing_offset_256syms := mp_timing_offset_256syms_exp,
bs_power_level := 0,
ms_power_level := 0,
ms_actual_ta := 0
ms_actual_ta := mp_ms_actual_ta_exp
},
spec := omit,
encr := omit
@ -1258,7 +1261,7 @@ private function f_build_meas_res_tmpl() runs on ConnHdlr return template RSL_Me
if (l1p.toa256_enabled) {
ul_meas.len := (3+8);
ul_meas.supp_meas_info := {
toa256_mean := l1p.timing_offset_256syms,
toa256_mean := f_tolerance(l1p.timing_offset_256syms, -63*256, 192*256, mp_tolerance_timing_offset_256syms),
toa256_min := ?,
toa256_max := ?,
toa256_std_dev := ?
@ -1279,10 +1282,10 @@ private function f_build_meas_res_tmpl() runs on ConnHdlr return template RSL_Me
ms_power_lvl := l1p.ms_power_level,
fpc := false,
reserved := 0,
actual_ta := l1p.ms_actual_ta
actual_ta := f_tolerance(l1p.ms_actual_ta, 0, 63, mp_tolerance_timing_offset_256syms/256)
};
var uint8_t offs := toffs256s_to_rsl(l1p.timing_offset_256syms);
var template uint8_t t_toffs := (offs-1 .. offs+1); /* some tolerance */
var template uint8_t t_toffs := f_tolerance(offs, 0, 255, mp_tolerance_timing_offset_256syms/256);
return tr_RSL_MEAS_RES_OSMO(g_chan_nr, g_next_meas_res_nr, ul_meas, bs_power, l1_info,
?, t_toffs);
}
@ -1399,17 +1402,12 @@ function f_TC_meas_res_periodic(charstring id) runs on ConnHdlr {
f_l1_tune(L1CTL);
RSL.clear;
if (mp_bb_trxc_port != -1) {
g_pars.l1_pars.meas_ul.full.rxlev := dbm2rxlev(-100);
f_trxc_fake_rssi(100);
g_pars.l1_pars.timing_offset_256syms := 512; /* 2 symbols */
f_trx_fake_toffs256(g_pars.l1_pars.timing_offset_256syms);
} else {
g_pars.l1_pars.timing_offset_256syms := 0; /* FIXME */
g_pars.l1_pars.meas_ul.full.rxlev := dbm2rxlev(-55); /* FIXME */
}
g_pars.l1_pars.meas_ul.full.rxlev := dbm2rxlev(-100);
g_pars.l1_pars.meas_ul.sub.rxlev := g_pars.l1_pars.meas_ul.full.rxlev;
if (mp_bb_trxc_port != -1) {
f_trxc_fake_rssi(100);
f_trx_fake_toffs256(g_pars.l1_pars.timing_offset_256syms);
}
f_est_dchan();