diff options
-rw-r--r-- | include/osmocom/gsm/gsm0808.h | 1 | ||||
-rw-r--r-- | src/gsm/gsm0808.c | 73 | ||||
-rw-r--r-- | src/gsm/libosmogsm.map | 1 |
3 files changed, 75 insertions, 0 deletions
diff --git a/include/osmocom/gsm/gsm0808.h b/include/osmocom/gsm/gsm0808.h index 9153d99f..bbde1a51 100644 --- a/include/osmocom/gsm/gsm0808.h +++ b/include/osmocom/gsm/gsm0808.h @@ -86,5 +86,6 @@ const struct tlv_definition *gsm0808_att_tlvdef(void); const char *gsm0808_bssmap_name(uint8_t msg_type); const char *gsm0808_bssap_name(uint8_t msg_type); +const char *gsm0808_cause_name(uint8_t cause); /*! @} */ diff --git a/src/gsm/gsm0808.c b/src/gsm/gsm0808.c index 3003284b..27ea035c 100644 --- a/src/gsm/gsm0808.c +++ b/src/gsm/gsm0808.c @@ -906,4 +906,77 @@ const struct value_string gsm0808_speech_codec_type_names[] = { { 0, NULL } }; +static const struct value_string gsm0808_cause_names[] = { + { GSM0808_CAUSE_RADIO_INTERFACE_MESSAGE_FAILURE, "RADIO INTERFACE MESSAGE FAILURE" }, + { GSM0808_CAUSE_RADIO_INTERFACE_FAILURE, "RADIO INTERFACE FAILURE" }, + { GSM0808_CAUSE_UPLINK_QUALITY, "UPLINK QUALITY" }, + { GSM0808_CAUSE_UPLINK_STRENGTH, "UPLINK STRENGTH" }, + { GSM0808_CAUSE_DOWNLINK_QUALITY, "DOWNLINK QUALITY" }, + { GSM0808_CAUSE_DOWNLINK_STRENGTH, "DOWNLINK STRENGTH" }, + { GSM0808_CAUSE_DISTANCE, "DISTANCE" }, + { GSM0808_CAUSE_O_AND_M_INTERVENTION, "O AND M INTERVENTION" }, + { GSM0808_CAUSE_RESPONSE_TO_MSC_INVOCATION, "RESPONSE TO MSC INVOCATION" }, + { GSM0808_CAUSE_CALL_CONTROL, "CALL CONTROL" }, + { GSM0808_CAUSE_RADIO_INTERFACE_FAILURE_REVERSION, "RADIO INTERFACE FAILURE REVERSION" }, + { GSM0808_CAUSE_HANDOVER_SUCCESSFUL, "HANDOVER SUCCESSFUL" }, + { GSM0808_CAUSE_BETTER_CELL, "BETTER CELL" }, + { GSM0808_CAUSE_DIRECTED_RETRY, "DIRECTED RETRY" }, + { GSM0808_CAUSE_JOINED_GROUP_CALL_CHANNEL, "JOINED GROUP CALL CHANNEL" }, + { GSM0808_CAUSE_TRAFFIC, "TRAFFIC" }, + { GSM0808_CAUSE_REDUCE_LOAD_IN_SERVING_CELL, "REDUCE LOAD IN SERVING CELL" }, + { GSM0808_CAUSE_TRAFFIC_LOAD_IN_TGT_HIGHER_THAN_IN_SRC_CELL, "TRAFFIC LOAD IN TGT HIGHER THAN IN SRC CELL" }, + { GSM0808_CAUSE_RELOCATION_TRIGGERED, "RELOCATION TRIGGERED" }, + { GSM0808_CAUSE_REQUSTED_OPT_NOT_AUTHORISED, "REQUSTED OPT NOT AUTHORISED" }, + { GSM0808_CAUSE_ALT_CHAN_CONFIG_REQUESTED, "ALT CHAN CONFIG REQUESTED" }, + { GSM0808_CAUSE_RESP_TO_INT_HO_ENQ_MSG, "RESP TO INT HO ENQ MSG" }, + { GSM0808_CAUSE_INT_HO_ENQUIRY_REJECT, "INT HO ENQUIRY REJECT" }, + { GSM0808_CAUSE_REDUNDANCY_LEVEL_NOT_ADEQUATE, "REDUNDANCY LEVEL NOT ADEQUATE" }, + { GSM0808_CAUSE_EQUIPMENT_FAILURE, "EQUIPMENT FAILURE" }, + { GSM0808_CAUSE_NO_RADIO_RESOURCE_AVAILABLE, "NO RADIO RESOURCE AVAILABLE" }, + { GSM0808_CAUSE_RQSTED_TERRESTRIAL_RESOURCE_UNAVAILABLE, "RQSTED TERRESTRIAL RESOURCE UNAVAILABLE" }, + { GSM0808_CAUSE_CCCH_OVERLOAD, "CCCH OVERLOAD" }, + { GSM0808_CAUSE_PROCESSOR_OVERLOAD, "PROCESSOR OVERLOAD" }, + { GSM0808_CAUSE_BSS_NOT_EQUIPPED, "BSS NOT EQUIPPED" }, + { GSM0808_CAUSE_MS_NOT_EQUIPPED, "MS NOT EQUIPPED" }, + { GSM0808_CAUSE_INVALID_CELL, "INVALID CELL" }, + { GSM0808_CAUSE_TRAFFIC_LOAD, "TRAFFIC LOAD" }, + { GSM0808_CAUSE_PREEMPTION, "PREEMPTION" }, + { GSM0808_CAUSE_DTM_HO_SGSN_FAILURE, "DTM HO SGSN FAILURE" }, + { GSM0808_CAUSE_DTM_HO_PS_ALLOC_FAILURE, "DTM HO PS ALLOC FAILURE" }, + { GSM0808_CAUSE_RQSTED_TRANSCODING_RATE_ADAPTION_UNAVAILABLE, "RQSTED TRANSCODING RATE ADAPTION UNAVAILABLE" }, + { GSM0808_CAUSE_CIRCUIT_POOL_MISMATCH, "CIRCUIT POOL MISMATCH" }, + { GSM0808_CAUSE_SWITCH_CIRCUIT_POOL, "SWITCH CIRCUIT POOL" }, + { GSM0808_CAUSE_RQSTED_SPEECH_VERSION_UNAVAILABLE, "RQSTED SPEECH VERSION UNAVAILABLE" }, + { GSM0808_CAUSE_LSA_NOT_ALLOWED, "LSA NOT ALLOWED" }, + { GSM0808_CAUSE_REQ_CODEC_TYPE_OR_CONFIG_UNAVAIL, "REQ CODEC TYPE OR CONFIG UNAVAIL" }, + { GSM0808_CAUSE_REQ_A_IF_TYPE_UNAVAIL, "REQ A IF TYPE UNAVAIL" }, + { GSM0808_CAUSE_INVALID_CSG_CELL, "INVALID CSG CELL" }, + { GSM0808_CAUSE_REQ_REDUND_LEVEL_NOT_AVAIL, "REQ REDUND LEVEL NOT AVAIL" }, + { GSM0808_CAUSE_CIPHERING_ALGORITHM_NOT_SUPPORTED, "CIPHERING ALGORITHM NOT SUPPORTED" }, + { GSM0808_CAUSE_GERAN_IU_MODE_FAILURE, "GERAN IU MODE FAILURE" }, + { GSM0808_CAUSE_INC_RELOC_NOT_SUPP_DT_PUESBINE_FEATURE, "INC RELOC NOT SUPP DT PUESBINE FEATURE" }, + { GSM0808_CAUSE_ACCESS_RESTRICTED_DUE_TO_SHARED_NETWORKS, "ACCESS RESTRICTED DUE TO SHARED NETWORKS" }, + { GSM0808_CAUSE_REQ_CODEC_TYPE_OR_CONFIG_NOT_SUPP, "REQ CODEC TYPE OR CONFIG NOT SUPP" }, + { GSM0808_CAUSE_REQ_A_IF_TYPE_NOT_SUPP, "REQ A IF TYPE NOT SUPP" }, + { GSM0808_CAUSE_REQ_REDUND_LVL_NOT_SUPP, "REQ REDUND LVL NOT SUPP" }, + { GSM0808_CAUSE_TERRESTRIAL_CIRCUIT_ALREADY_ALLOCATED, "TERRESTRIAL CIRCUIT ALREADY ALLOCATED" }, + { GSM0808_CAUSE_INVALID_MESSAGE_CONTENTS, "INVALID MESSAGE CONTENTS" }, + { GSM0808_CAUSE_INFORMATION_ELEMENT_OR_FIELD_MISSING, "INFORMATION ELEMENT OR FIELD MISSING" }, + { GSM0808_CAUSE_INCORRECT_VALUE, "INCORRECT VALUE" }, + { GSM0808_CAUSE_UNKNOWN_MESSAGE_TYPE, "UNKNOWN MESSAGE TYPE" }, + { GSM0808_CAUSE_UNKNOWN_INFORMATION_ELEMENT, "UNKNOWN INFORMATION ELEMENT" }, + { GSM0808_CAUSE_DTM_HO_INVALID_PS_IND, "DTM HO INVALID PS IND" }, + { GSM0808_CAUSE_CALL_ID_ALREADY_ALLOC, "CALL ID ALREADY ALLOC" }, + { GSM0808_CAUSE_PROTOCOL_ERROR_BETWEEN_BSS_AND_MSC, "PROTOCOL ERROR BETWEEN BSS AND MSC" }, + { GSM0808_CAUSE_VGCS_VBS_CALL_NON_EXISTANT, "VGCS VBS CALL NON EXISTANT" }, + { GSM0808_CAUSE_DTM_HO_TIMER_EXPIRY, "DTM HO TIMER EXPIRY" }, + { 0, NULL } +}; + +/*! Return string name of BSSMAP Cause name */ +const char *gsm0808_cause_name(uint8_t cause) +{ + return get_value_string(gsm0808_cause_names, cause); +} + /*! @} */ diff --git a/src/gsm/libosmogsm.map b/src/gsm/libosmogsm.map index fd077041..dd4722e3 100644 --- a/src/gsm/libosmogsm.map +++ b/src/gsm/libosmogsm.map @@ -139,6 +139,7 @@ gsm0503_mcs9; gsm0808_att_tlvdef; gsm0808_bssap_name; gsm0808_bssmap_name; +gsm0808_cause_name; gsm0808_create_ass; gsm0808_create_assignment_completed; gsm0808_create_ass_compl; |