From 942bdeaec26eb587f39e9709dff0174bc4bfdd42 Mon Sep 17 00:00:00 2001 From: Ben Chan Date: Sat, 20 Oct 2018 20:20:54 -0700 Subject: modem-helpers: new helper to convert binary-coded decimals This patch adds a mm_bcd_to_string() helper function to convert a byte array representing a binary-coded decimal (BCD) number to a string representing the equivalent decimal number. --- src/mm-modem-helpers.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src/mm-modem-helpers.c') diff --git a/src/mm-modem-helpers.c b/src/mm-modem-helpers.c index 7845edcf..87e3754a 100644 --- a/src/mm-modem-helpers.c +++ b/src/mm-modem-helpers.c @@ -496,6 +496,26 @@ mm_filter_supported_capabilities (MMModemCapability all, /*****************************************************************************/ +static const gchar bcd_chars[] = "0123456789\0\0\0\0\0\0"; + +gchar * +mm_bcd_to_string (const guint8 *bcd, gsize bcd_len) +{ + GString *str; + gsize i; + + g_return_val_if_fail (bcd != NULL, NULL); + + str = g_string_sized_new (bcd_len * 2 + 1); + for (i = 0 ; i < bcd_len; i++) { + str = g_string_append_c (str, bcd_chars[bcd[i] & 0xF]); + str = g_string_append_c (str, bcd_chars[(bcd[i] >> 4) & 0xF]); + } + return g_string_free (str, FALSE); +} + +/*****************************************************************************/ + GRegex * mm_voice_ring_regex_get (void) { -- cgit v1.2.3-70-g09d2