From ebd362dbd2ef817f00f6713b5c4c5580dedd2b50 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Sat, 2 Jun 2018 14:11:19 +0200 Subject: gsm0808: Add value_string for LCLS related IEs Change-Id: I18d7a29496929c761aeaba9c0aee847befc13108 --- include/osmocom/gsm/gsm0808.h | 15 +++++++++++++++ src/gsm/gsm0808.c | 33 +++++++++++++++++++++++++++++++++ src/gsm/libosmogsm.map | 3 +++ 3 files changed, 51 insertions(+) diff --git a/include/osmocom/gsm/gsm0808.h b/include/osmocom/gsm/gsm0808.h index 84029575..d704aa91 100644 --- a/include/osmocom/gsm/gsm0808.h +++ b/include/osmocom/gsm/gsm0808.h @@ -27,6 +27,7 @@ #include #include #include +#include struct sockaddr_storage; @@ -135,4 +136,18 @@ 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); +extern const struct value_string gsm0808_lcls_config_names[]; +extern const struct value_string gsm0808_lcls_control_names[]; +extern const struct value_string gsm0808_lcls_status_names[]; + +static inline const char *gsm0808_lcls_config_name(uint8_t val) { + return get_value_string(gsm0808_lcls_config_names, val); +} +static inline const char *gsm0808_lcls_control_name(uint8_t val) { + return get_value_string(gsm0808_lcls_control_names, val); +} +static inline const char *gsm0808_lcls_status_name(uint8_t val) { + return get_value_string(gsm0808_lcls_status_names, val); +} + /*! @} */ diff --git a/src/gsm/gsm0808.c b/src/gsm/gsm0808.c index 347e9855..3a631372 100644 --- a/src/gsm/gsm0808.c +++ b/src/gsm/gsm0808.c @@ -1144,4 +1144,37 @@ const char *gsm0808_cause_name(uint8_t cause) return get_value_string(gsm0808_cause_names, cause); } +const struct value_string gsm0808_lcls_config_names[] = { + { GSM0808_LCLS_CFG_BOTH_WAY, "Connect both-way" }, + { GSM0808_LCLS_CFG_BOTH_WAY_AND_BICAST_UL, + "Connect both-way, bi-cast UL to CN" }, + { GSM0808_LCLS_CFG_BOTH_WAY_AND_SEND_DL, + "Connect both-way, send access DL from CN" }, + { GSM0808_LCLS_CFG_BOTH_WAY_AND_SEND_DL_BLOCK_LOCAL_DL, + "Connect both-way, send access DL from CN, block local DL" }, + { GSM0808_LCLS_CFG_BOTH_WAY_AND_BICAST_UL_SEND_DL, + "Connect both-way, bi-cast UL to CN, send access DL from CN" }, + { GSM0808_LCLS_CFG_BOTH_WAY_AND_BICAST_UL_SEND_DL_BLOCK_LOCAL_DL, + "Connect both-way, bi-cast UL to CN, send access DL from CN, block local DL" }, + { 0, NULL } +}; + +const struct value_string gsm0808_lcls_control_names[] = { + { GSM0808_LCLS_CSC_CONNECT, "Connect" }, + { GSM0808_LCLS_CSC_DO_NOT_CONNECT, "Do not connect" }, + { GSM0808_LCLS_CSC_RELEASE_LCLS, "Release LCLS" }, + { GSM0808_LCLS_CSC_BICAST_UL_AT_HANDOVER, "Bi-cast UL at Handover" }, + { GSM0808_LCLS_CSC_BICAST_UL_AND_RECV_DL_AT_HANDOVER, "Bi-cast UL and receive DL at Handover" }, + { 0, NULL } +}; + +const struct value_string gsm0808_lcls_status_names[] = { + { GSM0808_LCLS_STS_NOT_YET_LS, "Call not yet locally switched" }, + { GSM0808_LCLS_STS_NOT_POSSIBLE_LS, "Call not possible to be locally switched" }, + { GSM0808_LCLS_STS_NO_LONGER_LS, "Call is no longer locally switched" }, + { GSM0808_LCLS_STS_REQ_LCLS_NOT_SUPP, "Requested LCLS configuration is not supported" }, + { GSM0808_LCLS_STS_LOCALLY_SWITCHED, "Call is locally switched with requested LCLS config" }, + { 0, NULL } +}; + /*! @} */ diff --git a/src/gsm/libosmogsm.map b/src/gsm/libosmogsm.map index c05b4eeb..117cecfa 100644 --- a/src/gsm/libosmogsm.map +++ b/src/gsm/libosmogsm.map @@ -195,6 +195,9 @@ gsm0808_chan_type_to_speech_codec; gsm0808_speech_codec_from_chan_type; gsm0808_speech_codec_type_names; gsm0808_channel_type_name; +gsm0808_lcls_config_names; +gsm0808_lcls_control_names; +gsm0808_lcls_status_names; gsm0858_rsl_ul_meas_enc; -- cgit v1.2.3