gsm 08.08: Fix some u_int8_t -> uint8_t
[osmocom-bb.git] / include / osmocore / protocol / gsm_08_08.h
1 /* From GSM08.08 */
2
3 #ifndef GSM_0808_H
4 #define GSM_0808_H
5
6 #include <stdlib.h>
7
8 /*
9  * this is from GSM 03.03 CGI but is copied in GSM 08.08
10  * in § 3.2.2.27 for Cell Identifier List
11  */
12 enum CELL_IDENT {
13         CELL_IDENT_WHOLE_GLOBAL         = 0,
14         CELL_IDENT_LAC_AND_CI           = 1,
15         CELL_IDENT_CI                   = 2,
16         CELL_IDENT_NO_CELL              = 3,
17         CELL_IDENT_LAI_AND_LAC          = 4,
18         CELL_IDENT_LAC                  = 5,
19         CELL_IDENT_BSS                  = 6,
20         CELL_IDENT_UTRAN_PLMN_LAC_RNC   = 8,
21         CELL_IDENT_UTRAN_RNC            = 9,
22         CELL_IDENT_UTRAN_LAC_RNC        = 10,
23 };
24
25
26 /* GSM 08.06 § 6.3 */
27 enum BSSAP_MSG_TYPE {
28         BSSAP_MSG_BSS_MANAGEMENT    = 0x0,
29         BSSAP_MSG_DTAP              = 0x1,
30 };
31
32 struct bssmap_header {
33         uint8_t type;
34         uint8_t length;
35 } __attribute__((packed));
36
37 struct dtap_header {
38         uint8_t type;
39         uint8_t link_id;
40         uint8_t length;
41 } __attribute__((packed));
42
43
44 enum BSS_MAP_MSG_TYPE {
45         BSS_MAP_MSG_RESERVED_0          = 0,
46
47         /* ASSIGNMENT MESSAGES */
48         BSS_MAP_MSG_ASSIGMENT_RQST      = 1,
49         BSS_MAP_MSG_ASSIGMENT_COMPLETE  = 2,
50         BSS_MAP_MSG_ASSIGMENT_FAILURE   = 3,
51
52         /*  HANDOVER MESSAGES */
53         BSS_MAP_MSG_HANDOVER_RQST               = 16,
54         BSS_MAP_MSG_HANDOVER_REQUIRED           = 17,
55         BSS_MAP_MSG_HANDOVER_RQST_ACKNOWLEDGE= 18,
56         BSS_MAP_MSG_HANDOVER_CMD                = 19,
57         BSS_MAP_MSG_HANDOVER_COMPLETE           = 20,
58         BSS_MAP_MSG_HANDOVER_SUCCEEDED          = 21,
59         BSS_MAP_MSG_HANDOVER_FAILURE            = 22,
60         BSS_MAP_MSG_HANDOVER_PERFORMED          = 23,
61         BSS_MAP_MSG_HANDOVER_CANDIDATE_ENQUIRE  = 24,
62         BSS_MAP_MSG_HANDOVER_CANDIDATE_RESPONSE = 25,
63         BSS_MAP_MSG_HANDOVER_REQUIRED_REJECT    = 26,
64         BSS_MAP_MSG_HANDOVER_DETECT             = 27,
65
66         /* RELEASE MESSAGES */
67         BSS_MAP_MSG_CLEAR_CMD           = 32,
68         BSS_MAP_MSG_CLEAR_COMPLETE              = 33,
69         BSS_MAP_MSG_CLEAR_RQST          = 34,
70         BSS_MAP_MSG_RESERVED_1                  = 35,
71         BSS_MAP_MSG_RESERVED_2                  = 36,
72         BSS_MAP_MSG_SAPI_N_REJECT               = 37,
73         BSS_MAP_MSG_CONFUSION                   = 38,
74
75         /* OTHER CONNECTION RELATED MESSAGES */
76         BSS_MAP_MSG_SUSPEND                     = 40,
77         BSS_MAP_MSG_RESUME                      = 41,
78         BSS_MAP_MSG_CONNECTION_ORIENTED_INFORMATION = 42,
79         BSS_MAP_MSG_PERFORM_LOCATION_RQST       = 43,
80         BSS_MAP_MSG_LSA_INFORMATION             = 44,
81         BSS_MAP_MSG_PERFORM_LOCATION_RESPONSE   = 45,
82         BSS_MAP_MSG_PERFORM_LOCATION_ABORT      = 46,
83         BSS_MAP_MSG_COMMON_ID                   = 47,
84
85         /* GENERAL MESSAGES */
86         BSS_MAP_MSG_RESET                       = 48,
87         BSS_MAP_MSG_RESET_ACKNOWLEDGE           = 49,
88         BSS_MAP_MSG_OVERLOAD                    = 50,
89         BSS_MAP_MSG_RESERVED_3                  = 51,
90         BSS_MAP_MSG_RESET_CIRCUIT               = 52,
91         BSS_MAP_MSG_RESET_CIRCUIT_ACKNOWLEDGE   = 53,
92         BSS_MAP_MSG_MSC_INVOKE_TRACE            = 54,
93         BSS_MAP_MSG_BSS_INVOKE_TRACE            = 55,
94         BSS_MAP_MSG_CONNECTIONLESS_INFORMATION  = 58,
95
96         /* TERRESTRIAL RESOURCE MESSAGES */
97         BSS_MAP_MSG_BLOCK                       = 64,
98         BSS_MAP_MSG_BLOCKING_ACKNOWLEDGE        = 65,
99         BSS_MAP_MSG_UNBLOCK                     = 66,
100         BSS_MAP_MSG_UNBLOCKING_ACKNOWLEDGE      = 67,
101         BSS_MAP_MSG_CIRCUIT_GROUP_BLOCK         = 68,
102         BSS_MAP_MSG_CIRCUIT_GROUP_BLOCKING_ACKNOWLEDGE  = 69,
103         BSS_MAP_MSG_CIRCUIT_GROUP_UNBLOCK       = 70,
104         BSS_MAP_MSG_CIRCUIT_GROUP_UNBLOCKING_ACKNOWLEDGE = 71,
105         BSS_MAP_MSG_UNEQUIPPED_CIRCUIT          = 72,
106         BSS_MAP_MSG_CHANGE_CIRCUIT              = 78,
107         BSS_MAP_MSG_CHANGE_CIRCUIT_ACKNOWLEDGE  = 79,
108
109         /* RADIO RESOURCE MESSAGES */
110         BSS_MAP_MSG_RESOURCE_RQST               = 80,
111         BSS_MAP_MSG_RESOURCE_INDICATION         = 81,
112         BSS_MAP_MSG_PAGING                      = 82,
113         BSS_MAP_MSG_CIPHER_MODE_CMD             = 83,
114         BSS_MAP_MSG_CLASSMARK_UPDATE            = 84,
115         BSS_MAP_MSG_CIPHER_MODE_COMPLETE        = 85,
116         BSS_MAP_MSG_QUEUING_INDICATION          = 86,
117         BSS_MAP_MSG_COMPLETE_LAYER_3            = 87,
118         BSS_MAP_MSG_CLASSMARK_RQST              = 88,
119         BSS_MAP_MSG_CIPHER_MODE_REJECT          = 89,
120         BSS_MAP_MSG_LOAD_INDICATION             = 90,
121
122         /* VGCS/VBS */
123         BSS_MAP_MSG_VGCS_VBS_SETUP              = 4,
124         BSS_MAP_MSG_VGCS_VBS_SETUP_ACK          = 5,
125         BSS_MAP_MSG_VGCS_VBS_SETUP_REFUSE       = 6,
126         BSS_MAP_MSG_VGCS_VBS_ASSIGNMENT_RQST    = 7,
127         BSS_MAP_MSG_VGCS_VBS_ASSIGNMENT_RESULT  = 28,
128         BSS_MAP_MSG_VGCS_VBS_ASSIGNMENT_FAILURE = 29,
129         BSS_MAP_MSG_VGCS_VBS_QUEUING_INDICATION = 30,
130         BSS_MAP_MSG_UPLINK_RQST         = 31,
131         BSS_MAP_MSG_UPLINK_RQST_ACKNOWLEDGE     = 39,
132         BSS_MAP_MSG_UPLINK_RQST_CONFIRMATION    = 73,
133         BSS_MAP_MSG_UPLINK_RELEASE_INDICATION   = 74,
134         BSS_MAP_MSG_UPLINK_REJECT_CMD   = 75,
135         BSS_MAP_MSG_UPLINK_RELEASE_CMD  = 76,
136         BSS_MAP_MSG_UPLINK_SEIZED_CMD   = 77,
137 };
138
139 enum GSM0808_IE_CODING {
140         GSM0808_IE_CIRCUIT_IDENTITY_CODE        = 1,
141         GSM0808_IE_RESERVED_0                   = 2,
142         GSM0808_IE_RESOURCE_AVAILABLE           = 3,
143         GSM0808_IE_CAUSE                        = 4,
144         GSM0808_IE_CELL_IDENTIFIER              = 5,
145         GSM0808_IE_PRIORITY                     = 6,
146         GSM0808_IE_LAYER_3_HEADER_INFORMATION   = 7,
147         GSM0808_IE_IMSI                         = 8,
148         GSM0808_IE_TMSI                         = 9,
149         GSM0808_IE_ENCRYPTION_INFORMATION       = 10,
150         GSM0808_IE_CHANNEL_TYPE                 = 11,
151         GSM0808_IE_PERIODICITY                  = 12,
152         GSM0808_IE_EXTENDED_RESOURCE_INDICATOR  = 13,
153         GSM0808_IE_NUMBER_OF_MSS                = 14,
154         GSM0808_IE_RESERVED_1                   = 15,
155         GSM0808_IE_RESERVED_2                   = 16,
156         GSM0808_IE_RESERVED_3                   = 17,
157         GSM0808_IE_CLASSMARK_INFORMATION_T2     = 18,
158         GSM0808_IE_CLASSMARK_INFORMATION_T3     = 19,
159         GSM0808_IE_INTERFERENCE_BAND_TO_USE     = 20,
160         GSM0808_IE_RR_CAUSE                     = 21,
161         GSM0808_IE_RESERVED_4                   = 22,
162         GSM0808_IE_LAYER_3_INFORMATION          = 23,
163         GSM0808_IE_DLCI                         = 24,
164         GSM0808_IE_DOWNLINK_DTX_FLAG            = 25,
165         GSM0808_IE_CELL_IDENTIFIER_LIST         = 26,
166         GSM0808_IE_RESPONSE_RQST                = 27,
167         GSM0808_IE_RESOURCE_INDICATION_METHOD   = 28,
168         GSM0808_IE_CLASSMARK_INFORMATION_TYPE_1 = 29,
169         GSM0808_IE_CIRCUIT_IDENTITY_CODE_LIST   = 30,
170         GSM0808_IE_DIAGNOSTIC                   = 31,
171         GSM0808_IE_LAYER_3_MESSAGE_CONTENTS     = 32,
172         GSM0808_IE_CHOSEN_CHANNEL               = 33,
173         GSM0808_IE_TOTAL_RESOURCE_ACCESSIBLE    = 34,
174         GSM0808_IE_CIPHER_RESPONSE_MODE         = 35,
175         GSM0808_IE_CHANNEL_NEEDED               = 36,
176         GSM0808_IE_TRACE_TYPE                   = 37,
177         GSM0808_IE_TRIGGERID                    = 38,
178         GSM0808_IE_TRACE_REFERENCE              = 39,
179         GSM0808_IE_TRANSACTIONID                = 40,
180         GSM0808_IE_MOBILE_IDENTITY              = 41,
181         GSM0808_IE_OMCID                        = 42,
182         GSM0808_IE_FORWARD_INDICATOR            = 43,
183         GSM0808_IE_CHOSEN_ENCR_ALG              = 44,
184         GSM0808_IE_CIRCUIT_POOL                 = 45,
185         GSM0808_IE_CIRCUIT_POOL_LIST            = 46,
186         GSM0808_IE_TIME_INDICATION              = 47,
187         GSM0808_IE_RESOURCE_SITUATION           = 48,
188         GSM0808_IE_CURRENT_CHANNEL_TYPE_1       = 49,
189         GSM0808_IE_QUEUEING_INDICATOR           = 50,
190         GSM0808_IE_SPEECH_VERSION               = 64,
191         GSM0808_IE_ASSIGNMENT_REQUIREMENT       = 51,
192         GSM0808_IE_TALKER_FLAG                  = 53,
193         GSM0808_IE_CONNECTION_RELEASE_RQSTED    = 54,
194         GSM0808_IE_GROUP_CALL_REFERENCE         = 55,
195         GSM0808_IE_EMLPP_PRIORITY               = 56,
196         GSM0808_IE_CONFIG_EVO_INDI              = 57,
197         GSM0808_IE_OLD_BSS_TO_NEW_BSS_INFORMATION       = 58,
198         GSM0808_IE_LSA_IDENTIFIER               = 59,
199         GSM0808_IE_LSA_IDENTIFIER_LIST          = 60,
200         GSM0808_IE_LSA_INFORMATION              = 61,
201         GSM0808_IE_LCS_QOS                      = 62,
202         GSM0808_IE_LSA_ACCESS_CTRL_SUPPR        = 63,
203         GSM0808_IE_LCS_PRIORITY                 = 67,
204         GSM0808_IE_LOCATION_TYPE                = 68,
205         GSM0808_IE_LOCATION_ESTIMATE            = 69,
206         GSM0808_IE_POSITIONING_DATA             = 70,
207         GSM0808_IE_LCS_CAUSE                    = 71,
208         GSM0808_IE_LCS_CLIENT_TYPE              = 72,
209         GSM0808_IE_APDU                         = 73,
210         GSM0808_IE_NETWORK_ELEMENT_IDENTITY     = 74,
211         GSM0808_IE_GPS_ASSISTANCE_DATA          = 75,
212         GSM0808_IE_DECIPHERING_KEYS             = 76,
213         GSM0808_IE_RETURN_ERROR_RQST            = 77,
214         GSM0808_IE_RETURN_ERROR_CAUSE           = 78,
215         GSM0808_IE_SEGMENTATION                 = 79,
216         GSM0808_IE_SERVICE_HANDOVER             = 80,
217         GSM0808_IE_SOURCE_RNC_TO_TARGET_RNC_TRANSPARENT_UMTS    = 81,
218         GSM0808_IE_SOURCE_RNC_TO_TARGET_RNC_TRANSPARENT_CDMA2000= 82,
219         GSM0808_IE_RESERVED_5                   = 65,
220         GSM0808_IE_RESERVED_6                   = 66,
221 };
222
223 enum gsm0808_cause {
224         GSM0808_CAUSE_RADIO_INTERFACE_MESSAGE_FAILURE                   = 0,
225         GSM0808_CAUSE_RADIO_INTERFACE_FAILURE                           = 1,
226         GSM0808_CAUSE_UPLINK_QUALITY                                    = 2,
227         GSM0808_CAUSE_UPLINK_STRENGTH                                   = 3,
228         GSM0808_CAUSE_DOWNLINK_QUALITY                                  = 4,
229         GSM0808_CAUSE_DOWNLINK_STRENGTH                                 = 5,
230         GSM0808_CAUSE_DISTANCE                                          = 6,
231         GSM0808_CAUSE_O_AND_M_INTERVENTION                              = 7,
232         GSM0808_CAUSE_RESPONSE_TO_MSC_INVOCATION                        = 8,
233         GSM0808_CAUSE_CALL_CONTROL                                      = 9,
234         GSM0808_CAUSE_RADIO_INTERFACE_FAILURE_REVERSION                 = 10,
235         GSM0808_CAUSE_HANDOVER_SUCCESSFUL                               = 11,
236         GSM0808_CAUSE_BETTER_CELL                                       = 12,
237         GSM0808_CAUSE_DIRECTED_RETRY                                    = 13,
238         GSM0808_CAUSE_JOINED_GROUP_CALL_CHANNEL                         = 14,
239         GSM0808_CAUSE_TRAFFIC                                           = 15,
240         GSM0808_CAUSE_EQUIPMENT_FAILURE                                 = 32,
241         GSM0808_CAUSE_NO_RADIO_RESOURCE_AVAILABLE                       = 33,
242         GSM0808_CAUSE_RQSTED_TERRESTRIAL_RESOURCE_UNAVAILABLE   = 34,
243         GSM0808_CAUSE_CCCH_OVERLOAD                                     = 35,
244         GSM0808_CAUSE_PROCESSOR_OVERLOAD                                = 36,
245         GSM0808_CAUSE_BSS_NOT_EQUIPPED                                  = 37,
246         GSM0808_CAUSE_MS_NOT_EQUIPPED                                   = 38,
247         GSM0808_CAUSE_INVALID_CELL                                      = 39,
248         GSM0808_CAUSE_TRAFFIC_LOAD                                      = 40,
249         GSM0808_CAUSE_PREEMPTION                                        = 41,
250         GSM0808_CAUSE_RQSTED_TRANSCODING_RATE_ADAPTION_UNAVAILABLE      = 48,
251         GSM0808_CAUSE_CIRCUIT_POOL_MISMATCH                             = 49,
252         GSM0808_CAUSE_SWITCH_CIRCUIT_POOL                               = 50,
253         GSM0808_CAUSE_RQSTED_SPEECH_VERSION_UNAVAILABLE         = 51,
254         GSM0808_CAUSE_LSA_NOT_ALLOWED                                   = 52,
255         GSM0808_CAUSE_CIPHERING_ALGORITHM_NOT_SUPPORTED                 = 64,
256         GSM0808_CAUSE_TERRESTRIAL_CIRCUIT_ALREADY_ALLOCATED             = 80,
257         GSM0808_CAUSE_INVALID_MESSAGE_CONTENTS                          = 81,
258         GSM0808_CAUSE_INFORMATION_ELEMENT_OR_FIELD_MISSING              = 82,
259         GSM0808_CAUSE_INCORRECT_VALUE                                   = 83,
260         GSM0808_CAUSE_UNKNOWN_MESSAGE_TYPE                              = 84,
261         GSM0808_CAUSE_UNKNOWN_INFORMATION_ELEMENT                       = 85,
262         GSM0808_CAUSE_PROTOCOL_ERROR_BETWEEN_BSS_AND_MSC                = 96,
263 };
264
265 /* GSM 08.08 3.2.2.11 Channel Type */
266 enum gsm0808_chan_indicator {
267         GSM0808_CHAN_SPEECH = 1,
268         GSM0808_CHAN_DATA   = 2,
269         GSM0808_CHAN_SIGN   = 3,
270 };
271
272 enum gsm0808_chan_rate_type_data {
273         GSM0808_DATA_FULL_BM    = 0x8,
274         GSM0808_DATA_HALF_LM    = 0x9,
275         GSM0808_DATA_FULL_RPREF = 0xa,
276         GSM0808_DATA_HALF_PREF  = 0xb,
277         GSM0808_DATA_FULL_PREF_NO_CHANGE        = 0x1a,
278         GSM0808_DATA_HALF_PREF_NO_CHANGE        = 0x1b,
279         GSM0808_DATA_MULTI_MASK = 0x20,
280         GSM0808_DATA_MULTI_MASK_NO_CHANGE       = 0x30,
281 };
282
283 enum gsm0808_chan_rate_type_speech {
284         GSM0808_SPEECH_FULL_BM  = 0x8,
285         GSM0808_SPEECH_HALF_LM  = 0x9,
286         GSM0808_SPEECH_FULL_PREF= 0xa,
287         GSM0808_SPEECH_HALF_PREF= 0xb,
288         GSM0808_SPEECH_FULL_PREF_NO_CHANGE      = 0x1a,
289         GSM0808_SPEECH_HALF_PREF_NO_CHANGE      = 0x1b,
290         GSM0808_SPEECH_PERM     = 0xf,
291         GSM0808_SPEECH_PERM_NO_CHANGE = 0x1f,
292 };
293
294 enum gsm0808_permitted_speech {
295         GSM0808_PERM_FR1        = 0x01,
296         GSM0808_PERM_FR2        = 0x11,
297         GSM0808_PERM_FR3        = 0x21,
298         GSM0808_PERM_HR1        = GSM0808_PERM_FR1 | 0x4,
299         GSM0808_PERM_HR2        = GSM0808_PERM_FR2 | 0x4,
300         GSM0808_PERM_HR3        = GSM0808_PERM_FR3 | 0x4,
301 };
302
303 #endif