Skip to content

Commit 364ad85

Browse files
committed
usb: Use GUID from reference CMSIS-DAP implementation for v2 interface.
1 parent 3cfbe88 commit 364ad85

File tree

1 file changed

+21
-13
lines changed

1 file changed

+21
-13
lines changed

orbtrace/soc.py

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -56,28 +56,36 @@ def __init__(self):
5656
self.winusb_interfaces = []
5757
self.device_interface_guids = {}
5858

59-
def interface(self, with_winusb=True, guid_discriminator=None):
59+
def interface(self, with_winusb=True, guid=None, guid_discriminator=None):
6060
n = self._next_interface
6161
self._next_interface += 1
62-
if with_winusb:
63-
if guid_discriminator is None:
64-
raise RuntimeError('Specify guid_discriminator for WinUSB-capable interfaces.')
6562

66-
self.winusb_interfaces.append(n)
63+
if guid is not None and guid_discriminator is not None:
64+
raise RuntimeError('Specify either guid or guid_discriminator, not both.')
6765

6866
if guid_discriminator is not None:
69-
if not with_winusb:
70-
raise RuntimeError('guid_discriminator is Windows-specific. There is no reason to apply to non-WinUSB interfaces')
71-
7267
assert guid_discriminator <= 0xFFFF
7368

7469
fields = list(DEVICE_INTERFACE_GUID_BASE.fields)
7570
fields[1] = guid_discriminator
76-
new_uuid = uuid.UUID(fields=fields)
77-
if new_uuid in self.device_interface_guids.values():
78-
raise RuntimeError(f'Duplicated GUID discriminator: 0x{guid_discriminator:02X}')
71+
guid = str(uuid.UUID(fields=fields))
72+
73+
if guid is not None:
74+
if not with_winusb:
75+
raise RuntimeError('guid and guid_discriminator is Windows-specific. There is no reason to apply to non-WinUSB interfaces')
7976

80-
self.device_interface_guids[n] = new_uuid
77+
guid = uuid.UUID(guid)
78+
79+
if guid in self.device_interface_guids.values():
80+
raise RuntimeError(f'Duplicated GUID: {guid}')
81+
82+
self.device_interface_guids[n] = guid
83+
84+
if with_winusb:
85+
if guid is None:
86+
raise RuntimeError('Specify guid or guid_discriminator for WinUSB-capable interfaces.')
87+
88+
self.winusb_interfaces.append(n)
8189

8290
return n
8391

@@ -355,7 +363,7 @@ def add_cmsis_dap(self, with_v1 = True, with_v2 = True):
355363

356364
if with_v2:
357365
# USB interface.
358-
if_num = self.usb_alloc.interface(guid_discriminator=0x80_43)
366+
if_num = self.usb_alloc.interface(guid='cdb3b5ad-293b-4663-aa36-1aae46463776')
359367
in_ep_num = self.usb_alloc.in_ep()
360368
out_ep_num = self.usb_alloc.out_ep()
361369

0 commit comments

Comments
 (0)