
The Wire Adapter package consists of four separate parts. The Wire Adapter and Port drivers reside in the USB stack and interact with the USB devices connected to the device.The Radio and Bus Management driver handles the different radio controls, protocols and bus specific interactions for the Wire Adapter. The user interaction to setup and associate devices with the driver is handled in an Interface application. All modules are necessary items for a Wire Adapter to function.
The Port driver handles all things related to the ports of the Wire Adapter. This can be either physical ports that are found on a Device Wire Adapter or virtual ports that are found on a Host Wire Adapter. Both are treated in the same manner. This driver will also handle any composite devices that may be connected to the Wire Adapter. When a device is plugged into a port this driver will detect the plug in, handle the association if the device is wireless and pass the appropriate information to the operating system so the device can be enumerated. In a similar manner, this driver also detects device unplugs, and it alerts the operating system of a device removal.
The Wire Adapter driver handles functions specific to the Wire Adapter as defined in the Wireless USB specification. This driver enumerates the Port driver. The same driver is used for both the Host Wire Adapter and the Device Wire Adapter. The driver takes care of adapter differences internally. The driver reads the different descriptors from the device. With this information the driver is able setup the mechanisms to use to communicate with the device.
Another important feature the Wire Adapter driver handles is Remote Pipe (RPipe) Management. The driver will read the list of RPipes from the device and control the allocation of these resources. When an endpoint requests to be paired with an RPipe the driver will match the request with an RPipe suited for the transfer. If all RPipes are assigned, the driver will make a determination of which currently assigned RPipe can be freed. The driver will free this RPipe and reassign it to the request that currently needs it. In certain circumstances, the driver will determine the memory block size assigned to the RPipe.
The Wire Adapter driver also handles Transfer Management. Wireless USB supports four different transfer protocols: Control, Bulk, Interrupt and Isochronous. The Wire Adapter driver receives these transfer requests from the USB stack and reformats the request in a way that a wireless environment can deal with them more efficiently. This change in format depends on the size of the transfer and the RPipe requirements allocated to the transfer. Upon completion of the data transfer, the Wire Adapter driver completes the transfer request as any USB host driver would do. This reformatting of the transfer is transparent to the USB device driver that is requesting the data.
Notification events are also handled in the Wire Adapter driver. This is the mechanism to alert the Wire Adapter of events such as port status changes, transfer completions, time adjustments or wake up events. The Wire Adapter then informs the appropriate driver or module of the event.
The Radio and Bus Management functions are handled in a separate driver to allow other protocols that may be supported in the Wire Adapter to have access to the radio control functions. This allows a Wireless IP driver to be able to request bandwidth or get radio status on the same radio that the Wireless USB uses. This management in one common place allows equal access for multiple protocols. This driver is loaded upon plug in of the Wire Adapter. The driver queries the device and then enumerates a driver for the different protocols supported by the device. This driver will also be responsible for routing of data to the appropriate protocol or device. Using the functions defined in the USB specification or the WiMedia specification, the Radio and Bus Management driver will pass the commands to the device to control the radio. The Radio and Bus Management driver will also handle beacon control, channel scanning and changing, Distributed Reservation Protocol (DRP) Management and radio status.
Something unique to a wireless driver is the need for an interface application. Most drivers are transparent to the user and require no interaction. In a wireless situation, there is a need to associate a device with a host. This initial ceremony requires user interaction. These interactions with the device will be handled in the interface application. Also, important information such as devices connected, link status and association status will be shown in this application.
For the hardware developer, this application has been expanded into a special OrangeWare Utility. This Utility application will enable the developer have a greater insight into how the Wire Adapter is functioning. The Utility application will show performance statistics on transfers and RPipes. The user will be allowed to change things such as the number of RPipes and the memory assigned to an RPipe to evaluate performance. The current state of all RPipes will also be available. These functions will aid the developer in design and debugging of their product.
These four items provide a base for your Wire Adapter product. OrangeWare also realizes that not all products are created equal, nor should they be. We invite any developer with special enhancements to their products to contact us so we can lend a hand in your development effort and provide any necessary driver modifications or APIs as required.
|
Copyright © 2001-2006, OrangeWare Corporation All Rights Reserved stf@orangeware.com |