aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/osmocom/bsc/gsm_data.h2
-rw-r--r--src/osmo-bsc/gsm_data.c65
2 files changed, 20 insertions, 47 deletions
diff --git a/include/osmocom/bsc/gsm_data.h b/include/osmocom/bsc/gsm_data.h
index 7f79162ed..fa9213bba 100644
--- a/include/osmocom/bsc/gsm_data.h
+++ b/include/osmocom/bsc/gsm_data.h
@@ -890,6 +890,8 @@ void gsm_abis_mo_reset(struct gsm_abis_mo *mo);
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);
diff --git a/src/osmo-bsc/gsm_data.c b/src/osmo-bsc/gsm_data.c
index 9a32e07ff..580fa84b0 100644
--- a/src/osmo-bsc/gsm_data.c
+++ b/src/osmo-bsc/gsm_data.c
@@ -327,85 +327,56 @@ char *gsm_ts_and_pchan_name(const struct gsm_bts_trx_ts *ts)
}
/* obtain the MO structure for a given object instance */
-static inline struct gsm_abis_mo *
-gsm_objclass2mo(struct gsm_bts *bts, uint8_t obj_class,
- const struct abis_om_obj_inst *obj_inst)
+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;
+ return &bts->mo;
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;
+ return trx != NULL ? &trx->mo : NULL;
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;
+ return trx != NULL ? &trx->bb_transc.mo : NULL;
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;
+ trx = gsm_bts_trx_num(bts, obj_inst->trx_nr);
+ return trx != NULL ? &trx->ts[obj_inst->ts_nr].mo : NULL;
case NM_OC_SITE_MANAGER:
- mo = &bts->site_mgr->mo;
- break;
+ return &bts->site_mgr->mo;
case NM_OC_BS11:
switch (obj_inst->bts_nr) {
case BS11_OBJ_CCLK:
- mo = &bts->bs11.cclk.mo;
- break;
+ return &bts->bs11.cclk.mo;
case BS11_OBJ_BBSIG:
- if (obj_inst->ts_nr > bts->num_trx)
- return NULL;
trx = gsm_bts_trx_num(bts, obj_inst->trx_nr);
- mo = &trx->bs11.bbsig.mo;
- break;
+ return trx != NULL ? &trx->bs11.bbsig.mo : NULL;
case BS11_OBJ_PA:
- if (obj_inst->ts_nr > bts->num_trx)
- return NULL;
trx = gsm_bts_trx_num(bts, obj_inst->trx_nr);
- mo = &trx->bs11.pa.mo;
- break;
- default:
- return NULL;
+ return trx != NULL ? &trx->bs11.pa.mo : NULL;
}
break;
case NM_OC_BS11_RACK:
- mo = &bts->bs11.rack.mo;
- break;
+ return &bts->bs11.rack.mo;
case NM_OC_BS11_ENVABTSE:
if (obj_inst->trx_nr >= ARRAY_SIZE(bts->bs11.envabtse))
return NULL;
- mo = &bts->bs11.envabtse[obj_inst->trx_nr].mo;
- break;
+ return &bts->bs11.envabtse[obj_inst->trx_nr].mo;
case NM_OC_GPRS_NSE:
- mo = &bts->site_mgr->gprs.nse.mo;
- break;
+ return &bts->site_mgr->gprs.nse.mo;
case NM_OC_GPRS_CELL:
- mo = &bts->gprs.cell.mo;
- break;
+ return &bts->gprs.cell.mo;
case NM_OC_GPRS_NSVC:
if (obj_inst->trx_nr >= ARRAY_SIZE(bts->site_mgr->gprs.nsvc))
return NULL;
- mo = &bts->site_mgr->gprs.nsvc[obj_inst->trx_nr].mo;
- break;
+ return &bts->site_mgr->gprs.nsvc[obj_inst->trx_nr].mo;
}
- return mo;
+
+ return NULL;
}
/* obtain the gsm_nm_state data structure for a given object instance */