2018-03-01 18:13:05 +00:00
|
|
|
/*! \file bts_features.c
|
|
|
|
* osmo-bts features. */
|
|
|
|
/*
|
|
|
|
* (C) 2018 by sysmocom s.f.m.c. GmbH
|
|
|
|
*
|
|
|
|
* SPDX-License-Identifier: GPL-2.0+
|
|
|
|
*
|
|
|
|
* This program is free software; you can redistribute it and/or modify
|
|
|
|
* it under the terms of the GNU General Public License as published by
|
|
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
|
|
* (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU General Public License for more details.
|
|
|
|
*/
|
|
|
|
|
2023-02-24 09:39:31 +00:00
|
|
|
#include <osmocom/core/utils.h>
|
2018-03-01 18:13:05 +00:00
|
|
|
#include <osmocom/gsm/bts_features.h>
|
|
|
|
|
|
|
|
const struct value_string osmo_bts_features_descs[] = {
|
|
|
|
{ BTS_FEAT_HSCSD, "HSCSD" },
|
|
|
|
{ BTS_FEAT_GPRS, "GPRS" },
|
|
|
|
{ BTS_FEAT_EGPRS, "EGPRS" },
|
|
|
|
{ BTS_FEAT_ECSD, "ECSD" },
|
|
|
|
{ BTS_FEAT_HOPPING, "Frequency Hopping" },
|
|
|
|
{ BTS_FEAT_MULTI_TSC, "Multi-TSC" },
|
|
|
|
{ BTS_FEAT_OML_ALERTS, "OML Alerts" },
|
|
|
|
{ BTS_FEAT_AGCH_PCH_PROP, "AGCH/PCH proportional allocation" },
|
|
|
|
{ BTS_FEAT_CBCH, "CBCH" },
|
|
|
|
{ BTS_FEAT_SPEECH_F_V1, "Fullrate speech V1" },
|
|
|
|
{ BTS_FEAT_SPEECH_H_V1, "Halfrate speech V1" },
|
|
|
|
{ BTS_FEAT_SPEECH_F_EFR, "Fullrate speech EFR" },
|
|
|
|
{ BTS_FEAT_SPEECH_F_AMR, "Fullrate speech AMR" },
|
|
|
|
{ BTS_FEAT_SPEECH_H_AMR, "Halfrate speech AMR" },
|
2019-09-03 14:52:09 +00:00
|
|
|
{ BTS_FEAT_ETWS_PN, "ETWS Primary Notification via PCH" },
|
2020-06-21 13:32:41 +00:00
|
|
|
{ BTS_FEAT_PAGING_COORDINATION, "BSS Paging Coordination" },
|
2020-06-07 20:53:31 +00:00
|
|
|
{ BTS_FEAT_IPV6_NSVC, "NSVC IPv6" },
|
2021-01-07 13:22:45 +00:00
|
|
|
{ BTS_FEAT_ACCH_REP, "FACCH/SACCH Repetition" },
|
2021-01-29 16:12:14 +00:00
|
|
|
{ BTS_FEAT_CCN, "Cell Change Notification (CCN)" },
|
2021-03-27 16:14:57 +00:00
|
|
|
{ BTS_FEAT_VAMOS, "VAMOS (Voice services over Adaptive Multi-user channels on One Slot)" },
|
2021-05-31 15:11:45 +00:00
|
|
|
{ BTS_FEAT_ABIS_OSMO_PCU, "OsmoPCU over OML link IPA multiplex" },
|
2021-06-25 17:34:38 +00:00
|
|
|
{ BTS_FEAT_BCCH_POWER_RED, "BCCH carrier power reduction mode" },
|
2021-06-29 09:54:30 +00:00
|
|
|
{ BTS_FEAT_DYN_TS_SDCCH8, "Dynamic Timeslot configuration as SDCCH8" },
|
2021-08-30 15:53:36 +00:00
|
|
|
{ BTS_FEAT_ACCH_TEMP_OVP, "FACCH/SACCH Temporary overpower" },
|
2022-08-08 11:46:03 +00:00
|
|
|
{ BTS_FEAT_OSMUX, "Osmux (Osmocom RTP multiplexing)" },
|
2023-01-23 18:19:12 +00:00
|
|
|
{ BTS_FEAT_VBS, "Voice Broadcast Service" },
|
|
|
|
{ BTS_FEAT_VGCS, "Voice Group Call Service" },
|
2018-03-01 18:13:05 +00:00
|
|
|
{ 0, NULL }
|
|
|
|
};
|
|
|
|
|
2023-02-24 09:39:31 +00:00
|
|
|
/* Ensure that all BTS_FEAT_* entries are present in osmo_bts_features_descs[] */
|
|
|
|
osmo_static_assert(ARRAY_SIZE(osmo_bts_features_descs) == _NUM_BTS_FEAT + 1, _bts_features_descs);
|
|
|
|
|
2021-04-02 21:20:09 +00:00
|
|
|
/*! return description string of a BTS feature (osmo_bts_features_descs).
|
|
|
|
* To get the plain feature name, use osmo_bts_features_name() instead. */
|
2018-03-01 18:13:05 +00:00
|
|
|
const char *osmo_bts_feature_name(enum osmo_bts_features feature)
|
|
|
|
{
|
|
|
|
return get_value_string(osmo_bts_features_descs, feature);
|
|
|
|
}
|
2021-04-02 21:20:09 +00:00
|
|
|
|
|
|
|
const struct value_string osmo_bts_features_names[] = {
|
|
|
|
{ BTS_FEAT_HSCSD, "HSCSD" },
|
|
|
|
{ BTS_FEAT_GPRS, "GPRS" },
|
|
|
|
{ BTS_FEAT_EGPRS, "EGPRS" },
|
|
|
|
{ BTS_FEAT_ECSD, "ECSD" },
|
|
|
|
{ BTS_FEAT_HOPPING, "HOPPING" },
|
|
|
|
{ BTS_FEAT_MULTI_TSC, "MULTI_TSC" },
|
|
|
|
{ BTS_FEAT_OML_ALERTS, "OML_ALERTS" },
|
|
|
|
{ BTS_FEAT_AGCH_PCH_PROP, "AGCH_PCH_PROP" },
|
|
|
|
{ BTS_FEAT_CBCH, "CBCH" },
|
|
|
|
{ BTS_FEAT_SPEECH_F_V1, "SPEECH_F_V1" },
|
|
|
|
{ BTS_FEAT_SPEECH_H_V1, "SPEECH_H_V1" },
|
|
|
|
{ BTS_FEAT_SPEECH_F_EFR, "SPEECH_F_EFR" },
|
|
|
|
{ BTS_FEAT_SPEECH_F_AMR, "SPEECH_F_AMR" },
|
|
|
|
{ BTS_FEAT_SPEECH_H_AMR, "SPEECH_H_AMR" },
|
|
|
|
{ BTS_FEAT_ETWS_PN, "ETWS_PN" },
|
|
|
|
{ BTS_FEAT_PAGING_COORDINATION, "PAGING_COORDINATION" },
|
|
|
|
{ BTS_FEAT_IPV6_NSVC, "IPV6_NSVC" },
|
|
|
|
{ BTS_FEAT_ACCH_REP, "ACCH_REP" },
|
|
|
|
{ BTS_FEAT_CCN, "CCN" },
|
|
|
|
{ BTS_FEAT_VAMOS, "VAMOS" },
|
2021-05-31 15:11:45 +00:00
|
|
|
{ BTS_FEAT_ABIS_OSMO_PCU, "ABIS_OSMO_PCU" },
|
2021-06-25 17:34:38 +00:00
|
|
|
{ BTS_FEAT_BCCH_POWER_RED, "BCCH_PWR_RED" },
|
2021-06-29 09:54:30 +00:00
|
|
|
{ BTS_FEAT_DYN_TS_SDCCH8, "DYN_TS_SDCCH8" },
|
2022-08-09 15:53:11 +00:00
|
|
|
{ BTS_FEAT_ACCH_TEMP_OVP, "ACCH_TEMP_OVP" },
|
|
|
|
{ BTS_FEAT_OSMUX, "OSMUX" },
|
2023-02-24 09:27:59 +00:00
|
|
|
{ BTS_FEAT_VBS, "VBS" },
|
|
|
|
{ BTS_FEAT_VGCS, "VGCS" },
|
2021-04-02 21:20:09 +00:00
|
|
|
{}
|
|
|
|
};
|
2023-02-24 09:39:31 +00:00
|
|
|
|
|
|
|
/* Ensure that all BTS_FEAT_* entries are present in osmo_bts_features_names[] */
|
|
|
|
osmo_static_assert(ARRAY_SIZE(osmo_bts_features_names) == _NUM_BTS_FEAT + 1, _bts_features_names);
|