diff options
author | Andreas Eversberg <jolly@eversberg.eu> | 2013-03-17 16:45:04 +0100 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2013-03-17 17:43:02 +0100 |
commit | cdc5a4dc384c91d5102376e08e3f34523e50b028 (patch) | |
tree | cfec4152a6447f814db2d8def9fb6ef67c116046 | |
parent | 5cbc7e91676a70bce1855ef2613c227baca8ef4f (diff) |
Add VTY option to define minimum C/I level for RACH and normal burst
-rw-r--r-- | src/osmo-bts-sysmo/l1_if.c | 7 | ||||
-rw-r--r-- | src/osmo-bts-sysmo/l1_if.h | 2 | ||||
-rw-r--r-- | src/osmo-bts-sysmo/sysmobts_vty.c | 32 |
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; } |