aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKeith <keith@rhizomatica.org>2018-08-31 20:09:18 +0200
committerKeith <keith@rhizomatica.org>2018-09-02 12:33:54 +0200
commit3cdaa8d52517093ec846774f4ce0f66a43b17e17 (patch)
tree5139392060b1ff2f45d55db438a47e381f6e26d7
parent1a72bafa5df03718bb1c328f3d64078dc5e70feb (diff)
Add CC_CAUSE value_string array
Adds a value_string array for GSM 04.08 Call Control cause values Change-Id: I296f208581ce2550805f9d96e20f7319e1199023
-rw-r--r--include/osmocom/gsm/protocol/gsm_04_08.h4
-rw-r--r--src/gsm/gsm48.c54
-rw-r--r--src/gsm/libosmogsm.map1
3 files changed, 59 insertions, 0 deletions
diff --git a/include/osmocom/gsm/protocol/gsm_04_08.h b/include/osmocom/gsm/protocol/gsm_04_08.h
index 46350147..e218295c 100644
--- a/include/osmocom/gsm/protocol/gsm_04_08.h
+++ b/include/osmocom/gsm/protocol/gsm_04_08.h
@@ -1495,6 +1495,10 @@ enum gsm48_cc_cause {
GSM48_CC_CAUSE_INTERWORKING = 127,
};
+extern const struct value_string gsm48_cc_cause_names[];
+static inline const char *gsm48_cc_cause_name(enum gsm48_cc_cause val)
+{ return get_value_string(gsm48_cc_cause_names, val); }
+
/* Annex G, GSM specific cause values for mobility management */
enum gsm48_reject_value {
GSM48_REJECT_IMSI_UNKNOWN_IN_HLR = 2,
diff --git a/src/gsm/gsm48.c b/src/gsm/gsm48.c
index 136b9375..fc3b9734 100644
--- a/src/gsm/gsm48.c
+++ b/src/gsm/gsm48.c
@@ -945,6 +945,60 @@ const struct value_string gsm48_cc_msgtype_names[] = {
{ 0, NULL }
};
+/*! TS 04.08 10.5..4.11 Call Control Cause Values */
+const struct value_string gsm48_cc_cause_names[] = {
+ { GSM48_CC_CAUSE_UNASSIGNED_NR, "UNASSIGNED_NR" },
+ { GSM48_CC_CAUSE_NO_ROUTE, "NO_ROUTE" },
+ { GSM48_CC_CAUSE_CHAN_UNACCEPT, "CHAN_UNACCEPT" },
+ { GSM48_CC_CAUSE_OP_DET_BARRING, "OP_DET_BARRING" },
+ { GSM48_CC_CAUSE_NORM_CALL_CLEAR, "NORM_CALL_CLEAR" },
+ { GSM48_CC_CAUSE_USER_BUSY, "USER_BUSY" },
+ { GSM48_CC_CAUSE_USER_NOTRESPOND, "USER_NOTRESPOND" },
+ { GSM48_CC_CAUSE_USER_ALERTING_NA, "USER_ALERTING_NA" },
+ { GSM48_CC_CAUSE_CALL_REJECTED, "CALL_REJECTED" },
+ { GSM48_CC_CAUSE_NUMBER_CHANGED, "NUMBER_CHANGED" },
+ { GSM48_CC_CAUSE_PRE_EMPTION, "PRE_EMPTION" },
+ { GSM48_CC_CAUSE_NONSE_USER_CLR, "NONSE_USER_CLR" },
+ { GSM48_CC_CAUSE_DEST_OOO, "DEST_OOO" },
+ { GSM48_CC_CAUSE_INV_NR_FORMAT, "INV_NR_FORMAT" },
+ { GSM48_CC_CAUSE_FACILITY_REJ, "FACILITY_REJ" },
+ { GSM48_CC_CAUSE_RESP_STATUS_INQ, "RESP_STATUS_INQ" },
+ { GSM48_CC_CAUSE_NORMAL_UNSPEC, "NORMAL_UNSPEC" },
+ { GSM48_CC_CAUSE_NO_CIRCUIT_CHAN, "NO_CIRCUIT_CHAN" },
+ { GSM48_CC_CAUSE_NETWORK_OOO, "NETWORK_OOO" },
+ { GSM48_CC_CAUSE_TEMP_FAILURE, "TEMP_FAILURE" },
+ { GSM48_CC_CAUSE_SWITCH_CONG, "SWITCH_CONG" },
+ { GSM48_CC_CAUSE_ACC_INF_DISCARD, "ACC_INF_DISCARD" },
+ { GSM48_CC_CAUSE_REQ_CHAN_UNAVAIL, "REQ_CHAN_UNAVAIL" },
+ { GSM48_CC_CAUSE_RESOURCE_UNAVAIL, "RESOURCE_UNAVAIL" },
+ { GSM48_CC_CAUSE_QOS_UNAVAIL, "QOS_UNAVAIL" },
+ { GSM48_CC_CAUSE_REQ_FAC_NOT_SUBSC, "REQ_FAC_NOT_SUBSC" },
+ { GSM48_CC_CAUSE_INC_BARRED_CUG, "INC_BARRED_CUG" },
+ { GSM48_CC_CAUSE_BEARER_CAP_UNAUTH, "BEARER_CAP_UNAUTH" },
+ { GSM48_CC_CAUSE_BEARER_CA_UNAVAIL, "BEARER_CA_UNAVAIL" },
+ { GSM48_CC_CAUSE_SERV_OPT_UNAVAIL, "SERV_OPT_UNAVAIL" },
+ { GSM48_CC_CAUSE_BEARERSERV_UNIMPL, "BEARERSERV_UNIMPL" },
+ { GSM48_CC_CAUSE_ACM_GE_ACM_MAX, "ACM_GE_ACM_MAX" },
+ { GSM48_CC_CAUSE_REQ_FAC_NOTIMPL, "REQ_FAC_NOTIMPL" },
+ { GSM48_CC_CAUSE_RESTR_BCAP_AVAIL, "RESTR_BCAP_AVAIL" },
+ { GSM48_CC_CAUSE_SERV_OPT_UNIMPL, "SERV_OPT_UNIMPL" },
+ { GSM48_CC_CAUSE_INVAL_TRANS_ID, "INVAL_TRANS_ID" },
+ { GSM48_CC_CAUSE_USER_NOT_IN_CUG, "USER_NOT_IN_CUG" },
+ { GSM48_CC_CAUSE_INCOMPAT_DEST, "INCOMPAT_DEST" },
+ { GSM48_CC_CAUSE_INVAL_TRANS_NET, "INVAL_TRANS_NET" },
+ { GSM48_CC_CAUSE_SEMANTIC_INCORR, "SEMANTIC_INCORR" },
+ { GSM48_CC_CAUSE_INVAL_MAND_INF, "INVAL_MAND_INF" },
+ { GSM48_CC_CAUSE_MSGTYPE_NOTEXIST, "MSGTYPE_NOTEXIST" },
+ { GSM48_CC_CAUSE_MSGTYPE_INCOMPAT, "MSGTYPE_INCOMPAT" },
+ { GSM48_CC_CAUSE_IE_NOTEXIST, "IE_NOTEXIST" },
+ { GSM48_CC_CAUSE_COND_IE_ERR, "COND_IE_ERR" },
+ { GSM48_CC_CAUSE_MSG_INCOMP_STATE, "MSG_INCOMP_STATE" },
+ { GSM48_CC_CAUSE_RECOVERY_TIMER, "RECOVERY_TIMER" },
+ { GSM48_CC_CAUSE_PROTO_ERR, "PROTO_ERR" },
+ { GSM48_CC_CAUSE_INTERWORKING, "INTERWORKING" },
+ { 0 , NULL }
+};
+
/*! TS 04.80, section 3.4 Messages for supplementary services control */
const struct value_string gsm48_nc_ss_msgtype_names[] = {
OSMO_VALUE_STRING(GSM0480_MTYPE_RELEASE_COMPLETE),
diff --git a/src/gsm/libosmogsm.map b/src/gsm/libosmogsm.map
index 1da398c1..60d6ed84 100644
--- a/src/gsm/libosmogsm.map
+++ b/src/gsm/libosmogsm.map
@@ -321,6 +321,7 @@ gsm48_pdisc_names;
gsm48_rr_msgtype_names;
gsm48_mm_msgtype_names;
gsm48_cc_msgtype_names;
+gsm48_cc_cause_names;
gsm48_pdisc_msgtype_name;
gsm48_reject_value_names;