diff --git a/firmware/ice40-riscv/common/utils.c b/firmware/ice40-riscv/common/utils.c index 1ac111b..7c7d3d0 100644 --- a/firmware/ice40-riscv/common/utils.c +++ b/firmware/ice40-riscv/common/utils.c @@ -36,6 +36,19 @@ hexstr(void *d, int n, bool space) return buf; } +uint8_t +hexval(char c) +{ + if (c >= '0' && c <= '9') + return c - '0'; + else if (c >= 'a' && c <= 'f') + return 10 + (c - 'a'); + else if (c >= 'A' && c <= 'F') + return 10 + (c - 'A'); + else + return 0; +} + void _panic(const char *file, int lineno, const char *fmt, ...) diff --git a/firmware/ice40-riscv/common/utils.h b/firmware/ice40-riscv/common/utils.h index 03359ae..37cc88e 100644 --- a/firmware/ice40-riscv/common/utils.h +++ b/firmware/ice40-riscv/common/utils.h @@ -10,6 +10,7 @@ #include char *hexstr(void *d, int n, bool space); +uint8_t hexval(char c); void _panic(const char *file, int lineno, const char *fmt, ...); #define panic(fmt, ...) _panic(__FILE__, __LINE__, fmt, ##__VA_ARGS__)