This is an automated email from Gerrit.

Jaakko Kukkohovi (jkukkoh...@gmail.com) just uploaded a new patch set to 
Gerrit, which you can find at http://openocd.zylin.com/2487

-- gerrit

commit cd3bb380f8a50999933f123ae2a45d3e44601585
Author: Jaakko Kukkohovi <jkukkoh...@gmail.com>
Date:   Wed Jan 21 16:16:31 2015 +0200

    jtag/drivers/cmsis-dap-usb: fix cmsis_dap_serial
    
    Previously the serial wasn't actually used in hid_open() call,
    which meant that the first device with matching vid:pid was opened
    irrespective of the actual serial number.
    
    Change-Id: I45216ae5d9e0798e97be693c30e2f03c89b9a02b
    Signed-off-by: Jaakko Kukkohovi <jkukkoh...@gmail.com>

diff --git a/src/jtag/drivers/cmsis_dap_usb.c b/src/jtag/drivers/cmsis_dap_usb.c
index 95f553b..d607b7f 100644
--- a/src/jtag/drivers/cmsis_dap_usb.c
+++ b/src/jtag/drivers/cmsis_dap_usb.c
@@ -163,8 +163,10 @@ static int cmsis_dap_usb_open(void)
        int i;
        struct hid_device_info *devs, *cur_dev;
        unsigned short target_vid, target_pid;
+       wchar_t *target_serial = NULL;
 
        bool found = false;
+       bool serial_found = false;
 
        target_vid = 0;
        target_pid = 0;
@@ -204,8 +206,10 @@ static int cmsis_dap_usb_open(void)
                        /* we have found an adapter, so exit further checks */
                        /* check serial number matches if given */
                        if (cmsis_dap_serial != NULL) {
-                               if (wcscmp(cmsis_dap_serial, 
cur_dev->serial_number) == 0)
+                               if (wcscmp(cmsis_dap_serial, 
cur_dev->serial_number) == 0) {
+                                       serial_found = true;
                                        break;
+                               }
                        } else
                                break;
                }
@@ -216,6 +220,8 @@ static int cmsis_dap_usb_open(void)
        if (NULL != cur_dev) {
                target_vid = cur_dev->vendor_id;
                target_pid = cur_dev->product_id;
+               if (serial_found)
+                       target_serial = cmsis_dap_serial;
        }
 
        hid_free_enumeration(devs);
@@ -230,7 +236,7 @@ static int cmsis_dap_usb_open(void)
                return ERROR_FAIL;
        }
 
-       dev = hid_open(target_vid, target_pid, NULL);
+       dev = hid_open(target_vid, target_pid, target_serial);
 
        if (dev == NULL) {
                LOG_ERROR("unable to open CMSIS-DAP device");

-- 

------------------------------------------------------------------------------
New Year. New Location. New Benefits. New Data Center in Ashburn, VA.
GigeNET is offering a free month of service with a new server in Ashburn.
Choose from 2 high performing configs, both with 100TB of bandwidth.
Higher redundancy.Lower latency.Increased capacity.Completely compliant.
http://p.sf.net/sfu/gigenet
_______________________________________________
OpenOCD-devel mailing list
OpenOCD-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openocd-devel

Reply via email to