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; } bb_transc;
u_int16_t arfcn; 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]; struct gsm_bts_trx_ts ts[TRX_NR_TS];
}; };
@ -274,6 +285,10 @@ struct gsm_bts_paging_state {
u_int16_t available_slots; u_int16_t available_slots;
}; };
struct gsm_envabtse {
struct gsm_nm_state nm_state;
};
/* One BTS */ /* One BTS */
struct gsm_bts { struct gsm_bts {
struct gsm_network *network; struct gsm_network *network;
@ -323,7 +338,7 @@ struct gsm_bts {
struct { struct {
struct gsm_nm_state nm_state; struct gsm_nm_state nm_state;
} rack; } rack;
struct gsm_envabtse envabtse[4];
} bs11; } bs11;
}; };

View File

@ -472,6 +472,8 @@ static const char *obj_class_name(u_int8_t oc)
return "GPRS NSVC0"; return "GPRS NSVC0";
case NM_OC_GPRS_NSVC1: case NM_OC_GPRS_NSVC1:
return "GPRS NSVC1"; return "GPRS NSVC1";
case NM_OC_BS11:
return "SIEMENSHW";
} }
return "UNKNOWN"; return "UNKNOWN";
@ -566,12 +568,29 @@ objclass2nmstate(struct gsm_bts *bts, u_int8_t obj_class,
case BS11_OBJ_CCLK: case BS11_OBJ_CCLK:
nm_state = &bts->bs11.cclk.nm_state; nm_state = &bts->bs11.cclk.nm_state;
break; 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: default:
return NULL; return NULL;
} }
case NM_OC_BS11_RACK: case NM_OC_BS11_RACK:
nm_state = &bts->bs11.rack.nm_state; nm_state = &bts->bs11.rack.nm_state;
break; 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; return nm_state;
} }
@ -650,6 +669,8 @@ static int abis_nm_rx_statechg_rep(struct msgb *mb)
DEBUGPC(DNM, "STATE CHG: "); DEBUGPC(DNM, "STATE CHG: ");
memset(&new_state, 0, sizeof(new_state));
nm_state = objclass2nmstate(bts, foh->obj_class, &foh->obj_inst); nm_state = objclass2nmstate(bts, foh->obj_class, &foh->obj_inst);
if (!nm_state) { if (!nm_state) {
DEBUGPC(DNM, "\n"); DEBUGPC(DNM, "\n");