libosmogsm  0.9.6-15.20170220git32ee5af8.fc34
Osmocom GSM library
sysinfo.h
1 #pragma once
2 
3 #include <stdbool.h>
4 #include <osmocom/core/utils.h>
5 #include <osmocom/gsm/protocol/gsm_04_08.h>
6 
7 #define OSMO_EARFCN_INVALID 666
8 #define OSMO_EARFCN_MEAS_INVALID 0xff
9 
10 enum osmo_sysinfo_type {
11  SYSINFO_TYPE_NONE,
12  SYSINFO_TYPE_1,
13  SYSINFO_TYPE_2,
14  SYSINFO_TYPE_3,
15  SYSINFO_TYPE_4,
16  SYSINFO_TYPE_5,
17  SYSINFO_TYPE_6,
18  SYSINFO_TYPE_7,
19  SYSINFO_TYPE_8,
20  SYSINFO_TYPE_9,
21  SYSINFO_TYPE_10,
22  SYSINFO_TYPE_13,
23  SYSINFO_TYPE_16,
24  SYSINFO_TYPE_17,
25  SYSINFO_TYPE_18,
26  SYSINFO_TYPE_19,
27  SYSINFO_TYPE_20,
28  SYSINFO_TYPE_2bis,
29  SYSINFO_TYPE_2ter,
30  SYSINFO_TYPE_2quater,
31  SYSINFO_TYPE_5bis,
32  SYSINFO_TYPE_5ter,
33  SYSINFO_TYPE_EMO,
34  SYSINFO_TYPE_MEAS_INFO,
35  /* FIXME all the various bis and ter */
36  _MAX_SYSINFO_TYPE
37 };
38 
40  /* EARFCN (16 bits) array */
41  uint16_t *arfcn;
42  /* Measurement Bandwidth (3 bits), might be absent
43  (OSMO_EARFCN_MEAS_INVALID is stored in this case) */
44  uint8_t *meas_bw;
45  /* length of arfcn and meas_bw arrays (got to be the same) */
46  size_t length;
47  /* THRESH_E-UTRAN_high (5 bits) */
48  uint8_t thresh_hi;
49  /* THRESH_E-UTRAN_low (5 bits) */
50  uint8_t thresh_lo;
51  /* E-UTRAN_PRIORITY (3 bits) */
52  uint8_t prio;
53  /* E-UTRAN_QRXLEVMIN */
54  uint8_t qrxlm;
55  /* indicates whether thresh_lo value is valid
56  thresh_hi is mandatory and hence always considered valid */
57  bool thresh_lo_valid;
58  /* indicates whether prio value is valid */
59  bool prio_valid;
60  /* indicates whether qrxlm value is valid */
61  bool qrxlm_valid;
62 };
63 
64 typedef uint8_t sysinfo_buf_t[GSM_MACBLOCK_LEN];
65 
66 extern const struct value_string osmo_sitype_strs[_MAX_SYSINFO_TYPE];
67 int osmo_earfcn_add(struct osmo_earfcn_si2q *e, uint16_t arfcn, uint8_t meas_bw);
68 int osmo_earfcn_del(struct osmo_earfcn_si2q *e, uint16_t arfcn);
69 size_t osmo_earfcn_bit_size(const struct osmo_earfcn_si2q *e);
70 void osmo_earfcn_init(struct osmo_earfcn_si2q *e);
71 uint8_t osmo_sitype2rsl(enum osmo_sysinfo_type si_type);
72 enum osmo_sysinfo_type osmo_rsl2sitype(uint8_t rsl_si);
Definition: sysinfo.h:39