summaryrefslogtreecommitdiffstats
path: root/src/gsm
diff options
context:
space:
mode:
Diffstat (limited to 'src/gsm')
-rw-r--r--src/gsm/gsm0808_utils.c40
-rw-r--r--src/gsm/gsm29205.c3
-rw-r--r--src/gsm/libosmogsm.map2
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;