add stubs for enable/configure terminal/bts/trx/ts commands in VTY interface
This commit is contained in:
parent
f5025b6bae
commit
5258fc4974
|
@ -44,6 +44,8 @@ Boston, MA 02111-1307, USA. */
|
||||||
#include <vty/command.h>
|
#include <vty/command.h>
|
||||||
//#include "workqueue.h"
|
//#include "workqueue.h"
|
||||||
|
|
||||||
|
#include <openbsc/gsm_data.h>
|
||||||
|
|
||||||
/* Command vector which includes some level of command lists. Normally
|
/* Command vector which includes some level of command lists. Normally
|
||||||
each daemon maintains each own cmdvec. */
|
each daemon maintains each own cmdvec. */
|
||||||
vector cmdvec;
|
vector cmdvec;
|
||||||
|
@ -2292,12 +2294,23 @@ DEFUN(config_exit,
|
||||||
switch (vty->node) {
|
switch (vty->node) {
|
||||||
case BTS_NODE:
|
case BTS_NODE:
|
||||||
vty->node = VIEW_NODE;
|
vty->node = VIEW_NODE;
|
||||||
|
vty->index = NULL;
|
||||||
break;
|
break;
|
||||||
case TRX_NODE:
|
case TRX_NODE:
|
||||||
vty->node = BTS_NODE;
|
vty->node = BTS_NODE;
|
||||||
|
{
|
||||||
|
/* set vty->index correctly ! */
|
||||||
|
struct gsm_bts_trx *trx = vty->index;
|
||||||
|
vty->index = trx->bts;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case TS_NODE:
|
case TS_NODE:
|
||||||
vty->node = TRX_NODE;
|
vty->node = TRX_NODE;
|
||||||
|
{
|
||||||
|
/* set vty->index correctly ! */
|
||||||
|
struct gsm_bts_trx_ts *ts = vty->index;
|
||||||
|
vty->index = ts->trx;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case VIEW_NODE:
|
case VIEW_NODE:
|
||||||
case ENABLE_NODE:
|
case ENABLE_NODE:
|
||||||
|
|
|
@ -549,6 +549,148 @@ DEFUN(show_paging,
|
||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* per-BTS configuration */
|
||||||
|
DEFUN(cfg_bts,
|
||||||
|
cfg_bts_cmd,
|
||||||
|
"bts BTS_NR",
|
||||||
|
"Select a BTS to configure\n")
|
||||||
|
{
|
||||||
|
int bts_nr = atoi(argv[0]);
|
||||||
|
struct gsm_bts *bts;
|
||||||
|
|
||||||
|
if (bts_nr >= GSM_MAX_BTS) {
|
||||||
|
vty_out(vty, "%% This Version of OpenBSC only supports %u BTS%s",
|
||||||
|
GSM_MAX_BTS, VTY_NEWLINE);
|
||||||
|
return CMD_WARNING;
|
||||||
|
}
|
||||||
|
bts = &gsmnet->bts[bts_nr];
|
||||||
|
if (bts_nr >= gsmnet->num_bts)
|
||||||
|
gsmnet->num_bts = bts_nr + 1;
|
||||||
|
|
||||||
|
vty->index = bts;
|
||||||
|
vty->node = BTS_NODE;
|
||||||
|
|
||||||
|
return CMD_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
DEFUN(cfg_bts_type,
|
||||||
|
cfg_bts_type_cmd,
|
||||||
|
"type TYPE",
|
||||||
|
"Set the BTS type\n")
|
||||||
|
{
|
||||||
|
struct gsm_bts *bts = vty->index;
|
||||||
|
|
||||||
|
//bts->type =
|
||||||
|
return CMD_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
DEFUN(cfg_bts_lac,
|
||||||
|
cfg_bts_lac_cmd,
|
||||||
|
"location_area_code <0-255>",
|
||||||
|
"Set the Location Area Code (LAC) of this BTS\n")
|
||||||
|
{
|
||||||
|
struct gsm_bts *bts = vty->index;
|
||||||
|
int lac = atoi(argv[0]);
|
||||||
|
|
||||||
|
if (lac < 0 || lac > 0xff) {
|
||||||
|
vty_out(vty, "%% LAC %d is not in the valid range (0-255)%s",
|
||||||
|
lac, VTY_NEWLINE);
|
||||||
|
return CMD_WARNING;
|
||||||
|
}
|
||||||
|
bts->location_area_code = lac;
|
||||||
|
|
||||||
|
return CMD_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
DEFUN(cfg_bts_tsc,
|
||||||
|
cfg_bts_tsc_cmd,
|
||||||
|
"training_sequence_code <0-255>",
|
||||||
|
"Set the Training Sequence Code (TSC) of this BTS\n")
|
||||||
|
{
|
||||||
|
struct gsm_bts *bts = vty->index;
|
||||||
|
int tsc = atoi(argv[0]);
|
||||||
|
|
||||||
|
if (tsc < 0 || tsc > 0xff) {
|
||||||
|
vty_out(vty, "%% TSC %d is not in the valid range (0-255)%s",
|
||||||
|
tsc, VTY_NEWLINE);
|
||||||
|
return CMD_WARNING;
|
||||||
|
}
|
||||||
|
bts->tsc = tsc;
|
||||||
|
|
||||||
|
return CMD_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* per TRX configuration */
|
||||||
|
DEFUN(cfg_trx,
|
||||||
|
cfg_trx_cmd,
|
||||||
|
"trx TRX_NR",
|
||||||
|
"Select a TRX to configure")
|
||||||
|
{
|
||||||
|
int trx_nr = atoi(argv[0]);
|
||||||
|
struct gsm_bts *bts = vty->index;
|
||||||
|
struct gsm_bts_trx *trx;
|
||||||
|
|
||||||
|
if (trx_nr > BTS_MAX_TRX) {
|
||||||
|
vty_out(vty, "%% This version of OpenBSC only supports %u TRX%s",
|
||||||
|
BTS_MAX_TRX+1, VTY_NEWLINE);
|
||||||
|
return CMD_WARNING;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (trx_nr >= bts->num_trx)
|
||||||
|
bts->num_trx = trx_nr+1;
|
||||||
|
|
||||||
|
trx = &bts->trx[trx_nr];
|
||||||
|
|
||||||
|
vty->index = trx;
|
||||||
|
vty->node = TRX_NODE;
|
||||||
|
|
||||||
|
return CMD_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
DEFUN(cfg_trx_arfcn,
|
||||||
|
cfg_trx_arfcn_cmd,
|
||||||
|
"arfcn <1-1024>",
|
||||||
|
"Set the ARFCN for this TRX\n")
|
||||||
|
{
|
||||||
|
int arfcn = atoi(argv[0]);
|
||||||
|
struct gsm_bts_trx *trx = vty->index;
|
||||||
|
|
||||||
|
/* FIXME: check if this ARFCN is supported by this TRX */
|
||||||
|
|
||||||
|
trx->arfcn = arfcn;
|
||||||
|
|
||||||
|
/* FIXME: patch ARFCN into SYSTEM INFORMATION */
|
||||||
|
/* FIXME: use OML layer to update the ARFCN */
|
||||||
|
/* FIXME: use RSL layer to update SYSTEM INFORMATION */
|
||||||
|
|
||||||
|
return CMD_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* per TS configuration */
|
||||||
|
DEFUN(cfg_ts,
|
||||||
|
cfg_ts_cmd,
|
||||||
|
"timeslot TS_NR",
|
||||||
|
"Select a Timeslot to configure")
|
||||||
|
{
|
||||||
|
int ts_nr = atoi(argv[0]);
|
||||||
|
struct gsm_bts_trx *trx = vty->index;
|
||||||
|
struct gsm_bts_trx_ts *ts;
|
||||||
|
|
||||||
|
if (ts_nr >= TRX_NR_TS) {
|
||||||
|
vty_out(vty, "%% A GSM TRX only has %u Timeslots per TRX%s",
|
||||||
|
TRX_NR_TS, VTY_NEWLINE);
|
||||||
|
return CMD_WARNING;
|
||||||
|
}
|
||||||
|
|
||||||
|
ts = &trx->ts[ts_nr];
|
||||||
|
|
||||||
|
vty->index = ts;
|
||||||
|
vty->node = TS_NODE;
|
||||||
|
|
||||||
|
return CMD_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int bsc_vty_init(struct gsm_network *net)
|
int bsc_vty_init(struct gsm_network *net)
|
||||||
{
|
{
|
||||||
gsmnet = net;
|
gsmnet = net;
|
||||||
|
@ -567,19 +709,22 @@ int bsc_vty_init(struct gsm_network *net)
|
||||||
install_element(VIEW_NODE, &show_e1ts_cmd);
|
install_element(VIEW_NODE, &show_e1ts_cmd);
|
||||||
|
|
||||||
install_element(VIEW_NODE, &show_paging_cmd);
|
install_element(VIEW_NODE, &show_paging_cmd);
|
||||||
#if 0
|
|
||||||
|
install_element(CONFIG_NODE, &cfg_bts_cmd);
|
||||||
install_node(&bts_node, dummy_config_write);
|
install_node(&bts_node, dummy_config_write);
|
||||||
install_element(BTS_NODE, &show_bts_cmd);
|
|
||||||
install_default(BTS_NODE);
|
install_default(BTS_NODE);
|
||||||
|
install_element(BTS_NODE, &cfg_bts_type_cmd);
|
||||||
|
install_element(BTS_NODE, &cfg_bts_lac_cmd);
|
||||||
|
install_element(BTS_NODE, &cfg_bts_tsc_cmd);
|
||||||
|
|
||||||
|
install_element(BTS_NODE, &cfg_trx_cmd);
|
||||||
install_node(&trx_node, dummy_config_write);
|
install_node(&trx_node, dummy_config_write);
|
||||||
install_element(TRX_NODE, &show_trx_cmd);
|
|
||||||
install_default(TRX_NODE);
|
install_default(TRX_NODE);
|
||||||
|
install_element(TRX_NODE, &cfg_trx_arfcn_cmd);
|
||||||
|
|
||||||
|
install_element(TRX_NODE, &cfg_ts_cmd);
|
||||||
install_node(&ts_node, dummy_config_write);
|
install_node(&ts_node, dummy_config_write);
|
||||||
install_element(TS_NODE, &show_ts_cmd);
|
|
||||||
install_default(TS_NODE);
|
install_default(TS_NODE);
|
||||||
#endif
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue