X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=libaltos%2Flibaltos_windows.c;h=b92df70857fb03b1bbf61220cd91608eb307051d;hb=a8ced69631415e26329594f7f0ae98dec577d1ae;hp=2c3f41e11826cb199a5de41c466976235fab8ed9;hpb=1594691ea88ca84634eea237ac8137a5bdc19f5c;p=fw%2Faltos diff --git a/libaltos/libaltos_windows.c b/libaltos/libaltos_windows.c index 2c3f41e1..b92df708 100644 --- a/libaltos/libaltos_windows.c +++ b/libaltos/libaltos_windows.c @@ -3,7 +3,8 @@ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of @@ -130,6 +131,15 @@ altos_ftdi_list_start(void) return list; } +static struct { + unsigned int vid, pid; + char *name; +} name_map[] = { + { .vid = 0xfffe, .pid = 0x0028, .name = "EasyMega" }, + { .vid = 0xfffe, .pid = 0x002c, .name = "EasyMotor" }, + { .name = NULL }, +}; + PUBLIC int altos_list_next(struct altos_list *list, struct altos_device *device) { @@ -147,6 +157,7 @@ altos_list_next(struct altos_list *list, struct altos_device *device) DWORD friendlyname_len; char instanceid[1024]; DWORD instanceid_len; + int i; dev_info_data.cbSize = sizeof (SP_DEVINFO_DATA); while(SetupDiEnumDeviceInfo(list->dev_info, list->index, @@ -229,6 +240,23 @@ altos_list_next(struct altos_list *list, struct altos_device *device) altos_set_last_windows_error(); continue; } + + char *space = friendlyname; + while (*space) { + if (*space == ' ') { + *space = '\0'; + break; + } + space++; + } + + for (i = 0; name_map[i].name; i++) { + if (name_map[i].vid == vid && name_map[i].pid == pid) { + strcpy(friendlyname, name_map[i].name); + break; + } + } + device->vendor = vid; device->product = pid; device->serial = serial; @@ -638,7 +666,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), @@ -746,7 +774,7 @@ altos_bt_open(struct altos_bt_device *device) memset(&sockaddr_bth, '\0', sizeof (sockaddr_bth)); sockaddr_bth.addressFamily = AF_BTH; sockaddr_bth.btAddr = str2ba(device->addr); - sockaddr_bth.port = 1; + sockaddr_bth.port = altos_bt_port(device); ret = connect(file->socket, (SOCKADDR *) &sockaddr_bth, sizeof (sockaddr_bth)); @@ -754,8 +782,14 @@ 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; } +void +altos_pause_one_second(void) +{ + Sleep(1000); +}