summaryrefslogtreecommitdiffstats
path: root/src/host/layer23/include/osmocom/bb/mobile/support.h
blob: c56c78e8335b95356fc18d9ccc91455176fb6d52 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#ifndef _SUPPORT_H
#define _SUPPORT_H

#define GSM_CIPHER_A5_1		0
#define GSM_CIPHER_A5_2		1
#define GSM_CIPHER_A5_3		2
#define GSM_CIPHER_A5_4		3
#define GSM_CIPHER_A5_5		4
#define GSM_CIPHER_A5_6		5
#define GSM_CIPHER_A5_7		6
#define GSM_CIPHER_RESERVED	7

#define GSM_CAP_SDCCH		0
#define GSM_CAP_SDCCH_TCHF	1
#define GSM_CAP_SDCCH_TCHF_TCHH	2

struct gsm_support {
	struct osmocom_ms *ms;

	/* controlled early classmark sending */
	uint8_t es_ind;
	/* revision level */
	uint8_t rev_lev;
	/* support of VGCS */
	uint8_t vgcs;
	/* support of VBS */
	uint8_t vbs;
	/* support of SMS */
	uint8_t sms_ptp;
	/* screening indicator */
	uint8_t ss_ind;
	/* pseudo synchronised capability */
	uint8_t ps_cap;
	/* CM service prompt */
	uint8_t cmsp;
	/* solsa support */
	uint8_t solsa;
	/* location service support */
	uint8_t lcsva;
	/* codec support */
	uint8_t a5_1;
	uint8_t a5_2;
	uint8_t a5_3;
	uint8_t a5_4;
	uint8_t a5_5;
	uint8_t a5_6;
	uint8_t a5_7;
	/* radio support */
	uint8_t p_gsm;
	uint8_t e_gsm;
	uint8_t r_gsm;
	uint8_t dcs;
	uint8_t gsm_850;
	uint8_t pcs;
	uint8_t gsm_480;
	uint8_t gsm_450;
	uint8_t class_900;
	uint8_t class_dcs;
	uint8_t class_850;
	uint8_t class_pcs;
	uint8_t class_400;
	/* multi slot support */
	uint8_t ms_sup;
	/* ucs2 treatment */
	uint8_t ucs2_treat;
	/* support extended measurements */
	uint8_t ext_meas;
	/* support switched measurement capability */
	uint8_t meas_cap;
	uint8_t sms_val;
	uint8_t sm_val;
	/* positioning method capability */
	uint8_t loc_serv;
	uint8_t e_otd_ass;
	uint8_t e_otd_based;
	uint8_t gps_ass;
	uint8_t gps_based;
	uint8_t gps_conv;

	/* radio */
	uint8_t ch_cap; /* channel capability */
	int8_t min_rxlev_dbm;
	uint8_t scan_to;
	uint8_t sync_to;
	uint16_t dsc_max; /* maximum dl signal failure counter */

	/* codecs */
	uint8_t full_v1;
	uint8_t full_v2;
	uint8_t full_v3;
	uint8_t half_v1;
	uint8_t half_v3;

	/* EDGE / UMTS / CDMA */
	uint8_t edge_ms_sup;
	uint8_t edge_psk_sup;
	uint8_t edge_psk_uplink;
	uint8_t class_900_edge;
	uint8_t class_dcs_pcs_edge;
	uint8_t umts_fdd;
	uint8_t umts_tdd;
	uint8_t cdma_2000;
	uint8_t dtm;
	uint8_t class_dtm;
	uint8_t dtm_mac;
	uint8_t dtm_egprs;
};

struct gsm_support_scan_max {
	uint16_t	start;
	uint16_t	end;
	uint16_t	max;
	uint16_t	temp;	
};
extern struct gsm_support_scan_max gsm_sup_smax[];

void gsm_support_init(struct osmocom_ms *ms);
void gsm_support_dump(struct osmocom_ms *ms,
			void (*print)(void *, const char *, ...), void *priv);

#endif /* _SUPPORT_H */