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


Change subject: oml: ipacc: parse Object Version from SW Activated Report
......................................................................

oml: ipacc: parse Object Version from SW Activated Report

Change-Id: I39105096a6b29bd7e4fb15287653074527c3e024
Related: OS#4505
---
M include/osmocom/bsc/gsm_data.h
M src/osmo-bsc/bts_ipaccess_nanobts.c
2 files changed, 46 insertions(+), 8 deletions(-)



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

diff --git a/include/osmocom/bsc/gsm_data.h b/include/osmocom/bsc/gsm_data.h
index 7d36baa..01fbf69 100644
--- a/include/osmocom/bsc/gsm_data.h
+++ b/include/osmocom/bsc/gsm_data.h
@@ -538,6 +538,12 @@
        bool rsl_connect_sent;
        bool rsl_connect_ack_received;
        bool force_rf_lock;
+       /* vendor specific fields below */
+       union {
+               struct {
+                       uint8_t obj_version;
+               } ipaccess;
+       };
 };

 /* Ericsson OM2000 Managed Object */
diff --git a/src/osmo-bsc/bts_ipaccess_nanobts.c 
b/src/osmo-bsc/bts_ipaccess_nanobts.c
index 8669d64..374b82d 100644
--- a/src/osmo-bsc/bts_ipaccess_nanobts.c
+++ b/src/osmo-bsc/bts_ipaccess_nanobts.c
@@ -201,44 +201,66 @@
        struct gsm_bts_trx *trx;
        struct gsm_gprs_nsvc *nsvc;
        struct gsm_bts_trx_ts *ts;
+       struct gsm_abis_mo *mo;
+       struct tlv_parsed tp;

        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);
+               mo = &bts->site_mgr->mo;
                break;
        case NM_OC_BTS:
-               osmo_fsm_inst_dispatch(bts->mo.fi, NM_EV_SW_ACT_REP, NULL);
+               mo = &bts->mo;
                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);
+               mo = &trx->bb_transc.mo;
                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);
+               mo = &trx->mo;
                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);
+               mo = &ts->mo;
                break;
        case NM_OC_GPRS_NSE:
-               osmo_fsm_inst_dispatch(bts->site_mgr->gprs.nse.mo.fi, 
NM_EV_SW_ACT_REP, NULL);
+               mo = &bts->site_mgr->gprs.nse.mo;
                break;
        case NM_OC_GPRS_CELL:
-               osmo_fsm_inst_dispatch(bts->gprs.cell.mo.fi, NM_EV_SW_ACT_REP, 
NULL);
+               mo = &bts->gprs.cell.mo;
                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);
+               mo = &nsvc->mo;
                break;
+       default:
+               LOGPFOH(DNM, LOGL_NOTICE, foh, "%s(): unknown Object Class\n", 
__func__);
+               return -ENODEV;
        }
+
+       if (abis_nm_tlv_parse(&tp, bts, &foh->data[0], msgb_l3len(mb) - 
sizeof(*foh)) < 0) {
+               LOGPFOH(DNM, LOGL_ERROR, foh, "%s(): tlv_parse failed\n", 
__func__);
+               return -EINVAL;
+       }
+
+       mo->ipaccess.obj_version = 0; /* implicit default */
+       if (TLVP_PRES_LEN(&tp, NM_ATT_IPACC_OBJ_VERSION, 1)) {
+               /* nanoBTS may report several Object Versions;  the first one 
will
+                * be used by default unless requested explicitly before 
OPSTARTing. */
+               mo->ipaccess.obj_version = *TLVP_VAL(&tp, 
NM_ATT_IPACC_OBJ_VERSION);
+               LOGPFOH(DNM, LOGL_INFO, foh, "IPA Object Version is %u 
(default)\n",
+                       mo->ipaccess.obj_version);
+       }
+
+       osmo_fsm_inst_dispatch(mo->fi, NM_EV_SW_ACT_REP, NULL);
+
        return 0;
 }


--
To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/34356?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: I39105096a6b29bd7e4fb15287653074527c3e024
Gerrit-Change-Number: 34356
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <[email protected]>
Gerrit-MessageType: newchange

Reply via email to