diff options
Diffstat (limited to 'src/gsm')
-rw-r--r-- | src/gsm/gsm0808_utils.c | 40 | ||||
-rw-r--r-- | src/gsm/gsm29205.c | 3 | ||||
-rw-r--r-- | src/gsm/libosmogsm.map | 2 |
3 files changed, 45 insertions, 0 deletions
diff --git a/src/gsm/gsm0808_utils.c b/src/gsm/gsm0808_utils.c index 54ec19c2..606899e8 100644 --- a/src/gsm/gsm0808_utils.c +++ b/src/gsm/gsm0808_utils.c @@ -28,6 +28,7 @@ #include <errno.h> #include <osmocom/gsm/protocol/gsm_08_08.h> #include <osmocom/gsm/gsm48.h> +#include <osmocom/gsm/gsm0808.h> #include <osmocom/gsm/gsm0808_utils.h> #define IP_V4_ADDR_LEN 4 @@ -591,6 +592,45 @@ int gsm0808_dec_lcls(struct osmo_lcls *lcls, const struct tlv_parsed *tp) return ret; } +static char dbuf[256]; + +/*! Dump LCLS parameters (GCR excluded) into string for printing. + * \param[in] lcls pointer to the struct to print. + * \returns string representation of LCLS or NULL on error. */ +char *osmo_lcls_dump(const struct osmo_lcls *lcls) +{ + struct osmo_strbuf s = { .buf = dbuf, .len = 256 }; + + if (!lcls) + return NULL; + + OSMO_STRBUF_PRINTF(s, "LCLS Config: %s, Control: %s, Correlation-Needed: %u", + gsm0808_lcls_config_name(lcls->config), + gsm0808_lcls_control_name(lcls->control), + lcls->corr_needed); + + return dbuf; +} + +/*! Dump GCR struct into string for printing. + * \param[in] lcls pointer to the struct to print. + * \returns string representation of GCR or NULL on error. */ +char *osmo_gcr_dump(const struct osmo_lcls *lcls) +{ + struct osmo_strbuf s = { .buf = dbuf, .len = 256 }; + + if (!lcls) + return NULL; + + if (lcls->gcr_available) { + OSMO_STRBUF_PRINTF(s, "GCR NetID 0x%s, ", osmo_hexdump_nospc(lcls->gcr.net, lcls->gcr.net_len)); + /* osmo_hexdump() uses static buffers so we can't call it twice withing the same parameter list */ + OSMO_STRBUF_PRINTF(s, "Node 0x%x, CallRefID 0x%s", lcls->gcr.node, osmo_hexdump_nospc(lcls->gcr.cr, 5)); + } + + return dbuf; +} + /*! Encode TS 08.08 Encryption Information IE * \param[out] msg Message Buffer to which IE is to be appended * \param[in] ei Encryption Information to be encoded diff --git a/src/gsm/gsm29205.c b/src/gsm/gsm29205.c index 0d344688..6ceb8ee4 100644 --- a/src/gsm/gsm29205.c +++ b/src/gsm/gsm29205.c @@ -20,9 +20,12 @@ * */ +#include "config.h" + #include <osmocom/gsm/protocol/gsm_08_08.h> #include <osmocom/gsm/gsm29205.h> #include <osmocom/gsm/gsm0808.h> +#include <osmocom/core/utils.h> #include <osmocom/core/msgb.h> #include <osmocom/gsm/tlv.h> diff --git a/src/gsm/libosmogsm.map b/src/gsm/libosmogsm.map index 48757a7b..2d47d7a7 100644 --- a/src/gsm/libosmogsm.map +++ b/src/gsm/libosmogsm.map @@ -247,6 +247,8 @@ gsm29118_create_service_abort_req; osmo_enc_gcr; osmo_dec_gcr; osmo_gcr_eq; +osmo_gcr_dump; +osmo_lcls_dump; gsm0858_rsl_ul_meas_enc; |