The Internet provides a platform for the distribution of information and data. Increasingly, applications that utilize the network of the Internet have been developed to allow users to communicate via text, video, and audio messaging. For instance, web sites allow users to obtain live-action media that can be streamed throughout the Internet to computing devices associated therewith. In addition, instant-messaging applications, which permit people to communicate with each other over the Internet in real time, have become increasingly popular. These applications not only allow users to communicate over a new medium, but also provide enjoyable group interactions.
In order to further enhance interest and excitement for computer users, a peripheral device may be used. Utilization of peripheral devices that connect to a computing device is increasingly popular, and can provide the user with task-orientated or entertaining functions. Typically, these devices may be controlled by an interface on the computing device. For instance, an automated mechanical robot that is connected to a universal serial bus (USB) port of a computer may be controlled by the local user of that computer.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
Embodiments of the present invention relate to remotely controlling peripheral computing devices through an instant messaging application. Upon receiving a communication from the peripheral device, the computing device recognizes the peripheral device (e.g., a remote-control web camera that adjusts, an automated robot that produces sound, or a unit that emits light). In one embodiment, the command manifest is installed in the device as a driver file. In another embodiment, the command manifest is automatically generated upon such recognition that includes one or more commands that correspond to the controllable functions of the recognized peripheral device (e.g., commands that pan, tilt, and focus the remote-control web camera; commands that chirp, beep, or blink an electronic toy). The command manifest may include commands and one or more user-interface layouts that present a representation of the commands to a user (e.g., listing of commands, graphical display using icons to represent commands). The command manifest may be communicated to the remote-user device. Next, instructions may be received from the remote-user device pertaining to control of one or more of the commands included in the command manifest. The instructions may then be transferred to the peripheral device, which may execute the corresponding controllable functions (e.g., causing the remote-control web camera to tilt up and pan right).
The present invention is described in detail below with reference to the attached drawing figures, wherein:
The subject matter of the present invention is described with specificity herein to meet statutory requirements. However, the description itself is not intended to limit the scope of this patent. Rather, the inventors have contemplated that the claimed subject matter might also be embodied in other ways, to include different steps or combinations of steps similar to the ones described in this document, in conjunction with other present or future technologies. Moreover, although the terms “step” and/or “block” may be used herein to connote different elements of methods employed, the terms should not be interpreted as implying any particular order among or between various steps herein disclosed unless and except when the order of individual steps is explicitly described.
Embodiments of the present invention relate to methods, systems, and computer-readable media having computer-executable instructions embodied thereon that, when executed, perform methods in accordance with embodiments hereof, for permitting remote control of peripheral devices associated with a computing device. Upon receiving a communication from the peripheral device, the computing device recognizes the peripheral device (e.g., a remote-control web camera that adjusts, an automated robot that produces sound, or a unit that emits light). In one instance, the peripheral device communicates with the computing device via a universal serial bus (USB) port. In one embodiment, the command manifest is installed in the device as a driver file. In another embodiment, the command manifest is automatically generated upon such recognition that includes one or more commands that correspond to the controllable functions of the recognized peripheral device (e.g., commands that pan, tilt, and focus the remote-control web camera; commands that chirp, beep, or blink an electronic toy). The command manifest may include commands and one or more user-interface layouts that present a representation of the commands to a user (e.g., listing of commands, graphical display using icons to represent commands). The command manifest may be communicated to the remote-user device. Next, a transmission is received from the remote-user device, that includes content indicative of one or more of the commands included in the command manifest. The commands are then transferred to the peripheral device, which executes the corresponding controllable functions (e.g., causing the remote-control web camera to tilt up and pan right).
Accordingly, in one aspect, embodiments of the present invention relate to one or more computer-readable media having computer-executable instructions embodied thereon that, when executed, perform a method for remotely controlling one or more peripheral devices associated with a computing device. The method includes receiving a communication from a peripheral device; automatically generating a command manifest associated with the peripheral device, wherein the command manifest includes one or more commands each corresponding to at least one controllable function of the peripheral device; and communicating the command manifest to a remote-user device.
In another aspect, embodiments of the present invention relate to a computer system for providing remote user control of a peripheral device. The computer system includes a peripheral device detecting module, a command manifest generating module, and a command communicating module. The peripheral device detecting module is configured to receive communications from a plurality of peripheral devices and to determine if received communications are associated with a recognized peripheral device. The command manifest generating module is configured to automatically generate a command manifest associated with any recognized peripheral device, the command manifest including one or more commands each corresponding to at least one controllable function of the peripheral device. The command communicating module is configured to communicate the command manifest (e.g., to a remote-user device or to the local user of the computing device) to allow for presentation and execution of one or more commands therein.
In yet another aspect, embodiments of the present invention relate to one or more computer-readable storage media having computer-executable instructions embodied thereon that, when executed, perform a method for presenting a user interface on a remote control device, the user interface for controlling one or more functions of a peripheral device in communication with a computing device. The computer-readable storage media comprises code for recognizing the peripheral device at the computing device, and code for automatically generating a command manifest associated with the recognized peripheral device. Further, the computer-readable storage media comprises code for communicating the command manifest to a remote-user device, where the remote-user device is configured to present the one or more commands to a remote user.
Having briefly described an overview of embodiments of the present invention, an exemplary operating environment suitable for implementing the present invention is described below.
Referring to the drawings in general, and initially to
The invention may be described in the general context of computer code or machine-useable instructions, including computer-executable instructions such as program components, being executed by a computer or other machine, such as a personal data assistant or other handheld device. Generally, program components including routines, programs, objects, components, data structures, and the like, refer to code that performs particular tasks, or implement particular abstract data types. Embodiments of the present invention may be practiced in a variety of system configurations, including hand-held devices, consumer electronics, general-purpose computers, specialty computing devices, etc. Embodiments of the invention may also be practiced in distributed computing environments where tasks are performed by remote-processing devices that are linked through a communications network.
With continued reference to
Computing device 100 typically includes a variety of computer-readable media. By way of example, and not limitation, computer-readable media may comprise Random Access Memory (RAM); Read Only Memory (ROM); Electronically Erasable Programmable Read Only Memory (EEPROM); flash memory or other memory technologies; CDROM, digital versatile disks (DVDs) or other optical or holographic media; magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to encode desired information and be accessed by computing device 100.
Memory 112 includes computer-storage media in the form of volatile and/or nonvolatile memory. The memory may be removable, non-removable, or a combination thereof. Exemplary hardware devices include solid-state memory, hard drives, optical-disc drives, etc. Computing device 100 includes one or more processors that read data from various entities such as memory 112 or I/O components 120. Presentation component(s) 116 present data indications to a user or other device. Exemplary presentation components include a display device, speaker, printing component, vibrating component, etc. I/O ports 118 allow computing device 100 to be logically coupled to other devices including I/O components 120, some of which may be built in. Illustrative components include a microphone, joystick, game pad, satellite dish, scanner, printer, wireless device, etc.
Turning now to
The computing system 200 includes a web server 206, a computing device 202, a remote-user device 208, and a peripheral device 220, all in communication with one another via a network 204. The network 204 may include, without limitation, one or more local area networks (LANs) and/or wide area networks (WANs). Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets, and the Internet. Accordingly, the network 204 is not further described herein.
Each of the web server 206, the remote-user device 208, and the computing device 202 shown in
The web server 206 is configured to render a representation of one or more commands at a user interface based upon a determination of whether the remote-user device 208 is registered as an authorized user at the computing device 202. Upon receiving an indication that access to the web server 206 is available, the commands may then be communicated to the user interface. In one embodiment, the web server 206 is a stand-alone entity as depicted in
The peripheral device 220 may be a stand-alone device or may be partially integrated with the computing device 202. Typically, the peripheral device 220 is a device that may communicate with the computing device 202 by wired or wireless channels. In one embodiment, the peripheral device 220 communicates via a connection with the computing device 202 at a universal serial bus (USB) port. In another embodiment, the peripheral device 220 may communicate via a wireless personal area network (PAN) (e.g., a Bluetooth™ connection that exchanges information between devices such as mobile phones, laptops, PCs, printers, digital cameras, and video game consoles over a secure, globally unlicensed short-range radio frequency, LAN, WAN). Further, the peripheral device 220 may perform particular functions (e.g., produce light, provide movement, emit sound, etc.). These functions may be task-orientated and useful (e.g., desk fan), or simply for the purpose of entertainment (e.g., USB missile launcher). For instance, the peripheral device 220 may be a mechanical toy that responds to commands with motion (e.g., gestures) thereby expressing the command visually in physical space. Although several embodiments are depicted hereinabove, one of ordinary skill in the art will understand and appreciate that peripheral devices encompass a broad range of devices that communicate directly or indirectly with a computing device and that any and all such devices are contemplated to be within the scope of embodiments hereof.
As shown in
The peripheral device detecting module 210 is configured to receive communications from a plurality of peripheral devices and to determine if received communications are associated with a recognized peripheral device. Initially, the peripheral device is connected to the computing device by a wired (e.g., USB port), or a wireless (e.g., Bluetooth™) interface. Although two embodiments are depicted, the present invention contemplates any other interfaces and protocols that establish peripheral device-computing device communication. Incident upon establishing communication, the computing device may recognize, or identify, the peripheral device. More specifically, the computing device becomes aware of the communicating peripheral device and the functions that is can perform. The terms “functions” and “controllable functions,” as used herein, are not meant to limiting and are utilized to indicate any action, production of light/sound, or adjustment that is directly or indirectly controlled by the computing device.
The command manifest generating module 212 is configured to automatically generate a command manifest associated with the recognized peripheral device. As such, the interactive functionality of the peripheral device is integrated into the computing device having control capability thereover. In one embodiment, integration is achieved by a device-driver abstraction layer that reads a programming model from a peripheral device and maps the controllable functions to one or more commands corresponding thereto (more fully discussed below with reference to
By way of example only, reading the programming model may be performed by an application associated with the computing device or by software loaded onto the computing device with function recognition capabilities. The programming model typically includes the controllable functions that the peripheral device supports, and may be extracted from a data file within the peripheral device. In some embodiments, the programming model may further include instructions related to rendering the controllable functions on a user interface as representations of commands. As a result, the controllable functions may be exposed to a local user of the computing device or to other remote users at remote-user devices so that remote control may be exerted over the peripheral device.
In another embodiment of the present invention, the manifest of commands are embedded in, or uploaded to, the computing device with an association to a particular peripheral device stored therewith. That is, upon recognizing communication has been initiated with a peripheral device, the computing device will access the associated manifest of commands from a memory file. In this embodiment, the command manifest generating module 212 is optional.
Next, by way of example only, mapping the controllable functions comprises creating a command manifest comprising one or more commands that correspond to one or more controllable functions of the peripheral device. Further, mapping enables these commands to be triggered by certain content or instructions received in a transmission from the peripheral device. That is, commands are associated with particular instructions (e.g., mouse-clicking a displayed “fire” icon), content (e.g., terms typed at an instant-messaging application cause a reaction), or input from remote-user devices including keystrokes from keyboards, certain movement from joysticks, indications from touch-screens and/or control panels, and the like. Consequently, content, instructions, or other user input may control the corresponding controllable functions of the peripheral device.
The command communicating module 214 is configured to communicate the command manifest, for instance, to a remote-user device configured to present a representation of the one or more commands to a remote user. It will be understood by those of ordinary skill in the art that communication may be made by any form of data transfer used to transmit information over an internet, intranet, network, and the like. For instance, communicating the command manifest may be achieved by a format readable by an instant-messaging application. In another instance, the command manifest may be communicated from an embedded web server that resides on the computing device. As a result, remote users on the network are allowed to interactively control the peripheral devices by responding to the representation of the commands with instructions. As more fully discussed below, permission may be required to interactively control the peripheral devices, at the option of the local user. Providing permission may vary based on the method of communicating the command (e.g., web servers authenticate the remote-user, Instant Messenger requires membership on a buddy list and/or access settings). Alternatively, the representation of commands may not be presented; yet, content in a transmission from a remote-user device may passively indicate (i.e., without express instruction from a remote user) one or more commands that control the peripheral device.
In one embodiment, wherein a representation of commands are displayed, remote users may utilize remote-user devices (e.g., micro-processor-controlled devices) that render, or display, an interface, which may include a graphical user interface (GUI), database or scripting interface, menu driven interface, etc., that is collectively referred to herein as a user interface (UI). Additionally, the user interface can send data (e.g., content and/or instructions) that triggers commands that can be transferred to the peripheral device, as more fully discussed below with reference to the transferring module 218.
By way of example only, the user interface may be configured to present a representation of commands and/or receive instructions according more than one peripheral device. For instance, the user interface may include a control area (more fully discussed below with reference to
The receiving module 216 is configured to receive a transmission from the remote-user device, wherein content or instructions included in the transmission indicate one or more commands of the command manifest. Transmission from a remote-user device may be made by any method know by those of ordinary skill in the art, and those methods are contemplated by the present invention. Indication may be by an application typically on the computing device that is operative to interpret and extract one or more commands by utilizing the content or instructions associated therewith.
In one embodiment, the application interprets an instant-messaging application correspondence, typically intended for communication between humans sending messages, so that it may be utilized by a peripheral device. Instant-messaging applications permit users to communicate with each other over the Internet in real time by providing channels for communication using multiple forms of media, including text, audio, pictures, video, and the like. Although text-based input from a remote user is discussed hereinbelow, it should be understood and appreciated by those of ordinary skill in the art that all other forms of media are contemplated by the present invention as sources of input for generating content within the transmission. Accordingly, a remote user with access to an instant-messaging application (e.g., Instant Messenger) can control a peripheral device to follow certain instructions (e.g., directing an automated robot to speak).
In one instance, the instant-messaging application sends, within the transmission, content that may indicate one or more commands of the command manifest. That is, a device layer may define commands that the content passively triggers such that a controllable function is provided by the remote user. By way of example only, the term or symbol “” may be preconfigured by the device layer employed as the command manifest generating module 212 to automatically trigger a function of the peripheral device (e.g., causing a USB robotic dog to wag its tail). Triggering the controllable function may include comparing the content to pre-identified content that is generated by the command manifest generating module 212, discussed hereinabove. If matching pre-identified content (e.g., text) is found, the associated command is selected and transferred, and the function corresponding thereto is performed by the peripheral device. It should be understood, however, that the instant-messaging application may also render the a representation of commands to which the remote user may actively respond.
In another instance, the instant-messaging application includes access control. Here, a level of security is provided to ensure only certain selected remote users may control the peripheral device. More specifically, a level of access control of the computing device is provided by the instant messaging application that limits uninvited remote users from controlling the functions of the peripheral device (i.e., the computing device is instructed to accept communications from only certain pre-specified remote users). Thus, in order to provide content, the remote-user device must have the required instant messaging software installed and be identified as a member of a group (e.g., “buddy list”) that has permissive rights on the computing device. The buddy list can be created by the local user by identifying the various remote users with whom s/he wishes to communicate and have access to the peripheral device. Alternatively, remote user(s) may ask the local user for permission to control the peripheral device, and if granted, the remote user(s) is given permission to access the peripheral device through the embodiments above and through additional access control mechanism that are understood and appreciated by those of ordinary skill in the art. By way of example, a communication with a “buddy” can be started by simply double-clicking the buddy name corresponding to one or more remote users (more fully discussed below with reference to
In another embodiment, the transmission includes specific instructions from the remote user, based on one or more presented representation of the commands, for controlling the peripheral device. An application on the computing device may then interpret these instructions received from a remote-user device and determines the one or more commands that are indicated by the instructions.
In this embodiment, typically, security is provided by a web server. In one instance, the web server may be website hosted by the computing device that provides remote access to the infrastructure thereof. Alternatively, the local user, or third-party security administrator, can configure the embedded web server such that remote users may not be afforded access the web server, and as such, denied the ability to control the peripheral device. In one instance, by way of example only, the receiving module 216 will initially determine whether a remote-user device is registered as an authorized user at the web server of the computing device. If the remote-user device is registered as an authorized user, access to the web server may then be provided and an indication to perform one or more commands of the command manifest (typically in the form of instructions) may be received at the web server.
By way of example only, a remote user may input a content or an instruction at the user interface associated with the remote-user device. As discussed above, the presented commands and the format of the user interface that renders the commands on the remote-user device may be generated and/or defined by the computing device. It will be understood and appreciated by those of ordinary skill in the art that multiple methods exist by which a remote user may input the content or instructions that are received by the receiving module 216. For instance, content or instructions may be input, by way of example only, utilizing a keyboard, joystick, trackball, touch-pad, or the like. In one embodiment, a user is provided a Web browser as the user interface display in which the user may input the content or instructions into an associated text box or control area. Alternative user interfaces known to those of ordinary skill in the art are contemplated to be included within embodiments of the invention.
The transferring module 218 is configured to transfer the one or more determined commands to the peripheral device. Transferring is performed by any method known by those of ordinary skill and/or discussed above (e.g., wire or wireless communication). Upon receiving the command(s), the peripheral device performs the corresponding one or more controllable functions according to the one or more determined commands. That is, upon conveying a command to the peripheral device, the peripheral device executes the command and causes the peripheral device to implement a corresponding function-thereby expressing the command visually in physical space.
Turning now to
With reference to
Turning now to
Turning now to
Referring to
Turning now to
Although the user interface 810 presented herein is adapted for a USB missile launcher control, other interfaces may be utilized having different graphics or schemes to provide features according to the controllable functions of associated peripheral devices. Further, as is understood by those of ordinary skill in the art, other interfaces may be provided that do not utilize a cursor or are used in parallel with a cursor, and that provide other ways of inputting instructions (e.g., keyboard, touch-screen, joystick, and the like). Further, although the user interface 810 displays features in a control area 840 for controlling the functions of the peripheral device, other methods for generating instructions can be provided. Alternative user interfaces may include, for example, fully text-based or partially menu-driven embodiments rather than including a graphical component.
In one embodiment, the remote-user device is connected to a network, such as the Internet, and may be equipped with an “internet browser” (e.g., Netscape Navigator, Internet Explorer, etc.). Those or ordinary skill in the art will understand and appreciate that an internet browser, depending on the remote control device and its configuration, will differ; as such, the user interface may differ accordingly and references to the user interface are not meant to limited to the user interface 810. Further, the remote-user device may be configured to present a representation of commands, for instance, at a user interface associated with one or more commands of the command manifest. In one aspect of the invention, presentation may comprise displaying a graphical representation of the commands (e.g., icon, a pictogram, a symbol, alphanumeric character(s), bitmapped graphics, or the like) as received from the remote-user device. However, it will be understood and appreciated by those of ordinary skill in the art that methods for presenting a representation of commands are not limited to the embodiments described herein and that presentation may vary accordingly.
As can be seen from the above, embodiments of the present invention provide computerized methods and systems for providing control of a peripheral device on a computing device by a remote user. Upon receiving a communication from the peripheral device, the computing device recognizes the peripheral device (e.g., a remote-control web camera that adjusts, an automated robot that produces sound, or a unit that emits light). In one instance, the peripheral device communicates with the computing device via a universal serial bus (USB) port. A command manifest is automatically generated upon recognizing the peripheral device. The command manifest includes one or more commands that correspond to the controllable functions of the recognized peripheral device (e.g., commands that pan, tilt, and focus the remote-control web camera). The command manifest may then be communicated to the remote-user device. The remote-user device is configured to present the commands to a remote user, typically, by displaying a representation of the commands at a user interface on the remote-user device. Next, a transmission may be received from the remote-user device, where the transmission may include content that indicates one or more of the commands included in the command manifest. Content may include instructions from a remote user for controlling the peripheral device. The one or more commands that are determined from content are transferred to the peripheral device, which executes the corresponding controllable functions (e.g., causing the remote-control web camera to tilt up and pan right).
The present invention has been described in relation to particular embodiments, which are intended in all respects to be illustrative rather than restrictive. Alternative embodiments will become apparent to those of ordinary skill in the art to which the present invention pertains without departing from its scope.
From the foregoing, it will be seen that this invention is one well adapted to attain all the ends and objects set forth above, together with other advantages which are obvious and inherent to the system and method. It will be understood that certain features and sub-combinations are of utility and may be employed without reference to other features and sub-combinations. This is contemplated by and is within the scope of the claims.