Version 1.9.7
[fw/altos] / libaltos / libaltos_windows.c
index 4f9f18075e02c9744a6f6509ce6a9bcd6567e7d4..43e347c40cb70ce96bb0bbf9dd19875a6e551881 100644 (file)
@@ -131,6 +131,16 @@ altos_ftdi_list_start(void)
        return list;
 }
 
+static struct {
+       unsigned int    vid, pid;
+       char    *name;
+} name_map[] = {
+       { .vid = 0xfffe, .pid = 0x000d, .name = "EasyTimer" },
+       { .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)
 {
@@ -148,6 +158,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,
@@ -230,6 +241,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;
@@ -639,7 +667,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 +783,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);
+}