diff options
author | Vadim Yanitskiy <vyanitskiy@sysmocom.de> | 2020-11-01 05:44:23 +0700 |
---|---|---|
committer | fixeria <vyanitskiy@sysmocom.de> | 2020-11-02 18:08:24 +0000 |
commit | 5c7b7090271fb5b88e68066bb681ce6cda88dc9f (patch) | |
tree | 26807c24d8d5902c265bca4a1167e737d9349e1c | |
parent | 484952a3e5e6453510840b2a15fe8f5fe8a7ea65 (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.h | 2 | ||||
-rw-r--r-- | include/osmo-bts/vty.h | 1 | ||||
-rw-r--r-- | src/common/main.c | 25 | ||||
-rw-r--r-- | src/common/vty.c | 3 | ||||
-rw-r--r-- | src/osmo-bts-litecell15/lc15bts_vty.c | 32 | ||||
-rw-r--r-- | src/osmo-bts-oc2g/oc2gbts_vty.c | 34 | ||||
-rw-r--r-- | src/osmo-bts-octphy/octphy_vty.c | 6 | ||||
-rw-r--r-- | src/osmo-bts-sysmo/sysmobts_vty.c | 36 | ||||
-rw-r--r-- | src/osmo-bts-trx/trx_vty.c | 11 | ||||
-rw-r--r-- | src/osmo-bts-virtual/virtualbts_vty.c | 6 |
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); |