You might want to try matching a kIOSerialBSDRS232Type instead of the kIOSerialBSDModemType you now use. I believe there are several types you can match. You might not be matching the right one.
> On Jun 5, 2015, at 6:00 PM, Carl Hoefs <[email protected]> wrote: > > That’s my situation also. I have numerous such devices plugged in, and I'm > assuming the matching dictionary will come back with them all. I’m hoping > there’s a way to relate the device interface (as discovered in IOKit using > the VID & PID) with the proper entry in the dictionary. But since I’m getting > back a 0-entry dictionary, I don’t know yet how this will pan out! > > -Carl > > >> On Jun 5, 2015, at 5:56 PM, Jack Brindle <[email protected] >> <mailto:[email protected]>> wrote: >> >> So, what if the user has another USB serial device plugged in? Won’t you get >> it also? >> >> >>> On Jun 5, 2015, at 5:32 PM, Carl Hoefs <[email protected] >>> <mailto:[email protected]>> wrote: >>> >>> >>>> On Jun 5, 2015, at 4:57 PM, Roland King <[email protected] >>>> <mailto:[email protected]>> wrote: >>>> >>>> >>>>> On 6 Jun 2015, at 04:34, Carl Hoefs <[email protected] >>>>> <mailto:[email protected]>> wrote: >>>>> >>>>> Using IOKit (OS X 10.10.3) how do I go about obtaining the mount point for >>>>> a USB device? >>>>> >>>>> A USB device I'm using is mounted as /dev/tty.usbmodemXXXXXXXX, where the >>>>> XXX's vary every time. >>>>> >>>>> I can successfully obtain the location ID for the device interface using >>>>> the VID & PID: >>>>> >>>>> kreturn = (*theDeviceInterface)->GetLocationID( theDeviceInterface, >>>>> &locationID ); >>>>> >>>>> But how do I obtain the mount point string? I need to return it so that I >>>>> can do an fopen on it. >>>>> >>>>> -Carl >>>>> >>>> >>>> I had to go look at some old code of mine to find this. Here’s where I >>>> initialise an object of mine with an IOObject which is a plugged-in USB >>>> serial device, I usually use the callout device /dev/cu.usbmodemxxxxx, the >>>> tty I think is the dial in device. Usually it’s the callout you want to >>>> open. >>>> >>>> -(id)initWithIOObject:(io_object_t)io_object >>>> { >>>> self = [ super initWithIoObject:io_object ]; >>>> >>>> if( self ) >>>> { >>>> self.modemName = (__bridge_transfer NSString* >>>> )IORegistryEntryCreateCFProperty( io_object, CFSTR( kIOTTYDeviceKey ), >>>> NULL, 0 ); >>>> self.callOutDevice = (__bridge_transfer NSString* >>>> )IORegistryEntryCreateCFProperty( io_object, CFSTR( kIOCalloutDeviceKey ), >>>> NULL, 0 ); >>>> self.dialInDevice = (__bridge_transfer NSString* >>>> )IORegistryEntryCreateCFProperty( io_object, CFSTR( kIODialinDeviceKey ), >>>> NULL, 0 ); >>>> self.bsdType = (__bridge_transfer NSString* >>>> )IORegistryEntryCreateCFProperty( io_object, CFSTR( kIOSerialBSDTypeKey ), >>>> NULL, 0 ); >>>> } >>>> >>>> return self; >>>> } >>>> >>>> Where I found that in the documentation I have entirely forgotten. >>> >>> Thanks, that looks like it should work nicely! My device is equally >>> accessible as /dev/tty.usbmodem* and /dev/cu.usbmodem*. >>> >>> But first I need to get an io_object_t reference to the device. The only >>> way I know of is to get the device in a matching dictionary. Currently I’m >>> doing the following: >>> >>> io_object_t device = 0; >>> io_iterator_t serialPortIter = 0; >>> CFMutableDictionaryRef matchDict = >>> IOServiceMatching(kIOSerialBSDServiceValue); >>> CFDictionarySetValue(matchDict, CFSTR(kIOSerialBSDTypeKey), >>> CFSTR(kIOSerialBSDModemType)); >>> kern_return_t kernResult = >>> IOServiceGetMatchingServices(kIOMasterPortDefault, matchDict, >>> &serialPortIter); >>> while ((device = IOIteratorNext(serialPortIter))) { ... } >>> >>> For reasons that elude me, the result of the above code is an empty >>> matchDict. >>> >>> -Carl >>> >>> _______________________________________________ >>> Do not post admin requests to the list. They will be ignored. >>> Usb mailing list ([email protected] <mailto:[email protected]>) >>> Help/Unsubscribe/Update your Subscription: >>> https://lists.apple.com/mailman/options/usb/jackbrindle%40me.com >>> <https://lists.apple.com/mailman/options/usb/jackbrindle%40me.com> >>> >>> This email sent to [email protected] <mailto:[email protected]> >> >
_______________________________________________ Do not post admin requests to the list. They will be ignored. Usb mailing list ([email protected]) Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/usb/archive%40mail-archive.com This email sent to [email protected]
