/* From GSM08.08 */ #ifndef GSM_0808_H #define GSM_0808_H #include /* * this is from GSM 03.03 CGI but is copied in GSM 08.08 * in § 3.2.2.27 for Cell Identifier List */ enum CELL_IDENT { CELL_IDENT_WHOLE_GLOBAL = 0, CELL_IDENT_LAC_AND_CI = 1, CELL_IDENT_CI = 2, CELL_IDENT_NO_CELL = 3, CELL_IDENT_LAI_AND_LAC = 4, CELL_IDENT_LAC = 5, CELL_IDENT_BSS = 6, CELL_IDENT_UTRAN_PLMN_LAC_RNC = 8, CELL_IDENT_UTRAN_RNC = 9, CELL_IDENT_UTRAN_LAC_RNC = 10, }; /* GSM 08.06 § 6.3 */ enum BSSAP_MSG_TYPE { BSSAP_MSG_BSS_MANAGEMENT = 0x0, BSSAP_MSG_DTAP = 0x1, }; struct bssmap_header { uint8_t type; uint8_t length; } __attribute__((packed)); struct dtap_header { uint8_t type; uint8_t link_id; uint8_t length; } __attribute__((packed)); enum BSS_MAP_MSG_TYPE { BSS_MAP_MSG_RESERVED_0 = 0, /* ASSIGNMENT MESSAGES */ BSS_MAP_MSG_ASSIGMENT_RQST = 1, BSS_MAP_MSG_ASSIGMENT_COMPLETE = 2, BSS_MAP_MSG_ASSIGMENT_FAILURE = 3, /* HANDOVER MESSAGES */ BSS_MAP_MSG_HANDOVER_RQST = 16, BSS_MAP_MSG_HANDOVER_REQUIRED = 17, BSS_MAP_MSG_HANDOVER_RQST_ACKNOWLEDGE= 18, BSS_MAP_MSG_HANDOVER_CMD = 19, BSS_MAP_MSG_HANDOVER_COMPLETE = 20, BSS_MAP_MSG_HANDOVER_SUCCEEDED = 21, BSS_MAP_MSG_HANDOVER_FAILURE = 22, BSS_MAP_MSG_HANDOVER_PERFORMED = 23, BSS_MAP_MSG_HANDOVER_CANDIDATE_ENQUIRE = 24, BSS_MAP_MSG_HANDOVER_CANDIDATE_RESPONSE = 25, BSS_MAP_MSG_HANDOVER_REQUIRED_REJECT = 26, BSS_MAP_MSG_HANDOVER_DETECT = 27, /* RELEASE MESSAGES */ BSS_MAP_MSG_CLEAR_CMD = 32, BSS_MAP_MSG_CLEAR_COMPLETE = 33, BSS_MAP_MSG_CLEAR_RQST = 34, BSS_MAP_MSG_RESERVED_1 = 35, BSS_MAP_MSG_RESERVED_2 = 36, BSS_MAP_MSG_SAPI_N_REJECT = 37, BSS_MAP_MSG_CONFUSION = 38, /* OTHER CONNECTION RELATED MESSAGES */ BSS_MAP_MSG_SUSPEND = 40, BSS_MAP_MSG_RESUME = 41, BSS_MAP_MSG_CONNECTION_ORIENTED_INFORMATION = 42, BSS_MAP_MSG_PERFORM_LOCATION_RQST = 43, BSS_MAP_MSG_LSA_INFORMATION = 44, BSS_MAP_MSG_PERFORM_LOCATION_RESPONSE = 45, BSS_MAP_MSG_PERFORM_LOCATION_ABORT = 46, BSS_MAP_MSG_COMMON_ID = 47, /* GENERAL MESSAGES */ BSS_MAP_MSG_RESET = 48, BSS_MAP_MSG_RESET_ACKNOWLEDGE = 49, BSS_MAP_MSG_OVERLOAD = 50, BSS_MAP_MSG_RESERVED_3 = 51, BSS_MAP_MSG_RESET_CIRCUIT = 52, BSS_MAP_MSG_RESET_CIRCUIT_ACKNOWLEDGE = 53, BSS_MAP_MSG_MSC_INVOKE_TRACE = 54, BSS_MAP_MSG_BSS_INVOKE_TRACE = 55, BSS_MAP_MSG_CONNECTIONLESS_INFORMATION = 58, /* TERRESTRIAL RESOURCE MESSAGES */ BSS_MAP_MSG_BLOCK = 64, BSS_MAP_MSG_BLOCKING_ACKNOWLEDGE = 65, BSS_MAP_MSG_UNBLOCK = 66, BSS_MAP_MSG_UNBLOCKING_ACKNOWLEDGE = 67, BSS_MAP_MSG_CIRCUIT_GROUP_BLOCK = 68, BSS_MAP_MSG_CIRCUIT_GROUP_BLOCKING_ACKNOWLEDGE = 69, BSS_MAP_MSG_CIRCUIT_GROUP_UNBLOCK = 70, BSS_MAP_MSG_CIRCUIT_GROUP_UNBLOCKING_ACKNOWLEDGE = 71, BSS_MAP_MSG_UNEQUIPPED_CIRCUIT = 72, BSS_MAP_MSG_CHANGE_CIRCUIT = 78, BSS_MAP_MSG_CHANGE_CIRCUIT_ACKNOWLEDGE = 79, /* RADIO RESOURCE MESSAGES */ BSS_MAP_MSG_RESOURCE_RQST = 80, BSS_MAP_MSG_RESOURCE_INDICATION = 81, BSS_MAP_MSG_PAGING = 82, BSS_MAP_MSG_CIPHER_MODE_CMD = 83, BSS_MAP_MSG_CLASSMARK_UPDATE = 84, BSS_MAP_MSG_CIPHER_MODE_COMPLETE = 85, BSS_MAP_MSG_QUEUING_INDICATION = 86, BSS_MAP_MSG_COMPLETE_LAYER_3 = 87, BSS_MAP_MSG_CLASSMARK_RQST = 88, BSS_MAP_MSG_CIPHER_MODE_REJECT = 89, BSS_MAP_MSG_LOAD_INDICATION = 90, /* VGCS/VBS */ BSS_MAP_MSG_VGCS_VBS_SETUP = 4, BSS_MAP_MSG_VGCS_VBS_SETUP_ACK = 5, BSS_MAP_MSG_VGCS_VBS_SETUP_REFUSE = 6, BSS_MAP_MSG_VGCS_VBS_ASSIGNMENT_RQST = 7, BSS_MAP_MSG_VGCS_VBS_ASSIGNMENT_RESULT = 28, BSS_MAP_MSG_VGCS_VBS_ASSIGNMENT_FAILURE = 29, BSS_MAP_MSG_VGCS_VBS_QUEUING_INDICATION = 30, BSS_MAP_MSG_UPLINK_RQST = 31, BSS_MAP_MSG_UPLINK_RQST_ACKNOWLEDGE = 39, BSS_MAP_MSG_UPLINK_RQST_CONFIRMATION = 73, BSS_MAP_MSG_UPLINK_RELEASE_INDICATION = 74, BSS_MAP_MSG_UPLINK_REJECT_CMD = 75, BSS_MAP_MSG_UPLINK_RELEASE_CMD = 76, BSS_MAP_MSG_UPLINK_SEIZED_CMD = 77, }; enum GSM0808_IE_CODING { GSM0808_IE_CIRCUIT_IDENTITY_CODE = 1, GSM0808_IE_RESERVED_0 = 2, GSM0808_IE_RESOURCE_AVAILABLE = 3, GSM0808_IE_CAUSE = 4, GSM0808_IE_CELL_IDENTIFIER = 5, GSM0808_IE_PRIORITY = 6, GSM0808_IE_LAYER_3_HEADER_INFORMATION = 7, GSM0808_IE_IMSI = 8, GSM0808_IE_TMSI = 9, GSM0808_IE_ENCRYPTION_INFORMATION = 10, GSM0808_IE_CHANNEL_TYPE = 11, GSM0808_IE_PERIODICITY = 12, GSM0808_IE_EXTENDED_RESOURCE_INDICATOR = 13, GSM0808_IE_NUMBER_OF_MSS = 14, GSM0808_IE_RESERVED_1 = 15, GSM0808_IE_RESERVED_2 = 16, GSM0808_IE_RESERVED_3 = 17, GSM0808_IE_CLASSMARK_INFORMATION_T2 = 18, GSM0808_IE_CLASSMARK_INFORMATION_T3 = 19, GSM0808_IE_INTERFERENCE_BAND_TO_USE = 20, GSM0808_IE_RR_CAUSE = 21, GSM0808_IE_RESERVED_4 = 22, GSM0808_IE_LAYER_3_INFORMATION = 23, GSM0808_IE_DLCI = 24, GSM0808_IE_DOWNLINK_DTX_FLAG = 25, GSM0808_IE_CELL_IDENTIFIER_LIST = 26, GSM0808_IE_RESPONSE_RQST = 27, GSM0808_IE_RESOURCE_INDICATION_METHOD = 28, GSM0808_IE_CLASSMARK_INFORMATION_TYPE_1 = 29, GSM0808_IE_CIRCUIT_IDENTITY_CODE_LIST = 30, GSM0808_IE_DIAGNOSTIC = 31, GSM0808_IE_LAYER_3_MESSAGE_CONTENTS = 32, GSM0808_IE_CHOSEN_CHANNEL = 33, GSM0808_IE_TOTAL_RESOURCE_ACCESSIBLE = 34, GSM0808_IE_CIPHER_RESPONSE_MODE = 35, GSM0808_IE_CHANNEL_NEEDED = 36, GSM0808_IE_TRACE_TYPE = 37, GSM0808_IE_TRIGGERID = 38, GSM0808_IE_TRACE_REFERENCE = 39, GSM0808_IE_TRANSACTIONID = 40, GSM0808_IE_MOBILE_IDENTITY = 41, GSM0808_IE_OMCID = 42, GSM0808_IE_FORWARD_INDICATOR = 43, GSM0808_IE_CHOSEN_ENCR_ALG = 44, GSM0808_IE_CIRCUIT_POOL = 45, GSM0808_IE_CIRCUIT_POOL_LIST = 46, GSM0808_IE_TIME_INDICATION = 47, GSM0808_IE_RESOURCE_SITUATION = 48, GSM0808_IE_CURRENT_CHANNEL_TYPE_1 = 49, GSM0808_IE_QUEUEING_INDICATOR = 50, GSM0808_IE_SPEECH_VERSION = 64, GSM0808_IE_ASSIGNMENT_REQUIREMENT = 51, GSM0808_IE_TALKER_FLAG = 53, GSM0808_IE_CONNECTION_RELEASE_RQSTED = 54, GSM0808_IE_GROUP_CALL_REFERENCE = 55, GSM0808_IE_EMLPP_PRIORITY = 56, GSM0808_IE_CONFIG_EVO_INDI = 57, GSM0808_IE_OLD_BSS_TO_NEW_BSS_INFORMATION = 58, GSM0808_IE_LSA_IDENTIFIER = 59, GSM0808_IE_LSA_IDENTIFIER_LIST = 60, GSM0808_IE_LSA_INFORMATION = 61, GSM0808_IE_LCS_QOS = 62, GSM0808_IE_LSA_ACCESS_CTRL_SUPPR = 63, GSM0808_IE_LCS_PRIORITY = 67, GSM0808_IE_LOCATION_TYPE = 68, GSM0808_IE_LOCATION_ESTIMATE = 69, GSM0808_IE_POSITIONING_DATA = 70, GSM0808_IE_LCS_CAUSE = 71, GSM0808_IE_LCS_CLIENT_TYPE = 72, GSM0808_IE_APDU = 73, GSM0808_IE_NETWORK_ELEMENT_IDENTITY = 74, GSM0808_IE_GPS_ASSISTANCE_DATA = 75, GSM0808_IE_DECIPHERING_KEYS = 76, GSM0808_IE_RETURN_ERROR_RQST = 77, GSM0808_IE_RETURN_ERROR_CAUSE = 78, GSM0808_IE_SEGMENTATION = 79, GSM0808_IE_SERVICE_HANDOVER = 80, GSM0808_IE_SOURCE_RNC_TO_TARGET_RNC_TRANSPARENT_UMTS = 81, GSM0808_IE_SOURCE_RNC_TO_TARGET_RNC_TRANSPARENT_CDMA2000= 82, GSM0808_IE_RESERVED_5 = 65, GSM0808_IE_RESERVED_6 = 66, }; enum gsm0808_cause { GSM0808_CAUSE_RADIO_INTERFACE_MESSAGE_FAILURE = 0, GSM0808_CAUSE_RADIO_INTERFACE_FAILURE = 1, GSM0808_CAUSE_UPLINK_QUALITY = 2, GSM0808_CAUSE_UPLINK_STRENGTH = 3, GSM0808_CAUSE_DOWNLINK_QUALITY = 4, GSM0808_CAUSE_DOWNLINK_STRENGTH = 5, GSM0808_CAUSE_DISTANCE = 6, GSM0808_CAUSE_O_AND_M_INTERVENTION = 7, GSM0808_CAUSE_RESPONSE_TO_MSC_INVOCATION = 8, GSM0808_CAUSE_CALL_CONTROL = 9, GSM0808_CAUSE_RADIO_INTERFACE_FAILURE_REVERSION = 10, GSM0808_CAUSE_HANDOVER_SUCCESSFUL = 11, GSM0808_CAUSE_BETTER_CELL = 12, GSM0808_CAUSE_DIRECTED_RETRY = 13, GSM0808_CAUSE_JOINED_GROUP_CALL_CHANNEL = 14, GSM0808_CAUSE_TRAFFIC = 15, GSM0808_CAUSE_EQUIPMENT_FAILURE = 32, GSM0808_CAUSE_NO_RADIO_RESOURCE_AVAILABLE = 33, GSM0808_CAUSE_RQSTED_TERRESTRIAL_RESOURCE_UNAVAILABLE = 34, GSM0808_CAUSE_CCCH_OVERLOAD = 35, GSM0808_CAUSE_PROCESSOR_OVERLOAD = 36, GSM0808_CAUSE_BSS_NOT_EQUIPPED = 37, GSM0808_CAUSE_MS_NOT_EQUIPPED = 38, GSM0808_CAUSE_INVALID_CELL = 39, GSM0808_CAUSE_TRAFFIC_LOAD = 40, GSM0808_CAUSE_PREEMPTION = 41, GSM0808_CAUSE_RQSTED_TRANSCODING_RATE_ADAPTION_UNAVAILABLE = 48, GSM0808_CAUSE_CIRCUIT_POOL_MISMATCH = 49, GSM0808_CAUSE_SWITCH_CIRCUIT_POOL = 50, GSM0808_CAUSE_RQSTED_SPEECH_VERSION_UNAVAILABLE = 51, GSM0808_CAUSE_LSA_NOT_ALLOWED = 52, GSM0808_CAUSE_CIPHERING_ALGORITHM_NOT_SUPPORTED = 64, GSM0808_CAUSE_TERRESTRIAL_CIRCUIT_ALREADY_ALLOCATED = 80, GSM0808_CAUSE_INVALID_MESSAGE_CONTENTS = 81, GSM0808_CAUSE_INFORMATION_ELEMENT_OR_FIELD_MISSING = 82, GSM0808_CAUSE_INCORRECT_VALUE = 83, GSM0808_CAUSE_UNKNOWN_MESSAGE_TYPE = 84, GSM0808_CAUSE_UNKNOWN_INFORMATION_ELEMENT = 85, GSM0808_CAUSE_PROTOCOL_ERROR_BETWEEN_BSS_AND_MSC = 96, }; /* GSM 08.08 3.2.2.11 Channel Type */ enum gsm0808_chan_indicator { GSM0808_CHAN_SPEECH = 1, GSM0808_CHAN_DATA = 2, GSM0808_CHAN_SIGN = 3, }; enum gsm0808_chan_rate_type_data { GSM0808_DATA_FULL_BM = 0x8, GSM0808_DATA_HALF_LM = 0x9, GSM0808_DATA_FULL_RPREF = 0xa, GSM0808_DATA_HALF_PREF = 0xb, GSM0808_DATA_FULL_PREF_NO_CHANGE = 0x1a, GSM0808_DATA_HALF_PREF_NO_CHANGE = 0x1b, GSM0808_DATA_MULTI_MASK = 0x20, GSM0808_DATA_MULTI_MASK_NO_CHANGE = 0x30, }; enum gsm0808_chan_rate_type_speech { GSM0808_SPEECH_FULL_BM = 0x8, GSM0808_SPEECH_HALF_LM = 0x9, GSM0808_SPEECH_FULL_PREF= 0xa, GSM0808_SPEECH_HALF_PREF= 0xb, GSM0808_SPEECH_FULL_PREF_NO_CHANGE = 0x1a, GSM0808_SPEECH_HALF_PREF_NO_CHANGE = 0x1b, GSM0808_SPEECH_PERM = 0xf, GSM0808_SPEECH_PERM_NO_CHANGE = 0x1f, }; enum gsm0808_permitted_speech { GSM0808_PERM_FR1 = 0x01, GSM0808_PERM_FR2 = 0x11, GSM0808_PERM_FR3 = 0x21, GSM0808_PERM_HR1 = GSM0808_PERM_FR1 | 0x4, GSM0808_PERM_HR2 = GSM0808_PERM_FR2 | 0x4, GSM0808_PERM_HR3 = GSM0808_PERM_FR3 | 0x4, }; #endif