RELATED APPLICATIONThis application is a continuation-in-part of U.S. application Ser. No. 10/329,101, filed Dec. 23, 2002, by David J. Bartek et al., entitled “Wireless Cable Replacement for Computer Peripherals Using a Master Adapter.”
TECHNICAL FIELD OF THE INVENTIONThis invention relates in general to computers and in particular to automatically establishing a wireless connection between adapters.
BACKGROUND OF THE INVENTIONUniversal Serial Bus (USB) connections provide a flexible and adaptable method for connecting peripheral devices to computers. The ability of USB devices to “plug and play” as well as the wide array of USB devices available make USB devices a common staple of computing accessories. As USB devices become more and more common, technologies that provide increased USB functionality become increasingly valuable.
SUMMARY OF THE INVENTIONParticular embodiments of the present invention may reduce or eliminate disadvantages and problems associated with connections to peripheral devices.
In one embodiment of the present invention, a system for automatically establishing a wireless connection between adapters includes a master adapter coupleable to a peripheral device. The master adapter can automatically enter an inquiry mode in response to the occurrence of a first event. In the inquiry mode, the master adapter automatically establishes one or more wireless connections between the master adapter and one or more slave adapters that are coupled to one or more computer systems. The master adapter can also automatically enter an operational mode in response to the occurrence of a second event. In the operational mode, the master adapter enables communication between the peripheral device and the one or more computer systems via the one or more wireless connections using a wireless protocol.
Particular embodiments of the present invention may provide one or more technical advantages. Particular embodiments provide a wireless substitute for physical connections to peripherals. This allows greater mobility for both the computers and the peripherals without depriving the computer of peripheral functions or requiring that the peripherals be moved around with the computer. In the case of peripherals that are difficult to move, a wireless connection allows a computer to access the immobile peripheral from a variety of locations. For example, a cable modem may need to be placed next to an incoming cable wire, while a printer might be placed near a paper supply. A wireless connection allows a computer to be moved around within the range of the wireless connection without losing access to peripherals or requiring that the peripherals be moved along with the computer. This is particularly useful in the case of computers that are relatively easy to move, such as laptops, used in conjunction with devices that require power, cable or telephone outlets in fixed locations.
Particular embodiments enable peripheral sharing. Rather than monopolizing a single physical port, several wireless connections may share access to a single peripheral through wireless connections. This allows peripheral to be used by multiple computers in a wireless neighborhood. Similarly, a single physical port on a computer may be connected to a wireless hub that supports multiple wireless peripheral connections. This allows the computer to access multiple peripherals using a single port.
Particular embodiments may provide both wireline and wireless connections to a peripheral. These embodiments may allow one computer to be coupled to a peripheral via a wireline connection and one or more other computers to be coupled to the peripheral via wireless connections. This may, in particular embodiments, allow a user to add wireless connectivity to a system that uses wireline connections without the cost of replacing those existing wireline connections. In particular embodiments, after the wireless connectivity has been added, the wireline connections may be used the same as before.
In particular embodiments, one or more wireless connections that enable one or more computers to communicate with one or more peripherals may be automatically established. In particular embodiments, a wireless connection between a computer and a peripheral may be readily added to or removed from a wireless community that includes one or more wireless connections between one or more computers and one or more peripherals.
Certain embodiments may provide all, some, or none of these technical advantages. Certain embodiments may provide one or more other technical advantages, one or more of which may be readily apparent to those skilled in the art from the figures, descriptions, and claims herein.
BRIEF DESCRIPTION OF THE DRAWINGSTo provide a more complete understanding of the present invention and the features and advantages thereof, reference is made to the following description, taken in conjunction with the accompanying drawings, in which:
FIG. 1 illustrates a system allowing wireless communication between a computer and a peripheral according to a particular embodiment of the invention;
FIG. 2 illustrates an example table of information regarding one or more slave adapters;
FIG. 3 illustrates a system that allows multiple computers to communicate with multiple peripherals using wireless connections;
FIG. 4 illustrates one embodiment of a slave adapter used in the system ofFIG. 1 or2;
FIG. 5 illustrates one embodiment of a master adapter used in the system ofFIG. 1 or2;
FIG. 6 illustrates an example of information packets communicated in the system ofFIG. 1 or2;
FIG. 7 illustrates an example method for operation of a slave adapter;
FIG. 8 illustrates an example method for operation of a master adapter;
FIG. 9 illustrates an example system for providing both wireline and wireless connections to a wireline interface;
FIG. 10 illustrates an example splitter of a system for providing both wireline and wireless connections to a wireline interface;
FIG. 11 illustrates an example system for providing both wireline and multiple wireless connections to a wireline interface;
FIG. 12 illustrates an example priority table of a system for providing both wireline and multiple wireless connections to a wireline interface;
FIG. 13 illustrates an example method for providing both wireline and wireless connections to a wireline interface;
FIG. 14 illustrates an example method for automatically establishing a wireless connection between a master adapter and one or more slave adapters; and
FIG. 15 illustrates an example method for automatically establishing a wireless connection between one or more master adapters and a slave adapter.
DETAILED DESCRIPTION OF THE INVENTIONFIG. 1 illustrates a particular embodiment of asystem10 that wirelessly couples acomputer12 to a peripheral14.System10 includes aslave adapter16 coupled tocomputer12 andmaster adapter18 coupled to peripheral14. In general,system10 permitscomputer12 to exchange information with peripheral14 as if peripheral14 were coupled tocomputer12 using a wireline connection.System10 thus provides a virtual connection that stands in place of a physical connection, such as a cable, allowingcomputers12 to use existing physical ports to effective couple toperipherals14 using a virtual cable.
Although a particular embodiment ofsystem10 is depicted with a wireless connection replacing a physical connection betweencomputer12 and peripheral14, the techniques of various embodiments of the present invention are adaptable to a wide variety of virtual connections in place of physical connections. The respective physical connections tocomputer12 and peripheral14 can include any suitable form of communication, including Internet protocol (IP), Ethernet, asynchronous transfer mode (ATM), and synchronous optical network (SONET), and/or serial protocols, such as RS232, IEEE 1394, or Universal Serial Bus (USB) 1.1 or 2.0.Computer12 and peripheral14 may use different communication protocols, so that virtual connection replaces both the physical connection and any intervening protocol converters. The virtual connection itself may include any number and type of intervening protocols, whether wireline or wireless, examples of which include IP, ATM, SONET, serial protocols, Ethernet, radio frequency coaxial cable, RS 232, Firewire, General Packet Radio Service (GPRS), 802.11 WiFi, satellite links, or any other communication protocol in any suitable medium. In general, virtual connection may include any number or combination of wireless and/or wireline segments. Physical and virtual connections may carry information in any suitable form, including packets, cells, frames, segments, fragments, or other portions of data (all of which are described with the general term “packets”). Because the described techniques are adaptable to a wide variety of physical and virtual connections, the description of particular embodiments that replace a physical connection with a wireless connection are illustrative examples rather than exclusive ones.
Computer12 represents any collection of hardware or software components for processing and exchanging information, running applications, generating output, performing calculations, or any other suitable computing task. Examples ofcomputers12 include personal computers (PCs), laptops, and servers.Computer12 includes any necessary or suitable microprocessing components, such as microprocessors, micro-controllers, or digital signal processors (DSPs), and memory components, such as optical storage, magnetic storage, or removable media, whether volatile or non-volatile.Computer12 also includes inputs andoutputs allowing computer12 to exchange information with users.
In order to communicate with peripheral14,computer12 exchanges information according to a communications protocol usingphysical connection20.Physical connection20 represents any suitable physical medium for communicating information including insulated wires, shielded twisted pairs, coaxial cable, optical fiber, or any other physical connection for propagating signals. The communication protocol used to communicate the information may be any suitable protocol for the medium, examples of which include Internet protocol (IP), Ethernet asynchronous transfer mode (ATM), and synchronous optical network (SONET), and/or serial protocols, such as RS232, IEEE 1394, or Universal Serial Bus (USB) 1.1 or 2.0.
In a particular embodiment,connection20 is a Universal Serial Bus (USB)connection20 that allowscomputer12 to exchange information with peripheral14 using a USB protocol.Computer12 manages these USB connections using ahost controller22.Host controller22 includes hardware and/or software that detects USB devices coupled tocomputer12, establishes communication connections with the device, identifies the type of device, and manages information exchange in the communication connections. For example,host controller22 may regulate the rate of information exchange, identify particular types of information using headers, selectively route information to particular components ofcomputer12, or perform other similar management tasks.
Peripherals14 are specialized devices that perform delegated tasks at the direction ofcomputer12. Examples ofperipherals14 include printers, scanners, digital cameras, modems (such as 56K, cable, DSL), joysticks, webcams, personal digital assistants (PDAs), mice, and keyboards.Peripherals14 may include any suitable processing capacity, memory, or interfaces for performing their assigned tasks.Peripherals14 may exchange information usingphysical connections24, which represent any suitable medium for propagating signals, including any of the examples listed above forconnection20. In a particular embodiment,peripherals14 are USB devices that exchange control information using USB protocol. In such an embodiment,peripherals14 maintain registration information that may be communicated to a USB master device, such ascomputer12 in order to establish a USB connection with the master device.
Slave adapter16 represents a wireless communication device that appears as a peripheral14 tocomputer12 when physically coupled tocomputer12.Slave adapter16 establishes awireless connection26 withmaster adapter18 that allowsslave adapter16 to exchange information according to any suitable wireless protocol. The term “establish” as used in this specification may refer to accepting a request for a wireless communication or initiating the request; it need not be limited to one or the other. As part of establishing connections,slave adapter16 may detect wireless devices, negotiate parameters for establishing communications, regulate information flow, negotiate a communication frequency, or perform any other suitable management task. In a particular embodiment,slave adapter16 exchanges information wirelessly according to the BLUETOOTH wireless protocol, which provides standards for performing the detection and negotiation of wireless connections.
Master adapter18 represents a wireless communication device that appears as ahost controller22 to peripheral14.Master adapter18 has the additional ability to establish and manage communication connections withperipherals14 usingphysical connections114. Consequently,master adapter18 may receive information fromperipherals14 and communicate that information to other devices usingwireless connections26. Conversely,master adapter18 may receive information fromwireless connection26 and communicate the information to peripheral14. In a particular embodiment,master adapter18 establishes a USB connection with peripheral14, and communicates withslave adapter16 using the BLUETOOTH wireless protocol.
In operation,slave adapter16 becomes operational when it is coupled tocomputer12. At this point,slave adapter16 may optionally register itself withhost controller22 ofcomputer12 by communicating registration information for itself tocomputer12. In such an embodiment,slave adapter16 may be controlled by driver software installed incomputer12 once it is registered, allowingcomputer12 to configureslave adapter16 for particular packet sizes, protocols, or other operating parameters. Alternatively,slave adapter16 may remain inactive until awireless connection26 is established withmaster adapter18. In such an embodiment,slave adapter16 does not communicate registration information for itself tocomputer12. Instead,slave adapter16 awaits confirmation thatmaster adapter18 is coupled to a peripheral14 and passes registration information from peripheral14 tocomputer12.
Master adapter18 detects when it is coupled to peripheral14. In response to detecting the connection to peripheral14,master adapter18 collects registration information for the peripheral14 and establishes a communication connection with the peripheral14.Master adapter18 appears as a USB host to peripheral14, and it may therefore control the operation of peripheral14.
Before, after, or during the establishment of connection to peripheral14,master adapter18 seeks outslave adapter16 within range ofmaster adapter18 and establisheswireless connection26 withslave adapter16.Slave adapter16 then communicates a request for registration information fromcomputer12 tomaster adapter18 usingwireless connection26. In response,master adapter18 communicates registration information for peripheral14 toslave adapter16.Slave adapter16 in turn communicates the registration information tocomputer12 usingphysical connection20. Becausecomputer12 receives registration information fromphysical connection20,computer12 treats the incoming registration information as if it came from a new peripheral14 that was just connected tocomputer12.Computer12 thus establishes a virtual communication connection with a peripheral14, although in reality,slave adapter16 is the device exchanging information withcomputer12. In particular embodiments,master adapter18 orslave adapter16 may modify the registration information for peripheral14 in order to facilitate information exchange overwireless connection16. For example,master adapter18 may limit or modify the size of packets communicated bycomputer12 in order to utilizewireless connection26 more efficiently or to utilize USB hardware inslave adapter16 more effectively.
Slave adapter16 communicates information received fromcomputer12 tomaster adapter18 by converting the information into a wireless signal.Master adapter18 in turn receives the information, converts the information to an electrical signal (or other suitable form for physical connection24), and passes the information to peripheral14. Since peripheral14 recognizesmaster adapter18 as a USB host, peripheral14 treats the information received frommaster adapter18 as it would treat information received fromcomputer12 using a wireline connection. Thus,computer12 effectively controls peripheral14 in the same manner it would ifcomputer12 and peripheral14 were connected using a wireline connection.
Peripheral14 may also return information tocomputer12 by communicating the information tomaster adapter18. Because peripheral14 recognizesmaster adapter18 as a master device, the responses returned by peripheral14 are of the type of responses that would be presented tocomputer12 using a wireline connection.Master adapter18 converts the responses into a wireless signal, which is then communicated toslave adapter16.Slave adapter16 extracts the content from the wireless signal and communicates it tocomputer12.Computer12 treats the information as having been received from peripheral14, and therefore responds as if peripheral14 were connected tocomputer12 using a wireline connection.
The particular types of information exchanged bycomputer12 and peripheral14 may include a number of types of information, such as serial data, voice/audio, video, packets or any other suitable form of information. Information may also be converted in different forms in order to facilitate communication insystem10. One example is asystem10 in which a USB peripheral14 exchanges information wirelessly withcomputer12 over a BLUETOOTH wireless connection. In such a system,master adapter18 receives digital data from peripheral14, and stores the information in BLUETOOTH packets that contain header information specifying the type of data stored, its source, and other useful information. The BLUETOOTH packets are communicated as a wireless signal toslave adapter16, which extracts the original information and communicates the information in USB frames tocomputer12. Thus, bothcomputer12 and peripheral14 see the connection as a wireline USB connection.
Certain embodiments ofslave adapter16 andmaster adapter18 provide secure wireless connections using various techniques. One example of an encryption method is the use of a secure wireless protocol, in which adapters16 and18 maintain private and/or public keys used to decode information. 802.11 is one example of a communication protocol that incorporates encryption. Another method of security is to provide exclusive recognition betweenslave adapter16 andmaster adapter18 so that each device will only establishwireless connections26 with its counterpart device. For example,slave adapter16 andmaster adapter18 may be programmed with a unique encryption key, and establish connections only with devices that indicate possession of the unique key during an authentication process.
In particular embodiments,slave adapter16 andmaster adapter18 may automatically pair with each other to enable communication betweencomputer12 and peripheral14 viawireless connection26. In particular embodiments,slave adapter16 andmaster adapter18 need not be hard coded to communicate with each other. As a result, in some of these embodiments,slave adapter16 andmaster adapter18 may automatically pair with each other whenslave adapter16,master adapter18, or both are installed by a user.
In particular embodiments,master adapter18 may have an inquiry mode for pairing with one ormore slave adapters16 and an operational mode for providing communication between one ormore computers12 and peripheral14 via one ormore wireless connections26.Master adapter18 may automatically enter inquiry mode whenmaster adapter18 powers up. In addition or as an alternative,master adapter18 may automatically enter inquiry mode in response to the occurrence of an event. As an example and not by way of limitation,master adapter18 may automatically enter inquiry mode in response tomaster adapter18 being uncoupled from peripheral14. In particular embodiments, whenmaster adapter18 is in operational mode,master adapter18 may automatically check whethermaster adapter18 is coupled to peripheral14 at certain intervals. Ifmaster adapter18 determines thatmaster adapter18 is not coupled to peripheral14,master adapter18 may automatically enter inquiry mode. As another example,master adapter18 may automatically enter inquiry mode in response to a user resettingmaster adapter18 or otherwise causingmaster adapter18 to enter inquiry mode.
Whenmaster adapter18 enters inquiry mode,master adapter18 attempts to detect one ormore slave adapters16 and establish one ormore wireless connections26 betweenslave adapters16 andmaster adapter18. To detectslave adapters16,master adapter18 may scan one or more communication channels associated withslave adapters16. A communication channel may include one or more signal frequencies. In particular embodiments, to scan a particular communication channel,master adapter18 may broadcast a scan message in the particular communication channel and receive responses from one ormore slave adapters16 receptive to scan messages broadcast in the particular communication channel. A response from aslave adapter16 may include a BLUETOOTH address or other suitable identifier ofslave adapter16, and, whenmaster adapter18 receives the response,master adapter18 may store the identifier. In particular embodiments,master adapter18 may use identifiers received fromslave adapters16 to communicate connect requests toslave adapters16, as described below.
Ifmaster adapter18 detects one ormore slave adapters16,master adapter18 communicates a connect request to each detectedslave adapter16.Master adapter18 may wait to communicate a connect request to aslave adapter16 until aftermaster adapter18 has scanned a particular number of communication channels. As an example,master adapter18 may wait untilmaster adapter18 has scanned all available communication channels. A connect request communicated to aslave adapter16 may include the identifier ofslave adapter16 that master adapter received in response to a scan message.Slave adapter16 may use the identifier in the connect request to determine whether the connect request is directed toslave adapter16. As an example and not by way of limitation, ifslave adapter16 receives a connect request,slave adapter16 may compare the identifier in the connect request with an identifier ofslave adapter16. If the identifier in the connect request does not correspond to an identifier ofslave adapter16,slave adapter16 may disregard the connect request. If the identifier in the connect request corresponds to an identifier ofslave adapter16,slave adapter16 may determine whether to acknowledge the connect request, as described below.
The connect request may also include a protocol service multiplexer (PSM) ofmaster adapter18.Slave adapter16 may use the PSM in the connect request to determine whether to acknowledge the connect request. As an example and not by way of limitation,slave adapter16 may compare the PSM in the connect request with a PSM ofslave adapter16. In particular embodiments, if the PSM in the connect request does not correspond to a PSM ofslave adapter16,slave adapter16 may disregard the connect request. If the PSM in the connect request corresponds to a PSM ofslave adapter16,slave adapter16 may communicate an acknowledgement tomaster adapter18.
A PSM includes any suitable information thatslave adapter16 may use to determine whether to acknowledge the connect request. PSMs may be dynamically configurable. In particular embodiments, PSMs are numbers and particular ranges of PSMs are reserved for particular purposes. Particular ranges of PSMs may be freely available. In particular embodiments, a PSM may be unique to one or more particular equipment manufacturers and, in some of these embodiments,slave adapter16 may communicate withmaster adapter18 only if an equipment manufacturer ofslave adapter16 corresponds to an equipment manufacturer ofmaster adapter18. To determine whether an equipment manufacturer ofslave adapter16 corresponds to an equipment manufacturer ofmaster adapter18,slave adapter16 may compare the PSM in the connect request to a PSM ofslave adapter16. In particular embodiments, a PSM may be unique to one or more particular types of equipment. As an example,slave adapters16 andmaster adapters18 that are capable of providingwireless connections26 between acomputer12 and a peripheral14 may have PSMs that correspond to each other. If the PSM in the connect request corresponds to a PSM ofslave adapter16,slave adapter16 may be capable of providingwireless connection26 betweencomputer12 and peripheral14 and may accordingly communicate an acknowledgement tomaster adapter18, as described above. Although particular PSMs are described, the present invention contemplates any suitable PSMs.
Receipt of an acknowledgement fromslave adapter16 may establishwireless connection26 betweenslave adapter16 andmaster adapter18. In particular embodiments, the receipt of the acknowledgement establisheswireless connection26 only ifmaster adapter18 receives the acknowledgement within a certain time aftermaster adapter18 communicates a connect request toslave adapter16. In particular embodiments, afterwireless connection26 betweenslave adapter16 andmaster adapter18 has been established,slave adapter16 andmaster adapter18 may start to communicate with each other to enable communication betweencomputer12 and peripheral14 viawireless connection26.
In particular embodiments, for security or other purposes,master adapter18 may require a valid password fromslave adapter16. In some of these embodiments, afterwireless connection26 betweenslave adapter16 andmaster adapter18 has been established,master adapter18 may communicate a password request toslave adapter16 and, in response to the password request,slave adapter16 may communicate a password tomaster adapter18. Whenmaster adapter18 receives the password fromslave adapter16,master adapter18 may determine whether the password is valid. In particular embodiments, to make this determination,master adapter18 may compare the received password with one or more passwords stored in a memory unit ofmaster adapter18. If the received password does not correspond to a stored password,master adapter18 may communicate a failure message toslave adapter16. If the received password corresponds to a stored password,master adapter18 may communicate a success message toslave adapter16. Aftermaster adapter18 communicates the success message toslave adapter16,master adapter18 andslave adapter16 may start to communicate with each other to enable communication betweencomputer12 and peripheral14 viawireless connection26.
Master adapter18 may automatically enter operational mode in response to one ormore wireless connections26 betweenmaster adapter18 and one ormore slave adapters16 being established. In addition or as an alternative,master adapter18 may automatically enter or remain in operational mode in response tomaster adapter18 determining thatmaster adapter18 is coupled to peripheral14. In particular embodiments,master adapter18 does not switch from inquiry mode to operational mode until at least onewireless connection26 between master adapter and at least oneslave adapter16 has been established. In particular embodiments,master adapter18 does not switch from inquiry mode to operational mode untilmaster adapter18 has at least attempted to establish awireless connection26 betweenmaster adapter18 and eachslave adapter16 thatmaster adapter18 detected.Master adapter18 may attempt to establish wireless connection betweenslave adapter16 andmaster adapter18 one or more times, according to particular needs.
Whenmaster adapter18 switches from inquiry mode to operational mode,master adapter18 may indicate to a user thatmaster adapter18 has switched from inquiry mode to operational mode. As an example and not by way of limitation,master adapter18 may include a light-emitting diode (LED) thatmaster adapter18 may use to indicate thatmaster adapter18 has switched from inquiry mode to operational mode. In particular embodiments, ifmaster adapter18 is coupled to peripheral14, a user may uncouplemaster adapter18 from peripheral14 to causemaster adapter18 to automatically pair with one ormore slave adapters16. In response to master adapter being uncoupled from peripheral14,master adapter18 may enter inquiry mode, detectslave adapters16, and establish one ormore wireless connections26 betweenmaster adapter18 andslave adapters16, as described above.Master adapter18 may then switch from inquiry mode to operational mode and use the LED to indicate to the user thatmaster adapter18 has switched from inquiry mode to operational mode. The user may then couplemaster adapter18 to peripheral14 to enablecomputer12 to communicate with peripheral14 viawireless connection26.
Master adapter18 may collect information regarding one ormore slave adapters16. In particular embodiments,master adapter18 may collect information regarding aslave adapter16 whenmaster adapter18 pairs withslave adapter16. As an example and not by way of limitation,slave adapter16 may communicate a BLUETOOTH address or other identifier ofslave adapter16 tomaster adapter18 in response to a scan message frommaster adapter18, as described above, andmaster adapter18 may store the identifier ofslave adapter16. In addition or as an alternative, in particular embodiments, an acknowledgement fromslave adapter16 may include information regardingslave adapter16 thatmaster adapter18 may store. Examples of information regarding aslave adapter16 thatmaster adapter18 may collect include a BLUETOOTH address or other identifier ofslave adapter16, a link key associated withslave adapter16, a personal identification number (PIN) code associated withslave adapter16, a power level associated withslave adapter16, an access code associated withslave adapter16, and any other suitable information regardingslave adapter16.Master adapter18 may use collected information regarding aslave adapter16 for any suitable purpose. As an example and not by way of limitation,master adapter18 may use an identifier ofslave adapter16 to direct communication toslave adapter16, to identify communication fromslave adapter16, or both.
FIG. 2 illustrates an example table30 of information regarding one ormore slave adapters16. Table30 may be stored in a memory unit ofmaster adapter18. Table30 includes one or more columns32 that each correspond to particular information regardingslave adapters16. As an example and not by way of limitation,column32acorresponds to BLUETOOTH addresses or other identifiers ofslave adapters16,column32bcorresponds to link keys associated withslave adapters16, column32ccorresponds to PIN codes associated withslave adapters16,column32dcorresponds to power levels associated withslave adapters16, andcolumn32ecorresponds to access codes associated withslave adapters16. Although table30 is described and illustrated as including particular columns32 corresponding to particular types of particular information regardingparticular slave adapters16, table30 may include any suitable columns32 corresponding to any suitable types of any suitable information regarding anysuitable slave adapters16. Table30 also includes one or more rows34 that each correspond to aparticular slave adapter16. As an example and not by way of limitation, row34acorresponds to afirst slave adapter16,row34bcorresponds to asecond slave adapter16, androw34ccorresponds to athird slave adapter16. Cells36 lie at the intersections of columns32 and rows34. A cell36 contains particular information regarding aparticular slave adapter16. As an example,cell36acontains information reflecting a BLUETOOTH address or other identifier offirst slave adapter16.Cell36bsimilarly contains information reflecting a link key associated withsecond slave adapter16. Although particular cells36 containing particular information regardingparticular slave adapters16 are described and illustrated, the present invention contemplates any suitable cells36 containing any suitable information regarding anysuitable slave adapters16.Master adapter18 may use information in table30 to communicate withslave adapter16 whenmaster adapter18 enters operational mode.
FIG. 3 shows another embodiment of asystem100 that allowscomputers102 to communicate withperipherals104a,104b,104c, . . . ,104n(collectively referred to as “peripherals104”) usingslave adapters106 andmaster adapters108a,108b,108c, . . . ,108n(collectively referred to as “master adapters108”). The components depicted inFIG. 3 correspond to the like components ofFIG. 1.Physical connections110couple computers102 toslave adapters106, whilephysical connections114couple master adapters108 to peripherals104.FIG. 3, however, also illustrates thatsystem100 may include wireless connections betweenslave adapters106 andmaster adapters108 in a variety of combinations, not limited to asingle slave adapter106 wirelessly connected to asingle master adapter108.
In particular embodiments,slave adapter106 may maintainmultiple wireless connections116 withmultiple master adapters108. This allowscomputer102 to remotely interact with several peripherals104 using a singlephysical connection110. In this manner,slave adapter106 acts as a wireless hub that allows multiple peripherals104 to share a single port, where normally, each peripheral104 might require a separate port. One example of such an embodiment uses the BLUETOOTH “PicoNet” that allows a BLUETOOTH device to act as a master for multiple slave devices simultaneously. In embodiments using secure authentication,slave adapter106 accepts connections only frommaster adapters108 that share the correct encryption key.
In other embodiments,multiple slave adapters106 may communicate with asingle master adapter108 coupled to a peripheral104. This allowsmultiple computers102 in a wireless neighborhood to access the same peripheral104. Such an embodiment may use the BLUETOOTH “ScatterNet.” ScatterNet allows multiple master devices, such ascomputers102, to interact with multiple slave devices, such as peripherals104. By combining the multiple slave and multiple master capability of ScatterNet with the wireless-to-physical communication capability ofadapters106 and108,computers102 may interact with multiple peripherals104 and evenother computers102 usingslave adapter106.
As noted, in addition to sharing peripherals104,slave adapters106 may also communicate with one another, allowingcomputers102 to share files, applications and other forms of information. This effectively creates a wireless network of shared computing and peripheral resources. In particular, the use of self-registeringslave adapters106 controlled by driver software incomputer102 may greatly increase the versatility of the wireless network, allowingslave adapters106 to exchange customized information with one another. More generally, various software applications may extend the capabilities toslave adapters106 to allow use with hands-free headsets or other wireless devices as well as conventional USB peripherals104.
In the depicted embodiment, peripherals104 may also communicate directly with one another. For example, a peripheral104 such as adigital camera104cmay communicate withprinter104busing theircorresponding master adapters108band108c. This allowscamera104cto transfer digital pictures directly toprinter104busing a wireless connection without the need for an interveningcomputer102. Such peer-to-peer communications may greatly increase the portability and versatility of specialized peripherals, such as allowing the use of portable photo printers virtually anywhere.
Because of the complex array of component interaction withinsystem100,system100 may also include management capabilities inadapters106 and108 or additional components ofsystem100, such as network hubs or servers, in order to maintain registration information, locate peripherals104 withinsystem100, and monitor active connections. Such functionality can be localized in a single component accessible byadapters106 or108, distributed among illustrated components ofsystem100, or otherwise suitably incorporated intosystem100.
In particular embodiments,master adapters108 andslave adapters106 may automatically pair with each other to enable communication betweencomputers102 and peripherals104 viawireless connections116, as described above. In particular embodiments, aslave adapter106 may automatically pair with onemaster adapter108. In particular embodiments, aslave adapter106 may automatically pair withmultiple master adapters108. In particular embodiments, amaster adapter108 may automatically pair with oneslave adapter106. In particular embodiments, amaster adapter108 may automatically pair withmultiple slave adapters106.
FIG. 4 illustrates the components of a particular embodiment ofslave adapter106.Slave adapter106 includes aprocessor202, aUSB core206, such as, for example, a USB 1.1 logic module, and amemory208.Slave adapter106 communicates with other devices using a radio frequency (RF)interface210 and aUSB interface212. In general,slave adapter106 provides wireless connectivity to a remote peripheral104, while allowingcomputer102 to interact with the remote peripheral104 as if the peripheral104 were connected tocomputer102 using a wireline connection.
Processor202 represents any combination of hardware and/or software for processing information. In particular applications,processor202 is sometimes referred to as a “baseband processor” because it handles information exchange withRF interface210.Processor202 may include microprocessors, micro-controllers, DSPs, or other suitable components. USB 1.1logic module206 is another processor that handles USB protocol exchanges betweenslave adapter106 andcomputer102. In particular,USB core206 allowsslave adapter106 to establish USB communication connections withcomputer102 when coupled tocomputer102, thus allowingslave adapter106 to appear as a peripheral tocomputer102.
RF interface210 represents hardware and/or software for generating wireless RF signals from information and for receiving wireless signals and extracting information from them, including components such as antennas, power supplies and oscillators.USB interface212 represents any port or connection, whether real or virtual, that allowsslave adapter106 to exchange information withcomputer102 in a format specified by USB protocol.USB interface212 may include active and passive components for receiving and transmitting electrical signals, such as amplifiers, filters, and other suitable components.USB core206 regulates the information exchange byUSB interface212. In a particular embodiment,USB interface212 includes a “B” type USB connector that is soldered to a printed circuit board ofslave adapter106, so that the USB connector is integral toadapter106.
Memory208 represents any form of information storage, whether volatile or non-volatile, including magnetic media, optical media, removable media, random access memory (RAM), read-only memory (ROM), or flash memory.Memory208 stores software layers214 executed by various components ofslave adapter106 to perform particular operations.Wireless layer216 is executed byprocessor202 to manage RF connections with other devices and generally controls the operation ofRF interface210.Wireline layer220 is executed byprocessor202 to perform operations associated with the wireline protocol, such as controlling various operations ofUSB core206.Application layer218 is executed byprocessor202 to perform conversions between wireless and wireline formats, including amalgamating packets, affixing additional header information, or other suitable conversions. Finally,code222 represents other instructions that may be executed byprocessor202, such as applications that allowslave adapter106 to interact with driver software ofcomputer102.
In operation, USB core processes data received fromcomputer102 byUSB interface212 and communicates data tocomputer102 in USB format usingUSB interface212. In a particular embodiment,USB core206 communicates registration information forslave adapter106 tocomputer102, and in response,computer102 establishes a USB connection withslave adapter106. In an alternative embodiment,slave adapter106 remains inactive untilwireless connection116 is established withmaster adapter108 connected to peripheral104. UsingRF interface210,slave adapter106 monitors for an incoming communication request frommaster adapter108, and if a request is received,slave adapter106 accepts the request, thus establishingwireless connection116.
To communicate information fromcomputer102 tomaster adapter108,slave adapter108 first receives information fromcomputer102 usingUSB interface212.USB core206 communicates the information toprocessor202 for any suitable conversion or other processing. For example,processor202 may convert the information from a wireline format to a wireless packet with a data type specified byprofile222.Processor202 then presents the information toRF interface212.RF interface212 converts the information into a radio signal that is communicated tomaster adapter108.
Slave adapter106 also receives information frommaster adapter108 overwireless connection116.RF interface210 extracts information from the wireless signal.Processor202 converts the packets from a wireless format to a wireline format and presents the information tocomputer102 in a suitable manner. For example, if there are multiple packets received from several peripherals104,processor202 may break the packets up and communicate them separately tocomputer102 in a predetermined order.
Particular embodiments ofslave adapter106 use secure wireless communication. In such embodiments,encryption key224 may be stored inmemory208.Encryption key224 represents any public and/or private key used byslave adapter106, which may be inherent to a wireless communication protocol, such as 802.11, or may be aunique encryption key224 matching a similar key held bymaster adapter108. In cases whereencryption key224 is unique,slave adapter106 may be programmed using anencryption module226 that couples toUSB interface212 ofslave adapter106. In a particular embodiment,encryption module226 generates aunique encryption key224 whenslave adapter106 andmaster adapter108 are coupled toencryption module226, thus providing aunique encryption key226 held commonly byslave adapter106 andmaster adapter108. Alternatively,encryption module226 may program any device coupled to it with thesame encryption key224, rather than generating a new key for each pair of devices. In particular embodiments,memory208 ofslave adapter106 may include automatic-pairing data228 thatslave adapter106 may use to automatically pair with one ormore master adapters108, as described above. Automatic-pairing data228 may include one or more PSMs ofslave adapter106, one or more passwords ofslave adapter106, and any other suitable automatic-pairing data228.
FIG. 5 illustrates a particular embodiment ofmaster adapter108. In the depicted embodiment,master adapter108 includes aprocessor302, ahost controller304, amemory306, aUSB interface308 and anRF interface310.Processor302,memory306,USB interface308, andRF interface310 are analogous in structure and function to the like components ofslave adapter106, and any of the like components described in conjunction with theslave adapter106 ofFIG. 3 may be used inmaster adapter108 as well.Host controller304 represents hardware and/or software that manages information transfers betweenmaster adapter108 and peripherals104. In particular,host controller304 detects peripherals104 coupled toUSB interface308, obtains registration information for those peripherals104, and establishes communication connections with the peripherals104. Host controller104 also regulates information flow betweenmaster adapter108 and peripheral104. Host controller104 may include any suitable components for processing information and executing logical instructions, including management of hardware and protocol layers of USB communication.
In an alternative embodiment ofmaster adapter108,host controller304 includes logic for On the Go (OTG) operation in USB, which is included in USB 2.0 logic modules. OTG allows a device to function as both a master USB device and a slave USB device. Such capabilities are particularly useful in systems such assystem100 depicted inFIG. 3, because they allowslave adapters106 to function as master USB devices when communicating with peripherals104 and as slaves or masters when communicating withother computers102. Thus,computers102 have greater versatility when interacting with other devices insystem100.
Memory306 stores code312 executed byprocessor302 to perform various tasks ofmaster adapter108.Memory306 may also maintainregistration information314, which may include USB endpoint information, for peripherals104 coupled toUSB interface308.Registration information314 is used bymaster adapter108 to identify peripherals104 and to manage communication connections with peripherals104. For example, in a USB embodiment,registration information314 may include a device identifier the indicates a type of device to a “plug and play” system.Master adapter108 also maintainsprofiles316 for organizing data according to data type, appending suitable headers, converting data from wireless packets, and other tasks specific to the type of data received from peripheral104. In particular embodiments,memory306 ofmaster adapter108 may include automatic-pairing data332 thatmaster adapter108 may use to automatically pair with one ormore slave adapters106, as described above. Automatic-pairing data332 may include one or more PSMs ofmaster adapter108, one or more passwords ofmaster adapter108, or any other suitable automatic-pairing data332. In particular embodiments,memory306 ofmaster adapter108 may include one or more tables30, as described above.
In operation,master adapter108 detects a peripheral104 coupled toUSB interface308 and establishes a communication connection with peripheral104.Master adapter108 thus becomes a master device over peripheral104.Master adapter108 also detectsslave adapter106 within range ofRF interface310, and establisheswireless connection116 withslave adapter106. Oncewireless connection116 is established,master adapter108 communicatesregistration information314 toslave adapter106, allowingslave adapter106 to establish a virtual connection betweencomputer102 and peripheral104. Effectively,master adapter108 acts as a transparent connection betweencomputer102 and peripheral104. Because of the functionality provided byhost controller304, peripheral104 recognizes information frommaster adapter108 as coming from a USB host.
During information exchanges betweencomputer102 and peripheral104,master adapter108 performs various intermediate tasks to provide a transparent USB connection. For example, ifmaster adapter108 is one ofseveral master adapters108,master adapter108 may store information received from peripheral104 in packets with a ScatterNet header or other suitable identifier to distinguish the particular peripheral104 as well as the information type.Master adapter108 also regulates the exchange of packets with peripheral104 in terms of classifying information types, regulating the timing of packet delivery, performing any suitable protocol conversion, and generally providing support for the USB connection betweencomputer102 and peripheral104.
Particular embodiments ofmaster adapter108 use secure wireless communication. In such embodiments,encryption key318 may be stored inmemory306.Encryption key318 represents any public and/or private key used bymaster adapter108, which may be inherent to a wireless communication protocol, such as 802.11, or may be aunique encryption key318 matching a similar key held byslave adapter106. In cases whereencryption key318 is unique,master adapter108 may be programmed using anencryption module320 that couples toUSB interface308 ofmaster adapter108. In a particular embodiment,encryption module320 generates aunique encryption key318 whenslave adapter106 andmaster adapter108 are coupled toencryption module320, thus providing aunique encryption key318 held commonly byslave adapter106 andmaster adapter108. Alternatively,encryption module320 may program any device coupled to it with thesame encryption key318, rather than generating a new key for each pair of devices.
FIG. 6 illustrates an example of a packet flow diagram400 forsystem100.Adapter106 or108 receivesUSB packets402 from a device.Packets402 represents information received from a device by one of theadapters106 or108 and formatted according to a particular protocol.Packet402 includes aheader404 and apayload406.Header404 stores information used to assist downstream components in identifying, classifying, androuting packet402. Examples of information stored inheader404 include packet identifiers, vendor identifiers, product identifiers or any other suitable identifying information.Payload406 is the information that a device is communicating to a destination, as distinguished from header information, which specifies how the information is handled. For example,payload406 may include commands, files, voice information, video, streaming media, or any other suitable form of information. The depictedUSB packets402 are only one example of the format for packets, and other embodiments may include suitable modifications, such as omission ofheaders404 or addition of information to the end ofpackets402.
Packets402 may be accumulated in a buffer until a predetermined number of packets are collected.Packets402 are then amalgamated into awireless packet408.Wireless packet408 includes anadditional USB header410 that may be used by a receivingadapter106 or108 to separate the information into its component parts.Wireless packet408 also contains aBLUETOOTH header412 that includes information used by the BLUETOOTH protocol to communicate wireless packet as anRF signal410.
Adapter106 or108 that receives RF signal410 uses the information inBLUETOOTH header412 to extract theinformation414 fromwireless packet408. Receivingadapter106 or108 then examinesUSB header410 to identifyUSB packets402 withininformation414. Onceadapter106 or108 has identifiedUSB packets402,adapter106 or108separates packets402 and communicates them in an appropriate manner to an attached device.
In particular embodiments,slave adapter106 specifies a size forpackets402 using hardware limitation messages in the USB protocol. Thus, for example,slave adapter106 may limit the packet sizes received fromcomputer102 to 32-byte packets, even whencomputer102 would ordinarily use 64-byte packets, such as those typically used by USB printers. One advantage of such embodiments is that they allowslave adapter106 to fix the size ofwireless packet408, which may increase the efficiency ofwireless connection116. The appendedUSB header410 is used bymaster adapter108 to determine the appropriate packet size limitation according to a shared protocol, and therefore,master adapter108 may communicate the information to peripheral104 in the form that peripheral104 expects.
Adapters106 or108 may also communicate different types of information in other ways than the format described. For example, when USB protocol is used to manage physical connections,adapters106 or108 may communicate USB control tokens directly without accumulating them intowireless packets408. This allowsadapters106 and108 to preserve the timing of token exchange betweencomputer102 and peripheral104, reducing the likelihood of errors whencomputer102 and peripheral104 are establishing connections and exchanging information.
FIG. 7 shows a flow chart500 that illustrates one example of a method of operation forslave adapter106 in whichslave adapter106 remains inactive until a wireless connection is established withmaster adapter108.Slave adapter106 becomes operation in response to detecting a connection tocomputer102 atstep502.Slave adapter106 receives a request for a wireless connection frommaster adapter108 atstep504.Slave adapter106 accepts the request for the wireless connection atstep506, thus establishingwireless connection116. Once the wireless connection is established,slave adapter106 activates its connection tocomputer102 atstep508, which enables information exchange betweencomputer102 andslave adapter106.Slave adapter106 receives registration information for a peripheral104 connected tomaster adapter108 atstep510 and communicates the registration information to a host controller ofcomputer102 atstep512, allowingcomputer102 to recognize peripheral104. Once peripheral104 is registered withcomputer102,slave adapter106 may send and receive information from peripheral104 usingwireless connection116, which in turn allowscomputer102 to interact with peripheral104 as if peripheral104 were connected tocomputer102 with a wireline connection.
To send information,slave adapter106 first receives information fromcomputer102 atstep516.Slave adapter106 then converts the information to a wireless signal at518. This conversion may involve changing the information from one format, such as serial data, to another format suitable for wireless communication, such as BLUETOOTH packets.Slave adapter106 then communicates the wireless signal tomaster adapter108 using the wireless connection atstep520. Atstep530,slave adapter106 continues to send and receive information fromstep636 until the communication connection withmaster adapter108 orcomputer102 ends.
To receive information,slave adapter106 receives a wireless signal frommaster adapter108 atstep522.Slave adapter106 extracts information from the wireless signal atstep524 and identifies header information atstep526. Based on the header information,slave adapter106 routes the information appropriately. Routing the information at this step may include performing suitable conversions to present the information in a suitable format tocomputer102. Atstep530,slave adapter106 continues to send and receive information fromstep636 until the communication connection withmaster adapter108 orcomputer102 ends.
FIG. 8 illustrates an example method for operation of a master adapter. Although the described steps are presented in a particular order, it should be understood that the steps may be performed in a different order, and various steps may be omitted or replaced without changing the overall operation of the method.Master adapter108 receives registration information from a peripheral104 atstep602 and establishes a communication connection with peripheral104 atstep604.Master adapter108 detects aslave adapter106 and establishes a wireless connection withslave adapter106 atstep606. In response to a request for registration information fromcomputer102,master adapter108 communicates the registration information for peripheral104 toslave adapter106 atstep608. The registration information is used byslave adapter106 to allowcomputer102 to recognize peripheral104. Once all of the communication connections are established,master adapter108 may then send information tocomputer102 to receive information fromcomputer102, as indicated bydecision step610.
To send information,master adapter108 first receives information from peripheral104 atstep612.Master adapter108 converts the information into a wireless signal atstep614. This conversion may include formatting the information from peripheral104 into a suitable form, such as BLUETOOTH packets.Master adapter108 then communicates the information toslave adapter106 atstep616. Atstep624,master adapter108 continues to send and receive information fromstep514 until the connection with eitherslave adapter106 orcomputer102 ends.
To receive information,master adapter108 receives a wireless signal fromslave adapter106 atstep618.Master adapter108 extracts information from the wireless signal atstep620.Master adapter108 may also perform any suitable conversions of the information to a form usable by peripheral104, such as converting BLUETOOTH packets to USB frames.Master adapter108 then communicates the information to peripheral104 atstep622. Atstep624,master adapter108 continues to send and receive information fromstep514 until the connection with eitherslave adapter106 orcomputer102 ends.
FIG. 9 illustrates anexample system626 for providing both wireline and wireless connections to a wireline interface.System626 includes a peripheral628 that may communicate with afirst computer630 via a firstphysical connection632, asplitter634, and a secondphysical connection636. Peripheral628 may also communicate with asecond computer638 via firstphysical connection632,splitter634, awireless connection640, aslave adapter642, and a thirdphysical connection644.Splitter634 allows both wireline communication between peripheral628 andfirst computer630 and wireless communication between peripheral628 andsecond computer638. Peripheral628 is similar in function toperipherals14 and104;physical connections632,636, and644 are similar in function tophysical connections20,24,110, and114;computers630 and638 are similar in function tocomputers12 and102;slave adapter642 is similar in function toslave adapters16 and106; andwireless connection640 is similar in function towireless connections26 and116.
Splitter634 allows communication between peripheral628 andfirst computer630 and between peripheral628 andsecond computer638. In particular embodiments,splitter634 has a first state and a second state. In the first state,splitter634 allows wireline communication between peripheral628 andfirst computer630. Communication between peripheral628 andfirst computer630 is wireline in that peripheral628 does not use a wireless connection to communicate withfirst computer630. In the second state,splitter634 allows wireless communication between peripheral628 andsecond computer638. Communication between peripheral628 andsecond computer638 is wireless in that peripheral628 useswireless connection640 to communicate withsecond computer630. In particular embodiments, communication between peripheral628 andsecond computer638 may involve more than one wireless connection.
Splitter634 selectively alternates between these two states. In particular embodiments, the first state is a default state ofsplitter634. When communication is requested between peripheral628 andsecond computer638,splitter634 switches to the second state to allow the requested communication. When the communication finishes,splitter634 returns to the first state. In addition or as an alternative,splitter634 can return to the first state when a timeout occurs, a maximum communication time elapses, or a maximum data amount is communicated. In particular embodiments, if peripheral628 is communicating withfirst computer630 when the request is received,splitter634 interrupts the communication between peripheral628 andfirst computer630 to allow the requested communication. As an alternative, in other embodiments,splitter634 delays the requested communication until the communication between peripheral628 andfirst computer630 finishes.
FIG. 10 illustrates anexample splitter634 ofsystem626.Splitter634 includes first andsecond USB sockets646 and648, aswitch650, and amaster adapter652. First andsecond USB sockets646 and648 are type A and type B sockets, respectively.First USB socket646couples splitter634 to peripheral628, andsecond USB socket648couples splitter634 tofirst computer630. Although particular sockets are illustrated and described, the present invention contemplates any suitable sockets. As an example, in particular embodiments,sockets646 and648 need not be USB sockets, but can be sockets to support any suitable communication protocol or standard. In particular embodiments, power is supplied tosplitter634 fromfirst computer630. To allow communication between peripheral628 andfirst computer630,switch650 provides a physical connection between first andsecond sockets646 and648. To allow communication between peripheral628 andsecond computer638,switch650 provides a physical connection betweenfirst socket646 andmaster adapter652. Althoughsplitter634 is described and illustrated as a single device, the present invention also contemplatessplitter634 including two or more devices that are more or less separate from each other. As an example and not by way of limtiation, in particular embodiments, a first device may includemaster adapter652 and a second device may includeUSB sockets646 and648 andswitch650. A physical connection may couple the first device to the second device, and signal control forswitch650 may be communicated betweenmaster adapter652 and switch650 over the physical connection. One or more of these embodiments may enable a user to add aphysical connection636 to asystem10,100,626, or664 without adding amaster adapter18,108, or652 tosystem10,100,626, or664. In addition or as an alternative, one or more of these embodiments may enable a user to install one or more components of asystem10,100,626, or664 without taking down an existing physical connection between a computer and a peripheral. In addition or as an alternative, one or more of these embodiments may reduce costs associated withmanufacturing splitter634.
Master adapter652 is similar in function tomaster adapters18 and108, but provides additional functionality.Master adapter652 includes aprocessor654, ahost controller656, aUSB interface658, anRF interface660, and amemory662.Host controller656,USB interface658, andRF interface660 are similar in function to hostcontroller304,USB interface308, andRF interface310, respectively.Processor654 is similar in function toprocessor302, but provides additional functionality. Although a particular interface is illustrated and described betweenswitch650 andmaster adapter652, the present invention contemplates any suitable interface. As an example, in particular embodiments,USB interface658 need not be a USB interface. In particular embodiments,processor654 can detect communication across secondphysical connection636.Processor654 can also determine whether a request is pending for communication between peripheral628 andsecond computer638.Processor654 can also instructswitch650 to provide a physical connection between first andsecond USB sockets646 and648 or betweenfirst USB socket646 andUSB interface658 ofmaster adapter652. By providing a physical connection betweenfirst USB socket646 andUSB interface658, switch650 effectively provides a physical connection betweenfirst USB socket646 andRF interface660.
Whenswitch650 provides a physical connection between first andsecond USB sockets646 and648, peripheral628 may communicate withfirst computer630. As described above, communication between peripheral628 andfirst computer630 is wireline in that peripheral628 does not use a wireless connection to communicate withfirst computer630. Accordingly, whenprocessor654 instructsswitch650 to provide a physical connection between first andsecond USB sockets646 and648,processor654 instructsswitch650 to allow wireline communication between peripheral628 andfirst computer630. Whenswitch650 provides a physical connection betweenfirst USB socket646 andRF interface660 viaUSB interface658, peripheral628 may communicate withsecond computer638. As described above, communication between peripheral628 andsecond computer638 is wireless in that peripheral628 useswireless connection640 to communicate withsecond computer638.
In particular embodiments,processor654 instructsswitch650 according to the status of communication across secondphysical connection636 and pending requests for communication between peripheral628 andsecond computer638. As an example, in particular embodiments, if secondphysical connection636 is inactive and no request is pending for communication between peripheral628 andsecond computer638,processor654 instructsswitch650 to provide a physical connection between first andsecond USB sockets646 and648. This allows communication between peripheral628 andfirst computer630. Ifprocessor654 receives a request for communication between peripheral628 andsecond computer638 and secondphysical connection636 is inactive,processor654 instructsswitch650 to provide a physical connection betweenfirst USB socket646 andRF interface660 viaUSB interface658. This allows the requested communication between peripheral628 andsecond computer638. Ifprocessor654 receives a request for communication between peripheral628 andsecond computer638 and secondphysical connection636 is active,processor654 waits until secondphysical connection636 becomes inactive and then instructsswitch650 to provide a physical connection betweenfirst USB socket646 andRF interface660 viaUSB interface658 to allow the requested communication. In addition or as an alternative,processor654 can wait until a timeout occurs, a maximum communication time elapses, or a maximum data amount is communicated to instructswitch650 to provide a physical connection betweenfirst USB socket646 andUSB interface658. This allows peripheral628 to finish communication withfirst computer630 before peripheral628 starts communication withsecond computer638.
Althoughsplitter634 is illustrated and described as allowing wireline communication between peripheral628 andfirst computer630 and allowing wireless communication between peripheral628 andsecond computer638, the present invention also contemplatessplitter634, in particular embodiments, providing wireline communication between peripheral628 andfirst computer630 and between peripheral628 andsecond computer638. As an example and not by way of limitation,master adapter526 may be replaced by a USB type B or other suitable socket that may be coupled tosecond computer638 by a physical connection. In particular embodiments,splitter634 may provide any suitable number of these connections. The present invention also contemplatessplitter634, in particular embodiments, providing wireless communication between peripheral628 andfirst computer630 and between peripheral628 andsecond computer638. As an example and not by way of limitation,USB socket648 may be replaced by a master adapter that may use a wireless connection to communicate with a slave adapter coupled tofirst computer628. In particular embodiments,splitter634 may provide any suitable number of these connections.
Memory662 is similar in function tomemory306, but, in particular embodiments, contains additional information. In particular embodiments,memory662 contains information thatprocessor654 uses to determine what instructions to giveswitch650. As an example, in particular embodiments,memory662 contains information specifying one or more timeouts, maximum communication times, or maximum communicated data amounts thatprocessor654 can use. As described more fully below, in particular embodiments,splitter634 allows communication between peripheral628 and multiplesecond computers638 viamultiple wireless connections640. In some of these embodiments,memory662 contains information that specifies a prioritization amongsecond computers638. In particular embodiments, eachsecond computer638 is identified in the prioritization by the BLUETOOTH address ofslave adapter642 corresponding tosecond computer638. If more than one request is pending for communication between peripheral628 and asecond computer638,processor654 uses that information to determine which requested communication to allow first, which to allow second, and so on.
FIG. 11 illustrates anexample system664 for providing both wireline and multiple wireless connections to a wireline interface.System664 is similar tosystem626, except thatsystem664 includes multiplesecond computer systems638. Whenswitch650 provides a physical connection betweenfirst USB socket646 andRF interface660 viaUSB interface658, one or moresecond computers638 may communicate with peripheral628. If more than one request is pending for communication between peripheral628 and asecond computer638,processor654 determines which requested communication to allow first, which to allow second, and so on. As described above, in particular embodiments,processor654 uses information contained inmemory662 that specifies a prioritization amongsecond computers638. According to one prioritization, eachsecond computer638 is assigned one or more priority levels. Each priority level includes only onesecond computer638.Processor654 first allowssecond computer638 of the highest priority level to communicate with peripheral628; then allowssecond computer638 of the next highest priority level to communicate with peripheral628; then allowssecond computer638 of the next highest priority level to communicate with peripheral628; and so on, untilprocessor654 reaches the last priority level. In particular embodiments, if there is no communication request pending at a priority level,processor654 immediately proceeds to the next priority level. If no communication request is pending between peripheral628 and asecond computer638, processor instructsswitch650 to provide a physical connection betweenfirst USB socket646 andsecond USB socket648
FIG. 12 illustrates an example priority table666 ofsystem664. Priority table666 includes first andsecond columns668 and670 and multiple rows672. Priority levels are specified incolumn668, and BLUETOOTH addresses ofslave adapters642 are specified incolumn670. While particular BLUETOOTH addresses may include forty-eight bits, BLUETOOTH addresses that include seven bits are shown for the sake of illustration. Each row672 specifies a priority level and a corresponding BLUETOOTH address. As described above, according to one prioritization,second computers638 are each assigned one or more priority levels and identified in priority table666 by the BLUETOOTH address ofslave adapter642 corresponding tosecond computer638. If more than one request is pending for communication between peripheral628 and asecond computer638,processor654 uses table666 to determine which requested communication to allow first, which to allow second, and so on, as described above.
In particular embodiments,processor654 first accesses row672aand uses the BLUETOOTH address specified inrow672ato identify asecond computer638. If no communication request is pending between peripheral628 andsecond computer638,processor654 accesses row672b. If a communication request is pending between peripheral628 andsecond computer638,processor654 allows the requested communication. When that communication finishes, a maximum time elapses, a maximum data amount is communicated, or a timeout occurs,processor654 accesses row672c. In particular embodiments, this process continues until afterprocessor654 has accessedlast row672n, at whichpoint processor654 returns to row672a. In particular embodiments, priority table666 is built manually. In particular embodiments, priority table666 is built automatically whenmaster adapter652 establisheswireless connections640. In particular embodiments, priority table666 can be updated manually. In particular embodiments, priority table666 can be automatically updated according to a dynamic prioritization.
FIG. 13 illustrates an example method for providing both wireline and wireless connections to a wireline interface. The method starts atstep700, where, if a request for communication between peripheral and second computer system is not pending, the method proceeds to step702. Atstep702,processor654 instructsswitch650 to provide a physical connection between first andsecond USB sockets646 and648 (which allows communication between peripheral628 and first computer system630), and the method returns to step700. Atstep700, if a request for communication between peripheral and second computer system is pending, the method proceeds to step704. Atstep704, if peripheral628 is communicating withfirst computer system630, the method proceeds to step706. Atstep706,processor654 waits until the communication between peripheral628 andfirst computer630 finishes, at which point the method proceeds to step708.
As described above,processor654 may, in addition or as an alternative, wait only until a maximum communication time is reached, a maximum data amount is communicated, or a timeout occurs. As described above, in particular embodiments,processor654 may interrupt the communication between peripheral628 andfirst computer630 and, to allow the requested wireless communication between peripheral628 andsecond computer638, instructswitch650 to provide a physical connection betweenfirst USB socket646 andRF interface660 ofmaster adapter652 viaUSB interface658. Atstep704, if peripheral628 is not communicating withfirst computer system630, the method proceeds to step708. Atstep708, to allow the requested wireless communication between peripheral628 andsecond computer638,processor654 instructsswitch650 to provide a physical connection betweenfirst USB socket646 andRF interface660 ofmaster adapter652 viaUSB interface658.
Atstep710,processor654 waits until the communication between peripheral628 andsecond computer638 finishes. Atstep712,processor654 instructsswitch650 to provide a physical connection between first andsecond USB sockets646 and648, at which point the method ends. One or more steps of the method illustrated inFIG. 13 may, in particular embodiments, be just one instance of a loop. Although particular steps of the method illustrated inFIG. 13 are described and illustrated as occurring in a particular order, the present invention contemplates any suitable steps of the method described above occurring in any suitable order.
FIG. 14 illustrates an example method for automatically establishing awireless connection26 between amaster adapter18 and one ormore slave adapters16. The method begins atstep800, wheremaster adapter18 powers up. Atstep802, ifmaster adapter18 is coupled to peripheral14, the method proceeds to step804. Atstep804,master adapter18 enters operational mode and enables communication between peripheral14 and one ormore computers12, at which point the method ends. Atstep802, ifmaster adapter18 is not coupled to peripheral14, the method proceeds to step806. Atstep806,master adapter18 scans one or more communication channels to detect one ormore slave adapters16. In particular embodiments,master adapter18 scans one or more communication channels to detectslave adapters16 withoutwireless connections26 tomaster adapter18. In particular embodiments,master adapter18 scans the one or more communication channels to detectslave adapters16 withwireless connections26 tomaster adapter18. In particular embodiments,master adapter18 scans the one or more communication channels to detectslave adapters16 with or withoutwireless connections26 tomaster adapter18.
Atstep808, ifmaster adapter18 detects one ormore slave adapters16, the method proceeds to step810. Atstep810,master adapter18 communicates a connect request to aslave adapter16. Atstep808, ifmaster adapter18 does not detect one ormore slave adapters16, the method proceeds to step824. Atstep812, ifmaster adapter18 receives an acknowledgement fromslave adapter16, the method proceeds to step814. Atstep814,master adapter18 requests a password fromslave adapter16. Atstep812, ifmaster adapter18 does not receive an acknowledgement fromslave adapter16, the method proceeds to step822. Atstep816, ifmaster adapter18 receives a valid password fromslave adapter16, the method proceeds to step818. Atstep816, ifmaster adapter18 does not receive a valid password fromslave adapter16, the method proceeds to step822.
Atstep818,master adapter18 communicates a connect success message toslave adapter16. Atstep820,master adapter18 stores data associated withslave adapter16 in table30. Atstep822, if one ormore slave adapters16 detected atstep806 remain, the method returns to step810. In particular embodiments,master adapter18 at least attempts to pair with eachslave adapter16 detected atstep806 before switching from inquiry mode to operational mode. Atstep822, if noslave adapters16 remain, the method proceeds to step826. Atstep826,master adapter18 notifies a user thatmaster adapter18 has switched from inquiry mode to operational mode, at which point the method proceeds to step804. In particular embodiments, as an alternative,master adapter18 switches from inquiry mode to operational mode without notifying a user. Atstep824, if one ormore wireless connections26 betweenmaster adapter18 and one ormore slave adapters16 have already been established, the method proceeds to step826.
Atstep824, if at least onewireless connection26 betweenmaster adapter18 and at least oneslave adapter16 has not already been established, the method returns to step806. One or more steps of the method illustrated inFIG. 14 may, in particular embodiments, be just one instance of a loop. As an example,master adapter18 master switch from operational mode to inquiry mode in response tomaster adapter18 being uncoupled from peripheral14, a user resettingmaster adapter18 or otherwise causingmaster adapter18 to switch from operational mode to inquiry mode, or the occurrence of any other suitable event. Although particular steps of the method illustrated inFIG. 14 are described and illustrated as occurring in a particular order, the present invention contemplates any suitable steps of the method described above occurring in any suitable order.
FIG. 15 illustrates an example method for automatically establishing a wireless connection between aslave adapter16 and one ormore master adapters18. The method begins atstep900, whereslave adapter16 powers up. Atstep902, ifslave adapter16 receives a scan message from amaster adapter18, the method proceeds to step904. Otherwise,slave adapter16 waits untilslave adapter16 receives a scan message from amaster adapter18. Atstep904, in response to the scan message,slave adapter16 communicates an identifier ofslave adapter16 tomaster adapter18. Atstep906,slave adapter16 receives a connect request frommaster adapter18. Atstep908, if a PSM in the connect request does not correspond to a PSM ofslave adapter16, the method proceeds to step910. Atstep910,slave adapter16 disregards the connect request, and the method returns to step902.
Atstep908, if a PSM in the connect request corresponds to a PSM ofslave adapter16, the method proceeds to step912. Atstep912,slave adapter16 communicates an acknowledgement tomaster adapter18. Atstep914,slave adapter16 receives a password request frommaster adapter18. Atstep916, in response to the password request,slave adapter16 communicates a password tomaster adapter18. Atstep918, ifslave adapter16 receives a connect success message from master adapter, the method proceeds to step920. Atstep920,slave adapter16 notifies a user that awireless connection26 has been established betweenmaster adapter18 andslave adapter16, at which point the method ends. Atstep918, ifslave adapter16 does not receive a connect success message from master adapter, the method returns to step902.
One or more steps of the method illustrated inFIG. 15 may, in particular embodiments, be just one instance of a loop. As an example,slave adapter16 may receive multiple scan messages, connect requests, and password requests frommultiple master adapters18, as described above. In particular embodiments, two or moredifferent wireless connections26 betweenslave adapter16 and two or moredifferent master adapters18 may be established at two or more different times. In particular embodiments, two or moredifferent wireless connections26 betweenslave adapter16 and two or moredifferent master adapters18 may be established at more or less the same time. Although particular steps of the method illustrated inFIG. 15 are described and illustrated as occurring in a particular order, the present invention contemplates any suitable steps of the method described above occurring in any suitable order.
Although the present invention has been described with several embodiments, myriad changes, variations, alterations, transformations, and modifications may be suggested to one skilled in the art, and it is intended that the present invention encompass such changes, variations, alterations, transformations, and modifications as fall within the scope of the appended claims. The present invention is not intended to be limited, in any way, by any statement in the specification that is not reflected in the claims.