CMSISDAPProbe.get_probe_with_id() always returns probe object
I don't fully understand the usage of the DebugProbeAggregator.get_probe_with_id(board_id), for example, in the test/automated_test.py:164.
 As it is now, when I have only st-link probes connected and override the target in the pyocd.yaml, get_probe_with_id() still returns the CMSISDAPProbe probe even if it found no interface and has no probe with such id.
 Shouldn't it return None in that case?
diff --git a/pyocd/probe/cmsis_dap_probe.py b/pyocd/probe/cmsis_dap_probe.py
index fb6a5ac8..9a1b53ce 100644
--- a/pyocd/probe/cmsis_dap_probe.py
+++ b/pyocd/probe/cmsis_dap_probe.py
@@ -77,7 +77,11 @@ class CMSISDAPProbe(DebugProbe):
     @classmethod
     def get_probe_with_id(cls, unique_id):
         try:
-            return cls(DAPAccess(unique_id))
+            dap_access = DAPAccess.get_device(unique_id)
+            if dap_access is not None:
+                return cls(dap_access)
+            else:
+                return None
         except DAPAccess.Error as exc:
             six.raise_from(cls._convert_exception(exc), exc)
 
diff --git a/pyocd/probe/pydapaccess/dap_access_cmsis_dap.py b/pyocd/probe/pydapaccess/dap_access_cmsis_dap.py
index 0139682e..0c0e6a7e 100644
--- a/pyocd/probe/pydapaccess/dap_access_cmsis_dap.py
+++ b/pyocd/probe/pydapaccess/dap_access_cmsis_dap.py
@@ -466,7 +466,11 @@ class DAPAccessCMSISDAP(DAPAccessIntf):
     @staticmethod
     def get_device(device_id):
         assert isinstance(device_id, six.string_types)
-        return DAPAccessCMSISDAP(device_id)
+        iface = DAPAccessCMSISDAP._lookup_interface_for_unique_id(device_id)
+        if iface is not None:
+            return DAPAccessCMSISDAP(device_id, iface)
+        else:
+            return None
 
     @staticmethod
     def set_args(arg_list):
@@ -515,6 +519,8 @@ class DAPAccessCMSISDAP(DAPAccessIntf):
         # Search for a matching interface if one wasn't provided.
         if interface is None:
             interface = DAPAccessCMSISDAP._lookup_interface_for_unique_id(unique_id)
+            if interface is None:
+                raise self.DeviceError("no device with ID %s" % unique_id)
 
         if interface is not None:
             self._unique_id = _get_unique_id(interface)
diff --git a/pyocd/probe/stlink_probe.py b/pyocd/probe/stlink_probe.py
index 39a89e3d..5a5112a4 100644
--- a/pyocd/probe/stlink_probe.py
+++ b/pyocd/probe/stlink_probe.py
@@ -34,7 +34,7 @@ class StlinkProbe(DebugProbe):
     def get_probe_with_id(cls, unique_id):
         for dev in STLinkUSBInterface.get_all_connected_devices():
             if dev.serial_number == unique_id:
-                return cls(STLinkUSBInterface(unique_id))
+                return cls(dev)
         else:
             return None
 
['pyocd/probe/stlink_probe.py', 'pyocd/probe/pydapaccess/dap_access_cmsis_dap.py', 'pyocd/probe/cmsis_dap_probe.py']