abis_nm: add bts model features to reported ones

As pointed out in code review, for nanobts we need to be able to combine
the reported features with a list of features we assume that the bts
model supports. This is because the enum of features is based on what
nanobts is able to report, but was extended for osmo-bts.

Related: SYS#5922, OS#5538
Change-Id: I7bdbf28c148877275048e070dce7f503ca5e6226
This commit is contained in:
Oliver Smith 2022-04-28 12:04:36 +02:00
parent ad1f436512
commit aa6404f3f8
2 changed files with 17 additions and 1 deletions

View File

@ -28,7 +28,9 @@ osmo-build-dep.sh libosmocore "" '--disable-doxygen --enable-gnutls'
verify_value_string_arrays_are_terminated.py $(find . -name "*.[hc]")
# Check for wrong use of osmo_bts_has_feature (OS#5538)
bts_features_wrong_use="$(grep -r -n 'osmo_bts_has_feature.*->model->features' | grep -v 'jenkins.sh')" || true
bts_features_wrong_use="$(grep -r -n 'osmo_bts_has_feature.*->model->features' \
| grep -v 'jenkins.sh' \
| grep -v 'intentional check against bts model')" || true
if [ -n "$bts_features_wrong_use" ]; then
set +x
echo

View File

@ -613,6 +613,20 @@ static int parse_attr_resp_info_attr(struct gsm_bts *bts, const struct gsm_bts_t
LOGPMO(&bts->mo, DNM, LOGL_NOTICE, "Get Attributes Response: feature '%s' is"
" supported\n", osmo_bts_features_name(i));
}
/* Add features from the BTS model: nanobts may support more
* features than it reports, since we extend the enum of
* features for osmo-bts. */
if (bts->type == GSM_BTS_TYPE_NANOBTS) {
for (i = 0; i < _NUM_BTS_FEAT; i++) {
if (osmo_bts_has_feature(&bts->model->features, i) /* intentional check against bts model */
&& !osmo_bts_has_feature(&bts->features, i)) {
LOGPMO(&bts->mo, DNM, LOGL_NOTICE, "Get Attributes Response: feature '%s' is"
" assumed to be supported\n", osmo_bts_features_name(i));
osmo_bts_set_feature(&bts->features, i);
}
}
}
}
/* Parse Attribute Response Info content for 3GPP TS 52.021 §9.4.28 Manufacturer Dependent State */