diff options
-rw-r--r-- | include/osmocom/gsm/gsm_utils.h | 3 | ||||
-rw-r--r-- | src/gsm/gsm_utils.c | 11 | ||||
-rw-r--r-- | src/gsm/libosmogsm.map | 1 |
3 files changed, 15 insertions, 0 deletions
diff --git a/include/osmocom/gsm/gsm_utils.h b/include/osmocom/gsm/gsm_utils.h index 998f681e..a879d33c 100644 --- a/include/osmocom/gsm/gsm_utils.h +++ b/include/osmocom/gsm/gsm_utils.h @@ -168,6 +168,9 @@ void gsm_fn2gsmtime(struct gsm_time *time, uint32_t fn); /* Convert from GSM time to frame number */ uint32_t gsm_gsmtime2fn(struct gsm_time *time); +/* Returns static buffer with string representation of a GSM Time */ +char *osmo_dump_gsmtime(const struct gsm_time *tm); + /* GSM TS 03.03 Chapter 2.6 */ enum gprs_tlli_type { TLLI_LOCAL, diff --git a/src/gsm/gsm_utils.c b/src/gsm/gsm_utils.c index 61d3f833..2c980d28 100644 --- a/src/gsm/gsm_utils.c +++ b/src/gsm/gsm_utils.c @@ -90,6 +90,7 @@ #include <stdio.h> #include <errno.h> #include <ctype.h> +#include <inttypes.h> #include "../../config.h" @@ -758,6 +759,16 @@ uint32_t gsm_gsmtime2fn(struct gsm_time *time) return (51 * ((time->t3 - time->t2 + 26) % 26) + time->t3 + (26 * 51 * time->t1)); } +char *osmo_dump_gsmtime(const struct gsm_time *tm) +{ + static char buf[64]; + + snprintf(buf, sizeof(buf), "%06"PRIu32"/%02"PRIu16"/%02"PRIu8"/%02"PRIu8"/%02"PRIu8, + tm->fn, tm->t1, tm->t2, tm->t3, (uint8_t)tm->fn%52); + buf[sizeof(buf)-1] = '\0'; + return buf; +} + /*! append range1024 encoded data to bit vector * \param[out] bv Caller-provided output bit-vector * \param[in] r Input Range1024 sructure */ diff --git a/src/gsm/libosmogsm.map b/src/gsm/libosmogsm.map index e992a4fc..ad7e0131 100644 --- a/src/gsm/libosmogsm.map +++ b/src/gsm/libosmogsm.map @@ -274,6 +274,7 @@ gsm_band_parse; gsm_fn2gsmtime; gsm_get_octet_len; gsm_gsmtime2fn; +osmo_dump_gsmtime; gsm_milenage; gsm_septet_encode; |