]> sigrok.org Git - libserialport.git/blobdiff - macosx.c
rename deprecated constant kIOMasterPortDefault
[libserialport.git] / macosx.c
index b1e0b4579524ff716174d83f800564f8dc51bb96..0d22bb6fe10b4fa1877c8c80a87e79f8ddee3550 100644 (file)
--- a/macosx.c
+++ b/macosx.c
@@ -18,6 +18,7 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include <config.h>
 #include "libserialport.h"
 #include "libserialport_internal.h"
 
@@ -41,7 +42,7 @@ SP_PRIV enum sp_return get_port_details(struct sp_port *port)
        if (!(classes = IOServiceMatching(kIOSerialBSDServiceValue)))
                RETURN_FAIL("IOServiceMatching() failed");
 
-       if (IOServiceGetMatchingServices(kIOMasterPortDefault, classes,
+       if (IOServiceGetMatchingServices(kIOMainPortDefault, classes,
                                         &iter) != KERN_SUCCESS)
                RETURN_FAIL("IOServiceGetMatchingServices() failed");
 
@@ -62,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))) {
@@ -198,7 +210,7 @@ SP_PRIV enum sp_return list_ports(struct sp_port ***list)
        }
 
        DEBUG("Getting matching services");
-       if (IOServiceGetMatchingServices(kIOMasterPortDefault, classes,
+       if (IOServiceGetMatchingServices(kIOMainPortDefault, classes,
                                         &iter) != KERN_SUCCESS) {
                SET_FAIL(ret, "IOServiceGetMatchingServices() failed");
                goto out_done;