From 56e1766dba1a03e304e51d079e65406542e7887c Mon Sep 17 00:00:00 2001 From: Sipos Csaba Date: Sat, 7 Feb 2015 13:27:36 +0100 Subject: nokia: Allow to set the reset time for the nokia bts --- openbsc/include/openbsc/gsm_data_shared.h | 1 + openbsc/src/libbsc/bsc_vty.c | 21 +++++++++++++++++++++ openbsc/src/libbsc/bts_nokia_site.c | 6 ++---- openbsc/src/libcommon/gsm_data.c | 2 ++ 4 files changed, 26 insertions(+), 4 deletions(-) (limited to 'openbsc') diff --git a/openbsc/include/openbsc/gsm_data_shared.h b/openbsc/include/openbsc/gsm_data_shared.h index 0f1d8ec66..86bf557ad 100644 --- a/openbsc/include/openbsc/gsm_data_shared.h +++ b/openbsc/include/openbsc/gsm_data_shared.h @@ -651,6 +651,7 @@ struct gsm_bts { unsigned int configured:1, skip_reset:1, no_loc_rel_cnf:1, + bts_reset_timer_cnf, did_reset:1, wait_reset:1; struct osmo_timer_list reset_timer; diff --git a/openbsc/src/libbsc/bsc_vty.c b/openbsc/src/libbsc/bsc_vty.c index 588be267f..af30f390c 100644 --- a/openbsc/src/libbsc/bsc_vty.c +++ b/openbsc/src/libbsc/bsc_vty.c @@ -605,6 +605,7 @@ static void config_write_bts_single(struct vty *vty, struct gsm_bts *bts) vty_out(vty, " nokia_site skip-reset %d%s", bts->nokia.skip_reset, VTY_NEWLINE); vty_out(vty, " nokia_site no-local-rel-conf %d%s", bts->nokia.no_loc_rel_cnf, VTY_NEWLINE); + vty_out(vty, " nokia_site bts-reset-timer %d%s", bts->nokia.bts_reset_timer_cnf, VTY_NEWLINE); /* fall through: Nokia requires "oml e1" parameters also */ default: config_write_e1_link(vty, &bts->oml_e1_link, " oml "); @@ -1837,6 +1838,25 @@ DEFUN(cfg_bts_nokia_site_no_loc_rel_cnf, return CMD_SUCCESS; } +DEFUN(cfg_bts_nokia_site_bts_reset_timer_cnf, + cfg_bts_nokia_site_bts_reset_timer_cnf_cmd, + "nokia_site bts-reset-timer <15-100>", + NOKIA_STR + "The amount of time (in sec.) between BTS_RESET is sent,\n" + "and the BTS is being bootstrapped.\n") +{ + struct gsm_bts *bts = vty->index; + + if (!is_nokia_bts(bts)) { + vty_out(vty, "%% BTS is not of Nokia *Site type%s", + VTY_NEWLINE); + return CMD_WARNING; + } + + bts->nokia.bts_reset_timer_cnf = atoi(argv[0]); + + return CMD_SUCCESS; +} #define OML_STR "Organization & Maintenance Link\n" #define IPA_STR "A-bis/IP Specific Options\n" @@ -3420,6 +3440,7 @@ int bsc_vty_init(const struct log_info *cat) install_element(BTS_NODE, &cfg_bts_no_timezone_cmd); install_element(BTS_NODE, &cfg_bts_nokia_site_skip_reset_cmd); install_element(BTS_NODE, &cfg_bts_nokia_site_no_loc_rel_cnf_cmd); + install_element(BTS_NODE, &cfg_bts_nokia_site_bts_reset_timer_cnf_cmd); install_element(BTS_NODE, &cfg_bts_stream_id_cmd); install_element(BTS_NODE, &cfg_bts_oml_e1_cmd); install_element(BTS_NODE, &cfg_bts_oml_e1_tei_cmd); diff --git a/openbsc/src/libbsc/bts_nokia_site.c b/openbsc/src/libbsc/bts_nokia_site.c index 376a04889..32a885c0c 100644 --- a/openbsc/src/libbsc/bts_nokia_site.c +++ b/openbsc/src/libbsc/bts_nokia_site.c @@ -42,8 +42,6 @@ /* TODO: put in a separate file ? */ -#define RESET_INTERVAL 15, 0 /* 15 seconds */ - extern int abis_nm_sendmsg(struct gsm_bts *bts, struct msgb *msg); /* was static in system_information.c */ extern int generate_cell_chan_list(uint8_t * chan_list, struct gsm_bts *bts); @@ -1147,7 +1145,7 @@ static int abis_nm_reset(struct gsm_bts *bts, uint16_t ref) { uint8_t *data = reset; int len_data = sizeof(reset); - + LOGP(DLINP, LOGL_INFO, "Nokia BTS reset timer: %d\n", bts->nokia.bts_reset_timer_cnf); return abis_nm_send(bts, NOKIA_MSG_RESET_REQ, ref, data, len_data); } @@ -1564,7 +1562,7 @@ static int abis_nm_rcvmsg_fom(struct msgb *mb) bts->nokia.reset_timer.cb = &reset_timer_cb; bts->nokia.reset_timer.data = bts; - osmo_timer_schedule(&bts->nokia.reset_timer, RESET_INTERVAL); + osmo_timer_schedule(&bts->nokia.reset_timer, bts->nokia.bts_reset_timer_cnf, 0); struct gsm_e1_subslot *e1_link = &bts->oml_e1_link; struct e1inp_line *line; diff --git a/openbsc/src/libcommon/gsm_data.c b/openbsc/src/libcommon/gsm_data.c index ef98f7d0b..5fd3ad37c 100644 --- a/openbsc/src/libcommon/gsm_data.c +++ b/openbsc/src/libcommon/gsm_data.c @@ -284,6 +284,8 @@ int gsm_set_bts_type(struct gsm_bts *bts, enum gsm_bts_type type) case GSM_BTS_TYPE_BS11: case GSM_BTS_TYPE_UNKNOWN: case GSM_BTS_TYPE_NOKIA_SITE: + /* Set default BTS reset timer */ + bts->nokia.bts_reset_timer_cnf = 15; case _NUM_GSM_BTS_TYPE: break; } -- cgit v1.2.3