libosmogsm
0.11.0-dirty
Osmocom GSM library
|
00001 /* From GSM08.08 / 3GPP TS 48.008 version 11.7.0 Release 11 */ 00002 00003 #pragma once 00004 00005 #include <stdlib.h> 00006 #include <stdbool.h> 00007 #include <stdint.h> 00008 #include <osmocom/core/linuxlist.h> 00009 #include <osmocom/core/utils.h> 00010 00011 /* 00012 * this is from GSM 03.03 CGI but is copied in GSM 08.08 00013 * in § 3.2.2.27 for Cell Identifier List. 00014 * See gsm0808_cell_id_discr_name() for a human readable representation. 00015 */ 00016 enum CELL_IDENT { 00017 CELL_IDENT_WHOLE_GLOBAL = 0, 00018 CELL_IDENT_LAC_AND_CI = 1, 00019 CELL_IDENT_CI = 2, 00020 CELL_IDENT_NO_CELL = 3, 00021 CELL_IDENT_LAI_AND_LAC = 4, 00022 CELL_IDENT_LAC = 5, 00023 CELL_IDENT_BSS = 6, 00024 CELL_IDENT_UTRAN_PLMN_LAC_RNC = 8, 00025 CELL_IDENT_UTRAN_RNC = 9, 00026 CELL_IDENT_UTRAN_LAC_RNC = 10, 00027 }; 00028 00029 00030 /* GSM 08.06 § 6.3 */ 00031 enum BSSAP_MSG_TYPE { 00032 BSSAP_MSG_BSS_MANAGEMENT = 0x0, 00033 BSSAP_MSG_DTAP = 0x1, 00034 }; 00035 00036 struct bssmap_header { 00037 uint8_t type; 00038 uint8_t length; 00039 } __attribute__((packed)); 00040 00041 struct dtap_header { 00042 uint8_t type; 00043 uint8_t link_id; 00044 uint8_t length; 00045 } __attribute__((packed)); 00046 00047 00048 enum BSS_MAP_MSG_TYPE { 00049 BSS_MAP_MSG_RESERVED_0 = 0, 00050 00051 /* ASSIGNMENT MESSAGES */ 00052 BSS_MAP_MSG_ASSIGMENT_RQST = 1, 00053 BSS_MAP_MSG_ASSIGMENT_COMPLETE = 2, 00054 BSS_MAP_MSG_ASSIGMENT_FAILURE = 3, 00055 BSS_MAP_MSG_CHAN_MOD_RQST = 8, 00056 00057 /* HANDOVER MESSAGES */ 00058 BSS_MAP_MSG_HANDOVER_RQST = 16, 00059 BSS_MAP_MSG_HANDOVER_REQUIRED = 17, 00060 BSS_MAP_MSG_HANDOVER_RQST_ACKNOWLEDGE= 18, 00061 BSS_MAP_MSG_HANDOVER_CMD = 19, 00062 BSS_MAP_MSG_HANDOVER_COMPLETE = 20, 00063 BSS_MAP_MSG_HANDOVER_SUCCEEDED = 21, 00064 BSS_MAP_MSG_HANDOVER_FAILURE = 22, 00065 BSS_MAP_MSG_HANDOVER_PERFORMED = 23, 00066 BSS_MAP_MSG_HANDOVER_CANDIDATE_ENQUIRE = 24, 00067 BSS_MAP_MSG_HANDOVER_CANDIDATE_RESPONSE = 25, 00068 BSS_MAP_MSG_HANDOVER_REQUIRED_REJECT = 26, 00069 BSS_MAP_MSG_HANDOVER_DETECT = 27, 00070 BSS_MAP_MSG_INT_HANDOVER_REQUIRED = 0x70, 00071 BSS_MAP_MSG_INT_HANDOVER_REQUIRED_REJ = 0x71, 00072 BSS_MAP_MSG_INT_HANDOVER_CMD = 0x72, 00073 BSS_MAP_MSG_INT_HANDOVER_ENQUIRY = 0x73, 00074 00075 /* RELEASE MESSAGES */ 00076 BSS_MAP_MSG_CLEAR_CMD = 32, 00077 BSS_MAP_MSG_CLEAR_COMPLETE = 33, 00078 BSS_MAP_MSG_CLEAR_RQST = 34, 00079 BSS_MAP_MSG_RESERVED_1 = 35, 00080 BSS_MAP_MSG_RESERVED_2 = 36, 00081 BSS_MAP_MSG_SAPI_N_REJECT = 37, 00082 BSS_MAP_MSG_CONFUSION = 38, 00083 00084 /* OTHER CONNECTION RELATED MESSAGES */ 00085 BSS_MAP_MSG_SUSPEND = 40, 00086 BSS_MAP_MSG_RESUME = 41, 00087 BSS_MAP_MSG_CONNECTION_ORIENTED_INFORMATION = 42, 00088 BSS_MAP_MSG_PERFORM_LOCATION_RQST = 43, 00089 BSS_MAP_MSG_LSA_INFORMATION = 44, 00090 BSS_MAP_MSG_PERFORM_LOCATION_RESPONSE = 45, 00091 BSS_MAP_MSG_PERFORM_LOCATION_ABORT = 46, 00092 BSS_MAP_MSG_COMMON_ID = 47, 00093 BSS_MAP_MSG_REROUTE_CMD = 0x78, 00094 BSS_MAP_MSG_REROUTE_COMPLETE = 0x79, 00095 00096 /* GENERAL MESSAGES */ 00097 BSS_MAP_MSG_RESET = 48, 00098 BSS_MAP_MSG_RESET_ACKNOWLEDGE = 49, 00099 BSS_MAP_MSG_OVERLOAD = 50, 00100 BSS_MAP_MSG_RESERVED_3 = 51, 00101 BSS_MAP_MSG_RESET_CIRCUIT = 52, 00102 BSS_MAP_MSG_RESET_CIRCUIT_ACKNOWLEDGE = 53, 00103 BSS_MAP_MSG_MSC_INVOKE_TRACE = 54, 00104 BSS_MAP_MSG_BSS_INVOKE_TRACE = 55, 00105 BSS_MAP_MSG_CONNECTIONLESS_INFORMATION = 58, 00106 BSS_MAP_MSG_RESET_IP_RSRC = 0x3d, 00107 BSS_MAP_MSG_RESET_IP_RSRC_ACK = 0x3e, 00108 00109 /* TERRESTRIAL RESOURCE MESSAGES */ 00110 BSS_MAP_MSG_BLOCK = 64, 00111 BSS_MAP_MSG_BLOCKING_ACKNOWLEDGE = 65, 00112 BSS_MAP_MSG_UNBLOCK = 66, 00113 BSS_MAP_MSG_UNBLOCKING_ACKNOWLEDGE = 67, 00114 BSS_MAP_MSG_CIRCUIT_GROUP_BLOCK = 68, 00115 BSS_MAP_MSG_CIRCUIT_GROUP_BLOCKING_ACKNOWLEDGE = 69, 00116 BSS_MAP_MSG_CIRCUIT_GROUP_UNBLOCK = 70, 00117 BSS_MAP_MSG_CIRCUIT_GROUP_UNBLOCKING_ACKNOWLEDGE = 71, 00118 BSS_MAP_MSG_UNEQUIPPED_CIRCUIT = 72, 00119 BSS_MAP_MSG_CHANGE_CIRCUIT = 78, 00120 BSS_MAP_MSG_CHANGE_CIRCUIT_ACKNOWLEDGE = 79, 00121 00122 /* RADIO RESOURCE MESSAGES */ 00123 BSS_MAP_MSG_RESOURCE_RQST = 80, 00124 BSS_MAP_MSG_RESOURCE_INDICATION = 81, 00125 BSS_MAP_MSG_PAGING = 82, 00126 BSS_MAP_MSG_CIPHER_MODE_CMD = 83, 00127 BSS_MAP_MSG_CLASSMARK_UPDATE = 84, 00128 BSS_MAP_MSG_CIPHER_MODE_COMPLETE = 85, 00129 BSS_MAP_MSG_QUEUING_INDICATION = 86, 00130 BSS_MAP_MSG_COMPLETE_LAYER_3 = 87, 00131 BSS_MAP_MSG_CLASSMARK_RQST = 88, 00132 BSS_MAP_MSG_CIPHER_MODE_REJECT = 89, 00133 BSS_MAP_MSG_LOAD_INDICATION = 90, 00134 00135 /* VGCS/VBS */ 00136 BSS_MAP_MSG_VGCS_VBS_SETUP = 4, 00137 BSS_MAP_MSG_VGCS_VBS_SETUP_ACK = 5, 00138 BSS_MAP_MSG_VGCS_VBS_SETUP_REFUSE = 6, 00139 BSS_MAP_MSG_VGCS_VBS_ASSIGNMENT_RQST = 7, 00140 BSS_MAP_MSG_VGCS_VBS_ASSIGNMENT_RESULT = 28, 00141 BSS_MAP_MSG_VGCS_VBS_ASSIGNMENT_FAILURE = 29, 00142 BSS_MAP_MSG_VGCS_VBS_QUEUING_INDICATION = 30, 00143 BSS_MAP_MSG_UPLINK_RQST = 31, 00144 BSS_MAP_MSG_UPLINK_RQST_ACKNOWLEDGE = 39, 00145 BSS_MAP_MSG_UPLINK_RQST_CONFIRMATION = 73, 00146 BSS_MAP_MSG_UPLINK_RELEASE_INDICATION = 74, 00147 BSS_MAP_MSG_UPLINK_REJECT_CMD = 75, 00148 BSS_MAP_MSG_UPLINK_RELEASE_CMD = 76, 00149 BSS_MAP_MSG_UPLINK_SEIZED_CMD = 77, 00150 BSS_MAP_MSG_VGCS_ADDL_INFO = 0x60, 00151 BSS_MAP_MSG_NOTIFICATION_DATA = 0x62, 00152 BSS_MAP_MSG_UPLINK_APP_DATA = 0x63, 00153 00154 /* LOCAL SWITCHING */ 00155 BSS_MAP_MSG_LCLS_CONNECT_CTRL = 0x74, 00156 BSS_MAP_MSG_LCLS_CONNECT_CTRL_ACK = 0x75, 00157 BSS_MAP_MSG_LCLS_NOTIFICATION = 0x76, 00158 }; 00159 00160 enum GSM0808_IE_CODING { 00161 GSM0808_IE_CIRCUIT_IDENTITY_CODE = 1, 00162 GSM0808_IE_RESERVED_0 = 2, 00163 GSM0808_IE_RESOURCE_AVAILABLE = 3, 00164 GSM0808_IE_CAUSE = 4, 00165 GSM0808_IE_CELL_IDENTIFIER = 5, 00166 GSM0808_IE_PRIORITY = 6, 00167 GSM0808_IE_LAYER_3_HEADER_INFORMATION = 7, 00168 GSM0808_IE_IMSI = 8, 00169 GSM0808_IE_TMSI = 9, 00170 GSM0808_IE_ENCRYPTION_INFORMATION = 10, 00171 GSM0808_IE_CHANNEL_TYPE = 11, 00172 GSM0808_IE_PERIODICITY = 12, 00173 GSM0808_IE_EXTENDED_RESOURCE_INDICATOR = 13, 00174 GSM0808_IE_NUMBER_OF_MSS = 14, 00175 GSM0808_IE_RESERVED_1 = 15, 00176 GSM0808_IE_RESERVED_2 = 16, 00177 GSM0808_IE_RESERVED_3 = 17, 00178 GSM0808_IE_CLASSMARK_INFORMATION_T2 = 18, 00179 GSM0808_IE_CLASSMARK_INFORMATION_T3 = 19, 00180 GSM0808_IE_INTERFERENCE_BAND_TO_USE = 20, 00181 GSM0808_IE_RR_CAUSE = 21, 00182 GSM0808_IE_RESERVED_4 = 22, 00183 GSM0808_IE_LAYER_3_INFORMATION = 23, 00184 GSM0808_IE_DLCI = 24, 00185 GSM0808_IE_DOWNLINK_DTX_FLAG = 25, 00186 GSM0808_IE_CELL_IDENTIFIER_LIST = 26, 00187 GSM0808_IE_RESPONSE_RQST = 27, 00188 GSM0808_IE_RESOURCE_INDICATION_METHOD = 28, 00189 GSM0808_IE_CLASSMARK_INFORMATION_TYPE_1 = 29, 00190 GSM0808_IE_CIRCUIT_IDENTITY_CODE_LIST = 30, 00191 GSM0808_IE_DIAGNOSTIC = 31, 00192 GSM0808_IE_LAYER_3_MESSAGE_CONTENTS = 32, 00193 GSM0808_IE_CHOSEN_CHANNEL = 33, 00194 GSM0808_IE_TOTAL_RESOURCE_ACCESSIBLE = 34, 00195 GSM0808_IE_CIPHER_RESPONSE_MODE = 35, 00196 GSM0808_IE_CHANNEL_NEEDED = 36, 00197 GSM0808_IE_TRACE_TYPE = 37, 00198 GSM0808_IE_TRIGGERID = 38, 00199 GSM0808_IE_TRACE_REFERENCE = 39, 00200 GSM0808_IE_TRANSACTIONID = 40, 00201 GSM0808_IE_MOBILE_IDENTITY = 41, 00202 GSM0808_IE_OMCID = 42, 00203 GSM0808_IE_FORWARD_INDICATOR = 43, 00204 GSM0808_IE_CHOSEN_ENCR_ALG = 44, 00205 GSM0808_IE_CIRCUIT_POOL = 45, 00206 GSM0808_IE_CIRCUIT_POOL_LIST = 46, 00207 GSM0808_IE_TIME_INDICATION = 47, 00208 GSM0808_IE_RESOURCE_SITUATION = 48, 00209 GSM0808_IE_CURRENT_CHANNEL_TYPE_1 = 49, 00210 GSM0808_IE_QUEUEING_INDICATOR = 50, 00211 GSM0808_IE_SPEECH_VERSION = 64, 00212 GSM0808_IE_ASSIGNMENT_REQUIREMENT = 51, 00213 GSM0808_IE_TALKER_FLAG = 53, 00214 GSM0808_IE_CONNECTION_RELEASE_RQSTED = 54, 00215 GSM0808_IE_GROUP_CALL_REFERENCE = 55, 00216 GSM0808_IE_EMLPP_PRIORITY = 56, 00217 GSM0808_IE_CONFIG_EVO_INDI = 57, 00218 GSM0808_IE_OLD_BSS_TO_NEW_BSS_INFORMATION = 58, 00219 GSM0808_IE_LSA_IDENTIFIER = 59, 00220 GSM0808_IE_LSA_IDENTIFIER_LIST = 60, 00221 GSM0808_IE_LSA_INFORMATION = 61, 00222 GSM0808_IE_LCS_QOS = 62, 00223 GSM0808_IE_LSA_ACCESS_CTRL_SUPPR = 63, 00224 GSM0808_IE_LCS_PRIORITY = 67, 00225 GSM0808_IE_LOCATION_TYPE = 68, 00226 GSM0808_IE_LOCATION_ESTIMATE = 69, 00227 GSM0808_IE_POSITIONING_DATA = 70, 00228 GSM0808_IE_LCS_CAUSE = 71, 00229 GSM0808_IE_LCS_CLIENT_TYPE = 72, 00230 GSM0808_IE_APDU = 73, 00231 GSM0808_IE_NETWORK_ELEMENT_IDENTITY = 74, 00232 GSM0808_IE_GPS_ASSISTANCE_DATA = 75, 00233 GSM0808_IE_DECIPHERING_KEYS = 76, 00234 GSM0808_IE_RETURN_ERROR_RQST = 77, 00235 GSM0808_IE_RETURN_ERROR_CAUSE = 78, 00236 GSM0808_IE_SEGMENTATION = 79, 00237 GSM0808_IE_SERVICE_HANDOVER = 80, 00238 GSM0808_IE_SOURCE_RNC_TO_TARGET_RNC_TRANSPARENT_UMTS = 81, 00239 GSM0808_IE_SOURCE_RNC_TO_TARGET_RNC_TRANSPARENT_CDMA2000= 82, 00240 GSM0808_IE_RESERVED_5 = 65, 00241 GSM0808_IE_RESERVED_6 = 66, 00242 GSM0808_IE_GERAN_CLASSMARK = 0x53, 00243 GSM0808_IE_GERAN_BSC_CONTAINER = 0x54, 00244 GSM0808_IE_NEW_BSS_TO_OLD_BSS_INFO = 0x61, 00245 GSM0800_IE_INTER_SYSTEM_INFO = 0x63, 00246 GSM0808_IE_SNA_ACCESS_INFO = 0x64, 00247 GSM0808_IE_VSTK_RAND_INFO = 0x65, 00248 GSM0808_IE_VSTK_INFO = 0x66, 00249 GSM0808_IE_PAGING_INFO = 0x67, 00250 GSM0808_IE_IMEI = 0x68, 00251 GSM0808_IE_VELOCITY_ESTIMATE = 0x55, 00252 GSM0808_IE_VGCS_FEATURE_FLAGS = 0x69, 00253 GSM0808_IE_TALKER_PRIORITY = 0x6a, 00254 GSM0808_IE_EMERGENCY_SET_INDICATION = 0x6b, 00255 GSM0808_IE_TALKER_IDENTITY = 0x6c, 00256 GSM0808_IE_CELL_ID_LIST_SEGMENT = 0x6d, 00257 GSM0808_IE_SMS_TO_VGCS = 0x6e, 00258 GSM0808_IE_VGCS_TALKER_MODE = 0x6f, 00259 GSM0808_IE_VGCS_VBS_CELL_STATUS = 0x70, 00260 GSM0808_IE_CELL_ID_LIST_SEG_EST_CELLS = 0x71, 00261 GSM0808_IE_CELL_ID_LIST_SEG_CELLS_TBE = 0x72, 00262 GSM0808_IE_CELL_ID_LIST_SEG_REL_CELLS = 0x73, 00263 GSM0808_IE_CELL_ID_LIST_SEG_NE_CELLS = 0x74, 00264 GSM0808_IE_GANSS_ASSISTANCE_DATA = 0x75, 00265 GSM0808_IE_GANSS_POSITIONING_DATA = 0x76, 00266 GSM0808_IE_GANSS_LOCATION_TYPE = 0x77, 00267 GSM0808_IE_APP_DATA = 0x78, 00268 GSM0808_IE_DATA_IDENTITY = 0x79, 00269 GSM0808_IE_APP_DATA_INFO = 0x7a, 00270 GSM0808_IE_MSISDN = 0x7b, 00271 GSM0808_IE_AOIP_TRASP_ADDR = 0x7c, 00272 GSM0808_IE_SPEECH_CODEC_LIST = 0x7d, 00273 GSM0808_IE_SPEECH_CODEC = 0x7e, 00274 GSM0808_IE_CALL_ID = 0x7f, 00275 GSM0808_IE_CALL_ID_LIST = 0x80, 00276 GSM0808_IE_A_IF_SEL_FOR_RESET = 0x81, 00277 GSM0808_IE_KC_128 = 0x83, 00278 GSM0808_IE_CSG_IDENTIFIER = 0x84, 00279 GSM0808_IE_REDIR_ATTEMPT_FLAG = 0x85, 00280 GSM0808_IE_REROUTE_REJ_CAUSE = 0x86, 00281 GSM0808_IE_SEND_SEQ_NUM = 0x87, 00282 GSM0808_IE_REROUTE_COMPL_OUTCOME = 0x88, 00283 GSM0808_IE_GLOBAL_CALL_REF = 0x89, 00284 GSM0808_IE_LCLS_CONFIG = 0x8a, 00285 GSM0808_IE_LCLS_CONN_STATUS_CTRL = 0x8b, 00286 GSM0808_IE_LCLS_CORR_NOT_NEEDED = 0x8c, 00287 GSM0808_IE_LCLS_BSS_STATUS = 0x8d, 00288 GSM0808_IE_LCLS_BREAK_REQ = 0x8e, 00289 GSM0808_IE_CSFB_INDICATION = 0x8f, 00290 GSM0808_IE_CS_TO_PS_SRVCC = 0x90, 00291 GSM0808_IE_SRC_ENB_TO_TGT_ENB_TRANSP = 0x91, 00292 GSM0808_IE_CS_TO_PS_SRVCC_IND = 0x92, 00293 GSM0808_IE_CN_TO_MS_TRANSP_INFO = 0x93, 00294 GSM0808_IE_SELECTED_PLMN_ID = 0x94, 00295 GSM0808_IE_LAST_USED_EUTRAN_PLMN_ID = 0x95, 00296 }; 00297 00298 /* GSM 08.08 3.2.2.5 Cause */ 00299 enum gsm0808_cause { 00300 GSM0808_CAUSE_RADIO_INTERFACE_MESSAGE_FAILURE = 0, 00301 GSM0808_CAUSE_RADIO_INTERFACE_FAILURE = 1, 00302 GSM0808_CAUSE_UPLINK_QUALITY = 2, 00303 GSM0808_CAUSE_UPLINK_STRENGTH = 3, 00304 GSM0808_CAUSE_DOWNLINK_QUALITY = 4, 00305 GSM0808_CAUSE_DOWNLINK_STRENGTH = 5, 00306 GSM0808_CAUSE_DISTANCE = 6, 00307 GSM0808_CAUSE_O_AND_M_INTERVENTION = 7, 00308 GSM0808_CAUSE_RESPONSE_TO_MSC_INVOCATION = 8, 00309 GSM0808_CAUSE_CALL_CONTROL = 9, 00310 GSM0808_CAUSE_RADIO_INTERFACE_FAILURE_REVERSION = 10, 00311 GSM0808_CAUSE_HANDOVER_SUCCESSFUL = 11, 00312 GSM0808_CAUSE_BETTER_CELL = 12, 00313 GSM0808_CAUSE_DIRECTED_RETRY = 13, 00314 GSM0808_CAUSE_JOINED_GROUP_CALL_CHANNEL = 14, 00315 GSM0808_CAUSE_TRAFFIC = 15, 00316 GSM0808_CAUSE_REDUCE_LOAD_IN_SERVING_CELL = 0x10, 00317 GSM0808_CAUSE_TRAFFIC_LOAD_IN_TGT_HIGHER_THAN_IN_SRC_CELL = 0x11, 00318 GSM0808_CAUSE_RELOCATION_TRIGGERED = 0x12, 00319 GSM0808_CAUSE_REQUESTED_OPT_NOT_AUTHORISED = 0x14, 00320 GSM0808_CAUSE_ALT_CHAN_CONFIG_REQUESTED = 0x15, 00321 GSM0808_CAUSE_RESP_TO_INT_HO_ENQ_MSG = 0x16, 00322 GSM0808_CAUSE_INT_HO_ENQUIRY_REJECT = 0x17, 00323 GSM0808_CAUSE_REDUNDANCY_LEVEL_NOT_ADEQUATE = 0x18, 00324 GSM0808_CAUSE_EQUIPMENT_FAILURE = 32, 00325 GSM0808_CAUSE_NO_RADIO_RESOURCE_AVAILABLE = 33, 00326 GSM0808_CAUSE_RQSTED_TERRESTRIAL_RESOURCE_UNAVAILABLE = 34, 00327 GSM0808_CAUSE_CCCH_OVERLOAD = 35, 00328 GSM0808_CAUSE_PROCESSOR_OVERLOAD = 36, 00329 GSM0808_CAUSE_BSS_NOT_EQUIPPED = 37, 00330 GSM0808_CAUSE_MS_NOT_EQUIPPED = 38, 00331 GSM0808_CAUSE_INVALID_CELL = 39, 00332 GSM0808_CAUSE_TRAFFIC_LOAD = 40, 00333 GSM0808_CAUSE_PREEMPTION = 41, 00334 GSM0808_CAUSE_DTM_HO_SGSN_FAILURE = 0x2a, 00335 GSM0808_CAUSE_DTM_HO_PS_ALLOC_FAILURE = 0x2b, 00336 GSM0808_CAUSE_RQSTED_TRANSCODING_RATE_ADAPTION_UNAVAILABLE = 48, 00337 GSM0808_CAUSE_CIRCUIT_POOL_MISMATCH = 49, 00338 GSM0808_CAUSE_SWITCH_CIRCUIT_POOL = 50, 00339 GSM0808_CAUSE_RQSTED_SPEECH_VERSION_UNAVAILABLE = 51, 00340 GSM0808_CAUSE_LSA_NOT_ALLOWED = 52, 00341 GSM0808_CAUSE_REQ_CODEC_TYPE_OR_CONFIG_UNAVAIL = 0x35, 00342 GSM0808_CAUSE_REQ_A_IF_TYPE_UNAVAIL = 0x36, 00343 GSM0808_CAUSE_INVALID_CSG_CELL = 0x37, 00344 GSM0808_CAUSE_REQ_REDUND_LEVEL_NOT_AVAIL = 0x3f, 00345 GSM0808_CAUSE_CIPHERING_ALGORITHM_NOT_SUPPORTED = 64, 00346 GSM0808_CAUSE_GERAN_IU_MODE_FAILURE = 0x41, 00347 GSM0808_CAUSE_INC_RELOC_NOT_SUPP_DT_PUESBINE_FEATURE = 0x42, 00348 GSM0808_CAUSE_ACCESS_RESTRICTED_DUE_TO_SHARED_NETWORKS = 0x43, 00349 GSM0808_CAUSE_REQ_CODEC_TYPE_OR_CONFIG_NOT_SUPP = 0x44, 00350 GSM0808_CAUSE_REQ_A_IF_TYPE_NOT_SUPP = 0x45, 00351 GSM0808_CAUSE_REQ_REDUND_LVL_NOT_SUPP = 0x46, 00352 GSM0808_CAUSE_TERRESTRIAL_CIRCUIT_ALREADY_ALLOCATED = 80, 00353 GSM0808_CAUSE_INVALID_MESSAGE_CONTENTS = 81, 00354 GSM0808_CAUSE_INFORMATION_ELEMENT_OR_FIELD_MISSING = 82, 00355 GSM0808_CAUSE_INCORRECT_VALUE = 83, 00356 GSM0808_CAUSE_UNKNOWN_MESSAGE_TYPE = 84, 00357 GSM0808_CAUSE_UNKNOWN_INFORMATION_ELEMENT = 85, 00358 GSM0808_CAUSE_DTM_HO_INVALID_PS_IND = 0x56, 00359 GSM0808_CAUSE_CALL_ID_ALREADY_ALLOC = 0x57, 00360 GSM0808_CAUSE_PROTOCOL_ERROR_BETWEEN_BSS_AND_MSC = 96, 00361 GSM0808_CAUSE_VGCS_VBS_CALL_NON_EXISTENT = 0x61, 00362 GSM0808_CAUSE_DTM_HO_TIMER_EXPIRY = 0x62, 00363 }; 00364 00365 /* GSM 08.08 3.2.2.11 Channel Type */ 00366 enum gsm0808_chan_indicator { 00367 GSM0808_CHAN_SPEECH = 1, 00368 GSM0808_CHAN_DATA = 2, 00369 GSM0808_CHAN_SIGN = 3, 00370 }; 00371 00372 /* GSM 08.08 3.2.2.11 Channel Type */ 00373 enum gsm0808_chan_rate_type_data { 00374 GSM0808_DATA_FULL_BM = 0x8, 00375 GSM0808_DATA_HALF_LM = 0x9, 00376 GSM0808_DATA_FULL_RPREF = 0xa, 00377 GSM0808_DATA_HALF_PREF = 0xb, 00378 GSM0808_DATA_FULL_PREF_NO_CHANGE = 0x1a, 00379 GSM0808_DATA_HALF_PREF_NO_CHANGE = 0x1b, 00380 GSM0808_DATA_MULTI_MASK = 0x20, 00381 GSM0808_DATA_MULTI_MASK_NO_CHANGE = 0x30, 00382 }; 00383 00384 /* GSM 08.08 3.2.2.11 Channel Type */ 00385 enum gsm0808_chan_rate_type_speech { 00386 GSM0808_SPEECH_FULL_BM = 0x8, 00387 GSM0808_SPEECH_HALF_LM = 0x9, 00388 GSM0808_SPEECH_FULL_PREF= 0xa, 00389 GSM0808_SPEECH_HALF_PREF= 0xb, 00390 GSM0808_SPEECH_FULL_PREF_NO_CHANGE = 0x1a, 00391 GSM0808_SPEECH_HALF_PREF_NO_CHANGE = 0x1b, 00392 GSM0808_SPEECH_PERM = 0xf, 00393 GSM0808_SPEECH_PERM_NO_CHANGE = 0x1f, 00394 }; 00395 00398 enum gsm0808_permitted_speech { 00399 GSM0808_PERM_FR1 = 0x01, 00400 GSM0808_PERM_FR2 = 0x11, 00401 GSM0808_PERM_FR3 = 0x21, 00402 GSM0808_PERM_FR4 = 0x41, 00403 GSM0808_PERM_FR5 = 0x42, 00404 GSM0808_PERM_HR1 = GSM0808_PERM_FR1 | 0x4, 00405 GSM0808_PERM_HR2 = GSM0808_PERM_FR2 | 0x4, 00406 GSM0808_PERM_HR3 = GSM0808_PERM_FR3 | 0x4, 00407 GSM0808_PERM_HR4 = 0x46, 00408 GSM0808_PERM_HR6 = 0x45, 00409 }; 00410 00412 enum gsm0808_speech_codec_type { 00413 GSM0808_SCT_FR1 = 0x0, 00414 GSM0808_SCT_FR2 = 0x2, 00415 GSM0808_SCT_FR3 = 0x3, 00416 GSM0808_SCT_FR4 = 0xc, 00417 GSM0808_SCT_FR5 = 0x9, 00418 GSM0808_SCT_HR1 = 0x1, 00419 GSM0808_SCT_HR3 = 0x4, 00420 GSM0808_SCT_HR4 = 0xd, 00421 GSM0808_SCT_HR6 = 0xb, 00422 GSM0808_SCT_CSD = 0xfd, 00423 }; 00424 00425 extern const struct value_string gsm0808_speech_codec_type_names[]; 00426 static inline const char *gsm0808_speech_codec_type_name(enum gsm0808_speech_codec_type val) 00427 { return get_value_string(gsm0808_speech_codec_type_names, val); } 00428 00429 /* GSM 08.08 3.2.2.44 Chosen Encryption Algorithm */ 00430 enum gsm0808_chosen_enc_alg { 00431 GSM0808_ALG_ID_A5_0 = 0x01, 00432 GSM0808_ALG_ID_A5_1 = 0x02, 00433 GSM0808_ALG_ID_A5_2 = 0x03, 00434 GSM0808_ALG_ID_A5_3 = 0x04, 00435 GSM0808_ALG_ID_A5_4 = 0x05, 00436 GSM0808_ALG_ID_A5_5 = 0x06, 00437 GSM0808_ALG_ID_A5_6 = 0x07, 00438 GSM0808_ALG_ID_A5_7 = 0x08, 00439 }; 00440 00441 /* GSM 08.08 3.2.2.85 Paging Information */ 00442 enum gsm0808_paging_info { 00443 GSM0808_PAGINF_FOR_MT_CALL = 0x00, 00444 GSM0808_PAGINF_FOR_SMS = 0x01, 00445 GSM0808_PAGINF_FOR_USSD = 0x02, 00446 }; 00447 00448 /* 3GPP TS 48.008 3.2.2.104 Speech Codec */ 00449 struct gsm0808_speech_codec { 00450 bool fi; 00451 bool pi; 00452 bool pt; 00453 bool tf; 00454 uint8_t type; 00455 uint16_t cfg; 00456 }; 00457 00470 enum gsm0808_speech_codec_defaults { 00471 GSM0808_SC_CFG_DEFAULT_FR_AMR = 0x57ff, 00472 GSM0808_SC_CFG_DEFAULT_HR_AMR = 0x073f, 00473 GSM0808_SC_CFG_DEFAULT_OHR_AMR = 0x57ff, 00474 GSM0808_SC_CFG_DEFAULT_FR_AMR_WB = 0x01, 00475 GSM0808_SC_CFG_DEFAULT_OFR_AMR_WB = 0x3f, 00476 GSM0808_SC_CFG_DEFAULT_OHR_AMR_WB = 0x01, 00477 }; 00478 00479 /* 3GPP TS 48.008 3.2.2.103 Speech Codec List */ 00480 #define SPEECH_CODEC_MAXLEN 255 00481 struct gsm0808_speech_codec_list { 00482 struct gsm0808_speech_codec codec[SPEECH_CODEC_MAXLEN]; 00483 uint8_t len; 00484 }; 00485 00486 /* 3GPP TS 48.008 3.2.2.11 Channel Type */ 00487 #define CH_TYPE_PERM_SPCH_MAXLEN 9 00488 struct gsm0808_channel_type { 00489 uint8_t ch_indctr; 00490 uint8_t ch_rate_type; 00491 uint8_t perm_spch[CH_TYPE_PERM_SPCH_MAXLEN]; 00492 unsigned int perm_spch_len; 00493 }; 00494 00495 /* 3GPP TS 48.008 3.2.2.10 Encryption Information */ 00496 #define ENCRY_INFO_KEY_MAXLEN 252 00497 #define ENCRY_INFO_PERM_ALGO_MAXLEN 8 00498 struct gsm0808_encrypt_info { 00499 uint8_t perm_algo[ENCRY_INFO_PERM_ALGO_MAXLEN]; 00500 unsigned int perm_algo_len; 00501 uint8_t key[ENCRY_INFO_KEY_MAXLEN]; 00502 unsigned int key_len; 00503 }; 00504 00505 #define CELL_ID_LIST_LAC_MAXLEN 127 00506 00512 struct gsm0808_cell_id_list { 00513 uint8_t id_discr; 00514 uint16_t id_list_lac[CELL_ID_LIST_LAC_MAXLEN]; 00515 unsigned int id_list_len; 00516 };