aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Eversberg <jolly@eversberg.eu>2013-03-17 16:45:04 +0100
committerHarald Welte <laforge@gnumonks.org>2013-03-17 17:43:02 +0100
commitcdc5a4dc384c91d5102376e08e3f34523e50b028 (patch)
treecfec4152a6447f814db2d8def9fb6ef67c116046
parent5cbc7e91676a70bce1855ef2613c227baca8ef4f (diff)
Add VTY option to define minimum C/I level for RACH and normal burst
-rw-r--r--src/osmo-bts-sysmo/l1_if.c7
-rw-r--r--src/osmo-bts-sysmo/l1_if.h2
-rw-r--r--src/osmo-bts-sysmo/sysmobts_vty.c32
3 files changed, 38 insertions, 3 deletions
diff --git a/src/osmo-bts-sysmo/l1_if.c b/src/osmo-bts-sysmo/l1_if.c
index d2aecd5e..87ea0fca 100644
--- a/src/osmo-bts-sysmo/l1_if.c
+++ b/src/osmo-bts-sysmo/l1_if.c
@@ -60,7 +60,6 @@
extern int pcu_direct;
-/* FIXME: make threshold configurable */
#define MIN_QUAL_RACH 5.0f /* at least 5 dB C/I */
#define MIN_QUAL_NORM -0.5f /* at least -1 dB C/I */
@@ -696,7 +695,7 @@ static int handle_ph_data_ind(struct femtol1_hdl *fl1, GsmL1_PhDataInd_t *data_i
process_meas_res(lchan, &data_ind->measParam);
- if (data_ind->measParam.fLinkQuality < MIN_QUAL_NORM
+ if (data_ind->measParam.fLinkQuality < fl1->min_qual_norm
&& data_ind->msgUnitParam.u8Size != 0)
return 0;
@@ -823,7 +822,7 @@ static int handle_ph_ra_ind(struct femtol1_hdl *fl1, GsmL1_PhRaInd_t *ra_ind)
ra_ind->measParam.fRssi >= btsb->load.rach.busy_thresh)
btsb->load.rach.busy++;
- if (ra_ind->measParam.fLinkQuality < MIN_QUAL_RACH)
+ if (ra_ind->measParam.fLinkQuality < fl1->min_qual_rach)
return 0;
/* increment number of RACH slots with valid RACH burst */
@@ -1251,6 +1250,8 @@ struct femtol1_hdl *l1if_open(void *priv)
fl1h->priv = priv;
fl1h->clk_cal = 0;
fl1h->ul_power_target = -75; /* dBm default */
+ fl1h->min_qual_rach = MIN_QUAL_RACH;
+ fl1h->min_qual_norm = MIN_QUAL_NORM;
/* default clock source: OCXO */
#if SUPERFEMTO_API_VERSION >= SUPERFEMTO_API(2,1,0)
fl1h->clk_src = SuperFemto_ClkSrcId_Ocxo;
diff --git a/src/osmo-bts-sysmo/l1_if.h b/src/osmo-bts-sysmo/l1_if.h
index d564e3dc..cf4f4835 100644
--- a/src/osmo-bts-sysmo/l1_if.h
+++ b/src/osmo-bts-sysmo/l1_if.h
@@ -39,6 +39,8 @@ struct femtol1_hdl {
int clk_cal;
int ul_power_target;
uint8_t clk_src;
+ float min_qual_rach;
+ float min_qual_norm;
char *calib_path;
struct llist_head wlc_list;
diff --git a/src/osmo-bts-sysmo/sysmobts_vty.c b/src/osmo-bts-sysmo/sysmobts_vty.c
index fd82db0a..a9b7a5e6 100644
--- a/src/osmo-bts-sysmo/sysmobts_vty.c
+++ b/src/osmo-bts-sysmo/sysmobts_vty.c
@@ -174,6 +174,32 @@ DEFUN(cfg_trx_ul_power_target, cfg_trx_ul_power_target_cmd,
return CMD_SUCCESS;
}
+DEFUN(cfg_trx_min_qual_rach, cfg_trx_min_qual_rach_cmd,
+ "min-qual-rach <-100-100>",
+ "Set the minimum quality level of RACH burst to be accpeted\n"
+ "C/I level in tenth of dB\n")
+{
+ struct gsm_bts_trx *trx = vty->index;
+ struct femtol1_hdl *fl1h = trx_femtol1_hdl(trx);
+
+ fl1h->min_qual_rach = atof(argv[0]) / 10.0f;
+
+ return CMD_SUCCESS;
+}
+
+DEFUN(cfg_trx_min_qual_norm, cfg_trx_min_qual_norm_cmd,
+ "min-qual-norm <-100-100>",
+ "Set the minimum quality level of normal burst to be accpeted\n"
+ "C/I level in tenth of dB\n")
+{
+ struct gsm_bts_trx *trx = vty->index;
+ struct femtol1_hdl *fl1h = trx_femtol1_hdl(trx);
+
+ fl1h->min_qual_rach = atof(argv[0]) / 10.0f;
+
+ return CMD_SUCCESS;
+}
+
/* runtime */
DEFUN(show_trx_clksrc, show_trx_clksrc_cmd,
@@ -429,6 +455,10 @@ void bts_model_config_write_trx(struct vty *vty, struct gsm_bts_trx *trx)
VTY_NEWLINE);
vty_out(vty, " uplink-power-target %d%s", fl1h->ul_power_target,
VTY_NEWLINE);
+ vty_out(vty, " min-qual-rach %.0f%s", fl1h->min_qual_rach * 10.0f,
+ VTY_NEWLINE);
+ vty_out(vty, " min-qual-norm %.0f%s", fl1h->min_qual_norm * 10.0f,
+ VTY_NEWLINE);
for (i = 0; i < 32; i++) {
if (fl1h->gsmtap_sapi_mask & (1 << i)) {
@@ -491,6 +521,8 @@ int bts_model_vty_init(struct gsm_bts *bts)
install_element(TRX_NODE, &cfg_trx_gsmtap_sapi_cmd);
install_element(TRX_NODE, &cfg_trx_no_gsmtap_sapi_cmd);
install_element(TRX_NODE, &cfg_trx_ul_power_target_cmd);
+ install_element(TRX_NODE, &cfg_trx_min_qual_rach_cmd);
+ install_element(TRX_NODE, &cfg_trx_min_qual_norm_cmd);
return 0;
}