Data communication networks are becoming ubiquitous. As a result, many devices now come equipped with data-communication ports that allow those devices to transmit data to and receive data from other devices. Consequently, users are now seeking seamless data exchange between multiple devices.
Many aspects of the disclosure can be better understood with reference to the following drawings. The components in the drawings are not necessarily to scale, emphasis instead being placed upon clearly illustrating the principles of the present disclosure. Moreover, in the drawings, like reference numerals designate corresponding parts throughout the several views.
As data communication networks become prevalent, many devices are coming equipped with data-communication ports that allow these devices to communicate with other devices. Consequently, users are now seeking seamless data exchange between multiple devices. Unfortunately, not all of the currently-existing devices are compatible with other currently-existing devices, and sometimes it becomes difficult to transmit data from one device to another due to such an incompatibility. Additionally, in order to ameliorate clutter that results from the connection of multiple wired peripherals, users are more-frequently seeking wireless data solutions for data transmission, such as the Bluetooth® wireless protocol.
In the past, one way in which this problem has been addressed was by using Universal Serial Bus (USB) Human Interface Device (HID) Emulation (UHE) (also referred to as “Legacy-UHE”). Legacy-UHE provided a single application that interfaced with a host using a standard USB-HID device, while emulating a remote HID device (e.g., mouse, keyboard, other peripheral device, etc.). The Legacy-UHE targeted only HID-profile-based applications, and implementation of the Legacy-UHE was tied to USB ports. Furthermore, the Legacy-UHE did not support coexistence of multiple profile-based applications.
In order to ameliorate this limitation, the various embodiments described herein include a controller that enables communication between a Bluetooth®-wireless-protocol unaware host and a Bluetooth®-wireless-protocol enabled remote device. As such, one embodiment of the invention is a controller, which comprises a transport (e.g., USB transport, Universal Asynchronous Receiver/Transmitter (UART) transport, etc.) to enable communication of data with a Bluetooth®-wireless-protocol unaware host device. The controller further comprises a controller application and a controller Bluetooth® stack that enables communication of the data using Bluetooth® wireless protocol. In some embodiments, the controller receives data from a Bluetooth®-wireless-protocol unaware host, converts the received data to be compatible with Bluetooth® wireless protocol, and then transmits the converted data to a Bluetooth®-wireless-protocol enabled remote device. By providing a bridge between a Bluetooth®-wireless-protocol unaware host and a Bluetooth®-wireless-protocol enabled remote device, the controller provides a seamless, transport-agnostic mechanism that enlarges compatibility between various data communication devices. It should be noted at the outset that there are particular hosts that may be Bluetooth®-wireless-protocol aware but function in modes (or execute applications) in which the hosts are Bluetooth®-wireless-protocol unaware. For purposes of this disclosure, a host that is functioning in a mode that is unaware of the Bluetooth®-wireless-protocol is considered to be a Bluetooth®-wireless-protocol unaware host.
With this in mind, reference is now made in detail to the description of the embodiments as illustrated in the drawings. While several embodiments are described in connection with these drawings, there is no intent to limit the disclosure to the embodiment or embodiments disclosed herein. On the contrary, the intent is to cover all alternatives, modifications, and equivalents.
The host 105 comprises a host application 110 and a host transport 115. The host application 110 is an executable file (e.g., video game, audio player, etc.), a data file (e.g., spreadsheet, documents, etc.), or any other type of electronically-storable file. To the extent that the host 105 is Bluetooth®-wireless-protocol unaware, the host 105 employs the host transport 115 for data exchange. Consequently, the host transport 115 is a Universal Serial Bus (USB) transport, a Universal Asynchronous Receiver/Transmitter (UART) transport, a Serial Peripheral Interface (SPI) transport, or any other type of wired transport mechanism.
The controller 120 comprises a controller application 125, a multi-profile application framework (MPAF) 130, a profile 135, a Bluetooth® stack 145, a baseband (BB) link controller (LC), a controller transport 140, and an antenna 155. The controller 120 serves as a bridge between the Bluetooth®-wireless-protocol unaware host 105 and a Bluetooth®-wireless-protocol enabled remote device 504.
In order to accomplish the bridging function, the controller 120 employs the MPAF 130, which represents an embedded application framework to bridge the embedded controller application 125 to the host 105 through the controller transport 140. To the extent that the controller transport 140 establishes the connection with the host 105 through the host transport 115, the controller transport 140 matches the wired data-exchange mechanism of the host transport 115. Thus, if the host transport 115 is a USB transport, then the controller transport 140 is a USB transport; if the host transport 115 is a UART transport, then the controller transport 140 is a UART transport; and if the host transport 115 is a SPI transport, then the controller transport 140 is an SPI transport. In other words, the controller transport 140 matches the host transport 115, thereby allowing data exchange between the host 105 (more specifically, the host application 110) and the controller 120 (more specifically, the controller application 125).
The MPAF 130 is either an embedded software, which converts data from the Bluetooth®-wireless-protocol unaware host 105 to a Bluetooth® wireless protocol, thereby allowing the data to be transmitted to a Bluetooth®-wireless-protocol enabled remote device 504. Conversely, the MPAF 130 converts data that is received from the Bluetooth®-wireless-protocol enabled remote device 504 to a data format that is used by the host 105. As a result, the MPAF 130 enables a host-controller interface (HCI) controller to be targeted to services for Bluetooth®-wireless-protocol unaware hosts. Additionally, the MPAF 130 provides a minimal time-to-market by reducing application overhead. The MPAF 130 does this by providing a transport-agnostic interface to applications, thereby allowing seamless operation across many different transports, such as USB, UART, SPI, etc. Because the MPAF 130 defines multiple custom transport protocols, the MPAF 130 allows the controller 120 to concurrently support multiple, co-existing applications, which the Legacy-UHE is incapable of doing.
The profile 135 primarily provides implementation constraints, while the Bluetooth® stack 145 provides a mechanism for messaging, discovery, description, and eventing for the controller 120. As such, the Bluetooth® stack 145 allows the controller 120 to be discoverable when pairing with Bluetooth®-wireless-protocol enabled devices. Insofar as the controller 120 serves to bridge the embedded Bluetooth® controller application 125 and the Bluetooth®-wireless-protocol unaware host application 110, the controller also comprises a BB/LC 150, and an antenna 155. Upon conversion of the data to Bluetooth® wireless protocol, the controller transmits the converted data to a Bluetooth®-wireless-protocol enabled remote device 504 via the antenna 155.
The controller application 125 is coupled to the MPAF 130 (through a transport service access point (SAP) 212, a platform SAP 214, and an over-the-air (OTA) SAP 216) as well as to the Bluetooth® stack 145. The transport SAP 212 provides an interface for sending and receiving data over a selected transport. The platform SAP 214 provides an interface for accessing platform-specific functionalities, such as, for example, timers, thread services, inputs/outputs, etc. The OTA SAP 216 provides an interface for accessing the Bluetooth® stack 145 services related to connection management.
The Bluetooth® stack 145 comprises various Bluetooth® protocols and profiles 220 (e.g., Human Interface Device Host (HIDH), Serial Port Profile (SPP), Human Interface Device (HID), RFCOMM, Audio-Video DatTransport (AVDT)/A2DP, and other components (not shown)) that form Bluetooth®'s layered protocol architecture. To the extent that these core protocols, cable replacement protocols, telephony control protocols, and adopted protocols are known to those having skill in the art, only a truncated discussion of the Bluetooth® stack 145 is provided herein.
The Bluetooth® stack 145 also includes a Logical Link Control and Adaptation Protocol (L2CAP) 232, which is used to multiplex multiple logical connections between devices using different higher level protocols. The L2CAP 232 further provides segmentation and reassembly of on-air packets.
Both the MPAF 130 and the Bluetooth® stack 145 are coupled to a Bluetooth® module (BTM) basic transmission unit (BTU) 234, which permits over-the-air (OTA) transmission using the Bluetooth® wireless protocol.
The data transmission components can be divided into two distinct segments. First, the Bluetooth® components, which include the Link Management Protocol (LMP) 245 and the BB/LC 150. Second, the controller transport 140 and its related components, which include a transport 240 and a Host Controller Interface (HCI) 238. To the extent that the controller 120 communicates with the host 105 (
As shown in
The header 410 is 32-bits wide (bits 8-39), and comprises a channel 420 (12-bits wide; bits 0-11), reserved bits 425 (4-bits wide; bits 12-15); and a packet length 430 (16-bits wide; bits 16-31). The channel 420 can further be divided into an endpoint 435 (7-bits wide; bits 0-6), a direction bit 440 (1-bit wide; bit 7), and a port 445 (4-bits wide; bits 8-11). In some embodiments, a zero (0) value for the endpoint 435 represents a control channel on a given port. Preferably, the default control channel is used for any custom transport-specific configuration that is based on host requirements.
In some embodiments, a zero (0) value in the direction bit 440 indicates outbound data (from the host 105 to the controller 120), while a one (1) value in the direction bit 440 indicates inbound data (from the controller 120 to the host 105). The four (4) bit port can be configured with the following associations: zero (0) for a virtual Bluetooth® port; one (1) for a virtual keyboard port; two (2) for a virtual mouse port; and three (3) for an auxiliary port.
By way of example, a control request packet sent from the host 105 to the controller 120 can be configured so that an 8-bit control class code is defined immediately after the control packet length 430. In that class code, the 8-bit class code represents the control class type, with: zero (0) being an MPAF control class; one (1) being a USB control class, where the packets are formed in USB control request format; and 2-255 can be used for future class types.
Given the examples shown in
For simplicity, only the host application 110 and a host MPAF 502 (i.e., the host transport components that are MPAF adapted) are shown for the Bluetooth®-wireless-protocol unaware host 105. Similarly, only the controller MPAF 130, controller application 125, and the controller Bluetooth® stack 145 are shown for the controller 120. Likewise, only a remote Bluetooth® stack 506 and a remote application 508 are shown for the Bluetooth®-wireless-protocol enabled remote device 504.
As shown in
Thereafter, the host 105 and the controller 120 optionally engage in control exchanges 532. In these control exchanges 532, the host MPAF 502 transmits 534 control data to the controller MPAF 130. The controller MPAF 130 then sends 536 a custom control request to the controller application 125. The controller application 125 subsequently conveys 538 a custom control response to the host MPAF 502.
Once the optional control exchanges 532 are completed, the controller application 125 opens 540 data channels to the controller MPAF 130. Thus, when the process of
The controller Bluetooth® stack 145 and the remote Bluetooth® stack 506 then engage in profile-specific L2CAP exchanges 550, which results in the establishment 552 of Bluetooth® profile-level connection between the controller 120 and the Bluetooth®-wireless-protocol enabled remote device 504. At this point, the controller 120 is now paired with the Bluetooth®-wireless-protocol enabled remote device 504, and the controller 120 is also capable of data exchange with the Bluetooth®-wireless-protocol unaware host 105. Thus, a bridge is established between the Bluetooth®-wireless-protocol unaware host 105 is now ready to transfer 560 data to and from the Bluetooth®-wireless-protocol enabled remote device 504.
Proceeding to
A reverse-path between the Bluetooth®-wireless-protocol enabled remote device 504 and the Bluetooth®-wireless-protocol unaware host 105 is also shown in
As one can see, by providing a bridge between a Bluetooth®-wireless-protocol unaware host and a Bluetooth®-wireless-protocol enabled remote device, the controller provides a seamless, transport-agnostic mechanism that enlarges compatibility between various data communication devices. Thus, the MPAF 130 provides greater interoperability than the Legacy-UHE and allows for concurrent support of multiple, co-existing applications, which is not implementable by the Legacy-UHE.
The UHE application 202, 3DG application 204, SPP application 206, RC application 208, the A2DP application 210, and the other components in the controller 120 may be implemented in hardware, software, firmware, or a combination thereof. In the preferred embodiment(s), the UHE application 202, 3DG application 204, SPP application 206, RC application 208, the A2DP application 210, and the other components of the controller 120 are implemented in hardware using any or a combination of the following technologies, which are all well known in the art: a discrete logic circuit(s) having logic gates for implementing logic functions upon data signals, an application specific integrated circuit (ASIC) having appropriate combinational logic gates, a programmable gate array(s) (PGA), a field programmable gate array (FPGA), etc. In an alternative embodiment, the UHE application 202, 3DG application 204, SPP application 206, RC application 208, the A2DP application 210, and the other components of the controller 120 are implemented in software or firmware that is stored in a memory and that is executed by a suitable instruction execution system.
Any process descriptions or blocks in flow charts should be understood as representing modules, segments, or portions of code which include one or more executable instructions for implementing specific logical functions or steps in the process, and alternate implementations are included within the scope of the preferred embodiment of the present disclosure in which functions may be executed out of order from that shown or discussed, including substantially concurrently or in reverse order, depending on the functionality involved, as would be understood by those reasonably skilled in the art of the present disclosure.
Although exemplary embodiments have been shown and described, it will be clear to those of ordinary skill in the art that a number of changes, modifications, or alterations to the disclosure as described may be made. For example, while specific host applications are described herein, it will be apparent to those having skill in the art that the controller can be configured with other applications to enable greater compatibility between Bluetooth®-wireless-protocol unaware hosts and Bluetooth®-wireless-protocol enabled remote devices. Furthermore, while