The present invention relates generally to a system and method for distributing computer programs and other executable data objects over a communication network on demand to enable communications and interactions between end devices.
The introduction of enhanced data capabilities for wireless networks has resulted in an explosion of wireless applications for users of mobile devices such as cell phones, Personal Digital Assistants (PDAs), laptop computers, etc. Mobile device users are now able to browse web pages, compose and read e-mail messages, chat with their friends and acquaintances, download music and/or video files from Internet servers, and send digital photographs or images to their friend. Additionally, mobile devices can be used to control devices that are accessible via the Internet.
A program resident on a first communication device may wish to communicate with a program on another communication device. The communication devices may comprise mobiles device or devices having a fixed connection to the network. In order for the two programs to communicate, the programs must use the same protocols to exchange information. If one program requires a particular protocol that is not present on the other communication device, then the communication may not be possible. In this situation, it would be desirable to have a method to enable one or both of the communication devices to obtain on demand the necessary protocols and programs for communication between the end devices.
The present invention provides and method of distributing programs on demand to enable communication between first and second end devices in a communication network. A data object server stores programs that are needed for communication between first and second end devices. The programs are associated by the data object server with a device class. The first and second end devices can send data object requests to the data object server to request a program associated with a particular device class. In response to the data object request, the data object server sends a communication program associated with the specified device class to one of the first and second end devices.
In one exemplary embodiment, a first end device initiates communications with a second end device. The second end device sends a data object request to the data object server. The data object request includes at least the device class of the second end device. The data object server selects a communication program corresponding to the device class of the second device and sends the communication program to the first end device. Alternatively, the data object server may send the communication program to the second device, which then forwards the communication program to the first end device. The originating device loads the communication program into memory and executes the communication program to enable communication with the second end device.
In another exemplary embodiment, a control program enabling a first end device to control a second device is stored in a data object server. When the first end device initiates communications with a second end device, the second end device sends a data object request to the data object server. The data object request includes at least the device class of the second end device. The data object server selects a control program corresponding to the device class of the second end device and sends the control program to the first end device. Alternatively, the data object server may send the control program to the second device, which then forwards the control program to the first end device. The first end device loads the control program into memory and executes the control program to control the second end device.
One or more end devices 100, 200 are connected to the communication network 10. The end devices 100, 200 may comprises any type of communication devices, such as desktop or laptop computers, cellular telephones, Personal Digital Assistants (PDAs), smart phones, that are capable of communicating over a communications network. As will be described below, the end devices 100, 200 may be broadly categorized as originating devices 100 and terminating devices 200. Originating devices 100 are end devices that originate calls or other communication sessions with terminating devices 200. Some end devices may function as both an originating device 100 and terminating device 200.
A data object server (DOS) 50 connected to the PDN 40 stores communication programs for communicating with or controlling end devices 100, 200. As used herein, the term program refers to a set of instructions that when executed cause a computer to perform specific operations. A communication program is a program that is used to facilitate communications between end devices 100, 200. For example, a communications program may be used to encode/decode data, encrypt/decrypt data, or compress/decompress data. A control program is a special case of a communication program that is used to send control commands over a communication network.
When an originating device 100 establishes a connection with the terminating device 200, the data object server 50 is contacted and forwards a corresponding program to the originating device 100 for communicating with or controlling the terminating device 200. The originating device 100 loads the program in its memory and executes the program to communicate with or control the terminating device 200. In this way, it is not necessary for the originating device 100 to permanently store the programs in its memory needed for communicating with or controlling all terminating devices 200. Further, the programs can be updated regularly at the DOS 50, so that the originating device 100 can be assured of getting the most up-to-date program for communication with or control of the terminating device 200.
In some embodiments, the terminating device 200, may not require a user interface 116, audio processing circuits 108, or other elements normally required in a communication device. For example, the terminating device 200 may comprise a thermostat, camera, machinery, appliance, or other piece of equipment that can be remotely controlled with an originating device 100. In this case, the terminating device 200 may be remotely accessed via the communication network 10 and controlled by the originating device 100. As an example, the terminating device may comprise a thermostat that can be accessed via the Internet and controlled from a mobile handheld device, such as a cellular telephone.
In some embodiments, the data object server 50 may send an information request to the originating device 100 to obtain the device class of the originating device 100 (step d). When the originating device 100 receives an information request from the data object server, it may send an information response with the requested information to the data object server 50 (step e). Based on the device class of the terminating device 200 and/or the device class of the originating device 100, the data object server accesses its database and retrieves a program for use in communicating with or controlling the terminating device 200 (step f). The program may, for example, comprise a Java applet or code module that is installed at the originating device 100. If the device class of the originating device 100 is not provided in the data object request, the data object server 50 may send a generic control program to the originating device 100.
The data object server 50 sends the selected program to the originating device 100 based on the address provided in the data object request (step g). Alternatively, the data object server 50 could send the program to the terminating device 200 for forwarding to the originating device 100. After receiving the control program from the data object server 50, the originating device 100 loads the program into its memory (step h). The program adds functionality to the originating device 100 that is need for communicating with the terminating device 200. The originating device 100 can execute the program to control or communicate with the terminating device 200 (step i). It should be noted, that only one program or one set of programs needs to be stored by the data object server 50 for terminating devices 200 in the same device class.
In response to the data object request, the data object server 50 sends an information request to the terminating device 200 to obtain the device class of the originating device 100 (step d). When the terminating device 200 receives an information request from the data object server 50, it may send an information response with the requested information to the data object server 50 (step e). Based on the device class of the terminating device 200 and/or the device class of the originating device 100, the data object server 50 accesses its database and retrieves a program for use in communicating with or controlling the terminating device 200 (step f). The program may, for example, comprise a Java applet or code module that is installed at the originating device 100. If the device class of the originating device 100 is not provided in the data object request, the data object server 50 may send a generic control program to the originating device 100.
The data object server 50 sends the selected program to the originating device 100 based on the address provided in the data object request (step g). After receiving the control program from the data object server 50, the originating device 100 loads the program into its memory (step h). The program adds functionality to the originating device 100 that is need for communicating with or controlling the terminating device 200. The originating device 100 can execute the program to control or communicate with the terminating device 200 (step i). It should be noted, that only one program or one set of programs needs to be stored by the data object server 50 for terminating devices 200 in the same device class.
For control programs, the data object server 50 may send the originating device 100 a control program including code for controlling the terminating device 200, as well as a user interface for display to the user on the display of the originating device 100. If the device class of the originating device is known, a control program can be selected having a user interface adapted for the device class of the originating device 100. This ability to send a device-specific control program to the originating device is particularly useful for mobile devices that often have small displays and limited user controls. After the control program is loaded, the user of the originating device 100 can execute the control program to control the operation of the terminating device 200. When the communication session between the originating device 100 and terminating device 200 is established, the originating device 100 can send requests to and receive responses from the terminating device 200.
For communication programs, the data object server 50 may send the originating device 100 a Java applet or code module for processing information that is transferred between the originating device 100 and terminating device 200. For example, the code module may comprise an audio or video codec, encoder/decoder, cryptographic algorithm, digital rights management (DRM) method, compression/decompression algorithm, etc. Upon installing the code module, the originating device 100 can use the code module for communications with the terminating device.
The exemplary methods shown in
Referring now to the data object server 50, each program stored by the data object server 50 is associated with a device class for at least the terminating device 200 (or originating device 100). Programs may also be associated with a device class for the originating device 100 (or terminating device 200). As previously noted, the data object request received by the data object server 50 includes at least the device class of the terminating device 200 (or originating device 100). The device class of the originating device 100 can be provided in the data object request or in a response to an information request. The data object server 50 uses the device class provided in the data object request to select a corresponding program from its database. The selected program is then forwarded to the originating device 100.
The data object server 50 may, for example, use a lookup table 60 to store the associations between device classes and corresponding programs.
Those skilled in the art will appreciate that more than one type of program can be associated with each device class or composite in the lookup table 60. Further, the index for the lookup table 60 may comprise other fields in addition to the device class of the originating and terminating devices 100, 200 respectively. For example, assume that the data object server 50 stores code modules for different types of media sessions. In this case, the index to the lookup table 60 may include a field to indicate a media type (e.g., video, audio, etc.) for a communication session. Thus, the data object server can select the appropriate code module depending on the media type of the communication session.
The following examples illustrate exemplary embodiments of the present invention, which are intended to be illustrative and not limiting.
Assume that the terminating device 200 comprises a thermostat that is accessible from a remote location via the Internet. In this example, the mobile device is acting as the originating device 100. The data object server 50 may store a control program including a graphical user interface and code for changing the settings or programming of the thermostat, for obtaining readings from the thermostat, and for diagnosing problems with the thermostat. The thermostat is assigned an address, which may be an IP address. A user can initiate a communication session with the thermostat from the mobile device in order to change the current settings or obtain current readings from the thermostat. For example, a communication session can be initiated using SIP by sending a SIP INVITE message from the originating device 100 to the thermostat. The SIP INVITE message includes the SIP address of the originating device 100. The When the communication session is initiated, the thermostat sends a data object request to the data object server 50 responsive to receipt of the session initiation request or other triggering event. The data object request includes the address of the mobile device provided in the session initiation request and the device class of the thermostat. The data object server forwards the control program for the thermostat to the originating device 100. The mobile device can then load and execute the control program to interact with the thermostat. The user of the mobile device can change the settings or current program of the thermostat, can obtain temperature measurements from the thermostat, or diagnose problems with the thermostat.
User of a mobile device (i.e., the originating device 100) wants to connect to a game server (i.e., the terminating device 200) to play a game that the user recently learned about. The data object server 50 stores game programs and that can be used to play interactive games on the game server. The game program may include code for creating game characters and controlling game play. When the user of the mobile device initiates a connection to the game server, the game server sends a data object request to the data object server 50 in response to the session initiation request or other triggering event. The data object request includes the device class of the game server and the address of the mobile device provided in the session initiation request. If the game server is used for multiple games, the data object request may further include an indication of the game that the user of the mobile device wants to play. The data object server 50 forwards a game program for interacting with the game server 50 to the mobile device. The mobile device can then load and execute the game program to interact with the game server. In some embodiments, the game server may send an information request to the mobile device to identify the device class of the mobile device. In this case, the game server can use the device class returned by the mobile device to select a corresponding game program that is adapted for use with the user's mobile device.
User of a first end device (e.g. a mobile device) wants to exchange information (e.g. audio and/or video files) with the user of second end device. When the user of first end device initiates a connection with second end device, the session initiation request (e.g. SIP INVITE) indicates a particular type of media session that is desired. For the requested media session, second end device requires a particular codec for the communication that is not present in First end device. The data object server 50 stores codecs that are used by second end device for various types of media sessions. When second end device receives the session initiation request from first end device, it sends a data object request including the device class for second end device and the address of first end device to the data object server 50. The data object request further includes type of media session requested. The data object server 50 sends the required codec for the requested media session to the first device that is required by second end device.
The first end device can then install the codec to enable exchange of audio/video information with second end device.
User of a first end device wants to communicate with the user of second end device. The user of second end device desires that communications be secure. The data object server 50 stores encryption algorithms that are used by second end device for secure communications. When second end device receives a session initiation request from first end device, it sends a data object request including the device class for second end device and the address of first end device to the data object server 50. The data object request may further include an indication that secure communication is desired. The data object server 50 sends the required cryptographic algorithms to first end device. The first end device can then install the cryptographic algorithms to enable secure communication with second end device. It should be noted that the user of second end device may periodically change the cryptographic algorithms to thwart attempts to crack the cryptographic codes by statistical methods.
The user of a first end device wants to exchange information (e.g. Audio and/or video files) with the user of Second end device. The audio video files are protected by digital rights management (DRM). The data object server 50 stores DRM methods used by second end device for various file types. When second end device receives the session initiation request from first end device, it sends a data object request including the device class for second end device and the address of the first end device to the data object server 50. The data object server 50 sends the required DRM methods to the first end device that is required to unlock or use files transferred from Second end device to the first end device. For example, the DRM methods may allow the user of the first end device to play the content a predetermined number of times, or may require the user of the first end device to purchase the content before use.
The present invention may, of course, be carried out in other specific ways than those herein set forth without departing from the scope and essential characteristics of the invention. The present embodiments are, therefore, to be considered in all respects as illustrative and not restrictive, and all changes coming within the meaning and equivalency range of the appended claims are intended to be embraced therein.
This application claims the benefit of U.S. Provisional Patent Application 60/944,253, filed Jun. 15, 2007, which is incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
60944253 | Jun 2007 | US |