Patent Description:
It is with respect to these and other general considerations that embodiments have been described. Also, although relatively specific problems have been discussed, it should be understood that the embodiments should not be limited to solving the specific problems identified in the background.

<CIT> discloses an authentication technique between a controlled device and a control device. <CIT> discloses an authentication technique between a vehicle and a portable machine.

In one aspect there is provided a method according to claim <NUM>. In another aspect there is provided a system according to claim <NUM>.

Embodiments disclosed herein enable a user computing device to manage a controlled device only when the user computer device is physically proximate to the controlled device. In one embodiment, two different communication channels are established between the user computing device and the controlled device. One communication channel is a short-range wireless connection and the other communication channel is a network channel, such as a cloud-based network connection. The controlled device repeatedly transmits a rotating code over the short-range wireless channel and the user computing device sends the last received code back to the controlled device over the network channel. As used herein, the phrase "rotating code" is a code that changes periodically or at select times. For example, the rotating code can change after a certain number of codes are transmitted or the code may change every N seconds. The user computing device is enabled to manage the controlled device when the code transmitted by the user computing device matches the code transmitted (or one of several codes recently transmitted) by the controlled device.

In another embodiment, the user computing device is enabled to manage the controlled device when the user computing device and the controlled device are connected to the same access point. In yet another embodiment, the controlled device repeatedly provides a rotating image and/or a rotating audio signal (e.g., a rotating code) and the user computing device sends the last received code back to the controlled device over the network channel. The user computing device is enabled to manage the controlled device when the code transmitted by the user computing device matches a recent code provided by the controlled device (e.g., one of several codes recently provided).

In one aspect, a method includes a controlled device repeatedly providing a rotating code that changes after an expiration of a time period. The controlled device repeatedly receives a received code from a user computing device over a network channel. The controlled device enables the user computing device to manage the controlled device over the network channel based on a determination that each received code from the user computing device matches one or more codes recently provided by the controlled device. For example, each received code can match the most recently provided code or one of several recently provided codes.

In another aspect, a controlled device includes a network communication device, a processing device operably connected to the network communication device, and a memory operably connected to the processing device. The memory stores instructions that when executed by the processing device, cause the controlled device to provide a rotating code at select times, where the rotating code changes after every expiration of a time period. A code is received by the controlled device from a user computing device over a network channel using the network communication device. A determination is made as to whether the received code matches a recently provided rotating code. Based on a determination that the received code matches the recently provided rotating code, the user computing device is enabled to manage the controlled device over the network channel.

In yet another aspect, a computer-implemented method includes a controlled device transmitting a rotating code over a short-range wireless connection to a user computing device. The rotating code is transmitted periodically or at select times and the rotating code changes periodically. The rotating code includes at least a first code and a second code that differs from the first code. The controlled device receives a third code from the user computing device over a network channel. Based on a determination that the third code matches one of the first code or the second code, the user computing device is enabled to manage the controlled device. The controlled device receives a heartbeat signal from the user computing device over the network channel, where the heartbeat signal includes the rotating code. The controlled device continues to enable the user computing device to manage the controlled device as long as the last received rotating code in the heartbeat signal matches a current rotating code transmitted over the short-range wireless connection.

Non-limiting and non-exhaustive examples are described with reference to the following Figures. Identical reference numerals have been used, where possible, to designate identical features that are common to the figures.

In the following detailed description, references are made to the accompanying drawings that form a part hereof, and in which are shown by way of illustrations specific embodiments or examples. These aspects may be combined, other aspects may be utilized, and structural changes may be made without departing from the present disclosure. Embodiments may be practiced as methods, systems or devices. Accordingly, embodiments may take the form of a hardware implementation, an entirely software implementation, or an implementation combining software and hardware aspects. The following detailed description is therefore not to be taken in a limiting sense, and the scope of the present disclosure is defined by the appended claims and their equivalents.

Embodiments described herein provide techniques for enabling a user computing device to manage a controlled device only when the user computer device is physically proximate to the controlled device. In one embodiment, two different communication channels are established between the user computing device and the controlled device. One communication channel is a short-range wireless channel and the other communication channel is a network channel, such as a cloud-based network connection. The controlled device transmits a rotating or changing code over the short-range wireless channel and the user computing device sends the last received code back to the controlled device over the network channel. The user computing device is enabled to manage the controlled device when the code transmitted by the user computing device matches the code transmitted (or one of several codes recently transmitted) by the controlled device.

In another embodiment, the user computing device is enabled to manage the controlled device when the user computing device and the controlled device are connected to the same access point. The physical proximity of the user computing device to the controlled device can be confirmed using a location-based system, such as a Global Positioning System. In yet another embodiment, the controlled device provides a rotating code that is captured or obtained by the user computing device. The user computing device sends the last received code back to the controlled device over the network channel. The user computing device is enabled to manage the controlled device when the code transmitted by the user computing device matches the code transmitted (or one of several codes recently transmitted) by the controlled device.

The controlled device can be any suitable device, including, but not limited to, a television, a projector, a display, and one or more speakers. Embodiments described herein relate to a user computing device managing a presentation displayed on a controlled device. Management of the presentation includes controlling the presentation and interacting with the presentation (e.g., submitting input, receiving output, closing the presentation, opening one or more presentations). In a non-limiting example, a user computing device can be used to stop or start a slide presentation displayed on a display or a television. Additionally or alternatively, the user computing device can be used to modify the presentation by adding or deleting slides in the slide presentation. In some instances, the user computing device is used to post notes, comments, or a document to a presentation (e.g., a web site).

In other embodiments, the controlled device is a projector or one or more speakers. In such example embodiments, the user computing device can be used to adjust the volume of an audio playback on the speaker(s) or changing a slide displayed by the projector to another slide. In still other embodiments, the user computing device can control and/or interact with any operation, application, or setting on the controlled device.

As used herein, the phrases "rotating code", "rotating image", and "rotating audio signal" are a code that changes periodically or at select times. For example, the rotating code can change after a certain number of codes are transmitted or the code may change every N seconds.

Non-limiting and non-exhaustive examples are described with reference to the following <FIG>. Identical reference numerals have been used, where possible, to designate identical features that are common to the figures.

<FIG> illustrates a first example system in which a user computing device controls a controlled device. The system <NUM> includes a user computing device <NUM> and a controlled device <NUM>. The user computing device <NUM> includes one or more short-range receivers or transceivers and one or more network communication devices (see e.g., <NUM> and <NUM> in <FIG>). The controlled device includes one or more short-range wireless transmitters or transceivers (represented by short-range wireless transmitter <NUM>), a display device <NUM>, one or more network communication devices (represented by network communication device <NUM>), and a memory <NUM> storing one or more applications (represented by application <NUM>) that are used to display and manage a presentation displayed via a presentation application. The term "transmitter" used herein includes both a transmitter and a transceiver and the term "receiver" includes both a receiver and a transceiver.

In one embodiment, the controlled device <NUM> is configured to transmit a short-range wireless signal <NUM> using the short-range wireless transmitter <NUM>. Example short-range wireless transmitters include, but are not limited to, a BLUETOOTH or a BLUETOOTH LOW ENERGY (BLE) beacon and an infrared (IR) transmitter. The user computing device <NUM> is configured to receive the short-range wireless signal <NUM> using the short-range wireless receiver. Example short-range wireless receivers include, but are not limited to, a BLUETOOTH or a BLE receiver and an IR receiver.

The user computing device <NUM> and the controlled device <NUM> are further configured to connect to each other via one or more networks (represented by network <NUM>). The network channel <NUM> is implemented as a wired and/or a wireless network channel. The network <NUM> is illustrative of any suitable type of network, for example, an intranet, and/or a distributed computing network (e.g., the Internet). For example, the distributed computing network can provide a cloud-based network connection. The network channel is also representative of any suitable type of network channel. Example network channels include, but are not limited to, a Wi-Fi network channel, a wired network channel or a combination thereof.

In one embodiment, the presentation application <NUM> enables a user <NUM> to manage over the network channel <NUM> one or more presentations (represented by presentation <NUM>) that is displayed on the display device <NUM>. In a non-limiting example, the user <NUM>, via the presentation application <NUM>, starts and/or stops a slideshow presented on the display device <NUM>. Additionally or alternatively, the user <NUM> modifies the order of the images and/or adds images to, or deletes images from, the slideshow.

As will be described in more detail in conjunction with <FIG>, in one embodiment the user computing device <NUM> is able to manage the presentation <NUM> when a short-range wireless signal <NUM> that includes a rotating code is transmitted from the controlled device <NUM> periodically or at select times over a short range wireless channel. In one aspect, the short range wireless channel is a one-way channel, such as a broadcast channel. In another instance, the short range wireless channel is a wireless channel that is established between the controlled device and the user computing device.

The user computing device transmits the rotating code back to the controlled device <NUM> over the network channel <NUM>. In one embodiment, the code is included in a signal that is transmitted to the controlled device periodically or at select times. An example signal is a heartbeat signal that is sent periodically or at select times.

When the code transmitted back to the controlled device <NUM> over the network channel <NUM> matches one or more codes recently transmitted by the controlled device <NUM> in a short-range wireless signal <NUM>, the user <NUM> can manage the presentation <NUM> displayed on the display device <NUM>. As discussed earlier, in one embodiment, the controlled device <NUM> transmits the short-range wireless signal <NUM> with the code at select times or periodically. In another embodiment, the controlled device <NUM> broadcasts the short-range wireless signal <NUM> with the code only after a user computing device <NUM> attempts to connect to the controlled device <NUM> through the network channel <NUM>.

In another embodiment, the controlled device can present the code on the display device <NUM> or output the code using the audio device <NUM>. For example, the controlled device <NUM> may display a rotating image and the user computing device <NUM> captures each image via an image capture device. The user computing device <NUM> then sends the recently captured image (or data associated with the image) to the controlled device <NUM> to enable the controlled device <NUM> to confirm the proximity of the user computing device <NUM> to the controlled device <NUM>. A non-limiting example of an image is a QR code (or the code is encoded in the QR code). Additionally or alternatively, the audio device <NUM> outputs a rotating audio signal at select times that the user computing device <NUM> captures and transmits to the controlled device <NUM>. The frequency or frequencies of the audio signal can be at a frequency level that humans can hear or at a frequency level that humans cannot hear.

In some instances, a user <NUM> can share, mirror, or cast the screen on the user computing device <NUM> onto the display device <NUM> of the controlled device <NUM> using the network channel <NUM>. Additionally or alternatively, audio may be transmitted from the user computing device <NUM> to the controlled device <NUM> using the network channel <NUM>. The audio may be associated with, or separate from, the screencasting, screen sharing, or screen mirroring. In a non-limiting example, a user <NUM> can cast a presentation displayed on the user computing device <NUM> onto the display device <NUM> of the controlled device <NUM>. An example method of screencasting is described in more detail in conjunction with <FIG>.

In some embodiments, the user computing device <NUM> can be a personal or handheld computing device. For example, the user computing device <NUM> may be a smart phone, a tablet, a smart watch or other wearable computing device, a laptop computer, a gaming device/computer (e.g., Xbox), and the like. This list of user computing devices <NUM> is for example purposes only and should not be considered as limiting. Any suitable user computing device that is configured to receive a rotating code over a short-range wireless channel, transmit the code over a network channel, and manage a controlled device may employ aspects of the disclosure. Similarly, any user computing device that is configured to capture a rotating image or sound, transmit the image or sound over a network channel, and manage a controlled device can employ aspects of the disclosure.

Additionally, the controlled device <NUM> may be a smart phone, a tablet, a smart watch or other wearable computing device, a laptop computer, a desktop computer, a gaming device/computer (e.g., Xbox), a television, a projector, a sound system, one or more speakers in the sound system, a camera, and the like. The list of controlled devices <NUM> is for example purposes only and should not be considered as limiting. Any suitable controlled device that is configured to provide a rotating code at select times or periodically, receive the rotating code over a network channel, and enable a user computing device to manage a presentation or the controlled device may employ aspects of the disclosure.

<FIG> depicts a flowchart of a first method of managing a controlled device shown in <FIG>. Initially, a user computing device is positioned to be physically proximate to the controlled device (block <NUM>). At block <NUM>, the controlled device repeatedly determines the user computing device is physically proximate to the controlled device. For example, the controlled device transmits a rotating code over a short range wireless channel, displays a rotating code, and/or emits a rotating code that the user computing device receives or captures and transmits back to the controlled device.

As long as the user computing device is physically proximate to the controlled device and the controlled device is able to confirm the proximity based on the codes received from the user computing device, the user computing device is able to manage the controlled device at block <NUM>. When the user computing device is no longer physically proximate to the controlled device, the user computing device will not receive or capture the new or recently changed codes. Accordingly, the user computing device will not transmit the most recent codes back to the controlled device. Accordingly, the controlled device determines the user computing device is not physically proximate to the controlled device. Based on this determination, the controlled device disconnects the user computing device from the controlled device and/or from the application running on the controlled device to prevent the user computing device from managing the controlled device.

<FIG> illustrate a flowchart of a first example method of managing the controlled device shown in <FIG>. As described earlier, the user computing device is used to manage one or more presentations displayed on the controlled device. Initially, the user computing device is positioned proximate to the controlled device to receive the short-range wireless signal (block <NUM>). When the controlled device transmits the rotating code over the short-range wireless channel, the distance between the user computing device and the controlled device is based on the range of the short-range wireless transmitter or transceiver. For example, the range of a class <NUM> BLUETOOTH transmitter is approximately ten meters while the range of a class three BLUETOOTH transmitter is less than ten meters.

The short-range wireless transmitter within or operably connected to the controlled device transmits a short-range wireless signal that includes an M-bit code to the user computing device (block <NUM>). The short-range wireless signal can include additional information in addition to the M-bit code, such as an identifier associated with the short-range wireless transmitter. In one embodiment, the short-range wireless signal is a wireless signal that is transmitted periodically or at select times and the M-bit code is an M-bit code or pseudo-random M-bit code that changes periodically or at select times. For example, the pseudo-random M-bit code is a <NUM>-bit pseudo-random code that changes every N seconds or after P codes have been transmitted, where M and P are each a number that is greater than one.

When the controlled device displays the rotating code and/or emits an audio of the rotating code, the distance between the user computing device and the controlled device is based at least on the resolution and/or size of the image on the display or the volume of the audio. In general, the user computing device is typically within the same area of the controlled device so that the user computing device is able to capture the rotating code. For example, the user computing device can be in the same room as the controlled device or within a given distance from the controlled device (e.g., five to ten feet).

The user computing device receives or captures the rotating code at block <NUM> when the user computing device is within the range of the short-range wireless transmitter/transceiver or within the same area as the controlled device. The user computing device then transmits the received or captured code back to the controlled device over the network channel (block <NUM>). In one embodiment, the user computing device transmits the code to the controlled device periodically or at select times (e.g., after receiving or capturing the most recent code). For example, the user computing device can transmit a heartbeat signal that includes the last code received over the short-range wireless channel. In some instances, the controlled device announces the heartbeat period after the user computing device connects to the controlled device over the network channel.

Next, as shown at block <NUM>, the controlled device determines if the code received from the user computing device over the network channel matches one or more codes recently transmitted over the short-range wireless channel, presented on the display, and/or provided via an audio device. In one aspect, the controlled device determines if the code received from the user computing device matches the last transmitted or provided code. In another embodiment, the controlled device determines if the code received from the user computing device matches one of the last D codes transmitted to the user computing device, where D is a number equal to or greater than two. For example, the controlled device can determine if the code received from the user computing device matches the last code or the second to the last code transmitted over the short-range wireless channel.

When the code received from the user computing device over the network channel does not match the last code (or the last D codes), the user computing device is not enabled to manage the presentation (block <NUM>). When the code received from the user computing device over the network channel matches the last code (or one of the last D codes), the controlled device determines the user computing device is physically proximate to the controlled device (block <NUM>). At block <NUM>, the user computing device is operably connected to the controlled device to enable the user computing device to manage the controlled device (e.g., manage a presentation displayed by the controlled device). After the user computing device is operably connected to the controlled device, the controlled device continues to transmit or provide the rotating code periodically or at select times (block <NUM>). The user computing device continues to transmit the last received code to the controlled device via the network channel (block <NUM>).

At block <NUM>, the controlled device determines if each code it receives from the user computing device over the network channel matches the last provided code (or one of the last D provided codes). If so, the controlled device determines the user computing device remains proximate to the controlled device and the user computing device remains able to manage the controlled device via the network channel (e.g., manage the presentation displayed by the controlled device) (blocks <NUM>, <NUM>). The process then returns to block <NUM>.

When a code received by the controlled device over the network channel does not match the last provided code (or one of the last D provided codes), the controlled device determines the user computing device is not physically proximate to the controlled device and disables the ability of the user computing device to manage the controlled device (blocks <NUM>, <NUM>). For example, the controlled device can disable or disconnect the network channel between the controlled device and the user computing device.

Although <FIG> describe transmitting the rotating code to the user computing device via the short-range wireless channel and the user computing device sending the code to the controlled device over the network channel, other embodiments are not limited to this configuration. In another embodiment, the code can be transmitted to the user computing device over the short-range wireless channel and the user computing device can send the code back to the controlled device over the short-range wireless channel. So long as the received code matches the transmitted code (or one of the last D transmitted codes), the user computing device is able to manage the controlled device over the network channel.

<FIG> depicts a first example method of confirming the user computing device is physically proximate to the controlled device. Initially, as shown in block <NUM>, the controlled device transmits the rotating code over the short-range wireless channel periodically or at select times. In one embodiment, the short-range wireless channel is a one way transmission or broadcast of the rotating code and any computing device within the range of the short-range wireless channel is able to receive the rotating code. Alternatively, in another embodiment, the short-range wireless channel is a two-way communication channel established between the user computing device and the controlled device. As described earlier, the code is an M-bit code or pseudo-random M-bit code that changes periodically or at select times (e.g., at the expiration of a given period of time).

When the user computing device is physically proximate to the controlled device, the user computing device receives the rotating code over the short-range wireless channel (block <NUM>). The user computing device then transmits the most recently received code back to the controlled device (block <NUM>). In one embodiment, the user computing device sends the most recently received code to the controlled device over the network channel. In another embodiment, the user computing device transmits the most recently received code to the controlled device over the short-range wireless channel.

<FIG> illustrates a second example method of confirming the user computing device is physically proximate to the controlled device. Initially, the controlled device displays the rotating code and/or emits an audio signal of the rotating code periodically or at select times (block <NUM>). In one embodiment, the rotating code is an image that changes at select times (e.g., after an expiration of a given period of time). Additionally or alternatively, the rotating code is an audio signal that changes at select times.

When the user computing device is physically proximate to the controlled device, the user computing device captures the rotating code and transmits the most recently received code to the controlled device over the network channel (block <NUM>). For example, the user computing device can capture an image of the rotating code and transmit the image (or data associated with the image) to the controlled device. In another example, the user computing device may record the audio signal and transmit the audio signal (or data associated with the audio signal) to the controlled device.

<FIG> depicts example techniques the controlled device can provide the rotating code. In one aspect, a display device <NUM> is included within, or is operably connected to, the controlled device. A rotating image <NUM> can be displayed by the display device at select times. As described earlier, the rotating image changes at select times (e.g., after N seconds). The rotating image <NUM> can be displayed continuously or at select times.

Additionally or alternatively, the controlled device includes one or more speakers <NUM> that emit a rotating audio signal <NUM> at select times. Like the rotating image, the rotating audio signal changes at select times. A user computing device can capture the rotating image <NUM> and/or the rotating audio signal <NUM> and transmit the most recently captured image and/or audio signal (or data associated with the image or audio signal) to the controlled device.

<FIG> illustrates a flowchart of an example method of generating and transmitting a code to a user computing device. The method can be used when the short range wireless channel is a one-way communication or broadcast channel. Initially, the controlled device generates an M-bit code, where M is a number greater than one (block <NUM>). In an example embodiment, the M-bit code is a pseudo-random <NUM>-bit code. Next, as shown in block <NUM>, the controlled device transmits a short-range wireless signal that includes the code to the user computing device using the short-range wireless transmitter. The controlled device transmits the code periodically or at select times. A determination is made at block <NUM> as to whether a time period associated with the code has expired. If not, the method returns to block <NUM>. When a determination at block <NUM> is that the time period has ended, the process passes to block <NUM> where a new M-bit code is generated. The method then returns to block <NUM>.

In embodiments where the short range wireless channel is a two-way communication channel established between the controlled device and a user computing device, the controlled device generates and transmits the M-bit code only when the user computing device is proximate to the controlled device. In such embodiments, a determination is made at select times as to whether the connection between the user computing device and the presentation displayed by the presentation control application on the controlled device has been disconnected or disabled such that the user computing device is unable to manage the controlled device. If not, the method returns to block <NUM> repeats until the user computing device is unable to manage the controlled device. The controlled device stops transmitting the M-bit code in the short-range wireless signal when the user computing device is unable to manage the controlled device. In such situations, the controlled device may continue to generate the M-bit code to enable the controlled device to determine the user computing device is no longer physically proximate to the controlled device. For example, the user computing device can continue to send the last received code when the user computing device is no longer physically proximate to the controlled device. However, the last received code transmitted by the user computing device will not change because the user computing device is not receiving or capturing new codes. Having the controlled device continue to generate new codes periodically or at select times enables the controlled device to determine the user computing device is not physically proximate to the controlled device because the last received code sent by the user computing device will not match the new codes.

<FIG> depicts a second example system in which a user computing device manages a controlled device. The system <NUM> includes the user computing device <NUM> and a controlled device <NUM>. The user computing device <NUM> includes one or more location-based services (represented by location-based service (LS) <NUM>) and one or more network communication devices (see e.g., <NUM> in <FIG>). The controlled device includes a display device <NUM>, a network communication device <NUM>, and a memory <NUM> storing one or more presentation control applications (represented by application <NUM>).

The user computing device <NUM> and the controlled device <NUM> are each configured to connect to one or more network access points (represented by access point (AP) <NUM>). The access point <NUM> can provide access to an intranet and/or a distributed computing network (e.g., the Internet). As will be described in more detail in conjunction with <FIG>, the user computing device <NUM> is able to manage the presentation <NUM> when both the user computing device <NUM> and the controlled device <NUM> are operably connected to the same access point <NUM>.

<FIG> illustrate a flowchart of a second example method of managing the presentation control device shown in <FIG>. Initially, as shown in blocks <NUM> and <NUM>, a controlled device operably connects to a network access point (AP) and a user computing device operably connects to an AP. A determination is then made at block <NUM> as to whether the user computing device and the controlled device are operably connected to the same AP. In a non-limiting example, the controlled device determines the user computing device and the controlled device are connected to the same AP by accessing the AP (e.g., the administrator console) and analyzing the IP addresses, the MAC addresses, and/or a host name.

If the user computing device and the controlled device are not operably connected to the same AP, the user computing device cannot manage the presentation displayed on the display device of the controlled device (block <NUM>). When the user computing device and the controlled device are operably connected to the same AP, the user computing device can transmit location data associated with a location of the user computing device to the controlled device. The location of the user computing device can be determined using any suitable technique, including, but not limited to, a global positioning system or a Wi-Fi positioning system.

The location data associated with a location of the user computing device allows the controlled device to determine the location of the user computing device and confirm the user computing device is proximate to the controlled device. Block <NUM> is optional and can be omitted in other embodiments.

The process continues at block <NUM> where the user computing device connects to the controlled device through a network associated with the AP. The user computing device is enabled to manage the presentation using one or more presentation control applications on the controlled device (block <NUM>). The controlled device determines periodically or at select times if the user computing device is still operably connected to the same AP (block <NUM>). A determination is made at block <NUM> as to whether the user computing device is still operably connected to the same AP. If not, the method passes to block <NUM> where the controlled device determines the user computing device is no longer proximate to the controlled device. Based on that determination, controlled device disables the user computing device from managing the presentation and the user computing device is unable to manage the presentation (block <NUM>). For example, the controlled device can disconnect from the network channel.

When the user computing device is operably connected to the same AP, the process continues at block <NUM> where the user computing device can transmit location data associated with a location of the user computing device to the controlled device. This allows the controlled device to determine the location of the user computing device and confirm the user computing device is proximate to the controlled device. The user computing device continues to be enabled to manage the presentation on the controlled device (block <NUM>). The process then returns to block <NUM>. Block <NUM> is optional and can be omitted in other embodiments.

In some embodiments, aspects of the method shown in <FIG> can be combined with aspects of the process depicted in <FIG>, and vice versa. In a non-limiting example, a location-based service can be used in the method of <FIG> to confirm the location of the user computing device. Alternatively, a controlled device may transmit the short-range wireless signal in the process of <FIG> and confirm the location of the user computing device by determining the controlled device and the user computing device are operably connected to the same AP.

<FIG> depicts a flowchart of an example method of a user computing device casting a screen onto the controlled device. Although the process is described in conjunction with screencasting, the method can be used to share or mirror a screen on the user computing device. Initially, the user computing device transmits a sharing request or invitation to the controlled device over a network channel (block <NUM>). The sharing invitation includes the last M-bit code received by the user computing device over a short-range wireless connection.

Next, as shown at block <NUM>, the controlled device determines if the received code matches one or more codes recently transmitted to the user computing device in the short-range wireless signal. As described earlier, the controlled device can determine if the received code matches one of the last D codes transmitted by the controlled device. When the code received in the sharing invitation does not match the last code (or one of the last D codes), the controlled device refuses the sharing invitation (block <NUM>). Accordingly, the screen displayed on the user computing device is not cast onto the display device. In a non-limiting example, the controlled device transmits a rejection notice to the user computing device when the controlled device refuses the sharing invitation.

When the code received in the sharing invitation matches the last code (or one of the last D codes), the controlled device automatically accepts the sharing invitation (block <NUM>). The automatic acceptance is performed without any user input or interaction. The screen received from the user computing device over the network channel is then displayed on the display device within or operably connected to the controlled device (block <NUM>). In some embodiments, the screencasting, screen mirror, or screen sharing continues as long as the user computing device is proximate to the controlled device. In such embodiments, blocks <NUM>, <NUM>, <NUM>, <NUM>, and <NUM> in <FIG> are performed. After block <NUM>, the screencasting, screen mirroring, or screen sharing continues. After block <NUM>, the screencasting, screen mirroring, or screen sharing is terminated.

<FIG> is a block diagram illustrating an example short-range wireless transmitter. In some embodiments, a short-range wireless transmitter is provided in a stand-alone device or a device that is operably connected to a controlled device. An example of a stand-alone device is a beacon device. Examples of devices that can be operably connected to the controlled device include, but are not limited to, a Universal Serial Bus (USB) memory stick or a memory card.

The device <NUM> includes a processing device <NUM> operably connected to a short-range wireless transmitter <NUM>. Any suitable processing device <NUM> can be used. For example, the processing device <NUM> may be a central processing unit, a microprocessor, an application specific integrated circuit, a graphics processing unit, a field programmable gate array, or combinations thereof.

The device <NUM> includes a code generator <NUM> that is operable to provide a rotating code. As described earlier, the rotating code can be a rotating M-bit code (M is a number greater than one), a rotating image (e.g., a QR code), an audio signal, or any other element that can be changed at select times and captured or received by a user computing device. In a non-limiting example, the code generator is a random number generator or a QR code generator.

The device <NUM> may optionally include a power supply <NUM>. For example, when the device <NUM> is a stand-alone device, the stand-alone device includes the power supply <NUM>. Any suitable power supply <NUM> can be used. One example of a power supply <NUM> is one or more batteries. In some embodiments, when the device <NUM> is device that operably connects to the presentation control device, the device <NUM> omits the power supply <NUM>.

The device <NUM> can optionally include a memory <NUM> that stores an application <NUM> that a user computing device will interact with when the user computing device is enabled to manage the controlled device. For example, the application <NUM> can be a presentation application, a web browser, a video player, or an audio player. In some embodiments, the device <NUM> may not include the memory <NUM> and/or the application <NUM>.

<FIG> and the associated descriptions provide a discussion of a variety of operating environments in which aspects of the disclosure may be practiced. However, the devices and systems illustrated and discussed with respect to <FIG> are for purposes of example and illustration and are not limiting of a vast number of electronic device configurations that may be utilized for practicing aspects of the disclosure, as described herein.

<FIG> is a block diagram illustrating physical components (e.g., hardware) of an electronic device <NUM> with which aspects of the disclosure may be practiced. The controlled device and/or the user computing device can be implemented as the electronic device <NUM>. In a basic configuration, the electronic device <NUM> includes at least one processing device <NUM> and a system memory <NUM>. Any suitable processing device <NUM> can be used. For example, the processing device <NUM> may be a central processing unit, a microprocessor, an application specific integrated circuit, a graphics processing unit, a field programmable gate array, or combinations thereof.

Depending on the configuration and type of the electronic device <NUM>, the system memory <NUM> may comprise, but is not limited to, volatile storage (e.g., random access memory), non-volatile storage (e.g., read-only memory), flash memory, or any combination of such memories. The system memory <NUM> may include a number of program modules and data files, such as an operating system <NUM>, one or more applications <NUM> (including a presentation control application), and a proximity-based control application <NUM> for enabling a user computing device to access, interact with, and/or control a presentation displayed on a display. While executing on the processing device <NUM>, the proximity-based control application <NUM> may perform and/or cause to be performed processes including, but not limited to, the aspects as described herein.

The operating system <NUM>, for example, may be suitable for controlling the operation of the electronic device <NUM>. Furthermore, embodiments of the disclosure may be practiced in conjunction with a graphics library, other operating systems, or any other application program and is not limited to any particular application or system. This basic configuration is illustrated in <FIG> by those components within a dashed line <NUM>.

The electronic device <NUM> may have additional features or functionality. For example, the electronic device <NUM> may also include additional data storage devices (removable and/or non-removable) such as, for example, magnetic disks, optical disks, or tape. Such additional storage is illustrated in <FIG> by a removable storage device <NUM> and a non-removable storage device <NUM>. The electronic device <NUM> may also have one or more input device(s) <NUM> such as a keyboard, a trackpad, a mouse, a pen, a sound or voice input device, a touch, force and/or swipe input device, etc. The output device(s) <NUM> such as a display, speakers, a printer, etc. may also be included. The aforementioned devices are examples and others may be used.

The electronic device <NUM> may include a short-range wireless device <NUM>. The short-range wireless device <NUM> is implemented as a short-range wireless transmitter, receiver, or transceiver. For example, when the controlled device is configured as the electronic device <NUM>, the controlled device includes a wireless transmitter or transceiver. When the user computing device is configured as the electronic device <NUM>, the user computing device includes a wireless receiver or transceiver.

The electronic device <NUM> also includes one or more communication devices <NUM> allowing communications with other electronic devices <NUM>. Examples of suitable communication devices <NUM> include, but are not limited to, radio frequency (RF) transmitter, receiver, and/or transceiver circuitry; universal serial bus (USB), parallel, and/or serial ports.

The term computer-readable media as used herein may include computer storage media.

The system memory <NUM>, the removable storage device <NUM>, and the non-removable storage device <NUM> are all computer-readable storage media examples (e.g., storage device). The computer-readable storage media may include RAM, ROM, electrically erasable read-only memory (EEPROM), flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other article of manufacture which can be used to store information and which can be accessed by the electronic device <NUM>. Any such computer-readable storage media may be part of the electronic device <NUM>. Computer-readable storage media does not include a carrier wave or other propagated or modulated data signal.

For example, embodiments of the disclosure may be practiced via a system-on-a-chip (SOC) where each or many of the components illustrated in <FIG> may be integrated onto a single integrated circuit. Such an SOC device may include one or more processing units, graphics units, communications units, system virtualization units and various application functionality all of which are integrated (or "burned") onto the chip substrate as a single integrated circuit.

When operating via an SOC, the functionality, described herein, with respect to the capability of client to switch protocols may be operated via application-specific logic integrated with other components of the electronic device <NUM> on the single integrated circuit (chip). Embodiments of the disclosure may also be practiced using other technologies capable of performing logical operations such as, for example, AND, OR, and NOT, including but not limited to mechanical, optical, fluidic, and quantum technologies.

<FIG> illustrate a mobile electronic device <NUM>, for example, a mobile telephone, a smart phone, wearable computer (such as a smart watch), a tablet computer, a laptop computer, and the like, with which embodiments of the disclosure may be practiced. With reference to <FIG>, one aspect of a mobile electronic device <NUM> for implementing the aspects described herein is illustrated.

In a basic configuration, the mobile electronic device <NUM> is a handheld computer having both input elements and output elements. The mobile electronic device <NUM> typically includes a display <NUM> and one or more input buttons <NUM> that allow the user to enter information into the mobile electronic device <NUM>. The display <NUM> of the mobile electronic device <NUM> may also function as an input device (e.g., a display that accepts touch and/or force input).

If included, an optional side input element <NUM> allows further user input. The side input element <NUM> may be a rotary switch, a button, or any other type of manual input element. In alternative aspects, mobile electronic device <NUM> may incorporate more or less input elements. For example, the display <NUM> may not be a touch screen in some embodiments. In yet another alternative embodiment, the mobile electronic device <NUM> is a portable phone system, such as a cellular phone. The mobile electronic device <NUM> may also include an optional keypad <NUM>. Optional keypad <NUM> may be a physical keypad or a "soft" keypad generated on the touch screen display.

In various embodiments, the output elements include the display <NUM> for showing a graphical user interface (GUI) of an application that displays presentations, social networking sites, search results, and other online sites and documents, a visual indicator <NUM> (e.g., a light emitting diode), and/or an audio transducer <NUM> (e.g., a speaker). In some aspects, the mobile electronic device <NUM> incorporates a vibration transducer for providing the user with tactile feedback. In yet another aspect, the mobile electronic device <NUM> incorporates input and/or output ports, such as an audio input (e.g., a microphone jack), an audio output (e.g., a headphone jack), and a video output (e.g., a HDMI port) for sending signals to or receiving signals from an external device.

<FIG> is a block diagram illustrating the architecture of one aspect of a mobile electronic device <NUM>. That is, the mobile electronic device <NUM> can incorporate a system (e.g., an architecture) <NUM> to implement some aspects. In one embodiment, the system <NUM> is implemented as a "smart phone" capable of running one or more applications (e.g., browser, electronic messages, calendaring, contact managers, messaging clients, games, media clients/players, diagramming, and sharing applications and so on). In some aspects, the system <NUM> is integrated as an electronic device, such as an integrated personal digital assistant (PDA) and wireless phone.

One or more application programs <NUM> may be loaded into the memory <NUM> and run on or in association with the operating system <NUM>. Examples of the application programs include phone dialer programs, electronic message applications, word processing programs, spreadsheet programs, Internet browser programs, and so forth.

The system <NUM> also includes a non-volatile storage area <NUM> within the memory <NUM>. The non-volatile storage area <NUM> may be used to store persistent information that should not be lost when the system <NUM> is powered down.

The application programs <NUM> may use and store information in the non-volatile storage area <NUM>, such as documents, messages, and the like. A synchronization application (not shown) also resides on the system <NUM> and is programmed to interact with a corresponding synchronization application resident on a host computer to keep the information stored in the non-volatile storage area <NUM> synchronized with corresponding information stored at the host computer.

The power supply <NUM> may further include an external power source, such as an AC adapter or a powered docking cradle that supplements or recharges the batteries.

The visual indicator <NUM> may be used to provide visual notifications, and/or an audio interface <NUM> may be used for producing audible notifications via an audio transducer (e.g., audio transducer <NUM> illustrated in <FIG>). In the illustrated embodiment, the visual indicator <NUM> is a light emitting diode (LED) and the audio transducer <NUM> may be a speaker. These devices may be directly coupled to the power supply <NUM> so that when activated, they remain on for a duration dictated by the notification mechanism even though the processor <NUM> and other components might shut down for conserving battery power. The LED may be programmed to remain on indefinitely until the user takes action to indicate the powered-on status of the device.

The audio interface <NUM> is used to provide audible signals to and receive audible signals from the user (e.g., voice input such as described above). For example, in addition to being coupled to the audio transducer <NUM>, the audio interface <NUM> may also be coupled to a microphone to receive audible input, such as to facilitate a telephone conversation. In accordance with embodiments of the present disclosure, the microphone may also serve as an audio sensor to facilitate control of notifications, as will be described below.

The system <NUM> may further include a video interface <NUM> that enables an operation of peripheral device <NUM> (e.g., on-board camera) to record still images, video stream, and the like.

A mobile electronic device <NUM> implementing the system <NUM> may have additional features or functionality. For example, the mobile electronic device <NUM> may also include additional data storage devices (removable and/or non-removable) such as, magnetic disks, optical disks, or tape.

Data/information generated or captured by the mobile electronic device <NUM> and stored via the system <NUM> may be stored locally on the mobile electronic device <NUM>, as described above, or the data may be stored on any number of storage media that may be accessed by the device via the radio interface layer <NUM> or via a wired connection between the mobile electronic device <NUM> and a separate electronic device associated with the mobile electronic device <NUM>, for example, a server computing device in a distributed computing network, such as the Internet. As should be appreciated such data/information may be accessed via the mobile electronic device <NUM> via the radio interface layer <NUM> or via a distributed computing network. Similarly, such data/information may be readily transferred between electronic devices for storage and use according to well-known data/information transfer and storage means, including electronic mail and collaborative data/information sharing systems.

As should be appreciated, <FIG> and <FIG> are described for purposes of illustrating the present methods and systems and is not intended to limit the disclosure to a particular sequence of steps or a particular combination of hardware or software components.

<FIG> is a block diagram illustrating a distributed system in which aspects of the disclosure may be practiced. The system <NUM> includes a general computing device <NUM> (e.g., a desktop computer), a tablet computing device <NUM>, and/or a mobile computing device <NUM>. The general computing device <NUM>, the tablet computing device <NUM>, and the mobile computing device <NUM> can each include the components, or be connected to the components, that are shown associated with the electronic device <NUM> in <FIG> or the mobile electronic device <NUM> in <FIG>.

The general computing device <NUM>, the tablet computing device <NUM>, and the mobile computing device <NUM> are each configured to access one or more networks (represented by network <NUM>) to interact with one or more applications <NUM> stored in one or more storage devices (represented by storage device <NUM>) and executed on the controlled device <NUM>.

In some aspects, the controlled device <NUM> can access and/or receive various types of services, communications, documents and information transmitted from other sources, such as a web portal <NUM>, an electronic communications services <NUM>, directory services <NUM>, instant messaging and/or text services <NUM>, and/or social networking services <NUM>. In some instances, these sources may provide robust reporting, analytics, data compilation and/or storage service, etc., whereas other services may provide search engines or other access to data and information, images, graphics, web sites, videos, document processing and the like.

As should be appreciated, <FIG> is described for purposes of illustrating the present methods and systems and is not intended to limit the disclosure to a particular sequence of steps or a particular combination of hardware or software components.

Claim 1:
A method of enabling a user computing device to manage a controlled device only when the computing device is physically proximate to the controlled device, comprising:
repeatedly broadcasting, by the controlled device, a rotating code over a short range wireless communication channel from a user computing device, wherein:
the rotating code changes after expiration of a time period, and
the short range wireless communication channel has a wireless communication range that allows the user computing device to receive the broadcast rotating code only when the user computing device is positioned physically proximate to the controlled device (<NUM>, <NUM>, <NUM>),
repeatedly receiving (<NUM>, <NUM>, <NUM>, <NUM>), by the controlled device, a code from the user computing device, via the short range communication channel or a further communication channel that is different from the short range communication channel;
determining (<NUM>), in response to receiving each code from the user computing device via the first or second communication channel, whether each received code corresponds to the rotating code most recently broadcast via the first communication channel;
granting (<NUM>, <NUM>), in response to determining that each code corresponds to the most recently broadcasted rotating code, the user computing device an access to manage the controlled device; and
denying (<NUM>), in response to determining that each received code does not correspond to the most recently broadcasted rotating code, the user computing device the access to manage the controlled device.