summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/osmocom/gsm/gsm0808.h1
-rw-r--r--src/gsm/gsm0808.c73
-rw-r--r--src/gsm/libosmogsm.map1
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;