[PATCH] osmo-bts[master]: vty: Add commands to manually activate/deactivate a channel.

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

Alexander Chemeris gerrit-no-reply at lists.osmocom.org
Tue Nov 15 21:02:05 UTC 2016


Hello Neels Hofmeyr, Jenkins Builder,

I'd like you to reexamine a change.  Please visit

    https://gerrit.osmocom.org/1247

to look at the new patch set (#2).

vty: Add commands to manually activate/deactivate a channel.

This is the easiest way I found to make BTS level loopback to work.
Another way to implement this is to have BSC/NITB to send the OML command, but
it's a longer path with no clear benefits.

Note, that the current code hardcodes the channel to be TCH/F with v1 speech,
which is what we need for the basic BER testing. We may want to extend this
later to support more channel types.

Change-Id: Ia2734afeff023e5b3d6b934c7e8b1ed95a071b72
---
M src/common/vty.c
1 file changed, 60 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/47/1247/2

diff --git a/src/common/vty.c b/src/common/vty.c
index b4aa616..85c67a2 100644
--- a/src/common/vty.c
+++ b/src/common/vty.c
@@ -1055,6 +1055,64 @@
 	return CMD_SUCCESS;
 }
 
+DEFUN(bts_t_t_l_activate,
+	bts_t_t_l_activate_cmd,
+	"bts <0-0> trx <0-0> ts <0-7> lchan <0-1> activate",
+	BTS_T_T_L_STR "Manually activate a logical channel (FOR TEST USE ONLY! Will disrupt normal operation of the channel)\n")
+{
+	struct gsm_network *net = gsmnet_from_vty(vty);
+	struct gsm_lchan *lchan;
+	int rc;
+
+	lchan = resolve_lchan(net, argv, 0);
+	if (!lchan) {
+		vty_out(vty, "%% can't find BTS%s", VTY_NEWLINE);
+		return CMD_WARNING;
+	}
+
+	/* set channel configuration */
+	/* TODO: let user choose speech mode */
+	lchan->tch_mode = GSM48_CMODE_SPEECH_V1;
+	lchan->rsl_cmode = RSL_CMOD_SPD_SPEECH;
+	/* no encryption */
+	memset(&lchan->encr, 0, sizeof(lchan->encr));
+
+	/* activate the channel */
+	lchan->rel_act_kind = LCHAN_REL_ACT_OML;
+	rc = l1sap_chan_act(lchan->ts->trx, gsm_lchan2chan_nr(lchan), NULL);
+	if (rc < 0) {
+		vty_out(vty, "%% can't activate channel%s", VTY_NEWLINE);
+		return CMD_WARNING;
+	}
+
+	return CMD_SUCCESS;
+}
+
+DEFUN(bts_t_t_l_deactivate,
+	bts_t_t_l_deactivate_cmd,
+	"bts <0-0> trx <0-0> ts <0-7> lchan <0-1> deactivate",
+	BTS_T_T_L_STR "Deactivate a manually activated channel (DO NOT apply to channels activated by BSC or NITB)\n")
+{
+	struct gsm_network *net = gsmnet_from_vty(vty);
+	struct gsm_lchan *lchan;
+	int rc;
+
+	lchan = resolve_lchan(net, argv, 0);
+	if (!lchan) {
+		vty_out(vty, "%% can't find BTS%s", VTY_NEWLINE);
+		return CMD_WARNING;
+	}
+
+	/* deactivate the channel */
+	rc = l1sap_chan_rel(lchan->ts->trx, gsm_lchan2chan_nr(lchan));
+	if (rc < 0) {
+		vty_out(vty, "%% can't deactivate channel%s", VTY_NEWLINE);
+		return CMD_WARNING;
+	}
+
+	return CMD_SUCCESS;
+}
+
 int bts_vty_init(struct gsm_bts *bts, const struct log_info *cat)
 {
 	cfg_trx_gsmtap_sapi_cmd.string = vty_cmd_string_from_valstr(bts, gsmtap_sapi_names,
@@ -1113,6 +1171,8 @@
 	install_element(ENABLE_NODE, &bts_t_t_l_jitter_buf_cmd);
 	install_element(ENABLE_NODE, &bts_t_t_l_loopback_cmd);
 	install_element(ENABLE_NODE, &no_bts_t_t_l_loopback_cmd);
+	install_element(ENABLE_NODE, &bts_t_t_l_activate_cmd);
+	install_element(ENABLE_NODE, &bts_t_t_l_deactivate_cmd);
 
 	install_element(CONFIG_NODE, &cfg_phy_cmd);
 	install_node(&phy_node, config_write_phy);

-- 
To view, visit https://gerrit.osmocom.org/1247
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: Ia2734afeff023e5b3d6b934c7e8b1ed95a071b72
Gerrit-PatchSet: 2
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Owner: Alexander Chemeris <Alexander.Chemeris at gmail.com>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Neels Hofmeyr <nhofmeyr at sysmocom.de>



More information about the gerrit-log mailing list