diff options
author | Harald Welte <laforge@gnumonks.org> | 2016-01-20 22:50:06 +0100 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2016-02-15 14:27:29 +0100 |
commit | e9a17292e8545d5f651e9614c43bc1626e10ac5f (patch) | |
tree | 6e2cf1ae92d8c4cd6de786eb4f0f3aab18f9ef91 /src/common | |
parent | 9b5cff87ecc4b76f9f8a0a86aa64e9394e2a8374 (diff) |
LC15/sysmobts: Don't try to refer to fl1h from PHY config
At the time the phy link / phy instance level VTY configuration
commands are parsed, we did not yet call l1if_open() and thus
pinst->u.{lc15,sysmobts}.hdl == NULL.
PHY or PHY instance specific configuration must thus be stored inside
the phy_link or phy_instance itself, and not inside the (not yet
existing) handle.
We solve this by moving around some parameters:
* clk_use_eeprom/clk_cal/clk_src/calib_path get replicated in
phy_instance
* min_qual_{rach,norm} are moved into the generic part (which means
that osmo-bts-octphy and osmo-bts-trx should also implement them)
Diffstat (limited to 'src/common')
-rw-r--r-- | src/common/bts.c | 5 | ||||
-rw-r--r-- | src/common/vty.c | 33 |
2 files changed, 38 insertions, 0 deletions
diff --git a/src/common/bts.c b/src/common/bts.c index 222a82ce..20d551dc 100644 --- a/src/common/bts.c +++ b/src/common/bts.c @@ -44,6 +44,9 @@ #include <osmo-bts/oml.h> #include <osmo-bts/signal.h> +#define MIN_QUAL_RACH 5.0f /* at least 5 dB C/I */ +#define MIN_QUAL_NORM -0.5f /* at least -1 dB C/I */ + static void bts_update_agch_max_queue_length(struct gsm_bts *bts); struct gsm_network bts_gsmnet = { @@ -112,6 +115,8 @@ int bts_init(struct gsm_bts *bts) btsb->max_ta = 63; btsb->ny1 = 4; btsb->t3105_ms = 300; + btsb->min_qual_rach = MIN_QUAL_RACH; + btsb->min_qual_norm = MIN_QUAL_NORM; for (i = 0; i < ARRAY_SIZE(btsb->t200_ms); i++) btsb->t200_ms[i] = oml_default_t200_ms[i]; diff --git a/src/common/vty.c b/src/common/vty.c index 7488fbba..62751772 100644 --- a/src/common/vty.c +++ b/src/common/vty.c @@ -270,6 +270,10 @@ static void config_write_bts_single(struct vty *vty, struct gsm_bts *bts) const char *name = get_value_string(gsmtap_sapi_names, GSMTAP_CHANNEL_ACCH); vty_out(vty, " gsmtap-sapi %s%s", osmo_str_tolower(name), VTY_NEWLINE); } + vty_out(vty, " min-qual-rach %.0f%s", btsb->min_qual_rach * 10.0f, + VTY_NEWLINE); + vty_out(vty, " min-qual-norm %.0f%s", btsb->min_qual_norm * 10.0f, + VTY_NEWLINE); bts_model_config_write_bts(vty, bts); @@ -532,6 +536,33 @@ DEFUN(cfg_bts_ul_power_target, cfg_bts_ul_power_target_cmd, return CMD_SUCCESS; } +DEFUN(cfg_bts_min_qual_rach, cfg_bts_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 *bts = vty->index; + struct gsm_bts_role_bts *btsb = bts_role_bts(bts); + + btsb->min_qual_rach = strtof(argv[0], NULL) / 10.0f; + + return CMD_SUCCESS; +} + +DEFUN(cfg_bts_min_qual_norm, cfg_bts_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 *bts = vty->index; + struct gsm_bts_role_bts *btsb = bts_role_bts(bts); + + btsb->min_qual_norm = strtof(argv[0], NULL) / 10.0f; + + return CMD_SUCCESS; +} + + #define DB_DBM_STR \ "Unit is dB (decibels)\n" \ "Unit is mdB (milli-decibels, or rather 1/10000 bel)\n" @@ -1001,6 +1032,8 @@ int bts_vty_init(struct gsm_bts *bts, const struct log_info *cat) install_element(BTS_NODE, &cfg_bts_agch_queue_mgmt_default_cmd); install_element(BTS_NODE, &cfg_bts_agch_queue_mgmt_params_cmd); install_element(BTS_NODE, &cfg_bts_ul_power_target_cmd); + install_element(BTS_NODE, &cfg_bts_min_qual_rach_cmd); + install_element(BTS_NODE, &cfg_bts_min_qual_norm_cmd); install_element(BTS_NODE, &cfg_trx_gsmtap_sapi_cmd); install_element(BTS_NODE, &cfg_trx_no_gsmtap_sapi_cmd); |