From fe04314c2affada149f80858ee90e9b671ab9d25 Mon Sep 17 00:00:00 2001 From: Jaakko Kukkohovi Date: Wed, 21 Jan 2015 16:16:31 +0200 Subject: [PATCH] jtag/drivers/cmsis-dap-usb: fix cmsis_dap_serial MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 Reviewed-on: http://openocd.zylin.com/2487 Tested-by: jenkins Reviewed-by: Jörg Wunsch Reviewed-by: Spencer Oliver --- src/jtag/drivers/cmsis_dap_usb.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/jtag/drivers/cmsis_dap_usb.c b/src/jtag/drivers/cmsis_dap_usb.c index 95f553b6..d607b7f5 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"); -- 2.39.5