aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSpencer Oliver <spen@spen-soft.co.uk>2014-10-02 21:47:22 +0100
committerSpencer Oliver <spen@spen-soft.co.uk>2014-10-16 12:30:45 +0000
commitef02315de3392c164f18e26e06006d7f56dc1b81 (patch)
tree1297976cb48f3594c0ce3fa55f3e29a23f3b0527 /src
parentc7de02d6195abb736b00c30fdf3010e242f93640 (diff)
cmsis-dap: refactor HID PID/VID check loop
In preparation for adding serial number support. Change-Id: I3c9fb411b79d54a4d2de067039255436ba6708c7 Signed-off-by: Spencer Oliver <spen@spen-soft.co.uk> Reviewed-on: http://openocd.zylin.com/2328 Tested-by: jenkins Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
Diffstat (limited to 'src')
-rw-r--r--src/jtag/drivers/cmsis_dap_usb.c36
1 files changed, 21 insertions, 15 deletions
diff --git a/src/jtag/drivers/cmsis_dap_usb.c b/src/jtag/drivers/cmsis_dap_usb.c
index 3e62ce9c..fd8c82e0 100644
--- a/src/jtag/drivers/cmsis_dap_usb.c
+++ b/src/jtag/drivers/cmsis_dap_usb.c
@@ -163,14 +163,16 @@ static int cmsis_dap_usb_open(void)
struct hid_device_info *devs, *cur_dev;
unsigned short target_vid, target_pid;
+ bool found = false;
+
target_vid = 0;
target_pid = 0;
/*
- The CMSIS-DAP specification stipulates:
- "The Product String must contain "CMSIS-DAP" somewhere in the string. This is used by the
- debuggers to idenify a CMSIS-DAP compliant Debug Unit that is connected to a host computer."
- */
+ * The CMSIS-DAP specification stipulates:
+ * "The Product String must contain "CMSIS-DAP" somewhere in the string. This is used by the
+ * debuggers to identify a CMSIS-DAP compliant Debug Unit that is connected to a host computer."
+ */
devs = hid_enumerate(0x0, 0x0);
cur_dev = devs;
while (NULL != cur_dev) {
@@ -179,23 +181,27 @@ static int cmsis_dap_usb_open(void)
LOG_DEBUG("Cannot read product string of device 0x%x:0x%x",
cur_dev->vendor_id, cur_dev->product_id);
} else {
- if (wcsstr(cur_dev->product_string, L"CMSIS-DAP"))
- /*
- if the user hasn't specified VID:PID *and*
- product string contains "CMSIS-DAP", pick it
- */
- break;
+ if (wcsstr(cur_dev->product_string, L"CMSIS-DAP")) {
+ /* if the user hasn't specified VID:PID *and*
+ * product string contains "CMSIS-DAP", pick it
+ */
+ found = true;
+ }
}
} else {
- /*
- otherwise, exhaustively compare against all VID:PID in list
- */
+ /* otherwise, exhaustively compare against all VID:PID in list */
for (i = 0; cmsis_dap_vid[i] || cmsis_dap_pid[i]; i++) {
if ((cmsis_dap_vid[i] == cur_dev->vendor_id) && (cmsis_dap_pid[i] == cur_dev->product_id))
- break;
+ found = true;
}
+
if (cmsis_dap_vid[i] || cmsis_dap_pid[i])
- break;
+ found = true;
+ }
+
+ if (found) {
+ /* we have found an adapter, so exit further checks */
+ break;
}
cur_dev = cur_dev->next;