diff options
author | Harald Welte <laforge@gnumonks.org> | 2011-06-06 18:31:20 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2011-06-06 18:31:20 +0200 |
commit | 978714d752839ea769641feb9d0dcc79f074b6ea (patch) | |
tree | 2f37381086d3391c3f596c66182d56ac4fc36b19 /openbsc/src/libbsc | |
parent | 28307643d79857b703d335cd46f70d748787a41a (diff) |
move objclass2{nmstate,mo,}obj() to gsm_data_shared.c (and prefix)
Diffstat (limited to 'openbsc/src/libbsc')
-rw-r--r-- | openbsc/src/libbsc/abis_nm.c | 162 |
1 files changed, 4 insertions, 158 deletions
diff --git a/openbsc/src/libbsc/abis_nm.c b/openbsc/src/libbsc/abis_nm.c index e6111f588..494d4caba 100644 --- a/openbsc/src/libbsc/abis_nm.c +++ b/openbsc/src/libbsc/abis_nm.c @@ -150,160 +150,6 @@ int nm_is_running(struct gsm_nm_state *s) { ); } -/* obtain the MO structure for a given object instance */ -static struct gsm_abis_mo * -objclass2mo(struct gsm_bts *bts, uint8_t obj_class, - 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) { - DEBUGPC(DNM, "TRX %u does not exist ", obj_inst->trx_nr); - 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) { - DEBUGPC(DNM, "TRX %u does not exist ", obj_inst->trx_nr); - 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) { - DEBUGPC(DNM, "TRX %u does not exist ", obj_inst->trx_nr); - 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_BS11: - switch (obj_inst->bts_nr) { - case BS11_OBJ_CCLK: - mo = &bts->bs11.cclk.mo; - break; - 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; - 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; - } - case NM_OC_BS11_RACK: - mo = &bts->bs11.rack.mo; - break; - 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; - 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 */ -static struct gsm_nm_state * -objclass2nmstate(struct gsm_bts *bts, uint8_t obj_class, - struct abis_om_obj_inst *obj_inst) -{ - struct gsm_abis_mo *mo; - - mo = 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 */ -static void * -objclass2obj(struct gsm_bts *bts, uint8_t obj_class, - 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) { - DEBUGPC(DNM, "TRX %u does not exist ", obj_inst->trx_nr); - 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) { - DEBUGPC(DNM, "TRX %u does not exist ", obj_inst->trx_nr); - 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) { - DEBUGPC(DNM, "TRX %u does not exist ", obj_inst->trx_nr); - 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; -} - /* Update the administrative state of a given object in our in-memory data * structures and send an event to the higher layer */ static int update_admstate(struct gsm_bts *bts, uint8_t obj_class, @@ -314,10 +160,10 @@ static int update_admstate(struct gsm_bts *bts, uint8_t obj_class, memset(&nsd, 0, sizeof(nsd)); - nsd.obj = objclass2obj(bts, obj_class, obj_inst); + nsd.obj = gsm_objclass2obj(bts, obj_class, obj_inst); if (!nsd.obj) return -EINVAL; - nm_state = objclass2nmstate(bts, obj_class, obj_inst); + nm_state = gsm_objclass2nmstate(bts, obj_class, obj_inst); if (!nm_state) return -1; @@ -348,7 +194,7 @@ static int abis_nm_rx_statechg_rep(struct msgb *mb) memset(&new_state, 0, sizeof(new_state)); - nm_state = objclass2nmstate(bts, foh->obj_class, &foh->obj_inst); + nm_state = gsm_objclass2nmstate(bts, foh->obj_class, &foh->obj_inst); if (!nm_state) { DEBUGPC(DNM, "unknown object class\n"); return -EINVAL; @@ -386,7 +232,7 @@ static int abis_nm_rx_statechg_rep(struct msgb *mb) /* Update the operational state of a given object in our in-memory data * structures and send an event to the higher layer */ struct nm_statechg_signal_data nsd; - nsd.obj = objclass2obj(bts, foh->obj_class, &foh->obj_inst); + nsd.obj = gsm_objclass2obj(bts, foh->obj_class, &foh->obj_inst); nsd.obj_class = foh->obj_class; nsd.old_state = nm_state; nsd.new_state = &new_state; |