diff options
Diffstat (limited to 'src/gsm/gsm0808.c')
-rw-r--r-- | src/gsm/gsm0808.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/gsm/gsm0808.c b/src/gsm/gsm0808.c index 788f6c3c..23468c3e 100644 --- a/src/gsm/gsm0808.c +++ b/src/gsm/gsm0808.c @@ -21,6 +21,8 @@ * */ +#include <string.h> + #include <osmocom/core/byteswap.h> #include <osmocom/gsm/gsm0808.h> #include <osmocom/gsm/gsm0808_utils.h> @@ -34,6 +36,9 @@ * message generation/encoding. */ +/*! Char buffer to return strings from functions */ +static __thread char str_buff[512]; + /*! Create "Complete L3 Info" for AoIP, legacy implementation. * Instead use gsm0808_create_layer3_aoip2(), which is capable of three-digit MNC with leading zeros. * \param[in] msg_l3 msgb containing Layer 3 Message @@ -1670,6 +1675,39 @@ enum gsm0808_cause gsm0808_get_cause(const struct tlv_parsed *tp) return buf[0]; } +const char *gsm0808_diagnostics_octet_location_str(uint8_t pointer) +{ + switch (pointer) { + case 0: + return "Error location not determined"; + case 1: + return "The first octet of the message received (i.e. the message type) was found erroneous (unknown)"; + case 0xfd: + return "The first octet of the BSSAP header (Discrimination) was found erroneous"; + case 0xfe: + return "(DTAP only) The DLCI (second) octet of the BSSAP header was found erroneous"; + case 0xff: + return "The last octet of the BSSAP header (length indicator) was found erroneous"; + default: + snprintf(str_buff, sizeof(str_buff), "The %d octet of the message received was found erroneous", pointer); + return str_buff; + } +} + +const char *gsm0808_diagnostics_bit_location_str(uint8_t bit_pointer) +{ + if (bit_pointer == 0) { + return "No particular part of the octet is indicated"; + } else if (bit_pointer > 8) { + return "Reserved value"; + } + + snprintf(str_buff, sizeof(str_buff), + "An error was provoked by the field whose most significant bit is in bit position %d", + bit_pointer); + return str_buff; +} + const struct value_string gsm0808_lcls_config_names[] = { { GSM0808_LCLS_CFG_BOTH_WAY, "Connect both-way" }, { GSM0808_LCLS_CFG_BOTH_WAY_AND_BICAST_UL, |