diff options
-rw-r--r-- | libaltos/libaltos_common.c | 31 | ||||
-rw-r--r-- | libaltos/libaltos_windows.c | 4 |
2 files changed, 25 insertions, 10 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; } diff --git a/libaltos/libaltos_windows.c b/libaltos/libaltos_windows.c index 4f9f1807..846e2217 100644 --- a/libaltos/libaltos_windows.c +++ b/libaltos/libaltos_windows.c @@ -639,7 +639,7 @@ static void ba2str(BTH_ADDR ba, char *str) { - sprintf(str, "%02x:%02x:%02x:%02x:%02x:%02x", + sprintf(str, "%02X:%02X:%02X:%02X:%02X:%02X", get_byte(ba, 0), get_byte(ba, 1), get_byte(ba, 2), @@ -755,8 +755,8 @@ altos_bt_open(struct altos_bt_device *device) altos_set_last_winsock_error(); closesocket(file->socket); free(file); + log_message("Connection attempted to address %s port %d\n", device->addr, sockaddr_bth.port); return NULL; } return &file->file; } - |