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