libosmogsm  0.11.0-dirty
Osmocom GSM library
include/osmocom/gsm/protocol/gsm_08_08.h
Go to the documentation of this file.
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 };
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines