U.S. patent application number 14/961313 was filed with the patent office on 2016-03-24 for seamless movement between phone and pc with regard to applications, display, information transfer or swapping active device.
The applicant listed for this patent is Avaya Inc.. Invention is credited to Sandra ABRAMSON, Mehmet C. BALASAYGUN, John BUFORD, Anthony FRISSORA, Michael KILLIAN, Raj SINHA.
Application Number | 20160087836 14/961313 |
Document ID | / |
Family ID | 43085839 |
Filed Date | 2016-03-24 |
United States Patent
Application |
20160087836 |
Kind Code |
A1 |
ABRAMSON; Sandra ; et
al. |
March 24, 2016 |
SEAMLESS MOVEMENT BETWEEN PHONE AND PC WITH REGARD TO APPLICATIONS,
DISPLAY, INFORMATION TRANSFER OR SWAPPING ACTIVE DEVICE
Abstract
It would be beneficial to allow one or more of information,
applications, desktops, and in general any information to be shared
between a computer and a communications device. For example, it
would be useful to be able to move a presentation from a computer
to a mobile communications device. Some solutions attempt to
address this by requiring a user to load the information on a
laptop, USB key, burn it to an optical disk or the like, and then
"open" the information on another device located at the remote
destination. In one embodiment, through the use of one or more of
virtualization and content translation, any information and/or
applications can be exchanged between a computer and a
communications device. More specifically, one embodiment utilizes
metadata in conjunction with a virtualization environment to allow
the exchange of information and/or applications between a personal
computer and a communications device, or vice versa.
Inventors: |
ABRAMSON; Sandra; (Freehold,
NJ) ; BALASAYGUN; Mehmet C.; (Freehold, NJ) ;
BUFORD; John; (Princeton, NJ) ; FRISSORA;
Anthony; (Fair Haven, NJ) ; KILLIAN; Michael;
(Toms River, NJ) ; SINHA; Raj; (West Orange,
NJ) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
Avaya Inc. |
Santa Clara |
CA |
US |
|
|
Family ID: |
43085839 |
Appl. No.: |
14/961313 |
Filed: |
December 7, 2015 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
12922829 |
Sep 15, 2010 |
9237200 |
|
|
PCT/US10/45769 |
Aug 17, 2010 |
|
|
|
14961313 |
|
|
|
|
61235838 |
Aug 21, 2009 |
|
|
|
Current U.S.
Class: |
709/223 |
Current CPC
Class: |
H04L 45/02 20130101;
H04L 65/403 20130101; H04L 67/24 20130101; H04L 67/306 20130101;
G06F 9/543 20130101; H04M 7/0057 20130101; H04L 41/0803 20130101;
H04L 67/04 20130101; H04W 64/00 20130101; H04L 45/586 20130101 |
International
Class: |
H04L 12/24 20060101
H04L012/24; H04L 12/751 20060101 H04L012/751; H04L 12/713 20060101
H04L012/713 |
Claims
1-20. (canceled)
21. A method for appliance discovery and validation comprising:
discovering, by a processor, one or more appliances in an appliance
index; selecting, by the processor, an appliance and creating a
container using a hypervisor for the selected appliance;
downloading, by the processor, the selected appliance from an
appliance repository to the container; and configuring, by the
processor, one of a virtual network, guest operating system, or
services.
22. The method of claim 21, wherein the one of the virtual network,
guest operating system, or services is the guest operating
system.
23. The method of claim 22, wherein the guest operating is one of a
plurality of guest operating systems run by the processor.
24. The method of claim 21, wherein the one of the virtual network,
guest operating system, or services is the virtual network.
25. The method of claim 24, wherein the virtual network comprises a
virtual router that connects to a network interface card.
26. The method of claim 21, wherein the one of the virtual network,
guest operating system, or services is the services.
27. The method of claim 26, wherein the services are tested and
deployed.
28. The method of claim 21, further comprising: obtaining a license
for the selected appliance; and configuring the license for the
selected appliance.
29. A system for appliance discovery and validation comprising: a
microprocessor, a computer readable medium, coupled with the
microprocessor and comprising microprocessor readable and
executable instructions for a communication processor; and a
discover system executed by the microprocessor that discovers one
or more appliances in an appliance index, selects an appliance,
creates a container using a hypervisor for the selected appliance,
receives the selected appliance from an appliance repository to the
container, and configures one of a virtual network, guest operating
system, or services.
30. The system of claim 29, wherein the one of the virtual network,
guest operating system, or services is the guest operating
system.
31. The system of claim 30, wherein the guest operating is one of a
plurality of guest operating systems run by the processor.
32. The system of claim 29, wherein the one of the virtual network,
guest operating system, or services is the virtual network.
33. The system of claim 32, wherein the virtual network comprises a
virtual router that connects to a network interface card.
34. The system of claim 29, wherein the one of the virtual network,
guest operating system, or services is the services.
35. The system of claim 34, wherein the services are tested and
deployed.
36. The system of claim 29, wherein the discover system obtains a
license for the selected appliance and configures the license for
the selected appliance.
Description
RELATED APPLICATION DATA
[0001] This application is a divisional application of application
Ser. No. 12/922,829 having a filing date of Sep. 15, 2010, which
claims the benefit of PCT Application No. PCT/US10/45769 having a
filing date of Aug. 17, 2010 which claims the benefit of and
priority under 35 U.S.C. .sctn.119(e) to U.S. Patent Application
No. 61/235,838, filed Aug. 21, 2009, entitled "MOJO," which is
incorporated herein by reference in its entirety.
FIELD
[0002] An exemplary aspect is directed toward information sharing
between a communications device and a personal computer. More
specifically, an exemplary embodiment is directed toward the
seamless movement of one or more of applications, display
information, and information between a communications device, such
as a mobile communications device, and a personal computer.
BACKGROUND
[0003] Remote Desktop Protocol (RDP) is a proprietary protocol
developed by Microsoft.RTM., which provides a user with a graphical
interface to another computer. The protocol is an extension of the
ITU-T T.128 Application Sharing Protocol. There are numerous
clients available for most versions of Windows.RTM. and other
modern operating systems. Some of the features associated with
remote desktop services include color support, encryption, audio
redirection, file system redirection, printer redirection, port
redirection, clipboard sharing, seamless windows, remote program
execution, terminal services, Transport Layer Security (TLS)
support, as well as multiple monitor support.
SUMMARY
[0004] However remote desktop is limited to interactions between
two computers. It would be beneficial to allow one or more of
information, applications, desktops, and in general any information
to be shared between a computer and a communications device, such
as a mobile communications device. For example, it would be useful
to be able to move a presentation from a computer to a mobile
communications device, such that the presentation can be taken to a
conference down the hall. Some solutions attempt to address this by
requiring a user to load the information on a laptop, USB key, burn
it to an optical disk or the like, and then "open" the information
on another device located at the remote destination.
[0005] In accordance with one exemplary embodiment, through the use
of one or more of virtualization and content translation, any
information and/or applications can be exchanged between a computer
and a communications device. More specifically, one exemplary
embodiment utilizes metadata in conjunction with a virtualization
environment to allow the exchange of information and/or
applications between a personal computer and a communications
device, or vice versa.
[0006] Another exemplary embodiment allows the screen, or desktop,
from either a computer or the communications device to be extended
on to the other device. For example, a contact interface screen
could be drag-and-dropped on to a communications device interface.
Similarly, a communications device-centric interface could be
drag-and-dropped onto a computer interface. This could be
accomplished, for example, via a docking-station-type transfer
and/or virtualization environment.
[0007] In accordance with another exemplary embodiment, through the
use of user authentication and binding, one or more of applications
and information can be shared between the devices. Another aspect
performs a translation or conversion of the information and/or
application(s) as part of the request to transfer the information
and/or application(s) to the other device. For example, the
capabilities of the destination device can be queried and the
translation of the application and/or information based on the
result of the query. For example, if one is transferring a document
from a computer to a communications device, and it is determined
that the communications device has a lite or view-only version of
the native application for the document, little to no conversion
may be needed. However, if it is determined that no application on
the communications device is capable of displaying the document, a
helper application could be downloaded to assist with the viewing.
Alternatively, or in addition, the document can be converted to a
format supported by the communications device.
[0008] Additional exemplary aspects are directed to techniques that
allow a user to download an application(s) to the communications
device based on one or more of: dynamic discovery of the
communications device and/or computer, an ability to run a
companion application on the computer that can facilitate
communication between the communications device and the computer,
an ability to send an application, along with a data document, to
the communications device, sending metadata information from the
computer to the communications device to let the communications
device know about the required operating environment to host the
information and/or application being sent by the computer, and an
ability for the communications device to accept the metadata
information, and take action to dynamically instantiate the
indicated virtualization environment to host the application, and
start the application in a state indicated by the incoming
metadata.
[0009] Even further aspects are related to being able to render a
data file that was transferred from a computer to a communications
device on-the-fly. For example, a virtualization service can be
utilized, that can either be stored somewhere on a network, or
downloaded, the virtualization service providing the necessary
information and support to allow rendering of the data file,
information, or the like. In accordance with one exemplary
embodiment, the communications device, such as a mobile
communications device, can run the virtualization environment. In
accordance with another exemplary embodiment, a server that is
capable of communication with the communications device can run the
virtualization environment and provide support to the
communications device as necessary. Therefore, the information can
be rendered in the virtualization environment such that it can be
viewed, managed, edited, or otherwise manipulated on the
communications device. Additionally, this operation can be dynamic
such that the virtualization environment is chosen based on
information associated with the downloaded file, such as metadata,
file extension, or the like. Furthermore, the techniques can be
implemented by utilizing a discovery mechanism that is capable of
dynamically determining one or more virtualization environments
that can support the obtained information, applications, downloaded
files, or the like.
[0010] In accordance with another exemplary embodiment, screen
sharing, application sharing, data sharing and information sharing
are accomplished by utilizing metadata in conjunction with a
virtualization environment that allows the exchange of any one or
more of these types of information between a computer and a
communications device or vice versa.
[0011] Another exemplary aspect allows the display or screen from
either the computer or the communications device to be extended
onto the other device. For example, a contact interface screen
could be drag-and-dropped onto a computer interface. This could be
accomplished via a docking station type of transfer and/or
virtualization environment that supports the extension.
[0012] Additional exemplary aspects are directed toward the use of
user authentication and binding, and sharing one or more of
applications and information between the devices.
[0013] Even further exemplary aspects are directed toward a
translation or conversion of the application/information as part of
a request to transfer the information/application to the other
device, i.e., from the computer to the communications device or
from the communications device to the computer.
[0014] Even further exemplary aspects are directed toward allowing
a user to download an application to the communications device
based on one or more of: dynamic discovery of the communications
device and computer, an ability to run a companion application on
the computer that can facilitate communication between the
communications device and the computer, an ability to send an
application, along with a data document, to the communications
device and the like.
[0015] In more detail, a first exemplary embodiment allows the
extension of the screen from a first device, such as a display
associated with a computer to the second device, such as a
communications device and more particularly, a mobile
communications device with a display. In accordance with this
exemplary embodiment, the "desktop" from the communications device
can be extended to the PC such that a virtualized communications
device desktop is displayed on the computer's desktop. In another
embodiment, the PC desktop could be directly attached by the
communications device. This can allow, for example, dragging and
dropping of one or more of applications, data, information, and the
like, from the computer's desktop to the virtualized communication
device's desktop, which then allows that information to be
accessible on the communications device. In a similar manner, in a
one or more of information, applications and data can be
dragged-and-dropped from the virtualized communications device
desktop to the computers desktop. One exemplary advantage
associated with this embodiment is that it allows the desktop user
to seamlessly control data and applications between the two
"desktops."
[0016] In operation, a user can navigate to the computer's desktop,
via the communication device's interface. A user could then select
a particular icon associated with a specific application. The user
could then drag the icon associated with this specific application
to the communication device's desktop. This would cause the
application associated with the icon to be installed on the
communications device thereby allowing the user to launch the
application from the communications device as needed.
[0017] In accordance with another exemplary embodiment, a user
working on a computer can control one or more of data,
applications, and information on a communications device through
the use of the computer's desktop. For example, a user selects data
folder "new job" on the computers desktop. The user then drags the
"new job" folder icon from the computer's desktop to the
communication device's desktop using, for example, a mouse or
comparable input device. If format conversion is required, this
conversion can happen automatically such that the communications
device is able to render information in the "new job" folder as
needed. This dragging of the folder then makes available on the
communications device the information from the "new job" folder as
needed from any location.
[0018] Another exemplary embodiment is directed toward the
attaching and detaching of the "desktops" of the two devices, e.g.,
the computer and the communications device. For example, from the
communications device, nearby "desktops" can be discovered. Some of
these desktops may be virtualized desktops running on another host,
a headless server may have a virtual desktop, or the like. To
assist with this discovery, a desktop advertisement can be
performed, such that, for example, the communications device can
select a discovered desktop and then attach to it. The attachment
may optionally involve log-in credentials, but as will be
appreciated is not limited to log-in semantics. Once the attachment
is complete, the seamless connection of the two "desktops" provides
for the data, information and application sharing as discussed. As
will further be appreciated, the attached desktop may be for a
different operating system than the home desktop. Additionally,
pointer and input device navigation can work in a seamless manner
across both the desktops. Additionally, if a particular device does
not have input capabilities, e.g., does not have a keyboard, then,
for example, an on-screen virtual keyboard could be generated. As
will also be appreciated, the discovery and attachment need not be
limited to be from the communications device to the PC, but could
also work in the opposite direction, e.g., from the computer
desktop discovering the communications device desktop, and
attaching thereto. These techniques are operating system agnostic
as well as device platform agnostic.
[0019] In accordance with some of the exemplary embodiments,
service discovery will be utilized where service discovery is a
protocol by which clients search or request for service and
location information. This service-discovery approach can be
utilized to one or more of search for applications, search for
information and/or search for data. It can be also utilized to
invoke one or more services remotely. The service advertisement is
a protocol by which service offers notify clients about
services.
[0020] Virtualization, in addition to being able to provide the
capability of isolating a device from its underlying hardware,
allows the emulation of computer resources and software for the
purpose of providing a guest operating system a platform matching
the instruction set and device I/O model it was compiled for.
[0021] A hypervisor is a software monitor that supports one or more
guest operating systems using virtualization.
[0022] An appliance is a type of software packaging in which
software services, applications and configuration information can
be bundled with an operating system image for installation on a
hypervisor.
[0023] In accordance with one exemplary embodiment, the discovery,
virtualization, deployment and re-deployment of computer
applications and/or services are provided. For example, a phone,
such as a network phone, communications device, or mobile
communications device searches a network for other computers that
have applications and/or data, such as a desktop personal computer.
Then the communications device selects the application, configures
a hypervisor with a virtualized operating system to receive the
application, transfers the application image from the remote
computer to the virtualized operating system, configures the
virtualized operating system and deploys the application for use. A
hypervisor can then snapshot the combined guest operating system
and application into a form that can be re-deployed on other
devices in the network, and can advertise the availability of the
snapshot as an appliance. Other computers/devices subsequently are
capable of discovering the appliance.
[0024] Another embodiment allows the discovery of virtualized
services or applications, validation, deployment and re-deployment
enablement. For example, a phone, such as a network phone, mobile
communications device, or the like, searches on a network for
appliances that can be dynamically downloaded from a computer,
using search parameters that include both functional and packaging
requirements. The communications device selects and installs a
discovered appliance in a virtualized container managed by a
hypervisor and validates the appliance for one or more of security,
trust and operation. The communications device then licenses the
appliance from the appliance provider, and dynamically deploys the
device on a hypervisor. The communications device is then capable
of reconfiguring the appliance and duplicating it to a repository
or other network computer(s) to access.
[0025] In accordance with another exemplary embodiment, appliance
discovery can find applications or compound service sets packaged
in a virtualized container for deployment on a hypervisor. This
packaging can simplify installation and provides isolation for the
installed application(s) on the appliance from other parts of the
system.
[0026] Another exemplary advantage is that the appliances can be
locally installed rather than invoked services over a network.
Discovery selection criteria can include metadata, packaging and
functionality. The metadata can include, for example, data types,
platform compatibility, compatibility with other applications, and
the like. Packaging can include parameters such as guest operating
system, hypervisor dependency, security settings, user accounts,
networking settings, virtualized hardware requirements (e.g.,
memory, CPU, disk, network interface card, and the like).
Validation and certification mechanisms from an image can also be
utilized as well as the use of a trusted appliance.
[0027] In accordance with another exemplary embodiment, a new
virtualized install phase can be used with a guest container
together with the virtualized networks run by the hypervisor
together with an optional virtual set of other guest operating
systems that are needed to test the appliance in isolation from the
normal network. The other guest operating systems can run test
cases on the appliance and can host other services that the
appliance needs to operate. Completion of these stages can lead to
a development stage on the hypervisor where it can be reused.
[0028] An optional embodiment includes snapshotting for
re-duplication to local appliance repository(s) or other devices.
For example, snapshots can be customized for re-targeting as well
as snapshots advertised for discovery by other device(s).
[0029] In accordance with another exemplary embodiment, appliances
can be discovered and/or dynamically discovered such as the
appliance(s) fits the required service(s). A discovery pattern can
also optionally be shown with multiple criteria, such as appliance
function, guest operating system, and configuration. In accordance
with one exemplary phone-specific embodiment, appliances can be
discovered and installed, such as appliances that support visitor
services, MMP support from third party phone applications and
DECT/CAT-IQ/multi-NIC integration. Additionally, application
service bundles can be discovered and installed to support one or
more of finance, content delivery, business tools, entertainment,
and in general any tool for any data type or content as
necessary.
[0030] In another exemplary embodiment, appliance discovery and
validation can be used as a stand-alone embodiment. For example,
many entertainment and consumer electronics devices including
HDTVs, PVRs, game machines, home appliances, digital picture
frames, digital cameras, and so on are enabled with network
interfaces, user interfaces that are a type of desktop, and
application capability. In addition, there has been some work in
providing virtualization technology for some of these device
categories. Therefore, an exemplary embodiment extends the
techniques disclosed herein to at least the above categories of
devices. As an example, a communications device could perform
desktop sharing with an HDTV (or its associated set-top box, PVR,
etc.), game machine, home appliance, etc., to do the same kinds of
application sharing and data transfer that is described herein for
the PC and communications endpoints.
[0031] The discovery may prefer trusted appliance over un-trusted
appliances. Appliance trust can be multi-part, such that trust in
the guest operating system (e.g., patch level, security
configuration, operating system certification, and the like) or
trust in the installed services/applications such as version of
security information. Discovery and loading of a trusted appliance
can involve validating the operating system and the component
services. Optional additional steps may include applying patches,
performing test or self-tests on individual services or the
appliance in total. This can be implemented as a type of composite
trust binding applied to services on the appliance.
[0032] In another exemplary embodiment, the sharing and discovery
capability for can be extended to:
[0033] a communication device to cooperate with rather than try to
duplicate or replace a PC, laptop or other full and general purpose
computing platform;
[0034] reduce the need or likelihood of having to carry a
communication and a collaboration/laptop/PC device; and/or
[0035] to supply a stationary or mobile, full featured, presented
in a more integrated/accessible manner, suitable for, for example,
conference rooms (by sharing onto larger display of other devices,
etc.), communication/collaboration solution not possible with
today's technology.
[0036] These and other advantages will be apparent from the
disclosure contained herein. The above-described embodiments and
configurations are neither complete nor exhaustive. As will be
appreciated, other embodiments are possible utilizing, alone or in
combination, one or more of the features set forth above or
described in detail below.
[0037] As used herein, "at least one", "one or more", and "and/or"
are open-ended expressions that are both conjunctive and
disjunctive in operation. For example, each of the expressions "at
least one of A, B and C", "at least one of A, B, or C", "one or
more of A, B, and C", "one or more of A, B, or C" and "A, B, and/or
C" means A alone, B alone, C alone, A and B together, A and C
together, B and C together, or A, B and C together.
BRIEF DESCRIPTION OF THE DRAWINGS
[0038] The exemplary embodiments will be described in detail, with
reference to the following figures, wherein:
[0039] FIG. 1 illustrates an exemplary communications
environment;
[0040] FIG. 2 illustrates an exemplary configuration of a computing
device;
[0041] FIG. 3 illustrates an exemplary configuration of a computing
device;
[0042] FIG. 4 illustrates an exemplary configuration of a computing
device;
[0043] FIG. 5 illustrates an exemplary configuration of a
hypervisor and associated components;
[0044] FIG. 6 illustrates an exemplary configuration of a
hypervisor and associated components;
[0045] FIG. 7 illustrates an exemplary configuration of a
hypervisor and associated components;
[0046] FIG. 8 illustrates exemplary steps for loading an
appliance;
[0047] FIG. 9 illustrates an architecture supporting appliance
discovery and loading;
[0048] FIG. 10 illustrates an architecture supporting appliance
discovery and loading;
[0049] FIG. 11 is an exemplary messaging framework between a
device, such as a communications device, and its various indexes,
repositories, hypervisors, containers, and the like.
[0050] FIG. 12 is flow chart outlining an exemplary method for
sharing one or more of information, data, applications, and the
like between two devices, such as a personal computer and a
communication device.
DETAILED DESCRIPTION
[0051] Some embodiments will be illustrated below in conjunction
with an exemplary communication system. Although well suited for
use with, e.g., a system using switch(es), server(s) and/or
database(s), communications endpoints, etc., the embodiments are
not limited to use with any particular type of communication system
or configuration of system elements. Those skilled in the art will
recognize that the disclosed techniques may be used in any
communication application in which it is desirable to provide
enhanced communications.
[0052] Referring initially to FIG. 1 an exemplary communication
environment 1 will be described in accordance with at least some
embodiments. The communication environment can comprise (in
addition to well-known componentry) a communication network
connecting a plurality of communication devices capable of sending
one or more communications in one or more modalities.
[0053] In one embodiment, the communication environment may include
a switch that may include a private branch exchange (PBX) system or
any similar type of switching system capable of providing a
telephone service to one or more entities such as an enterprise
associated with the switch, a user associated with the switch, such
as a caller or callee, or the like. The switch may be one of a
number of known exchange systems including, but not limited to,
Private Automated Branch Exchange (PABX), Computerized Branch
Exchange (CBX), Digital Branch Exchange (DBX), or Integrated Branch
Exchange (IBX). The switch may also comprise a switching fabric
that provides for the connection of multiple endpoints such as
communication devices associated with call participants, servers
and databases. The switching fabric can provide the functionality
to direct incoming and/or outgoing calls to various endpoints and
further provides for conferencing capabilities between endpoints as
well as the ability for forward information associated with
presence.
[0054] The communication devices (such as second device 200) may be
packet-switched or circuit-switched and can include, for example,
IP desk phones such as the Avaya Inc.'s, 9600 Series IP Phones.TM.,
IP softphones such as Avaya Inc.'s, IP Softphone.TM., Personal
Digital Assistants or PDAs, Personal Computers or PCs, laptops,
packet-based H.320 video phones and conferencing units,
packet-based voice messaging and response units, packet-based
traditional computer telephony adjuncts, smartphones, and
conventional wired or wireless telephones. Additional devices that
may be included but are not shown in the communications environment
include but are not shown are computer-based internet browsers
and/or applications specific to a particular communications
modality, such as an application (and associated communications
hardware) that supports blogging from a computer or mobile
computing or communications device.
[0055] The embodiments will also be discussed in conjunction with
an exemplary communication network. Although well suited for use
with, e.g., a system having a private branch exchange (PBX) or
other similar contact processing switch, the embodiments are not
limited to use with any particular type of communication system
switch or configuration of system elements.
[0056] One or more switches may also be included in the
communications environment and may include a PBX, an enterprise
switch, or other type of telecommunications system switch, as well
as other types of processor-based communication control devices
such as servers, computers, adjuncts, etc. By way of example, the
switch may be implemented as an otherwise conventional DEFINITY.TM.
or MULTIVANTAGE.TM. Enterprise Communication Service (ECS) or
Avaya.RTM. Aura Communication Manager.TM. communication system
switch available from Avaya Inc. Other types of known switches are
well known in the art and therefore not described in detail
herein.
[0057] The second device or communication device 200 may be a wired
desktop telephone terminal or any other type of terminal capable of
communicating. The word "terminal" and "communications device" and
"phone" as used herein should therefore be understood to include
not only wired or wireless desktop telephone terminals but also
other types of communication devices, including without limitation
IP softphones, IP hardphones, mobile telephones, personal
computers, laptops, personal digital assistants (PDAs), smart
phones, etc.
[0058] A switch could also be coupled via one or more links to a
network. In one configuration, communication lines or links are
trunk lines and the network is the public switched telephone
network (PSTN). In another configuration, the communication lines
pass through an optional gateway to a packet-switched network, such
as the Internet. In any event, the lines or links carry incoming
information to and from one or more of the first and second
devices. It should be noted that the embodiments disclosed herein
do not require any particular type of information transport and the
embodiments may be implemented with any desired type of transport
medium as well as combinations of different types of transport
media.
[0059] FIG. 1 illustrates an exemplary communications environment
1. The communications environment 2 includes a first device and a
second device. The first device is, for example, a personal
computer, laptop computer, netbook, or the like, with an associated
display 100 and input device, such as input device 102, which can
be a mouse, keyboard, or in general any input device. The second
device 200 is, for example, a communications device such as a
phone, desktop phone, mobile phone, cell phone, smart phone, PDA,
or the like, and in general can be any communications device that
is capable of exchanging one or more of communications, messages,
information, data, and the like, with one or more other
devices.
[0060] The first device 100 includes, in addition to well known
componentry, desktop sharing service 110, operating system 120,
file system 130, graphics driver/hardware 140, controller/processor
150, memory 160 and storage 170.
[0061] The second device 200, in addition to well known
componentry, includes desktop sharing service 210, operating system
220, file system 230, graphic driver/hardware 240,
controller/processor 260, memory 260 and storage 270.
[0062] The first device 100 can include one or more installed
applications, stored data, icons representing information, data,
icons, links, or the like, and can also include one or more folders
or directories of information stored either on the PC or, for
example, on a network drive. For example, the first device 100 can
include applications such as application PC1, application PC2, and
the like. Similarly, the first device 100 can include folders such
as folder PC1, folder PC2, folder PC3, and the like. In addition to
well known functionality, such as a start button, the first device
100 can also display, for example, one or more icons that are
selectable by, for example, input device 102.
[0063] In a similar manner, the second device 200 can include
applications, such as application 1, application 2, and the like.
The second device 200 may also optionally include one or more
folders such as folder 1, folder 2, folder 3, and the like, as well
as one or more icons similar to that on the first device 100. The
second device 200 may also include one or more virtual or hard
buttons that allows for interaction with the device via, for
example, a touch screen, virtual keyboard, track ball, track pad,
or the like.
[0064] As discussed, an exemplary aspect is directed toward the
ability to share one or more of applications, information, data,
and the like, between the first and second devices.
[0065] In operation, a request to one or more of exchange
information and/or applications between devices is detected. This
is initiated by: a request to extend the screen from one device to
another device being detected, a request to share one or more of
applications and information being detected, and a translation
and/or conversion is requested and/or a request to download one or
more applications being detected.
[0066] Even more generally, the request to exchange any type of
data, information, applications or the like, between the first and
second device, or vice versa, can trigger the steps illustrated in
FIG. 1 that allow the exchanging of this information between the
devices. Even more specifically, and in accordance with the first
exemplary embodiment, the ability to share the above types of
information starts with the advertising of a desktop sharing
service. While the embodiment illustrated in FIG. 1 is directed
toward an ability to share the "desktop" of the second device 200
on the first device 100, it should be appreciated that the systems,
methods and techniques disclosed herein will also work in the
opposite direction.
[0067] With the desktop sharing service 110 advertising the ability
to share the desktop, the desktop sharing service 210 discovers,
detects, or otherwise recognizes the advertised desktop sharing
service and returns to the first device 100, an acknowledgement
that the desktop sharing service is being advertised, has been
discovered, and that the second device 200 would like to attach the
desktop service being hosted by the first device 100. Next, and in
cooperation with one or more of the operating system 220, file
system 230, graphics driver hardware 240, controller/processor 250,
memory 260 and storage 270, a remote desktop is established on the
first device 100, as illustrated by extended desktop (or virtual
desktop) 101, which is displayed on the first device 100 in
cooperation with one or more of the operating system 120, file
system 130, graphics driver/hardware 140, controller/processor 150,
memory 160 and storage 170.
[0068] With the extension of the desktop from the second device 200
onto the first device 100, one or more of applications, folders,
files, data, and the like can be copied, as well as data moved, as
well as the invocation of one or more applications on the original
desktop executed. For example, using input device 102, a user can
one or more of drag-and-drop one or more of application PC1,
application PC2, icon, folder PC1, folder PC2, folder PC3, or the
like, to the virtual desktop 101 associated with the second device
200. In a similar manner, and again using input device 102, the
user can drag-and-drop one or more of application 1, application 2,
icon, folder 1, folder 2, folder 3, or the like from the virtual
desktop 101 to desktop associated with the first device 100. This
exchanging of information, data, applications, and the like can
continue as long as necessary, with the conclusion of desktop
sharing be initiated by a message being sent from the second device
200 to the first device 100 indicating a desire to detach from the
desktop sharing service. Upon detaching from the desktop sharing
service, with the cooperation of the desktop sharing service 210
and the desktop sharing service 110, the virtual desktop 101 on the
first device 100 is removed from the display of the first device
with the sharing of one or more of information, data, applications,
and the like, concluded.
[0069] As will be appreciated, and in general, any types of
information can be exchanged between the two devices, such as
contacts, calendar items, data files, information files,
applications, such as one or more executables, images, videos,
multimedia information and in general any information that can be
stored on either one of the first device 100 and second device 200
can be exchanged there between with, for example, a copy or move
motion that either copies, or moves, respectively, the information
from one device to the other.
[0070] FIGS. 2-7 illustrate exemplary configurations of how either
one of the first device and the second device can be configured to
allow exchanging of information there between. More specifically,
and as discussed, the sharing service may run as an operating
system process, an operating system driver, an operating system
application, in a virtualized operating system layer, in a
hypervisor, or some combination thereof. Specifically, FIGS. 2-4
illustrate exemplary aspects that are computer-based
implementations placing the desktop sharing service in the first
device 100. In particular, in FIG. 2, the desktop sharing service
110, guest operating system, and hypervisor 180 are associated with
the operating system 120. Inter-process communications (IPC) are
sent from the guest operating system to the other device.
[0071] In FIG. 3, the guest operating system sends the
inter-process communications via the operating system, the guest
operating system being associated with, yet separate, from
operating system 120 in a similar manner as the desktop sharing
service 110, hypervisor 180, file system 130 and graphics driver
and hardware 140.
[0072] In FIG. 4, the desktop sharing service 100 is embedded
within the hypervisor 180 and/or distributed across one or more
components that can either be based in one or more of hardware and
software. In this particular exemplary embodiment, the hypervisor
180 can optionally be on hardware with the guest operating
system(s) being, for example, an Android.RTM. based operating
system with a desktop sharing service.
[0073] FIGS. 5-7 illustrate exemplary configurations for
virtualized environments that support appliance discovery and
loading. In these exemplary embodiments the configurations include
a module in a separate virtual container, a module built in to a
hypervisor and an installable component. More configurations can be
shown for different types of hypervisors. Even more specifically,
in FIG. 5, the appliance discovery and loader 510 is a module in a
separate virtual container layered on top of a type 1 hypervisor
and associated hardware. In FIG. 6, the appliance discovery and
loader 610 is built into the type 1 hypervisor, which is running on
associated hardware 620. In FIG. 7, the appliance discovery and
loader 710 is an installable component in the operating system 720
that in a similar manner runs on a type 1 hypervisor running on
hardware 730. In general, and regardless of the location of the
appliance discovery and loader, the module can act as, for example,
an operating system service which can be invoked by one or more of
applications, optionally subject to security policies, and can be
used to one or more of discover and load one or more appliances. A
list of the available appliances may be stored in one or more
repositories on the network, or in general in any kind of
distributed database, with the location of the repositories and
databases optionally being preconfigured or discoverable using, for
example, standard search protocols.
[0074] FIG. 8 illustrates an exemplary discovery and load procedure
for the loading of an appliance into a second device, such as
communications device 810 from a first device, such as PC 820. In
particular, in step 1, the operating system requests to find an
appliance with a particular name. Next, the appliance discovery and
loader 805 can optionally validate the request and determine
whether the request is acceptable based on one or more of rules,
policies, security policies, and the like. Assuming the request to
find a particular appliance is valid, in step 2 the appliance
discovery and loader 805 sends the request to the appliance
repository 830 to discover the one or more appliances being
requested. Assuming at least one match is found, the best candidate
according to the discovery request is determined, and in step 3 the
selected appliance is downloaded and installed into container 840.
The hypervisor can then manage the container 840 including one or
more of starting and stopping, connections to and therefrom,
security, mapping the physical resources, and the like. In this
particular exemplary embodiment, the PC 820 contains the appliance
repository 830, with the appliance discovered therein being
returned and installed on the communications device 810.
[0075] FIG. 9 illustrates an exemplary technique and configuration
of associated hardware, hypervisors, and operating systems where
the loaded appliance can be validated in isolation. In particular,
in FIG. 9 the architecture includes an operating system 910, an
appliance discovery and loader 920, appliance 930, temporary
operating system with pseudo services 940, a second temporary
operating system with pseudo services 950, a temporary operating
system with client test applications 960, one or more virtual
routers 970/972, an optional firewall, and hardware 980 that
includes a network interface card (NIC) 985. In operation, the
appliance 930 is loaded into a container managed by the hypervisor.
The virtual router 970 can be configured with an isolated address
base so that network traffic can be initiated to parallel
containers on the same virtual router. The operating system 910 and
appliance discovery and loader 920 can control services and test
applications in temporary containers, and can control configuration
of the virtual router. Moreover, the operating system 910 and
appliance discovery and loader 920 can continue to have access to
networks mapped to physical network interface cards 985.
[0076] FIG. 10 illustrates an exemplary method of deploying a
validated appliance in accordance with an exemplary aspect. In
particular, in FIG. 10, the result of a successful deployment is
shown where validation test(s) succeeded. In FIG. 10 the
containers, such as empty containers 1040, and virtual router 1050,
can be reconfigured for deployment of the validated appliance with
temporary operating systems such as those illustrated in FIG. 9
dropped with the virtual router 1050 being reconfigured to provide
direct access to the network interface card 1060.
[0077] FIG. 11 illustrates an exemplary messaging framework between
a second device, such as a communications device, and their various
indexes, repositories, hypervisors, containers, etc. In particular,
control commences with an advertise message from the appliance
index to the communications device. This is answered with a
discover message from the communications device back to the
appliance index with one or more matches to the discovery request
returned to the communications device.
[0078] Next, the communications device, in cooperation with the
hypervisor creates a container. Next, the communications device
retrieves, from the appliance repository, one or more appliances
that match with them being downloaded, in the next step, to the
appliance container. An optional next step is that the
communications device can secure a license from the appliance
licensor which can optionally be followed by the configuration of
the license for the appliance that is now stored in the appliance
container.
[0079] Next, and as needed, and in cooperation with the hypervisor,
one or more of a virtual network and additional guest operating
systems and services can be configured, as needed. The appliance
stored in the appliance container can then be configured with a
testing of the services optionally performed with control
continuing to optionally duplicate the appliance and/or deploy the
now tested, and validated appliance stored in the appliance
container.
[0080] FIG. 12 is a flowchart outlining an exemplary method for
sharing one or more of information, data, applications, and the
like, between two devices such as a personal computer and a
communications device. In particular, control begins in step S1200
and continues to step S1210. In step S1210, one or more of a
request for exchanging of information or applications, an extension
of a screen from one device to another, sharing one or more of
applications and information, translation and/or conversion, and
the downloading of applications is detected. Next, advertising of a
remote desktop is advertised with a corresponding discovery
performed. Then, in step S1230, one or more containers are created
as necessary. Control then continues to step S1240.
[0081] In step S1240, one or more appliances are obtained and
stored in an appliance container. Next, in step S1250, a license
for the obtained appliance can optionally be obtained. Then, in
step S1260, the license can optionally be configured as necessary
with control continuing to step S1270.
[0082] In step S1270, one or more of a virtual network and
additional guest operating systems and services can be configured
as needed. Next, in step S1280, the appliance is configured as
needed with the services optionally being tested in step S1290. In
step S1292, the appliance can one or more of be duplicated and
deployed thereby allowing the sharing of information as discussed
above, with control continuing to step S1294 where the control
sequence ends.
[0083] Additional exemplary aspects are directed toward the ability
to dynamically discover one or more of the communications device
and the personal computer. Another exemplary aspect is directed
toward an ability to run a companion application on the computer
that can facilitate communication between the communications device
and the computer. Even further aspects are directed to an ability
to send an application, along with a corresponding data document,
from the personal computer to the communications device, or vice
versa. In order to send an application from a computer to the
communications device, one exemplary embodiment utilizes metadata
information sent from the computer to the communications device to
let the communications device know about the required operating
environment to host the application(s) being sent to it from the
computer.
[0084] Another exemplary aspect is directed toward an ability of
the communication device to accept the metadata information, and
take action to dynamically instantiate the indicated virtualization
environment to host the application, and start the application in
the state indicated by the incoming metadata.
[0085] Additional embodiments are directed toward an ability to
utilize a protocol where metadata information is passed along in a
protocol that allows a customization of a virtualization
environment to host a foreign application. Another exemplary aspect
is directed toward a central repository versus a broadcast
protocol. A device that is looking for a particular type of
application can query its neighbors, using, for example, a
broadcast mechanism to look for other devices running the desired
application, verify that the application running on the other
device is from a legitimate application repository, and initiate
downloading of the application directly from the other device
without necessarily having to query a central repository. Another
exemplary aspect is directed toward an ability to utilize service
discovery from virtualized services, which includes an access
control mechanism that allows different versions of an application,
depending on the addition of the application purchased or licensed.
A full version of the application can be stored in the repository,
and during the download instantiation process, the application and
its container exchange information that allows that application to
run in a full-featured mode or a reduced functionality mode,
depending on the download/licensing/purchase agreement
restrictions.
[0086] Another exemplary aspect allows a first device to
communicate with other devices in the network, and negotiate,
allocate and instantiate a remote virtualization container and a
remote device, but use of the output of the applications running in
the container is passed back to the first device. This type of
distributing processing has exemplary advantages such as: the
remote device is able to place bounds on how much a virtualization
instance requested by a remote device can use of its resources and
allows any application to run on a remote device that has idle
capacity, regardless of the chip platform, operating system that
the device is built for, or the like, and the negotiation between
the requesting device and the requested device can involve a
metadata information exchange that, for example, tells the
virtualization environment on the remote device to load an
operating system and run an operating system specific application
on another type of personal computer.
[0087] Additional aspects use a central repository as a central
backup server, or virtualization environments from devices on the
network can be snap-shotted and saved on the server. This can be
used, for example, by a user initiated request, and/or
automatically requested as initiated, for example, by a direction
from one or more network servers.
[0088] The various embodiments include components, methods,
processes, systems and/or apparatus substantially as depicted and
described herein, including various embodiments, subcombinations,
and subsets thereof. Those of skill in the art will understand how
to make and use the disclosed techniques after understanding the
present disclosure. The present disclosure, in various embodiments,
includes providing devices and processes in the absence of items
not depicted and/or described herein or in various embodiments
hereof, including in the absence of such items as may have been
used in previous devices or processes, e.g., for improving
performance, achieving ease and\or reducing cost of
implementation.
[0089] The foregoing discussion has been presented for purposes of
illustration and description. The foregoing is not intended to
limit the embodiments to the form or forms disclosed herein. In the
foregoing Detailed Description for example, various features are
grouped together in one or more embodiments for the purpose of
streamlining the disclosure. This method of disclosure is not to be
interpreted as reflecting an intention that the claims require more
features than are expressly recited in each claim. Rather, as the
following claims reflect, inventive aspects lie in less than all
features of a single foregoing disclosed embodiment. Thus, the
following claims are hereby incorporated into this Detailed
Description, with each claim standing on its own as separate
preferred embodiments.
[0090] Moreover, though the description of the embodiments has
included description of one or more features and certain variations
and modifications, other variations and modifications are within
the scope of the disclosure, e.g., as may be within the skill and
knowledge of those in the art, after understanding the present
disclosure. It is intended to obtain rights which include
alternative embodiments to the extent permitted, including
alternate, interchangeable and/or equivalent structures, functions,
ranges or steps to those claimed, whether or not such alternate,
interchangeable and/or equivalent structures, functions, ranges or
steps are disclosed herein, and without intending to publicly
dedicate any patentable subject matter.
[0091] While the above-described flowcharts have been discussed in
relation to a particular sequence of events, it should be
appreciated that changes to this sequence can occur without
materially effecting the operation of the system(s). Additionally,
the exact sequence of events need not occur as set forth in the
exemplary embodiments. The exemplary techniques illustrated herein
are not limited to the specifically illustrated embodiments but can
also be utilized with the other exemplary embodiments and each
described feature is individually and separately claimable.
[0092] The systems, methods and protocols described herein can be
implemented on a special purpose computer (or communications
device) in addition to or in place of the described communication
equipment, a programmed microprocessor or microcontroller and
peripheral integrated circuit element(s), an ASIC or other
integrated circuit, a digital signal processor, a hard-wired
electronic or logic circuit such as discrete element circuit, a
programmable logic device such as PLD, PLA, FPGA, PAL, a
communications device, such as a phone, any comparable means, or
the like. In general, any device capable of implementing a state
machine that is in turn capable of implementing the methodology
illustrated herein can be used to implement the various
communication methods, protocols and techniques disclosed
herein.
[0093] Furthermore, the disclosed methods may be readily
implemented in software using object or object-oriented software
development environments that provide portable source code that can
be used on a variety of computer or workstation platforms.
Alternatively, the disclosed system may be implemented partially or
fully in hardware using standard logic circuits or VLSI design.
Whether software or hardware is used to implement the systems is
dependent on the speed and/or efficiency requirements of the
system, the particular function, and the particular software or
hardware systems or microprocessor or microcomputer systems being
utilized. The communication systems, methods and protocols
illustrated herein can be readily implemented in hardware and/or
software using any known or later developed systems or structures,
devices and/or software by those of ordinary skill in the
applicable art from the functional description provided herein and
with a general basic knowledge of the computer and communication
arts.
[0094] Moreover, the disclosed methods may be readily implemented
in software that can be stored on a non-transitory storage medium,
executed on a programmed general-purpose computer with the
cooperation of a controller and memory, a special purpose computer,
a microprocessor, or the like. In these instances, the systems and
methods herein can be implemented as program embedded on personal
computer such as an applet, JAVA.RTM. or CGI script, as a resource
residing on a server or computer workstation, as a routine embedded
in a dedicated communication system or system component, or the
like. The system can also be implemented by physically
incorporating the system and/or method into a software and/or
hardware system, such as the hardware and software systems of a
communications device or system.
[0095] It is therefore apparent that there has been provided, in
accordance with exemplary embodiments, systems, apparatuses and
methods for enhancing communications. While the embodiments have
been described in conjunction with a number of features, it is
evident that many alternatives, modifications and variations would
be or are apparent to those of ordinary skill in the applicable
arts. Accordingly, it is intended to embrace all such alternatives,
modifications, equivalents and variations that are within the
spirit and scope of this disclosure.
* * * * *