]> sigrok.org Git - libserialport.git/blobdiff - macosx.c
macosx: Fix port listing on ElCapitan.
[libserialport.git] / macosx.c
index f5f19448498f0f5de9819d7413ab180fade6ec7a..a0df84e6b079d4e5ff9fa969a27020631115bbfe 100644 (file)
--- a/macosx.c
+++ b/macosx.c
@@ -63,6 +63,17 @@ SP_PRIV enum sp_return get_port_details(struct sp_port *port)
                DEBUG_FMT("Found port %s", path);
 
                IORegistryEntryGetParentEntry(ioport, kIOServicePlane, &ioparent);
+               if ((cf_property=IORegistryEntrySearchCFProperty(ioparent,kIOServicePlane,
+                          CFSTR("IOClass"), kCFAllocatorDefault,
+                          kIORegistryIterateRecursively | kIORegistryIterateParents))) {
+                       if (CFStringGetCString(cf_property, class, sizeof(class),
+                                              kCFStringEncodingASCII) &&
+                           strstr(class, "USB")) {
+                               DEBUG("Found USB class device");
+                               port->transport = SP_TRANSPORT_USB;
+                       }
+                       CFRelease(cf_property);
+               }
                if ((cf_property=IORegistryEntrySearchCFProperty(ioparent,kIOServicePlane,
                           CFSTR("IOProviderClass"), kCFAllocatorDefault,
                           kIORegistryIterateRecursively | kIORegistryIterateParents))) {