Back

Computing Device and Computing Environment


Drawings

Brief Description:

illustrates a general-purpose computing device 100 embodiment.

Detailed Description:

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 modulesmod1 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.

Brief Description:

illustrates a computing environment 200 in accordance with one embodiment.

Detailed Description:

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