jlink: Disable automatic device selection

If multiple devices are attached, do not automatically use the first
device found. Otherwise, a user may unintentionally operate on the
wrong device.

Change-Id: I08c4110b82e911e9e3e744d41830ffc6c56c44bf
Signed-off-by: Marc Schink <openocd-dev@marcschink.de>
Reviewed-on: http://openocd.zylin.com/4213
Tested-by: jenkins
Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
fence_i_fix_for_release
Marc Schink 2017-09-02 10:10:00 +02:00 committed by Spencer Oliver
parent f981730fe7
commit 98e63cdc86
1 changed files with 9 additions and 4 deletions

View File

@ -546,6 +546,7 @@ static int jlink_init(void)
struct jaylink_hardware_status hwstatus; struct jaylink_hardware_status hwstatus;
enum jaylink_usb_address address; enum jaylink_usb_address address;
size_t length; size_t length;
size_t num_devices;
LOG_DEBUG("Using libjaylink %s (compiled with %s).", LOG_DEBUG("Using libjaylink %s (compiled with %s).",
jaylink_version_package_get_string(), JAYLINK_VERSION_PACKAGE_STRING); jaylink_version_package_get_string(), JAYLINK_VERSION_PACKAGE_STRING);
@ -580,7 +581,7 @@ static int jlink_init(void)
return ERROR_JTAG_INIT_FAILED; return ERROR_JTAG_INIT_FAILED;
} }
ret = jaylink_get_devices(jayctx, &devs, NULL); ret = jaylink_get_devices(jayctx, &devs, &num_devices);
if (ret != JAYLINK_OK) { if (ret != JAYLINK_OK) {
LOG_ERROR("jaylink_get_devices() failed: %s.", jaylink_strerror(ret)); LOG_ERROR("jaylink_get_devices() failed: %s.", jaylink_strerror(ret));
@ -588,10 +589,14 @@ static int jlink_init(void)
return ERROR_JTAG_INIT_FAILED; return ERROR_JTAG_INIT_FAILED;
} }
found_device = false; if (!use_serial_number && !use_usb_address && num_devices > 1) {
LOG_ERROR("Multiple devices found, specify the desired device.");
jaylink_free_devices(devs, true);
jaylink_exit(jayctx);
return ERROR_JTAG_INIT_FAILED;
}
if (!use_serial_number && !use_usb_address) found_device = false;
LOG_INFO("No device selected, using first device.");
for (i = 0; devs[i]; i++) { for (i = 0; devs[i]; i++) {
if (use_serial_number) { if (use_serial_number) {