From 1ebf23b7fe631dbafcc2dc4a1e8a8beced4ecc0d Mon Sep 17 00:00:00 2001 From: Max Date: Wed, 10 May 2017 12:21:17 +0200 Subject: Prepare for BTS attribute reporting via OML * use define for number of attributes instead of magic number * add sub_model to gsm_bts struct * expand number of BTS features * mark attributes parameter to abis_nm_get_attr() as const Change-Id: I7ecb0c4339530d3a8354a2f94b34063dda87e030 Related: OS#1614 --- openbsc/include/openbsc/abis_nm.h | 5 ++++- openbsc/include/openbsc/gsm_data_shared.h | 4 ++++ openbsc/src/libbsc/abis_nm.c | 10 +++++----- 3 files changed, 13 insertions(+), 6 deletions(-) (limited to 'openbsc') diff --git a/openbsc/include/openbsc/abis_nm.h b/openbsc/include/openbsc/abis_nm.h index 0fe9d8ea1..db2a659e4 100644 --- a/openbsc/include/openbsc/abis_nm.h +++ b/openbsc/include/openbsc/abis_nm.h @@ -28,6 +28,9 @@ #include +/* max number of attributes represented as 3GPP TS 52.021 §9.4.62 SW Description array */ +#define MAX_BTS_ATTR 5 + struct cell_global_id { uint16_t mcc; uint16_t mnc; @@ -85,7 +88,7 @@ int abis_nm_conn_terr_traf(struct gsm_bts_trx_ts *ts, uint8_t e1_subslot); int abis_nm_get_attr(struct gsm_bts *bts, uint8_t obj_class, uint8_t bts_nr, uint8_t trx_nr, uint8_t ts_nr, - uint8_t *attr, uint8_t attr_len); + const uint8_t *attr, uint8_t attr_len); int abis_nm_set_bts_attr(struct gsm_bts *bts, uint8_t *attr, int attr_len); int abis_nm_set_radio_attr(struct gsm_bts_trx *trx, uint8_t *attr, int attr_len); int abis_nm_set_channel_attr(struct gsm_bts_trx_ts *ts, uint8_t chan_comb); diff --git a/openbsc/include/openbsc/gsm_data_shared.h b/openbsc/include/openbsc/gsm_data_shared.h index 5c96a62dc..edc550ee5 100644 --- a/openbsc/include/openbsc/gsm_data_shared.h +++ b/openbsc/include/openbsc/gsm_data_shared.h @@ -545,6 +545,9 @@ enum gsm_bts_features { BTS_FEAT_ECSD, BTS_FEAT_HOPPING, BTS_FEAT_MULTI_TSC, + BTS_FEAT_OML_ALERTS, + BTS_FEAT_AGCH_PCH_PROP, + BTS_FEAT_CBCH, }; /* @@ -676,6 +679,7 @@ struct gsm_bts { struct gsm_bts_model *model; enum gsm_band band; char version[MAX_VERSION_LENGTH]; + char sub_model[MAX_VERSION_LENGTH]; /* Connected PCU version (if any) */ char pcu_version[MAX_VERSION_LENGTH]; diff --git a/openbsc/src/libbsc/abis_nm.c b/openbsc/src/libbsc/abis_nm.c index db0dbd2b7..5212f6a40 100644 --- a/openbsc/src/libbsc/abis_nm.c +++ b/openbsc/src/libbsc/abis_nm.c @@ -439,6 +439,7 @@ int abis_nm_select_newest_sw(const struct abis_nm_sw_desc *sw_descr, return res; } +/* 3GPP TS 52.021 §6.2.5 */ static int abis_nm_rx_sw_act_req(struct msgb *mb) { struct abis_om_hdr *oh = msgb_l2(mb); @@ -447,7 +448,7 @@ static int abis_nm_rx_sw_act_req(struct msgb *mb) struct tlv_parsed tp; const uint8_t *sw_config; int ret, sw_config_len, len; - struct abis_nm_sw_desc sw_descr[5]; + struct abis_nm_sw_desc sw_descr[MAX_BTS_ATTR]; abis_nm_debugp_foh(DNM, foh); @@ -1441,10 +1442,9 @@ int abis_nm_disc_terr_traf(struct abis_nm_h *h, struct abis_om_obj_inst *inst, } #endif -/* Chapter 8.11.1 */ -int abis_nm_get_attr(struct gsm_bts *bts, uint8_t obj_class, - uint8_t bts_nr, uint8_t trx_nr, uint8_t ts_nr, - uint8_t *attr, uint8_t attr_len) +/* 3GPP TS 52.021 § 8.11.1 */ +int abis_nm_get_attr(struct gsm_bts *bts, uint8_t obj_class, uint8_t bts_nr, uint8_t trx_nr, uint8_t ts_nr, + const uint8_t *attr, uint8_t attr_len) { struct abis_om_hdr *oh; struct msgb *msg = nm_msgb_alloc(); -- cgit v1.2.3