summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2010-03-04 10:50:32 +0100
committerHarald Welte <laforge@gnumonks.org>2010-03-04 10:50:32 +0100
commita73e2f9acb839a1f08d8bc5c7e6074c16f0cf1fe (patch)
tree46d26080f830545c24a455a1ac3aaeca64663473
parentaebe08c71f4704914c2af40620d0675cf29d2639 (diff)
import bcd2char() and char2bcd() from OpenBSC
-rw-r--r--include/osmocore/utils.h3
-rw-r--r--src/utils.c14
2 files changed, 17 insertions, 0 deletions
diff --git a/include/osmocore/utils.h b/include/osmocore/utils.h
index cf3b4607..51c6f035 100644
--- a/include/osmocore/utils.h
+++ b/include/osmocore/utils.h
@@ -13,5 +13,8 @@ struct value_string {
const char *get_value_string(const struct value_string *vs, uint32_t val);
int get_string_value(const struct value_string *vs, const char *str);
+char bcd2char(uint8_t bcd);
+/* only works for numbers in ascci */
+uint8_t char2bcd(char c);
#endif
diff --git a/src/utils.c b/src/utils.c
index 0d878c7b..2a73d397 100644
--- a/src/utils.c
+++ b/src/utils.c
@@ -30,3 +30,17 @@ int get_string_value(const struct value_string *vs, const char *str)
}
return -EINVAL;
}
+
+char bcd2char(uint8_t bcd)
+{
+ if (bcd < 0xa)
+ return '0' + bcd;
+ else
+ return 'A' + (bcd - 0xa);
+}
+
+/* only works for numbers in ascci */
+uint8_t char2bcd(char c)
+{
+ return c - 0x30;
+}