Professional Documents
Culture Documents
UNILOC USA, INC. and
UNILOC LUXEMBOURG, S.A., Civil Action No. 2:17-cv-00571
Plaintiffs,
v. PATENT CASE
APPLE INC.,
Defendant. JURY TRIAL DEMANDED
Plaintiffs, Uniloc USA, Inc. (Uniloc USA) and Uniloc Luxembourg, S.A. (Uniloc
Luxembourg) (together, Uniloc), for their complaint against defendant, Apple Inc. (Apple),
allege as follows:
THE PARTIES
Town Center I, Suite 380, 7160 Dallas Parkway, Plano Texas 75024. Uniloc USA also
maintains a place of business at 102 N. College, Suite 603, Tyler, Texas 75702.
principal place of business at 15, Rue Edward Steichen, 4th Floor, L-2540, Luxembourg (R.C.S.
Luxembourg B159161).
Cupertino, California and regular and established place of business at 2601 Preston Road, Frisco,
Texas and 6121 West Park Boulevard, Plano, Texas. Apple offers its products and/or services,
2760493.v1
Case 2:17-cv-00571 Document 1 Filed 08/02/17 Page 2 of 6 PageID #: 2
including those accused herein of infringement, to customers and potential customers located in
Texas and in the judicial Eastern District of Texas. Apple may be served with process through
its registered agent for service in Texas: CT Corporation System, 1999 Bryant Street, Suite 900,
4. Uniloc brings this action for patent infringement under the patent laws of the
United States, 35 U.S.C. 271, et seq. This Court has subject matter jurisdiction under 28
has committed acts of infringement in this judicial district, and has a regular and established
COUNT I
(INFRINGEMENT OF U.S. PATENT NO. 6,216,158)
(the 158 Patent), entitled SYSTEM AND METHOD USING A PALM SIZED COMPUTER
TO CONTROL NETWORK DEVICES, which issued April 10, 2001. A copy of the 158 Patent
is attached as Exhibit A.
8. Uniloc USA is the exclusive licensee of the 158 Patent, with ownership of all
substantial rights, including the right to grant sublicenses, to exclude others, and to enforce and
9. Apple imports, offers for sale, and sells palm-sized iOS devices having wireless
communication ports and the ability to communicate wirelessly (such as by Bluetooth or over a
2
Case 2:17-cv-00571 Document 1 Filed 08/02/17 Page 3 of 6 PageID #: 3
10. Apple imports, offers for sale, and sells a network device (Apple TV), on which
Apple has installed a program (Apple TV Program) that cannot be executed on Apples palm-
sized iOS devices. (The palm-sized iOS devices and Apple TV are referred to as Accused
Devices.)
11. Apple has installed on its palm-sized iOS devices an application (App Store),
which provides a directory of services, including one that corresponds to the Apple TV Program.
Apple distributes, through its App Store, program code for controlling the service (Apple TV
Remote Application), which when loaded on the palm-sized iOS device, allows that device to
issue control commands to the Apple TV device to control the Apple TV Program. (Apple TV
12. Apple has infringed, and continues to infringe, claims of the 158 Patent in the
United States, including claims 1, 2, 4, 6-9, 12, and 14-20, by making, using, offering for sale,
selling, and importing the Accused Devices and the Accused Application, in violation of 35
U.S.C. 271(a).
13. Apple has also infringed, and continues to infringe, claims 1, 2, 4, 6-9, 12, and 14-
20 of the 158 Patent by actively inducing others to use, offer for sale, and sell the Accused
14. Apples customers who use those devices and that application in accordance with
Apples instructions infringe claims 1, 2, 4, 6-9, 12, and 14-20 of the 158 Patent, in violation of
35 U.S.C. 271(a). Apple intentionally instructs its customers to infringe through training
videos, demonstrations, brochures, installation and user guides, such as those located at:
www.apple.com, including:
https://www.apple.com/ios/app-store/
3
Case 2:17-cv-00571 Document 1 Filed 08/02/17 Page 4 of 6 PageID #: 4
https://developer.apple.com/ios/
https://support.apple.com/en-us/HT204989
https://support.apple.com/en-us/HT202794
https://developer.apple.com/app-store/product-page/
https://www.apple.com/iphone-7/specs/
www.youtube.com
Apple is thereby liable for infringement of the 158 Patent under 35 U.S.C. 271(b).
15. Apple has also infringed, and continues to infringe, claims 1, 2, 4, 6-9, 12, and 14-
importing its Accused Devices and Accused Application, which apparatuses are used in
practicing the processes, or using the systems, of the 158 patent, and constitute a material part of
the invention. Apple knows portions of the software contained in the Accused Devices and
Accused Application to be especially made or especially adapted for use in infringement of the
158 patent, not a staple article, and not a commodity of commerce suitable for substantial
noninfringing use.
16. Apple will have been on notice of the 158 Patent since, at the latest, the service
of this complaint upon it. By the time of trial, Apple will have known and intended (since
receiving such notice) that its continued actions would actively induce and contribute to the
17. Apple may have infringed the 158 Patent through other software and devices
utilizing the same or reasonably similar functionality, including other versions of the Accused
18. Uniloc has been damaged by Apples infringement of the 158 Patent.
4
Case 2:17-cv-00571 Document 1 Filed 08/02/17 Page 5 of 6 PageID #: 5
(B) awarding Uniloc its damages suffered as a result of Apples infringement of the
158 Patent;
(C) awarding Uniloc its costs, attorneys fees, expenses, and interest, and
(D) granting Uniloc such further relief as the Court finds appropriate.
5
Case 2:17-cv-00571 Document 1 Filed 08/02/17 Page 6 of 6 PageID #: 6
6
JS 44 (Rev. 12/12)
Case 2:17-cv-00571 Document 1-1 Filed 08/02/17 Page 1 of 3 PageID #: 7
CIVIL COVER SHEET
The JS 44 civil cover sheet and the information contained herein neither replace nor supplement the filing and service of pleadings or other papers as required by law, except as
provided by local rules of court. This form, approved by the Judicial Conference of the United States in September 1974, is required for the use of the Clerk of Court for the
purpose of initiating the civil docket sheet. (SEE INSTRUCTIONS ON NEXT PAGE OF THIS FORM.)
(b) County of Residence of First Listed Plaintiff County of Residence of First Listed Defendant
(EXCEPT IN U.S. PLAINTIFF CASES) (IN U.S. PLAINTIFF CASES ONLY)
NOTE: IN LAND CONDEMNATION CASES, USE THE LOCATION OF
THE TRACT OF LAND INVOLVED.
(c) Attorneys (Firm Name, Address, and Telephone Number) Attorneys (If Known)
Edward R. Nelson III, Nelson Bumgardner PC
3131 West 7th Street, Suite 300, Fort Worth, TX 76107
Phone: 817-377-9111
II. BASIS OF JURISDICTION (Place an X in One Box Only) III. CITIZENSHIP OF PRINCIPAL PARTIES (Place an X in One Box for Plaintiff
(For Diversity Cases Only) and One Box for Defendant)
1 U.S. Government 3 Federal Question PTF DEF PTF DEF
Plaintiff (U.S. Government Not a Party) Citizen of This State 1 1 Incorporated or Principal Place 4 4
of Business In This State
2 U.S. Government 4 Diversity Citizen of Another State 2 2 Incorporated and Principal Place 5 5
Defendant (Indicate Citizenship of Parties in Item III) of Business In Another State
The JS 44 civil cover sheet and the information contained herein neither replaces nor supplements the filings and service of pleading or other papers as
required by law, except as provided by local rules of court. This form, approved by the Judicial Conference of the United States in September 1974, is
required for the use of the Clerk of Court for the purpose of initiating the civil docket sheet. Consequently, a civil cover sheet is submitted to the Clerk of
Court for each civil complaint filed. The attorney filing a case should complete the form as follows:
I.(a) Plaintiffs-Defendants. Enter names (last, first, middle initial) of plaintiff and defendant. If the plaintiff or defendant is a government agency, use
only the full name or standard abbreviations. If the plaintiff or defendant is an official within a government agency, identify first the agency and
then the official, giving both name and title.
(b) County of Residence. For each civil case filed, except U.S. plaintiff cases, enter the name of the county where the first listed plaintiff resides at the
time of filing. In U.S. plaintiff cases, enter the name of the county in which the first listed defendant resides at the time of filing. (NOTE: In land
condemnation cases, the county of residence of the "defendant" is the location of the tract of land involved.)
(c) Attorneys. Enter the firm name, address, telephone number, and attorney of record. If there are several attorneys, list them on an attachment, noting
in this section "(see attachment)".
II. Jurisdiction. The basis of jurisdiction is set forth under Rule 8(a), F.R.Cv.P., which requires that jurisdictions be shown in pleadings. Place an "X"
in one of the boxes. If there is more than one basis of jurisdiction, precedence is given in the order shown below.
United States plaintiff. (1) Jurisdiction based on 28 U.S.C. 1345 and 1348. Suits by agencies and officers of the United States are included here.
United States defendant. (2) When the plaintiff is suing the United States, its officers or agencies, place an "X" in this box.
Federal question. (3) This refers to suits under 28 U.S.C. 1331, where jurisdiction arises under the Constitution of the United States, an amendment
to the Constitution, an act of Congress or a treaty of the United States. In cases where the U.S. is a party, the U.S. plaintiff or defendant code takes
precedence, and box 1 or 2 should be marked.
Diversity of citizenship. (4) This refers to suits under 28 U.S.C. 1332, where parties are citizens of different states. When Box 4 is checked, the
citizenship of the different parties must be checked. (See Section III below; NOTE: federal question actions take precedence over diversity
cases.)
III. Residence (citizenship) of Principal Parties. This section of the JS 44 is to be completed if diversity of citizenship was indicated above. Mark this
section for each principal party.
IV. Nature of Suit. Place an "X" in the appropriate box. If the nature of suit cannot be determined, be sure the cause of action, in Section VI below, is
sufficient to enable the deputy clerk or the statistical clerk(s) in the Administrative Office to determine the nature of suit. If the cause fits more than
one nature of suit, select the most definitive.
VI. Cause of Action. Report the civil statute directly related to the cause of action and give a brief description of the cause. Do not cite jurisdictional
statutes unless diversity. Example: U.S. Civil Statute: 47 USC 553 Brief Description: Unauthorized reception of cable service
VII. Requested in Complaint. Class Action. Place an "X" in this box if you are filing a class action under Rule 23, F.R.Cv.P.
Demand. In this space enter the actual dollar amount being demanded or indicate other demand, such as a preliminary injunction.
Jury Demand. Check the appropriate box to indicate whether or not a jury is being demanded.
VIII. Related Cases. This section of the JS 44 is used to reference related pending cases, if any. If there are related pending cases, insert the docket
numbers and the corresponding judge names for such cases.
Date and Attorney Signature. Date and sign the civil cover sheet.
Case 2:17-cv-00571 Document 1-1 Filed 08/02/17 Page 3 of 3 PageID #: 9
PLAINTIFF DEFENDANT
RELATED CASES
JUDGE DOCKET NUMBER
JAMES RODNEY GILSTRAP 2:16-cv-00638
JAMES RODNEY GILSTRAP 2:17-cv-00258
JAMES RODNEY GILSTRAP 2:17-cv-00454
JAMES RODNEY GILSTRAP 2:17-cv-00455
JAMES RODNEY GILSTRAP 2:17-cv-00457
JAMES RODNEY GILSTRAP 2:17-cv-00469
JAMES RODNEY GILSTRAP 2:17-cv-00470
JAMES RODNEY GILSTRAP 2:17-cv-00522
JAMES RODNEY GILSTRAP 2:17-cv-00534
JAMES RODNEY GILSTRAP 2:17-cv-00535
Case 2:17-cv-00571 Document 1-2 Filed 08/02/17 Page 1 of 16 PageID #: 10
EXHIBIT A
Case 2:17-cv-00571 Document 1-2 Filed 08/02/17 Page 2 of 16 PageID #: 11
US006216158B1
(54) SYSTEM AND METHOD USINGA PALM 5,923,885 * 7/1999 Johnson et al. .................... .. 395/712
SIZED COMPUTER TO CONTROL 5,964,836 * 10/1999 Rowe etal. . 709/221
NETWORK DEVICES 5,973,696 * 10/1999 Agranat et al. .................... .. 345/357
_ _ OTHER PUBLICATIONS
(75) Inventors: WenJun Luo, Fremont; Elaine P.
Lusher, Pleasanton, both of CA (US) M.G. Lamming, Institute for Personalized Information
Environment 1994 Towards Future Personalised Informa
(73) Assignee: 3COM Corporation, Santa Clara, CA tion Environments Technical Report EPC1994104,
(US) Dec. 21, 1993.
McCandless, Michael, The PalmPiolt and the Handhled
(*) Notice: Subject to any disclaimer, the term of this Revolution, IEEE Expert, Nov/Dec, 1997, pp_ 6_8_
patent is extended or adjusted under 35
U.S.C. 154(b) by 0 days. * Cited by examiner
Primary ExaminerViet D. Vu
(21) Appl. No.: 09/237,609 (74) Attorney, Agent, or FirmMark A. Haynes; Haynes &
_ Beffel LLP
(22) Filed: Jan. 25, 1999
(57) ABSTRACT
(51) Int. Cl.7 .................................................... .. G06F 13/00
(52) US. Cl. ........................ .. 709/217; 709/219; 709/225; Controlling network services using palm Sized Computers is
709/313; 709/329 described. Aprogram on the palm sized computer is used to
(58) Field of Search ................................... .. 709/202, 203, access a registry of network services that may be available
709/217, 219, 223, 225, 230, 250, 313, The registry includes descriptions for various services. Each
319, 328, 329 description includes at least a reference to program code that
can be downloaded to the palm siZed computer. Executing
(56) References Cited this program causes the palm siZed computer to issue
commands directly to the speci?c network services needed.
U~S~ PATENT DOCUMENTS In some cases, these network services include application
5 564 070 * 10/1996 Want et al. ........................ .. 455/507 Services for running desktop applications that the Palm SiZCd
5,790,977 * 8/1998 Ezekiel .... .. 702/122 Computer Could not @Xecuta
5,832,506 * 11/1998 Kuzma ........ .. 707/200
5,909,545 * 6/1999 Frese 11 et al. .. 709/208 20 Claims, 7 Drawing Sheets
4, Control
3. Download Application Service
Porverlointlontrd I
-
Name;
llySlrdeShorr
120
a e lookup_Service
My Slide
Show
4. Control
3. Download Application Service
up
Lockup Service
FlG.1
Case 2:17-cv-00571 Document 1-2 Filed 08/02/17 Page 4 of 16 PageID #: 13
Case 2:17-cv-00571 Document 1-2 Filed 08/02/17 Page 5 of 16 PageID #: 14
Case 2:17-cv-00571 Document 1-2 Filed 08/02/17 Page 6 of 16 PageID #: 15
go Control Application
lo CPU Service
Middleware Protocol Layer
FIG. 4
Case 2:17-cv-00571 Document 1-2 Filed 08/02/17 Page 7 of 16 PageID #: 16
PowerPoint
----------- ~
----- -
FIG. 5
Case 2:17-cv-00571 Document 1-2 Filed 08/02/17 Page 8 of 16 PageID #: 17
Service
Network Service
Object Class
Fl 6.6
Case 2:17-cv-00571 Document 1-2 Filed 08/02/17 Page 9 of 16 PageID #: 18
Application
Service
Netscape
Mail
Object Instance
ObjectClass
FIG. 7
Case 2:17-cv-00571 Document 1-2 Filed 08/02/17 Page 10 of 16 PageID #: 19
US 6,216,158 B1
1 2
SYSTEM AND METHOD USING A PALM FIG. 7 illustrates an example class hierarchy for applica
SIZED COMPUTER TO CONTROL tion services that can be provided in the system of FIG. 1.
NETWORK DEVICES
DETAILED DESCRIPTION
BACKGROUND OF THE INVENTION A. System OvervieW
A palm siZed computer can serve as a netWork portal to
1. Field of the Invention
usher in a neW generation of mobile computing. Palm siZed
This invention relates to the ?eld of networked computer. computers are the ideal next generation computing device in
In particular, the invention relates to a system and method to that they are inherently mobile and have the lightWeight
control netWork devices using a palm siZed, or otherWise form factor necessary for mobile computing. The fundamen
reduced functionality, computer. tal obstacle to palm siZed computers as the next generation
2. Description of the Related Art computing device can be removed by vieWing the netWork
Palm siZed computers, also referred to as Personal Digital as an extension of the palm siZed computers resources.
Assistants (PDAs), are portable devices Which perform an Functions can be doWnloaded into the device as needed, and
array of personal management tasks such as calendar man 15 overlaid after they have been used. This alloWs the palm
agement and address book storage. The adoption of palm siZed computer to adapt to a changing environment (as the
siZed computers has been rapid. Some palm siZed computers mobile users location changes) and to access exactly the set
are able to interface With conventional computing devices, of services it needs. These services are stored on the netWork
such as PCs, on an as-needed basis. For example, palm siZed and can be used at Will. Many of these services may never
computers such as 3Coms Palm PlatformTM computers can reside on the device and are more suitable for execution by
upload personal appointments to a PC-based calendar. a conventional computer. HoWever, they are accessible and
Palm siZed computers generally have the folloWing char can be controlled via a lightWeight computing device, such
acteristics. Relative to desktop and laptop computers, palm as a palm siZed computer.
siZed computers have limited processing, display and input B. Building Blocks of NetWork-Enabled Palm SiZed Com
capabilities. As a result of these limitations, palm siZed 25 puters
computers do not run the same applications as desktop or The building blocks for lightWeight mobile computing
laptop computers. Other limitations of palm siZed computers include a palm siZed computer, a compute/memory/storage
include limited battery life and loWer bandWidth communi intensive device(s), and a netWork.
cations With other devices. MiddleWare alloWs palm siZed computers to discover
netWork-based computing resources. Once discovered, this
One big advantage of palm siZed computers is their middleWare provides a mechanism for the palm siZed com
portability. Therefore, it is desirable to be able to access puter to use these resources. This middleWare typically
desktop functionality from palm siZed computers. includes a directory of resources (or services), a protocol for
SUMMARY OF THE INVENTION storing and retrieving from the directory, and mechanisms to
35 transfer softWare from the directory to a palm siZed com
Controlling netWork services using palm siZed computers puter.
is described. Aprogram on the palm siZed computer is used Control applications reside on a lightWeight computing
to access a registry of netWork services that may be avail device, such as a palm siZed computer, but manipulate
able. The registry includes descriptions for various services. computing services on the netWork. Control applications
Each description includes at least a reference to program assume the use of middleWare, such as Sun Microsystems
code that can be doWnloaded to the palm siZed computer. Jini, for access to netWork-based resources. (Note in some
Executing this program causes the palm siZed computer to embodiments, the control application is distributed betWeen
issue commands directly to the speci?c netWork services the palm siZed computer and a control proxy server.)
needed. In some cases, these netWork services include Example Registry and Control Infrastructure: Jini
application services for running desktop applications that the 45 JiniTM is a technology developed by Sun Microsystems
palm siZed computer could not execute. Which addresses the problem of computing and netWork
In some embodiments, the device executing the netWork complexity. It eases the burden of accessing services by
services and the palm siZed computer are executing middle providing seamless access and automatic registration of
Ware applications for communicating With the registry. In netWork resources. Jini accomplishes this by adopting a
some embodiments, this middleWare includes Jini technol model in Which devices announce their presence and capa
ogy from Sun Microsystems. Additionally, the programs bilities to the netWork, and access the same type of infor
doWnloaded can include Java program code. mation in order to locate services they Wish to use.
The Jini approach relies on Java and a Jini registry (i.e.
BRIEF DESCRIPTION OF THE FIGURES database of services) as the underlying infrastructure. Each
FIG. 1 illustrates a system having a palm siZed computer 55 device is expected to run a Java Virtual Machine (JVM), or
controlling operations of various netWork devices. rely on a Jini proxy Which runs a JVM on the devices
FIG. 2 illustrates a softWare architecture for use in the
behalf. Key to Java is the idea that softWare (as Well as data)
can be dynamically doWnloaded to a device. The Java model
system of FIG. 1.
assumes a distributed, netWork-centric model in Which the
FIG. 3 illustrates an example architecture for controlling behavior of a device can be dynamically altered to accom
a PoWerPoint presentation. modate changing conditions.
FIG. 4 illustrates a detailed softWare architecture for the Jini eases netWork connectivity problems. Jini acts as
example of FIG. 3. middleWare to access netWork resources, as it lets devices
FIG. 5 illustrates a class hierarchy that can be used in the locate services and doWnload softWare for those services.
example of FIG. 3. 65 Other middleWare could be substituted for J ini if it provides
FIG. 6 illustrates an example class hierarchy for netWork discovery and softWare doWnload for netWork-based ser
services that can be provided in the system of FIG. 1. vices.
Case 2:17-cv-00571 Document 1-2 Filed 08/02/17 Page 11 of 16 PageID #: 20
US 6,216,158 B1
3 4
C. De?nitions In this example, all the devices can communicate on the
Acontrol device is a device which runs Jini (or some other network 110, however, they need not all be connected to the
discovery and software download technology) and is network in the same way.
capable of accessing a wide range of network-centric Functionally, the devices play the following roles:
services, including services which are incapable of running palm siZed computer 100: the remote control device
on the control device. The control device is the access device
for a wide class of computing services otherwise inacces application services: a set of resources and services, such
sible to devices with restricted computing power. 3Coms as compute power and applications
palm siZed computer, the Palm Computing platform, is an network 110: the physical medium which connects
example of such a control device. Windows CE compatible devices and services
10
devices may also be used. lookup service 120: a database of network services
A control application is as an application that relies on E. Architecture
resources located off of the control device (eg on a As noted above, the palm siZed computer 100 functions as
network), but uses a control device to initiate and control the the remote control device for the PowerPoint presentation. It
application. The resources are accessed and controlled, but 15 is a multi-function control device in that it can control a host
not resident, on the control device. Examples of such of resources accessible via the network. The palm siZed
compute/memory-intensive services include PowerPoint computer 100 accomplishes this via middleware (e.g. Jini)
slide presentations and speech recognition systems. These and a generic control protocol capable of issuing control
services can be both invoked and controlled via a control commands to an offboard resource. The palm siZed com
device. puter 100 implements this control via the software compo
Network-based services can be used by any control nents depicted in FIG. 2. These software components rep
device. Services offer a discrete task to the control device. resent a generic architecture for control of any network
This contrasts with a traditional model in which devices, based resource using a reduced functionality computer such
such as a PC, house the entirety of resources a control device as a palm siZed computer. The software architecture,
might utiliZe. Services are ?ne-grained and represent a middleware, and control protocol implement a new model
25
distributed set of capabilities residing on a network. Services for lightweight mobile computing. This model of light
may or may not be co-located with other services on the weight mobile computing is particularly well-served by
same physical device. Services are offered (via a network devices such as a palm siZed computer, as they possess the
and a Directory of Services, such as the Jini Lookup) in as requisite siZe and portability.
small a unit as is justi?able given the application tasks users In FIG. 2, the control device 200 is able to control services
will typically want to accomplish. Fine-grained services can on the network 110, such as the network based service 250.
be used by a variety of consumers who need precisely that The directory of services 220 provides the registry functions
function. The model that emerges is a network-based model used to enable the system.
that offers a wide range of narrowly-de?ned computing The control device 200 includes a control device operat
services of interest to a wide range of applications. Services ing system 201 which supports a network communications
35
will be physically distributed across devices but accessible program 202 and a control application 210. The network
via a central repository (e.g. database) of services. This communications program 202 allows the control device 200
model of distributed computing is inherently scalable in that to communicate with other devices on the network. The
the set of services offered via the network grows seamlessly control application 210 includes the following elements:
as devices plug in and announce their capabilities. a GUI 212 to display the available network-based services
D. An Example of the Control Application and accept user input
To help illustrate the use of a control device and a control an application control protocol manager 214 which inter
application, a PowerPoint slide presentation control is faces between the control device 200 and the network
described herein. (FIG. 1 illustrates a generaliZed view of based computer service 250 by requesting tasks from
such an example.) In this example, a palm siZed computer 45 that service (eg slide manipulation). This module is
100 accesses network 110 resources (via a Directory of responsible for generating the application control pro
Services, such as the lookup service 120) to locate the tocol to command the selected service,
elements it requires to remotely control a presentation a middleware protocol manager 216 to transfer data
located on the network. The palm siZed computer 100 uses between the control device 200 and the directory of
three services to function as a control device to display a services 220 (eg communication between Palm plat
PowerPoint presentation: form and the Jini Lookup). This module is responsible
an application service 130 (to run PowerPoint) for generating the syntax necessary to communicate
a persistent storage service 150 (to store the presentation) based on the type of middleware being used.
a display service 140 (to display the presentation images) The service device operating system 251 includes a
Each of these services will have registered with the 55 service device communications program 252 and a service
lookup service 100. A service in this example, is tied to control application 260. The service device communications
different hardware devices. However, this is not required. program 252 is responsible for communicating with the
Storage, processing, and/or display could be supported by network 110. The service control application 260 includes
one or more computer systems. the following components:
None of these services are resident on the palm siZed a service application control protocol manager 262 that
computer 100. Once the palm siZed computer 100 has interfaces between the network based computer service
located the necessary services, it downloads the code 250 and the control device 200 and accepts control
required to control those services (using the lookup and tasks (eg slide manipulation) issued from the control
download protocols). Middleware, such as Suns Java/Jini device 200. This module is capable of sending back a
technology, is used to move the code. 65 response (e.g. status) to the control device 200,
The palm siZed computer 100 is then capable of directly a middleware protocol manager 266 to transfer data
controlling the services it requires. between the network based computer service 250 and
Case 2:17-cv-00571 Document 1-2 Filed 08/02/17 Page 12 of 16 PageID #: 21
US 6,216,158 B1
5 6
the directory service (eg communication between the 8. Via the service control GUI 212, accept user input, such
application service 130 and the Jini Lookup). This as the selection of an application (for example, a PoWer
module is responsible for generating the syntax used to Point application) to be controlled.
communicate based on the type of middleWare being 9. Optionally register the control device 200 With the direc
used. tory service via a registration protocol, such as the Jini
an application 268 to perform functions on the netWork. Discovery Protocol. This step is the same as the above one
The application 268 can be a desktop application that for the other services. It is executed only if the control
Would not execute on a palm siZed computer. device 200 has resources to offer.
Returning to the speci?c example of the PoWerPoint 10. Search the directory service 220 and doWnload the
presentation, FIG. 3 illustrates the architecture that could be 10
desired service descriptor. In the case of Jini, after the
used to implement such a system. In FIG. 3, the control control device 200 receives the response from the direc
device 200 has been replaced With a palm siZed computer tory service 220, it uses the included interface to search
100 executing the Palm OS 301. The GUI 212 is speci?cally the directory service 220 for an application service using
for PoWerPoint control (see FIG. 1 for an example of such the object type representing the service (such as an object
a GUI). The Java Virtual Machine 318 is executing on the type of PoWerPoint presentation service) and the desired
15 service attributes (such as the name and the physical
palm siZed computer 100 and replaces the middleWare 218.
The middleWare protocol manager 216 supports Jini location of the service). Once the directory service 220
discovery, lookup and doWnload protocols. PoWerPoint con ?nds such a service entry, the control device 200 is
trol commands are issued to the netWork based computer noti?ed, Which in turn uses the doWnloading interface to
service 250. The PoWerPoint control protocol manager 364 doWnload the application service descriptor. One example
provides the interface for these commands and controls the of these services is the GUI code for controlling a
PoWerPoint application 368. PoWerPoint presentation.
F. Control FloW 11. Send requests from the control device 200 to the netWork
The process for accessing and controlling netWork-based based computer service 250 to control the desired appli
services is described beloW. The speci?c implementation cation. For example, a next slide request could be sent
control of a PoWerPoint Service via a 3Com Palm Comput 25 from a palm siZed computer 100 to an application service
ing platform is used as an example. Refer to FIG. 1. 130 running PoWerPoint. The communication can be
1. Con?gure a computer hosting the directory of services based on a protocol such as the folloWing one:
220 and connect it to the netWork 110. For instance, a Jini
lookup service is con?gured to listen at a preset TCP, or
UDP, port for service registration or service lookup Control Type Application File Name Control Function
requests.
2. Establish a netWork connection from the netWork based
computer service 250 to the netWork 110. Where:
3. Register the computing service With a directory of ser Control Type={Request, Reply}
vices 220. For example, in the Jini model, the computing 35 Application={PoWerPoint, FAX, Print, Email,
service initially sends out a multicast packet announcing Phonebook, . . . }
its presence on the netWork. Once the directory service File Name={3ComPalmVIISpeci?cation}
220 receives the packet, it sends a unicast packet back to Control function={File Load, Slide ForWard, Slide
the announcer. The packet includes an interface (e.g. Java BackWard, File Close, . . . }
code) for uploading code back to the directory service 220 Alternatively, techniques such as J avas Remote Method
as Well as for searching and doWnloading code from the Invocation (RMI) can be used to achieve the same goal. In
directory service 220. this case, the control device makes a local function call such
4. Upload service description to the directory service 220. If as doForWardSlide( The RMI mechanism Will transfer the
Jini is adopted as the middleWare, the application service call to a remote machine Which implements and carries out
130 receives the response from the directory service 220 45 the function call. The PoWerPoint presentation service may
and uses the included interface to upload its service in turn use other services such as the storage service 150 and
interface to the directory service 220. When the service the display service 140. The procedure to employ these
interface is called, it contacts the directory service 220 services is similar to steps 1011 above.
Which in turn creates an entry (represented by an object) 12. Accept any response to requests sent from the control
for this neW service and sets the proper ?elds such as device 200 to the netWork based computer server 250 and
service name, attributes and optionally the corresponding process any errors.
service interface. Other middleWare may choose to use G. Control Device GUI
protocol-based approaches such as FTP or TFTP for the An important element of the control application 210 is a
uploading process. GUI front-end Which accepts user input for controlling the
5. Register the storage service 150 and display service 140 55 PoWerPoint presentation (or other application) and a control
via the same process. protocol manager backend Which takes user input and trans
6. Establish a netWork connection from the control device lates it into commands to the CPU service. An example GUI
200 to the netWork 110. For Palm computers, there are is depicted in FIG. 1. The example GUI alloWs the user to
multiple options for netWork connectivity. Possible solu click on forWard, backWard, go-to-?rst-page or go
tions include using the infrared (IR) port to talk to a to-last-page buttons to control the slide shoW. The user can
IR-LAN bridge or router, using the serial port to talk to a also click a get-list button to get a full list of the slide titles
serial-to-LAN bridge or router, using either the IR or the in the current presentation and choose to go to a particular
serial port to talk to a digital cell phone and dial up a slide. By clicking the scribble button, the WindoW
modem server, and/or using Wireless data communica sWitches to graphics mode. In this mode, the user can draW
tions. 65 at random on the panel, and the result of the draWing Will be
7. Launch the service control graphical user interface (GUI) sent to the CPU service and eventually displayed on the
212 on the control device 200. projection service.
Case 2:17-cv-00571 Document 1-2 Filed 08/02/17 Page 13 of 16 PageID #: 22
US 6,216,158 B1
7
As explained in the software How section, there are
multiple ways to implement the application control protocol
manager 214, the following illustrates one approach. The
Property/Method Name Type Description
protocol takes the following form:
PowerPoint
US 6,216,158 B1
10
FIG. 7 illustrates a partial object class hierarchy which
models Application Services, including the PowerPoint
Application Service:
ImageView De?ne-Class SlidePresentationService
Property/Method Name Type Description Superclass: ApplicationService
De?ne-Class GroupwareService
FileName String File name to be displayed
View Method Show the image on the Superclass: ApplicationService
projector De?ne-Class EmailService
Mode Long FullScreen mode
Superclass: ApplicationService
De?ne-Class SpeechRecognitionService
I. Directory of Services Design Superclass: ApplicationService
The directory of services 220 encodes the set of services Based on this object class hierarchy, objects which rep
available on the network 110. The directory of services 220 resent network services can be de?ned. These objects are
describes the characteristics of these services and provides a 15 stored in a directory of services 220, such as a Jini Lookup.
means to locate those services. To illustrate this concept, an An object to instantiate a SlidePresentationService could
object-oriented directory service is used. The directory ser look as follows:
vice will have objects whose attributes describe the features Make-Instance SlidePresentationService
of available services and optionally include either code to Name PowerPoint
invoke those services or a reference to such code. A direc
tory service will typically be one of several components Status Active
offered in the middleware a control device 200 will use. Location 3Com Intranet
FIG. 6 illustrates an object class hierarchy which models PhysicalAddress Building300.Floor2.Cube323
several network-based services. These network-based ser PhysicalMachine PowerBook G3
vices are Application Service, Operating System Service, 25 Owner Elaine Lusher
Storage Service, Projection Service, and Service Location
Service. Examples of each of these services are now given. Vendor Microsoft
De?ne-Class Service Version 98
Superclass: root CodeLocation "system/applications/of?ce/powerpoint:
Attributes: SerialNumber 169-43-4666
Name SupportedFeatures Scribble
Status Other examples of objects which represent application
De?ne-Class NetworkService services include:
Superclass: Service Make-Instance SpeechRecognitionService
Attributes: 35 Name Naturally Speaking
Location Status Active
PhysicalAddress Location 3Com Intranet
PhysicalMachine PhysicalAddress Building300.Floor2.Cube100
Owner
Vendor PhysicalMachine Solaris
Version Owner Wenjun Luo
De?ne-Class ApplicationService Vendor Dragon Systems
Superclass: NetworkService Version 4.1
Attributes: 45
CodeLocation system/applications/research/
CodeLocation dragonspeech
SerialNumber SerialNumber 157-89-4323
SupportedFeatures SupportedFeatures Dictation for Microsoft Word
De?ne-Class OperatingSystemService Make-Instance GroupwareService
Superclass: NetworkService Name Alta Vista Forum
Attributes: Status Active
RealTimeOS? Location 3Com Intranet
De?ne-Class StorageService PhysicalAddress Building300.Floor2.Cube220
Superclass: NetworkService PhysicalMachine Windows NT
55
Attributes: Owner Paul Huard
DatabaseType Vendor Microsoft
Schema
De?ne-Class ProjectionService Version 3.1
Superclass: NetworkService CodeLocation http://3Community/code/groupware/
latest
Attributes:
Resolution SerialNumber 444-56-7777
De?ne-Class ServiceLocationService SupportedFeatures Virtual Chat Room
Superclass: NetworkService Make-Instance EmailService
Attributes: Name Netscape Mail
QueryProtocol Status Active
Schema Location 3Com Intranet
Case 2:17-cv-00571 Document 1-2 Filed 08/02/17 Page 15 of 16 PageID #: 24
US 6,216,158 B1
11 12
PhysicalAddress Building300.Floor2.Cube300 Some embodiments of the invention include only the
PhysicalMachine Solaris control device and the programs on the control device;
Owner Rick Nottingham other embodiments include some and/or all of the
programs in computer readable media, or in electro
Vendor Netscape magnetic Waveforms.
Version 5.0 K. Conclusion
CodeLocation http://3Community/code/email/latest The foregoing description of various embodiments of the
SerialNumber 456-34-6786 invention has been presented for purposes of illustration and
If middleWare resides on a proxy device (rather than on description. It is not intended to limit the invention to the
the control device 200), the control device 200 Will need to 0 precise forms disclosed. Many modi?cations and equivalent
locate such a proxy service. An Operating System Service arrangements Will be apparent.
class can encode services such as a JVM Service, a Linux What is claimed is:
Service, or a Jini proxy. 1. A method of controlling a service on a netWork using
Make-Instance OperatingSystemService a palm siZed computer, the palm siZed computer being
Name Jini Proxy 5 coupled in communications With the netWork, the method
Status Active
comprising:
accessing a description of the service from a directory of
Location 3Com Intranet services, the description of the service including at least
PhysicalAddress Building300.Floor2.Cube120 a reference to program code for controlling the service;
PhysicalMachine Solaris doWnloading the program code to the palm siZed com
OWner Rick Nottingham puter;
Vendor Sun the palm siZed computer executing at least a portion of the
Version 5.0 program code; and
RealTimeOS? no sending control commands to the service from the palm
Finally, directory services 220 (such as the Jini Lookup) siZed computer in response to the executing, Wherein
are modeled. This could be encoded in a class such as the the service controls an application that cannot be
Service Location Service. executed on the palm siZed computer.
Make-Instance ServiceLocationService 2. The method of claim 1 further comprising registering
the service in the directory of services by storing the
Name Jini Lookup description of the service in the directory of services.
Status Active 3. The method of claim 1 Wherein the directory of services
Location 3Com Intranet includes a Jini Lookup directory, Wherein the accessing the
PhysicalAddress Building300.Floor2.Cube150 description includes executing a Jini discovery protocol to
PhysicalMachine Solaris locate the Jini Lookup directory and executing a Jini Lookup
protocol to retrieve the description of the service.
OWner Rick Nottingham
4. The method of claim 1 Wherein the description of the
Vendor Sun service includes an object reference corresponding to an
Version 5.0 object representing the service and a set of service attributes
QueryProtocol Jini Lookup Protocol including the name of the service and the physical location
Schema Service Directory Schema 1.0 of the service.
J. Variations on the NetWork-based Control Application 5. The method of claim 1 Wherein the program code
Several variations of the general control paradigm can be includes Java code and Wherein the palm siZed computer is
de?ned: executing a Java Virtual Machine to execute at least a
The middleWare (Jini, in our example) may not be physi 45
portion of the program code.
cally resident on the control device 200. In this case, a 6. The method of claim 1 Wherein the program code
proxy is used Which runs middleWare on behalf of the includes code to implement a graphical user interface on the
control device 200. Functionally speaking, the same palm siZed computer.
design Will still apply. One change to the design can be 7. The method of claim 1 Wherein the application includes
used to support a modi?ed GUI for the control device. 50 a desktop program.
In these embodiments, the GUI program is modi?ed by 8. Amethod of controlling a program on a netWork device
the proxy device to account for speci?c limitations of from a palm siZed computer, the computer is not capable of
the control device. Also, in some embodiments, the executing the program by itself, the netWork device and
control device may include preset applications that computer being coupled in communications via a netWork,
interface directly With the proxy device. Such an archi 55
the method comprising:
tecture Would support a limited set of netWork services accessing a directory of services, a service in the directory
but Would likely result in very small and lightWeight of services corresponding to the program, the descrip
applications on the control device. tion of the service including at least a reference to
The control paradigm is not limited to palm siZed com program code for controlling the service;
puters. Any computing device With restricted comput 60 loading the program code;
ing poWer could be used as a control device 200 for any issuing control commands to the netWork device using the
netWork-based resource. SWitches, hubs, routers, and program code, the control commands causing the net
other netWorking devices are candidates for a control Work device to control the program.
device 200. The netWork-based resources they use 9. The method of claim 8, Wherein loading the program
could include any service that cannot physically reside code includes loading the program code onto the palm siZed
on the netWorking device due to restrictions such as computer and the issuing the control commands includes the
limited memory. palm siZed computer issuing the control commands.
Case 2:17-cv-00571 Document 1-2 Filed 08/02/17 Page 16 of 16 PageID #: 25
US 6,216,158 B1
13 14
10. The method of claim 8, wherein a proxy device is program being loaded onto the control device as a
coupled to the network and wherein accessing the directory result of locating a reference to the network based
of services includes the palm siZed computer accessing the computer service in the directory of services;
proxy device, and the proxy device accessing the directory a network coupled in communications with the network
of services, and wherein the loading the program code based computer service, the directory of services and
includes loading the program code onto the proxy device, the control device;
and wherein the issuing the control commands includes the
palm siZed computer issuing a set of ?rst set of commands wherein the control device includes a palm siZed com
to the proxy device and the proxy device issuing the control puter having an operating system, a network commu
commands. nications program, a protocol program for communi
11. The method of claim 10, wherein the program code cating with the directory of services and wherein the
includes a user interface program and wherein the proxy program includes a graphical user interface.
device receives the user interface program and generates a 18. The method of claim 17 wherein the network based
second user interface for the palm siZed computer. computer service includes a computer having an operating
12. The method of claim 8 wherein loading the program 15 system, a network communications program, a protocol
code includes loading the program code onto the palm siZed program for communicating with the directory of services
computer from the directory of services. and the application.
13. The method of claim 8, wherein the palm siZed 19. A method for controlling a service in a network using
computer includes a Palm OS compatible computer, wherein a palm siZed computer, the method comprising:
the program code includes Java code and wherein the accessing a description of a service, the description of the
directory of services includes a Jini directory of services. service including at least a reference to program code
14. The method of claim 8 further comprising the network for controlling the service;
device registering the description of the service with the downloading the program code;
directory of services.
15. The method of claim 8 wherein the program includes 25
executing at least a portion of the program code; and
a desktop program. sending control commands to the service in response to
16. The method of claim 8 wherein the program includes the executing, wherein the service includes a CPU
a desktop program and wherein the services controlled service.
include a CPU service for executing the program, a storage 20. A system comprising:
service for providing data to the CPU service and a display means for accessing a description of a service, the
service for displaying information generated from the CPU description of the service including at least a reference
service. to program code for controlling a service;
17. A system for controlling a network service compris means for downloading the program code;
ing: means for executing at least a portion of the program
a network based computer service for controlling an 35
code; and
application that cannot exectuted by a control device; means for sending control commands to the service in
a directory of services including a registry of services, response to the means for executing, wherein the ser
each service in the registry of services corresponding to vice controls an application that cannot be executed on
a service on the network; the means for executing.
the control device having a program for sending control
commands to the network based computer service, the * * * * *