BS11: add nm_state for EnveBTES, PA and BBSIG physical objects
diff --git a/include/openbsc/gsm_data.h b/include/openbsc/gsm_data.h
index d8b4c3e..e85adf8 100644
--- a/include/openbsc/gsm_data.h
+++ b/include/openbsc/gsm_data.h
@@ -224,6 +224,17 @@
} bb_transc;
u_int16_t arfcn;
+
+ union {
+ struct {
+ struct {
+ struct gsm_nm_state nm_state;
+ } bbsig;
+ struct {
+ struct gsm_nm_state nm_state;
+ } pa;
+ } bs11;
+ };
struct gsm_bts_trx_ts ts[TRX_NR_TS];
};
@@ -274,6 +285,10 @@
u_int16_t available_slots;
};
+struct gsm_envabtse {
+ struct gsm_nm_state nm_state;
+};
+
/* One BTS */
struct gsm_bts {
struct gsm_network *network;
@@ -323,7 +338,7 @@
struct {
struct gsm_nm_state nm_state;
} rack;
-
+ struct gsm_envabtse envabtse[4];
} bs11;
};
diff --git a/src/abis_nm.c b/src/abis_nm.c
index 57d4159..cd1f444 100644
--- a/src/abis_nm.c
+++ b/src/abis_nm.c
@@ -472,6 +472,8 @@
return "GPRS NSVC0";
case NM_OC_GPRS_NSVC1:
return "GPRS NSVC1";
+ case NM_OC_BS11:
+ return "SIEMENSHW";
}
return "UNKNOWN";
@@ -566,12 +568,29 @@
case BS11_OBJ_CCLK:
nm_state = &bts->bs11.cclk.nm_state;
break;
+ case BS11_OBJ_BBSIG:
+ if (obj_inst->ts_nr > bts->num_trx)
+ return NULL;
+ trx = &bts->trx[obj_inst->ts_nr];
+ nm_state = &trx->bs11.bbsig.nm_state;
+ break;
+ case BS11_OBJ_PA:
+ if (obj_inst->ts_nr > bts->num_trx)
+ return NULL;
+ trx = &bts->trx[obj_inst->ts_nr];
+ nm_state = &trx->bs11.pa.nm_state;
+ break;
default:
return NULL;
}
case NM_OC_BS11_RACK:
nm_state = &bts->bs11.rack.nm_state;
break;
+ case NM_OC_BS11_ENVABTSE:
+ if (obj_inst->trx_nr > ARRAY_SIZE(bts->bs11.envabtse))
+ return NULL;
+ nm_state = &bts->bs11.envabtse[obj_inst->trx_nr].nm_state;
+ break;
}
return nm_state;
}
@@ -650,6 +669,8 @@
DEBUGPC(DNM, "STATE CHG: ");
+ memset(&new_state, 0, sizeof(new_state));
+
nm_state = objclass2nmstate(bts, foh->obj_class, &foh->obj_inst);
if (!nm_state) {
DEBUGPC(DNM, "\n");