From: Martino Facchin Date: Fri, 18 Dec 2015 11:40:58 +0000 (+0100) Subject: macosx: Fix port listing on ElCapitan. X-Git-Tag: libserialport-0.1.1~6 X-Git-Url: https://sigrok.org/gitaction?a=commitdiff_plain;h=aacba60dca204923c2be4ffbdd9e43cb795c4cce;p=libserialport.git macosx: Fix port listing on ElCapitan. On OSX 10.11 (ElCapitan) the query for IOProviderClass fails to list ACM devices as USB. Add a fallback query using IOClass to correctly recognize these devices. The fix has no effect on previous OSX versions (tested on Mavericks) --- diff --git a/macosx.c b/macosx.c index f5f1944..a0df84e 100644 --- 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))) {