aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax <msuraev@sysmocom.de>2017-05-10 12:21:17 +0200
committerMax <msuraev@sysmocom.de>2017-05-15 08:13:03 +0000
commit1ebf23b7fe631dbafcc2dc4a1e8a8beced4ecc0d (patch)
tree8e6b35f73c3fed633bfc1c36111647feb9ef62e8
parent7590ff3fd6cde4264f6e7961f8d9dcafbb526271 (diff)
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
-rw-r--r--openbsc/include/openbsc/abis_nm.h5
-rw-r--r--openbsc/include/openbsc/gsm_data_shared.h4
-rw-r--r--openbsc/src/libbsc/abis_nm.c10
3 files changed, 13 insertions, 6 deletions
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 <openbsc/gsm_data.h>
+/* 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();