]> git.sur5r.net Git - openocd/commitdiff
jlink: Disable automatic device selection
authorMarc Schink <openocd-dev@marcschink.de>
Sat, 2 Sep 2017 08:10:00 +0000 (10:10 +0200)
committerSpencer Oliver <spen@spen-soft.co.uk>
Tue, 3 Oct 2017 10:18:52 +0000 (11:18 +0100)
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>
src/jtag/drivers/jlink.c

index 955adf8aa62ee8a863cdfd76505713f40262aa70..ac6e997efe86bcad52e209fa680f377bd3b242ea 100644 (file)
@@ -546,6 +546,7 @@ static int jlink_init(void)
        struct jaylink_hardware_status hwstatus;
        enum jaylink_usb_address address;
        size_t length;
+       size_t num_devices;
 
        LOG_DEBUG("Using libjaylink %s (compiled with %s).",
                jaylink_version_package_get_string(), JAYLINK_VERSION_PACKAGE_STRING);
@@ -580,7 +581,7 @@ static int jlink_init(void)
                return ERROR_JTAG_INIT_FAILED;
        }
 
-       ret = jaylink_get_devices(jayctx, &devs, NULL);
+       ret = jaylink_get_devices(jayctx, &devs, &num_devices);
 
        if (ret != JAYLINK_OK) {
                LOG_ERROR("jaylink_get_devices() failed: %s.", jaylink_strerror(ret));
@@ -588,10 +589,14 @@ static int jlink_init(void)
                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)
-               LOG_INFO("No device selected, using first device.");
+       found_device = false;
 
        for (i = 0; devs[i]; i++) {
                if (use_serial_number) {