Network connected devices interconnect and communicate using a variety of different protocols. Local area networks, for example, can include devices that wirelessly connect to access points, as well as devices that connect to one another as peers.
Embodiments described herein provide a wireless device, system and method which enable wireless device discovery that includes both dynamic (e.g., real-time or current state) and static information. The information determined from the discovery process can be displayed on a user device prior to the user device connecting to the discovered device.
In some embodiments, an active process is monitored on the wireless device to obtain state information relating to the active process. Static information about the wireless device is determined. One or more discovery communications (e.g., advertisement) are generated for the wireless device using a wireless communication medium. The one or more discovery communications can include (i) a set of data items that are based on the static information, and (ii) dynamic information that is based on the state information of the active process.
In some embodiments, a system, method and device are provided to enable interaction with a wireless device on a network. One or more discovery communications are received by a user device over a wireless communication medium. The one or more discovery communications can be communicated using a Layer 2 protocol. The one or more discovery communications can be processed to determine information included with the one or more discovery communications. The information can include an identifier of the wireless device and dynamic information about an active process of the wireless device. When the user device is not connected to the discovered wireless device, the user device displays a representation of the wireless device. The representation can include information determined from the one or more discovery communications, including the identifier of the wireless device and content that is based on the dynamic information. In response to user input, the user device connects to the wireless device using a Layer 3 protocol. When connected to the wireless device, the user device updates the representation of the wireless device to include one or more control features for controlling the wireless device using the Layer 3 protocol.
In examples described herein, reference to the Layer 2 and Layer 3 protocols is in reference to the Open System Interconnection (OSI) model.
One or more embodiments described herein provide that methods, techniques and actions performed by a computing device are performed programmatically, or as a computer-implemented method. Programmatically means through the use of code, or computer-executable instructions. A programmatically performed step may or may not be automatic.
One or more embodiments described herein may be implemented using programmatic modules or components. A programmatic module or component may include a program, a subroutine, a portion of a program, or software or a hardware component capable of performing one or more stated tasks or functions. As used herein, a module or component can exist on a hardware component independently of other modules or components. Alternatively, a module or component can be a shared element or process of other modules, programs or machines.
Furthermore, one or more embodiments described herein may be implemented through instructions that are executable by one or more processors. These instructions may be carried on a computer-readable medium. Machines shown or described with figures below provide examples of processing resources and computer-readable mediums on which instructions for implementing embodiments of the invention can be carried and/or executed. In particular, the numerous machines shown with embodiments of the invention include processor(s) and various forms of memory for holding data and instructions. Examples of computer-readable mediums include permanent memory storage devices, such as hard drives on personal computers or servers. Other examples of computer storage mediums include portable storage units, such as CD or DVD units, flash or solid state memory (such as carried on many cell phones and consumer electronic devices) and magnetic memory. Computers, terminals, network enabled devices (e.g., mobile devices such as cell phones) are all examples of machines and devices that utilize processors, memory, and instructions stored on computer-readable mediums. Additionally, embodiments may be implemented in the form of computer-programs, or a computer usable carrier medium capable of carrying such a program.
With further reference to
In one example, the user device 110 corresponds to a mobile computing device (e.g., smartphone are cellular telephony/messaging device, tablet, wearable computing device etc.) capable of (i) wireless connectivity with the access point 102 of the wireless network 50, and (ii) wireless peer-to-peer connectivity with other devices that are in sufficient proximity. In some embodiments, the user device 110 includes system level functionality for implementing wireless discovery and connectivity functions using wireless peer-to-peer connectivity. Alternatively, the user device 110 includes an application or process for implementing wireless discovery and connectivity using wireless peer-to-peer connectivity. By way of example, each of the wireless devices 120, 122, 124, 126 can correspond to a wireless-enabled appliance or dedicated device, such as a wireless speaker, audio/video playback system, lighting system, or home appliance.
In some embodiments, the user device 110 implements a first discovery process in order to identify wireless devices 120, 122, 124, 126 that are accessible over the wireless communication medium for peer-to-peer communications. The user device 110 can implement the first discovery process with each of the wireless devices 120, 122, 124, 126. Each discovery process can be implemented to include the exchange of one or more discovery communications 107 as between the user device 110 and each of the wireless device 120, 122, 124, 126. The discovery communications 107 can include discovery advertisements generated on each of the respective wireless devices 120, 122, 124, 126, and communicated to the user device using a Layer 2 protocol (e.g., Data Link protocol). Among other information, the one or more discovery communications 107 can identify the MAC address and identifier of each wireless device 120, 122, 124 and 126 to the user device 110.
According to some embodiments, the wireless devices 120, 122, 124, 126 are each configured to generate one or more discovery communications 107 that include (i) static information 117, such as a description of the device, a firmware or software version implemented on the device, a system mode implemented on the device, and/or a network connection of the device; and (ii) dynamic (e.g., real-time) state information 119 about active processes that execute on the respective devices. The dynamic state information 119 can reflect a current or real-time state of a process executing on a corresponding one of the wireless devices 120, 122, 124, 126.
Accordingly, as shown with an example of
In some embodiments, the user device 110 implements system-level processes 109 to utilize and display content corresponding to the static information 117 and the dynamic state information 119. In variations, applications or other processes that execute on the user device 110 can utilize the static information 117 and dynamic state information 119 communicated by the individual wireless devices 120, 122, 124, 126. The static information 117 and the dynamic state information 119 from a particular wireless device 120, 122, 124, 126 can be rendered on the user device 110 (e.g., via a user interface 400 of
According to some embodiments, the user device 110 can be operated to connect to individual wireless devices 120, 122, 124, 126 at the selection of, for example, a user. The connection can be accomplished using a Layer 2 protocol. Once the Layer 2 connection is made, a discovery and connection exchange 113 can be performed using a Layer 3 protocol (e.g., “Internet Protocol”). The Layer 3 protocol can correspond to a communication protocol that enables the user device 110 to receive an IP address of another device. The discovery and connection exchange 113 can be implemented by the user device 110 issuing, for example, a multicast communication to the wireless devices 120, 122, 124 and 126. The responses to the multicast communication from the individual wireless devices 120, 122, 124 and 126 can include an IP address of the respective wireless device, as well as information identifying the capability and services available from the responding wireless device 120, 122, 124 and 126. The user device 110 can automatically connect to the select wireless devices 120, 122, 124 and 126 upon performing the discovery and connection exchange 113 using the Layer 3 protocol. As a result of the discovery and connection exchange 113, the user device 110 can make a connection to one of the wireless devices 120, 122, 124, 126 that is direct (e.g., using Wi-Fi Direct), or peer-to-peer, rather than implemented through the access point 102. Additionally, once the Layer 3 connection is made, the user device 110 can process input to control aspects of the wireless device 120, 122, 124, 126. In this way, the user can view Layer 2 information (including dynamic state information 119) in order to select which of the wireless devices 120, 122, 124 and 126 that the user device 110 will connect to over Layer 3.
With reference to
Following the probe responses 123, the user device 110 can signal one or multiple (e.g., series) of service requests 125 and receive one or more discovery communications 107 that include service responses 127 from responding wireless device 120, 122, 124, 126. The service responses 127 can also be communicated using the Layer 2 protocol. As detailed below, the service responses 127 provide the user device 110 with static information 117 and/or dynamic state information 119 from the wireless device of the respective response.
In more detail, each of the wireless devices 120, 122, 124, 126 can be configured to run a programmatic monitor for an active process (“monitoring process 161”) that is executing on that device. The monitoring process 161 can generate the dynamic state information 119, which can identify an operational or execution state of the wireless device 120, 122, 124, 126. For example, in the case of a wireless speaker, the dynamic state information 119 can include information about a media playback process, including information which (i) identifies a media resource that is being played back through that speaker, including a location in the media resource where the current point of playback is at, (ii) nnetadata content, such as album art, artist, title, etc., and/or (iii) information about a next event, such as a next song that is to be played back (e.g., based on a pre-existing playlist). In another example, the wireless devices 120, 122, 124, 126 can include lights for a home lighting system, and the dynamic state information 119 can indicate a power state (e.g., luminosity level) of the light and/or a current color or hue of the individual lights.
In some embodiments, the user device 110 is configured to operate in a discovery mode, which results in continuous or repeated generation of service requests 125 to the available or discovered wireless device 120, 122, 124, 126. In turn, the wireless devices 120, 122, 124, 126 provide service responses 127 which update the dynamic state information 119 of the respective wireless device. The user device 110 can also be configured to implement functionality, such as a user interface, to display the dynamic state information 119 provided with the individual service responses 127. For example, the user device 110 can display graphic representations of each discovered wireless device 120, 122, 124 and 126. For devices that are in active use, the graphic representations can include dynamic discovery content 137 that is based on the dynamic state information 119 received from that device. The dynamic state information 119 can be indicative of a state of the active process executing on the responding wireless device.
In some embodiments, the user has the ability to select to connect with wireless devices that are identified through the discovery process. For example, the user can interact with the user device 110 based on the graphic representations of one or more of the wireless devices 120, 122, 124 and 126. The information contained in the service responses 127 of a particular one of the wireless devices 120, 122, 124 and 126 can be rendered as content on the user device 110, enabling the user to signal selection input for connecting to the device.
In response to the user selection input, the user device 110 can initiate a sequence of communications, shown as connection exchange 131, to connect to the selected wireless devices 120, 122, 124 and 126. The connection exchange 131 can result in the user device 110 and the selected wireless devices 120, 122, 124 and 126 establishing a connection under a Layer 2 protocol.
Once the Layer 2 connection is established, a Layer 3 discovery communication exchange 133 can be initiated which identifies the connected wireless devices 120, 122, 124, 126 and the capabilities or resources of the connected wireless device. This communication exchange 133 under the Layer 3 protocol can result in a connection between the user device 110 and the connected wireless device 120, 122, 124, 126. Once the Layer 3 protocol is established, the user device 110 can, for example, implement functionality to control the connected wireless device 120, 122, 124, 126.
With reference to
The state determination logic 212 can also obtain static information 209 for the wireless device 200 from a device store 209A. The static information 209 can include an identifier of the wireless device 200, such as the SSID of the device. In variations and by way of example, the static information 209 can include one or more of a description of the wireless device 200, a firmware or software version implemented on the wireless device 200, a system mode implemented on the wireless device 200, and/or a network connection of the wireless device 200.
In some variations, the media player 210 communicates the static information 209 and the operational state 211 to the system manager 220. The media player 210 can communicate the static information 209 and operational state 211 by sending an inter-process message notification 215 to the system manager 220. The media player 210 can repeatedly generate such message notifications 215 for the system manager 220, based on operational state 211 detected from the active process 208.
The system manager 220 can receive the notification messages 215 in order to generate device information 217 for communication during a wireless discovery process. The device information 217 can include or be based in part on the static information 209, including data items determined from device store 209A, as well as dynamic state information 221 as determined from the operational state 211. The system manager 220 can determine device information 217 by filtering and/or reformatting the information contained in the notification messages 215. Furthermore, the device information 217 can be repeatedly or continuously updated with the arrival of additional notification messages 215.
The wireless manager 230 can communicate one or more discovery communications 219 to other wireless devices (e.g., user device 110 of
With reference to
The controller 290 can include logic for implementing control features through the user interface 280. The controller 290 can implement features for controlling some of the interactions of the user device 250 with other discovered wireless devices. In some embodiments, controller 290 includes control discovery logic 296 that enables the user to provide input with respect to the representation of a discovered but unconnected device (e.g., wireless device discovered through direct discovery process 272). The input can result in connect control 285 triggering the discovery and connect component 270 to establish a connection with the identified wireless device.
According to some embodiments, the discovery and connect component 270 is triggered in response to user input provided through the user interface 280. The discovery and connect component 270 exchanges (via the wireless manager 260) a series of connect communications 267 with the selected wireless device under the Layer 2 protocol to establish the connection. Once the connection is established, the discovery and connect component 270 can initiate an Internet Protocol (“IP”) discover and connect process 274 in which a series of IP communications 269 are exchanged to establish the Layer 3 connection with the selected wireless device.
In some embodiments, the user interface 280 operates to display representations of (i) devices discovered using the direct discovery process 272, prior to a connection being formed to those devices, and (ii) devices that are connected to the user device 250 over either an access point or peer-to-peer connection. More specifically, the representations can include (i) identification of devices that are discovered through a Layer 2 protocol, (ii) static and dynamic information provided with the representations of the devices discovered through the Layer 2 protocol, (iii) identification of devices that are connected to the user device 250 through a Layer 3 protocol, and/or (iv) static and dynamic information provided with the representations of the devices discovered through the Layer 3 protocol. In this way, the user interface 280 displays representations of devices that are discovered or connected though different network layer protocols.
Once the Layer 3 connection is made, the controller 290 can enable the user to control aspects of the selected wireless device 120, 122, 124, 126, 200. In particular, the controller 290 can include system interface logic 292 for enabling system-level control interaction with the selected wireless device 120, 122, 124, 126, 200 through input provided onto the user device 250. For example, the system manager 220 of the wireless device 200 can include a framework for providing an interface that enables programmatic access and communications with the processes of the system manager 220. By way of example, the framework can be provided through ALLJOYN, as hosted by ALLSEEN ALLIANCE. The system-level control input 263 can be communicated to the wireless device (via wireless manager 260) using the Layer 3 connection. In an example of
The controller 290 can also include active process logic 294 for enabling control of an active process on the wireless device 120, 122, 124, 126, 200 (e.g., active process 208 of the media player 210 in
With further reference to
With reference to
The wireless device 120, 122, 124, 126, 200 determines discovery information for use with discovery communications. The discovery information can include static information for the wireless device (320). For example, the active monitoring process 261 can determine the operational state 211 of the active process. The wireless device 120, 122, 124, 126, 200 can also include a device store 209A for maintaining static information 209 about the wireless device 120, 122, 124, 126, 200. As examples, the static information 209 can include a description of the wireless device 200, a firmware or software version implemented on the wireless device 200, a system mode implemented on the wireless device 200, and/or a network connection of the wireless device 200.
The wireless device 120, 122, 124, 126, 200 can generate one or more discovery communications 219 (e.g., a discovery advertisement) that include the determined information (330). In particular, the discovery communications 219 can include data items determined from the static information 209 (332), as well dynamic state information 221 determined from monitoring active processes on that wireless device 120, 122, 124, 126, 200 (334).
The discovery communications 219 can be provided under a Layer 2 (or Data Link Layer) protocol (335). For example, the wireless device 120, 122, 124, 126, 200 may initially provide a probe response 123 (see
Still further, in some embodiments, the discovery communications 219 can be encrypted (338). For example, the wireless device 120, 122, 124, 126, 200 can include an encryption component that encrypts some or all of the static information 209 and dynamic status information 221, thereby precluding such information to be viewable to an unknown device that scans the corresponding region. The encryption can be performed using a public encryption key that is shared with the user device, so that the user device is able to receive and use (e.g., display) the information of the discovery advertisement.
With reference to
The user device 110 can use service responses 123, 127 from the identified wireless device to determine information about the discovered device (350). By way of example, the user device 110 can use an internal Wi-Fi module to scan for the wireless devices 120, 122, 124, 126, 200 that are available. The scan can generate probe requests 121 for identified devices, and the identified wireless devices 120, 122, 124, 126, 200 can then provide the probe response 123. Under the Layer 2 (or Data Link Layer) protocol, the probe response 123 provides the MAC address and identifier of each identified wireless device 120, 122, 124, 126, 200. Once the probe response 123 is received from an identified wireless device 120, 122, 124, 126, 200 the user device 110 can issue a service request 125 and receive the service response 127. The service response 127 can include additional information about the identified wireless device, including static information 209 (352) and/or dynamic status information 221 (354) provided from the discovered wireless device 120, 122, 124, 126, 200.
In some embodiments, the discovery information communicated from the wireless device 120, 122, 124, 126, 200 is encrypted, and the user device includes a decryption key to decrypt the information (358). For example, the user device may utilize a public key that is shared with the discovered device in order to decrypt the discovered information.
Still further, in some embodiments, the user device 110, 250 can display content that is based on the information determined from the discovery process. In some variations, the user device 110 can display a representation of the discovered wireless device without connecting to that device (360). In some examples, the content can include dynamic status information 221, corresponding to an operational state 211 of an active process on the discovered wireless device 120, 122, 124, 126, 200. Additionally, the content can also include static information that includes, for example, a user provided name of the wireless device, a type of the wireless device, a version of the device and/or a description of the wireless device. In this way, the discovery process can be used to display active real-time information about other devices on the wireless network 50, without the user device connecting to the discovered device.
Additionally, the use of the Layer 3 protocol enables the user device to implement additional functionality in its communications with the discovered wireless device 120, 122, 124, 126, 200. In particular, the user device 110, 250 can enable control features to control various aspects of the connected wireless device 120, 122, 124, 126, 200 (380). As described, the control features can control, for example, system-level operations of the connected device, as well as operations of an active process on that wireless device.
With reference to
In an example of
The entry 408 corresponding to the upstairs speakers represents a wireless device that is discovered, but not connected to the user device 110, 250. In particular, the discovery process for the wireless device 120, 122, 124, 126, 200 enables dynamic status information 411 to be displayed with the representation of the discovered device. In order to connect to the device, the user can interact with the user interface 400 by, for example, selecting the entry 408 (or feature provided with the entry). Upon selection, the connection to the corresponding wireless device 120, 122, 124, 126, 200 can be made. For example, as described above, the connection using the Layer 2 protocol can be made, and the discovery and connection processes of the Layer 3 protocol can be completed. Once the connection is made to the device of entry 408, additional information (e.g., information about the capabilities of the upstairs speaker) and functionality (e.g., control functionality) can be included and made active with the rendering of the entry 408 on the user interface 400.
With reference to
Some embodiments recognize instances when use of the access point 102 can be less optimal than a direct peer-to-peer wireless connection with the same device. For example, if the user device 110, 250 is to be operated to receive a large amount of data from the wireless device 120, 122, 124, 126, 200, the amount of data that would be channeled through the access point 102 can be a factor in the selection, particularly when the added data would cause congestion that would affect network performance of other devices on the wireless network 50.
In some embodiments, the user device 110, 250 can perform a scan for other devices that are in proximity and which are available for access by way of a wireless peer-to-peer connection. The scan can include sending a probe request 521 to the wireless device 120, and receiving the probe response 523 from the wireless device. The probe response 523 can provide the MAC address and identifier of the wireless device 120, 122, 124, 126, 200. The user device 110, 250 can then issue a service request 525 in order to receive the service response 527. As described with some other embodiments, the service response 527 can include various kinds of information about the responding wireless device 120, 122, 124, 126, 200, including static information 209 (e.g., descriptive information for viewing by the user) and dynamic status information 221 regarding the operational state 211 of the wireless device 200 or the active processes running on the wireless device. The user device 110 can display dynamic content 567 that is based on the discovery information (including the dynamic status information). The dynamic content 567 can display the wireless peer-to-peer discovery information of the wireless device 120, 122, 124, 126, 200 separately from the Layer 3 connection formed via the access point 102. For example, if the wireless device 120, 122, 124, 126, 200 corresponds to a wireless speaker, the user device 110, 250 can display two representations of the same speaker. A first representation can display the speaker as a connected device accessible to the access point 102. A second representation on the user interface 400 (see
A decision can be made as to whether the user device 110, 250 is to maintain a connection with the wireless device 120, 122, 124, 126, 200 through the access point 102. The decision can be made by way of programmatic logic (e.g., based on measured parameters of the network), and/or by user input (e.g., made through interaction with the user interface 515).
In an example of
According to some embodiments, the wireless peer-to-peer connection as between the user device 110, 250 and one specific wireless device 120, 200 can be maintained concurrently with the connection between the user device 110, 250 and the same wireless device 120, 200 via the access point 102. Content that characterizes both connections can be displayed separately on the user interface 515. For example, the user can switch form one connection to the other, based on preference or programming logic.
With reference to
While the wireless device 120, 200 is available through the access point, the user device 110, 250 can operate to discover the same or different devices for implementing wireless peer-to-peer connections (620). The user device 110, 250 can be used to perform a scan, resulting in the discovery of, for example, a wireless device 120, 200. The discovery of the wireless device 120, 200 can be performed via a Layer 2 protocol (e.g., Data Link protocol) (622). As described with some other examples, the discovery information can include dynamic status information, as well as static information that is descriptive of the wireless device 120, 200 or aspects thereof
The user device 110, 250 can provide the user interface 400 that displays both connected devices and those devices which are discovered but not connected (620). With the connected and discovered devices displayed on the user interface 400, a user can identify a particular wireless device 120, 200 and select the communication medium for connecting to the device (630). In some cases, the wireless device 120, 200 connected to the access point 102 can separately be discovered by the user device 110, 250 for a wireless peer-to-peer connection. For example, if the device is already connected to the access point 102, the user can alternatively establish a wireless peer-to-peer connection with the device. The information discovered and displayed about the wireless device 120, 200 on the user device 11-, 250 during the discovery process can influence or determine whether the connection to the wireless device through the access point 102 is maintained or whether the wireless peer-to-peer connection is used.
With reference to
Once the non-peer wireless device is switched to the setup mode, the non-peer device can obtain discovery information (720). Such information can be obtained from, for example, the computer accessing and writing instructions (e.g., monitoring processes) and/or information to the non-peer wireless device while the devices in the set up mode.
The non-peer wireless device can then package discovery information in a beacon message (730). Many conventional non-peer wireless devices use beacon messages during the setup mode in order to enable other devices to access and establish connections with that device. Thus, a typical inherent capability of non-peer wireless devices is to utilize beacon messages during a setup mode. According to some embodiments, the functionality of the non-peer wireless device to provide the beacon message is repurposed in order to communicate discovery information to other devices that are accessible over a wireless communication medium (e.g., user device 110, 250). Thus, for example, the non-peer wireless device may transmit a repeated beacon message that carries discovery information for the particular device.
According to some embodiments, the beacon message can be communicated as a Layer 2 advertisement. In a process similar to that described with wireless peer devices, a user device can receive the beacon message during a discovery process (740). The discovery information provided with the beacon message can be used, for example, by the receiving device in order to determine whether a connection to that device should be made. In this way, a non-peer wireless device can provide the user device 110 with detailed information in advance of the user device connecting to the non-peer wireless device.
With reference to
In some embodiments, the memory 806 may store instructions for implementing functionality (e.g., as described with an example system of
Embodiments described herein are related to the use of computer system 800 for implementing the techniques described herein. According to some embodiments, those techniques are performed by the computer system 800 in response to the processor 804 executing one or more sequences of one or more instructions contained in the memory 806. Such instructions may be read into the memory 806 from another machine-readable medium, such as the storage device 810. Execution of the sequences of instructions contained in the memory 806 causes the processor 804 to perform the process steps described herein. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions to implement embodiments described herein. Thus, embodiments described are not limited to any specific combination of hardware circuitry and software.
Although illustrative embodiments have been described in detail herein with reference to the accompanying drawings, variations to specific embodiments and details are encompassed by this disclosure. It is intended that the scope of embodiments described herein be defined by claims and their equivalents. Furthermore, it is contemplated that a particular feature described, either individually or as part of an embodiment, can be combined with other individually described features, or parts of other embodiments. Thus, absence of describing combinations should not preclude the inventor(s) from claiming rights to such combinations.
This application claims benefit of priority to Provisional U.S. Patent Application No. 62/046,890, filed Sep. 5, 2014; and to U.S. Patent Application No. 62/046,886, filed Sep. 5, 2014; both of the aforementioned priority applications being hereby incorporated by reference in their respective entirety.
Number | Date | Country | |
---|---|---|---|
62046890 | Sep 2014 | US | |
62046886 | Sep 2014 | US |