aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax <msuraev@sysmocom.de>2017-08-24 15:35:54 +0200
committerHarald Welte <laforge@gnumonks.org>2017-08-24 19:06:48 +0000
commitaa11997480822af0a583ac3c7c3fca1dc4bbe994 (patch)
tree1af4bc75664d14d65ecb72b186aa18f1358a0799
parent9a30b7781310b81555b216d32b172b6bb9c9d7e4 (diff)
osmo-bts-trx: remove global variables from loops
* move TA related globals into phy_link * move power loop related globals into phy_link * prefix corresponding vty vars with osmotrx Change-Id: I01d7c1abad67e51b886a4ecf2de072929d67da27 Related: OS#1848
-rw-r--r--include/osmo-bts/phy_link.h4
-rw-r--r--src/osmo-bts-trx/loops.c18
-rw-r--r--src/osmo-bts-trx/loops.h4
-rw-r--r--src/osmo-bts-trx/main.c3
-rw-r--r--src/osmo-bts-trx/trx_vty.c60
5 files changed, 47 insertions, 42 deletions
diff --git a/include/osmo-bts/phy_link.h b/include/osmo-bts/phy_link.h
index 7011622e..0ffc58e6 100644
--- a/include/osmo-bts/phy_link.h
+++ b/include/osmo-bts/phy_link.h
@@ -44,7 +44,9 @@ struct phy_link {
uint16_t base_port_local;
uint16_t base_port_remote;
struct osmo_fd trx_ofd_clk;
-
+ bool trx_ta_loop;
+ bool trx_ms_power_loop;
+ int8_t trx_target_rssi;
uint32_t clock_advance;
uint32_t rts_advance;
bool use_legacy_setbsic;
diff --git a/src/osmo-bts-trx/loops.c b/src/osmo-bts-trx/loops.c
index 3da805ce..6f87cd1f 100644
--- a/src/osmo-bts-trx/loops.c
+++ b/src/osmo-bts-trx/loops.c
@@ -39,9 +39,6 @@
* MS Power loop
*/
-int trx_ms_power_loop = 0;
-int8_t trx_target_rssi = -10;
-
static int ms_power_diff(struct gsm_lchan *lchan, uint8_t chan_nr, int8_t diff)
{
struct gsm_bts_trx *trx = lchan->ts->trx;
@@ -118,6 +115,7 @@ static int ms_power_clock(struct gsm_lchan *lchan,
uint8_t chan_nr, struct l1sched_chan_state *chan_state)
{
struct gsm_bts_trx *trx = lchan->ts->trx;
+ struct phy_instance *pinst = trx_phy_instance(trx);
int rssi;
int i;
@@ -159,10 +157,10 @@ static int ms_power_clock(struct gsm_lchan *lchan,
/* change RSSI */
LOGP(DLOOP, LOGL_DEBUG, "Lowest RSSI: %d Target RSSI: %d Current "
"MS power: %d (%d dBm) of trx=%u chan_nr=0x%02x\n", rssi,
- trx_target_rssi, lchan->ms_power_ctrl.current,
+ pinst->phy_link->u.osmotrx.trx_target_rssi, lchan->ms_power_ctrl.current,
MS_PWR_DBM(trx->arfcn, lchan->ms_power_ctrl.current),
trx->nr, chan_nr);
- ms_power_diff(lchan, chan_nr, trx_target_rssi - rssi);
+ ms_power_diff(lchan, chan_nr, pinst->phy_link->u.osmotrx.trx_target_rssi - rssi);
return 0;
}
@@ -172,8 +170,6 @@ static int ms_power_clock(struct gsm_lchan *lchan,
* Timing Advance loop
*/
-int trx_ta_loop = 1;
-
int ta_val(struct gsm_lchan *lchan, uint8_t chan_nr,
struct l1sched_chan_state *chan_state, float toa)
{
@@ -220,11 +216,12 @@ int trx_loop_sacch_input(struct l1sched_trx *l1t, uint8_t chan_nr,
{
struct gsm_lchan *lchan = &l1t->trx->ts[L1SAP_CHAN2TS(chan_nr)]
.lchan[l1sap_chan2ss(chan_nr)];
+ struct phy_instance *pinst = trx_phy_instance(l1t->trx);
- if (trx_ms_power_loop)
+ if (pinst->phy_link->u.osmotrx.trx_ms_power_loop)
ms_power_val(chan_state, rssi);
- if (trx_ta_loop)
+ if (pinst->phy_link->u.osmotrx.trx_ta_loop)
ta_val(lchan, chan_nr, chan_state, toa);
return 0;
@@ -235,8 +232,9 @@ int trx_loop_sacch_clock(struct l1sched_trx *l1t, uint8_t chan_nr,
{
struct gsm_lchan *lchan = &l1t->trx->ts[L1SAP_CHAN2TS(chan_nr)]
.lchan[l1sap_chan2ss(chan_nr)];
+ struct phy_instance *pinst = trx_phy_instance(l1t->trx);
- if (trx_ms_power_loop)
+ if (pinst->phy_link->u.osmotrx.trx_ms_power_loop)
ms_power_clock(lchan, chan_nr, chan_state);
/* count the number of SACCH clocks */
diff --git a/src/osmo-bts-trx/loops.h b/src/osmo-bts-trx/loops.h
index c0458c54..230cd4fa 100644
--- a/src/osmo-bts-trx/loops.h
+++ b/src/osmo-bts-trx/loops.h
@@ -13,10 +13,6 @@
* loops api
*/
-extern int trx_ms_power_loop;
-extern int8_t trx_target_rssi;
-extern int trx_ta_loop;
-
int trx_loop_sacch_input(struct l1sched_trx *l1t, uint8_t chan_nr,
struct l1sched_chan_state *chan_state, int8_t rssi, float toa);
diff --git a/src/osmo-bts-trx/main.c b/src/osmo-bts-trx/main.c
index 283e5498..a1eb686d 100644
--- a/src/osmo-bts-trx/main.c
+++ b/src/osmo-bts-trx/main.c
@@ -122,6 +122,9 @@ void bts_model_phy_link_set_defaults(struct phy_link *plink)
plink->u.osmotrx.base_port_remote = 5700;
plink->u.osmotrx.clock_advance = 20;
plink->u.osmotrx.rts_advance = 5;
+ plink->u.osmotrx.trx_ta_loop = true;
+ plink->u.osmotrx.trx_ms_power_loop = false;
+ plink->u.osmotrx.trx_target_rssi = -10;
}
void bts_model_phy_instance_set_defaults(struct phy_instance *pinst)
diff --git a/src/osmo-bts-trx/trx_vty.c b/src/osmo-bts-trx/trx_vty.c
index 36d75c1d..a7a433be 100644
--- a/src/osmo-bts-trx/trx_vty.c
+++ b/src/osmo-bts-trx/trx_vty.c
@@ -160,39 +160,47 @@ DEFUN(show_phy, show_phy_cmd, "show phy",
return CMD_SUCCESS;
}
-DEFUN(cfg_bts_ms_power_loop, cfg_bts_ms_power_loop_cmd,
- "ms-power-loop <-127-127>",
+DEFUN(cfg_phy_ms_power_loop, cfg_phy_ms_power_loop_cmd,
+ "osmotrx ms-power-loop <-127-127>", OSMOTRX_STR
"Enable MS power control loop\nTarget RSSI value (transceiver specific, "
"should be 6dB or more above noise floor)\n")
{
- trx_ms_power_loop = 1;
- trx_target_rssi = atoi(argv[0]);
+ struct phy_link *plink = vty->index;
+
+ plink->u.osmotrx.trx_target_rssi = atoi(argv[0]);
+ plink->u.osmotrx.trx_ms_power_loop = true;
return CMD_SUCCESS;
}
-DEFUN(cfg_bts_no_ms_power_loop, cfg_bts_no_ms_power_loop_cmd,
- "no ms-power-loop",
- NO_STR "Disable MS power control loop\n")
+DEFUN(cfg_phy_no_ms_power_loop, cfg_phy_no_ms_power_loop_cmd,
+ "no osmotrx ms-power-loop",
+ NO_STR OSMOTRX_STR "Disable MS power control loop\n")
{
- trx_ms_power_loop = 0;
+ struct phy_link *plink = vty->index;
+
+ plink->u.osmotrx.trx_ms_power_loop = false;
return CMD_SUCCESS;
}
-DEFUN(cfg_bts_timing_advance_loop, cfg_bts_timing_advance_loop_cmd,
- "timing-advance-loop",
+DEFUN(cfg_phy_timing_advance_loop, cfg_phy_timing_advance_loop_cmd,
+ "osmotrx timing-advance-loop", OSMOTRX_STR
"Enable timing advance control loop\n")
{
- trx_ta_loop = 1;
+ struct phy_link *plink = vty->index;
+
+ plink->u.osmotrx.trx_ta_loop = true;
return CMD_SUCCESS;
}
-DEFUN(cfg_bts_no_timing_advance_loop, cfg_bts_no_timing_advance_loop_cmd,
- "no timing-advance-loop",
- NO_STR "Disable timing advance control loop\n")
+DEFUN(cfg_phy_no_timing_advance_loop, cfg_phy_no_timing_advance_loop_cmd,
+ "no osmotrx timing-advance-loop",
+ NO_STR OSMOTRX_STR "Disable timing advance control loop\n")
{
- trx_ta_loop = 0;
+ struct phy_link *plink = vty->index;
+
+ plink->u.osmotrx.trx_ta_loop = false;
return CMD_SUCCESS;
}
@@ -490,6 +498,12 @@ void bts_model_config_write_phy(struct vty *vty, struct phy_link *plink)
vty_out(vty, " osmotrx ip remote %s%s",
plink->u.osmotrx.remote_ip, VTY_NEWLINE);
+ if (plink->u.osmotrx.trx_ms_power_loop)
+ vty_out(vty, " osmotrx ms-power-loop %d%s", plink->u.osmotrx.trx_target_rssi, VTY_NEWLINE);
+ else
+ vty_out(vty, " no osmotrx ms-power-loop%s", VTY_NEWLINE);
+ vty_out(vty, " %s osmotrx timing-advance-loop%s", (plink->u.osmotrx.trx_ta_loop) ? "" : "no", VTY_NEWLINE);
+
if (plink->u.osmotrx.base_port_local)
vty_out(vty, " osmotrx base-port local %"PRIu16"%s",
plink->u.osmotrx.base_port_local, VTY_NEWLINE);
@@ -539,13 +553,6 @@ void bts_model_config_write_phy_inst(struct vty *vty, struct phy_instance *pinst
void bts_model_config_write_bts(struct vty *vty, struct gsm_bts *bts)
{
- if (trx_ms_power_loop)
- vty_out(vty, " ms-power-loop %d%s", trx_target_rssi,
- VTY_NEWLINE);
- else
- vty_out(vty, " no ms-power-loop%s", VTY_NEWLINE);
- vty_out(vty, " %stiming-advance-loop%s", (trx_ta_loop) ? "":"no ",
- VTY_NEWLINE);
}
void bts_model_config_write_trx(struct vty *vty, struct gsm_bts_trx *trx)
@@ -559,11 +566,10 @@ int bts_model_vty_init(struct gsm_bts *bts)
install_element_ve(&show_transceiver_cmd);
install_element_ve(&show_phy_cmd);
- install_element(BTS_NODE, &cfg_bts_ms_power_loop_cmd);
- install_element(BTS_NODE, &cfg_bts_no_ms_power_loop_cmd);
- install_element(BTS_NODE, &cfg_bts_timing_advance_loop_cmd);
- install_element(BTS_NODE, &cfg_bts_no_timing_advance_loop_cmd);
-
+ install_element(PHY_NODE, &cfg_phy_ms_power_loop_cmd);
+ install_element(PHY_NODE, &cfg_phy_no_ms_power_loop_cmd);
+ install_element(PHY_NODE, &cfg_phy_timing_advance_loop_cmd);
+ install_element(PHY_NODE, &cfg_phy_no_timing_advance_loop_cmd);
install_element(PHY_NODE, &cfg_phy_base_port_cmd);
install_element(PHY_NODE, &cfg_phy_fn_advance_cmd);
install_element(PHY_NODE, &cfg_phy_rts_advance_cmd);