[PATCH] osmo-bts[master]: LC15: Enable to bypass LED control by the BTS via configurat...

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/.

Minh-Quang Nguyen gerrit-no-reply at lists.osmocom.org
Tue Jun 14 15:23:06 UTC 2016


Hello Jenkins Builder,

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

    https://gerrit.osmocom.org/240

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

LC15: Enable to bypass LED control by the BTS via configuration file

Change-Id: I17639bfffa2429d70eb254427812260ec8802ef6
---
M include/osmo-bts/gsm_data.h
M src/osmo-bts-litecell15/l1_if.c
M src/osmo-bts-litecell15/lc15bts.h
M src/osmo-bts-litecell15/lc15bts_vty.c
M src/osmo-bts-litecell15/main.c
5 files changed, 48 insertions(+), 5 deletions(-)


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

diff --git a/include/osmo-bts/gsm_data.h b/include/osmo-bts/gsm_data.h
index 6bbbd5f..101cbfc 100644
--- a/include/osmo-bts/gsm_data.h
+++ b/include/osmo-bts/gsm_data.h
@@ -116,6 +116,7 @@
 	uint8_t max_cell_size;		/* 166 qbits */
 	uint8_t diversity_mode;		/* 0: SISO A, 1: SISO B, 2: MRC */
 	uint8_t pedestal_mode;		/* 0: unused TS is OFF, 1: unused TS is in minimum Tx power */
+	uint8_t led_ctrl_mode;		/* 0: control by BTS, 1: not control by BTS */
 	uint8_t tx_pwr_adj_mode;	/* 0: no auto adjust power, 1: auto adjust power using RMS detector */
 	uint8_t tx_pwr_red_8psk;	/* 8-PSK maximum Tx power reduction level in dB */
 #endif
diff --git a/src/osmo-bts-litecell15/l1_if.c b/src/osmo-bts-litecell15/l1_if.c
index e94db84..0f10fcb 100644
--- a/src/osmo-bts-litecell15/l1_if.c
+++ b/src/osmo-bts-litecell15/l1_if.c
@@ -1046,6 +1046,8 @@
 	GsmL1_Status_t status;
 	int on = 0;
 	unsigned int i;
+	struct gsm_bts *bts = trx->bts;
+	struct gsm_bts_role_bts *btsb = bts_role_bts(bts);
 
 	if (sysp->id == Litecell15_PrimId_ActivateRfCnf)
 		on = 1;
@@ -1064,8 +1066,10 @@
 			LOGP(DL1C, LOGL_FATAL, "RF-ACT.conf with status %s\n",
 				get_value_string(lc15bts_l1status_names, status));
 			bts_shutdown(trx->bts, "RF-ACT failure");
-		} else
-			bts_update_status(BTS_STATUS_RF_ACTIVE, 1);
+		} else {
+			if(btsb->led_ctrl_mode == LC15_LED_CONTROL_BTS)
+				bts_update_status(BTS_STATUS_RF_ACTIVE, 1);
+		}
 
 		/* signal availability */
 		oml_mo_state_chg(&trx->mo, NM_OPSTATE_DISABLED, NM_AVSTATE_OK);
@@ -1076,8 +1080,8 @@
 		for (i = 0; i < ARRAY_SIZE(trx->ts); i++)
 			oml_mo_state_chg(&trx->ts[i].mo, NM_OPSTATE_DISABLED, NM_AVSTATE_DEPENDENCY);
 	} else {
-		bts_update_status(BTS_STATUS_RF_ACTIVE, 0);
-
+		if(btsb->led_ctrl_mode == LC15_LED_CONTROL_BTS)
+			bts_update_status(BTS_STATUS_RF_ACTIVE, 0);
 		oml_mo_state_chg(&trx->mo, NM_OPSTATE_DISABLED, NM_AVSTATE_OFF_LINE);
 		oml_mo_state_chg(&trx->bb_transc.mo, NM_OPSTATE_DISABLED, NM_AVSTATE_OFF_LINE);
 	}
@@ -1162,10 +1166,13 @@
 		oml_mo_rf_lock_chg(&trx->mo, fl1h->last_rf_mute, 0);
 	} else {
 		int i;
+		struct gsm_bts *bts = trx->bts;
+		struct gsm_bts_role_bts *btsb = bts_role_bts(bts);
 
 		LOGP(DL1C, LOGL_INFO, "Rx RF-MUTE.conf with status=%s\n",
 		     get_value_string(lc15bts_l1status_names, status));
-		bts_update_status(BTS_STATUS_RF_MUTE, fl1h->last_rf_mute[0]);
+		if(btsb->led_ctrl_mode == LC15_LED_CONTROL_BTS)
+			bts_update_status(BTS_STATUS_RF_MUTE, fl1h->last_rf_mute[0]);
 		oml_mo_rf_lock_chg(&trx->mo, fl1h->last_rf_mute, 1);
 
 		osmo_static_assert(
diff --git a/src/osmo-bts-litecell15/lc15bts.h b/src/osmo-bts-litecell15/lc15bts.h
index f6a7e3f..4822893 100644
--- a/src/osmo-bts-litecell15/lc15bts.h
+++ b/src/osmo-bts-litecell15/lc15bts.h
@@ -33,6 +33,11 @@
 	LC15_PEDESTAL_ON,
 };
 
+enum lc15_led_control_mode{
+	LC15_LED_CONTROL_BTS = 0,
+	LC15_LED_CONTROL_EXT,
+};
+
 enum lc15_auto_pwr_adjust_mode{
 	LC15_TX_PWR_ADJ_NONE = 0,
 	LC15_TX_PWR_ADJ_AUTO,
@@ -81,6 +86,7 @@
 #define GSM_BTS_MAX_CELL_SIZE_DEFAULT	166	/* 166 qbits is default  value */
 #define GSM_BTS_DIVERSITY_MODE_DEFAULT	2	/* MRC is default mode */
 #define GSM_BTS_PEDESTAL_MODE_DEFAULT	0	/* Unused TS is off by default */
+#define GSM_BTS_LED_CTRL_MODE_DEFAULT	0	/* LED is controlled by BTS by default */
 #define GSM_BTS_TX_PWR_ADJ_DEFAULT	0	/* Default Tx power auto adjustment is none */
 #define GSM_BTS_TX_RED_PWR_8PSK_DEFAULT	0	/* Default 8-PSK maximum power level is 0 dB */
 
diff --git a/src/osmo-bts-litecell15/lc15bts_vty.c b/src/osmo-bts-litecell15/lc15bts_vty.c
index fcace3f..7762a57 100644
--- a/src/osmo-bts-litecell15/lc15bts_vty.c
+++ b/src/osmo-bts-litecell15/lc15bts_vty.c
@@ -78,6 +78,12 @@
 	{ 0, NULL }
 };
 
+static const struct value_string lc15_led_mode_strs[] = {
+	{ LC15_LED_CONTROL_BTS, "bts" },
+	{ LC15_LED_CONTROL_EXT, "external" },
+	{ 0, NULL }
+};
+
 static const struct value_string lc15_auto_adj_pwr_strs[] = {
 	{ LC15_TX_PWR_ADJ_NONE, "none" },
 	{ LC15_TX_PWR_ADJ_AUTO, "auto" },
@@ -404,6 +410,24 @@
 	return CMD_SUCCESS;
 }
 
+DEFUN(cfg_bts_led_mode, cfg_bts_led_mode_cmd,
+		"led-control-mode (bts|external)",
+		"Set LED controlled by BTS or external software\n"
+		"LED can be controlled by (bts, external)\n")
+{
+	struct gsm_bts *bts = vty->index;
+	struct gsm_bts_role_bts *btsb = bts_role_bts(bts);
+	int val = get_string_value(lc15_led_mode_strs, argv[0]);
+
+	if((val < LC15_LED_CONTROL_BTS)  || (val > LC15_LED_CONTROL_EXT)) {
+			vty_out(vty, "Invalid LED control mode %d%s", val, VTY_NEWLINE);
+			return CMD_WARNING;
+	}
+
+	btsb->led_ctrl_mode = (uint8_t)val;
+	return CMD_SUCCESS;
+}
+
 DEFUN(cfg_bts_auto_tx_pwr_adj, cfg_bts_auto_tx_pwr_adj_cmd,
 	"pwr-adj-mode (none|auto)",
 	"Set output power adjustment mode\n")
@@ -451,6 +475,9 @@
 
 	vty_out(vty, " pedestal-mode %s%s",
 			get_value_string(lc15_pedestal_mode_strs, btsb->pedestal_mode) , VTY_NEWLINE);
+
+	vty_out(vty, " led-control-mode %s%s",
+			get_value_string(lc15_led_mode_strs, btsb->led_ctrl_mode), VTY_NEWLINE);
 
 	vty_out(vty, " pwr-adj-mode %s%s",
 			get_value_string(lc15_auto_adj_pwr_strs, btsb->tx_pwr_adj_mode), VTY_NEWLINE);
@@ -542,6 +569,7 @@
 	install_element(BTS_NODE, &cfg_bts_no_auto_band_cmd);
 	install_element(BTS_NODE, &cfg_bts_diversity_mode_cmd);
 	install_element(BTS_NODE, &cfg_bts_pedestal_mode_cmd);
+	install_element(BTS_NODE, &cfg_bts_led_mode_cmd);
 	install_element(BTS_NODE, &cfg_bts_max_cell_size_cmd);
 	install_element(BTS_NODE, &cfg_bts_auto_tx_pwr_adj_cmd);
 	install_element(BTS_NODE, &cfg_bts_tx_red_pwr_8psk_cmd);
diff --git a/src/osmo-bts-litecell15/main.c b/src/osmo-bts-litecell15/main.c
index b2f0f77..b172c5c 100644
--- a/src/osmo-bts-litecell15/main.c
+++ b/src/osmo-bts-litecell15/main.c
@@ -74,6 +74,7 @@
 	btsb->support.ciphers = CIPHER_A5(1) | CIPHER_A5(2) | CIPHER_A5(3);
 	/* specific default values for LC15 platform */
 	btsb->max_cell_size = GSM_BTS_MAX_CELL_SIZE_DEFAULT;
+	btsb->led_ctrl_mode = GSM_BTS_LED_CTRL_MODE_DEFAULT;
 	btsb->diversity_mode = GSM_BTS_DIVERSITY_MODE_DEFAULT;
 	btsb->pedestal_mode = GSM_BTS_PEDESTAL_MODE_DEFAULT;
 	btsb->tx_pwr_adj_mode = GSM_BTS_TX_PWR_ADJ_DEFAULT;

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

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I17639bfffa2429d70eb254427812260ec8802ef6
Gerrit-PatchSet: 2
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Owner: Minh-Quang Nguyen <minh-quang.nguyen at nutaq.com>
Gerrit-Reviewer: Jenkins Builder



More information about the gerrit-log mailing list