gsm_bts: add version and variant details

* add version string to gsm_bts
* add PCU version string to gsm_bts
* rename GSM_BTS_TYPE_OSMO_SYSMO -> GSM_BTS_OSMOBTS to avoid confusion
  between BTS model and variant
* add variant enum to gsm_bts_model using enum with variants for each
  hw vendor of OsmoBTS
* show connected PCU version (if available) in vty via 'show bts'

This will come in handy when logging details regarding particular BTS
reported via OML, see:

Related: OS#1614

Change-Id: I6710d53115f34634a7b70969cc05fd5c72ff8ab2
diff --git a/openbsc/src/libbsc/abis_nm.c b/openbsc/src/libbsc/abis_nm.c
index 651ca02..56b6fcf 100644
--- a/openbsc/src/libbsc/abis_nm.c
+++ b/openbsc/src/libbsc/abis_nm.c
@@ -738,7 +738,7 @@
 
 	switch (bts_type) {
 	case GSM_BTS_TYPE_NANOBTS:
-	case GSM_BTS_TYPE_OSMO_SYSMO:
+	case GSM_BTS_TYPE_OSMOBTS:
 		rc = abis_nm_rx_ipacc(mb);
 		abis_nm_queue_send_next(sign_link->trx->bts);
 		break;
@@ -1723,7 +1723,7 @@
 		}
 		*reason = "Unknown combination";
 		return -EINVAL;
-	case GSM_BTS_TYPE_OSMO_SYSMO:
+	case GSM_BTS_TYPE_OSMOBTS:
 		/* no known restrictions */
 		return 0;
 	default:
diff --git a/openbsc/src/libbsc/bsc_vty.c b/openbsc/src/libbsc/bsc_vty.c
index 66b30cd..c1882fc 100644
--- a/openbsc/src/libbsc/bsc_vty.c
+++ b/openbsc/src/libbsc/bsc_vty.c
@@ -245,6 +245,9 @@
 		bts->num_trx, VTY_NEWLINE);
 	vty_out(vty, "Description: %s%s",
 		bts->description ? bts->description : "(null)", VTY_NEWLINE);
+	if (strnlen(bts->pcu_version, MAX_VERSION_LENGTH))
+		vty_out(vty, "PCU version %s connected%s", bts->pcu_version,
+			VTY_NEWLINE);
 	vty_out(vty, "MS Max power: %u dBm%s", bts->ms_max_power, VTY_NEWLINE);
 	vty_out(vty, "Minimum Rx Level for Access: %i dBm%s",
 		rxlev2dbm(bts->si_common.cell_sel_par.rxlev_acc_min),
@@ -649,7 +652,7 @@
 		bts->early_classmark_allowed ? "allowed" : "forbidden", VTY_NEWLINE);
 	switch (bts->type) {
 	case GSM_BTS_TYPE_NANOBTS:
-	case GSM_BTS_TYPE_OSMO_SYSMO:
+	case GSM_BTS_TYPE_OSMOBTS:
 		vty_out(vty, "  ip.access unit_id %u %u%s",
 			bts->ip_access.site_id, bts->ip_access.bts_id, VTY_NEWLINE);
 		if (bts->ip_access.rsl_ip) {
diff --git a/openbsc/src/libbsc/bts_sysmobts.c b/openbsc/src/libbsc/bts_sysmobts.c
index e1bf661..e4b6cdc 100644
--- a/openbsc/src/libbsc/bts_sysmobts.c
+++ b/openbsc/src/libbsc/bts_sysmobts.c
@@ -46,7 +46,7 @@
 {
 	model_sysmobts = bts_model_nanobts;
 	model_sysmobts.name = "sysmobts";
-	model_sysmobts.type = GSM_BTS_TYPE_OSMO_SYSMO;
+	model_sysmobts.type = GSM_BTS_TYPE_OSMOBTS;
 
 	model_sysmobts.features.data = &model_sysmobts._features_data[0];
 	model_sysmobts.features.data_len =
diff --git a/openbsc/src/libbsc/e1_config.c b/openbsc/src/libbsc/e1_config.c
index 8910d21..d57dec5 100644
--- a/openbsc/src/libbsc/e1_config.c
+++ b/openbsc/src/libbsc/e1_config.c
@@ -179,7 +179,7 @@
 
 	/* skip signal link initialization, this is done later for these BTS. */
 	if (bts->type == GSM_BTS_TYPE_NANOBTS ||
-	    bts->type == GSM_BTS_TYPE_OSMO_SYSMO)
+	    bts->type == GSM_BTS_TYPE_OSMOBTS)
 		return e1inp_line_update(line);
 
 	/* OML link */
diff --git a/openbsc/src/libbsc/system_information.c b/openbsc/src/libbsc/system_information.c
index a2dd827..2610331 100644
--- a/openbsc/src/libbsc/system_information.c
+++ b/openbsc/src/libbsc/system_information.c
@@ -830,7 +830,7 @@
 	/* ip.access nanoBTS needs l2_plen!! */
 	switch (bts->type) {
 	case GSM_BTS_TYPE_NANOBTS:
-	case GSM_BTS_TYPE_OSMO_SYSMO:
+	case GSM_BTS_TYPE_OSMOBTS:
 		*output++ = GSM48_LEN2PLEN(l2_plen);
 		l2_plen++;
 		break;
@@ -865,7 +865,7 @@
 	/* ip.access nanoBTS needs l2_plen!! */
 	switch (bts->type) {
 	case GSM_BTS_TYPE_NANOBTS:
-	case GSM_BTS_TYPE_OSMO_SYSMO:
+	case GSM_BTS_TYPE_OSMOBTS:
 		*output++ = GSM48_LEN2PLEN(l2_plen);
 		l2_plen++;
 		break;
@@ -909,7 +909,7 @@
 	/* ip.access nanoBTS needs l2_plen!! */
 	switch (bts->type) {
 	case GSM_BTS_TYPE_NANOBTS:
-	case GSM_BTS_TYPE_OSMO_SYSMO:
+	case GSM_BTS_TYPE_OSMOBTS:
 		*output++ = GSM48_LEN2PLEN(l2_plen);
 		l2_plen++;
 		break;
@@ -946,7 +946,7 @@
 	/* ip.access nanoBTS needs l2_plen!! */
 	switch (bts->type) {
 	case GSM_BTS_TYPE_NANOBTS:
-	case GSM_BTS_TYPE_OSMO_SYSMO:
+	case GSM_BTS_TYPE_OSMOBTS:
 		*output++ = GSM48_LEN2PLEN(l2_plen);
 		l2_plen++;
 		break;