#include #include #include #include #include static char namebuf[255]; const char *get_value_string(const struct value_string *vs, uint32_t val) { int i; for (i = 0;; i++) { if (vs[i].value == 0 && vs[i].str == NULL) break; if (vs[i].value == val) return vs[i].str; } snprintf(namebuf, sizeof(namebuf), "unknown 0x%x", val); return namebuf; } int get_string_value(const struct value_string *vs, const char *str) { int i; for (i = 0;; i++) { if (vs[i].value == 0 && vs[i].str == NULL) break; if (!strcasecmp(vs[i].str, str)) return vs[i].value; } 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; }