diff -r 578be2adaf3e -r 307f4279f433 Adaptation/GUID-9597DB22-D932-5A58-9C3C-4E5FCA244253.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Adaptation/GUID-9597DB22-D932-5A58-9C3C-4E5FCA244253.dita Fri Oct 15 14:32:18 2010 +0100 @@ -0,0 +1,14 @@ + + + + + +Re-Enumerate A short description of how to perform a Re-Enumeration.
Introduction

If any interface settings have been changed then a re-enumeration must be forced by calling RDevUsbcScClient::ReEnumerate(). A re-enumeration involves the device initiating a bus disconnection and re-connection.

Re-enumerate

ReEnumerate() is an asynchronous operation that completes when the controller is successfully configured by the host. Because it is not known if the operation has failed, set up a timer to complete after approximately 5 seconds. It can be assumed that if the operation has not completed in this time then it will not complete. When the request is completed status contains the result of the re-enumeration. See TRequestStatus.

TRequestStatus status; +gPort.ReEnumerate(status); +User::WaitForRequest(status);

If the re-enumeration has not completed within the expected time period then use RDevUsbcClient::ReEnumerateCancel() to cancel the request. Note: this function does not undo the re-enumeration.

If alternate interface settings have been set up enquire which interface has been selected following a re-enumeration by using RDevUsbcScClient::GetAlternateSetting().

After you have forced a re-enumeration you can use your USB class driver to Read Data from USB using Shared Chunks or Write Data to USB using Shared Chunks or if you wish to use the Buffer Interface Layer (recommended) then go to Using the BIL Interface.

\ No newline at end of file