fixeria has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/osmo-bsc/+/34421?usp=email )


Change subject: bts_ipaccess_nanobts: clean up, use gsm_objclass2mo()
......................................................................

bts_ipaccess_nanobts: clean up, use gsm_objclass2mo()

Change-Id: Ic6c0dfe950459d07a8f506b5007a65fea1950c18
---
M src/osmo-bsc/bts_ipaccess_nanobts.c
1 file changed, 31 insertions(+), 128 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/21/34421/1

diff --git a/src/osmo-bsc/bts_ipaccess_nanobts.c 
b/src/osmo-bsc/bts_ipaccess_nanobts.c
index 8669d64..1ceed7b 100644
--- a/src/osmo-bsc/bts_ipaccess_nanobts.c
+++ b/src/osmo-bsc/bts_ipaccess_nanobts.c
@@ -195,156 +195,50 @@
 /* Callback function to be called every time we receive a 12.21 SW activated 
report */
 static int sw_activ_rep(struct msgb *mb)
 {
-       struct abis_om_fom_hdr *foh = msgb_l3(mb);
+       const struct abis_om_fom_hdr *foh = msgb_l3(mb);
        struct e1inp_sign_link *sign_link = mb->dst;
        struct gsm_bts *bts = sign_link->trx->bts;
-       struct gsm_bts_trx *trx;
-       struct gsm_gprs_nsvc *nsvc;
-       struct gsm_bts_trx_ts *ts;
+       struct gsm_abis_mo *mo;

        if (!is_ipa_abisip_bts(bts))
                return 0;

-       switch (foh->obj_class) {
-       case NM_OC_SITE_MANAGER:
-               osmo_fsm_inst_dispatch(bts->site_mgr->mo.fi, NM_EV_SW_ACT_REP, 
NULL);
-               break;
-       case NM_OC_BTS:
-               osmo_fsm_inst_dispatch(bts->mo.fi, NM_EV_SW_ACT_REP, NULL);
-               break;
-       case NM_OC_BASEB_TRANSC:
-               if (!(trx = gsm_bts_trx_num(bts, foh->obj_inst.trx_nr)))
-                       return -EINVAL;
-               osmo_fsm_inst_dispatch(trx->bb_transc.mo.fi, NM_EV_SW_ACT_REP, 
NULL);
-               break;
-       case NM_OC_RADIO_CARRIER:
-               if (!(trx = gsm_bts_trx_num(bts, foh->obj_inst.trx_nr)))
-                       return -EINVAL;
-               osmo_fsm_inst_dispatch(trx->mo.fi, NM_EV_SW_ACT_REP, NULL);
-               break;
-       case NM_OC_CHANNEL:
-               if (!(ts = abis_nm_get_ts(mb)))
-                       return -EINVAL;
-               osmo_fsm_inst_dispatch(ts->mo.fi, NM_EV_SW_ACT_REP, NULL);
-               break;
-       case NM_OC_GPRS_NSE:
-               osmo_fsm_inst_dispatch(bts->site_mgr->gprs.nse.mo.fi, 
NM_EV_SW_ACT_REP, NULL);
-               break;
-       case NM_OC_GPRS_CELL:
-               osmo_fsm_inst_dispatch(bts->gprs.cell.mo.fi, NM_EV_SW_ACT_REP, 
NULL);
-               break;
-       case NM_OC_GPRS_NSVC:
-               if (!(nsvc = gsm_bts_sm_nsvc_num(bts->site_mgr, 
foh->obj_inst.trx_nr)))
-                       return -EINVAL;
-               osmo_fsm_inst_dispatch(nsvc->mo.fi, NM_EV_SW_ACT_REP, NULL);
-               break;
+       mo = gsm_objclass2mo(bts, foh->obj_class, &foh->obj_inst);
+       if (mo == NULL) {
+               LOGPFOH(DNM, LOGL_ERROR, foh, "Rx SW activated report for 
non-existent MO\n");
+               return -ENOENT;
        }
-       return 0;
-}

-static void nm_rx_opstart_ack_chan(struct msgb *oml_msg)
-{
-       struct gsm_bts_trx_ts *ts;
-       ts = abis_nm_get_ts(oml_msg);
-       if (!ts)
-               /* error already logged in abis_nm_get_ts() */
-               return;
-       if (!ts->fi) {
-               LOG_TS(ts, LOGL_ERROR, "Channel OPSTART ACK for uninitialized 
TS\n");
-               return;
-       }
-       osmo_fsm_inst_dispatch(ts->mo.fi, NM_EV_OPSTART_ACK, NULL);
+       osmo_fsm_inst_dispatch(mo->fi, NM_EV_SW_ACT_REP, NULL);
+       return 0;
 }

 static void nm_rx_opstart_ack(struct msgb *oml_msg)
 {
-       struct abis_om_fom_hdr *foh = msgb_l3(oml_msg);
+       const struct abis_om_fom_hdr *foh = msgb_l3(oml_msg);
        struct e1inp_sign_link *sign_link = oml_msg->dst;
        struct gsm_bts *bts = sign_link->trx->bts;
-       struct gsm_bts_trx *trx;
-       struct gsm_gprs_nsvc *nsvc;
+       struct gsm_abis_mo *mo;

-       switch (foh->obj_class) {
-       case NM_OC_SITE_MANAGER:
-               osmo_fsm_inst_dispatch(bts->site_mgr->mo.fi, NM_EV_OPSTART_ACK, 
NULL);
-               break;
-       case NM_OC_BTS:
-               osmo_fsm_inst_dispatch(bts->mo.fi, NM_EV_OPSTART_ACK, NULL);
-               break;
-       case NM_OC_RADIO_CARRIER:
-               if (!(trx = gsm_bts_trx_num(bts, foh->obj_inst.trx_nr)))
-                       return;
-               osmo_fsm_inst_dispatch(trx->mo.fi, NM_EV_OPSTART_ACK, NULL);
-               break;
-       case NM_OC_BASEB_TRANSC:
-               if (!(trx = gsm_bts_trx_num(bts, foh->obj_inst.trx_nr)))
-                       return;
-               osmo_fsm_inst_dispatch(trx->bb_transc.mo.fi, NM_EV_OPSTART_ACK, 
NULL);
-               break;
-       case NM_OC_CHANNEL:
-               nm_rx_opstart_ack_chan(oml_msg);
-               break;
-       case NM_OC_GPRS_NSE:
-               osmo_fsm_inst_dispatch(bts->site_mgr->gprs.nse.mo.fi, 
NM_EV_OPSTART_ACK, NULL);
-               break;
-       case NM_OC_GPRS_CELL:
-               osmo_fsm_inst_dispatch(bts->gprs.cell.mo.fi, NM_EV_OPSTART_ACK, 
NULL);
-               break;
-       case NM_OC_GPRS_NSVC:
-               if (!(nsvc = gsm_bts_sm_nsvc_num(bts->site_mgr, 
foh->obj_inst.trx_nr)))
-                       return;
-               osmo_fsm_inst_dispatch(nsvc->mo.fi, NM_EV_OPSTART_ACK, NULL);
-               break;
-       default:
-               break;
-       }
+       mo = gsm_objclass2mo(bts, foh->obj_class, &foh->obj_inst);
+       if (mo == NULL)
+               LOGPFOH(DNM, LOGL_ERROR, foh, "Rx OPSTART ACK for non-existent 
MO\n");
+       else
+               osmo_fsm_inst_dispatch(mo->fi, NM_EV_OPSTART_ACK, NULL);
 }

 static void nm_rx_opstart_nack(struct msgb *oml_msg)
 {
-       struct abis_om_fom_hdr *foh = msgb_l3(oml_msg);
+       const struct abis_om_fom_hdr *foh = msgb_l3(oml_msg);
        struct e1inp_sign_link *sign_link = oml_msg->dst;
        struct gsm_bts *bts = sign_link->trx->bts;
-       struct gsm_bts_trx *trx;
-       struct gsm_bts_trx_ts *ts;
-       struct gsm_gprs_nsvc *nsvc;
+       struct gsm_abis_mo *mo;

-       switch (foh->obj_class) {
-       case NM_OC_SITE_MANAGER:
-               osmo_fsm_inst_dispatch(bts->site_mgr->mo.fi, 
NM_EV_OPSTART_NACK, NULL);
-               break;
-       case NM_OC_BTS:
-               osmo_fsm_inst_dispatch(bts->mo.fi, NM_EV_OPSTART_ACK, NULL);
-               break;
-       case NM_OC_RADIO_CARRIER:
-               if (!(trx = gsm_bts_trx_num(bts, foh->obj_inst.trx_nr)))
-                       return;
-               osmo_fsm_inst_dispatch(trx->mo.fi, NM_EV_OPSTART_NACK, NULL);
-               break;
-       case NM_OC_BASEB_TRANSC:
-               if (!(trx = gsm_bts_trx_num(bts, foh->obj_inst.trx_nr)))
-                       return;
-               osmo_fsm_inst_dispatch(trx->bb_transc.mo.fi, 
NM_EV_OPSTART_NACK, NULL);
-               break;
-       case NM_OC_CHANNEL:
-               if (!(ts = abis_nm_get_ts(oml_msg)))
-                       return;
-               osmo_fsm_inst_dispatch(ts->mo.fi, NM_EV_OPSTART_NACK, NULL);
-               break;
-       case NM_OC_GPRS_NSE:
-               osmo_fsm_inst_dispatch(bts->site_mgr->gprs.nse.mo.fi, 
NM_EV_OPSTART_NACK, NULL);
-               break;
-       case NM_OC_GPRS_CELL:
-               osmo_fsm_inst_dispatch(bts->gprs.cell.mo.fi, 
NM_EV_OPSTART_NACK, NULL);
-               break;
-       case NM_OC_GPRS_NSVC:
-               if (!(nsvc = gsm_bts_sm_nsvc_num(bts->site_mgr, 
foh->obj_inst.trx_nr)))
-                       return;
-               osmo_fsm_inst_dispatch(nsvc->mo.fi, NM_EV_OPSTART_NACK, NULL);
-               break;
-       default:
-               break;
-       }
+       mo = gsm_objclass2mo(bts, foh->obj_class, &foh->obj_inst);
+       if (mo == NULL)
+               LOGPFOH(DNM, LOGL_ERROR, foh, "Rx OPSTART NACK for non-existent 
MO\n");
+       else
+               osmo_fsm_inst_dispatch(mo->fi, NM_EV_OPSTART_ACK, NULL);
 }

 static void nm_rx_get_attr_rep(struct msgb *oml_msg)

--
To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/34421?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Change-Id: Ic6c0dfe950459d07a8f506b5007a65fea1950c18
Gerrit-Change-Number: 34421
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <vyanits...@sysmocom.de>
Gerrit-MessageType: newchange

Reply via email to