I'm trying to getting this going, but I can't build with the reference to 
USBDeviceReEnumerate(). Xcode 6 says there's no such function, even though I 
have included the IOKit and CoreFoundation frameworks in the project build 
settings and imported the include files.

Code snippet:

#import <IOKit/IOKitLib.h>
#import <IOKit/usb/IOUSBLib.h>

. . .

    if ( USBDeviceReEnumerate( (*deviceInterface), 0 ) != kIOReturnSuccess ) {

Xcode says: "Implicit declaration of function 'USBDeviceReEnumerate'", and the 
build fails with: "ld: symbol(s) not found for architecture x86_64"

If I click on the function name in my code, Xcode says: "Declared in 
IOUSBLib.h" Clicking on that, it shows the path is: Frameworks > IOKit > usb > 
IOUSBLib.h, which I have included.

So what is going wrong here?
-Carl



On Dec 15, 2014, at 11:34 AM, Carl Hoefs <[email protected]> wrote:

> At last a ray of hope!  Is there any documentation on USBDeviceReEnumerate() 
> beyond the few lines in IOUSBLib.h?
> -Carl
> 
> 
> On Dec 15, 2014, at 11:15 AM, Fernando Urbina <[email protected]> wrote:
> 
>> Have you guys looked at the USBDeviceReEnumerate() API?  If the composite 
>> driver has grabbed your device, you can cause it to re-enumerate and run the 
>> driver matching process again.  The version of this call in the 10.10 SDK 
>> also has some interesting parameters.
>> 
>> 
>>> On Dec 15, 2014, at 10:46 AM, Carl Hoefs <[email protected]> 
>>> wrote:
>>> 
>>> 
>>> On Dec 15, 2014, at 1:56 AM, Roland King <[email protected]> wrote:
>>> 
>>>>> 
>>>>> So the .. good news .. is that my device does exactly what your device 
>>>>> does. I have a number of CDC devices, picked one at random (a Nordic 
>>>>> dongle with embedded Segger which presents as a CDC device + extra 
>>>>> interface). It properly identifies very similarly to yours when plugged 
>>>>> in, on boot however it’s claimed by the composite driver, which seems 
>>>>> pretty wrong as it has a bDeviceClass and bDeviceSubclass which are 
>>>>> non-zero. 
>>>>> 
>>>>> I’ve found no way of forcing the USB subsystem to re-enumerate/re-probe 
>>>>> it. 
>>>>> 
>>>>> So my handwaving guess here is that at-boot the CDC driver isn’t enabled, 
>>>>> or not probed or not used and the device gets claimed by the composite. I 
>>>>> don’t know if that’s because the CDC kext isn’t loaded early or because 
>>>>> the composite driver has changed and is picking up things it shouldn’t 
>>>>> which it didn’t used to, leaving them for later kext loads. 
>>>>> 
>>>>> I’ll file a bug. 
>>>>> 
>>>> 
>>>> My bug (18845268) was just closed as a duplicate of 18731228. That bug is 
>>>> currently marked as open. At least that means the issue has been 
>>>> determined to be a bug which may be the first stage to having it fixed one 
>>>> day soon.
>>> 
>>> That’s good to know! Very soon this will become a huge issue for us. Out of 
>>> necessity we're converting over our older 10.8 systems to newer Apple 
>>> hardware that runs only 10.10+. There’s no way to “replug” a USB device 
>>> within a sealed kiosk system, so we’ll be needing either an outright fix or 
>>> a some kind of workaround that can be run after boot (such as a manual bus 
>>> rescan).
>>> -Carl
>>> 
>> 
>> 
>> Woof,
>> 
>> Nano Urbina
>> Build Slave
>> Razz Software
>> http://www.razzsoftware.com
> 
> 
> _______________________________________________
> 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/newslists%40autonomy.caltech.edu
> 
> This email sent to [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]

Reply via email to