diff options
author | Ben Chan <benchan@chromium.org> | 2018-10-20 20:20:54 -0700 |
---|---|---|
committer | Ben Chan <benchan@chromium.org> | 2018-10-26 09:50:01 -0700 |
commit | 942bdeaec26eb587f39e9709dff0174bc4bfdd42 (patch) | |
tree | cecd23467a1a9183014bb37813f1754769bb1073 /src/mm-modem-helpers.c | |
parent | 025fcb7e92dde84c45085a1087375413c23d8ab7 (diff) |
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.
Diffstat (limited to 'src/mm-modem-helpers.c')
-rw-r--r-- | src/mm-modem-helpers.c | 20 |
1 files changed, 20 insertions, 0 deletions
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) { |