Drawings
illustrates a general-purpose computing device 100 embodiment.
With reference to Figure 1, an exemplary system includes a general-purpose computing device 100, including a processing unit (CPU or processor 110) and a system bus 126 that couplesvarious system components including the system memory 112 such as read only memory (ROM 114) and random access memory (RAM 116) to the processor 110. The general-purpose computing device 100 can include a cache 108 of high speed memory connected directly with, in close proximity to, or integrated as part of the processor 110. The general-purpose computing device 100 copies data from the system memory 112 and/or the storage device 118 to the cache 108 for quick access by the processor 110. In this way, the cache 108 provides a performance boost that avoids processor 110delays while waiting for data. These and other modules can control or be configured to control the processor 110 to perform various actions. Other system memory 112 may be available for use as well. The system memory 112 can include multiple different types of memory with different performance characteristics. It can be appreciated that the disclosure may operate on a general-purpose computing device 100 with more than one processor 110 or on a group or cluster of computing devices networked together to provide greater processing capability. The processor 110 can include any general purpose processor and a hardware module or software module, such as module 1 (mod1 120), module 2 (mod2 122), and module 3 (mod3 124) stored in storage device 118, configured to control the processor 110 as well as a special-purpose processor where software instructions are incorporated into the actual processor design. The processor 110 may essentially be a completely self-contained computing system, containing multiple cores or processors, a bus, memory controller, cache, etc. A multi-core processor may be symmetric or asymmetric.
The system bus 126 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. A basic input/output (BIOS) stored in ROM 114 or the like, may provide the basic routine that helps to transfer information between elements within the general-purpose computing device 100, such as during start-up. The general-purpose computing device 100 further includes a storage device 118 such as a hard disk drive, a magnetic disk drive, an optical disk drive, tape drive or the like. The storage device 118 can include software modules, mod1 120, mod2 122, and mod3 124 for controlling the processor 110. Other hardware or software modules are contemplated. The storage device 118 is connected to the system bus 126 by a drive interface. The drives and the associated computer readable storage media provide nonvolatile storage of computer readable instructions, data structures, program modules and other data for the general-purpose computing device 100. In one aspect, a hardware module that performs a particular function includes the software component stored in a non-transitory computer-readable medium in connection with the necessary hardware components, such as the processor 110, system bus 126, output device 104, and so forth, to carry out the function. The basic components are known to those of skill in the art and appropriate variations are contemplated depending on the type of device, such as whether the general-purpose computing device 100 is a small, handheld computing device, a desktop computer, or a computer server.
Although the exemplary embodiment described herein employs a storage device 118, it should be appreciated by those skilled in the art that other types of computer readable media which can store data that are accessible by a computer, such as magnetic cassettes, flash memory cards, digital versatile disks, cartridges, random access memories (RAM 116), read only memory (ROM 114), a cable or wireless signal containing a bit stream and the like, may also be used in the exemplary operating environment. Non-transitory computer-readable storage media expressly excludemedia such as energy, carrier signals, electromagnetic waves, and signals per se.
To enable user interaction with the general-purpose computing device 100, an input device 102 represents any number of input mechanisms, such as a microphone for speech, a touch-sensitive screen for gesture or graphical input, keyboard, mouse, motion input, speech and so forth. An output device 104 can also be one or more of a number of output mechanisms known to those of skill in the art. In some instances, multimodal systems enable a user to provide multiple types of input to communicate with the general-purpose computing device 100. The communications interface 106 generally governs and manages the user input and system output. There is no restriction on operating on any particular hardware arrangement and therefore the basic features here may easily be substituted for improved hardware or firmware arrangements as they are developed.
For clarity of explanation, the illustrative system embodiment is presented as including individual functional blocks including functional blocks labeled as a “processor” or processor 110. The functions these blocks represent may be provided through the use of either shared or dedicated hardware, including, but not limited to, hardware capable of executing software and hardware, such as a processor 110, that is purpose-built to operate as an equivalent to software executing on a general purpose processor. For example the functions of one or more processors presented in Figure 1 may be provided by a single shared processor or multiple processors. (Use of the term “processor” should not be construed to refer exclusively to hardware capable of executing software.) Illustrative embodiments may include microprocessor and/or digital signal processor (DSP) hardware, read-only memory (ROM 114) for storing software performing the operations discussed below, and random access memory (RAM 116) for storing results. Very large scale integration (VLSI) hardware embodiments, as well as custom VLSI circuitry in combination with a general purpose DSP circuit, may also be provided.
The logical operations of the various embodiments are implemented as: (1) a sequence of computer implemented steps, operations, or procedures running on a programmable circuit within a general use computer, (2) a sequence of computer implemented steps, operations, or procedures running on a specific-useprogrammable circuit; and/or (3) interconnected machine modules or program engines within the programmable circuits. The general-purpose computing device 100 shown in Figure 1 can practice all or part of the recited methods, can be a part of the recited systems, and/or can operate according to instructions in the recited non-transitory computer-readable storage media. Such logical operations can be implemented as modules configured to control the processor 110 to perform particular functions according to the programming of the module. For example, Figure 1 illustrates three modulesmod1 120, mod2 122 and mod3 124 which are modules configured to control the processor 110. These modules may be stored on the storage device 118 and loaded into RAM 116 or system memory 112 at runtime or may be stored as would be known in the art in other computer-readable memory locations.
illustrates a computing environment 200 in accordance with one embodiment.
Having disclosed some components of a computing system, the disclosure now turns to Figure 2, which illustrates a general purpose mobile computing environment 200. A communication network 206 connects the devices and applications hosted in the computing environment 200. In this computing environment 200, different devices may communicate with and send commands to each other in various ways. The application server 204, for example, may function as an intermediary between two or more user devices such as, user station 202, mobile device(s) a 214, and mobile device(s) b 210. The application server 204 may pass messages sent from one userdevice to another. For example, the application server 204 may receive a request from mobile device(s) a 214 (the “requesting device”) to locate another devicemobile device(s) b 210 (the “requested device”). In response to such a request (preferably after appropriate authentication and authorization steps have been taken to ensure the request is authorized by the user of the requested device), the application server 204 may send a request to the requested devicemobile device(s) b 210 and receive a response containing information relating to its location. The requested devicemobile device(s) b 210 may have obtained this location information based on signals it received from, for example, GPS satellites 216. Having received a response, the application server 204 may then send the information to the requesting mobile device(s) a 214. Alternatively, the application server 204 does not send a request to the requested devicemobile device(s) b 210 because it has recent location information relating to the requested devicemobile device(s) b 210 cached. In such an embodiment, the application server 204 may respond to a request by sending cached location information to the requesting mobile device(s) a 214 without communicating with the requested devicemobile device(s) b 210.
The devicesuser station 202, mobile device(s) a 214, and mobile device(s) b 210 preferably have one or more location aware applications that may run on them. Of these applications, some may have the functionality to send requests to other user devices to enable a requesting user to locate a friend’sdevice. Upon receiving authorization to locate, a requesting device may then be able to send location requests to requested devices and receive responses containing the location of the requested device. Authorization is preferably managed at the server level, but may also be managed at the device level in addition or as an alternative.
Referring back to Figure 2, the communication network 206 can be any type of network, including a local area network (“LAN”), such as an intranet, a wide area network (“WAN”), such as the internet, or any combination thereof. Further, the communication network 206 can be a public network, a private network, or a combination thereof. The communication network can also be implemented using any type or types of physical media, including wired communication paths and wireless communication paths associated with one or more service providers. Additionally, the communication network 206 can be configured to support the transmission of messages formatted using a variety of protocols.
A device such as a user station 202 may also be configured to operate in the computing environment 200. The user station 202 can be any general-purpose computing device that can be configured to communicate with a web-enabled application, such as through a web browser. For example, the user station 202 can be a personal computing device such as a desktop or workstation, or a portable computing device, such as a laptop a smart phone, or a post-pc device. The user station 202 can include some or all of the features, components, and peripherals of general-purpose computing device 100 of Figure 1.
User station 202 can further include a network connection to the communication network 206. The network connection can be implemented through a wired or wireless interface, and can support bi-directional communication between the user station 202 and one or more other computing devices over the communication network 206. Also, the user station 202 may include an interface application, such as a web browser or custom application, for communicating with a web-enabled application.
An application server 204 can also be configured to operate in the computing environment 200. The application server 204 can be any computing device that can be configured to host one or more applications. For example, the application server 204 can be a server, a workstation, or a personal computer. In some implementations, the application server 204 can be configured as a collection of computing devices, e.g., servers, sited in one or more locations. The application server 204 can include some or all of the features, components, and peripherals of general-purpose computing device 100 of Figure 1.
The application server 204 can also include a network connection to the communication network 206. The network connection can be implemented through a wired or wireless interface, and can support bi-directional communication between the application server 204 and one or more other computing devices over the communication network 206. Further, the application server 204 can be configured to host one or more applications. For example, the application server 204 can be configured to host a remote management application that facilitates communication with one or more mobile devices connected with the communication network 206. The mobile device(s) a 214, mobile device(s) b 210 and the application server 204 can operate within a remote management framework to execute remote management functions. The application server 204 can be configured to host a notification service application configured to support bi-directional communication over the communication network 206 between multiple communication devices included in the computing environment 200. For example, the notification service application can permit a variety of messages to be transmitted and received by multiple computing devices.
In some implementations, the notification service can include a defined namespace, in which a unique command collection topic can be created for each subscribing mobile device. A unique identifier can be used to associate a subscribing mobile device with the corresponding command collection topic, such as an assigned number or address. The unique identifier also can be embedded in a Uniform Resource Identifier (URI) that is associated with a subscribed command collection topic. Further, one or more command nodes can be created below a command collection topic, such that each command node corresponds to a particular remote command type. For example, a command collection topic can include a separate command node for a location command.
Through the use of separate command nodes, multiple commands can be transmitted to one or more mobile devices substantially simultaneously. In some implementations, if multiple commands are received in a command collection topic, server time stamps can be compared to determine an order of execution.
Through the notification service, a publisher, such as a remote management application, can publish a remote command message to a command collection topic that is associated with a particular mobile device. When a remote command message is published to the command collection topic, a notification message can be transmitted to the one or more subscribing mobile devices. The mobile device can then access the subscribed topic and retrieve one or more published messages. This communication between the publisher and the mobile device can be decoupled. Further, the remote command message can be published to the appropriate command node of the command collection topic. Additionally, a mobile device receiving a remote command message can publish a response to a result topic hosted by a notification service. A publisher such as a remote management application, can subscribe to the result topic and can receive any published response messages.
Further, the computing environment 200 can include one or more mobile devices, such as mobile device(s) a 214 and mobile device(s) b 210. These mobile devices are preferably smart phones such as an Apple iPhone.RTM. or post-pc device such as an Apple iPad.RTM.. Each of the mobile devices included in the computing environment 200 can include a network interface configured to establish a connection to the communication network 206. For example, mobile device(s) a 214 can establish a cellular (e.g., GSM, EDGE, 3G, or 4G) network connection that provides data access to the communication network 206. Such a connection may be facilitated by one or more cellular towers 208 located within the range of the mobile device(s) a 214 and mobile device(s) b 210 and connected to the communication network 206. Further, mobile device(s) b 210 can establish an IEEE 802.11 (i.e., WiFi or WLAN) network connection to the communication network 206. Such a connection may be facilitated by one or more wireless network router(s) 212 located within the range of the mobile device(s) a 214 and mobile device(s) b 210 and connected to the communication network 206. Also, either one of these mobile device(s) a 214, mobile device(s) b 210 or an additional device may connect to the communication network 206 through the IEEE 802.16 (i.e., wireless broadband or WiBB) standard. Again, the mobile device(s) a 214, mobile device(s) b 210 may employ the assistance of a cellular towers 208 or wireless network router(s) 212 to connect to the communication network 206.
Each of the mobile device(s) a 214 and mobile device(s) b 210 also can be configured to communicate with the notification service application hosted by the application server 204 to publish and receive messages. Further, each of the mobile device(s) a 214 and mobile device(s) b 210 can be configured to execute a remote management application or a remote management function responsive to a remote command received through the notification service application. In some embodiments, the remote management application can be integrated with the operating system of the mobile device.
A mobile device can execute a remote command to perform one or more associated functions. For example the remote commands can include locate commands, notification commands, and message commands. A message command can be used to present a text-based message on the display of a mobile device. A locate command can be used to cause a mobile device to transmit a message indicating its location at the time the locate command is executed. The locate command may also command the mobile device to use certain resources, such as an embedded GPS system, to determine its location.
Additionally, each of the mobile device(s) a 214 and mobile device(s) b 210 can include an input interface, through which one or more inputs can be received. For example, the input interface can include one or more of a keyboard, a mouse, as joystick, a trackball, a touch pad, a keypad, a touch screen, a scroll wheel, general and special purpose buttons, a stylus, a video camera, and a microphone. Each of the mobile device(s) a 214 and mobile device(s) b 210 can also include an output interface through which output can be presented, including one or more displays, one or more speakers, and a haptic interface. Further, a location interface, such as a Global Positioning System (GPS) processor, also can be included in one or more of the mobile device(s) a 214 and mobile device(s) b 210 to receive and process signals sent from GPS satellites 216 for obtaining location information, e.g., an indication of current location. In some implementations, general or special purpose processors included in one or more of the mobile device(s) a 214 and mobile device(s) b 210 can be configured to perform location estimation, such as through base station triangulation or through recognizing stationary geographic objects through a video interface.
Having disclosed some basic system components and concepts, the disclosure now turns to exemplary method embodiments 300a and 300b shown in FIGS. 3a and 3b respectively. For the sake of clarity, the methods are discussed in terms of a general-purpose computing device 100 as shown in Figure 1 configured to practice the methods and operating environment shown in Figure 2. The steps outlined herein are exemplary and can be implemented in any combination thereof, including combinations that exclude, add, or modify certain steps.
Parts List
100
general-purpose computing device
102
input device
104
output device
106
communications interface
108
cache
110
processor
112
system memory
114
ROM
116
RAM
118
storage device
120
mod1
122
mod2
124
mod3
126
system bus
200
computing environment
202
user station
204
application server
206
communication network
208
cellular towers
210
mobile device(s) b
212
wireless network router(s)
214
mobile device(s) a
216
GPS satellites
Terms/Definitions
hardware module
physical media
hard disk drive
joystick
Apple iPad
delays
three modules Mod
friend’s
time
host one or more applications
basic input/output
such a connection
skill
such logical operations
speech
requesting user
haptic interface
response
location information
sake
server
optical disk drive
wired communication paths
portable computing device
CPU or processor)
small, handheld computing device
mouse
carrier signals
network interface
read only memory (ROM)
various actions
locate command
particular mobile device
nodes
example
software instructions
general-purpose computing device
cellular towers
messages
microphone
mod2
alternative
notification message
reference
module
sequence
connection
server time stamps
procedures
touch screen
output mechanisms
elements
processing unit
protocols
particular hardware arrangement
other system memory
equivalent
particular remote command type
special purpose buttons
improved hardware
remote management function responsive
wired or wireless interface
random access memories (RAMs)
input interface
drives
very large scale integration
keypad
requested device
internet
desktop computer
software and hardware
command collection topic
special-purpose processor
storage devices
other computer-readable memory locations
flash memory cards
such a request
process signals
such an embodiment
drive interface
appropriate variations
GPS satellites
wide area network
microprocessor
unique command collection topic
term “processor”
laptop
quick access
operations
mod1
execution
responses
blocks
number
instances
mobile device(s) a
location requests
devices and applications
memory
random access memory (RAM)
“requesting device”
message command
computing device
computer server
only memory (ROM)
steps
touch pad
bi-directional communication
preferably smart phones
restriction
requested devices
touch-sensitive screen
individual functional blocks
EDGE
recent location information
cartridges
remote command
personal computer
multiple cores or processors
ROM
gesture or graphical input
web browser
tape drive
data access
non-transitory computer-readable medium
public network
necessary hardware components
signal
FIGS
high speed memory
location
result topic
other user devices
Apple iPhone.RTM
base station triangulation
combinations
information
remote management framework
various embodiments
basic routine
interface application
close proximity
published response messages
group or cluster
server level
system memory
computing environment
custom VLSI circuitry
basic features
system
location estimation
display
computer
firmware arrangements
post-pc device
input mechanisms
web browser or custom application
remote commands
network connection
digital versatile disks
special purpose processors
recited systems
other modules
notification service
dedicated hardware
order
cache
digital signal processor
bus structures
intermediary
software component
wireless communication paths
cable
performance boost
multiple different types
multiple types
disclosure
hardware module or software module
“requested device”
more than one processor
subscribed command collection topic
assistance
signals
couples
programmable circuits
wireless broadband or WiBB
programming
message
read-only memory (ROM)
components
results
keyboard
functional blocks
servers
energy
memory controller
separate command nodes
interconnected machine modules
subscribed topic
various system components
type or types
storage media
illustrative system embodiment
remote command message
stylus
non-transitory computer-readable storage media
nonvolatile storage
terms
stationary geographic objects
program engines
general purpose processor
certain steps
other data
magnetic cassettes
authorization
multiple processors
WiFi or WLAN
commands
assigned number or address
Global Positioning System
local area network
bit stream
concepts
indication
wireless network router(s)
data
multiple commands
personal computing device
notification commands
software modules
programmable circuit
part
device level
remote management application
trackball
separate command node
certain resources
locate commands
explanation
general use computer
applications
output
greater processing capability
different devices
web-enabled application
workstation
exclude
range
application server
subscribing mobile device
magnetic disk drive
message commands
program modules
addition
transmission
methods
communication
remote management functions
combination
mod3
BIOS
multimodal systems
communications interface
video interface
requests
appropriate command node
hardware capable
recited methods
location interface
features
additional device
authorization steps
two or more user devices
scroll wheel
defined namespace
intranet
user interaction
smart phone
functions
storage device
embodiments
variety
clarity
other types
embedded GPS system
functionality
specific-use
“processor” or processor
device
text-based message
computer implemented steps
data structures
motion
different performance characteristics
user station
circuit
media
computing devices
operating system
command node
corresponding command collection topic
peripherals
computing system
desktop or workstation
particular function
its location
single shared processor
multi-core processor
publisher
runtime
memory bus or memory controller
unique identifier
user
Uniform Resource Identifier
software
illustrative embodiments
output interface
network
function
requesting device
instructions
location command
collection
multiple communication devices
appropriate authentication
communication network
particular functions
recited non-transitory computer-readable storage media
video camera
general purpose DSP circuit
various ways
associated computer
electromagnetic waves
private network
request
modules
operating environment
cached location information
current location
implementations
other hardware
method embodiments
basic components
several types
cell tower
system bus
processor
mobile device(s) b
bus architectures
user input and system output
output device
devices
basic system components
peripheral bus
notification service application
input device
multiple computing devices
local bus
start-up
type