projects
/
fw
/
altos
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
altosui: Work around lack of actual USB product names on Windows
[fw/altos]
/
libaltos
/
libaltos_windows.c
diff --git
a/libaltos/libaltos_windows.c
b/libaltos/libaltos_windows.c
index 03c2958f52bc1a63b1a0dc71c01eb43a82472e8a..162c85bab8fa6aa658479017bb920395fb678e8a 100644
(file)
--- a/
libaltos/libaltos_windows.c
+++ b/
libaltos/libaltos_windows.c
@@
-131,6
+131,15
@@
altos_ftdi_list_start(void)
return list;
}
return list;
}
+static struct {
+ char *windows;
+ char *real;
+} name_map[] = {
+ { .windows = "AltusMetrum28", .real = "EasyMega" },
+ { .windows = "AltusMetrum2c", .real = "EasyMotor" },
+ { 0, 0 },
+};
+
PUBLIC int
altos_list_next(struct altos_list *list, struct altos_device *device)
{
PUBLIC int
altos_list_next(struct altos_list *list, struct altos_device *device)
{
@@
-148,6
+157,7
@@
altos_list_next(struct altos_list *list, struct altos_device *device)
DWORD friendlyname_len;
char instanceid[1024];
DWORD instanceid_len;
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,
dev_info_data.cbSize = sizeof (SP_DEVINFO_DATA);
while(SetupDiEnumDeviceInfo(list->dev_info, list->index,
@@
-230,6
+240,16
@@
altos_list_next(struct altos_list *list, struct altos_device *device)
altos_set_last_windows_error();
continue;
}
altos_set_last_windows_error();
continue;
}
+ for (i = 0; name_map[i].windows; i++)
+ if (!strcmp(name_map[i].windows, friendlyname)) {
+ strcpy(friendlyname, name_map[i].real);
+ break;
+ }
+
+ char *space = strchr(friendlyname, ' ');
+ if (space)
+ *space = '\0';
+
device->vendor = vid;
device->product = pid;
device->serial = serial;
device->vendor = vid;
device->product = pid;
device->serial = serial;