diff options
-rw-r--r-- | include/osmocom/gsm/gsm0808.h | 15 | ||||
-rw-r--r-- | src/gsm/gsm0808.c | 33 | ||||
-rw-r--r-- | src/gsm/libosmogsm.map | 3 |
3 files changed, 51 insertions, 0 deletions
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 <osmocom/gsm/protocol/gsm_08_08.h> #include <osmocom/gsm/gsm0808_utils.h> #include <osmocom/gsm/gsm23003.h> +#include <osmocom/core/utils.h> 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; |