libosmogsm 0.9.6-23.20170220git32ee5af8.fc42
Osmocom GSM library
Loading...
Searching...
No Matches
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
10enum 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
64typedef uint8_t sysinfo_buf_t[GSM_MACBLOCK_LEN];
65
66extern const struct value_string osmo_sitype_strs[_MAX_SYSINFO_TYPE];
67int osmo_earfcn_add(struct osmo_earfcn_si2q *e, uint16_t arfcn, uint8_t meas_bw);
68int osmo_earfcn_del(struct osmo_earfcn_si2q *e, uint16_t arfcn);
69size_t osmo_earfcn_bit_size(const struct osmo_earfcn_si2q *e);
70void osmo_earfcn_init(struct osmo_earfcn_si2q *e);
71uint8_t osmo_sitype2rsl(enum osmo_sysinfo_type si_type);
72enum osmo_sysinfo_type osmo_rsl2sitype(uint8_t rsl_si);
Definition sysinfo.h:39