diff options
author | Matan Perelman <matan1008@gmail.com> | 2024-01-30 16:08:32 +0200 |
---|---|---|
committer | matanp <matan1008@gmail.com> | 2024-02-08 20:30:51 +0000 |
commit | 6b6714ba1397e53f070073d67841547dcedf5af0 (patch) | |
tree | 35d9bbc3d19ffa6917af4fccfddebfe89bd0cdc6 | |
parent | 88c051447ae7edb50b5b5b7c829648223c4b512b (diff) |
ctrl: Split bts_trx_ts_ctrl from bts_trx_ctrl
Besides from making the ts ctrl interface follow the convention
of being in its own file, it will be used in the next patch to add
a ctrl interface for lchan.
Change-Id: I9840bddd4eae409bc8373912d54b6bbfc9fc1c1a
-rw-r--r-- | include/osmocom/bsc/ctrl.h | 1 | ||||
-rw-r--r-- | src/osmo-bsc/Makefile.am | 1 | ||||
-rw-r--r-- | src/osmo-bsc/bts_trx_ctrl.c | 98 | ||||
-rw-r--r-- | src/osmo-bsc/bts_trx_ts_ctrl.c | 106 |
4 files changed, 108 insertions, 98 deletions
diff --git a/include/osmocom/bsc/ctrl.h b/include/osmocom/bsc/ctrl.h index 86d1bdae4..0d6c8a0e8 100644 --- a/include/osmocom/bsc/ctrl.h +++ b/include/osmocom/bsc/ctrl.h @@ -11,6 +11,7 @@ struct ctrl_handle *bsc_controlif_setup(struct gsm_network *net, uint16_t port); /* Used internally in different ctrl source code files: */ int bsc_bts_ctrl_cmds_install(void); int bsc_bts_trx_ctrl_cmds_install(void); +int bsc_bts_trx_ts_ctrl_cmds_install(void); void ctrl_generate_bts_location_state_trap(struct gsm_bts *bts, struct bsc_msc_data *msc); void osmo_bsc_send_trap(struct ctrl_cmd *cmd, struct bsc_msc_data *msc_data); diff --git a/src/osmo-bsc/Makefile.am b/src/osmo-bsc/Makefile.am index 661188ec9..e577c95dd 100644 --- a/src/osmo-bsc/Makefile.am +++ b/src/osmo-bsc/Makefile.am @@ -46,6 +46,7 @@ libbsc_la_SOURCES = \ bts.c \ bts_trx.c \ bts_trx_ctrl.c \ + bts_trx_ts_ctrl.c \ bts_ericsson_rbs2000.c \ bts_init.c \ bts_ipaccess_nanobts.c \ diff --git a/src/osmo-bsc/bts_trx_ctrl.c b/src/osmo-bsc/bts_trx_ctrl.c index 258203c72..d5e8f5a83 100644 --- a/src/osmo-bsc/bts_trx_ctrl.c +++ b/src/osmo-bsc/bts_trx_ctrl.c @@ -19,109 +19,11 @@ * */ -#include <errno.h> -#include <time.h> - #include <osmocom/ctrl/control_cmd.h> #include <osmocom/bsc/ctrl.h> -#include <osmocom/bsc/osmo_bsc_rf.h> #include <osmocom/bsc/bts.h> -#include <osmocom/bsc/ipaccess.h> -#include <osmocom/bsc/chan_alloc.h> #include <osmocom/bsc/abis_nm.h> -#include <osmocom/bsc/neighbor_ident.h> -#include <osmocom/bsc/system_information.h> - -/********************* - * TS_NODE - *********************/ - -static int verify_ts_hopping_arfcn_add(struct ctrl_cmd *cmd, const char *value, void *_data) -{ - int64_t arfcn; - enum gsm_band unused; - if (osmo_str_to_int64(&arfcn, value, 10, 0, 1024) < 0) - return 1; - if (gsm_arfcn2band_rc(arfcn, &unused) < 0) { - return 1; - } - return 0; -} -static int set_ts_hopping_arfcn_add(struct ctrl_cmd *cmd, void *data) -{ - struct gsm_bts_trx_ts *ts = cmd->node; - int arfcn = atoi(cmd->value); - - bitvec_set_bit_pos(&ts->hopping.arfcns, arfcn, ONE); - - /* Update Cell Allocation (list of all the frequencies allocated to a cell) */ - if (generate_cell_chan_alloc(ts->trx->bts) != 0) { - bitvec_set_bit_pos(&ts->hopping.arfcns, arfcn, ZERO); /* roll-back */ - cmd->reply = "Failed to re-generate Cell Allocation"; - return CTRL_CMD_ERROR; - } - - cmd->reply = "OK"; - return CTRL_CMD_REPLY; -} -/* Parameter format: "<arfcn>" */ -CTRL_CMD_DEFINE_WO(ts_hopping_arfcn_add, "hopping-arfcn-add"); - -static int verify_ts_hopping_arfcn_del(struct ctrl_cmd *cmd, const char *value, void *_data) -{ - int64_t arfcn; - enum gsm_band unused; - if (strcmp(value, "all") == 0) - return 0; - if (osmo_str_to_int64(&arfcn, value, 10, 0, 1024) < 0) - return 1; - if (gsm_arfcn2band_rc(arfcn, &unused) < 0) { - return 1; - } - return 0; -} -static int set_ts_hopping_arfcn_del(struct ctrl_cmd *cmd, void *data) -{ - struct gsm_bts_trx_ts *ts = cmd->node; - bool all = (strcmp(cmd->value, "all") == 0); - int arfcn; - - if (all) { - bitvec_zero(&ts->hopping.arfcns); - } else { - arfcn = atoi(cmd->value); - bitvec_set_bit_pos(&ts->hopping.arfcns, arfcn, ZERO); - } - - /* Update Cell Allocation (list of all the frequencies allocated to a cell) */ - if (generate_cell_chan_alloc(ts->trx->bts) != 0) { - if (!all) - bitvec_set_bit_pos(&ts->hopping.arfcns, arfcn, ONE); /* roll-back */ - cmd->reply = "Failed to re-generate Cell Allocation"; - return CTRL_CMD_ERROR; - } - - cmd->reply = "OK"; - return CTRL_CMD_REPLY; -} -/* Parameter format: "(<arfcn>|all)" */ -CTRL_CMD_DEFINE_WO(ts_hopping_arfcn_del, "hopping-arfcn-del"); - - -static int bsc_bts_trx_ts_ctrl_cmds_install(void) -{ - int rc = 0; - - rc |= ctrl_cmd_install(CTRL_NODE_TS, &cmd_ts_hopping_arfcn_add); - rc |= ctrl_cmd_install(CTRL_NODE_TS, &cmd_ts_hopping_arfcn_del); - - return rc; -} - -/********************* - * TRX_NODE - *********************/ static int get_trx_rf_locked(struct ctrl_cmd *cmd, void *data) { diff --git a/src/osmo-bsc/bts_trx_ts_ctrl.c b/src/osmo-bsc/bts_trx_ts_ctrl.c new file mode 100644 index 000000000..dc8aaf42e --- /dev/null +++ b/src/osmo-bsc/bts_trx_ts_ctrl.c @@ -0,0 +1,106 @@ +/* + * (C) 2013-2015 by Holger Hans Peter Freyther + * (C) 2013-2022 by sysmocom s.f.m.c. GmbH + * + * All Rights Reserved + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +#include <osmocom/ctrl/control_cmd.h> + +#include <osmocom/bsc/ctrl.h> +#include <osmocom/bsc/bts.h> +#include <osmocom/bsc/system_information.h> + +static int verify_ts_hopping_arfcn_add(struct ctrl_cmd *cmd, const char *value, void *_data) +{ + int64_t arfcn; + enum gsm_band unused; + if (osmo_str_to_int64(&arfcn, value, 10, 0, 1024) < 0) + return 1; + if (gsm_arfcn2band_rc(arfcn, &unused) < 0) + return 1; + return 0; +} +static int set_ts_hopping_arfcn_add(struct ctrl_cmd *cmd, void *data) +{ + struct gsm_bts_trx_ts *ts = cmd->node; + int arfcn = atoi(cmd->value); + + bitvec_set_bit_pos(&ts->hopping.arfcns, arfcn, ONE); + + /* Update Cell Allocation (list of all the frequencies allocated to a cell) */ + if (generate_cell_chan_alloc(ts->trx->bts) != 0) { + bitvec_set_bit_pos(&ts->hopping.arfcns, arfcn, ZERO); /* roll-back */ + cmd->reply = "Failed to re-generate Cell Allocation"; + return CTRL_CMD_ERROR; + } + + cmd->reply = "OK"; + return CTRL_CMD_REPLY; +} +/* Parameter format: "<arfcn>" */ +CTRL_CMD_DEFINE_WO(ts_hopping_arfcn_add, "hopping-arfcn-add"); + +static int verify_ts_hopping_arfcn_del(struct ctrl_cmd *cmd, const char *value, void *_data) +{ + int64_t arfcn; + enum gsm_band unused; + if (strcmp(value, "all") == 0) + return 0; + if (osmo_str_to_int64(&arfcn, value, 10, 0, 1024) < 0) + return 1; + if (gsm_arfcn2band_rc(arfcn, &unused) < 0) + return 1; + return 0; +} +static int set_ts_hopping_arfcn_del(struct ctrl_cmd *cmd, void *data) +{ + struct gsm_bts_trx_ts *ts = cmd->node; + bool all = (strcmp(cmd->value, "all") == 0); + int arfcn; + + if (all) { + bitvec_zero(&ts->hopping.arfcns); + } else { + arfcn = atoi(cmd->value); + bitvec_set_bit_pos(&ts->hopping.arfcns, arfcn, ZERO); + } + + /* Update Cell Allocation (list of all the frequencies allocated to a cell) */ + if (generate_cell_chan_alloc(ts->trx->bts) != 0) { + if (!all) + bitvec_set_bit_pos(&ts->hopping.arfcns, arfcn, ONE); /* roll-back */ + cmd->reply = "Failed to re-generate Cell Allocation"; + return CTRL_CMD_ERROR; + } + + cmd->reply = "OK"; + return CTRL_CMD_REPLY; +} +/* Parameter format: "(<arfcn>|all)" */ +CTRL_CMD_DEFINE_WO(ts_hopping_arfcn_del, "hopping-arfcn-del"); + + +int bsc_bts_trx_ts_ctrl_cmds_install(void) +{ + int rc = 0; + + rc |= ctrl_cmd_install(CTRL_NODE_TS, &cmd_ts_hopping_arfcn_add); + rc |= ctrl_cmd_install(CTRL_NODE_TS, &cmd_ts_hopping_arfcn_del); + + return rc; +} |