libosmogsm  1.5.2
Osmocom GSM library
bts_features.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <osmocom/core/utils.h>
4 #include <osmocom/core/bitvec.h>
5 
6 #define MAX_BTS_FEATURES 128
7 
8 /* N. B: always add new features to the end of the list (right before _NUM_BTS_FEAT) to avoid breaking compatibility
9  with BTS compiled against earlier version of this header. Also make sure that the description strings
10  osmo_bts_features_descs[] in gsm_data.c are also updated accordingly! */
27  BTS_FEAT_PAGING_COORDINATION, /* BTS hands CS paging to PCU/PACCH */
30  BTS_FEAT_CCN, /* Is CCN supported by the cell? TS 44.060 sec 8.8.2 */
32 };
33 
34 extern const struct value_string osmo_bts_features_descs[];
35 
36 const char *osmo_bts_feature_name(enum osmo_bts_features feature);
37 
38 static inline int osmo_bts_set_feature(struct bitvec *features, enum osmo_bts_features feature)
39 {
41  return bitvec_set_bit_pos(features, feature, 1);
42 }
43 
44 static inline int osmo_bts_unset_feature(struct bitvec *features, enum osmo_bts_features feature)
45 {
47  return bitvec_set_bit_pos(features, feature, 0);
48 }
49 
50 static inline bool osmo_bts_has_feature(const struct bitvec *features, enum osmo_bts_features feature)
51 {
53  return bitvec_get_bit_pos(features, feature) == ONE;
54 }
const char * osmo_bts_feature_name(enum osmo_bts_features feature)
return string representation of a BTS feature
Definition: bts_features.c:50
static int osmo_bts_set_feature(struct bitvec *features, enum osmo_bts_features feature)
Definition: bts_features.h:38
#define MAX_BTS_FEATURES
Definition: bts_features.h:6
const struct value_string osmo_bts_features_descs[]
Definition: bts_features.c:26
static bool osmo_bts_has_feature(const struct bitvec *features, enum osmo_bts_features feature)
Definition: bts_features.h:50
static int osmo_bts_unset_feature(struct bitvec *features, enum osmo_bts_features feature)
Definition: bts_features.h:44
osmo_bts_features
Definition: bts_features.h:11
@ BTS_FEAT_SPEECH_H_AMR
Definition: bts_features.h:25
@ BTS_FEAT_PAGING_COORDINATION
Definition: bts_features.h:27
@ _NUM_BTS_FEAT
Definition: bts_features.h:31
@ BTS_FEAT_SPEECH_F_V1
Definition: bts_features.h:21
@ BTS_FEAT_OML_ALERTS
Definition: bts_features.h:18
@ BTS_FEAT_AGCH_PCH_PROP
Definition: bts_features.h:19
@ BTS_FEAT_ECSD
Definition: bts_features.h:15
@ BTS_FEAT_IPV6_NSVC
Definition: bts_features.h:28
@ BTS_FEAT_MULTI_TSC
Definition: bts_features.h:17
@ BTS_FEAT_SPEECH_F_AMR
Definition: bts_features.h:24
@ BTS_FEAT_ACCH_REP
Definition: bts_features.h:29
@ BTS_FEAT_GPRS
Definition: bts_features.h:13
@ BTS_FEAT_ETWS_PN
Definition: bts_features.h:26
@ BTS_FEAT_CCN
Definition: bts_features.h:30
@ BTS_FEAT_HOPPING
Definition: bts_features.h:16
@ BTS_FEAT_HSCSD
Definition: bts_features.h:12
@ BTS_FEAT_SPEECH_H_V1
Definition: bts_features.h:22
@ BTS_FEAT_CBCH
Definition: bts_features.h:20
@ BTS_FEAT_EGPRS
Definition: bts_features.h:14
@ BTS_FEAT_SPEECH_F_EFR
Definition: bts_features.h:23
int bitvec_set_bit_pos(struct bitvec *bv, unsigned int bitnr, enum bit_value bit)
enum bit_value bitvec_get_bit_pos(const struct bitvec *bv, unsigned int bitnr)
ONE
#define OSMO_ASSERT(exp)