ACCESSING AD HOC BLUETOOTH DEVICES FROM A JAVA APPLICATION
FIELD OF THE INVENTION The invention relates generally to communication between Java applications and portable communication devices and, more particularly, to accessing ad hoc Bluetooth devices from a Java application.
BACKGROUND OF THE INVENTION Bluetooth technology is a specification for wireless communication of data and voice. It is based on a low-cost short-range radio link (nominal range is 10 centimeters to 10 meters, extendable with increased transmission power), built into a microchip, facilitating protected ad hoc connections for stationary and mobile communication environments (see Specification of the Bluetooth System. Version 1.0 Draft, June 21 , 1999, incorporated herein by reference). Bluetooth technology provides a universal short-range radio link that can be substituted for proprietary cables in connecting one device to another. For example, Bluetooth radio technology built into both a cellular telephone and a laptop computer replaces a cable as a connection between the laptop computer and the cellular telephone. Printers, PDA's, desktop computers, facsimile machines, keyboards, joy sticks and virtually any other digital device can be part of a
Bluetooth system.
In addition to untethering devices by replacing the connecting cables, Bluetooth radio technology provides: a universal bridge to existing data networks; a peripheral interface; and a mechanism to form small, private ad hoc groupings of connected devices apart from fixed network infrastructures. The Bluetooth radio link is designed to operate in a noisy radio frequency environment, and accordingly uses a fast acknowledgment and frequency hopping scheme to make the link robust.
Bluetooth technology as described generally above is well known to workers in the art. This technology is rapidly developing, and the goal is to enable fast, efficient and seamless communication, mainly between portable communication devices such as mobile telephones, PDA2s, laptop computers and other similar
devices. Furthermore, the term portable communication device is intended herein to refer to virtually any apparatus that can be in any way relocated from one location to another and is equipped with a radio interface. As an example, although a washing machine is not conveniently carried by an individual from place to place, it is certainly relocatable, for example by a moving van, and can be equipped with a radio interface.
Java is a well-known object oriented programming language, which has gained wide acceptance for its portability and cleanness, and its capability of good integration with the Internet. Java is byte compiled, and is run on a Java virtual machine.
The current state of the art does not provide for access of Bluetooth devices directly from Java. However, the present invention recognizes that such access would be desirable in view of the wide acceptance of both Bluetooth and Java.
The present invention combines Bluetooth technology and Java technology to form a powerful programming environment that provides for writing portable code that is easy to deploy and use. This programming environment provides for easy creation of dynamic services which run on Java and can also access Bluetooth devices, and which dynamic services may also be leveraged with Internet access. According to the invention, data that is transformable into a runnable Java object is provided in a portable Bluetooth device. This data can be pushed over to an access point which then transforms the data into the desired runnable Java object for use by a Java application. Thus, the relatively large processing power of the access point can advantageously be utilized, while virtually no additional processing power is required in the portable Bluetooth device, thereby making the portable device more useful, without substantially increasing its cost, size, energy efficiency, etc.
BRIEF DESCRIPTION OF THE DRAWINGS
FIGURE 1 diagrammatically illustrates an exemplary communication system according to the present invention.
FIGURE 2 diagrammatically illustrates pertinent portions of further exemplary communication systems according to the invention. FIGURE 3 is a signaling diagram which illustrates, for each communication shown in FIGURE 1, the applications between which the communication occurs.
DETAILED DESCRIPTION
FIGURE 1 diagrammatically illustrates an exemplary communication system according to the present invention. An access point (or service provider) 11, for example a desktop or laptop computer, is coupled for wireless communication with a portable communication device 13, for example a personal digital assistant, a laptop computer, a mobile telephone or any relocatable apparatus. In the example of FIGURE 1, the radio link 10 between the access point 11 and the portable device 13 is a conventional Bluetooth link and the portable device 13 is a Bluetooth device.
A Bluetooth Manager application 15 provided in the access point 11 cooperates with a given portable device 13, using conventional Bluetooth techniques, to discover when the portable device 13 has moved within Bluetooth communication range of access point 11 , as indicated generally at 27 in FIGURE 1. Upon discovery of the in- range Bluetooth device 13, an application in the Bluetooth Manager 15 queries the Bluetooth device 13 as to whether the device 13 includes an interface for use with, for example, a Java application running on a Java virtual machine (JVM) provided in the access point 1 1. This query, designated at 12 in FIGURE 1, is performed using conventional Bluetooth Service Discovery Protocol (SDP), and the application that performs the query is correspondingly designated as SDP Client in FIGURE 1. The Bluetooth SDP is provided in the conventional Bluetooth stack, which Bluetooth stack is provided in both the access point 11 (not explicitly shown) and the portable device
13. This Bluetooth stack includes the layers HCI, Link Manager, L2CAP, RFComm, TCP/IP, and SDP, as illustrated in the portable device 13 of FIGURE 1.
The SDP Client of the access point 11 is coupled to a conventional Bluetooth driver/receiver apparatus at 17, which interfaces between the Bluetooth Manager 15 and the Bluetooth radio link 10. This apparatus 17 outputs the SDP Query 12 to the portable device 13 using well-known Bluetooth radio communication techniques. The SDP Query is received as an input at the portable device 13 by a conventional Bluetooth receiver apparatus included (but not explicitly shown) in the Bluetooth hardware at 24. The received SDP Query is forwarded to a conventional SDP server application 19 running on the portable device 13. The SDP server application 19 maintains a registry of services available in the portable device 13, thereby permitting
another device (such as the access point 1 1) to search for a service via attributes provided in the SDP Query.
In the FIGURE 1 example, the SDP Query includes the attribute, Javalnterface. From this attribute, the SDP server application identifies a corresponding application running on the portable device 13, and outputs a radio communication to the access point 1 1 via a Bluetooth driver apparatus included (but not explicitly shown) in the Bluetooth radio interface hardware at 24. This radio communication utilizes SDP, and includes an SDP Reply, designated at 14 in FIGURE 1. The SDP Reply includes information indicative of the communication protocol and port that should be used to access the desired application, i.e. the application corresponding to the SDP Query 12.
In the example of FIGURE 1, the required communication protocol is the Object Exchange (OBEX) protocol of the Infrared Data Association (IrDA), as described in IrDA Object Exchange Protocol. Version 1.2, March 18, 1999, which is incorporated herein by reference. The port is defined as channel 2 (designated as COM2 in FIGURE 1) in the RFComm layer of the Bluetooth stack, as illustrated at 14 in
FIGURE 1.
The SDP Reply 14 is received as an input at the access point 11 by a Bluetooth receiver apparatus at 17, and the protocol and port information is forwarded to the SDP client application in the Bluetooth Manager 15. In the example of FIGURE 1, the Bluetooth Manager 15 uses an OBEX loader application to access the desired application in the portable device 13. The OBEX loader connects to the desired application (or service) in the portable device 13, in this example a proxy pusher application 29. The connection between the OBEX loader and the proxy pusher application 29 is made using the OBEX protocol over the Bluetooth communication link, and using channel 2 of the RFComm layer of the Bluetooth stack.
In reply to a request at 16 from the OBEX loader, the proxy pusher application 29 retrieves from a data storage portion 28 Java proxy data associated with the portable device 13, and then downloads the Java proxy data to the OBEX loader at 18, again using channel 2 of the RFComm layer of the Bluetooth stack. In this example, a serial connection is used to download the Java proxy. However, a TCP/IP
connection could also be used in conjunction with the TCP/IP layer of the Bluetooth stack.
The Java proxy data (also referred to herein as the Java proxy) can include, for example, binary data that is transformable using standard Java language features into a runnable Java object which represents the portable device 13 and can be used by a
Java application running on the Java virtual machine JVM of the access point 11. This runnable Java object could be, for example, a conventional Enterprise JavaBean, or another similar conventional Java technology.
The OBEX loader receives the Java proxy data into memory, and then transforms this data into a runnable Java object using standard conventional Java language features. The OBEX loader then uses conventionally known operations to initialize the Java object with information needed to communicate with the portable device 13, for example information identifying the portable device as a Bluetooth device that uses the RFComm layer for Bluetooth radio link communications. The thusly initialized Java object is then forwarded to the JVM via a conventional Java interface 20. The receiving Java application 23 is then free to use the Java object as desired. The above-described operations performed on the proxy data by the OBEX loader are indicated diagrammatically in FIGURE 1 by the broken line path 50.
For example, the Java object could be an object that permits the Java application to print text on the portable device 13, so the Java application could use the Java object in combination with the Bluetooth communication link to display textual information on the portable device 13. This type of operation is well known in the art.
As specific examples, if the portable device 13 passes within Bluetooth range of an access point 11 located in a restaurant, then the access point 11 might use the
Java object to display the restaurant's menu on the display 22 of the portable device (a graphical user interface GUI in the FIGURE 1 example), or if the portable device 13 comes within Bluetooth range of an access point 11 located in a merchant's store, the Java application might use the Java object to display store prices on the display 22 of the portable device 13.
It will be evident to workers in the art that the applications, services, Java virtual machine and Bluetooth stacks described above relative to the access point 11 and the portable device 13 can be implemented by suitably programmed data processors provided at 25 in the portable device 13 and at 26 in the access point 11. The services provided by the access point 11 may also be leveraged with Internet access as shown in FIGURE 1.
FIGURE 2 diagrammatically illustrates pertinent portions of further exemplary communication systems according to the invention. In one exemplary embodiment illustrated in FIGURE 2, an access point 41 includes a conventional Jini Lookup Server 32, for example, a Java application running on a Java virtual machine of access point 41. The access point 41 of FIGURE 2 can communicate with a portable Bluetooth device in generally the same manner described above with respect to communication between the access point 1 1 and the portable Bluetooth device 13 of FIGURE 1. Also provided in the access point 41 is a Jini Client 31 (a Java application running on the Java virtual machine) which has registered with the Jini Lookup Server
32 to be notified when, for example, a Bluetooth mobile telephone is discovered. When such a mobile telephone is discovered, and the OBEX loader receives the Java proxy from the mobile telephone, the OBEX loader can transform the Java proxy into a runnable Java object, including, for example, adding information about the mobile telephone, for example its location, its owner, etc. The runnable Java object is then forwarded from the OBEX loader to the Jini Lookup Server. By virtue of having registered with the Jini Lookup Server, the Jini client receives the runnable Java object from the Jini Lookup Server, and can use the Java object as desired.
In another embodiment, illustrated by broken line in FIGURE 2, the Jini Lookup Server communicates in a conventional manner with a remotely located
(relative to both the access point 41 and the portable device) Jini community including one or more Jini Clients, to permit those clients to have remote access to the portable device via Jini. In order to export the Java object representing the portable device to the Jini community, the Bluetooth Manager 15A can, for example, wrap the Java object representing the portable device in another object which supplies a means for
communicating remotely to the portable device. For example, the Bluetooth Manager could wrap the Java object in a Java RMI interface.
The above-described applications and services of access point 41 can be implemented by a suitably programmed data processor 45. The signaling diagram of FIGURE 3 illustrates, for each of communications
12, 14, 16 and 18 in FIGURE 1, the applications between which the particular communication occurs. Considering also FIGURE 1, it can be seen that the SDP Query 12 is made by the SDP Client of the access point 11 to the SDP server of the portable device 13. Similarly, the SDP Reply 14 is made from the SDP server of portable device 13 to the SDP Client of the access point 11. At 16, the OBEX loader of the access point 1 1 communicates to the proxy pusher ofthe portable device 13, and the proxy pusher communicates to the OBEX loader at 18.
As described above, the present invention permits the use of a Java application to easily create dynamic services that utilize ad hoc mobile Bluetooth devices that come within range of an access point. The invention permits communication ofthe expressional power of Java to virtually any portable Bluetooth device. Moreover, the invention liberates the portable Bluetooth device from the necessity of running a Java virtual machine itself, which might be too process heavy for the device. Rather, the computational power of the access point (service provider) can advantageously be utilized. It should also be clear that the proxy pusher application 29 provided in the portable Bluetooth device can be a rather small service which can be implemented very economically with respect to both the data storage and data processing resources ofthe portable device.
Although exemplary embodiments of the present invention have been described above in detail, this does not limit the scope ofthe invention, which can be practiced in a variety of embodiments.