Change in osmo-bts[master]: Move nm_state and Mo related code gsm_data.* => oml.*

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

pespin gerrit-no-reply at lists.osmocom.org
Fri Jul 3 14:41:57 UTC 2020


pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-bts/+/19122 )


Change subject: Move nm_state and Mo related code gsm_data.* => oml.*
......................................................................

Move nm_state and Mo related code gsm_data.* => oml.*

Change-Id: I57ea9c4ddbe5443b9b6afe3f8e6b38170d0e5a0e
---
M include/osmo-bts/gsm_data.h
M include/osmo-bts/oml.h
M src/common/gsm_data.c
M src/common/oml.c
4 files changed, 168 insertions(+), 175 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/22/19122/1

diff --git a/include/osmo-bts/gsm_data.h b/include/osmo-bts/gsm_data.h
index 97f5cde..2e8ff46 100644
--- a/include/osmo-bts/gsm_data.h
+++ b/include/osmo-bts/gsm_data.h
@@ -28,6 +28,7 @@
 
 #include <osmo-bts/paging.h>
 #include <osmo-bts/tx_power.h>
+#include <osmo-bts/oml.h>
 
 #define GSM_FR_BITS	260
 #define GSM_EFR_BITS	244
@@ -81,30 +82,6 @@
 struct pcu_sock_state;
 struct smscb_msg;
 
-/* Network Management State */
-struct gsm_nm_state {
-	enum abis_nm_op_state operational;
-	enum abis_nm_adm_state administrative;
-	enum abis_nm_avail_state availability;
-};
-
-struct gsm_abis_mo {
-	/* A-bis OML Object Class */
-	uint8_t obj_class;
-	/* is there still some procedure pending? */
-	uint8_t procedure_pending;
-	/* A-bis OML Object Instance */
-	struct abis_om_obj_inst obj_inst;
-	/* human-readable name */
-	const char *name;
-	/* NM State */
-	struct gsm_nm_state nm_state;
-	/* Attributes configured in this MO */
-	struct tlv_parsed *nm_attr;
-	/* BTS to which this MO belongs */
-	struct gsm_bts *bts;
-};
-
 #define MAX_A5_KEY_LEN	(128/8)
 #define RSL_ENC_ALG_A5(x)	(x+1)
 
@@ -762,19 +739,6 @@
 	return lchan->name;
 }
 
-void gsm_abis_mo_reset(struct gsm_abis_mo *mo);
-
-struct gsm_abis_mo *
-gsm_objclass2mo(struct gsm_bts *bts, uint8_t obj_class,
-	    const struct abis_om_obj_inst *obj_inst);
-
-struct gsm_nm_state *
-gsm_objclass2nmstate(struct gsm_bts *bts, uint8_t obj_class,
-		 const struct abis_om_obj_inst *obj_inst);
-void *
-gsm_objclass2obj(struct gsm_bts *bts, uint8_t obj_class,
-	     const struct abis_om_obj_inst *obj_inst);
-
 uint8_t gsm_lchan2chan_nr(const struct gsm_lchan *lchan);
 uint8_t gsm_lchan_as_pchan2chan_nr(const struct gsm_lchan *lchan,
 				   enum gsm_phys_chan_config as_pchan);
diff --git a/include/osmo-bts/oml.h b/include/osmo-bts/oml.h
index b92a974..484e210 100644
--- a/include/osmo-bts/oml.h
+++ b/include/osmo-bts/oml.h
@@ -8,6 +8,29 @@
 struct msgb;
 struct gsm_lchan;
 
+/* Network Management State */
+struct gsm_nm_state {
+	enum abis_nm_op_state operational;
+	enum abis_nm_adm_state administrative;
+	enum abis_nm_avail_state availability;
+};
+
+struct gsm_abis_mo {
+	/* A-bis OML Object Class */
+	uint8_t obj_class;
+	/* is there still some procedure pending? */
+	uint8_t procedure_pending;
+	/* A-bis OML Object Instance */
+	struct abis_om_obj_inst obj_inst;
+	/* human-readable name */
+	const char *name;
+	/* NM State */
+	struct gsm_nm_state nm_state;
+	/* Attributes configured in this MO */
+	struct tlv_parsed *nm_attr;
+	/* BTS to which this MO belongs */
+	struct gsm_bts *bts;
+};
 
 int oml_init(struct gsm_abis_mo *mo);
 int down_oml(struct gsm_bts *bts, struct msgb *msg);
@@ -46,4 +69,15 @@
 int oml_tx_failure_event_rep(const struct gsm_abis_mo *mo, enum abis_nm_severity severity,
 			     uint16_t cause_value, const char *fmt, ...);
 
+void gsm_mo_init(struct gsm_abis_mo *mo, struct gsm_bts *bts,
+		 uint8_t obj_class, uint8_t p1, uint8_t p2, uint8_t p3);
+
+struct gsm_abis_mo *gsm_objclass2mo(struct gsm_bts *bts, uint8_t obj_class,
+				    const struct abis_om_obj_inst *obj_inst);
+
+struct gsm_nm_state *gsm_objclass2nmstate(struct gsm_bts *bts, uint8_t obj_class,
+					  const struct abis_om_obj_inst *obj_inst);
+void *gsm_objclass2obj(struct gsm_bts *bts, uint8_t obj_class,
+		       const struct abis_om_obj_inst *obj_inst);
+
 #endif // _OML_H */
diff --git a/src/common/gsm_data.c b/src/common/gsm_data.c
index 7239440..57f33ae 100644
--- a/src/common/gsm_data.c
+++ b/src/common/gsm_data.c
@@ -54,24 +54,6 @@
 	{}
 };
 
-void gsm_abis_mo_reset(struct gsm_abis_mo *mo)
-{
-	mo->nm_state.operational = NM_OPSTATE_NULL;
-	mo->nm_state.availability = NM_AVSTATE_POWER_OFF;
-	mo->nm_state.administrative = NM_STATE_LOCKED;
-}
-
-static void gsm_mo_init(struct gsm_abis_mo *mo, struct gsm_bts *bts,
-			uint8_t obj_class, uint8_t p1, uint8_t p2, uint8_t p3)
-{
-	mo->bts = bts;
-	mo->obj_class = obj_class;
-	mo->obj_inst.bts_nr = p1;
-	mo->obj_inst.trx_nr = p2;
-	mo->obj_inst.ts_nr = p3;
-	gsm_abis_mo_reset(mo);
-}
-
 const struct value_string bts_attribute_names[] = {
 	OSMO_VALUE_STRING(BTS_TYPE_VARIANT),
 	OSMO_VALUE_STRING(BTS_SUB_MODEL),
@@ -429,126 +411,6 @@
 	return ts2str;
 }
 
-/* obtain the MO structure for a given object instance */
-struct gsm_abis_mo *
-gsm_objclass2mo(struct gsm_bts *bts, uint8_t obj_class,
-	    const struct abis_om_obj_inst *obj_inst)
-{
-	struct gsm_bts_trx *trx;
-	struct gsm_abis_mo *mo = NULL;
-
-	switch (obj_class) {
-	case NM_OC_BTS:
-		mo = &bts->mo;
-		break;
-	case NM_OC_RADIO_CARRIER:
-		if (obj_inst->trx_nr >= bts->num_trx) {
-			return NULL;
-		}
-		trx = gsm_bts_trx_num(bts, obj_inst->trx_nr);
-		mo = &trx->mo;
-		break;
-	case NM_OC_BASEB_TRANSC:
-		if (obj_inst->trx_nr >= bts->num_trx) {
-			return NULL;
-		}
-		trx = gsm_bts_trx_num(bts, obj_inst->trx_nr);
-		mo = &trx->bb_transc.mo;
-		break;
-	case NM_OC_CHANNEL:
-		if (obj_inst->trx_nr >= bts->num_trx) {
-			return NULL;
-		}
-		trx = gsm_bts_trx_num(bts, obj_inst->trx_nr);
-		if (obj_inst->ts_nr >= TRX_NR_TS)
-			return NULL;
-		mo = &trx->ts[obj_inst->ts_nr].mo;
-		break;
-	case NM_OC_SITE_MANAGER:
-		mo = &bts->site_mgr.mo;
-		break;
-	case NM_OC_GPRS_NSE:
-		mo = &bts->gprs.nse.mo;
-		break;
-	case NM_OC_GPRS_CELL:
-		mo = &bts->gprs.cell.mo;
-		break;
-	case NM_OC_GPRS_NSVC:
-		if (obj_inst->trx_nr >= ARRAY_SIZE(bts->gprs.nsvc))
-			return NULL;
-		mo = &bts->gprs.nsvc[obj_inst->trx_nr].mo;
-		break;
-	}
-	return mo;
-}
-
-/* obtain the gsm_nm_state data structure for a given object instance */
-struct gsm_nm_state *
-gsm_objclass2nmstate(struct gsm_bts *bts, uint8_t obj_class,
-		 const struct abis_om_obj_inst *obj_inst)
-{
-	struct gsm_abis_mo *mo;
-
-	mo = gsm_objclass2mo(bts, obj_class, obj_inst);
-	if (!mo)
-		return NULL;
-
-	return &mo->nm_state;
-}
-
-/* obtain the in-memory data structure of a given object instance */
-void *
-gsm_objclass2obj(struct gsm_bts *bts, uint8_t obj_class,
-	     const struct abis_om_obj_inst *obj_inst)
-{
-	struct gsm_bts_trx *trx;
-	void *obj = NULL;
-
-	switch (obj_class) {
-	case NM_OC_BTS:
-		obj = bts;
-		break;
-	case NM_OC_RADIO_CARRIER:
-		if (obj_inst->trx_nr >= bts->num_trx) {
-			return NULL;
-		}
-		trx = gsm_bts_trx_num(bts, obj_inst->trx_nr);
-		obj = trx;
-		break;
-	case NM_OC_BASEB_TRANSC:
-		if (obj_inst->trx_nr >= bts->num_trx) {
-			return NULL;
-		}
-		trx = gsm_bts_trx_num(bts, obj_inst->trx_nr);
-		obj = &trx->bb_transc;
-		break;
-	case NM_OC_CHANNEL:
-		if (obj_inst->trx_nr >= bts->num_trx) {
-			return NULL;
-		}
-		trx = gsm_bts_trx_num(bts, obj_inst->trx_nr);
-		if (obj_inst->ts_nr >= TRX_NR_TS)
-			return NULL;
-		obj = &trx->ts[obj_inst->ts_nr];
-		break;
-	case NM_OC_SITE_MANAGER:
-		obj = &bts->site_mgr;
-		break;
-	case NM_OC_GPRS_NSE:
-		obj = &bts->gprs.nse;
-		break;
-	case NM_OC_GPRS_CELL:
-		obj = &bts->gprs.cell;
-		break;
-	case NM_OC_GPRS_NSVC:
-		if (obj_inst->trx_nr >= ARRAY_SIZE(bts->gprs.nsvc))
-			return NULL;
-		obj = &bts->gprs.nsvc[obj_inst->trx_nr];
-		break;
-	}
-	return obj;
-}
-
 /* See Table 10.5.25 of GSM04.08 */
 static uint8_t gsm_pchan2chan_nr(enum gsm_phys_chan_config pchan,
 			  uint8_t ts_nr, uint8_t lchan_nr)
diff --git a/src/common/oml.c b/src/common/oml.c
index 63287f0..8a88722 100644
--- a/src/common/oml.c
+++ b/src/common/oml.c
@@ -1503,3 +1503,136 @@
 
 	return 0;
 }
+
+void gsm_mo_init(struct gsm_abis_mo *mo, struct gsm_bts *bts,
+			uint8_t obj_class, uint8_t p1, uint8_t p2, uint8_t p3)
+{
+	mo->bts = bts;
+	mo->obj_class = obj_class;
+	mo->obj_inst.bts_nr = p1;
+	mo->obj_inst.trx_nr = p2;
+	mo->obj_inst.ts_nr = p3;
+	mo->nm_state.operational = NM_OPSTATE_NULL;
+	mo->nm_state.availability = NM_AVSTATE_POWER_OFF;
+	mo->nm_state.administrative = NM_STATE_LOCKED;
+}
+
+/* obtain the MO structure for a given object instance */
+struct gsm_abis_mo *
+gsm_objclass2mo(struct gsm_bts *bts, uint8_t obj_class,
+	    const struct abis_om_obj_inst *obj_inst)
+{
+	struct gsm_bts_trx *trx;
+	struct gsm_abis_mo *mo = NULL;
+
+	switch (obj_class) {
+	case NM_OC_BTS:
+		mo = &bts->mo;
+		break;
+	case NM_OC_RADIO_CARRIER:
+		if (obj_inst->trx_nr >= bts->num_trx) {
+			return NULL;
+		}
+		trx = gsm_bts_trx_num(bts, obj_inst->trx_nr);
+		mo = &trx->mo;
+		break;
+	case NM_OC_BASEB_TRANSC:
+		if (obj_inst->trx_nr >= bts->num_trx) {
+			return NULL;
+		}
+		trx = gsm_bts_trx_num(bts, obj_inst->trx_nr);
+		mo = &trx->bb_transc.mo;
+		break;
+	case NM_OC_CHANNEL:
+		if (obj_inst->trx_nr >= bts->num_trx) {
+			return NULL;
+		}
+		trx = gsm_bts_trx_num(bts, obj_inst->trx_nr);
+		if (obj_inst->ts_nr >= TRX_NR_TS)
+			return NULL;
+		mo = &trx->ts[obj_inst->ts_nr].mo;
+		break;
+	case NM_OC_SITE_MANAGER:
+		mo = &bts->site_mgr.mo;
+		break;
+	case NM_OC_GPRS_NSE:
+		mo = &bts->gprs.nse.mo;
+		break;
+	case NM_OC_GPRS_CELL:
+		mo = &bts->gprs.cell.mo;
+		break;
+	case NM_OC_GPRS_NSVC:
+		if (obj_inst->trx_nr >= ARRAY_SIZE(bts->gprs.nsvc))
+			return NULL;
+		mo = &bts->gprs.nsvc[obj_inst->trx_nr].mo;
+		break;
+	}
+	return mo;
+}
+
+/* obtain the gsm_nm_state data structure for a given object instance */
+struct gsm_nm_state *
+gsm_objclass2nmstate(struct gsm_bts *bts, uint8_t obj_class,
+		 const struct abis_om_obj_inst *obj_inst)
+{
+	struct gsm_abis_mo *mo;
+
+	mo = gsm_objclass2mo(bts, obj_class, obj_inst);
+	if (!mo)
+		return NULL;
+
+	return &mo->nm_state;
+}
+
+/* obtain the in-memory data structure of a given object instance */
+void *
+gsm_objclass2obj(struct gsm_bts *bts, uint8_t obj_class,
+	     const struct abis_om_obj_inst *obj_inst)
+{
+	struct gsm_bts_trx *trx;
+	void *obj = NULL;
+
+	switch (obj_class) {
+	case NM_OC_BTS:
+		obj = bts;
+		break;
+	case NM_OC_RADIO_CARRIER:
+		if (obj_inst->trx_nr >= bts->num_trx) {
+			return NULL;
+		}
+		trx = gsm_bts_trx_num(bts, obj_inst->trx_nr);
+		obj = trx;
+		break;
+	case NM_OC_BASEB_TRANSC:
+		if (obj_inst->trx_nr >= bts->num_trx) {
+			return NULL;
+		}
+		trx = gsm_bts_trx_num(bts, obj_inst->trx_nr);
+		obj = &trx->bb_transc;
+		break;
+	case NM_OC_CHANNEL:
+		if (obj_inst->trx_nr >= bts->num_trx) {
+			return NULL;
+		}
+		trx = gsm_bts_trx_num(bts, obj_inst->trx_nr);
+		if (obj_inst->ts_nr >= TRX_NR_TS)
+			return NULL;
+		obj = &trx->ts[obj_inst->ts_nr];
+		break;
+	case NM_OC_SITE_MANAGER:
+		obj = &bts->site_mgr;
+		break;
+	case NM_OC_GPRS_NSE:
+		obj = &bts->gprs.nse;
+		break;
+	case NM_OC_GPRS_CELL:
+		obj = &bts->gprs.cell;
+		break;
+	case NM_OC_GPRS_NSVC:
+		if (obj_inst->trx_nr >= ARRAY_SIZE(bts->gprs.nsvc))
+			return NULL;
+		obj = &bts->gprs.nsvc[obj_inst->trx_nr];
+		break;
+	}
+	return obj;
+}

-- 
To view, visit https://gerrit.osmocom.org/c/osmo-bts/+/19122
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Change-Id: I57ea9c4ddbe5443b9b6afe3f8e6b38170d0e5a0e
Gerrit-Change-Number: 19122
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin at sysmocom.de>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20200703/9918c9d3/attachment.htm>


More information about the gerrit-log mailing list