summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
b95db58)
We use the BT MAC vendor portion to figure out which port to connect
to as that is simpler and takes less network traffic than actually
doing discovery. However, on Windows, we were generating the address
in lower case and comparing against upper case vendors, which didn't
work out too well.
Signed-off-by: Keith Packard <keithp@keithp.com>
- 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 */
};
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
};
#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) {
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;
}
return BT_PORT_DEFAULT;
}
ba2str(BTH_ADDR ba, char *str)
{
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),
get_byte(ba, 0),
get_byte(ba, 1),
get_byte(ba, 2),
altos_set_last_winsock_error();
closesocket(file->socket);
free(file);
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;
}
return NULL;
}
return &file->file;
}