diff options
author | Bdale Garbee <bdale@gag.com> | 2018-02-12 16:38:57 -0700 |
---|---|---|
committer | Bdale Garbee <bdale@gag.com> | 2018-02-12 16:38:57 -0700 |
commit | ee79a205e118ea8730a02cc327d8fb79cc5f74ff (patch) | |
tree | be0b0c9fbccaa84acadb1d18688aae9b8db3e048 /libaltos/libaltos_common.c | |
parent | 365eee3ebfe73204033089b363687228f97e5d98 (diff) | |
parent | 78a90fc760b88ab66c5c238289afc38356e29d8a (diff) |
Merge branch 'master' of ssh://git.gag.com/scm/git/fw/altos
Diffstat (limited to 'libaltos/libaltos_common.c')
-rw-r--r-- | libaltos/libaltos_common.c | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/libaltos/libaltos_common.c b/libaltos/libaltos_common.c index f577de02..713a775c 100644 --- a/libaltos/libaltos_common.c +++ b/libaltos/libaltos_common.c @@ -76,24 +76,39 @@ altos_putchar(struct altos_file *file, char c) } struct bt_vendor_map { - char vendor[10]; - int port; + const char vendor[10]; + int port; }; static const struct bt_vendor_map altos_bt_vendor_map[] = { { .vendor = "00:12:6f:", 1 }, /* Rayson */ - { .vendor = "8C:DE:52:", 6 }, /* ISSC */ - { .vendor = "D8:80:39:", 6 }, /* Microchip */ + { .vendor = "8c:de:52:", 6 }, /* ISSC */ + { .vendor = "d8:80:39:", 6 }, /* Microchip */ }; #define NUM_BT_VENDOR_MAP (sizeof altos_bt_vendor_map / sizeof altos_bt_vendor_map[0]) #define BT_PORT_DEFAULT 1 +static inline int +ao_tolower(int c) { + if ('A' <= c && c <= 'Z') + return c + 'a' - 'A'; + return c; +} + int altos_bt_port(struct altos_bt_device *device) { - unsigned i; - for (i = 0; i < NUM_BT_VENDOR_MAP; i++) - if (strncmp (device->addr, altos_bt_vendor_map[i].vendor, strlen(altos_bt_vendor_map[i].vendor)) == 0) - return altos_bt_vendor_map[i].port; + unsigned i, j; + for (i = 0; i < NUM_BT_VENDOR_MAP; i++) { + const char *vendor = altos_bt_vendor_map[i].vendor; + for (j = 0; ; j++) { + if (vendor[j] == '\0') + return altos_bt_vendor_map[i].port; + if (device->addr[j] == '\0') + break; + if (ao_tolower(device->addr[j]) != vendor[j]) + break; + } + } return BT_PORT_DEFAULT; } |