diff options
author | Jaakko Kukkohovi <jkukkohovi@gmail.com> | 2015-01-21 16:16:31 +0200 |
---|---|---|
committer | Spencer Oliver <spen@spen-soft.co.uk> | 2015-01-26 21:16:42 +0000 |
commit | fe04314c2affada149f80858ee90e9b671ab9d25 (patch) | |
tree | da9f9086e6ce341a6c729f032c11163e30b8de00 /src/jtag/drivers/cmsis_dap_usb.c | |
parent | 101124c69af0cf1546e7f0aa2606e36c3c8743eb (diff) |
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 <jkukkohovi@gmail.com>
Reviewed-on: http://openocd.zylin.com/2487
Tested-by: jenkins
Reviewed-by: Jörg Wunsch <openocd@uriah.heep.sax.de>
Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
Diffstat (limited to 'src/jtag/drivers/cmsis_dap_usb.c')
-rw-r--r-- | src/jtag/drivers/cmsis_dap_usb.c | 10 |
1 files 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"); |