Connectivity state optimization to devices in a mobile environment

A method includes establishing, by a processing device of a first device, a first connection with a second device. The first connection including a first connection type. The method includes detecting a network change event. The network change event including a change in connection status of at least one of the first connection type or a second connection type. The method includes determining an available connection type having a highest rank responsive to detecting the network change event. In response to a determination that the available connection type having the highest rank is the second connection type or a third connection type, the method includes establishing a second connection with the second device. The second connection including the available connection type having the highest rank. The method includes communicating with the second device using the available connection type having the highest rank via the second connection.

BACKGROUND

There are numerous ways to connect various devices with embedded systems to computing devices. For example, a device with an embedded system (e.g., smart appliance) may connect to a computing device (e.g., smartphone) directly via a local area network (LAN), Bluetooth, ZigBee, or the like. Also, the device with an embedded system may connect to the computing device indirectly via a wide area network (WAN) service available in a cloud-based environment. Oftentimes, once the connection is established between the devices with embedded systems and the computing devices, the connection does not change to a different connection. However, some of the connections established between the devices may include one or more drawbacks related to latency, bandwidth, security, and so forth.

DESCRIPTION OF EXAMPLE EMBODIMENTS

Embodiments are directed to automatically identifying the optimal means to connect a computing device to a device having an embedded system and establishing a connection using the identified means. In some embodiments, the computing device may be a mobile device (e.g., smartphone) and the connection to the device may be made in a mobile environment (e.g., may be a wireless connection). The computing device may include a remote control application and a device manager application. The remote control application may be used to monitor and/or control the device from the computing device. An instance of the remote control application associated with the device may be included in the device manager application. The device manager application may generate a virtual representation of each device to which the computing device is connected. The virtual representation may access various device data and/or operations included in the remote control application for the device. The device manager application may use the virtual representation of the device to automatically control which connection is established and used for communication between the computing device and the device.

In some embodiments, the device manager application running on the computing device may dynamically establish and use a connection with the device having an embedded system where the connection includes an available connection type having a highest rank. The device manager application is capable of detecting network change events for each available connection type for the device connected to the computing device. A network change event may refer to a change in connection status of a connection type for the connected device. The connection types may include a local area network (LAN) session, a wide area network (WAN) accessible service (e.g., a web service or “cloud” service), a cellular network, Bluetooth®, Zigbee®, or the like. Once a network change event is detected, the device manager application may determine an available connection type having a highest rank. The device manager application may establish a new connection with the device where the new connection has the available connection type having the highest rank. Alternatively, if the connection type having the highest rank corresponds to a current connection, then the current connection may be maintained.

It should be understood that the device manager application may be managing the connections between the computing device and numerous devices each having different connection types independently from each other. Further, there may be numerous (e.g., 2, 3, 4, 5, 6, etc.) available connection types for each device at certain times. Accordingly, in some embodiments, a ranked list of connection types may be maintained by the device manager application for each device. The ranked list may be used when determining which connection type to select to establish a new connection to the devices in response to network change event indicating the numerous connection types are available.

To illustrate, the computing device may be a smartphone included on a user's person (e.g., pocket) and may move out of range of a LAN that is being used to connect to the device (e.g., an appliance). The device manager application may receive one or more network change events indicating that the LAN is no longer available but a WAN accessible service may be available. The device manager application may inspect the ranked list to determine that the WAN accessible service has a highest rank of available connection types and may automatically establish a connection with the device via the WAN accessible service.

When the smartphone enters range of the LAN again, the device manager application may detect one or more network change events that indicate that the LAN is available and the WAN accessible service is also available. The device manager application may inspect the ranked list and determine that the LAN has the highest rank and automatically connect with the device via the LAN. It should be understood that the same techniques may be used when the device with the embedded system is moved. For example, a wearable, such as a smartwatch, may leave range of a LAN and the smartphone may detect one or more network change events that indicate that the LAN is unavailable and a Bluetooth connection type is available. In such a case, the smartphone may establish a connection to the smartwatch using the Bluetooth connection type if it is the highest ranked available connection type.

Some connection types may be ranked higher than other options due to one or more characteristic (e.g., latency, bandwidth, security, etc.). For example, a direct LAN connection may have a high ranking because it may provide reduced latency between receiving user commands at the remote control application and implementing those commands by the device. An indirect connection via the WAN accessible service may have a ranking lower than the direct LAN because the WAN accessible service is not a direct connection type. Accordingly, the automatic identification of an optimal available connection type in view of network change events and establishment of the identified connection type enhances a user experience, minimizes latency, maximizes security, and so on.

Referring now to the figures,FIG. 1is a block diagram depicting an example network architecture100including remotely accessible embedded systems and computing devices that interact with the embedded systems. The network architecture100includes multiple devices135,140,145and computing devices105-110connected to a local area network (LAN)165. The devices135-145are devices with embedded systems150-155,160, and may include, for example, electrical appliances such as refrigerators, ovens, washers, driers, dishwashers, thermostats, alarms, air conditioners, televisions, radios, receivers, amplifiers, and so forth. The devices135-145may also include consumer devices such as digital watches, music players, game consoles, digital cameras, printers, and so forth. Other examples of devices135-145include stationary devices such as HVAC systems, traffic lights, factory controllers, signs, electronic billboards, sprinkler systems, and irrigation control systems, as well as medical devices. Devices135-145may also be any other type of device that includes an embedded system150,155,160.

An embedded system150-160is a class of computing device that is embedded into another device135-145as one component of the device135-145. The device135-145typically also includes other hardware, electrical and/or mechanical components that may interface with the embedded system. Embedded systems150-160are typically configured to handle a particular task or set of tasks, for which the embedded systems150-160may be optimized. Accordingly, the embedded systems150-160may have a minimal cost and size as compared to general computing devices.

The embedded systems150-160may each include a communication module (not shown) that enables the embedded system150-160(and thus the device135-145) to connect to the LAN165. The communication module may be configured to manage security, manage sessions, manage communications with external devices, and so forth. In one embodiment, the communication module is configured to communicate using WiFi®. Alternatively, the communication module may be configured to communicate using Bluetooth, Zigbee, Internet Protocol version 6 over Low power Wireless Area Networks (6LowPAN), power line communication (PLC), Ethernet (e.g., 10 Megabyte (Mb), 100 Mb and/or 1 Gigabyte (Gb) Ethernet) or other communication protocols.

The LAN165may include a router, switch, bridge or other network device (not shown) that enables communication between multiple devices (e.g., devices135-145, computing device110, computing device105, etc.) connected to the LAN165. The network device may provide wired connections to the LAN using, for example, Ethernet ports, universal serial bus (USB) ports and/or Firewire® ports. The network device may additionally provide wireless connections to the LAN using, for example, a WiFi transceiver.

Some embedded systems150may not support any of the communication types supported by the network device. For example, device135may support Zigbee, and device140may support Bluetooth. To enable such devices to connect to the LAN165, the LAN165may include a gateway device (not shown) connected to the network device via one of the connection types supported by the network device (e.g., via Ethernet or WiFi). The gateway device may additionally support other communication protocols such as Zigbee, PLC and/or Bluetooth, and may translate between supported communication protocols. Accordingly, some devices135-145may connect to the LAN through the gateway device.

The LAN165is connected to a wide area network (WAN)170. The WAN170may be a private WAN (e.g., an intranet) or a public WAN such as the Internet, or may include a combination of a private and public network. The LAN165may include a router and/or modem (e.g., a cable modem, a direct serial link (DSL) modem, a Worldwide Interoperability for Microwave Access (WiMAX®) modem, an long term evolution (LTE®) modem, etc.) that provides a connection to the WAN170.

The WAN170may include or connect to a server computing device125. The server computing device125may include a physical machine and/or a virtual machine hosted by a physical machine. The physical machine may be a rackmount server, a desktop computer, or other computing device. In one embodiment, the server computing device125includes a virtual machine managed and provided by a cloud provider system. Each virtual machine offered by a cloud service provider may be hosted on a physical machine configured as part of a cloud. Such physical machines are often located in a data center. The cloud provider system and cloud may be provided as an infrastructure as a service (IaaS) layer. One example of such a cloud is Amazon's® Elastic Compute Cloud (EC2®).

The server computing device125hosts a WAN accessible service130, which may be a web based service and/or a cloud service (e.g., a web based service hosted in a cloud computing platform). The WAN accessible service130may maintain a session (e.g., via a continuous or intermittent connection) with one or more of the embedded systems150-160. Alternatively, the WAN accessible service130may periodically establish sessions with the embedded systems150-160. Via a session with an embedded system150-160, WAN accessible service130may issue commands to the embedded system and/or receive status updates from the embedded system. The commands may be commands to change a state of one or more parameters of a device controllable by the embedded system. For example, if the embedded system is embedded in a heater or thermostat, then the commands may include commands to increase or decrease a temperature. In another example, if the embedded system is embedded in a home automation system, then the commands may include commands to turn on or off lights.

Status updates received from the embedded systems150-160may identify values or states of some or all detectable parameters of devices135-145that the embedded systems are included in. Such values or states may change based on direct user interaction with the devices. Such values or states may also change responsive to commands sent to the embedded systems150-160by the WAN accessible service130and/or by computing devices105,110. By maintaining or periodically establishing sessions with the embedded systems150-160, the WAN accessible service130may maintain up-to-date information on the states of the devices135-145.

Computing devices105,110may include portable devices such as electronic book readers, portable digital assistants, mobile phones, laptop computers, portable media players, tablet computers, cameras, video cameras, netbooks, notebooks, and the like. Computing devices105,110may also include traditionally stationary devices such as desktop computers, gaming consoles, digital video disc (DVD) players, media centers, and the like.

Computing devices105,110may connect to the embedded systems150-160via the WAN170(e.g., via the WAN accessible service130), via the LAN165, via a cellular network, via another WAN or LAN, via Bluetooth, via Zigbee, or via any suitable connection type based on what the highest ranked available connection type is at any particular point in time. The connection may change dynamically as the available connection types change in view of network change events received by the computing device105,110. For example, computing devices105,110may connect to the LAN165when they enter a proximity to the LAN165sufficient to exchange data with a network device associated with the LAN165and the LAN165is ranked as the highest available connection type. In such a case, the computing devices105,110may communicate with the devices135-145using the LAN165.

Computing devices105,110each include a remote control application115,120and a device manager application122,124. The remote control application115,120is configured to interface with and/or control one or more of the devices135-145via the devices' embedded systems150-160. In one embodiment, the computing devices105,110include separate remote control applications for each of the embedded systems150-160. Alternatively, the computing devices105,110may include a single remote control application that is capable of communicating with and controlling embedded systems150-160for multiple different devices135-145.

The device manager applications122,124may maintain an instance of each of the respective remote control application115,124for connected devices135-145. The instances may include virtual representations of the connected devices135-145. As such, the virtual representations may include certain device data and/or states of the connected devices135-145that can be manipulated by the device manager applications122,124. One parameter is a virtual connectivity state (e.g., connection) to the actual device135-145. The device manager application may change the connectivity state to the devices135-145as certain connection types (e.g., highest ranked) become available or unavailable. In one embodiment, the virtual devices are simple virtual devices that maintain statuses of supported connection types, but that fail to include other information of the devices135-145.

In one embodiment, the virtual representations of the devices135-145in the device manager applications122,124also may include numerous asynchronous receivers that are application modules each configured to listen for a different respective network change event and/or for network change events associated with a particular connection type. The computing device105may include numerous radios (e.g., cellular, LAN, Bluetooth, etc.). Based on the connection types supported by the connected devices135-145and/or the computing devices105-110, each virtual representation of the devices135-145may include a different asynchronous receiver that listens for network change events from the radios of the supported connection types.

When any network change event is received by a computing device105-110, the device manager applications122,124may determine the highest ranked connection type for connecting to a device145-145. This may include determining whether the connection type included in the network change event is or was the highest ranked available connection type for that device135-145. The device manager applications122,124may maintain a ranked list of connection types for each device135-145and may identify the available connection types in the ranked list. In some embodiments, the ranked list of connection types includes a preconfigured ranking of a LAN having a highest rank, a Bluetooth connection having a second highest rank, a WAN connection (e.g., web socket, HTTP) to the WAN accessible service130having a third highest ranking, and a cellular connection having a fourth highest rank. It should be understood that the connection types may be ranked in various different orders.

If the connection type included in the network change event matches the highest ranked available connection type in the ranked list and the network change event was an indication of the availability of a connection type, the device manager application122,124may establish a connection with a device using the highest ranked available connection type that became available. If the connection type included in the network change event is not the highest ranked available connection type, the device manager application122,124may maintain the current connection with the device. If the connection type included in the network change event matches the highest ranked available connection type in the ranked list and the network change event was an indication of the loss of availability of a connection type, the device manager application122,124may establish a connection with a device using the next highest ranked available connection type since the connection type that was previously ranked the highest became unavailable.

In some instances, the computing devices105,110may select to connect to the embedded systems150-160via the WAN170when it is the highest ranked available connection. While computing devices105,110are connected to WAN170, the device manager application122,124may establish a session with the WAN accessible service130for each connected device135-145(e.g., via the virtual representation of the devices). The WAN accessible service130may provide an interface for indirectly controlling and monitoring the devices135-140using the remote control application115and120. If a user desires to change a state of a device, the user may issue a command via the remote control application, and that command may be sent to the WAN accessible service130. The WAN accessible service130may then forward the command on to the appropriate embedded system. Additionally, when the WAN accessible service130received updated state information for a device from an embedded system, the WAN accessible service130may forward the state information on to the remote control application. This may enable users to connect to and control the devices135-145from anywhere they have access to the Internet.

When a computing device105,110or the devices135-145enters a range of a particular connection type (e.g., LAN165), the device manager applications122,124may detect one or more network change events including the availability of that particular connection type. The device manager applications122,124may determine the highest ranked available connection type and determine whether the highest ranked available connection type is the same as the connection type included in the network change events. If the connection types match, the device manager application122,124may establish a new connection to one or more embedded systems150-160using the particular connection type that became available. In some embodiments, the computing device105,110may maintain a WAN connection while also being connected to the embedded systems150-160via another connection type (e.g., via the LAN165, Bluetooth, Zigbee, cellular network, etc.). Thus, in case the other connection fails, the computing devices105,110may maintain communication via the WAN connection. Further, while the computing device105,110is connected via the other connection type165, it may maintain a session with, and control, one or more embedded systems150-160even in the absence of a connection to WAN170(e.g., if LAN165loses a broadband Internet connection). Computing devices105,110may also maintain multiple connections using other combinations of connection types (e.g., Bluetooth and LAN, Zigbee and LAN, etc.).

In an example, computing device105is shown as originally being connected to WAN170, and then moving108to an area in which it can connect to LAN165. The device manager application122may detect a network change event indicating that the LAN165is an available connection type for one or more of the devices135-145. Responsive to the device manager application122determining that the LAN165is the highest ranked available connection type for the one or more devices135-145, the device manager application122may establish a connection to the devices135-145via the LAN165even if the computing device105is already connected to the devices via the WAN170. Once a direct LAN session is established between device manager application122and an embedded system, remote control application115may send commands directly to the embedded system and receive status updates directly from the embedded system without using the WAN accessible service130as an intermediary. Such direct connection provides a low latency (e.g., near instantaneous) communication between the remote control application115and the embedded systems150-160. Accordingly, the embedded system may respond to and execute user commands without any user perceptible delay.

When a computing device105,110becomes disconnected from the LAN165, the device manager application122,124may receive one or more network change events. For example, the network change events may indicate that the LAN165is no longer available. The device manager application122,124may determine a new highest ranked available connection type (e.g., the WAN170). The device manager application122,124may automatically establish a connection with the embedded systems150-160via new highest ranked connection type (e.g., via the WAN170). For example, if the computing device is a mobile phone, then the computing device may connect to the LAN165using a WiFi radio. Once the computing device goes out of range of the LAN165, the computing device may connect to WAN170and WAN accessible service130through a connection with a wireless carrier system (e.g., though a global system for mobile communications (GSM), code division multiple access (CDMA), wideband code division multiple access (WCDMA), time division multiple access (TDMA), universal mobile telecommunications system (UMTS), long term evolution (LTE), worldwide interoperability for microwave access (WiMAX) or other wireless communication protocol connection). Accordingly, the device manager application122may automatically select an optimal connection type for communicating with the embedded systems150-160based on network change events and the highest ranked available connection types, and then establish an appropriate session for the determined connection type. Such connection establishment and transition between connections and sessions may be performed automatically (without user interaction) by the device manager application122,124, and may be transparent to the user and/or the remote control applications115,120.

FIG. 2Ais a block diagram of an example computing device205having a remote control application210and a device manager application215, in accordance with one embodiment. The computing device may include any of the aforementioned types of computing devices, and in one embodiment corresponds to a computing device105,110ofFIG. 1. In one embodiment, the computing device205includes a network adapter220, a processing device225, a bus230, and a memory235. The network adapter220, the processing device225, and the memory235may be communicatively coupled via the bus230. The memory235may store data and computer instructions that, when executed by the processing device225, cause the processing device225to perform one or more operations. The computing device205may also include numerous other components that are not shown herein. Examples of such additional components may include a display, a power supply, input/output ports, light emitting diodes (LEDs), fuses, digital to analog (D/A) converters, analog to digital (A/D) converters, field programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), and so on.

The processing device may be any type of processing device discussed herein (e.g., with reference toFIG. 7). The memory235may include random access memory (RAM), read only memory (ROM), one time programmable (OTP) ROM, Flash (e.g., NOR Flash), or other types of memory. The memory235may additionally include a device state for the devices associated with the remote control application210. The device state may include a present device state, historical device state, and/or changes made to the device state over a particular period.

The network adapter220may be a wired network adapter (e.g., an Ethernet adapter) or a wireless network adapter (e.g., a WiFi adapter or other wireless local area network (WLAN) adapter). Network adapter220may also be configured to provide connection to a network or other devices using Zigbee, PLC, Bluetooth, 6LowPAN, or other communication protocols. Network adapter220may receive notifications and other messages from a WAN accessible service and/or remote control applications. Network adapter220may additionally send outgoing messages to the WAN accessible service and/or to remote control applications.

The network adapter220may include one or more radios240. Additionally or alternatively, computing device205may include multiple different network adapters, where each network adapter220supports a particular connection type (or multiple connection types). There may be a separate radio for each type of connection type that is supported by the computing device205. For example, the radios240may include a Bluetooth radio, a cellular radio, a WiFi radio, a WAN radio, a Zigbee radio, or any suitable radio for the connection types supported by the computing device205. Each radio may receive different messages formatted according to a communication protocol of the connection type associated with the respective radios. The messages may be or include network change events. As discussed below, the different messages may be parsed by the device manager application215to identify a connection type of the network change event. Alternatively, the connection type may be known a priori based on the network adapter from which the message was received, and the known connection type and/or network adapter220may be used to determine the parsing rules to parse the message.

The remote control application210and the device manager application215may be a program, plug-in, or library implemented by computer instructions stored in the memory235. The processing device225may execute the remote control application210and the device manager application215. The remote control application210and the device manager application215may be programmed to run on various operating systems, such as Windows® operating systems, Unix® operating systems, iOS® operating systems, Android® operating systems and Java® operating systems to name a few. The remote control application210and/or the device manager application215may also be configured as firmware, or as hardware, or as some combination of software, firmware and/or hardware.

In one embodiment, the remote control application210and/or the device manager application215may include a graphical user interface (GUI)245,250. The GUI245of the remote control application210may enable users to interact with and control connected devices in an intuitive and user-friendly manner. The GUI245of the remote control application210may provide a collection of graphical icons, visual indicators, buttons, toggles, sliders, and so forth that represent states and values of different parameters for the devices as well as controls for changing those states and values. A user may interact with the GUI245to cause the remote control application210to generate notifications, commands, property updates and other messages for the devices represented in the GUI245. The GUI250of the device manager application215may enable a user to configure the connection types for certain devices and/or to rank connection types. Further, the GUI250of the device manager application215may display each device that is connected to the computing device205and the current connection type(s) used in the connection(s) with each of the devices.

The remote control application210may also have access to device data, which may include a device ID for a device that the remote control application210is registered with, a last known IP address of the device and a last known device state of the device. In one embodiment, the device ID includes a media access control (MAC) address of the embedded system. Alternatively, the device ID may be a unique identifier assigned to the embedded system (or to a communication module in the embedded system) that is separate from the MAC address.

When the remote control application210is logged into a user account that is registered with a device including an embedded system, a virtual representation of the device255may be generated by the device manager application215. The virtual representation of the device255may include the device data about the connected devices that is accessible to the remote control application210. Additionally, or alternatively, the virtual representation of the device255may include one or more connections260to the device associated with the virtual representation. Each of the one or more connections260may include a connection type indicator265. The connection type indicators may indicate for a particular connection type whether that connection type is available or unavailable for connection to the device.

The virtual representation of the device255may also include one or more receivers270. The receiver270may be asynchronous in that it just detects incoming messages. Each receiver270included in the virtual representation of the device255may be configured to listen for a particular network change event received via the different radios240. That is, there may be a separate receiver270setup to listen for network change events for each connection type supported by the connected device.

The device manager application215may also include a connection selector275that selects a particular connection type and establishes a connection260having the connection type with the connected device via the virtual representation of the device255. In one embodiment, the receiver270may detect a network change event received by the radio240, and the connection selector275may identify an available connection type having a highest rank in a list of connection types280. Then the connection selector275may establish a connection260with the device where the connection260includes the available connection type having the highest rank. The computing device205may use the appropriate network adapter220to communicate with the device using the selected connection type.

The receivers270may detect network change events for different connection types as the computing device205running the device manager application215changes locations or the device connected to the computing device205changes locations. Network change events may also occur, for example, if a network outage occurs for a LAN or WAN, if a particular radio240of the computing device205is turned off, if a streaming service becomes unavailable, if another WAN accessible service becomes unavailable, and so on. For example, if a LAN connection type has been selected for an established connection260and a better connection type (e.g., Bluetooth) becomes available, the receivers270may receive one or more network change events indicating such. The connection selector275may determine that the better connection type associated with the network change event is now the highest ranked available connection type in the list of connection types280and establish a new connection with the better connection type.

If a LAN connection type is selected for communication with a device by the connection selector275, the device manager application215establishes a direct LAN connection and session with the embedded system of the device. If a WAN connection type has been selected for communication with a device by the connection selector275, a connection260to a WAN accessible service may be established. The computing device205may provide credentials of a user and/or of the remote control application210to the WAN accessible service. Responsive to receiving the proper credentials, the WAN accessible service may establish a session with the device manager application215. In one embodiment, secure sockets layer (SSL) or other security protocols are used for the secure session. Once the session is established, the WAN accessible service may provide remote control application210with an updated IP address and/or device state of the device.

The device manager application215may have its own hypertext transfer protocol (HTTP) session and may receive updates for multiple devices (e.g., every device owned by a user). The HTTP session may be a particular connection type (e.g., that provides a stream of information). Further, if one remote control application210is controlling two devices, for example, then the device manager application215may include two different receivers270for a particular connection type (e.g., LAN) if the devices are of a different type. If the devices are of the same type, then a single receiver270may be instantiated for both devices.

FIG. 2Bis a block diagram of an example device manager application215. The device manager application215may be executed by a processing device of the computing device205. As discussed above, the device manager application215includes the connection selector275that selects the highest ranked available connection types in the list of connection types280for each device. Although one list of connection types280is depicted, it should be understood that a separate list of connection types280may be maintained for each different device that is connected to the computing device. The lists may include the connection types supported by the particular device ordered by ranking. For example, one device may have a ranked list of LAN as the highest ranked, Bluetooth as the next highest ranked, and WAN as the third highest ranked. Another device may have a ranked list of Zigbee as the highest ranked and LAN as the next highest ranked.

Additionally, the device manager application215includes the virtual representation of the device275. Although one virtual representation of the device275is depicted, it should be understood that a separate virtual representation may be generated and maintained for each device connected to the computing device205. The device manager application205may use the virtual representation of the device275to manage the connection260between the computing device205and the physical device represented by the virtual representation.

In one embodiment, any suitable number of receivers270A,270B,270N may be instantiated for each different connection type supported by the device. The receivers270A,270B,270N may be associated with the virtual representation of the device275. For example, receiver270A may be configured to detect network change events for a first connection type (e.g., LAN), receiver270B may be configured to detect network change events for a second connection type (e.g., WAN), and receive270N may be configured to detect network change events for an Nth connection type (e.g., Bluetooth).

The virtual representation of the device275may also include any suitable number of associated connection type indicators265A,265B,265N. The connection type indicators265A,265B,265N may indicate for a particular connection type whether that connection type is available or unavailable for connection to the device. For example, connection type indicator265A may indicate that a first connection type (e.g., LAN) is available or unavailable, indicator265B may indicate that a second connection type (e.g., WAN) is available or unavailable, and indicator265N may indicate that an Nth connection type (e.g., Zigbee) is available or unavailable. The connection type indicators265A,265B,265N may be updated dynamically based on the network change events detected by the receiver270A,270B,270N. As the connection type indicators265A,265B,265N are updated and connection types become available or unavailable, the connection selector275may inspect the list of connection types280to determine which connection type to select and establish with the device.

The device manager application215and the available connection types are transparent to the remote control application210. The remote control application210is unaware to how the computing device205is connected to the remote device. Further, the remote control application210is also not aware when existing connections are dropped and new connections with different connection types are established. In one embodiment, the remote control application210may just be aware of whether or not there is a connection to the device associated with the remote control application210.

FIGS. 3-6are flow diagrams showing various methods related to establishing a connection with an embedded system and of communicating with the embedded system. The methods may be performed by a processing logic that may comprise hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions run on a processing device to perform hardware simulation), or a combination thereof. In one embodiment, at least some operations of the methods are performed by a computing device executing a device manager application, such as device manager application215ofFIG. 2.

FIG. 3is a flow chart of an example method300of, in response to a network change event, establishing a connection to a device where the connection includes an available connection type having a highest rank. At block305, processing logic establishes a first connection with a device. The device may include an embedded system with which a connection is established. The first connection may include a first connection type (e.g., LAN, WAN, Bluetooth, Zigbee, etc.). In some embodiments, processing logic may communicate with the second device via the first connection once the first connection is established. One embodiment of generating a virtual representation of the device and instantiating receivers to manage the connection with the device is set forth below with reference toFIG. 4.

At block310, processing logic detects a network change event. The network change event includes a change in connection status of at least one of the first connection type or a second connection type (e.g., LAN, WAN, Bluetooth, Zigbee). The second connection type is different than the first connection type. The change in connection status may include the second connection type becoming available or the first connection type becoming unavailable. In some embodiments, the network change event may include a particular message format for a communication protocol associated with the connection type.

At block315, processing logic determines an available connection type having a highest rank responsive to detecting the network change event. The processing logic may use the list of connection types210that ranks the connection types supported by the connected device. It should be noted that there may be different lists for different devices maintained by the device manager application215. The processing logic may identify positions of one or more of the available connection types in the list of connection types to identify the available connection type having the highest rank. The connection types included in the list may include LAN, Bluetooth, WAN, Zigbee, cellular, a streaming service, and the like.

At block320, processing logic determines whether the available connection type having a highest rank is the same as the connection type of the current connection to a device. For example, processing logic may determine whether the included connection type in the detected network change event is the highest available connection type. If the current connection has a connection type that is the highest ranked connection type (e.g., the connection type included in the network change event is different than the available connection type having a highest rank), then at block325, processing logic maintains the first connection. Further, at block330, processing logic communicates with the device using the first connection type via the first connection.

If at block320it is determined that the current connection type is not the highest ranked available connection type (e.g., the connection type associated with the network change event is the same as the available connection type having a highest rank), then at block335, processing logic establishes a second connection with the available connection type having the highest rank with the device. For example, if the network change event indicates the availability of a connection type that has a higher rank than a connection type associated with the first connection, then the method may proceed to block335. One embodiment of handling the first connection after the second connection is established is set forth below with reference toFIG. 6. Further, at block340, processing logic communicates with the device using the available connection type having the highest rank via the second connection. One embodiment of detecting additional network change events and establishing a connection having a highest ranked available connection type is set forth below with reference toFIG. 5.

FIG. 4is a flow chart of an example method400of instantiating receivers for a virtual representation of a device. At block405, processing logic may generate a virtual representation of a connected device (e.g., of a device with an embedded system that is connection to a WAN accessible service). The virtual representation may include a set of connection type indicators. Each of the connection type indicators may indicate for a particular connection type whether that connection type is an available connection type or an unavailable connection type for connection to the device. Each connection type indicator may be associated with a different connection type. Further, the virtual representation of the connected device may include the device state and any suitable device data for the connected device. Additionally, the virtual representation of the connected device may indicate a particular connection type that is used for a current active connection with the connected device.

At block410, processing logic may instantiate one or more receivers associated with the virtual representation. Each of the receivers is associated with a connection type and is to detect network change events associated with the respective connection type. The receivers may be asynchronous receivers. The network change events may be received via the radio(s)240of the network adapter(s)220. Once instantiated, the receivers may listen to the radios until network change events are detected and may continue to listen for the lifetime of the virtual representation of the device.

At block415, processing logic detects, via the receiver, a network change event associated with the respective associated connection types. Processing logic may proceed with determining whether the connection type in the network change event is the highest ranked available connection type and may establish a connection with the highest ranked available connection type as explained above with reference toFIG. 3.

FIG. 5is a flow chart of an example method500of, in response to additional network change events that occur after an initial network change event, establishing a connection to a device where the connection includes an available connection type having a highest rank. Method500may occur during or after the first connection and/or second connection being established as explained above with reference toFIG. 3.

At block505, processing logic detects additional network change events. The receivers of the virtual representation of the device may detect the network change event associated with different connection types. Each network change event for different connection types may be sent as messages formatted for particular communication protocols associated with those particular connection types. For example, a first network change event may include a first message format (e.g., Bluetooth) and a second network change event may include a second message format (e.g., Zigbee).

Accordingly, at block510, processing logic may parse the network change events using parsing rules. For example, processing logic may parse the first network change event using a first parsing rule and may parse the second network change event using the second parsing rule. The parsing rule to use for parsing a network change event may be determined based on the receiver that receives the network change event. Each receiver may be configured to parse received network change events using a particular parsing rule associated with the connection type associated with that receiver. Thus, the data included in the network change events may be normalized even if the messages have differing formats. The network change events may be parsed to identify the connection type and/or status of that connection type included in the particular network change event. Alternatively, the connection type may be known based on the receiver that received the network change event. The parsing rule may translate the desired information from the first format to another format readable by the device manager application.

At block515, processing logic again determines an available connection type having a highest rank. The determination may be made in response to one of the receivers detecting the additional network change event. In some embodiments, the processing logic references the list of connection types for the device to determine the available connection type having the highest rank. At block520, processing logic selects the available connection type having the highest rank for connecting to the device and establishes a new connection with the available connection type having the highest rank for communicating with the device.

At block525, processing logic may hide the change of communicating with the device using the previous connection type to using the available connection type having the highest rank from a remote control application associated with the device that is executing on the device. That is, the change in connectivity is transparent to the remote control application. Such functionality may enable seamlessness of operation and enhanced user experience of the remote control application by benefiting from the highest ranked available connection type at any given point in time.

FIG. 6is a flow chart of an example method600of managing two connections to a device where the connections have different connection types. Method600may occur after a first connection having a first connection type is established by processing logic with the device as explained above with reference toFIG. 3.

Referring now toFIG. 6, at block605, processing logic determines the available connection type having a highest rank responsive to detecting a network change event. At block610, processing logic establishes a second connection with an available connection type having a highest rank with the device responsive to determining that the available connection type having the highest rank is or was the same as the connection type included in the network change event.

At block615, processing logic determines whether to maintain the first connection having the first connection type. In some instances, such as when the first connection type is the WAN, it may be desirable to maintain the first connection in cases where the second connection might fail so there is no interruption of data delivery. As such, processing logic may determine to maintain the first connection and, at block630, processing logic may block messages from the first connection. Processing logic may also block messages from being sent via the first connection. Further, at block635, processing logic receives messages from the second connection.

In some instances, it may be undesirable to maintain the first connection. As such, processing logic may determine at block615to not maintain the first connection, and at block620, processing logic terminates the first connection. Further, at block625, processing logic may receive messages from the second connection with the available connection type having the highest rank.

The computing device700may further include a network interface device708. The computing device700also may include a video display unit710(e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)), an alphanumeric input device712(e.g., a keyboard), a cursor control device714(e.g., a mouse), and a signal generation device716(e.g., a speaker).

The data storage device718may include a machine-readable storage medium (or more specifically a computer-readable storage medium)728on which is stored one or more sets of instructions722embodying any one or more of the methodologies or functions described herein. The instructions722may also reside, completely or at least partially, within the main memory704and/or within the processing device702during execution thereof by the computer system700, the main memory704and the processing device702also constituting computer-readable storage media.

The computer-readable storage medium728may also be used to store a device manager application (as described with reference toFIGS. 2A and 2B), and/or a software library containing methods that call a device manager application. While the computer-readable storage medium728is shown in an example embodiment to be a single medium, the term “computer-readable storage medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more sets of instructions. The term “computer-readable storage medium” shall also be taken to include any medium that is capable of storing or encoding a set of instructions for execution by the machine and that cause the machine to perform any one or more of the methodologies described herein. The term “computer-readable storage medium” shall accordingly be taken to include, but not be limited to, solid-state memories, and optical and magnetic media.

The modules, components and other features described herein (for example in relation toFIGS. 1, 2A, and 2B) can be implemented as discrete hardware components or integrated in the functionality of hardware components such as ASICS, FPGAs, DSPs or similar devices. In addition, the modules can be implemented as firmware or functional circuitry within hardware devices. Further, the modules can be implemented in any combination of hardware devices and software components, or only in software.