aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVadim Yanitskiy <vyanitskiy@sysmocom.de>2020-11-01 05:44:23 +0700
committerfixeria <vyanitskiy@sysmocom.de>2020-11-02 18:08:24 +0000
commit5c7b7090271fb5b88e68066bb681ce6cda88dc9f (patch)
tree26807c24d8d5902c265bca4a1167e737d9349e1c
parent484952a3e5e6453510840b2a15fe8f5fe8a7ea65 (diff)
vty: call bts_model_vty_init() from bts_vty_init()
Similar to bts_vty_init(), BTS specific bts_model_vty_init() requires a pointer to 'struct gsm_bts'. Not only it's used as a parent talloc context, but also stored locally, so then it can be used by some VTY commands. Let's expose the global 'struct gsm_bts' from main, and pass the application's talloc context like was done in [1]. This finally makes the BTS model specific options appear in the automatically generated VTY reference (--vty-ref-xml). [1] Ic356a950da85de02c82e9882a5fbadaaa6929680 Change-Id: Iee7fee6747dd1e7c0af36f9b27326f651ae37aaf Related: SYS#4937, OS#3036
-rw-r--r--include/osmo-bts/bts_model.h2
-rw-r--r--include/osmo-bts/vty.h1
-rw-r--r--src/common/main.c25
-rw-r--r--src/common/vty.c3
-rw-r--r--src/osmo-bts-litecell15/lc15bts_vty.c32
-rw-r--r--src/osmo-bts-oc2g/oc2gbts_vty.c34
-rw-r--r--src/osmo-bts-octphy/octphy_vty.c6
-rw-r--r--src/osmo-bts-sysmo/sysmobts_vty.c36
-rw-r--r--src/osmo-bts-trx/trx_vty.c11
-rw-r--r--src/osmo-bts-virtual/virtualbts_vty.c6
10 files changed, 67 insertions, 89 deletions
diff --git a/include/osmo-bts/bts_model.h b/include/osmo-bts/bts_model.h
index 568ff007..ef93fdad 100644
--- a/include/osmo-bts/bts_model.h
+++ b/include/osmo-bts/bts_model.h
@@ -34,7 +34,7 @@ int bts_model_trx_deact_rf(struct gsm_bts_trx *trx);
/* Implementation should call bts_model_trx_close_cb when done */
void bts_model_trx_close(struct gsm_bts_trx *trx);
-int bts_model_vty_init(struct gsm_bts *bts);
+int bts_model_vty_init(void *ctx);
void bts_model_config_write_bts(struct vty *vty, const struct gsm_bts *bts);
void bts_model_config_write_trx(struct vty *vty, const struct gsm_bts_trx *trx);
diff --git a/include/osmo-bts/vty.h b/include/osmo-bts/vty.h
index c9840d11..c815c85a 100644
--- a/include/osmo-bts/vty.h
+++ b/include/osmo-bts/vty.h
@@ -27,6 +27,7 @@ int bts_vty_init(void *ctx);
struct gsm_network *gsmnet_from_vty(struct vty *v);
extern struct vty_app_info bts_vty_info;
+extern struct gsm_bts *g_bts;
enum bts_vty_cmd_attr {
BTS_VTY_ATTR_NEW_LCHAN,
diff --git a/src/common/main.c b/src/common/main.c
index 67aeff37..102bf881 100644
--- a/src/common/main.c
+++ b/src/common/main.c
@@ -211,7 +211,8 @@ static void handle_options(int argc, char **argv)
}
}
-static struct gsm_bts *bts;
+/* FIXME: remove this once we add multi-BTS support */
+struct gsm_bts *g_bts = NULL;
static void signal_handler(int signal)
{
@@ -221,10 +222,10 @@ static void signal_handler(int signal)
case SIGINT:
case SIGTERM:
if (!quit) {
- oml_tx_failure_event_rep(&bts->mo,
+ oml_tx_failure_event_rep(&g_bts->mo,
NM_SEVER_CRITICAL, OSMO_EVT_CRIT_PROC_STOP,
"BTS: SIGINT received -> shutdown");
- bts_shutdown(bts, "SIGINT");
+ bts_shutdown(g_bts, "SIGINT");
}
quit++;
break;
@@ -288,8 +289,8 @@ int bts_main(int argc, char **argv)
handle_options(argc, argv);
- bts = gsm_bts_alloc(tall_bts_ctx, 0);
- if (!bts) {
+ g_bts = gsm_bts_alloc(tall_bts_ctx, 0);
+ if (!g_bts) {
fprintf(stderr, "Failed to create BTS structure\n");
exit(1);
}
@@ -317,12 +318,12 @@ int bts_main(int argc, char **argv)
gsmtap_source_add_sink(gsmtap);
}
- if (bts_init(bts) < 0) {
+ if (bts_init(g_bts) < 0) {
fprintf(stderr, "unable to open bts\n");
exit(1);
}
- abis_init(bts);
+ abis_init(g_bts);
rc = vty_read_config_file(config_file, NULL);
if (rc < 0) {
@@ -336,7 +337,7 @@ int bts_main(int argc, char **argv)
exit(1);
}
- llist_for_each_entry(trx, &bts->trx_list, list) {
+ llist_for_each_entry(trx, &g_bts->trx_list, list) {
if (!trx->role_bts.l1h) {
fprintf(stderr, "TRX %u has no associated PHY instance\n",
trx->nr);
@@ -346,7 +347,7 @@ int bts_main(int argc, char **argv)
write_pid_file("osmo-bts");
- bts_controlif_setup(bts, ctrl_vty_get_bind_addr(), OSMO_CTRL_PORT_BTS);
+ bts_controlif_setup(g_bts, ctrl_vty_get_bind_addr(), OSMO_CTRL_PORT_BTS);
rc = telnet_init_dynif(tall_bts_ctx, NULL, vty_get_bind_addr(),
g_vty_port_num);
@@ -355,7 +356,7 @@ int bts_main(int argc, char **argv)
exit(1);
}
- if (pcu_sock_init(bts->pcu.sock_path)) {
+ if (pcu_sock_init(g_bts->pcu.sock_path)) {
fprintf(stderr, "PCU L1 socket failed\n");
exit(1);
}
@@ -367,12 +368,12 @@ int bts_main(int argc, char **argv)
signal(SIGUSR2, &signal_handler);
osmo_init_ignore_signals();
- if (!bts->bsc_oml_host) {
+ if (!g_bts->bsc_oml_host) {
fprintf(stderr, "Cannot start BTS without knowing BSC OML IP\n");
exit(1);
}
- line = abis_open(bts, bts->bsc_oml_host, "sysmoBTS");
+ line = abis_open(g_bts, g_bts->bsc_oml_host, "sysmoBTS");
if (!line) {
fprintf(stderr, "unable to connect to BSC\n");
exit(2);
diff --git a/src/common/vty.c b/src/common/vty.c
index 7126458c..7baddef7 100644
--- a/src/common/vty.c
+++ b/src/common/vty.c
@@ -1921,5 +1921,6 @@ int bts_vty_init(void *ctx)
install_node(&phy_inst_node, config_write_dummy);
- return 0;
+ /* Install variant-specific VTY options */
+ return bts_model_vty_init(ctx);
}
diff --git a/src/osmo-bts-litecell15/lc15bts_vty.c b/src/osmo-bts-litecell15/lc15bts_vty.c
index 5308d1ad..4a9d7908 100644
--- a/src/osmo-bts-litecell15/lc15bts_vty.c
+++ b/src/osmo-bts-litecell15/lc15bts_vty.c
@@ -69,8 +69,6 @@ extern int rsl_tx_preproc_meas_res(struct gsm_lchan *lchan);
TRX_STR
#define DSP_TRACE_F_STR "DSP Trace Flag\n"
-static struct gsm_bts *vty_bts;
-
static const struct value_string lc15_diversity_mode_strs[] = {
{ LC15_DIVERSITY_SISO_A, "siso-a" },
{ LC15_DIVERSITY_SISO_B, "siso-b" },
@@ -146,7 +144,7 @@ DEFUN(show_dsp_trace_f, show_dsp_trace_f_cmd,
SHOW_TRX_STR "Display the current setting of the DSP trace flags")
{
int trx_nr = atoi(argv[0]);
- struct gsm_bts_trx *trx = gsm_bts_trx_num(vty_bts, trx_nr);
+ struct gsm_bts_trx *trx = gsm_bts_trx_num(g_bts, trx_nr);
struct lc15l1_hdl *fl1h;
int i;
@@ -268,7 +266,7 @@ DEFUN(activate_lchan, activate_lchan_cmd,
int trx_nr = atoi(argv[0]);
int ts_nr = atoi(argv[1]);
int lchan_nr = atoi(argv[3]);
- struct gsm_bts_trx *trx = gsm_bts_trx_num(vty_bts, trx_nr);
+ struct gsm_bts_trx *trx = gsm_bts_trx_num(g_bts, trx_nr);
struct gsm_bts_trx_ts *ts = &trx->ts[ts_nr];
struct gsm_lchan *lchan = &ts->lchan[lchan_nr];
@@ -289,7 +287,7 @@ DEFUN(set_tx_power, set_tx_power_cmd,
{
int trx_nr = atoi(argv[0]);
int power = atoi(argv[1]);
- struct gsm_bts_trx *trx = gsm_bts_trx_num(vty_bts, trx_nr);
+ struct gsm_bts_trx *trx = gsm_bts_trx_num(g_bts, trx_nr);
power_ramp_start(trx, to_mdB(power), 1, NULL);
@@ -306,7 +304,7 @@ DEFUN(loopback, loopback_cmd,
int trx_nr = atoi(argv[0]);
int ts_nr = atoi(argv[1]);
int lchan_nr = atoi(argv[2]);
- struct gsm_bts_trx *trx = gsm_bts_trx_num(vty_bts, trx_nr);
+ struct gsm_bts_trx *trx = gsm_bts_trx_num(g_bts, trx_nr);
struct gsm_bts_trx_ts *ts = &trx->ts[ts_nr];
struct gsm_lchan *lchan = &ts->lchan[lchan_nr];
@@ -325,7 +323,7 @@ DEFUN(no_loopback, no_loopback_cmd,
int trx_nr = atoi(argv[0]);
int ts_nr = atoi(argv[1]);
int lchan_nr = atoi(argv[2]);
- struct gsm_bts_trx *trx = gsm_bts_trx_num(vty_bts, trx_nr);
+ struct gsm_bts_trx *trx = gsm_bts_trx_num(g_bts, trx_nr);
struct gsm_bts_trx_ts *ts = &trx->ts[ts_nr];
struct gsm_lchan *lchan = &ts->lchan[lchan_nr];
@@ -565,39 +563,37 @@ void bts_model_config_write_phy_inst(struct vty *vty, const struct phy_instance
#endif
}
-int bts_model_vty_init(struct gsm_bts *bts)
+int bts_model_vty_init(void *ctx)
{
- vty_bts = bts;
-
/* runtime-patch the command strings with debug levels */
- dsp_trace_f_cmd.string = vty_cmd_string_from_valstr(bts, lc15bts_tracef_names,
+ dsp_trace_f_cmd.string = vty_cmd_string_from_valstr(ctx, lc15bts_tracef_names,
"phy <0-0> dsp-trace-flag (",
"|",")", VTY_DO_LOWER);
- dsp_trace_f_cmd.doc = vty_cmd_string_from_valstr(bts, lc15bts_tracef_docs,
+ dsp_trace_f_cmd.doc = vty_cmd_string_from_valstr(ctx, lc15bts_tracef_docs,
TRX_STR DSP_TRACE_F_STR,
"\n", "", 0);
- no_dsp_trace_f_cmd.string = vty_cmd_string_from_valstr(bts, lc15bts_tracef_names,
+ no_dsp_trace_f_cmd.string = vty_cmd_string_from_valstr(ctx, lc15bts_tracef_names,
"no phy <0-0> dsp-trace-flag (",
"|",")", VTY_DO_LOWER);
- no_dsp_trace_f_cmd.doc = vty_cmd_string_from_valstr(bts, lc15bts_tracef_docs,
+ no_dsp_trace_f_cmd.doc = vty_cmd_string_from_valstr(ctx, lc15bts_tracef_docs,
NO_STR TRX_STR DSP_TRACE_F_STR,
"\n", "", 0);
- cfg_phy_dsp_trace_f_cmd.string = vty_cmd_string_from_valstr(bts,
+ cfg_phy_dsp_trace_f_cmd.string = vty_cmd_string_from_valstr(ctx,
lc15bts_tracef_names,
"dsp-trace-flag (",
"|",")", VTY_DO_LOWER);
- cfg_phy_dsp_trace_f_cmd.doc = vty_cmd_string_from_valstr(bts,
+ cfg_phy_dsp_trace_f_cmd.doc = vty_cmd_string_from_valstr(ctx,
lc15bts_tracef_docs,
DSP_TRACE_F_STR,
"\n", "", 0);
- cfg_phy_no_dsp_trace_f_cmd.string = vty_cmd_string_from_valstr(bts,
+ cfg_phy_no_dsp_trace_f_cmd.string = vty_cmd_string_from_valstr(ctx,
lc15bts_tracef_names,
"no dsp-trace-flag (",
"|",")", VTY_DO_LOWER);
- cfg_phy_no_dsp_trace_f_cmd.doc = vty_cmd_string_from_valstr(bts,
+ cfg_phy_no_dsp_trace_f_cmd.doc = vty_cmd_string_from_valstr(ctx,
lc15bts_tracef_docs,
NO_STR DSP_TRACE_F_STR,
"\n", "", 0);
diff --git a/src/osmo-bts-oc2g/oc2gbts_vty.c b/src/osmo-bts-oc2g/oc2gbts_vty.c
index c12d0bf7..c3b2a314 100644
--- a/src/osmo-bts-oc2g/oc2gbts_vty.c
+++ b/src/osmo-bts-oc2g/oc2gbts_vty.c
@@ -69,8 +69,6 @@ extern int rsl_tx_preproc_meas_res(struct gsm_lchan *lchan);
TRX_STR
#define DSP_TRACE_F_STR "DSP Trace Flag\n"
-static struct gsm_bts *vty_bts;
-
static const struct value_string oc2g_pedestal_mode_strs[] = {
{ OC2G_PEDESTAL_OFF, "off" },
{ OC2G_PEDESTAL_ON, "on" },
@@ -139,7 +137,7 @@ DEFUN(show_dsp_trace_f, show_dsp_trace_f_cmd,
SHOW_TRX_STR "Display the current setting of the DSP trace flags")
{
int trx_nr = atoi(argv[0]);
- struct gsm_bts_trx *trx = gsm_bts_trx_num(vty_bts, trx_nr);
+ struct gsm_bts_trx *trx = gsm_bts_trx_num(g_bts, trx_nr);
struct oc2gl1_hdl *fl1h;
int i;
@@ -261,7 +259,7 @@ DEFUN(activate_lchan, activate_lchan_cmd,
int trx_nr = atoi(argv[0]);
int ts_nr = atoi(argv[1]);
int lchan_nr = atoi(argv[3]);
- struct gsm_bts_trx *trx = gsm_bts_trx_num(vty_bts, trx_nr);
+ struct gsm_bts_trx *trx = gsm_bts_trx_num(g_bts, trx_nr);
struct gsm_bts_trx_ts *ts = &trx->ts[ts_nr];
struct gsm_lchan *lchan = &ts->lchan[lchan_nr];
@@ -282,7 +280,7 @@ DEFUN(set_tx_power, set_tx_power_cmd,
{
int trx_nr = atoi(argv[0]);
int power = atoi(argv[1]);
- struct gsm_bts_trx *trx = gsm_bts_trx_num(vty_bts, trx_nr);
+ struct gsm_bts_trx *trx = gsm_bts_trx_num(g_bts, trx_nr);
power_ramp_start(trx, to_mdB(power), 1, NULL);
@@ -299,7 +297,7 @@ DEFUN(loopback, loopback_cmd,
int trx_nr = atoi(argv[0]);
int ts_nr = atoi(argv[1]);
int lchan_nr = atoi(argv[2]);
- struct gsm_bts_trx *trx = gsm_bts_trx_num(vty_bts, trx_nr);
+ struct gsm_bts_trx *trx = gsm_bts_trx_num(g_bts, trx_nr);
struct gsm_bts_trx_ts *ts = &trx->ts[ts_nr];
struct gsm_lchan *lchan = &ts->lchan[lchan_nr];
@@ -318,7 +316,7 @@ DEFUN(no_loopback, no_loopback_cmd,
int trx_nr = atoi(argv[0]);
int ts_nr = atoi(argv[1]);
int lchan_nr = atoi(argv[2]);
- struct gsm_bts_trx *trx = gsm_bts_trx_num(vty_bts, trx_nr);
+ struct gsm_bts_trx *trx = gsm_bts_trx_num(g_bts, trx_nr);
struct gsm_bts_trx_ts *ts = &trx->ts[ts_nr];
struct gsm_lchan *lchan = &ts->lchan[lchan_nr];
@@ -599,44 +597,42 @@ void bts_model_config_write_phy_inst(struct vty *vty, const struct phy_instance
pinst->u.oc2g.tx_c0_idle_pwr_red, VTY_NEWLINE);
}
-int bts_model_vty_init(struct gsm_bts *bts)
+int bts_model_vty_init(void *ctx)
{
- vty_bts = bts;
-
/* runtime-patch the command strings with debug levels */
- dsp_trace_f_cmd.string = vty_cmd_string_from_valstr(bts, oc2gbts_tracef_names,
+ dsp_trace_f_cmd.string = vty_cmd_string_from_valstr(ctx, oc2gbts_tracef_names,
"phy <0-1> dsp-trace-flag (",
"|",")", VTY_DO_LOWER);
- dsp_trace_f_cmd.doc = vty_cmd_string_from_valstr(bts, oc2gbts_tracef_docs,
+ dsp_trace_f_cmd.doc = vty_cmd_string_from_valstr(ctx, oc2gbts_tracef_docs,
TRX_STR DSP_TRACE_F_STR,
"\n", "", 0);
- no_dsp_trace_f_cmd.string = vty_cmd_string_from_valstr(bts, oc2gbts_tracef_names,
+ no_dsp_trace_f_cmd.string = vty_cmd_string_from_valstr(ctx, oc2gbts_tracef_names,
"no phy <0-1> dsp-trace-flag (",
"|",")", VTY_DO_LOWER);
- no_dsp_trace_f_cmd.doc = vty_cmd_string_from_valstr(bts, oc2gbts_tracef_docs,
+ no_dsp_trace_f_cmd.doc = vty_cmd_string_from_valstr(ctx, oc2gbts_tracef_docs,
NO_STR TRX_STR DSP_TRACE_F_STR,
"\n", "", 0);
- cfg_phy_dsp_trace_f_cmd.string = vty_cmd_string_from_valstr(bts,
+ cfg_phy_dsp_trace_f_cmd.string = vty_cmd_string_from_valstr(ctx,
oc2gbts_tracef_names,
"dsp-trace-flag (",
"|",")", VTY_DO_LOWER);
- cfg_phy_dsp_trace_f_cmd.doc = vty_cmd_string_from_valstr(bts,
+ cfg_phy_dsp_trace_f_cmd.doc = vty_cmd_string_from_valstr(ctx,
oc2gbts_tracef_docs,
DSP_TRACE_F_STR,
"\n", "", 0);
- cfg_phy_no_dsp_trace_f_cmd.string = vty_cmd_string_from_valstr(bts,
+ cfg_phy_no_dsp_trace_f_cmd.string = vty_cmd_string_from_valstr(ctx,
oc2gbts_tracef_names,
"no dsp-trace-flag (",
"|",")", VTY_DO_LOWER);
- cfg_phy_no_dsp_trace_f_cmd.doc = vty_cmd_string_from_valstr(bts,
+ cfg_phy_no_dsp_trace_f_cmd.doc = vty_cmd_string_from_valstr(ctx,
oc2gbts_tracef_docs,
NO_STR DSP_TRACE_F_STR,
"\n", "", 0);
- trigger_ho_cause_cmd.string = vty_cmd_string_from_valstr(bts,
+ trigger_ho_cause_cmd.string = vty_cmd_string_from_valstr(ctx,
oc2gbts_rsl_ho_causes,
"trigger-ho-cause trx <0-1> ts <0-7> lchan <0-1> cause (",
"|",")", VTY_DO_LOWER);
diff --git a/src/osmo-bts-octphy/octphy_vty.c b/src/osmo-bts-octphy/octphy_vty.c
index 8b263fdf..308252bb 100644
--- a/src/osmo-bts-octphy/octphy_vty.c
+++ b/src/osmo-bts-octphy/octphy_vty.c
@@ -54,8 +54,6 @@
#define OCT_STR "OCTPHY Um interface\n"
-static struct gsm_bts *vty_bts;
-
/* configuration */
DEFUN(cfg_phy_hwaddr, cfg_phy_hwaddr_cmd,
@@ -437,10 +435,8 @@ DEFUN(show_sys_info, show_sys_info_cmd,
}
-int bts_model_vty_init(struct gsm_bts *bts)
+int bts_model_vty_init(void *ctx)
{
- vty_bts = bts;
-
install_element(PHY_NODE, &cfg_phy_hwaddr_cmd);
install_element(PHY_NODE, &cfg_phy_netdev_cmd);
install_element(PHY_NODE, &cfg_phy_rf_port_idx_cmd);
diff --git a/src/osmo-bts-sysmo/sysmobts_vty.c b/src/osmo-bts-sysmo/sysmobts_vty.c
index b6130317..f5758843 100644
--- a/src/osmo-bts-sysmo/sysmobts_vty.c
+++ b/src/osmo-bts-sysmo/sysmobts_vty.c
@@ -60,8 +60,6 @@ extern int lchan_activate(struct gsm_lchan *lchan);
TRX_STR
#define DSP_TRACE_F_STR "DSP Trace Flag\n"
-static struct gsm_bts *vty_bts;
-
/* configuration */
DEFUN(cfg_phy_clkcal_eeprom, cfg_phy_clkcal_eeprom_cmd,
@@ -221,7 +219,7 @@ DEFUN(show_dsp_trace_f, show_dsp_trace_f_cmd,
SHOW_TRX_STR "Display the current setting of the DSP trace flags")
{
int trx_nr = atoi(argv[0]);
- struct gsm_bts_trx *trx = gsm_bts_trx_num(vty_bts, trx_nr);
+ struct gsm_bts_trx *trx = gsm_bts_trx_num(g_bts, trx_nr);
struct femtol1_hdl *fl1h;
int i;
@@ -341,7 +339,7 @@ DEFUN(activate_lchan, activate_lchan_cmd,
int trx_nr = atoi(argv[0]);
int ts_nr = atoi(argv[1]);
int lchan_nr = atoi(argv[3]);
- struct gsm_bts_trx *trx = gsm_bts_trx_num(vty_bts, trx_nr);
+ struct gsm_bts_trx *trx = gsm_bts_trx_num(g_bts, trx_nr);
struct gsm_bts_trx_ts *ts = &trx->ts[ts_nr];
struct gsm_lchan *lchan = &ts->lchan[lchan_nr];
@@ -361,7 +359,7 @@ DEFUN(set_tx_power, set_tx_power_cmd,
{
int trx_nr = atoi(argv[0]);
int power = atoi(argv[1]);
- struct gsm_bts_trx *trx = gsm_bts_trx_num(vty_bts, trx_nr);
+ struct gsm_bts_trx *trx = gsm_bts_trx_num(g_bts, trx_nr);
power_ramp_start(trx, to_mdB(power), 1, NULL);
@@ -374,7 +372,7 @@ DEFUN(reset_rf_clock_ctr, reset_rf_clock_ctr_cmd,
"RF Clock Information\n" "Reset the counter\n")
{
int trx_nr = atoi(argv[0]);
- struct gsm_bts_trx *trx = gsm_bts_trx_num(vty_bts, trx_nr);
+ struct gsm_bts_trx *trx = gsm_bts_trx_num(g_bts, trx_nr);
struct femtol1_hdl *fl1h = trx_femtol1_hdl(trx);
l1if_rf_clock_info_reset(fl1h);
@@ -387,7 +385,7 @@ DEFUN(correct_rf_clock_ctr, correct_rf_clock_ctr_cmd,
"RF Clock Information\n" "Apply\n")
{
int trx_nr = atoi(argv[0]);
- struct gsm_bts_trx *trx = gsm_bts_trx_num(vty_bts, trx_nr);
+ struct gsm_bts_trx *trx = gsm_bts_trx_num(g_bts, trx_nr);
struct femtol1_hdl *fl1h = trx_femtol1_hdl(trx);
l1if_rf_clock_info_correct(fl1h);
@@ -404,7 +402,7 @@ DEFUN(loopback, loopback_cmd,
int trx_nr = atoi(argv[0]);
int ts_nr = atoi(argv[1]);
int lchan_nr = atoi(argv[2]);
- struct gsm_bts_trx *trx = gsm_bts_trx_num(vty_bts, trx_nr);
+ struct gsm_bts_trx *trx = gsm_bts_trx_num(g_bts, trx_nr);
struct gsm_bts_trx_ts *ts = &trx->ts[ts_nr];
struct gsm_lchan *lchan = &ts->lchan[lchan_nr];
@@ -423,7 +421,7 @@ DEFUN(no_loopback, no_loopback_cmd,
int trx_nr = atoi(argv[0]);
int ts_nr = atoi(argv[1]);
int lchan_nr = atoi(argv[2]);
- struct gsm_bts_trx *trx = gsm_bts_trx_num(vty_bts, trx_nr);
+ struct gsm_bts_trx *trx = gsm_bts_trx_num(g_bts, trx_nr);
struct gsm_bts_trx_ts *ts = &trx->ts[ts_nr];
struct gsm_lchan *lchan = &ts->lchan[lchan_nr];
@@ -475,39 +473,37 @@ void bts_model_config_write_phy_inst(struct vty *vty, const struct phy_instance
pinst->u.sysmobts.clk_src), VTY_NEWLINE);
}
-int bts_model_vty_init(struct gsm_bts *bts)
+int bts_model_vty_init(void *ctx)
{
- vty_bts = bts;
-
/* runtime-patch the command strings with debug levels */
- dsp_trace_f_cmd.string = vty_cmd_string_from_valstr(bts, femtobts_tracef_names,
+ dsp_trace_f_cmd.string = vty_cmd_string_from_valstr(ctx, femtobts_tracef_names,
"trx <0-0> dsp-trace-flag (",
"|",")", VTY_DO_LOWER);
- dsp_trace_f_cmd.doc = vty_cmd_string_from_valstr(bts, femtobts_tracef_docs,
+ dsp_trace_f_cmd.doc = vty_cmd_string_from_valstr(ctx, femtobts_tracef_docs,
TRX_STR DSP_TRACE_F_STR,
"\n", "", 0);
- no_dsp_trace_f_cmd.string = vty_cmd_string_from_valstr(bts, femtobts_tracef_names,
+ no_dsp_trace_f_cmd.string = vty_cmd_string_from_valstr(ctx, femtobts_tracef_names,
"no trx <0-0> dsp-trace-flag (",
"|",")", VTY_DO_LOWER);
- no_dsp_trace_f_cmd.doc = vty_cmd_string_from_valstr(bts, femtobts_tracef_docs,
+ no_dsp_trace_f_cmd.doc = vty_cmd_string_from_valstr(ctx, femtobts_tracef_docs,
NO_STR TRX_STR DSP_TRACE_F_STR,
"\n", "", 0);
cfg_phy_dsp_trace_f_cmd.string =
- vty_cmd_string_from_valstr(bts, femtobts_tracef_names,
+ vty_cmd_string_from_valstr(ctx, femtobts_tracef_names,
"dsp-trace-flag (", "|", ")",
VTY_DO_LOWER);
cfg_phy_dsp_trace_f_cmd.doc =
- vty_cmd_string_from_valstr(bts, femtobts_tracef_docs,
+ vty_cmd_string_from_valstr(ctx, femtobts_tracef_docs,
DSP_TRACE_F_STR, "\n", "", 0);
cfg_phy_no_dsp_trace_f_cmd.string =
- vty_cmd_string_from_valstr(bts, femtobts_tracef_names,
+ vty_cmd_string_from_valstr(ctx, femtobts_tracef_names,
"no dsp-trace-flag (", "|", ")",
VTY_DO_LOWER);
cfg_phy_no_dsp_trace_f_cmd.doc =
- vty_cmd_string_from_valstr(bts, femtobts_tracef_docs,
+ vty_cmd_string_from_valstr(ctx, femtobts_tracef_docs,
NO_STR DSP_TRACE_F_STR, "\n",
"", 0);
diff --git a/src/osmo-bts-trx/trx_vty.c b/src/osmo-bts-trx/trx_vty.c
index 6dc28f62..ceca3309 100644
--- a/src/osmo-bts-trx/trx_vty.c
+++ b/src/osmo-bts-trx/trx_vty.c
@@ -52,16 +52,13 @@
#define OSMOTRX_STR "OsmoTRX Transceiver configuration\n"
-static struct gsm_bts *vty_bts;
-
DEFUN(show_transceiver, show_transceiver_cmd, "show transceiver",
SHOW_STR "Display information about transceivers\n")
{
- struct gsm_bts *bts = vty_bts;
struct gsm_bts_trx *trx;
struct trx_l1h *l1h;
- llist_for_each_entry(trx, &bts->trx_list, list) {
+ llist_for_each_entry(trx, &g_bts->trx_list, list) {
struct phy_instance *pinst = trx_phy_instance(trx);
struct phy_link *plink = pinst->phy_link;
char *sname = osmo_sock_get_name(NULL, plink->u.osmotrx.trx_ofd_clk.fd);
@@ -201,7 +198,7 @@ DEFUN_DEPRECATED(cfg_phy_ms_power_loop, cfg_phy_ms_power_loop_cmd,
{
vty_out (vty, "'osmotrx ms-power-loop' is deprecated, use 'uplink-power-target' instead%s", VTY_NEWLINE);
- vty_bts->ul_power_target = atoi(argv[0]);
+ g_bts->ul_power_target = atoi(argv[0]);
return CMD_SUCCESS;
}
@@ -599,10 +596,8 @@ void bts_model_config_write_trx(struct vty *vty, const struct gsm_bts_trx *trx)
VTY_NEWLINE);
}
-int bts_model_vty_init(struct gsm_bts *bts)
+int bts_model_vty_init(void *ctx)
{
- vty_bts = bts;
-
install_element_ve(&show_transceiver_cmd);
install_element_ve(&show_phy_cmd);
diff --git a/src/osmo-bts-virtual/virtualbts_vty.c b/src/osmo-bts-virtual/virtualbts_vty.c
index 9d632421..3933bd27 100644
--- a/src/osmo-bts-virtual/virtualbts_vty.c
+++ b/src/osmo-bts-virtual/virtualbts_vty.c
@@ -50,8 +50,6 @@
SHOW_STR \
TRX_STR
-static struct gsm_bts *vty_bts;
-
void bts_model_config_write_bts(struct vty *vty, const struct gsm_bts *bts)
{
}
@@ -191,10 +189,8 @@ DEFUN(cfg_phy_mcast_ttl, cfg_phy_mcast_ttl_cmd,
return CMD_SUCCESS;
}
-int bts_model_vty_init(struct gsm_bts *bts)
+int bts_model_vty_init(void *ctx)
{
- vty_bts = bts;
-
install_element(PHY_NODE, &cfg_phy_ms_mcast_group_cmd);
install_element(PHY_NODE, &cfg_phy_ms_mcast_port_cmd);
install_element(PHY_NODE, &cfg_phy_bts_mcast_group_cmd);