1. Field of the Invention
The present invention relates generally to wireless devices and more specifically to connectivity of wireless devices.
2. Discussion of the Related Art
Consumer devices that wirelessly connect with other devices have been a growing trend in the recent past. Wireless connectivity makes many consumer devices portable and reduces the wire clutter typically associated with devices that communicate with peripherals such as personal computers. In many environments, wireless connectivity increases user productivity and provides for an enhanced user experience. The addition of wireless connectivity features to many consumer devices has broadened the consumer base for the consumer devices. The proliferation of wireless devices has also expanded the applications available to users of consumer devices.
There are many specific examples of the wireless connectivity trend. Some examples include the wireless keyboard and the wireless mouse. Other examples include cameras that wirelessly transfer photographs to mass storage devices and home media servers that wirelessly stream data to video and audio appliances.
To facilitate wireless connectivity, a variety of standards have been promulgated that promote wireless device interoperability. For example, Bluetooth for personal area networks, IEEE 802.11 for local area networks, WiMAX for microwave data links, WiMedia for wireless ultra wideband networking, and Zigbee for wireless low power mesh network standard.
The Universal Serial Bus (USB) is a popular and ubiquitous wired serial bus standard. The USB standard defines a socket interface for host devices and plug interface for peripheral devices that makes connecting peripheral devices to hosts simple and easy. The plug and socket interfaces are commonly used to connect peripherals such as mice, flash memory jump drives, printers, and personal music players to hosts such as a computer. The USB interface has many advantages like low power consumption and low cost.
The USB standard also defines protocols that allow a host to automatically detect and configure a peripheral device. The USB standard is not a static standard but an evolving standard that is periodically updated. The USB standard is defined by a series of specifications, with each successive specification providing backward compatibility to legacy USB compliant hardware and software. For example, the USB 1.1 and the USB 2.0 standard, hereby incorporated by reference, are popular USB standards.
The USB 2.0 specification supports three primary data rates for peripheral devices: the Low Speed (LS) data rate at 1.5 Mega bits per second (Mbps); the Full Speed (FS) data rate at 12 Mbps; and the High Speed (HS) data rate at 480 Mbps. The LS data rate is normally used for communicating with low data rate peripherals such as a keyboard, a mouse or a stylus. FS data rates are normally used for communicating with peripherals that require somewhat higher data rates such as peripherals that provide or receive Integrated Services Digital Network (ISDN) data or digital audio content. Many scanners and printers communicate at FS data rates. HS data rates are often needed for peripherals that require very fast data rates, for example, peripherals that do image processing, mass data storage or mass data transfer.
The USB standard provides protocols for configuring USB enabled devices in a tiered star network topology. Each star in the network features a USB hub usually embedded in a host device. Each USB hub has a wired connection to the host and to one or more peripheral devices. Each host has a host controller that controls access to the peripheral devices wired to the hub. The host controller manages the peripheral devices by reporting the states of the devices, converting data communication protocols, generating data frames, and processing and handling data errors.
The USB standard provides for network topologies that comprise up to 127 peripheral devices connected to a host and up to five tiers of USB hubs. Hubs are either FS hubs or HS hubs. FS hubs support peripherals having data rates up to and including FS data rates and HS hubs support peripherals having data rates up to and including HS data rates.
HS hubs have a Transaction Translator (TT) that segregates FS and LS data from HS data by allocating hub bandwidth to HS data and hub bandwidth to FS and LS traffic. Hub bandwidth is usually provided to FS and LS data on a first come first serve basis.
The USB 2.0 specification also defines four types of data transfers namely bulk, isochronous, interrupt and control transfers. Isochronous and interrupt transfers are scheduled on a periodic basis and bulk and control transfers on a non-periodic basis. According to the USB 2.0 specification, the round trip response time delay between a USB device and the host computer may not exceed 18 bit times for LS and FS and for HS devices the round trip response must be between 736 and 816 HS bit times.
To provide the benefits of wireless connectivity to USB devices, the USB Implementers Forum has promulgated a Wireless USB (WUSB) specification as a wireless extension to the USB standard. WUSB features the Ultra-WideBand (UWB) wireless technology defined by the WiMedia Alliance. The WUSB specification provides for data rates of 480 Mbps and 110 Mbps with WUSB compliant devices with the devices operating in the 3.1-10.6 GHz range using a multi-band OFDM modulation scheme.
Notably, the WUSB specification does not support the use of hubs as the USB standard does. Also, the WUSB specification defines a new device class called a wire adaptor that is not backwardly compatible with legacy bus interfaces and bus software such as those that conform to USB 2.0. Additionally, software drivers need to be installed in the host to support WUSB making transition from wired USB to WUSB anything but transparent to the user.
Those skilled in the art will recognize that there is a need for wireless connectivity between consumer devices that feature traditional wired bus interfaces such as those that conform to the USB 2.0 standard.
Several embodiments of the invention provide methods and devices for wireless communications. In one embodiment, the invention can be characterized as a method of communicating between a host and a peripheral, and a means for accomplishing the method, the method comprising the steps: establishing, in a manner transparent to the host, a wireless data link between a wireless hub device and a wireless peripheral device coupled to the peripheral, the wireless hub device coupled to and configured to communicate with the host, wherein the host is configured to communicate with peripheral devices over a wireline link at a plurality of data rates when connected via the wireline link; and controlling a flow of data between the host and the wireless hub device so that the host is unaware of the wireless data link, wherein the data is to be communicated between the host and the peripheral.
In another embodiment, the invention can be characterized as a communication system comprising a wireless hub device adapted to be coupled to a host and configured to communicate with the host, wherein the host is configured to communicate with peripheral devices over a wireline link at a plurality of data rates when connected via the wireline link. The system also comprises a wireless peripheral device adapted to be coupled to a peripheral. The wireless hub device is adapted to: establish, in a manner transparent to the host, a wireless data link between the wireless hub device and the wireless peripheral device; and control a flow of data between the host and the wireless hub device so that the host is unaware of the wireless data link, wherein the data is to be communicated between the host and the peripheral.
In yet another embodiment, the invention can be characterized as a method of communicating between a host and a peripheral comprising the steps: establishing, in a manner transparent to the host and the peripheral, a wireless data link between a wireless hub device and a wireless peripheral device coupled to the peripheral, the wireless hub device coupled to and configured to communicate with the host, the wireless peripheral device coupled to and configured to communicate with the peripheral, wherein the host and the peripheral are configured to communicate with each other over a wireline link at a plurality of data rates when connected via the wireline link; and controlling a flow of data between the host and the peripheral so that the host and the peripheral are unaware of the wireless data link, wherein the data is to be communicated between the host and the peripheral.
The above and other aspects, features and advantages of several embodiments of the present invention will be more apparent from the following more particular description thereof, presented in conjunction with the following drawings.
Corresponding reference characters indicate corresponding components throughout the several views of the drawings. Skilled artisans will appreciate that elements in the figures are illustrated for simplicity and clarity and have not necessarily been drawn to scale. For example, the dimensions of some of the elements in the figures may be exaggerated relative to other elements to help to improve understanding of various embodiments of the present invention. Also, common but well-understood elements that are useful or necessary in a commercially feasible embodiment are often not depicted in order to facilitate a less obstructed view of these various embodiments of the present invention.
The following description is not to be taken in a limiting sense, but is made merely for the purpose of describing the general principles of exemplary embodiments. The scope of the invention should be determined with reference to the claims.
Reference throughout this specification to “one embodiment”, “an embodiment”, or similar language means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the present invention. Thus, appearances of the phrases “in one embodiment”, “in an embodiment” and similar language throughout this specification may, but do not necessarily, all refer to the same embodiment.
Some embodiments of the invention provide for the decoupling of a wireline protocol with a wireless protocol. For example, a wireless data link exists between two or more devices using a wireless protocol where the two or more devices are normally configured to communicate via a wireline link according to a wireline protocol. By way of example, the one or more devices include a host configured to communicate with one or more peripheral devices, for example, using a version of the USB standard. In some embodiments, the wireless communicating devices interface with one or more of the wireline devices and implement the wireless data link and wireless protocol in a manner transparent to the one or more wireline devices. For example, in some embodiments, one or more of the wireline device are unaware of the existence of a wireless data link therebetween and they behave as though the link therebetween were wired. In some embodiments, in order to decouple the wireline protocol from the wireless protocol, one or more of the interfacing devices that interface with the wireline devices control the flow of data between itself and the particular device so that the particular device is unaware of the wireless data link. For example, a wireless hub device interfaces with a wired host (e.g., a USB host controller) and controls the flow of data between the wireless hub device and the wired host so that the host in unaware of the wireless data link. This control of the flow of data may be done to ensure that the host maintains the communication link, to accommodate a wireless data rate that is different than (e.g., slower than) the expected wired data rate, and/or for error handling purposes, for example. In some embodiments, the wireless hub device will transmit signaling to the host to ensure that the communication link is maintained by the host and to maintain the transparency of the wireless protocol from the perspective of the wired host. For example, this signaling may include a negative acknowledgment (NAK), a packet error message, and/or a cyclic redundancy checking message. In embodiments in which the wired protocol is the USB 2.0 standard, the host expects all data and/or replies or responses from the peripheral devices within an allotted time period, for example, within 16 bit-times. In the event the wireless data link can not deliver the data, reply and/or response within the allotted time period, the wireless hub device will transmit signaling to the host so that the host maintains the communication link. In some embodiments, the sending of signals to the host device for one or more of the purposes described above may be referred to as spoofing the host.
In some embodiments, this decoupling of the wireless and wired protocols allows for a variety of effective wireless data communication rates including effective data rates that are not specifically provided for wire-line standards such as USB 2.0 and wireless standards such as WUSB. Thus, some embodiments provide for effective data rates between a host and a peripheral that are different than the data rates supported by the host. For example, in the context of USB communications supporting a High Speed (HS) data rate of 480 Mbps, a Full Speed (FS) data rate of 12 Mbps and a Low Speed (LS) data rate of 1.5 Mbps, effective data rates between a USB host and peripheral are provided that are the same as or different than these defined rates. In one further example, an effective rate of communication between the HS data rate and the FS data rate is provided and may be referred to as a full speed plus (FS+) data rate. These non-standard data rates facilitate the establishment of wireless data links that generally have varying effective data rates that depend on many factors, such as the transmission path length of the data link and the underlying environmental conditions surrounding the data link.
Referring first to
Cables 112, 114 provide wireline data conduits for full speed data streams 118, 120. Cable 116 provides a data conduit for a HS data stream 122.
The HS hub 104 has sockets (not shown) that receive plugs (not shown) located at the ends of cables 112, 114, 116. The plugs mate with the sockets allowing easy attachment and detachment of peripheral devices, such as peripheral 106, 108, 110.
The HS hub 104 detects the speed of each peripheral device connected to the HS hub 104, such as peripherals 106, 108, 110 and adjusts to communicate with each peripheral device at the appropriate speeds. In this embodiment, the HS hub 104 thus forms a USB branch that supports high speed, full speed and low speed devices. In other embodiments, the HS hub 104 and peripherals form a branch of a larger USB tree structure.
On receiving HS data packets, the HS hub 104 decodes the HS data packets. HS data packets addressed to the HS peripheral 108 are forwarded to the HS peripheral 108 in the HS data stream 122 through cable 116. HS data packets addressed to the FS peripherals 106, 110 are translated by the HS hub 104 into FS data packets and forwarded to the FS peripherals 106, 110 in respective FS data streams 118, 120 through cables 112, 114.
Referring next to
The wireless hub 202 decodes HS data packets received from the host PC 102 through a HS 216 wired connection. HS data packets addressed to the HS peripheral 108 are forwarded to the HS peripheral 108 through wireless data link 214 and wireless device 204 according to a wireless protocol. HS data packets addressed to the FS peripherals 106, 110 are translated by the wireless hub 202 and forwarded to the FS peripherals 106, 110 through wireless data links 210, 212 and respective wireless peripheral devices 203, 205.
Wireless connectivity between the host PC 102 and each of the peripheral devices 106, 108, 110 is achieved through the wireless hub 202 and wireless peripheral devices 203, 204, 205 using the wireless data links 210, 212, 214 according to a wireless protocol 206. Accordingly, in some embodiments the wireline protocol is decoupled from a wireless protocol (as is also illustrated in
In some embodiments, the wireless hub 202 transmits signaling to the host PC 102 to ensure that the communication link is maintained by the host PC 102 and to maintain the transparency of the wireless protocol from the perspective of the host PC. For example, this signaling may include a negative acknowledgment (NAK), a packet error message, and/or a cyclic redundancy checking message. In embodiments in which the wired protocol is the USB 2.0 standard, the host PC 102 expects all data and/or replies or responses from the peripherals 106, 108, 110 within an allotted time period, for example, within 16 bit-times. In the event a given wireless data link can not deliver the data, reply and/or response within the allotted time period, the wireless hub 202 transmits signaling to the host PC 102 so that the host PC maintains the communication link. In the USB protocol, when the host PC receives the NAK or other signal, the host PC 102 will not tear down the communication link and will send an additional request for the data, reply or response, which provides an additional period of time for the wireless hub 202 to obtain and deliver the information to the host PC 102. In some embodiments, the sending of signals to the host PC for one or more of the purposes described above may be referred as to spoofing the host PC.
In accordance with some embodiments, the decoupling of the wireless and wired protocols allows for a variety of effective wireless data communication rates over the wireless data links 210, 212, 214 including effective data rates that are not specifically provided for wire-line standards such as USB 2.0 and wireless standards such as WUSB. Thus, some embodiments provide for effective data rates between the host PC 102 and the peripherals 106, 108, 110 that are different than the data rates supported by the host PC and the peripherals 106, 108, 110. For example, in the context of USB communications supporting a High Speed (HS) data rate of 480 Mbps, a Full Speed (FS) data rate of 12 Mbps and a Low Speed (LS) data rate of 1.5 Mbps, effective data rates between the host PC 102 and peripherals 106, 108, 110 are provided that are the same as or different than these defined rates. In the illustrated embodiment of
To achieve the wireless FS+ data rates or other non standard data rates, in several embodiments, the wireless hub 202 communicates with the host PC 102 using a standard data rate that is compliant with the host PC protocol such as the USB 2.0 compliant HS 217 data rate as shown in
In several embodiments, the wireless peripheral devices 203, 204, 205 communicate with peripherals 106, 108, 110 at the specific discrete data rates supported by each of the peripherals 106, 108, 110 which in one embodiment, are the rates supported by the USB standard. The wireless peripheral devices 203, 204, 205 control the flow of data to the respective peripherals 106, 108, 110 as needed. For example, the wireless peripheral devices 203, 204, 205 buffer data and transmit signaling so that the peripherals 106, 108, 110 as needed maintain the communication link with the wireless peripheral devices. As described above, the transmitted signaling may include transmitting a NAK, a packet error message, and/or a cyclic redundancy checking message. In other words, the wireless peripheral devices 203, 204, 205 spoof the respective peripherals 106, 108, 110 as needed. The wireless peripheral devices 203, 204, 205 also transmit data to the wireless hub 202 over the wireless data links 210, 212, 214 at the FS+ data or other data rate not supported by the host PC 102. The wireless data rate can be any data rate up to the data rate supported by each of the wireless data links 210, 212, 214.
The precise data rate supported by each of the wireless data links 210, 212, 214 may vary between wireless data links and over time. The variance may occur because the data rate is dependent on many exogenous factors such as the distance between the wireless hub 202 and each of the wireless peripheral devices 210, 212, 214 and the underlying environmental conditions of the wireless data link.
It can be appreciated that the bandwidth and effective data rates of a wireless data link will generally vary significantly from those of a wired data link. It can also be appreciated that by operating each wireless data link 210, 212, 214 at an adaptable rate or other non-standard data rate, the wireless USB configuration 200 provides a considerable communication throughput advantage over a system that merely falls back to the FS data rate when wireless conditions do not allow for a HS data link as is the case in conventional wired USB systems.
Advantages of embodiments that provide a data rate in between two standard rates of the wired protocol, such as an FS+ data rate, may be more fully appreciated through a more specific example. If the host PC 102 has HS data traffic bound for HS peripheral 108 and wireless data link 214 does not have adequate bandwidth to support the HS data, the data may be sent from the host PC 102 to the HS peripheral at an intermediate FS+ effective data rate, i.e., a data rate in between HS and FS, instead of falling back to the next lowest supported data rate, FS. The wireless hub 202 communicates with the host PC 102 according to the HS protocol, buffering data and controlling data flow between itself and the host PC 102 by transmitting signaling as needed to the host PC 102, such as negative acknowledgments (NAKs), packet ID errors, CRC errors or the like. In the illustration of
Those skilled in the art will also recognize that in some embodiments, the wireless hub 202 and the wireless peripheral devices 203, 204, 205 communicating using wireless protocol 206 as shown in
It can also be appreciated that the wireless hub 202 may be embedded in the host PC 102 or embodied as a separate unit as shown in
The embodiment shown in
Referring next to
The wireless hub 304 has a host USB interface 320 (which may be generically referred to as a host interface), a buffer 324 and a host-side wireless interface 322. The buffer 324 is connected with the host USB interface 320 and the host-side wireless interface 322. The host USB interface 320 connects the wireless hub 304 with a host 302 (e.g., host PC 102). The wireless interface 322 is coupled to an antenna 208.
The wireless peripheral device 306 has a peripheral-side wireless interface 332, a buffer 334 and a peripheral USB interface 330 (which may be generically referred to as a peripheral interface). The buffer 334 is connected with the peripheral-side wireless interface 332 and the peripheral USB interface 330. The peripheral USB interface 330 connects the wireless peripheral device 306 with a peripheral 308 (e.g., one of peripherals 106, 108, 110). The peripheral-side wireless interface 332 is coupled to an antenna 209.
This decoupling allows the host-side wireless interface 322 and peripheral-side wireless interface 332 to establish a wireless data link therebetween using the wireless protocol 314 that is largely independent of the USB protocol 312. The wireless data link can thus have an effective data rate that is the same as or different than the data rates supported by the USB protocol. For example, as illustrated in the embodiment of
It can also be appreciated that the wireless hub 304 can be conveniently embedded in the host 302 and that the wireless peripheral device 306 may be embedded in the peripheral 308 or that the wireless hub 304 and the wireless peripheral device 306 may be embodied as independent units with wired connections to the host 302 and the peripheral 308. Other embodiments have wireless hubs 304 and wireless peripheral devices 306 that conform to other bus standards, conventions, or ad hoc agreements. It is understood that the wireless hub 304 and wireless peripheral devices 306 of these embodiments include the appropriate compliant interfaces to interface with the particular host and peripherals according to the particular standards, conventions or ad hoc agreements. It can also be appreciated that the wireless protocol 314 can be implemented with a static or adaptable data rate.
In several embodiments, host-side wireless interface 322 and the peripheral-side wireless interface 332 include wireless transmit and receive circuitry, or transceiver circuitry to communicate signaling conveying data. In one embodiment, the interfaces 322 and 332 comprise radio frequency transceivers capable of transmitting and receiving, and encoding and decoding signaling having at wide band frequency bands. For example, in one embodiment, the interfaces 322 and 332 communicate wideband signaling having bandwidth that is at least 2% or at least 10% of the center frequency of the signaling. In other embodiments, the interfaces 322 and 332 communicate ultra-wideband (UWB) signaling having bandwidth that is at least 20% of the center frequency of the signaling. Such UWB transceivers have large inherent bandwidths providing for very high data rates at short distances. UWB components are generally power efficient, cost effective, robust and easy to manufacture and package as an ASIC. In several embodiments, other high speed wireless links such as those compliant with IEEE 802.11 g/n are featured. Wideband band and UWB transceivers that may be implemented in several embodiments of the invention are described more thoroughly in U.S. Pat. Nos. 6,895,059 and 7,321,601, all of which are incorporated herein by reference.
Referring next to
In one embodiment, the USB interface 320 provides the wireless hub 400 with a USB 2.0 compliant interface for communicating with a host. The USB interface 320 encodes and decodes USB data traffic according to the USB specification. In one embodiment, high speed data traffic is routed to the spoofing buffer 402 with FS and LS traffic routed to the TT 404.
The spoofing buffer 402 and the TT 404 are in communication with the arbiter 408. The arbiter 408 arbitrates conflicts between the spoofing buffer 402 data traffic and TT 404 data traffic. High speed traffic from the spoofing buffer 402 is generally given priority over slower speed split traffic from the TT 404. In this way, the arbiter 408 ensures that significant bandwidth for the HS traffic is made available on the wireless link. The arbiter 408 also routes HS traffic received by the PHY 414 to the spoofing buffer 402 and routes other traffic from the PHY 414 to the TT 404.
In several embodiments, the spoofing buffer 402 buffers data addressed to a high speed peripheral in order to control the flow of data. Buffering may be needed since the wireless data link between the wireless hub 400 and a wireless peripheral device (not shown) may not have adequate bandwidth to support high speed data traffic. In this case, the spoofing buffer would control the flow of data to the host PC. For example, the flow of data is controlled by transmitting signaling to the host PC, such as negative acknowledgments (NAKs), packet ID errors, CRC errors or the like to the host so that the host PC will maintain the communication link. Thus, the spoofing buffer 402 spoofs the host into communicating at a lower effective data rate while maintaining the communication link. These communications back to the host cause the host PC to re-request the data desired without timing out and taking down the connection. The spoofing buffer 402 also buffers data and transmits the data at a rate supported by the data link. In many instances, this data rate would be an FS+ data rate (i.e. between a FS and HS data rate).
The TT 404 decodes HS data packets and detects split tokens embedded in the packets that indicate split transactions. The TT 404 checks the hub address field of each split token to determine if it is being targeted by the split transaction. If so, the TT 406 has transaction buffers 420 that accept the split transactions and translate the HS data packets to FS and/or LS data packets.
The TT 404 is invoked when a FS or LS device (not shown) joins the wireless network. In a preferred embodiment, there is only one TT 404 because of the inherent bandwidth limitations of wireless data links. The TT 404 buffers full speed and low speed data between the host PC and the peripheral.
The PPE 410 generates messages such as polling messages for the wireless peripheral devices in range. The messages are sent to the wireless peripheral devices according to the wireless protocol. The polling messages are used to ascertain the presence of and the speeds of the wireless peripheral devices and command events such as reset, suspend, resume and wake up. Thus, the PPE 410 provides the messages needed to make the wireless hub to device wireless connection a seamless connection. The PPE 410 also performs many of the functions of a port state machine in a wired USB port.
A Device Router (DR) 406 tracks device addresses obtained by the PPE 410 through polling operations. The device addresses are use by the PHY 414 to establish wireless links with appropriate devices.
Messages from the PPE 410 and the arbiter 411 are multiplexed and de-multiplexed in the multiplexer 411. The multiplexer is connected to the PHY 414 where messages are transmitted and received over antenna 208. In one embodiment, an ultra-wideband data link is preferred due to the large inherent bandwidth of UWB links providing link capacity to transmit data at or near high speed data rates.
The port state module 412 tracks the port connections and wireless links. The port state module tracks changes to the states of devices in communication with the hub 400. Changes to the state of the devices may be reported to the host PC.
One skilled in the art will recognize that the wireless hub 400 appears to a host as a USB hub and the design of the host to hub interface is unaffected by wireless hub 400. That is, wireless hub 400 will operate with a host that is USB compliant. It is understood that while the host is often referred to as a host PC throughout this specification, that the host device may or may not be implemented as a personal computer. For example, the host may be implemented as any general or specific purpose computing device including a host controller that controls communications over a wireline data link according to a wireline standard.
Referring next to
In some embodiments, the antenna 209 and PHY 514 are operative to generate a wireless data link between the wireless peripheral device 500 and a wireless hub (not shown). The port state module 512 tracks the USB bus state of the USB peripheral. The USB bus state can be passed to the wireless hub when a polling message is received. The port state module 512 also tracks changes to the state of the hub (not shown) that is in communication with the wireless peripheral device 500. Changes to the state of the wireless hub may be reported to the peripheral.
Messages received from the wireless hub and bound for the wireless hub are de-multiplexed and multiplexed in a multiplexer 511. The Polling and Protocol Engine (PPE) 502 responds to polling messages sent from the wireless hub and generates protocol messages.
The LS/FS spoofing buffer 504 stores LS and FS traffic received from the wireless hub. Data received through a split transaction from the wireless hub is decoded and stored and in the spoofing buffer 504. The LS/FS spoofing buffer 504 verifies the data received from the wireless hub is error free and if not requests that the data be resent. The LS/FS spoofing buffer 504 controls the flow of data between the wireless peripheral device 500 and the peripheral. For example, the LS/FS spoofing buffer 504 forwards the decoded data to the peripheral 308 through multiplexer 516 and the USB interface 330. The LS/FS spoofing buffer 504 also stores data bound for the wireless hub. In some embodiments when the effective wireless data rate is faster than the data rate of the peripheral, the flow of data to the peripheral is controlled as needed, e.g., buffered and/or delayed to match the expected timing of the peripheral.
The HS spoofing buffer 506 stores high speed data traffic received from the hub (not shown). The HS spoofing buffer 506 controls the flow of data to the peripheral as needed and causes the peripheral to re-request the data desired without timing out or taking down the connection. For example, as described above, when the effective wireless data rate is less than the data rate of the peripheral, the spoofing buffer 506 sends signaling, such as negative acknowledgments (NAKs), packet ID errors, CRC errors or the like, to the peripheral so that the peripheral will maintain the communication link. Thus, the spoofing buffer 402 spoofs the peripheral into communicating at a lower effective data rate. The HS spoofing buffer 506 forwards the data to the peripheral through the multiplexer 516 and the USB interface 330. Thus spoofing buffers 504, 506 provide data to the USB interface 330 so that the USB may communicate with the peripheral in conformance with the USB protocol.
Referring next to
The packet store routine 602 manages the one or more buffers 608 by storing data in the data registers 610 and state information in the state registers 612. The buffer allocation routine 604 allocates and de-allocates each of the plurality of buffers 608. The status routine 606 provides status information to the host or peripheral.
Referring next to
The transaction ID 704 identifies the transaction stored in the transaction buffer. The device address 706 is a target address associated with the transaction stored in the buffer. The End Point Number 708 is the number of the device being addressed in the transaction. The Device Response Availability Flag 710 tracks whether the device being addressed is available. The memory storage information field 712 contains details of where the transaction data is stored in the buffers. For example, the memory storage information field 712 may contain the start or end addresses in the memory and the data size.
Referring next to
The periodic buffers 802 and the non-periodic buffers 804 buffer data that is addressed to a HS peripheral. The buffers are used when the wireless data links cannot support HS data rates. These FS+ transactions are supported by controlling the flow of data with the host by transmitting Negative Acknowledgments (NAKs) messages, Packet ID (PID) errors, CRC errors or the like to the host PC, e.g., the host PC is spoofed. During spoofing, HS transactions are buffered at the wireless hub or the wireless peripheral device. An exemplary embodiment of spoofing can be found in the pseudo code presented and explained hereinafter.
Referring next to
Referring next to
The polling engine thus periodically polls devices facilitating smooth processing of transactions. In the case of the first message sequence 1006, the wireless hub sends a poll request message to the wireless peripheral device; the wireless peripheral device in turn sends a poll response. In the case of second message sequence 1008; the wireless hub sends the poll request along with the transaction data; the wireless peripheral device in turn responds with an ACK, NAK or an error message. In the case of the third message sequence 1010, the wireless hub sends a polling request to the wireless peripheral device; and the wireless peripheral device in turn sends a poll response with the transaction data.
Referring next to
The HS host to HS peripheral routine 1102 involves different USB tokens such as IN, OUT, PING, SETUP and Start of Frame (SOF). The HS host to FS peripheral routine 1106 involves split transactions (SSPLIT and CSPLIT). The control transfer request and response routine 1104 involves RESET, SUSPEND and RESUME transfer requests and corresponding responses.
Referring next to
In one embodiment, the method includes detecting a wireless peripheral device and a corresponding peripheral (STEP 1210). In some embodiments, the detecting step is performed by a wireless hub device, e.g., wireless hub 202 detects wireless peripheral/s 203, 204, 205 and corresponding peripherals 206, 208, 210. The wireless hub device is configured to communicate with the host and the wireless peripheral device is configured to communicate with the corresponding peripheral. Since the communication system involves wireless devices that are capable of moving or being moved, the detecting device (e.g., wireless hub device) continually polls for wireless peripheral devices that are within communication range. According to several embodiments where the host is adapted to communicate with peripheral devices over the wireline link at a plurality of data rates, the data rate/s supported by the peripheral are also detected. The peripheral in several embodiments is configured to communicate at a first data rate, the first data rate being one of a plurality of data rates supported by a host. For example, in the context of wireline USB, the plurality of data rates may include HS (480 Mbps), FS (12 Mbps) and LS (1.5 Mbps).
As is described herein, the wireless peripheral device and the peripheral may be integrated into a single device or may be separate devices coupled together. Also, like peripherals described herein, the peripheral may be for example a wireless mouse, keyboard, printer, scanner, audio player, camera, etc. The peripheral may have electronics that support communicating according to a standard such as the wireline USB standard, for example. As is described herein, the wireless hub device and the host (e.g., host PC 102) may be integrated into a single device or may be separate devices coupled together.
Next, a wireless data link is established between a wireless hub device and the wireless peripheral device in a manner that is transparent to the host (STEP 1220). For example, in some embodiments, from the perspective of the host, the host behaves as though it were connected via a wireline connection direct to the peripheral and is unaware of the wireless data link established between the wireless hub device and the wireless peripheral device. Accordingly, the host does not tear down the communication link when the wireless data link is established. In some embodiments, as described herein, the wireless hub device includes a wireline interface to interface with the host, e.g., a USB interface in the event the host communicates using a version of the USB standard. In some embodiments, the wireless data link is established in a manner that is also transparent to the peripheral. For example, in this embodiment, from the perspective of the peripheral, the peripheral behaves as though it were connected via a wireline connection direct to the host (or hub of the host) and is unaware of the wireless data link established between the wireless hub device and the wireless peripheral device. In some embodiments, as described herein, the wireless peripheral device includes a wireline interface to interface with the peripheral, e.g., a USB interface in the event the peripheral communicates using a version of the USB standard.
In some embodiments, the host supports a plurality of data rates and the peripheral supports one or more of the plurality of data rates. Accordingly, the data rate of the wireless data link may be the same as or different than the data rate that the host and peripheral are attempting to communicate. Thus, in some embodiments, the wireless data rate is the same as one of the plurality of supported data rates, whereas in other embodiments, the wireless data rate is different that any of the supported data rates of the host and the peripheral. For example, consider (1) a host data rate as the rate of communication between the host and the wireless hub device, (2) a peripheral data rate as the rate of communication between the peripheral and the wireless peripheral device and (3) a wireless data rate as the data rate between the wireless hub device and the wireless peripheral device. In some embodiments, the host data rate and the peripheral data rate are different than the wireless data rate (e.g., host and peripheral are at HS and the wireless rate is at FS+, see
Next, a flow of data between a host and the wireless hub device is controlled so that the host is unaware of the wireless data link, where the data is to be communicated between the host and the peripheral (STEP 1230). For example, in some embodiments, the wireless hub device emulates the peripheral from the perspective of the host. This control of the flow of data is done to ensure that the host maintains the communication link, for example in order to accommodate a wireless data link having a data rate that is different than (e.g., slower than) the expected wired data rate had the host been directly connected to a peripheral by a wireline connection. Additionally, the flow of data is controlled so that the host will maintain the link to account for error handling and re-transmissions that may be needed with the wireless data links.
The flow of data may be controlled in any of the ways described herein. For example, in some embodiments, the wireless hub device transmits signaling to the host to ensure that the communication link is maintained by the host and to maintain the transparency of the wireless protocol from the perspective of the host. For example, this signaling may include a negative acknowledgment (NAK), a packet error message, and/or a cyclic redundancy checking message. In some embodiments, transmitting such signaling to control the flow occurs in the event an expected data transmission from the peripheral to the host will not be received at the host within an allotted time period of the host. In some embodiments, the sending of signals to the host PC for one or more of the purposes described above may be referred as to spoofing the host PC. In some embodiments, similar to the control of the flow of data between the host and the wireless hub device, the flow of data is controlled between the peripheral wireless device and the peripheral as needed so that the peripheral is unaware of the wireless data link, i.e., the wireless peripheral device 203, 204, 205 emulates a host from the perspective of the peripheral.
Presented below is exemplary pseudo-code for implementing the wireless hub device and wireless peripheral device functionality according to one embodiment. This example is not meant to be limiting and is merely sample pseudo code for one embodiment. The pseudo-code is written in a modular fashion with common and well understood “C” like syntax. The pseudo-code's body is broken into snippets that are labeled. Each snippet starts with an “if—then” statement specifying set of actions taken upon receiving various USB tokens, USB transactions, and Control Transfer Requests.
The listing shown below contains exemplary pseudo-code for a state machine of a HS Hub with wireless functionality according to one embodiment. The state machine is divided into three parts: (i) handling tokens (IN, OUT, PING, SETUP and SOF); (ii) handling split transactions (SSPLIT, CSPLIT) (iii) handling control transfer request (RESET, SUSPEND, RESUME). Data is buffered along with other pertinent transaction details to deal with slow or broken wireless links and unresponsive peripheral devices; (ii) The buffer management module manages the buffers (allocating and de-allocating) by maintaining buffer state information and providing status information; (iii) If buffer space is unavailable, no action is taken and the transaction times out.
The listing shown below contains pseudo code for a state machine for a wireless device according to one embodiment. The state machine is divided into three parts: (i) handling tokens (IN, OUT, PING, SETUP and SOF) (ii) handling split transactions (SSPLIT, CSPLIT) (iii) handling control transfer request (RESET, SUSPEND, RESUME). The data is buffered along with other pertinent transaction details to deal with slow or broken wireless links and unresponsive Peripherals. The buffer management module is responsible for managing the buffers (allocating and de-allocating), maintaining buffer state information and providing status information; If buffer space is unavailable, no action is taken and the transaction times out; The Peripheral referred to below is the Peripheral addressed in the transaction.
Some exemplary applications of the disclosed invention include office and consumer entertainment products. Other applications include cable replacement of wired systems such as control systems found in industry (e.g. computer numerical controlled machinery) or at home (e.g. thermostat control). Other examples of applications may be found in automobiles and aircraft (e.g. avionics control systems and networking applications such as passenger e-mail). Embodiments of the method and apparatus disclosed have configurations and components suitable for a wide range of products that have a variety of latency, performance, and cost requirements.
Modules may also be implemented in software for execution by various types of processors. An identified module of executable code may, for instance, comprise one or more physical or logical blocks of computer instructions that may, for instance, be organized as an object, procedure, or function.
While the invention herein disclosed has been described by means of specific embodiments, examples and applications thereof, numerous modifications and variations could be made thereto by those skilled in the art without departing from the scope of the invention set forth in the claims.