Embodiments of the present invention relate generally to communications technology and, more particularly, relate to a method, apparatus and computer program product for cross triggering and detection of platform dependent resources and features, such as actions triggered by certain events.
The modern communications era has brought about a tremendous expansion of wireline and wireless networks. Computer networks, television networks, and telephony networks are experiencing an unprecedented technological expansion, fueled by consumer demand. Wireless and mobile networking technologies have addressed related consumer demands, while providing more flexibility and immediacy of information transfer.
Current and future networking technologies continue to facilitate ease of information transfer and convenience to users. One area in which there is a demand to increase ease of information transfer and convenience to users relates to automating certain device functions, for example, by establishing rules that may govern certain device functionality. For instance, with respect to electronic devices such as mobile terminals including mobile telephones, pagers, PDAs and other similar devices that are becoming more and more ubiquitous in the modern world, it may be desirable to have the mobile terminal automatically trigger a particular action or event in response to a particular set of conditions being met. In this regard, certain mobile terminal applications have been developed which enable a user of a mobile terminal to set predefined rules which, when certain predefined conditions are met, may trigger a particular action or event in the mobile terminal. However, given the limited capabilities of the user interface of many mobile terminals, it may be difficult or cumbersome to enter complex rules using the user interface of the mobile terminal.
Accordingly, there may be need to develop a mechanism by which to enable a user of a mobile terminal to seamlessly utilize the more robust and richer user interface capabilities of another device in order to communicate e.g. rules, actions, programs, objects, etc. to a mobile terminal. Additionally, it may be desirable to enable cross triggering or detection of platform dependent events and actions, use resources of other devices, access objects across platforms, etc.
A method, apparatus and computer program product are therefore provided to enable cross triggering and detection of platform dependent resources, features, capabilities, such as actions and events. In particular, a method, apparatus and computer program product are provided that enable the user of a mobile terminal to use the device's resources e.g. via defining rules or conditions at a device having a robust user interface and having those rules or conditions communicated to the mobile terminal. In this regard, a communications mechanism may be established between the mobile terminal and the device having the robust user interface by which necessary communications may be conducted in order to communicate e.g. executable rules to the mobile terminal. Accordingly, via the establishment of the communications mechanism, the mobile terminal may respond, for example, to context rules involving the mobile terminal, the device having the robust user interface or even other devices in communication with either the mobile terminal or the device having the robust user interface. As such, embodiments of the present invention enable the detection of conditions at one or more devices and the triggering of events or actions at the one or more devices in response to the definition of rules or conditions for precipitation of the actions or events at a single device having a robust user interface. It must be noted that the context rule management case (creation, deployment, sharing, evaluation, execution of rules) is just used as an example through the current application to highlight the benefits and the innovative aspects of seamless cross-platform resource access. Similar examples can be found from other areas as well, such as managing multimedia objects (defining naming conventions, folder structure, etc.), giving access rights to devices in case of proximity, managing and editing objects that require substantial user inputs, e.g. calendar reminders, etc.
In one exemplary embodiment (as pointed above, many example utilizations of the seamless cross-platform resource management can be cited, however for the sake of simplicity and easy comprehensibility we will focus on context rule management), a method of providing cross triggering and detection of platform dependent actions and events is provided. The method includes establishing at a host device a seamless communication connection with an electronic device, receiving, via the seamless communication connection, an instruction defining an operation to be performed in response to a particular stimulus, and performing the operation in response to the stimulus. The seamless communication connection provides the electronic device with access to all resources of the host device.
In another exemplary embodiment, a computer program product for providing cross triggering and detection of platform dependent actions and events is provided. The computer program product includes at least one computer-readable storage medium having computer-readable program code portions stored therein. The computer-readable program code portions include first, second and third executable portions. The first executable portion is for establishing at a host device a seamless communication connection with an electronic device. The seamless communication connection provides the electronic device with access to all resources of the host device. The second executable portion is for receiving, via the seamless communication connection, an instruction defining an operation to be performed in response to a particular stimulus. The third executable portion is for performing the operation in response to the stimulus.
In another exemplary embodiment, an apparatus for providing cross triggering and detection of platform dependent actions and events is provided. The apparatus includes a communication element and a processing element. The communication element is configured to establish, at the apparatus, a seamless communication connection with an electronic device, the seamless communication connection providing the electronic device with access to all resources of the apparatus. The processing element is configured to receive, via the seamless communication connection, an instruction defining an operation to be performed in response to a particular stimulus and to perform the operation in response to the stimulus.
In another exemplary embodiment, a system for providing cross triggering and detection of platform dependent actions and events is provided. The system includes a first device and a second device. The second device is capable of establishing a seamless communication connection with the first device (or vice versa). The seamless communication connection provides the first device with access to all resources of the second device. The first device includes a first processing element configured to define an instruction which defines an operation to be performed in response to a particular stimulus. The second device includes a second processing element configured to receive the instruction from the first device via the seamless communication connection and perform the operation in response to the stimulus.
In another exemplary embodiment, an apparatus for providing cross triggering and detection of platform dependent actions and events is provided. The apparatus includes means for establishing at a host device a seamless communication connection with an electronic device, means for receiving, via the seamless communication connection, an instruction defining an operation to be performed in response to a particular stimulus, and means for performing the operation in response to the stimulus. The seamless communication connection provides the electronic device with access to all resources of the host device.
Embodiments of the invention may provide a method, apparatus and computer program product for advantageous employment in a mobile electronic device environment, such as on a mobile terminal in communication with an electronic device having a more robust user interface capability such as a personal computer (PC) or a remote server. As a result, for example, mobile terminal users may enjoy an improved capability for accessing device-specific resources or defining actions or events that occur based upon conditions defined at least in part at another device such, for example, as a PC at which the conditions, actions and events may be more easily defined, e.g. by having a full and seamless view to all the capabilities of the limited device, all the data on it, e.g. names in contact directory, etc. Additionally, embodiments of the present invention provide a mechanism by which to provide cross triggering of events or actions at a first device based on rules that may be formulated and evaluated from another device.
Having thus described embodiments of the invention in general terms, reference will now be made to the accompanying drawings, which are not necessarily drawn to scale, and wherein:
Embodiments of the present invention will now be described more fully hereinafter with reference to the accompanying drawings, in which some, but not all embodiments of the invention are shown. Indeed, embodiments of the invention may be embodied in many different forms and should not be construed as limited to the embodiments set forth herein; rather, these embodiments are provided so that this disclosure will satisfy applicable legal requirements. Context rule management is described in detail for exemplary purposes, however, similar other application areas can be cited where cross-platform resource management and access can provide advanced user experience. Such cases may include multimedia object management, defining behavior of specific functionalities of a device (e.g. how the camera of a mobile phone should work, where to save by default photos, how to name them, etc.), any preference-like specifications and their management, security related aspects e.g. by defining when and how proximity of two devices should work, and all other case when heavy user input is needed and can be eased by the rich user interface (UI) of another device, e.g. editing to do lists, calendar reminders via the PC's UI while the object being edited resides on the device, etc. Like reference numerals refer to like elements throughout.
In addition, while several embodiments of the method of the present invention are performed or used by a mobile terminal 10, the method may be employed by other than a mobile terminal. Moreover, the system and method of embodiments of the present invention will be primarily described in conjunction with mobile communications applications. It should be understood, however, that the system and method of embodiments of the present invention can be utilized in conjunction with a variety of other applications, both in the mobile communications industries and outside of the mobile communications industries.
The mobile terminal 10 includes an antenna 12, or multiple antennae, in operable communication with a transmitter 14 and a receiver 16. The mobile terminal 10 further includes a controller 20 or other processing element that provides signals to and receives signals from the transmitter 14 and receiver 16, respectively. The signals include signaling information in accordance with the air interface standard of the applicable cellular system, and also user speech and/or user generated data. In this regard, the mobile terminal 10 is capable of operating with one or more air interface standards, communication protocols, modulation types, and access types. By way of illustration, the mobile terminal 10 is capable of operating in accordance with any of a number of first, second and/or third-generation communication protocols or the like. For example, the mobile terminal 10 may be capable of operating in accordance with second-generation (2G) wireless communication protocols IS-136 (TDMA), GSM, and IS-95 (CDMA), or with third-generation (3G) wireless communication protocols, such as UMTS, CDMA2000, and TD-SCDMA.
It is understood that the controller 20 includes circuitry required for implementing audio and logic functions of the mobile terminal 10. For example, the controller 20 may be comprised of a digital signal processor device, a microprocessor device, and various analog to digital converters, digital to analog converters, and other support circuits. Control and signal processing functions of the mobile terminal 10 are allocated between these devices according to their respective capabilities. The controller 20 thus may also include the functionality to convolutionally encode and interleave message and data prior to modulation and transmission. The controller 20 can additionally include an internal voice coder, and may include an internal data modem. Further, the controller 20 may include functionality to operate one or more software programs, which may be stored in memory. For example, the controller 20 may be capable of operating a connectivity program, such as a conventional Web browser. The connectivity program may then allow the mobile terminal 10 to transmit and receive Web content, such as location-based content, according to a Wireless Application Protocol (WAP), for example.
The mobile terminal 10 also comprises a user interface including an output device such as a conventional earphone or speaker 24, a ringer 22, a microphone 26, a display 28 that may also be external display e.g, a TV, a monitor or a LCD projector, and a user input interface, all of which are coupled to the controller 20. The user input interface, which allows the mobile terminal 10 to receive data, may include any of a number of devices allowing the mobile terminal 10 to receive data, such as a keypad 30, a touch display (not shown) or other input device. In embodiments including the keypad 30, the keypad 30 may include the conventional numeric (0-9) and related keys (#, *), and other keys used for operating the mobile terminal 10. Alternatively, the keypad 30 may include a conventional QWERTY keypad arrangement. The keypad 30 may also include various soft keys with associated functions. In addition, or alternatively, the mobile terminal 10 may include an interface device such as a joystick or other user input interface. The mobile terminal 10 further includes a battery 34, such as a vibrating battery pack, for powering various circuits that are required to operate the mobile terminal 10, as well as optionally providing mechanical vibration as a detectable output or any other UI modalities and their combinations (the multimodal approach).
The mobile terminal 10 may further include a universal identity element (UIM) 38. The UIM 38 is typically a memory device having a processor built in. The UIM 38 may include, for example, a subscriber identity element (SIM), a universal integrated circuit card (UICC), a universal subscriber identity element (USIM), a removable user identity element (R-UIM), etc. The UIM 38 typically stores information elements related to a mobile subscriber. In addition to the UIM 38, the mobile terminal 10 may be equipped with memory. For example, the mobile terminal 10 may include volatile memory 40, such as volatile Random Access Memory (RAM) including a cache area for the temporary storage of data. The mobile terminal 10 may also include other non-volatile memory 42, which can be embedded and/or may be removable. The non-volatile memory 42 can additionally or alternatively comprise an EEPROM, flash memory or the like, such as that available from the SanDisk Corporation of Sunnyvale, Calif., or Lexar Media Inc. of Fremont, Calif. The memories can store any of a number of pieces of information, and data, used by the mobile terminal 10 to implement the functions of the mobile terminal 10. For example, the memories can include an identifier, such as an international mobile equipment identification (IMEI) code, capable of uniquely identifying the mobile terminal 10.
Referring now to
The MSC 46 can be coupled to a data network, such as a local area network (LAN), a metropolitan area network (MAN), and/or a wide area network (WAN). The MSC 46 can be directly coupled to the data network. In one typical embodiment, however, the MSC 46 is coupled to a GTW 48, and the GTW 48 is coupled to a WAN, such as the Internet 50. In turn, devices such as processing elements (e.g., personal computers, server computers or the like) can be coupled to the mobile terminal 10 via the Internet 50. For example, as explained below, the processing elements can include one or more processing elements associated with a computing system 52 (two shown in
The BS 44 can also be coupled to a signaling GPRS (General Packet Radio Service) support node (SGSN) 56. As known to those skilled in the art, the SGSN 56 is typically capable of performing functions similar to the MSC 46 for packet switched services. The SGSN 56, like the MSC 46, can be coupled to a data network, such as the Internet 50. The SGSN 56 can be directly coupled to the data network. In a more typical embodiment, however, the SGSN 56 is coupled to a packet-switched core network, such as a GPRS core network 58. The packet-switched core network is then coupled to another GTW 48, such as a GTW GPRS support node (GGSN) 60, and the GGSN 60 is coupled to the Internet 50. In addition to the GGSN 60, the packet-switched core network can also be coupled to a GTW 48. Also, the GGSN 60 can be coupled to a messaging center. In this regard, the GGSN 60 and the SGSN 56, like the MSC 46, may be capable of controlling the forwarding of messages, such as MMS messages. The GGSN 60 and SGSN 56 may also be capable of controlling the forwarding of messages for the mobile terminal 10 to and from the messaging center.
In addition, by coupling the SGSN 56 to the GPRS core network 58 and the GGSN 60, devices such as a computing system 52 and/or origin server 54 may be coupled to the mobile terminal 10 via the Internet 50, SGSN 56 and GGSN 60. In this regard, devices such as the computing system 52 and/or origin server 54 may communicate with the mobile terminal 10 across the SGSN 56, GPRS core network 58 and the GGSN 60. By directly or indirectly connecting mobile terminals 10 and the other devices (e.g., computing system 52, origin server 54, etc.) to the Internet 50, the mobile terminals 10 may communicate with the other devices and with one another, such as according to the Hypertext Transfer Protocol (HTTP), to thereby carry out various functions of the mobile terminals 10.
Although not every element of every possible mobile network is shown and described herein, it should be appreciated that the mobile terminal 10 may be coupled to one or more of any of a number of different networks through the BS 44. In this regard, the network(s) can be capable of supporting communication in accordance with any one or more of a number of first-generation (1G), second-generation (2G), 2.5G and/or third-generation (3G) mobile communication protocols or the like. For example, one or more of the network(s) can be capable of supporting communication in accordance with 2G wireless communication protocols IS-136 (TDMA), GSM, and IS-95 (CDMA). Also, for example, one or more of the network(s) can be capable of supporting communication in accordance with 2.5G wireless communication protocols GPRS, Enhanced Data GSM Environment (EDGE), or the like. Further, for example, one or more of the network(s) can be capable of supporting communication in accordance with 3G wireless communication protocols such as Universal Mobile Telephone System (UMTS) network employing Wideband Code Division Multiple Access (WCDMA) radio access technology. Some narrow-band AMPS (NAMPS), as well as TACS, network(s) may also benefit from embodiments of the present invention, as should dual or higher mode mobile stations (e.g., digital/analog or TDMA/CDMA/analog phones).
The mobile terminal 10 can further be coupled to one or more wireless access points (APs) 62. The APs 62 may comprise access points configured to communicate with the mobile terminal 10 in accordance with techniques such as, for example, radio frequency (RF), Bluetooth (BT), infrared (IrDA) or any of a number of different wireless networking techniques, including wireless LAN (WLAN) techniques such as IEEE 802.11 (e.g., 802.11a, 802.11b, 802.11g, 802.11n, etc.), WiMAX techniques such as IEEE 802.16, and/or ultra wideband (UWB) techniques such as IEEE 802.15 or the like. The APs 62 may be coupled to the Internet 50. Like with the MSC 46, the APs 62 can be directly coupled to the Internet 50. In one embodiment, however, the APs 62 are indirectly coupled to the Internet 50 via a GTW 48. Furthermore, in one embodiment, the BS 44 may be considered as another AP 62. As will be appreciated, by directly or indirectly connecting the mobile terminals 10 and the computing system 52, the origin server 54, and/or any of a number of other devices, to the Internet 50, the mobile terminals 10 can communicate with one another, the computing system, etc., to thereby carry out various functions of the mobile terminals 10, such as to transmit data, content or the like to, and/or receive content, data or the like from, the computing system 52. As used herein, the terms “data,” “content,” “information” and similar terms may be used interchangeably to refer to data capable of being transmitted, received and/or stored in accordance with embodiments of the present invention. Thus, use of any such terms should not be taken to limit the spirit and scope of embodiments of the present invention.
Although not shown in
An exemplary embodiment of the invention will now be described with reference to
It should be noted that while
Referring now to
As shown in
The communication element 82 may be any device or means embodied in either hardware, software, or a combination of hardware and software that is capable of providing communication between the first device 70 and other communications devices such as the second device 72. In this regard, the communication element 82 may include an ability to establish a seamless communication mechanism with, for example, the second device 72 via the communication connection 74. The communication connection 74 may be, for example, continuous, continuous for so long as the first and second devices 70 and 72 are in proximity, or intermittent in so far as the communication connection 74 is established for a given period of time to facilitate information exchange and then terminated until such time as the communication connection 74 is caused to be reestablished. As stated above, for example, the communication connection 74 may be a wired or wireless connection such as an internet protocol (IP), Bluetooth, WLAN, etc. connection that is established whenever the first and second devices 70 and 72 are in proximity to each other or otherwise automatically or manually linked.
The first device 70 may also include a rule management element 88 which may also be controlled by the processing element 76. The rule management element 88 (or a general interpreter that takes the rules, objects, programs, actions, etc. defined on the other device) may be any device or means embodied in either hardware, software, or a combination of hardware and software that is capable of establishing, modifying, editing, etc. a rule or rules and controlling certain functions of a device associated with the rule management element 88 (i.e., the first device 70). The rule may include a condition or a plurality of conditions which, if met, trigger execution of a corresponding action or event as defined by the rule. In this regard, the rule management element 88 may be in communication with applications or services of the first device 70 such that when conditions for satisfying a particular rule are met, the rule management element 88 may communicate an instruction to a respective application or service for control of certain operations of the first device 70 in accordance with the instruction as specified in the rule. In other words, the rule management element 88 may be capable of accessing or linking to resources of the first device 70. For example, the rule management element 88 may control modes of operation of the first device 70 such as switching to a meeting mode, control power to the first device 70, execute an automatic response such as an SMS message, or control other applications of the first device 70. As another example, if the rule management element 88 determines that all conditions associated with a rule are satisfied and the rule specifies that power should be secured to a display of the first device 70, then the rule management element 88 can access resources at the first device 70 in order to secure power to the display.
The rule management element 88 may also include a context engine 86. The context engine 86 may be any device or means embodied in either hardware, software, or a combination of hardware and software that is capable of repeatedly or continuously scanning to determine whether particular conditions relative to a context of the first device 70 are met. For example, the context engine 86 may monitor resources of the first device 70 to signal the rule management element 88 when the first device 70 is within proximity to other devices. The context engine 86 may be any context engine known in the art and is therefore capable of informing the rule management element 88 of any other context related information such as is known in the art.
It is also possible that the first device 70 may include a simulation and validation element that is capable of simulating how the second device 72 would react to certain rules with certain conditions. In this way, defined rules can be tested and experimented. Similarly it may also be possible that the first device 70 is capable of testing the defined rule with the second device 72 instantly whenever the rule is generated or modified. In this way, the first device 70 can make sure that the generated rule will work on the second device 72, thereby reducing the possibility of failure in real life operation.
The second device 72 may include elements substantially similar to those of the first device 70. For example, the second device 72 may include a processing element 98 for executing various applications 100. The processing element 98 may also control a communication framework 102 having an API 104 and a communication element 108. Each of the elements above of the second device 72 may include functionality substantially similar to that described above for corresponding elements of the first device 70 and thus, a detailed description of the corresponding elements will not be provided.
The second device 72 may also include a rule management element 110 that is controlled by the processing element 98 of the second device 72. The rule management element 110 may be any device or means embodied in either hardware, software, or a combination of hardware and software that is capable of establishing, modifying, editing, etc. rules and controlling certain functions of the second device 72. The rules may include a condition or a plurality of conditions which, if met, trigger execution of a corresponding action or event as defined by the rule. In this regard, the rule management element 108 may include context engine 106 similar to that described above in regard to the first device 70 such that when conditions for satisfying a particular rule are met, the rule management element 110 may communicate with respective applications or otherwise control certain operations of the second device 72 in accordance with instructions from the rule management element 110 as specified according to the rule.
As stated above, in one exemplary embodiment, the first device 70 may include a relatively robust user interface 114, while the second device 72 may include a relatively limited user interface 116. Accordingly, in an embodiment in which a user is associated with both the first and second devices 70 and 72 such as, for example, the user is the owner of a PC (i.e. the first device 70) and a mobile terminal (i.e., the second device 72) the user may employ the relatively robust user interface 114 of the first device 70 to create rules at the first device 70 which may then be communicated to the second device 72 via the communication connection 74. Since rule generation and other actions to specify particular responses for certain stimuli may be complex, the size of the user interface of the device used to generate such rules or specify such actions may have a substantial impact on the ease or ability to perform such tasks. For example, a complex rule generation would likely not lend itself well to use with a mobile terminal having a limited screen size. As such, in an exemplary embodiment in which rule generation is being performed, it may be desirable to use the relatively robust user interface 114 of the first device 70 in order to provide input from the user to the rule management element 88 of the first device 70 in order to create a rule 120 which may then be communicated via the communication connection 74 from the communication element 82 of the first device 70 to the communication element 108 of the second device 72. The rule 120 may include conditions which, when satisfied, trigger the execution of a particular action or event at a specified device. The rule management element 110 may monitor for satisfaction of the conditions of the rule 120 and in response to satisfaction of all conditions relating to the rule 120 the rule management element 110 may control services or operations of the second device 72 as specified according to actions defined in the rule 120. In an exemplary embodiment, the conditions are context related conditions.
It should be noted that the first device 70 may establish and manage a plurality of rules, which may be associated with the second device 72 or other devices. As such, the rule 120 may include at least one condition and an action which is to be taken in response to satisfaction of the rule. It should be noted that the rule is satisfied when conditions necessary for satisfaction of the rule are met or satisfied. In this regard, the rule 120 may be stated in an IF/THEN format. In other words, the rule 120 may be stated such that the user interface provides the user with an IF field or fields for entry of a condition or conditions which, if met or satisfied, will trigger a corresponding action or actions defined in a THEN field. For example, in a simple rule, the first device 70 may be used to establish a rule that IF Joe is calling (i.e., the condition) THEN send an SMS message to Joe stating “Hi Joe” (i.e., the action). The rule 120 may be made more complex by adding additional conditions, or additional actions. For example, temporal conditions or contextual conditions may be added, or Boolean operators may be inserted between each of multiple conditions. In this regard, the Boolean operators may be simple operators such as AND and OR, or they may be more complex such as XOR and XNOR. For example, the exemplary rule above may be modified such that IF Joe is calling on a Monday OR IF Joe is calling on a Tuesday, THEN send Joe and SMS message stating “Hi Joe”. As stated above, rules involving contextual conditions may also be defined. The context engines 86 and 106 may be capable of monitoring context related information for their respective devices. For example, the context engines 86 and 106 may be capable of determining when other devices, buildings, or individuals are in proximity to their respective devices, an operational mode of their respective devices, a location their respective devices, etc. Accordingly, when the context engines 86 and 106 determine that a particular context condition is satisfied, satisfaction of the context condition may be indicated with respect to each rule having the particular context condition.
In one embodiment, the user interface may include conditions listed on one side and actions listed on the opposite side of the display. In this regard, the user interface may include a portion in which the current rule is displayed in IF/THEN format, and a portion of the display in which a section for modifying or defining conditions related to the rule is displayed, and another portion of the display in which a section for modifying or defining actions related to the rule are displayed. The section for modifying or defining conditions may include a menu item or other object, the selection of which will enable the user to define an additional condition and select a corresponding Boolean operation to be performed with respect to the additional condition. Accordingly, the rule 120 or a plurality of rules, may be defined for the second device 72 at the first device 70 which includes the relatively robust user interface 114.
It should be noted that although this exemplary embodiment has been described in terms of establishing a rule at the first device 70 for monitoring and, in response to satisfaction of conditions associated with the rule, action at the second device 72, this is merely a simple example of a use case associated with an embodiment of the present invention. In more complex examples, embodiments of the present invention may be further capable of, for example, defining a rule at the first device 70, monitoring conditions at the second device 72, and executing an event at a third device which may be one of the mobile terminals 10 listed in
In another exemplary embodiment, one or more home appliances could be placed in communication with the second device 72. In this regard, sensors of the one or more home appliances may communicate with the second device 72 while the first device 70 was previously used to manage rules and actions related to how the sensory information is to be interpreted, and thereafter how instructions are to be communicated to the home appliance. In such an example, a sensor might continuously provide some information, e.g. temperature, to the second device 72 locally. The second device 72 may then make an intelligent decision about the received sensory data and trigger some action on the home appliance. In this regard, the intelligent decision made by the second device 72 may have been predefined at the first device 70, which was used in this example to define the triggering and sensation process in a user-friendly manner.
In this regard, it should be noted that devices may share condition related information 130 via the communication connection 74 such that conditions related to a particular rule may include conditions sensed at or determined relative to a combination of devices. For example, a rule could state that IF the second device 72 is greater than two meters from the first device 70, THEN lock the screen of the first device 70. Another example may be, IF a voice over IP (VoIP) connection is set up on the first device 70 AND the second device 72 is within two meters of the first device 70, THEN route voice input/output of the VoIP connection through a microphone/speaker of the second device 72. In such a situation, the second device 72 may have the rule created at the first device 70 and communicated to the second device 72 via the communication connection 74. After receiving the rule, the context engine 106 of the second device may monitor for proximity information and communicate satisfaction of either of the proximity related conditions above (i.e., whether the second device 72 is greater or less than two meters from the first device 70) to the first device 70 via condition related information 130 transmitted over the communication connection 74. The first device 70, which may also have the rule, may then conduct the respective actions associated with satisfaction of either of the rules.
It should be noted that the communication channel 74 may also be used for the sharing of e.g. objects, programs, applications, resources, rules between devices. For example, it is clear from the description above that the first device 70, which has created the rule 120 in the present example, may share the rule 120 with the second device 72. However, it should also be understood that the second device 72 may share the rule 120 with other devices in a similar fashion. Furthermore, it should be noted that although the rule 120 may be created at the first device 70, the second device 72 or any other device that receives the rule 120 may modify the rule. In this regard, for example, the relatively limited user interface 116 of the second device 72 may be utilized to modify fields of the rule 120 using resources accessible to the second device 72. The relatively limited user interface 116 may be configured such that a field corresponding to each element of the rule 120 (i.e., each condition and action) may be presented with a list of options or pre-typed entries that may be selected by the user of the second device 72. Alternatively, the user could enter text into the field manually. The list of options may be provided, for example, from a contact list, address book or phonebook of the second device 72. Alternatively, the list of options may be provided from conditional information related to other rules. For example, if a rules states that IF Joe is calling, THEN send an SMS message to Joe stating “Hi Joe”, and the second device 72 receives the rule from the first device 70, the second device 72 may use the rule management element 110 to review the rule and modify the rule if desired.
In an exemplary embodiment in which the first and second devices 70 and 72 are both mobile terminals used by separate individuals, it should be understood that the user of the second device 72 can request a copy of a rule or object (such as the preceding rule described above) from the user of the first device 70. The user of the first device 70 may then communicate the rule to the second device 72 via the communication connection 74. Upon receiving the rule, the rule may be stored at the second device 72. The user of the second device 72 may modify the rule as desired using the rule management element 110. For example, the rule may be selected and displayed at the second device 72 for modification. In this regard, due to the limited capabilities of the user interface of the second device 72, it may be desirable to only display one condition at a time to enable the user of the second device 72 to modify each condition separately. Additionally, an option to delete or add new conditions with associated Boolean logic may also be provided. If the user of the second device 72 desires to simply change the condition such that the rule applies to another individual, the user may select the field in which the name “Joe” appears (i.e., for the condition “IF Joe is calling”), and a list of names may be provided that can be substituted for Joe. The list of names may come from a contact list of the second device 72. The user may then select one of the names from the list, or alternatively add a new name and corresponding contact information, and either save the rule as an entirely new rule or in save the rule as a replacement of the previous rule.
The rule management elements 88 and 110 may also be capable of providing a listing of all rules for display at their respective devices. For example, the rule management element 110 of the second device 72 may enable the second device 72 to display a listing of all rules stored at the second device 72. The listing may be displayed in any suitable order and rules of the listing may be viewed by scrolling through the listing or any other suitable means. In one exemplary embodiment, the listing may be organized in order of most commonly executed rules, or in order of the most recently executed rules.
As stated above, the rule 120 may specify a particular action to be performed in response to the rule being satisfied in that each necessary condition of a particular rule is met. In other words, when all of the required conditions of the particular rule have been satisfied, the rule is satisfied and will execute or “fire”. The term “necessary” or “required” condition is meant to refer to conditions which, if met, will trigger execution of the rule in accordance with, for example, the Boolean operations used in defining the rule. For example, if two separate conditions are linked by an AND in defining conditions for the rule, then it is “necessary” that both conditions be met in order for the rule to be satisfied and fire. However, if two separate conditions are linked by an OR in defining conditions for the rule, then it is only “necessary” that one of the two conditions be met in order for the rule to be satisfied and fire. As such, herein wherever it is stated that all conditions are met with respect to a rule, it should be understood that all “necessary” conditions are met to satisfy the rule.
In an exemplary embodiment, the rule management elements 88 and 110 may be configured to provide the latest fired rule for display at the first and second devices 70 and 72, respectively. For example, an edge portion of the display of the respective device may be utilized to display a currently firing rule or most recently fired rule. Accordingly, for example, if a user is in a meeting and receives a call that is sent to voice mail automatically as the result of the operation of a rule, the user may be notified that the rule fired, and thus that a voice mail message is likely waiting for the user. In another embodiment, rules that are active (i.e., rules that currently have at least one condition, but not all conditions satisfied) may be displayed along with firing rules in a first format which displays each element of the rule, while inactive rules (i.e., rules that currently have no conditions satisfied) are displayed in a condensed form such as, for example, only listing the action and not the conditions associated with the rule.
Since, for example, the first device 70 is capable of authoring rules for use at the second device 72, it may be desirable for the first device 70 to be aware of the capabilities of the second device 72 in order to ensure that rules can in fact be executed as contemplated when the rule is authored. For example, if the rule which is authored at the first device 70 defines an action of sending an SMS message from the second device 72 in response to a particular condition being satisfied as determined at the second device 72, then it would be desirable for the first device 70 to have the ability to ascertain whether the capabilities of the second device 72 are sufficient to support sending the SMS message. In a conventional communication connection, it may be possible to access files of one device at another device. However, the communication framework 80 and 102 of embodiments of the present invention is configured to enable, for example, the first device 70 to access all phone resources of the second device 72. Thus, for example, the capabilities of the second device 72 may be extended to the user interface of the first device 70 via the seamless connection. Thus, the first device 70 can determine capabilities of the second device 72 such as whether the second device 72 is capable of sending an SMS message, the battery status of the second device 72, which numbers have called the second device 72, etc. by accessing corresponding resources at the second device 72. Since security concerns may exist between different users, security measures may be installed to limit access for different users based on security settings that each user can control. However, if the first and second devices 70 and 72 belong to the same user, security issues may be less concerning. Accordingly, for example, the first device 70 may be in communication with the second device 72 via the communication connection 74 which may be an IP connection. As such, when the user is authoring a rule at the first device 70 including a particular action, the first device 70 may determine, via the IP connection, whether the second device 72 is capable of performing the particular action.
The seamless connection via the communication connection 74 may also enable the first device 70 to cross trigger an action to be performed at the second device 72 that is specified in a rule of the first device 70. As stated above, the capabilities of the second device 72 may be extended to the first device 70 via the seamless connection. Thus, in practice, via the ability to access resources at the second device 72, the first device 70 may trigger actions to be performed at the second device 72 or vice versa. In other words, in an exemplary embodiment, the first device 70 may be used to author e.g. a rule that is communicated to the second device 72. The second device 72 may monitor conditions and when it is determined that the rule has been satisfied the second device 72 may perform an operation which could include performing the action specified in the rule at the second device 72, triggering performance of the action specified in the rule at the first device 70 or another device, communicating satisfaction of the condition to the first device 70 or another device, or a combination of the preceding.
Although the preceding example has been described in terms of the first device 70 having an open communication established with the second device 72 via the communication connection 74 such that during authoring of a rule, the first device 70 may determine whether the second device 72 can perform a particular action defined in the rule, it is not necessary for open communication to exist during rule authoring. For example, the rule 120 could be authored at the first device 70 while the first device 70 is not in communication with the second device 72. At some later time, the communication connection 74 may be established between the first and second devices 70 and 72 via corresponding communication elements 82 and 108, respectively. When the communication connection 74 is established, the first device 70 may determine the capabilities of the second device 72 with respect to the rule 120 prior to communicating the rule 120 to the second device 72. In this way, the second device 72 may be prevented from consuming resources for storing a rule and monitoring condition satisfaction for a rule that cannot be executed when the conditions are satisfied.
It should be noted, however, that a determination regarding the capabilities of the second device 72 is not required. Furthermore, the first device 70 may be aware of certain capabilities of the second device 72 based on past communications with the second device 72. Accordingly, for example, the first device 70 may communicate a rule to the second device 72 in which the rule includes an action of sending an SMS message without determining the capabilities of the second device 72 if the first device 70 has previously received an SMS message from the second device 72 or if the first device 70 has previously sent rules including actions of sending SMS messages in the past. However, if a rule is communicated to the second device 72 and the second device is incapable of performing the rule or has another rule that operates to conflict with the rule, the second device 72 may be notified of a failure to execute a particular rule and corresponding reasons for the failure. As such, the second device 72 may be employed to modify the rule, the rule may automatically be deleted, or the rule could be returned to the first device 70 with an indication as to why the rule failed to execute.
In an exemplary embodiment, the seamless communication connection 74 provides automatic validation that that, for example, the second device 72 is capable of providing the desired response with regard to a particular condition, rule, action, application, object, etc. In this regard, since the first device 70 can access all of the files, folders, capabilities, applications, etc. of the second device 72, the first device 70 can automatically check to determine the validity of a particular condition, rule, action, etc. that is being defined at the first device 70 for implementation at the second device 72. As such, in the context of rule definition, the first device 70 can immediately check, based on the second device's capabilities 72 whether a rule being defined for the second device 72 is actually valid or correct both semantically and syntactically. Additionally, since the first device 70 can determine the capabilities of the second device 72 automatically and seamlessly via the communication connection 74, the processing element 76 of the first device 70 may dynamically alter the possible choices for making rules for implementation at the second device 72 based on determined capabilities of the second device 72. For example, if a particular rule is desired to be defined at the first device 70 which states that “IF Joe calls AND my phone (i.e., the second device 72) is in silent mode, THEN send Joe an ‘I am busy’ SMS”, then the first device 70 could, during rule definition, determine the capabilities and contents of the second device 72 and provide corresponding information as options for rule generation. Thus, the first device 70 may access the contact list of the second device 72 and, if Joe is in the contact list, then Joe would be provided as an option for selection of the caller whose call may trigger execution of the action to be defined in the rule. Additionally, the first device 70 can automatically determine that the second device 72 has a silent mode and provide the situation where the second device 72 is in the silent mode as an option for selection to define an additional condition for further defining the rule. Finally, the first device 70 may automatically determine that the second device 72 has the ability to send SMS messages and therefore provide sending an SMS as an option for defining the action to be performed in the event of rule satisfaction.
As a result, cross triggering and detection of platform dependent resources, objects, programs, features, actions and events may be accomplished via a seamless connection permitting one device to establish rules for another device.
Accordingly, blocks or steps of the flowcharts support combinations of means for performing the specified functions, combinations of steps for performing the specified functions and program instruction means for performing the specified functions. It will also be understood that one or more blocks or steps of the flowcharts, and combinations of blocks or steps in the flowcharts, can be implemented by special purpose hardware-based computer systems which perform the specified functions or steps, or combinations of special purpose hardware and computer instructions.
In this regard, one embodiment of a method for providing cross triggering and detection of platform related resources, actions and events includes establishing, at a host device, a seamless communication connection with an electronic device at operation 200. The seamless communication connection provides the electronic device with access to all resources of the host device. The seamless communication connection could be a proximity based wireless connection such as, for example, WLAN, Bluetooth, UWB, etc., or a cable based connection such as USB, or any cellular communication connection such as, for example, GPRS, 3G, etc. At operation 210, an instruction is received via the seamless communication connection. The instruction defines an operation to be performed in response to a particular stimulus. In an exemplary embodiment operation 210 may include receiving a rule comprising at least one context related condition and corresponding action to be performed in response to satisfaction of the rule. In this regard, context related information may be monitored to determine whether the rule or corresponding conditions associated with the rule have been satisfied and the stimulus could be satisfaction of the rule or satisfaction of the at least one context related condition. The rule may be received subsequent to a verification that the action associated with the rule is capable of execution. The rule may either be modified or shared with another device. The operation may be performed in response to the stimulus at operation 220. The operation may include performing the action specified in the rule if the rule is satisfied, triggering performance of the action to be specified at another device if the rule is satisfied, or communicating condition related information indicating that the at least one context related condition has been satisfied to another device. At optional operation 230, either a currently firing rule or a list of rules may be displayed. The list of rules may be arranged according to frequency of operation of the rules, likelihood of operation of the rules (which may be based on a percentage of conditions currently met), or time of execution of the rules.
The above described functions may be carried out in many ways. For example, any suitable means for carrying out each of the functions described above may be employed to carry out the invention. In one embodiment, all or a portion of the elements of the invention generally operate under control of a computer program product. The computer program product for performing the methods of embodiments of the invention includes a computer-readable storage medium, such as the non-volatile storage medium, and computer-readable program code portions, such as a series of computer instructions, embodied in the computer-readable storage medium.
Many modifications and other embodiments of the inventions set forth herein will come to mind to one skilled in the art to which these inventions pertain having the benefit of the teachings presented in the foregoing descriptions and the associated drawings. Therefore, it is to be understood that the inventions are not to be limited to the specific embodiments disclosed with the exemplary case of context rule management and that modifications and other embodiments are intended to be included within the scope of the appended claims. Although specific terms are employed herein, they are used in a generic and descriptive sense only and not for purposes of limitation.