BS11: add nm_state for EnveBTES, PA and BBSIG physical objects

This commit is contained in:
Harald Welte 2009-06-05 19:18:45 +00:00
parent c3d4b2d441
commit 8b697c74c7
2 changed files with 37 additions and 1 deletions

View File

@ -224,6 +224,17 @@ struct gsm_bts_trx {
} 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 @@ struct gsm_bts_paging_state {
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 gsm_bts {
struct {
struct gsm_nm_state nm_state;
} rack;
struct gsm_envabtse envabtse[4];
} bs11;
};

View File

@ -472,6 +472,8 @@ static const char *obj_class_name(u_int8_t oc)
return "GPRS NSVC0";
case NM_OC_GPRS_NSVC1:
return "GPRS NSVC1";
case NM_OC_BS11:
return "SIEMENSHW";
}
return "UNKNOWN";
@ -566,12 +568,29 @@ objclass2nmstate(struct gsm_bts *bts, u_int8_t obj_class,
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 @@ static int abis_nm_rx_statechg_rep(struct msgb *mb)
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");