Activate peer-to-peer communication channel
By using the combination of inactive peer communication channels and infrastructure communication channels between electronic devices, the peer communication channels are activated and the peer communication channels are carried out, and the problems of low communication efficiency and high power consumption between devices are solved, achieving more efficient communication and longer battery life.
Patent Information
- Application Number
- CN202210464308.6
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2017-02-13
- Filing Date
- 2018-02-07
- Publication Date
- 2024-12-13
- Estimated Expiration
- 2038-02-07
AI Technical Summary
The prior art has problems of limited channel capacity and high power consumption in point-to-point communication between electronic devices, especially when the device is in a low power mode, it is difficult to effectively activate peer-to-peer communication channels, resulting in low communication efficiency.
Through inactive peer communication channels, such as Miracast directly connected to Wi-Fi, determine the infrastructure communication channel address of the receiving device, send magic packets to activate peer communication channels, and communicate at different addresses to improve communication Efficiency and power savings.
It realizes activation of peer-to-peer communication channels in low power mode, improves communication efficiency between electronic devices, reduces power consumption, and extends the battery life of the device.
Smart Images

Figure CN114844731B_ABST
Abstract
Description
[0001] This application is a divisional application of the invention patent application with application number 201880011553.3 and name “Activating Point-to-Point Communication Channel” filed on February 7, 2018. Background Art
[0002] Electronic devices may be designed to share information by communicating wirelessly with each other. The wireless spectrum has a limited channel capacity, and therefore electronic devices may be limited in type and type of information transmitted between electronic devices. Additionally, it may be desirable to reduce the power of electronic devices. As an example, portable electronic devices may run on batteries, and reducing the power consumption of portable electronic devices may extend the battery life of the device to give the user of the device more time to use the device between charges. Summary of the invention
[0003] Technology related to activating a peer-to-peer communication channel is disclosed. In one example of the disclosed technology, a method can be used to initiate peer-to-peer communication between a sending device and a receiving device over an inactive first communication channel. The method can include determining an address associated with a second communication channel of the receiving device. A packet addressed to the receiving device can be sent over the second communication channel to cause the receiving device to begin a sequence for activating the first communication channel. Communication can be initiated from the sending device to the receiving device over the first communication channel at a different address associated with the first communication channel. BRIEF DESCRIPTION OF THE DRAWINGS
[0004] Figure 1 is a system diagram of an example system that includes infrastructure communication channels and peer-to-peer communication channels.
[0005] Figure 2 is a system diagram illustrating components of a computing device that can communicate via a first communication channel and a second communication channel.
[0006] Figure 3 A sequence diagram of an example method of initiating a peer-to-peer communication channel and communicating data over the peer-to-peer communication channel is shown.
[0007] Figure 4 A sequence diagram illustrating an example method for initiating a peer to peer communication channel when a receiving device is in a low power mode.
[0008] Figure 5A An example of a magic packet and a response packet including an information element in a payload of the response packet is shown.
[0009] Figure 5B An example of a connection data structure is shown.
[0010] Fig. 6A A flow diagram illustrating an example of initiating a peer to peer communication channel and updating a connection data structure when a peer device is detected.
[0011] Figure 6B A flow diagram illustrating an example of initiating a peer to peer communication channel when no peer devices are detected.
[0012] Fig. 7A A flow diagram of an example of responding to a request for initiating a peer to peer communication channel while a peer receiver application is active is shown.
[0013] Figure 7B A flow diagram illustrating an example of initiating and forming a peer to peer communication channel when one of the peer devices is initially in a low power state.
[0014] Figure 8 A flow chart of an example method of initiating a peer-to-peer communication between a transmitting device and a receiving device over an inactive first communication channel is shown.
[0015] Fig. 9 is a block diagram illustrating a suitable computing environment for implementing some embodiments of the disclosed technology. DETAILED DESCRIPTION
[0016] General considerations
[0017] The disclosure is set forth in the context of representative embodiments that are not intended to be limiting in any way.
[0018] Unless the context clearly indicates otherwise, as used in this application, the singular forms "a", "an", and "the" include the plural forms. Additionally, the term "including" means "comprising". Furthermore, the term "coupled" includes mechanical, electrical, magnetic, optical, and other practical ways of coupling or linking items together, and does not exclude the presence of intermediates between the coupled items. Furthermore, as used herein, the term "and / or" means any one item or combination of items in the phrase.
[0019] The systems, methods, and devices described herein should not be construed as limiting in any way. On the contrary, individually and in various combinations and subcombinations with each other, the disclosure is directed to all novel and non-obvious features and aspects of the various disclosed embodiments. The disclosed systems, methods, and devices are not limited to any specific aspect or feature or combination thereof, nor do the disclosed objects and methods require the presence of any one or more specific advantages or solutions to problems. In addition, any feature or aspect of the disclosed embodiments can be used in various combinations and subcombinations with each other.
[0020] Although the operations of some methods in the disclosed method are described in a specific sequential order for the convenience of presentation, it should be understood that the description of this mode includes rearrangement unless the specific language set forth below requires a specific order. For example, in some cases, the operations described in sequence can be rearranged or performed simultaneously. In addition, for simplicity, the accompanying drawings may not show the various ways in which the disclosed objects and methods can be used in combination with other objects and methods. Additionally, the description sometimes uses terms such as "produce", "generate", "display", "receive", "send", "verify", "execute" and "initiate" to describe the disclosed method. These terms are high-level descriptions of the actual operations performed. The actual operations corresponding to these terms will vary depending on the specific implementation and can be easily distinguished by those skilled in the art.
[0021] The theories of operation, scientific principles, or other theoretical descriptions of the disclosed devices or methods presented herein are provided for the purpose of better understanding and are not intended to limit the scope. The devices and methods in the appended claims are not limited to those devices and methods that work in the manner described by such theories of operation.
[0022] Any of the disclosed methods may be implemented as computer-executable instructions stored on one or more computer-readable media (e.g., computer-readable media such as one or more optical media disks, volatile memory components (e.g., DRAM or SRAM), or non-volatile memory components (e.g., hard disk drives)) and executed on a computer (e.g., any commercially available computer, including a smart phone or other mobile device that includes computing hardware). Any of the computer-executable instructions for implementing the disclosed techniques and any data created and used during the implementation of the disclosed embodiments may be stored on one or more computer-readable media (e.g., computer-readable storage media). The computer-executable instructions may be, for example, a dedicated software application or part of a software application accessed or downloaded via a web browser or other software application (e.g., a remote computing application). Such software may be executed, for example, on a single local computer or in a network environment (e.g., via the Internet, a wide area network, a local area network, a client-server network (such as a cloud computing network), or other such network) using one or more network computers.
[0023] For clarity, only certain selected aspects of software-based implementations are described. Other details known in the art are omitted. For example, it should be understood that the disclosed technology is not limited to any specific computer language or program. For example, the disclosed technology can be implemented by software written in C, C++, Java, or any other suitable programming language. Similarly, the disclosed technology is not limited to any particular computer or hardware type. Certain details of suitable computers and hardware are known and need not be elaborated in this disclosure.
[0024] Furthermore, any of the software-based embodiments (including, for example, computer-executable instructions for causing a computer to perform any of the disclosed methods) may be uploaded, downloaded, or remotely accessed via suitable communication means. Such suitable communication media include, for example, the Internet, the World Wide Web, an intranet, a software application, cables (including fiber optic cables), magnetic communications, electromagnetic communications (including RF, microwave, and infrared communications), electronic communications, or other such communication media.
[0025] Overview
[0026] When an electronic device (e.g., a personal computer (PC), a set-top box, or a game console) is idle for a given period of time, the electronic device can be converted to a lower power mode (e.g., standby mode) to save energy. In a lower power mode, hardware and software can be adjusted to place the electronic device in a state that uses less energy than during a fully operational state. For example, power can be removed or thresholded from part of the hardware, the clock can be thresholded, and the software function can be terminated or placed in a pause mode. However, some parts of the electronic device can remain active so that the device can detect the conditions for converting to a higher power state, and conversion can occur. For example, a PC in standby mode can be converted to a fully operational state (e.g., PC can wake up) when a key of a keyboard is pressed, the movement of a mouse is detected, or a magic packet is received through an active communication channel. The magic packet is a network packet encoded to convert an electronic device from a lower power state to a higher power state. For example, the magic packet can be a LAN wake-up (WOL) Ethernet packet or a wireless LAN wake-up (WOWLAN) Wi-Fi packet.
[0027] (also known as IEEE 802.11) is a wireless communication standard that allows different electronic devices to communicate wirelessly over a wireless local area network (LAN) using wireless access points (also known as base stations). Devices connected to wireless access points can be referred to as stations, end nodes, or clients. Wireless access points can provide radio frequency links or channels to wireless LANs. Wireless access points can manage access to wireless LANs (e.g., authentication, adding, and removing devices), bridge and / or route between different devices connected to the wireless LAN, and provide links to one or more wired networks (e.g., using Ethernet). Using traditional or infrastructure Wi-Fi, devices connected to a wireless LAN communicate with each other through wireless access points. Specifically, a message sent from one client to another is sent twice: once from the sending client to the wireless access point, and once from the wireless access point to the receiving client. Therefore, using a wireless access point as an intermediary may be an inefficient use of the channel capacity of the wireless spectrum.
[0028] Wi-Fi Direct An extension of the Wi-Fi wireless communication standard that allows different electronic devices to communicate directly with each other without using a wireless access point as an intermediary. Therefore, when two devices are connected using Wi-Fi Direct, messages from one device to another can use half the bandwidth of the infrastructure Wi-Fi because the messages are sent directly between the devices without going through a wireless access point. TM Additional standards such as can be layered on top of Wi-Fi Direct. For example, Miracast packets can be encapsulated within Wi-Fi Direct packets so that devices supporting Miracast can communicate using the Wi-Fi Direct standard.
[0029] Devices supporting Wi-Fi Direct and / or Miracast can detect each other's presence by executing a discovery protocol. As an example, a Miracast receiver device can periodically send a beacon via Wi-Fi to announce its presence, address, and capabilities. A Miracast transmitter can receive and decode the beacon to detect the presence, address, and capabilities of a Miracast receiver. However, beacons can be sent infrequently by a receiver device, and therefore, compared to when only beacons are used, a transmitter device can also initiate discovery to potentially increase the speed at which devices discover each other. For example, a transmitting device can broadcast a probe request announcing its presence and capabilities. A receiving device can receive the probe request and respond by sending a probe response announcing its presence and capabilities. Once devices know each other's presence and capabilities, additional handshakes can be performed to determine the characteristics of a peer-to-peer communication channel between the devices. As an example, a device can negotiate which of the devices will act as the owner of a point-to-point group so that only one of the devices will send a beacon packet.
[0030] When a Miracast receiver detects that a Miracast sender is within physical proximity of the Miracast receiver and the characteristics of the potential peer-to-peer communication channel are known, the Miracast receiver can request that a communication connection be formed between the Miracast receiver and the Miracast sender. As a specific example, a PC in a conference room can be a Miracast receiver and a mobile phone can be a Miracast sender. A user of the mobile phone in the conference room can discover that the PC is a Miracast receiver and the user can use the Miracast sender application to cause the mobile phone's screen to be displayed on the PC's display.
[0031] In some scenarios, supporting both infrastructure Wi-Fi and Wi-Fi Direct increases power consumption and reduces the amount of information that can be transmitted between devices. For example, Miracast beacons sent via Wi-Fi Direct may be time-multiplexed with infrastructure Wi-Fi signals, which reduces the available bandwidth for infrastructure Wi-Fi. If there is no active Miracast-enabled transmitter physically close to a Miracast-enabled receiver, the energy and bandwidth used by the beacon can be better used for infrastructure Wi-Fi communications. Therefore, electronic devices can disable Wi-Fi Direct to potentially save energy and improve the communication capacity of infrastructure Wi-Fi. For example, a Miracast receiver application may include a timeout function in which the Wi-Fi Direct function is disabled (e.g., by pausing beacon packets or by terminating the Miracast application) when no Miracast transmitter is detected within a given time.
[0032] When a device with Miracast receiver functionality is in a low power state (e.g., standby) or when the Miracast receiver functionality has been disabled, a Miracast sender cannot discover the Miracast receiver and cannot communicate with the Miracast receiver via Wi-Fi Direct. Specifically, since the Miracast receiver will not participate in the discovery protocol (e.g., will not send beacon packets), the Miracast sender cannot detect the presence or address of the Miracast receiver. Additionally, the Miracast sender cannot cache the address of the Miracast receiver during a previous connection because the operating system (OS) will assign a different address to the Miracast receiver each time the Miracast receiver is started.
[0033] As described herein, Miracast and other peer-to-peer communications can be initiated between a sending device and a receiving device through an inactive peer communication channel (e.g., Miracast on Wi-Fi Direct). The method may include determining an address associated with an infrastructure communication channel (e.g., infrastructure Wi-Fi) of a receiving device. One or more packets addressed to a receiving device (e.g., magic packets and / or packets including a remote start command) may be sent through an infrastructure communication channel so that the receiving device begins a sequence for activating a peer communication channel. Activating a peer communication channel may include converting the receiving device from a lower power state to a higher power state and starting a peer receiver function (e.g., starting a Miracast receiver application). The peer receiver function may cause a beacon packet to be sent, wherein the beacon packet includes the address of the peer receiver. Communication from a sending device to a receiving device may be initiated through a peer communication channel at the address of a peer receiver through a peer communication channel. Thus, when the peer communication channel is not in use, the peer receiver device can be placed in a lower power state and communication bandwidth can be conserved for the infrastructure communication channel, and the peer receiver function can be restarted when the peer transmitter is present. It should be noted that, as used herein, a peer communication channel may also be referred to as a point-to-point communication channel.
[0034] Example system architecture
[0035] Figure 1An example system 100 is shown that includes a receiving device 110, a sending device 120, and an access point 130. As a specific example, the receiving device 110 can be a personal computer, a game console, or a set-top box capable of executing a peer-to-peer receiver application (e.g., a Miracast receiver application). The sending device 120 can be a laptop or a mobile phone that executes a peer-to-peer sender application (e.g., a Miracast sender application). The access point 130 can be, for example, a wireless access point or an Ethernet bridge or router.
[0036] Initially, the peer-to-peer communication channel 140 may be inactive, and the receiving device 110 and the sending device 120 may communicate over an infrastructure communication channel 150 (e.g., infrastructure Wi-Fi) via the access point 130. In particular, the receiving device 110 may have a first address 112 associated with the infrastructure communication channel 150, and the sending device 120 may communicate with the receiving device 110 by sending packets addressed to the receiving device 110 over the infrastructure communication channel 150. For example, the first address 112 may be a link layer or media access control (MAC) address. In general, a given device communicating over a given communication channel may have multiple addresses, where different addresses may correspond to different layers of the Open Systems Interconnection (OSI) model.
[0037] The OSI model standardizes and divides the internal functions of a communication system into abstract layers. In particular, the OSI model standardizes and divides a communication system into seven layers. A specific layer provides a communication path for a layer adjacent to the specific layer (e.g., the upper layer and the lower layer). The lowest layer is the physical layer (referred to as layer 1), which defines the electrical and physical specifications of communication through a physical transmission medium. Specifically, the physical layer can define voltage levels, signal timing, transmission media (e.g., cables, fiber optic cables, radio frequency), etc. The physical layer can provide a communication path with a data link layer or link layer (referred to as layer 2). The link layer defines a protocol for transmitting data between two nodes. Additionally, the link layer can define a protocol for establishing and terminating a connection between nodes, managing flow control, and detecting and / or correcting errors that occur at the physical layer. Examples of link layer protocols are Ethernet, Wi-Fi, Wi-Fi Direct, Asynchronous Transfer Mode (ATM), Point-to-Point Protocol (PPP), High-Level Data Link Control (HDLC), Fiber Distributed Data Interface (FDDI), and Token Ring. The link layer can provide a communication path with a network layer (referred to as layer 3). Examples of network layer protocols are Internet Protocol (IP) (including IPv4 and IPv6), ICMP, Address Resolution Protocol (ARP), Internet Packet Exchange (IPX), and Datagram Delivery Protocol (DDP). Other layers of the OSI model include the transport layer (layer 4), the session layer (layer 5), the presentation layer (layer 6), and the application layer (layer 7). It should be noted that a network packet (or simply a packet) typically includes a header for addressing the packet to a remote node or an agent at the layer of the packet, and a payload with a discrete amount of information. When the original packet passes through the communication layer, the packet addressed to the agent at one layer can be encapsulated in the payload of the packet at the lower layer. The packet of the link layer can also be referred to as a frame. The OSI model is a reference, and some network protocols may not strictly follow the seven layers of the OSI model. For example, in some embodiments, the functions of the link layer and the physical layer can be mixed into a single link layer. The combination of protocols used at different layers of the OSI model can be referred to as a protocol stack. For example, a particular protocol stack may include an IP layer and an Ethernet layer. As another example, a protocol stack may include a Miracast layer and a Wi-Fi or Wi-Fi Direct layer.
[0038] A communication channel is a logical path for communication to be transmitted between two or more electronic devices. For example, a given communication channel may correspond to a specific physical transmission medium (e.g., wire, optical cable, or a series of frequencies), a specific communication protocol (e.g., Ethernet, Wi-Fi, or Wi-Fi Direct), and a specific coding scheme (e.g., a specific time period within a time-division multiplexed signal or a signal encrypted using a specific key). As a specific example, the following may be different communication channels: an Ethernet connection, a first Wi-Fi connection using a first encryption key, a second Wi-Fi connection using a second encryption key, and a Wi-Fi Direct connection. A communication channel is used to transmit information. The ability of a communication channel to transmit information can be measured by its data rate or bandwidth. However, the theoretical capacity of a given communication channel may potentially be reduced due to interference from different communication channels. Therefore, by disabling another communication channel, the transmission rate of a given communication channel may potentially be increased.
[0039] The transmitting device 120 can send information directly to the receiving device 110 via the peer communication channel 140. The discovery protocol can be used to make the receiving device 110 and the transmitting device 120 aware of each other's existence. Generally speaking, the discovery protocol can be used for a group of devices to publish and receive information about each other, and negotiate the properties of any shared communication channel that may potentially connect the devices. The discovery protocol can specify the packet type and format for publishing information, and one or more sequences for sharing information between devices and / or negotiating the properties of the communication channel for connecting devices. As an example, the discovery protocol can specify a beacon packet for publishing the properties of the device and / or channel. As another example, the discovery protocol can specify a series of probe and response packets so that the devices can receive information about each other and negotiate the characteristics of the communication channel of the connecting device. As a specific example of discovery, the receiving device 110 can send (e.g., broadcast) a beacon packet that publishes the properties of the receiving device 110 and / or the peer communication channel 140. The transmitting device 120 can listen to the beacon packet to determine whether there is a neighboring device that can communicate through the peer channel. In particular, transmitting device 120 may listen for beacon packets from receiving device 110 to determine the presence of receiving device 110 and to determine the capabilities of peer-to-peer communication channel 140. When a beacon packet is detected, transmitting device 120 may request a connection to receiving device 110 over peer-to-peer communication channel 140. However, when beacon packets are not being transmitted, such as when receiving device 110 is in a low power mode or when peer reception functionality is disabled, transmitting device 120 may not be able to form a connection to receiving device 110 over peer-to-peer communication channel 140.
[0040] If the sending device 120 can find that the receiving device 110 can be reached through the infrastructure communication channel 150, the sending device 120 can send one or more packets 122 to activate the peer communication channel 140. As an example, the sending device 120 can find that the receiving device 110 can form a point-to-point connection by accessing the directory service 135. The directory service 135 can store such a data structure, which indicates which devices currently or previously connected to the access point 130 can potentially form a point-to-point connection with other devices. For example, the directory service can be updated by the receiving device 110. Specifically, the receiving device 110 can send a message to the directory service 135 to indicate that the receiving device 110 can form a point-to-point connection. Before attempting a point-to-point connection, the sending device 120 can access the directory service 135 to determine whether any device connected to the access point 130 can form a point-to-point connection. As another example, the sending device 120 can store such a data structure, which remembers the devices previously connected using a point-to-point connection.
[0041] As an example, the specific packet 122 sent to activate the peer communication channel 140 can be different based on the state of the receiving device 110. In particular, when the sending device 120 cannot detect the receiving device 110, the sending device 120 can send one or more magic packets to the receiving device 110 through the infrastructure communication channel 150. Each of the magic packets can be encoded to include multiple repetitions of the first address 112. The sending device 120 can wait for a few seconds so that the receiving device 110 can potentially transition to a higher power state. When the sending device can detect the receiving device 110 through the infrastructure communication channel 150, the sending device 120 can send a packet including a remote start command for starting the peer receiver application. When the peer receiver application is started, the receiving device 110 can start a process that enables the receiving device 110 to participate in the discovery process. For example, the receiving device 110 can start sending beacon frames when the receiver application is started so that the peer communication channel 140 can be formed. Specifically, the operating system of the receiving device 110 may assign the second address 114 to the receiving device 110 associated with the peer communication channel 140. The sending device 120 may detect the beacon frame and may decode the second address 114 so that a connection request may be sent from the sending device 120 to the receiving device 110 via the peer communication channel 140 with the second address 114. The receiving device 110 and the sending device 120 may complete a handshake to form a point-to-point connection via the peer communication channel 140. Thus, a point-to-point connection may be formed to the receiving device 110 having the second address 114 by sending packets to the receiving device 110 via different channels with different addresses (e.g., the first address 112).
[0042] Figure 2 The system 200 and various components of computing devices 210 and 230 that can be used to communicate through a first communication channel 250 and a second communication channel 260 are shown. For example, the first channel 250 can be a dedicated communication channel for point-to-point communication between the computing device 210 and the computing device 230, such as a Wi-Fi direct channel. The second channel 260 can be an infrastructure communication channel, such as an infrastructure Wi-Fi, Ethernet, or Bluetooth. The infrastructure communication channel can include additional network devices, such as wireless access points and / or bridges, hubs, or routers. Different communication channels 250 and 260 can be active at different times. As an example, when any one of the computing devices 210 and 230 is powered on, the second channel 260 can be active, and only when both computing devices 210 and 230 choose to maintain the channel, the first channel 250 can be active.
[0043] The computing device 210 may be configured as a receiving device. The computing device 210 may include one or more processors 212, a power logic unit 214, one or more network interface controllers (NICs) 216, and a memory 220. The processor 212 may execute instructions loaded in the memory 220 and may communicate with the power logic unit 214 and the NIC 216. Software may be used to configure the computing device 210 as a receiving device. For example, the memory 220 may be loaded with an operating system kernel 222, a peer receiver application 224, a discovery service 226, and a remote start service 228. In one embodiment, the peer receiver application 224, the discovery service 226, and / or the remote start service 228 may be integrated into the operating system of the computing device 210.
[0044] The computing device 210 can operate in different power modes or states. For example, the computing device 210 can be completely powered off (lowest power state); the computing device 210 can be fully powered on, where all components of the computing device are powered on (highest power state); the computing device 210 can be in a standby power mode, where at least one of the components is powered off and at least one of the components is powered on. There can be multiple standby power modes, where a higher power standby mode uses more energy due to more or higher power components being powered on, and a lower power standby mode uses less energy due to fewer or lower power components being powered on. One or more of the lower power standby modes can be referred to as sleep modes. In contrast, one or more higher power modes such as a fully powered on state can be referred to as wake-up modes. The power logic unit 214 can monitor activities occurring on the computing device 210, and in conjunction with the operating system can power off and power on various components of the computing device 210. For example, the power logic unit 214 can monitor processor utilization and can power on and off individual cores of the multi-core processor 212 based on the detected utilization. The power logic unit 214 can monitor peripheral functions (e.g., network peripherals, display peripherals, etc.) of the computing device 210 and can power the peripheral functions on or off. The power logic unit 214 can monitor input devices (e.g., keyboard or mouse) to detect activities that can be used to trigger a transition to a higher power state.
[0045] NIC 216 includes computer hardware and software for connecting computing device 210 to first communication channel 250 and second communication channel 260. In particular, NIC 216 includes suitable electronic circuits for communicating using a specific physical layer and link layer. For example, NIC 216 can be used to communicate through communication channels 250 and 260 using Ethernet, Wi-Fi, Wi-Fi Direct, and / or other link layer protocols. NIC 216 can provide a separate interface for each communication protocol supported by NIC 216. Each interface of NIC 216 can include a separate link layer address, such as a MAC address. Therefore, a first MAC address can be assigned to the first channel 250, and a second MAC address can be assigned to the second channel 260. NIC 216 can operate in a standby mode, wherein a packet is received by NIC 216 through the second channel 260, and at least some processing is performed on the received packet. Specifically, when computing device 210 and / or NIC 216 is in standby mode, NIC 216 can decode and identify magic packets received through the second channel 260. When a magic packet is identified, the NIC 216 may signal other components of the computing device 210 (eg, the power logic unit 214) so that the computing device 210 may transition to a higher power state.
[0046] The operating system kernel 222 may include different software routines, modules, or components that manage different aspects of the execution of programs and that interface with the hardware of the computing device 210. For example, the operating system kernel 222 may manage the loading and removal of different programs into the memory 220; the operating system kernel 222 in conjunction with the power logic unit 214 may manage the power state of the computing device 210; the operating system kernel 222 may provide an interface for applications to send and receive network packets using the NIC 216 through the communication channels 250 and 260; and the operating system kernel 222 may implement inter-process communication between different applications. The operating system kernel 222 may include security features, such as locking the computing device 210 when the computing device 210 is idle or when a user commands the computing device 210 to be locked. When the computing device 210 is locked, the computing device 210 may be referred to as being "in lock". The operating system kernel 222 may save settings that control which functions or programs can be accessed when the computing device 210 is locked. For example, one setting may allow an application to be launched "in lock", and another setting may prevent an application from being launched in lock. Thus, the settings of the operating system kernel 222 may be used to allow some applications to run in lock, and may prevent some applications from running in lock.
[0047] The peer receiver application 224 may include different software routines, modules or components for managing a point-to-point connection with a sender application on a different computing device (e.g., the peer sender application 244 of the computing device 230). For example, the peer receiver application 224 may generate packets for transmission over the communication channels 250 and 260, and may transmit the packets to the NIC 216 directly or by using the operating system kernel 222; and the peer receiver application 224 may receive packets transmitted over the communication channels 250 and 260 from the NIC 216. The packets generated by the peer receiver application 224 may be encoded to advertise the capabilities of the receiver during the point-to-point communication session (e.g., during discovery) and to maintain the point-to-point communication session. The packets received by the peer receiver application 224 over the channel 250 may be decoded to render images and / or sounds that may be displayed or output on an output device (e.g., a display monitor and / or speakers) of the computing device 210 or an output device connected to the computing device 210. As a specific example, the peer receiver application 224 may be a Miracast receiver application that may be used to display the screen of a remote device on a screen of the computing device 210 or a screen connected to the computing device 210. Additionally, the peer receiver application 224 may receive and process probe request and / or response packets according to a discovery protocol during discovery. The peer receiver application 224 may generate probe request and / or response packets in response to packets received during discovery.
[0048] The discovery service 226 may include different software routines, modules, or components for advertising the capabilities of the computing device 210. For example, the discovery service 226 may indicate any programs that can be launched remotely, the conditions for launching a program remotely (e.g., whether the program can be launched while locked), and / or whether the computing device 210 supports magic packets, etc. As a specific example, the discovery service 226 may advertise that the peer receiver application 224 can be launched remotely and that the computing device 210 supports magic packets over infrastructure Wi-Fi (e.g., wake up via wireless LAN packets). The discovery service 226 may be push-based or pull-based. For example, a push-based discovery service 226 may be configured to advertise the capabilities of the computing device 210 by beaconing using a packet targeted to a multicast group (e.g., sending a beacon packet with the capability) or by sending a packet to a directory service (e.g., Figure 1 The capabilities of the computing device 210 may be sent to a directory service 135 of the system. The pull-based discovery service 226 may publish the capabilities of the computing device 210 in response to queries to the discovery service 226. Suitable protocols for implementing the discovery service 226 may include the Discovery and Launch (DiAL) protocol and / or the Universal Plug and Play (UPnP) protocol. By using the discovery service 226, remote devices and / or services may determine the capabilities of the computing device 210 before issuing commands to the computing device 210.
[0049] Remote start service 228 can include different software routines, modules, or components for enabling the application of computing device 210 to be started from a remote device or service. For example, remote start service 228 can receive a remote start command encoded in a network packet addressed to remote start service 228 of computing device 210. Remote start service 228 can decode the packet addressed to it, and can signal operating system kernel 222 when the remote start command is detected. The remote start command can specify a specific program to be started. As a specific example, the remote start command can specify to start a peer receiver application. Operating system kernel 222 can perform a security check to determine whether the peer receiver application can be started, and operating system kernel 222 can load and start the application.
[0050] The computing device 230 can be configured as a sending device. The computing device 230 can include one or more processors 232, one or more network interface controllers (NICs) 236, and a memory 240. The processor 232 can execute instructions loaded in the memory 240 and can communicate with the NIC 236. The processor 232, the NIC 236, the memory 240, and the OS kernel 242 can operate similarly to the processor 212, the NIC 216, the memory 220, and the OS kernel 222 described above. Software can be used to configure the computing device 230 as a sending device. For example, the memory 240 can be loaded with an operating system kernel 242, a peer sender application 244, and a connection data structure 246. In one embodiment, the peer sender application 244 and the connection data structure 246 can be integrated into the operating system of the computing device 230.
[0051] The peer sender application 244 may include different software routines, modules or components for managing a point-to-point connection with a receiver application on a different computing device (e.g., the peer receiver application 224 of the computing device 210). For example, the peer sender application 244 may generate packets for transmission over the communication channels 250 and 260, and may transmit the packets to the NIC 236 directly or by using the operating system kernel 242; and the peer sender application 244 may receive the packets sent over the communication channels 250 and 260 from the NIC 216. The packets generated by the peer sender application 244 may be encoded to advertise the capabilities of the sender during the point-to-point communication session (e.g., during discovery) and to maintain the point-to-point communication session. The packets sent by the peer sender application 244 over the channel 250 may be encoded to represent images and / or sounds that may be displayed or output on an output device (e.g., a display monitor and / or speakers) of a remote computing device (e.g., computing device 210). As a specific example, peer sender application 244 may be a Miracast sender application that may be used to project the screen of computing device 230 onto the screen of a remote computing device (e.g., computing device 210). Peer sender application 244 may cause a stream of packets to be sent to a remote computing device to support video and / or audio streamed on the remote device. Additionally, peer sender application 244 may receive and process probe requests and / or response packets according to a discovery protocol during discovery. Peer sender application 244 may generate probe requests and / or response packets in response to packets received during discovery.
[0052] Peer transmitter application 244 can select a remote computing device with which a point-to-point connection can be formed. As a specific example, peer transmitter application 244 can receive a beacon packet from a peer receiver application, and the beacon packet announces the existence and capability of a remote device that can form a point-to-point connection. Multiple remote devices can be sending beacons, so peer transmitter application 244 can select one of the remote devices from a group. As an example, peer transmitter application 244 can present a user interface to a user of computing device 230 so that the user can select a specific remote device to be connected. Additionally, peer transmitter application 244 can detect that there is no remote device that can form a point-to-point connection and is sending a beacon or responding to a probe request packet. In this case, there may be a remote device that can form a point-to-point connection within the physical proximity of computing device 230, but the remote device may be in a low power state or they may not currently be executing a peer receiver application. Peer transmitter application 244 can use one or more methods in the method described below to search for these remote devices.
[0053] As an example, computing device 230 may include connection data structure 246. Connection data structure 246 may include a table or other database that caches remote computing devices that can form a point-to-point connection that has been connected at a previous point in time. The entries of connection data structure 246 may include an identifier of the remote device, one or more network identifiers associated with the remote device, and one or more addresses associated with the remote device. As a specific example, connection data structure 246 may include an entry for computing device 210. The entry may include a device identifier associated with computing device 210, a network identifier (e.g., a service set identifier (SSID)) of second channel 260, and an address (e.g., a MAC address) of computing device 210 using first channel 250. When channel 260 is active and channel 250 is inactive, peer sender application 244 may detect that channel 260 is active by receiving a beacon frame from channel 260 or by receiving a probe response to a probe request on channel 260. The network identifier of channel 260 may be used to search connection data structure 246 to determine whether any remote devices capable of forming a point-to-point connection have recently connected to channel 260. In this manner, an identifier associated with an active channel of computing device 230 may be used as a key for searching connection data structure 246 to find a sleeping or inactive remote computing device capable of forming a point-to-point connection with computing device 230.
[0054] As another example, peer sender application 244 may send a discovery request to a discovery service executing on a remote computing device (e.g., computing device 210) to determine if there are any remote computing devices that are capable of forming a peer-to-peer connection with computing device 230. Querying remote computing devices that are capable of forming a peer-to-peer connection may be limited to those devices that are in a power state capable of processing the discovery request. However, querying a directory storing computing devices that are capable of forming a peer-to-peer connection (e.g., Figure 1 A remote computing device that uses a directory service 135) can potentially identify a sleeping computing device.
[0055] When a remote computing device capable of forming a point-to-point connection with computing device 230 is identified, peer transmitter application 244 may determine whether a peer channel (e.g., channel 250) to the remote computing device is active or inactive. If the peer channel is inactive, peer transmitter application 244 may determine whether the remote computing device is awake or asleep. As an example, peer transmitter application 244 may send a ping command to the remote computing device via channel 260 and wait for a response. If the response arrives before the timeout period, the remote computing device is in an awake state. If the remote computing device is in a sleep state, peer transmitter application 244 may cause at least one magic packet to be sent to the remote computing device via channel 260 to wake up the remote computing device. Peer transmitter application 244 may wait for the remote device to transition to a higher power state. For example, peer transmitter application 244 may wait for a few seconds to tens of seconds for the remote device to transition to a higher power state. When the remote computing device is awakened, and if no beacon is detected over channel 250 (or no probe response to a probe request is detected), the peer sender application 244 may cause a remote launch command to be sent to the remote launch service to activate the peer receiver application so that a peer communication channel can be formed.
[0056] It should be noted that a particular computing device may include software for both receiving and sending functions for point-to-point communications. For example, both the receiving and sending functions may be integrated into the operating system of the particular computing device, and the particular function (e.g., receiving or sending) used by the computing device may be selected at runtime. As a specific example, a computing device may include a peer receiver application, a peer sender application, a discovery service, a remote start service, and a connection data structure.
[0057] Figure 3A sequence diagram of an example method 300 for initiating a peer-to-peer communication channel and transmitting data through the peer-to-peer communication channel is shown. Specifically, a transmitting device 310 requests a point-to-point connection with a receiving device 320, and after forming a point-to-point connection, data is transmitted to the receiving device 320 using the point-to-point connection. In this example, the receiving device 320 is awake and a peer receiver application is executing on the receiving device 320. The receiving device 320 uses a beacon frame to announce that it can form a point-to-point connection. At 330, a discovery packet is transmitted between the transmitting device 310 and the receiving device 320 so that the characteristics of the peer communication channel can be negotiated. As a specific example, a beacon frame can be sent from the receiving device 320 to any device (e.g., the transmitting device 310) within the range of the beacon frame. For example, the beacon frame can be sent via Wi-Fi, and any device within the range of the Wi-Fi transmitter can receive the beacon frame. The transmitting device 310 uses information decoded from the beacon frame to send a connection request to the receiving device 320 at 340. The receiving device 320 may respond to the connection request by sending a connection response at 352 for forming a point-to-point connection with the sending device 310. At 360, the sending device 310 may update the connection data structure using information encoded in the connection response and / or beacon frame. For example, the connection response may include an information element that includes a device identifier, a MAC address of the receiving device 320 on the infrastructure channel, or other information that can be used to later wake up or remotely start a peer receiver application. At 370, after the point-to-point connection is formed, the sending device 310 may begin sending point-to-point data transmissions to the receiving device 320.
[0058] Figure 4A sequence diagram of an example method 400 for initiating a peer communication channel when a receiving device 420 is in a low power mode is shown. In this example, a transmitting device 410 and a receiving device 420 are connected to an infrastructure communication channel via an access point 430. At 432, the receiving device 420 is in a low power state to save energy. However, the receiving device 420 continues to monitor packets arriving through the infrastructure communication channel. For example, the receiving device 420 may perform some processing of the received packets and may identify magic packets addressed to the receiving device 420. At 440, the access point 430 may use a beacon frame to announce the existence, characteristics, and capabilities of the infrastructure communication channel. For example, the beacon frame may include a field indicating that the beacon frame is used for an infrastructure network and an SSID field associated with the infrastructure communication channel. At 442, the SSID field may be used as a key to search for a connection data structure. For example, the connection data structure may store an identifier of a receiving device that has been recently used to form a point-to-point communication channel with the transmitting device 410 and has been attached to the infrastructure communication channel associated with the SSID field. After searching the connection data structure, the address (e.g., MAC address) of the receiving device 420 on the infrastructure communication channel can be identified. The address of the receiving device 420 can be encoded in a magic packet, which is sent from the sending device 410 to the access point 430 via the infrastructure communication channel at 450. At 452, the magic packet can be forwarded from the access point to the receiving device 420 via the infrastructure communication channel. At 454, the receiving device 420 can decode the magic packet and switch to a higher power state. In this example, when the receiving device 420 switches to the higher power state, the peer receiver application is no longer executing. In other examples, the peer receiver application can start executing when the receiving device 420 switches to the higher power state. The sending device 410 can wait for a period of time so that the receiving device 420 can switch to the higher power state. At 460, after waiting for the switch, the sending device 410 can send a remote start command addressed to the receiving device 420 via the access point 430 through the infrastructure communication channel. The remote start command can specify that the peer receiver application is to be started. At 462, the remote start command may be forwarded from access point 430 to receiving device 420. At 464, in response to receiving the remote start command, a peer receiver application may be launched on receiving device 420. At 470, a discovery packet may be transmitted between sending device 410 and receiving device 420 so that characteristics of a peer communication channel may be negotiated. As a specific example, a beacon frame announcing a peer communication channel may be sent from receiving device 420. For example, the beacon frame may include a field indicating that the beacon frame is for a peer communication channel. Sending device 410 may receive the beacon frame and may send a connection request at 480 in response to receiving the beacon frame.The receiving device 420 may receive the connection request and may respond with a connection response at 482 to form a peer-to-peer communication channel between the receiving device 420 and the sending device 410. After forming the peer-to-peer communication channel, at 490, the sending device 410 may begin communicating data over the peer-to-peer communication channel.
[0059] Figure 5A An example of a magic packet 520 and a response packet 500 is shown, and the response packet 500 includes information elements in the payload 510 of the response packet 500. The response packet 500 can be a link layer packet sent in response to a request to form a point-to-point communication channel. The response packet 500 can include various different fields, such as a destination address (DA) 502, a source address (SA) 504, a frame type (FT) 506, and a payload 510. The response packet 500 can also include additional fields, such as a preamble, a start frame, a slicer, and a frame check sequence (not shown). The source address 504 can indicate the source device of the response packet 500. For example, the source address 504 can include the MAC address of the receiving device (associated with the infrastructure communication channel). The destination address 502 can indicate the destination device of the response packet 500. For example, the destination address 502 can include the MAC address of the sending device (associated with the infrastructure communication channel). The frame type 506 can be selected to indicate that the frame is a response frame. Payload field 510 may include an information element having one or more subfields that may be used to uniquely identify a source device of a response packet and / or to identify capabilities of the source device.
[0060] As an example, the subfields may include a device identifier (device ID) 512, a MAC address 514 of a source device on an infrastructure communication channel, a MAC address (APMAC) 516 of an access point connected to the source device, a directory address (DAD) 518, and a capabilities field 519. The device identifier 512 may be a unique number that is constant for the device regardless of the communication channel used to access the device. Thus, the device identifier 512 is different from the MAC address assigned to a particular communication channel. The directory address 518 may be a directory service (e.g., a device ID) used to access the capabilities of the storage device. Figure 1 The capability field 519 may indicate one or more capabilities of the device. For example, the capability field 519 may be encoded to indicate whether the device supports magic packets, whether the device supports remote launching of applications, and the like.
[0061] Magic packet 520 can be a link layer packet used to convert a specific device from a lower power state to a higher power state. Magic packet 520 can include various different fields, such as destination address (DA) 522, source address (SA) 524, frame type (FT) 526, and payload 530. Magic packet 520 can also include additional fields, such as preamble, start frame, slicer, and frame check sequence (not shown). Destination address 522 is encoded to indicate that magic packet 520 is a broadcast packet. For example, destination address 522 can be encoded with six octets of hexadecimal FF to indicate magic packet 520 as a broadcast packet. Payload 530 can include a magic packet string (FFx6), which includes six octets of hexadecimal FF, followed by a string (MACx16) 534 including 16 repetitions of the MAC address of the device.
[0062] Figure 5B An example of a connection data structure 540 is shown. As shown, the connection data structure 540 may include n entries, each of which includes a plurality of fields. Each of the entries may correspond to a unique device identifier representing a peer device that has formed a point-to-point communication connection with a device associated with the connection data structure 540. For example, the n entries may correspond to peer devices that were recently used to form a peer communication channel. As another example, the n entries may correspond to peer devices that are most frequently used to form a peer communication channel.
[0063] Each entry may include various different fields. For example, an entry may include a device identifier (device ID) 542, a first service set identifier (SSID1) 544 corresponding to an infrastructure communication channel, a first address (MAC1) corresponding to an infrastructure communication channel, a second service set identifier (SSID2) 548 corresponding to a peer communication channel, a second address (MAC2) 550 corresponding to a peer communication channel, and a capability field 552. It should be noted that SSID1 544 and SSID2 548 may be the same when the infrastructure communication channel and the peer communication channel are multiplexed on a common signal set. Additionally, the second address 550 may be different each time a peer communication channel is formed with a device. For example, each time a peer receiver application is started, the operating system may assign the second address 550. The capability field 552 may indicate whether a particular device associated with the device identifier 542 supports magic packets, remote start, remote start in lock, and the like.
[0064] Example Method
[0065] Fig. 6AAn example method 600 of initiating a peer communication channel and updating a connection data structure when a peer device is detected is shown. For example, the method 600 may be performed by a sending device (e.g., Figure 1-4 any one of the sending devices 120, 230, 310, and 410) to execute.
[0066] At 610, a request to form a peer communication channel with a peer device may be sent. The request may be sent in response to performing a discovery sequence. For example, the request may be sent in response to receiving a beacon frame from a peer device. The beacon frame may include an address of the peer device on the peer communication channel so that the request may be sent directly to the peer device.
[0067] At 620, in response to forming a peer communication channel, an information element may be received. For example, the information element may be sent in a payload of a response packet. The information element may include one or more characteristics associated with the peer device. For example, the information element may include a device identifier of the peer device, a MAC address of the peer device on the infrastructure communication channel, and / or capabilities of the peer device.
[0068] At 630, an entry of a connection data structure may be updated. The entry may use information extracted from the received information element to identify a peer device, a peer communication channel, and an infrastructure communication channel. For example, when the peer device is in a low power state, the connection data structure may be searched at a later time to determine whether there may be a peer device that can form a point-to-point connection near the sending device, even if no peer device is detected.
[0069] Figure 6B An example method 640 of initiating a peer communication channel when no peer device is detected is shown. For example, the method 640 may be performed by a transmitting device (e.g., Figure 1-4 any one of the sending devices 120, 230, 310, and 410) to execute.
[0070] At 650, peer devices can be identified. For example, peer devices can be identified by searching for candidate peer devices in the connection data structure. Peer devices can be associated with infrastructure communication channels and inactive peer communication channels. Therefore, information related to the infrastructure communication channel can be used as a key when searching for the connection data structure. In particular, the SSID of the infrastructure communication channel can be used as a key when searching for the connection data structure. Successful search of the connection data structure can return one or more candidate peer devices connected to the infrastructure communication channel and the address of the candidate peer devices through the infrastructure communication channel. From one or more candidate peer devices, a single peer device that forms a peer communication channel with it can be selected.
[0071] At 660, the magic packet can be sent to the peer device through the infrastructure communication channel. The magic packet can include the address of the peer device obtained from the connection data structure. Specifically, the magic packet can be a broadcast packet with a payload, and the payload contains a magic packet string (e.g., a string of six octets of hexadecimal FF) and a link layer or MAC address of the peer device repeated 16 times, wherein the MAC address is a MAC address on the infrastructure communication channel. It should be noted that the address assigned to the peer device during the previous point-to-point connection is not used for the magic packet, because even when connected to the same peer device, the previous peer address may also be invalid. The connection data structure provides information on the magic packet by associating the peer device with the address associated with the infrastructure communication channel. When the magic packet is received at the peer device, the peer device can be converted to a higher power state. This conversion may take a few seconds, and therefore the sending device can wait before continuing to 670.
[0072] At 670, a remote start command may be sent to the peer device via the infrastructure channel to activate the peer communication channel. For example, the remote start command may cause a peer receiver application to be started on the peer device so that the peer device may participate in discovery (e.g., send a beacon packet for the peer communication channel). Starting the peer receiver application may also cause an address to be assigned to the peer device via the peer communication channel. The beacon packet may include a newly assigned address within the payload of the beacon packet.
[0073] At 680, a connection may be formed with the peer device via a peer-to-peer communication channel. For example, a negotiated handshake between the peer device and the sending device may be used to form the connection. The handshake may include sending a connection request from the sending device to the peer device and receiving a response at the sending device. When a point-to-point communication channel is formed, the sending device may send information directly to the peer device via the point-to-point communication channel.
[0074] Fig. 7A An example method 700 is shown for responding to a request for initiating a peer communication channel when a peer receiver application is active. For example, the method 700 may be performed by a receiving device (e.g., Figure 1-4 any one of the receiving devices 110, 210, 320, and 420).
[0075] At 710, a request to form a peer-to-peer communication channel with a peer device may be received. The request may be received in response to performing discovery (e.g., sending a beacon frame to the peer device). The beacon frame may include an address of a receiving device on the peer-to-peer communication channel so that the request may be sent directly to the receiving device.
[0076] At 720, an information element may be sent in response to forming a peer communication channel. For example, the information element may be sent in a payload of a response packet. The information element may include one or more characteristics associated with the receiving device. For example, the information element may include a device identifier of the receiving device, a MAC address of the receiving device on the infrastructure communication channel, and / or capabilities of the receiving device.
[0077] At 730, the receiving device may transition from a higher power state to a lower power state. As an example, the transition may occur in response to detecting that the peer communication channel is idle. The transition to the lower power state may include terminating or suspending a peer receiver application; suspending the transmission of a beacon frame that announces the peer communication channel; powering off one or more hardware components of the receiving device; gating a clock to a component of the receiving device; reducing the frequency of a clock to a component; and / or reducing a voltage applied to a component. Some components of the receiving device may remain operational during the lower power state. For example, a NIC of the receiving device may remain at least partially active so that a magic packet may be decoded when it is received by the NIC on the infrastructure communication channel.
[0078] Figure 7B An example method 740 is shown for initiating and forming a peer-to-peer communication channel when one of the peer devices is initially in a low power state. For example, the method 740 may be performed by a receiving device (e.g., Figure 1-4 any one of the receiving devices 110, 210, 320, and 420).
[0079] At 750, a magic packet may be received from a peer device over an infrastructure communication channel. The magic packet may include an address of the receiving device. Specifically, the magic packet may be a broadcast packet with a payload containing a magic packet string (e.g., a string of six octets of hexadecimal FF) and a link layer or MAC address of the peer device repeated 16 times. The magic packet may be detected and decoded to match the address of the receiving device.
[0080] At 760, in response to detecting the magic packet, the receiving device may transition from a lower power state to a higher power state. Transitioning to a higher power state may include starting or pausing a peer receiver application; commencing transmission of a beacon frame that announces a peer communication channel; powering on one or more hardware components of the receiving device; restarting a clock to a component of the receiving device; increasing the frequency of a clock to a component; and / or increasing a voltage applied to a component. In one embodiment, transitioning to a higher power state does not include starting a peer receiver application and does not include commencing transmission of a beacon frame that announces a peer communication channel. However, an explicit command to start a peer receiver application may be used from the receiving device or from a remote initiation command (e.g., at 770) to start the peer receiver application and begin transmission of a beacon frame that announces a peer communication channel.
[0081] At 770, a remote start command for requesting activation of a peer communication channel may be received from a peer device via an infrastructure channel. The request may include various parameters encoded in the fields of the request, such as parameters specifying the command to be started, user credentials, etc. The parameters of the request may be compared with the capabilities, states, and settings of the receiving device to determine whether the remote start command will be executed. For example, one or more states of the receiving device may be determined, such as whether the receiving device is in a lock. Settings may determine whether a specific program can be started in a lock by a user who is not the user of the locked receiving device. If the user who issues the remote start command has authorization (e.g., the requesting user is the user who locks the receiving device, or the user has permission to issue commands in a lock) to start a peer receiver application, the peer receiver application may be started. Therefore, the peer receiver application may be started in or by the lock (and the peer communication channel may be activated). On the other hand, if the user does not have permission to perform the action specified by the remote start command, the action may be blocked. In some embodiments, the remote start command may not specify a user, and therefore the remote start command will be executed based on a state, settings, and capabilities that are not related to the user. In some embodiments, the receiving device may prompt the user to request whether to activate the peer communication channel.
[0082] At 780, a peer communication channel may be activated. For example, a peer communication channel may be activated in response to a remote start command being executed, wherein the remote start command specifies that a peer receiver application is to be started. Starting a peer receiver application may enable a peer receiver to participate in discovery. For example, starting a peer receiver application may initiate the transmission of a beacon packet that publishes a peer communication channel, thereby activating the peer communication channel. Additionally or alternatively, starting a peer receiver application may begin a process for capturing and processing any probe request packets received. Starting a peer receiver application may cause an address to be assigned to an interface of a receiving device associated with a peer communication channel. Each time a peer receiver application is started, the address may be different. Therefore, a magic packet sent to an address associated with a peer communication channel cannot be used to cause a receiving device to transition to a higher power state. The address of an interface of a receiving device associated with a peer communication channel and the payload of a beacon packet may be sent.
[0083] At 790, a connection with a peer device may be formed via a peer-to-peer communication channel. For example, a negotiated handshake between a peer device and a receiving device may be used to form the connection. The handshake may include receiving a connection request from a peer device to a receiving device, and sending a response to the peer device. When a point-to-point communication channel is formed, the receiving device may directly receive information from the peer device via the point-to-point communication channel.
[0084] Figure 8 An example method 800 is shown for initiating point-to-point communication between a transmitting device and a receiving device via an inactive first communication channel. For example, the method 800 may be performed by a transmitting device (eg, Figure 1-4 any one of the sending devices 120, 230, 310, and 410) to execute.
[0085] At 810, an inactive first communication channel and an active second communication channel may be selected. As a specific example, the inactive first communication channel may use Wi-Fi Direct and / or Miracast communication protocols, and the active second communication channel may use infrastructure Wi-Fi, Ethernet, or Bluetooth communication protocols. The active second communication channel is a channel enabled on a sending device and may be used by the sending device to send network packets. The inactive first communication channel is a channel that is not currently enabled on the sending device. The inactive first communication channel may be selected by searching a connection data structure or other database to find an entry with a communication channel that matches an enabled communication channel of the receiving device. As a specific example, the receiving device may be connected to a Wi-Fi network with a specific SSID. The connection data structure may be searched to find all entries with fields that match a specific SSID. Each of the entries may include a device identifier and a pair of communication channels, one of which is an infrastructure channel and one of which is a peer channel. The Wi-Fi network with a specific SSID may be an active second communication channel, and the inactive first communication channel may be selected from any of the peer channels specified in the matching entry.
[0086] At 820, a receiving device may be selected from a plurality of devices associated with the first channel and the second channel. Continuing with the above example, the receiving device may be selected from any entry containing an inactive first communication channel and an active second communication channel. The receiving device may be specified by a device identifier of the selected entry. The connection data structure may include an entry corresponding to a recently used or most frequently used point-to-point communication channel, and thus the selected receiving device may be selected from the recently used or most frequently used receiving devices.
[0087] At 830, an address associated with the second communication channel of the receiving device may be determined. For example, the address may be specified in an entry of a connection data structure. The address may be a link layer address, such as a MAC address.
[0088] At 840, a packet addressed to the receiving device via the second communication channel may be sent to the receiving device, and the packet may cause the receiving device to begin a sequence for activating the first communication channel. As an example, the packet may be a magic packet that includes a magic packet string and a string containing an address repeated multiple times. As another example, the packet may be a remote start command that specifies that a peer receiver application is to be started. The sequence for activating the first communication channel may include: transitioning the receiving device from a lower power state to a higher power state; starting the peer receiver application; transmitting a beacon frame announcing the second communication channel; sending a request to form a point-to-point connection from the sending device to the receiving device; and / or sending a response confirming the formation of a point-to-point connection from the receiving device to the sending device.
[0089] At 850, communication over the first communication channel may be initiated from the transmitting device to the receiving device at a different address associated with the first communication channel. For example, when the second communication channel is activated, a different address may be assigned to the receiving device, and the different address may be published in a beacon frame transmitted from the receiving device. In contrast, the address associated with the second communication channel of the receiving device may be constant. For example, the address associated with the second communication channel may be a MAC address specified during the manufacture of the receiving device. Thus, the transmitting device may cause the inactive first communication channel to be activated by sending a packet addressed to an address on the second communication channel to the receiving device via the second communication channel, the address being different from the address that will be used to send the packet to the receiving device via the first communication channel.
[0090] Other Examples of Disclosure Technology
[0091]
[0066] Based on the examples discussed above, additional examples of the disclosed subject matter are discussed herein.
[0092] In one embodiment, a computing system includes: a network interface controller configured to communicate via an infrastructure communication channel; and a processor in communication with the network interface controller. The processor is configured to identify a peer device addressable via the infrastructure communication channel and associated with an inactive point-to-point communication channel. The processor is configured to use the network interface controller to send a network packet to the peer device via the infrastructure communication channel so as to initiate an activation sequence for the inactive point-to-point communication channel.
[0093] The network packet may be a magic packet that includes a media access control address of a peer device on an infrastructure channel. The activation sequence may include transitioning a peer device from a lower power state to a higher power state. The network packet may include a command for remotely launching a software application that activates a peer-to-peer communication channel associated with the peer device. The inactive peer-to-peer communication channel associated with the peer device may be a Wi-Fi Direct channel. As an example, the peer communication channel may use the Miracast communication protocol via Wi-Fi Direct. Identifying a peer device may include searching for a data structure that identifies a recently used peer device. Identifying a peer device may include identifying a device identifier associated with an infrastructure communication channel and an inactive peer-to-peer communication channel. In response to forming a connection with a peer device via a peer-to-peer communication channel, a device identifier may be received. Identifying a device identifier associated with an infrastructure communication channel and an inactive peer-to-peer communication channel may include accessing a remote directory accessible via the infrastructure communication channel. In response to forming a connection with a peer device via a peer-to-peer communication channel, an address of a peer device on the infrastructure communication channel may be received.
[0094] In another embodiment, a method may be used to initiate point-to-point communication between a sending device and a receiving device over an inactive first communication channel. The method includes: determining an address associated with a second communication channel of the receiving device; sending a packet addressed to the receiving device over the second communication channel so that the receiving device begins a sequence for activating the first communication channel; initiating communication from the sending device to the receiving device over the first communication channel at a different address associated with the first communication channel.
[0095] The first communication channel may be a Miracast channel and the second communication channel may be an infrastructure IEEE 802.11 channel. The packet sent may include a command for a remote start service executed on a receiving device. The address associated with the second communication channel may be a media access control address of the receiving device. The packet sent is a magic packet including the media access control address of the receiving device, and the magic packet is configured to wake up the receiving device. Determining the address associated with the second communication channel of the receiving device may include caching a device identifier associated with the receiving device when the first communication channel is active. The device identifier associated with the receiving device is received in response to a request to form a point-to-point connection between the sending device and the receiving device. Initiating communication from the sending device to the receiving device via the first communication channel includes sending packets addressed to different addresses via the first communication channel.
[0096] In another embodiment, one or more computer-readable media may be used to store computer-executable instructions that, when executed by a computer, cause the computer to perform the following operations: determining an address associated with a second communication channel of a receiving device; sending a packet addressed to the receiving device over the second communication channel so that the receiving device begins a sequence for activating a first communication channel; and initiating communication from the sending device to the receiving device over the first communication channel at a different address associated with the first communication channel.
[0097] In another embodiment, a method may be used to initiate a point-to-point communication between a transmitting device and a receiving device. The method includes, at a receiving device, receiving a remote start command from a transmitting device for activating a point-to-point communication channel. The remote start command addresses an address of the receiving device associated with a communication channel different from the point-to-point communication channel. The method includes: in response to receiving the remote start command, enabling the receiving device to participate in a discovery protocol with the transmitting device to determine the properties of the point-to-point communication channel. As an example, enabling the receiving device to participate in the discovery protocol with the transmitting device may include sending a beacon frame through the point-to-point communication channel, wherein the beacon frame publishes the properties of the point-to-point communication channel. As another example, enabling the receiving device to participate in the discovery protocol with the transmitting device may include starting or waking up a process for sending and / or receiving a probe request packet, wherein the probe request packet publishes the properties of the point-to-point communication channel.
[0098] The method may also include: at the receiving device, receiving a request from the sending device to form a connection through a point-to-point communication channel. The method may also include sending a response to the request through the point-to-point communication channel. The response includes a device identifier of the receiving device, and the device identifier is common to the point-to-point communication channel and a communication channel different from the point-to-point communication channel. The method may also include: at the receiving device, receiving a request from the sending device to form a connection through a point-to-point communication channel. The method may also include sending a response to the request through the point-to-point communication channel. The response may include an address of the receiving device associated with a communication channel different from the point-to-point communication channel.
[0099] In another embodiment, one or more computer-readable media may be used to store computer-executable instructions that, when executed by a computer, cause the computer to perform operations. The operations include receiving a remote start command from a sending device at a receiving device to activate a point-to-point communication channel. The remote start command is addressed to an address of a receiving device associated with a communication channel different from the point-to-point communication channel. The operations include, in response to receiving the remote start command, sending a beacon frame over the point-to-point communication channel. The beacon frame publishes attributes of the point-to-point communication channel.
[0100] Sample computing environment
[0101] Fig. 9 A generalized example of a suitable computing environment 900 is shown in which the described embodiments, techniques, and technologies (including supporting a multi-language playback framework) may be implemented.
[0102] The computing environment 900 is not intended to impose any limitations on the scope of use or functionality of the technology, as the technology can be implemented in different general-purpose or special-purpose computing environments. For example, the disclosed technology can be implemented using other computer system configurations, including handheld devices, multiprocessor systems, programmable consumer electronics, network PCs, minicomputers, mainframe computers, etc. The disclosed technology can also be practiced in a distributed computing environment, where tasks are performed by remote processing devices linked through a communication network. In a distributed computing environment, program modules can be located in local and remote memory storage devices.
[0103] refer to Fig. 9 , the computing environment 900 includes at least one processing unit 910 and a memory 920. Fig. 9 , the most basic configuration 930 is included in the dotted line. The processing unit 910 executes computer executable instructions and can be a real or virtual processor. In a multi-processing system, multiple processing units execute computer executable instructions to increase processing power, and therefore, multiple processors can run at the same time. The memory 920 can be a volatile memory (e.g., registers, caches, RAM), a non-volatile memory (e.g., ROM, EEPROM, flash memory, etc.), or some combination of the two. The memory 920 stores software 980, images, and videos that can implement the technology described herein, for example. The computing environment may have additional features. For example, the computing environment 900 includes a storage unit 940, one or more input devices 950, one or more output devices 960, and one or more communication connections 970. An interconnection mechanism (not shown) such as a bus, a controller, or a network interconnects the components of the computing environment 900. Generally speaking, the operating system software (not shown) provides an operating environment for other software executed in the computing environment 900, and coordinates the activities of the components of the computing environment 900.
[0104] Storage unit 940 may be removable or non-removable and include disks, magnetic tapes or cartridges, CD-ROMs, CD-RWs, DVDs, or any other medium that can be used to store information and that can be accessed within computing environment 900. Storage unit 940 stores instructions for software 980, plug-in data, and messages that may be used to implement the techniques described herein.
[0105] Input device 950 may be a touch input device such as a keyboard, keypad, mouse, touch screen display, pen or trackball, voice input device, scanning device, or another device that provides input to computing environment 900. For audio, input device 950 may be a sound card or similar device that accepts audio input in analog or digital form, or a CD-ROM reader that provides audio samples to computing environment 900. Output device 960 may be a display, printer, speaker, CD writer, or another device that provides output from computing environment 900.
[0106] The communication connection 970 enables communication to another computing entity through a communication medium (e.g., a connection network). The communication medium conveys information such as computer executable instructions, compressed graphics information, video, or other data in a modulated data signal. The communication connection 970 is not limited to a wired connection (e.g., megabit or gigabit Ethernet, Infiniband, fiber channels connected by cables or optical fibers) and also includes wireless technologies (e.g., RF connections via Bluetooth, WiFi (IEEE802.11a / b / n), WiMax, cellular, satellite, laser, infrared), and other suitable communication connections for providing network connections for the disclosed agents, bridges, and agent data consumers. In a virtual host environment, the communication connection can be a virtualized network connection provided by the virtual host.
[0107] Some embodiments of the disclosed methods may be performed using computer-executable instructions that implement all or a portion of the disclosed techniques in a computing cloud 990. For example, the disclosed methods may be performed on a processing unit 910 located in a computing environment 930, or the disclosed methods may be performed on a server located in a computing cloud 990.
[0108] Computer-readable media is any available media that can be accessed within the computing environment 900. By way of example and not limitation, with the computing environment 900, computer-readable media include memory 920 and / or storage unit 940. It should be readily understood that the term computer-readable storage media includes media used for data storage (e.g., memory 920 and storage unit 940) and does not include transmission media such as modulated data signals.
[0109] In view of the many possible embodiments to which the principles of the disclosed subject matter may be applied, it should be recognized that the illustrated embodiments are merely preferred examples and should not be viewed as limiting the scope of the claims to those preferred embodiments. Rather, the scope of the claimed subject matter is defined by the following claims. We therefore claim all such inventions that fall within the scope of these claims.
Claims
1. One or more computer servers operating as part of a cloud environment, the one or more computer servers being configured via computer executable instructions to perform operations for initiating communications with a remote computing device over a first communication channel, the operations comprising: determining an address associated with a second communication channel of the remote computing device, wherein determining the address associated with the second communication channel of the remote computing device comprises obtaining a cached device identifier associated with the remote computing device, wherein the device identifier associated with the remote computing device was cached during an earlier connection through the first communication channel; sending a network packet addressed to the remote computing device over the second communication channel to cause the remote computing device to begin a sequence for activating the first communication channel; and Communications are initiated over the first communications channel with the remote computing device at a different address associated with the first communications channel.
2. One or more computer servers according to claim 1, wherein: The network packets addressed to the remote computing device over the second communication channel include user credentials.
3. The one or more computer servers of claim 1, wherein: The network packets addressed to the remote computing device over the second communication channel include a remote launch command for execution at the remote computing device dependent upon user permission.
4. The one or more computer servers of claim 1, wherein: The sequence for activating the first communication channel includes a request to activate a peer to peer communication channel at the remote computing device, and wherein activation of the peer to peer communication channel at the remote computing device is contingent upon user permission.
5. The one or more computer servers of claim 1, wherein: The first communication channel is a peer to peer communication channel and the second communication channel is an infrastructure communication channel.
6. The one or more computer servers of claim 1, wherein: The first communication channel is a Miracast channel and the second communication channel is an infrastructure IEEE 802.11 channel.
7. The one or more computer servers of claim 1, wherein: The transmitted packet includes a command for a remotely initiated service running on the remote computing device.
8. The one or more computer servers of claim 1, wherein: The address associated with the second communication channel is a media access control address of the remote computing device.
9. The one or more computer servers of claim 8, wherein: The transmitted packet is a magic packet containing the media access control address of the remote computing device, and the magic packet is configured to wake up the remote computing device.
10. The one or more computer servers of claim 1, wherein: Initiating communications with the remote computing device over the first communications channel includes sending a network packet addressed to the different address over the first communications channel.
11. The one or more computer servers of claim 1, wherein: The network packet is a magic packet that includes a media access control address of the remote computing device on the second communication channel, and the sequence for activating the first communication channel includes transitioning the remote computing device from a low power state to a high power state.
12. The one or more computer servers of claim 1, wherein: The first communication channel includes wireless communication without using a wireless access point as an intermediary.
13. A method of initiating communication with a remote computing device via a first communication channel, the method comprising: determining an address associated with a second communication channel of the remote computing device, wherein determining the address associated with the second communication channel of the remote computing device comprises obtaining a cached device identifier associated with the remote computing device, wherein the device identifier associated with the remote computing device was cached during an earlier connection through the first communication channel; sending a network packet addressed to the remote computing device over the second communication channel to cause the remote computing device to begin a sequence for activating the first communication channel; and Communications are initiated over the first communications channel with the remote computing device at a different address associated with the first communications channel.
14. The method according to claim 13, wherein: The network packets addressed to the remote computing device over the second communication channel include user credentials.
15. The method according to claim 13, wherein: The network packets addressed to the remote computing device over the second communication channel include a remote launch command for execution at the remote computing device dependent upon user permission.
16. The method according to claim 13, wherein: The sequence for activating the first communication channel includes a request to activate a peer to peer communication channel at the remote computing device, and wherein activation of the peer to peer communication channel at the remote computing device is contingent upon user permission.
17. The method according to claim 13, wherein: The first communication channel is a peer to peer communication channel and the second communication channel is an infrastructure communication channel.
18. The method according to claim 13, wherein: The network packet is a magic packet that includes a media access control address of the remote computing device on the second communication channel, and the sequence for activating the first communication channel includes transitioning the remote computing device from a low power state to a high power state.
19. The method according to claim 13, wherein: The first communication channel includes wireless communication without using a wireless access point as an intermediary.
20. A method of initiating communication with a remote computing device via a first communication channel, the method comprising: identifying the remote computing device addressable via a second communication channel, wherein the remote computing device is also associated with the first communication channel that requires activation, and wherein identifying the remote computing device comprises identifying a device identifier associated with the second communication channel and the first communication channel and cached during an earlier connection via the first communication channel; and Sending a network packet addressed to the remote computing device over the second communication channel to initiate an activation sequence of the first communication channel, wherein the device identifier is received in response to forming a connection over the first communication channel with the remote computing device at a different address associated with the first communication channel.
21. The method according to claim 20, wherein: The network packets addressed to the remote computing device over the second communication channel include user credentials.
22. The method according to claim 20, wherein: The first communication channel comprises wireless communications directly with the remote computing device without the intermediary of a wireless access point.
