Apple, Inc. v. Motorola, Inc. et al
Filing
12
AMENDED COMPLAINT for Patent Infringement against Motorola Mobility, Inc., Motorola, Inc., filed by Apple, Inc.. (Attachments: #1 Exhibit A - '949 patent, #2 Exhibit B - '002 patent, #3 Exhibit C - '315 patent, #4 Exhibit D - RE '486 patent, #5 Exhibit E - '354 patent, #6 Exhibit F - '263 patent, #7 Exhibit G - '983 patent, #8 Exhibit H - '705 patent, #9 Exhibit I - '647 patent, #10 Exhibit J - '852 patent, #11 Exhibit K - '131 patent, #12 Exhibit L - '337 patent, #13 Exhibit M - '867 patent, #14 Exhibit N - '721 patent, #15 Exhibit O - '599 patent) (Peterson, James) [Transferred from Wisconsin Western on 12/1/2011.]
EXHIBIT F
111111111111111111111111111111111111111111111111111111111111111111111111111
US006343263Bl
United States Patent
(10)
Nichols et al.
(12)
(45)
(54)
OTHER PUBLICATIONS
REAL-TIME SIGNAL PROCESSING SYSTEM
FOR SERIALLY TRANSMITTED DATA
(75)
Inventors: James B. Nichols, San Mateo; John
Lynch, San Jose, both of CA (US)
(73)
Notice:
(21)
Filed:
(51)
(52)
(58)
Frankel, "DSP Resource Manager Interface & Its Role in
DSP Multimedia", May 1994.*
Appl. No.: 08/284,061
(22)
Tanenbaum, Structured Computer Organization, 1984, pp.
10-12.*
Assignee: Apple Computer, Inc., Cupertino, CA
(US)
( *)
Patent No.:
US 6,343,263 BI
Date of Patent:
Jan. 29,2002
Int. CI?
G06F 13/00
U.S. CI.
702/189; 709/328
364/514,238.5,
Field of Search
364/924, 576, 725, 726; 395/2.09, 2.1,
2.91, 2.94, 406, 651, 680, 682, 821, 892,
561, 566, 733; 455/84, 3.1, 39; 370/210;
340/825; 342/195, 196; 360/39
Silberschatz et aI., Operating System Concepts, p. 489,
1994.*
Subject to any disclaimer, the term of this
patent is extended or adjusted under 35
U.S.c. 154(b) by 0 days.
Jon Udell, "Computer Telephony," Byte, vol. 19, No.7, Jul.
1994, pp. 80-96.
* cited by examiner
Primary Examiner-Patrick Assouad
(74) Attorney, Agent, or Firm-Burns, Doane, Swecker &
Mathis, L.L.P.
Aug. 2, 1994
(56)
(57)
A data transmission system having a real-time data engine
for processing isochronous streams of data includes an
interface device that provides a physical and logical connection of a computer to anyone or more of a variety of
different types of data networks. Data received at this device
is presented to a serial driver, which disassembles different
streams of data for presentation to appropriate data managers. A device handler associated with the interface device
sets up data flow paths, and also presents data and commands from the data managers to a real-time data processing
engine. Flexibility to handle any type of data, such as voice,
facsimile, video and the like, that is transmitted over any
type of communication network with any type of real-time
engine is made possible by abstracting the functions of each
of the elements of the system from one another. This
abstraction is provided through suitable interfaces that isolate the transmission medium, the data manager and the
real-time engine from one another.
References Cited
U.S. PATENT DOCUMENTS
5,327,558 A
5,363,315 A
5,381,346 A
* 7/1994 Burke et al.
395/650
* 11/1994 Weiss et al.
364/514
* 1/1995 Monaham-Mitchell et al. .. 364/
5,406,643
5,438,614
5,440,619
5,440,740
5,442,789
5,487,167
*
*
*
*
*
*
A
A
A
A
A
A
4/1995
8/1995
8/1995
8/1995
8/1995
1/1996
Burke et al.
Rozman et al.
Cann
Chen et al.
Baker et al.
Dinallo et al.
514
395/200
379/93
379/97
395/650
395/650
395/650
FOREIGN PATENT DOCUMENTS
EP
218859
ABSTRACT
41 Claims, 6 Drawing Sheets
4/1987
32
u.s.
Patent
Jan. 29,2002
FIGURE 1
US 6,343,263 BI
Sheet 1 of 6
10
14
12
,
Comm.
Application
,
Application
Program
Comm./
Application
~
Fax Sender
Printer Driver
Fax
Terminal
-~34
Fax
Extension _~
18
32
/
,
Serial' Driver
Switch
r
------
~
- - - -
-----~
~
-
-
- -- -
Modem Logic
I Communications
Modem Tool
16
Toolbox
20
I
I
I
I
Control/Command Line Interpreter
I
Modem
Modem Application
I
Control
Data Control
Telephone_
Fax
Panel
I
& Protocol
Protocol
Controller
I
2Q
28
JQ
I
I
I
L - - - - - - - - - - 1---- - - -
I
-
I
t
--
~I
t
- --- -
Computer Hardware Interface
22
--
u.s. Patent
Jan. 29,2002
US 6,343,263 BI
Sheet 2 of 6
RGURE2
.1Jl
Application Program
22
r
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
~---
2Q
Modem Logic
48
- -
--------t--- - • I API I
Realtime
Engine
-
I
I
I
I
Adapter
Handler
44
I FeBI
-
.
I
J
I API 1-
46
"I
l
49
1
Serial Driver
DMA
42
~
.I
~
Hardware Abstraction Layer
...0:"'"
L --------
-
-"""'>0
_.
- -- - -- - - --
_-1
~~ =k'~7
Telecom Adapter _~
36
(O~
38
A" b...
A'" ""'A
/
A'" ""'A
u.s.
Patent
US 6,343,263 BI
Sheet 3 of 6
Jan. 29,2002
FIGURE 3
..-
Realtime Engine
Video
Service
§g
46
-
~
48
I...-
,....-
Sound
Service
§g
-
,- - -
-- -
-
I
I
I
I
I
I
I
L.
Translation
Software 54
..
~
-
Telephone
Service
..
I
I
I
62
,.
,
..
-
-
,....-
-
I
I
,
Interface
-
-- - - -
-~-
64
-
- - --
M
Processor
§§.
-,
..--<-
Libraries
§Q
L-- 52
r-L---.48
I--
...--
49
~'
I
Processing Engine (DSP)
Oper. Sys.
L--L--- 48
"--
u.s.
Patent
Jan. 29,2002
Sheet 4 of 6
US 6,343,263 BI
u.s.
Patent
APPUCATION
Jan. 29,2002
MODEM
Sheet 5 of 6
HANDLER
SOfTWARE
US 6,343,263 BI
REAL-TIME
ENGINE
Call Remote
Parse
Command
Generate DTMF
For x
Generate PCM
andDTMF
Return
Next Digit
Generate DTMF
For y
Generate DTMF
Return
Next Digit
a
o
o
FIG. 48
u.s.
Patent
APPUCAWN
Jan. 29,2002
Sheet 6 of 6
MODEM
HANDI..EB
SCfIWABE
US 6,343,263 BI
REAL-TIME
ENGINE
0
0
Listen For
Answer
Answer
Determine
Tone
Call Tone
Detector
ToneDetected
Return
Set Up
Connection
Request
Connection
Generate PCM
Signals
Connected
Return
Return
Retrieve Data
Send Data
Send Data
PCM
Transforms
FIG.4C
US 6,343,263 Bl
1
2
REAL-TIME SIGNAL PROCESSING SYSTEM
FOR SERIALLY TRANSMITTED DATA
While the analog telephone network was the only practical medium for transmitting information between geographically distributed computers for quite some time, more
recently other, non-analog transmission mediums have
become available. Examples of these other mediums include
the integrated services digital network (ISDN), private
branch exchange (PBX) telephone systems, and TI digital
data links. Since information is transmitted over these mediums as digital data, conventional analog modem circuits are
not suited for use with them. Thus, for example, a standard
Group III facsimile machine cannot operate on a digital PBX
system.
Similarly, digital signal processing systems which are
designed to work with PCM-encoded analog data that is
received and transmitted via a modem are likewise not
suited for use with these other types of transmission mediums. While it is possible to incorporate another DSP system
into a computer that can handle data transmitted via any of
these digital networks, it would be more desirable to provide
a single system that can process data that is received over
any type of transmission medium, whether it be digital or
analog. Further in this regard, it is desirable to provide a
signal processing system that is not limited to one specific
DSP, but rather one that can operate with any of a variety of
different types of signal processors.
When personal computers communicate with one another
through non-modem transport facilities, they typically operate in a burst mode. While this mode of operation enables
data to be transferred at much higher rates than with
modems, it is still not suitable for applications such as video
or speech processing. These types of applications require
isochronous data handling, i.e. data that is transmitted at a
constant bit rate and that must be processed in real time.
Generally speaking, therefore, it is desirable to provide a
serial data transmitting and receiving system that is capable
of processing real-time isochronous data.
Further in this regard, it is desirable to provide such a
system that is capable of handling streams of data pertaining
to different functions. For example, in a video conferencing
application, speech data is transmitted at the same time as
video and other graphic information. However, each of these
types of data must be processed separately in real time. It is
desirable, therefore, to provide a data transfer system that
can handle each of two or more types of data at isochronous
rates.
FIELD OF THE INVENTION
The present invention is directed to the transmission of
data to and from a computer, and more particularly to a
system for performing real-time signal processing of data
that is serially transmitted to and from a computer.
BACKGROUND OF THE INVENTION
Various devices are known for transmitting data between
a computer and a remote site via wide-area telecommunications networks. One of the most widely used devices of
this type is the modem, which enables data to be transmitted
to and from a computer over a wide-area analog telephone
network. Generally speaking, the modem includes one or
more sets of registers, typically embodied in an UART or an
USART, for storing bits of digital data transmitted to or from
the computer, a processor for implementing modem
operations, such as dialing a telephone number or answering
a ringing signal, in response to commands sent from the
computer and stored in the UART, and a modulator/
demodulator for converting digital bits of data to be transmitted into analog signals, and vice versa. Originally, all of
these features were hardwired in a separate peripheral device
that could be externally connected to the computer via a
serial I/O port, or internally connected to the computer's
data bus. More recently, some of the functions associated
with these features, most notably the processing of commands to implement modem operations, have been removed
from the hardwired configuration and incorporated into the
computer itself. This approach has increased the versatility
of the modem. For example, while the hardwired modem
configuration had to be specifically designed for the telephone system requirements of a particular country, the later
approach could enable a single product to be used in a
variety of countries, each of which might have different
telephone signaling requirements. Similarly, since the computer itself was handling the data to be transmitted, additional services, such as the ability to send information as a
facsimile transmission, in which graphical data is processed,
became feasible. However, the presence of the UART, or
similar such device through which the data must flow, still
limits the effective rate at which the data can be exchanged
between the computer and the telephone lines.
To enhance the performance of modems, a digital signal
processor (DSP) has been incorporated into its structure. In
this arrangement, the modem software was designed to
cooperate with the DSP to provide data thereto for processing prior to transmission or after reception over the telephone line. While the addition of the DSP provided
increased capabilities in terms of the speed at which the data
could be transmitted over a telephone network and the ease
with which the modem could be configured, it was still
limited in the types of data that could be processed. More
particularly, because of the restrictions imposed by passing
the data through an UART or the like, even the most modem
modems are only capable of effectively transmitting data in
the range of 9.6-14.4 Kb/sec. While this rate of data transfer
may be useful for transmitting static information such as text
files or the like, it is not suitable for many real-time
applications in which the data is provided at much higher
rates, such as speech or video conferencing.
Further in this regard, the modem control software had to
be designed to work with the specific DSP incorporated into
the computer. If a different DSP was to be used, the modem
control software had to be reprogrammed to work with the
new DSP.
5
10
15
20
25
30
35
40
45
BRIEF STATEMENT OF THE INVENTION
50
55
60
65
The present invention provides a data transmission system
having a real-time data engine for processing isochronous
streams of data. An interface device provides a physical and
logical connection of the computer to anyone or more of a
variety of different types of data networks, including analog
telephone, ISDN, PBX and the like. Data received at this
device is presented to a serial driver, which disassembles
different streams of data for presentation to appropriate data
managers, such as the operating system of the host
computer, a service provider or an application program. A
device handler associated with the interface device sets up
data paths and issues service requests. The device handler
also presents data and commands from the data managers to
a real-time data processing engine, that can be used for a
variety of applications such as voice recognition, speech
compression, and fax/data modems. This real-time engine
can be shared by any application program running on the
host computer.
The invention enables any arbitrary type of data, such as
voice, facsimile, multimedia and the like, which is trans-
US 6,343,263 Bl
3
4
mitted over any type of communication network, to be
handled with any type of real-time engine, by abstracting the
functions of each of the elements of the system from one
another. This abstraction is provided through suitable interfaces that isolate the transmission medium, the data managers and the real-time engine from one another. The data is
provided to the real-time engine as multiple streams of
isochronous data, i.e. it is delivered as it arrives over the
network without data handling delays. This feature allows
more complex applications, such as speakerphones, videophones and high-speed modems to be readily implemented.
These features of the invention, as well as the advantages
offered thereby, are described in greater detail hereinafter
with reference to a specific embodiment illustrated in the
accompanying figures.
communications toolbox 16 contained within fax/data
modem logic modules 20. A hardware interface 22 transmits
the services provided by these modules over a transmission
medium to which the computer is connected, e.g. a telephone line.
Referring to the modem logic 20, a Modem Control and
Command Line Interpreter (CLI) 24 accepts command
inputs from the application programs to configure the
modem, dial, receive calls, initiate data or fax transmission,
hang up, and so on. Any operation of the modem must be
initiated by issuing commands to the CLI. The CLI 24 can
be an interface that is often referred to as the "AT command
set", which uses simple printable character sequences and
constitutes a de facto standard among modems.
A Telephone Controller module 26 dials, answers, and
hangs up the telephone line. The Telephone Controller can
be "worldwide" in nature. In such a case it configures the
modem to conform to the standards of telephone systems in
most major economic markets. This can be carried out by
storing a country code identifier that allows the Telephone
Controller to configure the modem properly.
A Data Control and Protocol module 28 provides all data
capabilities for the modem. It supports standard asynchronous text read and write, as well as the standard CCITT Y.42
and Y.42 bis and Microcom MNP class 2 through 5 reliable
link and data compression protocols, for example.
The Fax Protocol module 30 performs the functions of a
T.30 fax engine in a dedicated fax modem. It communicates
with a Fax Extension driver 32, a component of a Fax
Terminal 34, for example using an extension of the AT
command set known as +F ("plus F"), or TR.29.
The hardware interface 22 contains the appropriate
transport-dependent protocol components. The logical and
physical interface to the wide-area network is hidden in this
layer. This allows the fax/data modem modules to be used on
any wide-area connection, including PBX, Tl and ISDN, as
well as traditional POTS ("plain old telephone system")
channels. The components of this interface are illustrated in
the block diagram of FIG. 2.
Referring now to FIG. 2, the hardware interface includes
an external adapter 36 that provides the physical and logical
connection of the computer to the telephone line 38 or other
communications network, such as ISDN, PBX or Tl link.
This connection can be provided through a serial port 37 of
the computer. An example of such an adapter is described in
copending U.S. patent application Ser. No. 08/078,890 filed
May 10, 1993, and Ser. No. 08/180,925 filed Jan. 11, 1994,
the disclosures of which are incorporated herein by reference. Such an adapter preferably includes processing
capabilities, as disclosed in concurrently filed U.S. patent
application Ser. No. 08/288,144 now U.S. Pat. No 5,799,190
entitled Intelligent Communications Coprocessor, which
enables it to provide a constant stream of data to the
computer from one or more communications networks. This
data can be delivered in a time-division multiplexed manner,
or it can be delivered in a packetized form.
Data received at the adapter 36 from the telephone line 38
can be provided to a driver 40 which functions as a hardware
abstraction layer. This driver is a hardware-dependent
implementation of a serial controller, and is configured in
accordance with the particular characteristics of the communications port 37 to which the adapter 36 is connected. It
isolates the remainder of the software from the different
implementations for connecting the adapter to the computer,
e.g. serial port, parallel port or bus device.
A serial driver 42 operates to separate multiple incoming
data streams from one another, or to combine multiple
5
10
15
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a block diagram of the software architecture for
a facsimile/modem communications engine;
FIG. 2 is a block diagram of the computer hardware
interface for the engine;
FIG. 3 is a more detailed block diagram of the architecture
of the real-time engine; and
FIGS. 4A-4C are flow diagrams of the steps that are
carried out in the operation of a virtual fax/data modem in
accordance with the invention.
DETAILED DESCRIPTION
The following description of an embodiment of the
present invention is presented in the context of its implementation in a moderate speed (e.g. Tl data rates), low cost,
digital interconnect to a wide-area network. An example of
such an interconnect is described in U.S. patent application
Ser. No. 08/180,926 filed Jan. 11, 1994, now U.S. Pat. No.
5,515,373 the disclosure of which is incorporated herein by
reference. The practical applications of the invention are not
limited to this particular embodiment, however. For
example, it can also be employed as a high-performance
interconnect to multimedia devices such as digital imaging
equipment and audio appliances.
To facilitate an understanding of the invention, it will be
described with reference to the specific example of a
telephone-based telecommunication subsystem that provides basic fax/data modem services, plus call management
and audio stream handling. This particular example is perhaps one of the more complex applications of the invention,
because of the number of different signaling requirements
associated with communications over the telephone lines.
Further complexity is added by the fact that these requirements are often country-specific, and therefore the handling
of a command, such as dialing a telephone number, can vary
greatly from one country to the next. Other implementations
of the invention, for example in the context of transmitting
sounds and video data, will become apparent from an
understanding of the principles of the invention explained
with respect to this particular example.
FIG. 1 is a block diagram of a communications engine
that is designed to provide modem and facsimile services.
The top level of the diagram represents communications
applications 10-14. These applications send commands for
communications services to a data service provider, or
application programming interface (API), such as the Telephone Manager provided by Apple Computer, Inc. or the
Telephone Application Programming Interface (TAPI) provided by Microsoft Corp. This interface is represented by the
20
25
30
35
40
45
50
55
60
65
US 6,343,263 Bl
5
6
outgoing data streams that are intended for respective transcommunications network, It IS provided to the real-time
mission to separate destinations, whether logical or physical.
engine as pulse-code modulated (PCM) data through the
For example, the adapter 36 might be connected to a desktop
DMA 50. If the computer does not have DMA capabilities,
telephone for voice communications and to the telephone
the data can be transferred between the adapter and the
line for wide-area communications. Data streams for these 5 handler as packetized data, as described in application Ser.
two connections can be combined in a multiplexed manner
No. 08/058,750 filed May 7, 1993 now abandoned.
by the serial driver, to be sent to the adapter 36 through the
As another example, the real-time engine may operate as
computer's serial port 37.
a virtual speech recognition device. To do so, the real-time
An adapter handler 44 is specific to the particular adapter
function block initializes the engine and installs the modules
36 and carries out features associated with that adapter. For 10
necessary to carry out this function. In this mode of
example, if the adapter is one that is designed to be conoperation, the engine may convert pulse-code modulated
nected to a telephone network, the handler implements
(PCM) data received from the adapter into vector-quantized
functions germane to that network such as ring detection,
speech components. The engine transforms this PCM data
pulse dialing, on/off hook control and the like, in response
into data appropriate for subsequent processing by a speech
to commands received from the application programs 10. 15
recognition application program, according to the comOne example of the manner in which data can be exchanged
mands from the handler 44, and the results of the transforms
between the adapter 36 and the handler 44 is described in
are provided through the shared FIFOs.
U.S. patent application Ser. No. 08/058,750 filed May 7,
With this configuration, the handler does not need to have
1993, now abandoned the disclosure of which is incorpoany knowledge of the real-time engine implementation.
rated herein by reference.
20 Communications with the real-time engine are carried out in
A real-time engine 46 can perform transforms on data
a robust fashion. In essence, the architecture of the system
streams provided to and received from the adapter 36. The
provides a message-passing capability between devices that
particular transforms to be performed are sent as commands
know nothing about the configuration or existence of one
to the real-time engine from the adapter handler 44 via
suitable application programming interfaces 48. For com- 25 another.
As illustrated in FIG. 2, there can be a number of
municating with the real-time engine, each interface
interfaces 48 situated between the handler 44 and the
includes shared command/control mailboxes in the computreal-time engine 46. Each interface represents services for a
er's RAM, as well as bi-directional first-in, first-out (FIFO)
particular class of functionality. For example, one interface
buffers for transferring data. As an example, if the system is
set up to operate as a fax/data modem, the real-time engine 30 may relate to the operation of the engine as a virtual
telephone, another interface can be associated with a virtual
functions as a virtual telephone. In such a case, the handler
sound device, e.g. stereo, and a third interface can pertain to
may instruct the engine 46 to send a facsimile in response to
a virtual video device. Each interface receives commands
a command from an application program. For this purpose,
from an application program, through the handler 44, and
the real-time engine is configured with a suite of modem and
call processing functions. This configuration is implemented 35 instructs the real-time engine to carry out the necessary
transforms which relate to the function of the virtual device
by a real-time function control block 49, which initializes
being implemented, e.g. text-to-speech conversion, video
and manages the operation of the real-time engine. Generimage processing, etc.
ally speaking, whenever a new task is to be carried out by
the real-time engine 46, the real-time function control block
The architecture of the real-time engine 46 is illustrated in
49 issues commands that are specific to the operating system 40 further detail in FIG. 3. Referring thereto, when configured
as a virtual device, the real-time engine is made up of two
of the real-time engine. These commands cause the engine
to start up, if it is not already running, and to configure itself
main components, a processing engine 52, such as a DSP,
with a library of routines that are necessary for it to
and translation software 54. The DSP comprises a processor
implement the task.
56, an operating system 58 for that processor, and a set of
When the handler 44 requests a facsimile transmission, 45 libraries 60 which enable the processor to perform designated signal processing functions. There are three possible
for example, the real-time function block issues commands
implementations of the DSP, respectively identified as hard,
to start the real-time engine and install the various modules
soft and native. In the hard implementation, all three comthat are needed for it to function as a virtual telephone.
ponents of the DSP are fixed within a piece of hardware, i.e.
Binary facsimile image data is transferred to the real-time
engine via the FIFO buffers, where it is encoded as PCM 50 an IC chip. In other words, the libraries and the operating
system are embedded as firmware, and cannot be reprodata which is further encoded according to the transport
grammed or updated without changing the chip. An example
medium over which it is to be transmitted. If the adapter is
of a hard implementation is the Rockwell 9623 data-pump.
connected to a telephone line, for example, these signals can
This type of DSP might be able to perform only one class of
be encoded as 16-bit pulse-code modulated (PCM) samples,
and forwarded directly to the adapter 36 via the serial driver 55 virtual device operation, i.e. Function as a modem. When a
hard DSP is employed for the real-time engine, the function
42. Alternatively, if the transport medium is an ISDN line,
control block 49 operates to initialize the processor at the
the modem signals are encoded as mulaw-companded 8-bit
outset of the operation of the real-time engine.
PCM signals. The different types of encoding are stored in
different tables, and the appropriate one to be used by the
The soft implementation differs from the hard implemenreal-time engine is installed by the real-time function block 60 tation in that the libraries, and possibly also the operating
during the initial configuration of the engine and/or desigsystem, are resident as software in the computer's memory.
nated by the API 48 at the time the command to transform
In this implementation, the libraries are programmable and
the data is issued.
can be updated as desired. The processor, however, is still
Transformed signals from the real-time engine that are to
resident as a separate piece of hardware. Because of this
be transmitted via the transmission medium are provided to 65 programmability, the DSP can carry out more functions than
a hard DSP, such as sound processing and Fourier transthe hardware abstraction layer 40 through direct memory
forms. An example of a soft DSP is the AT&T 3210. When
access (DMA) 50. When data is being received from the
US 6,343,263 Bl
7
8
a soft DSP is employed for the real-time engine, the function
The interface provides for the origination and answering
control block 49 operates to configure the appropriate librarof calls routed through traditional analog switches. To
ies for the transforms that are to be carried out by the DSP,
answer calls, the interface monitors incoming signals, as
in addition to initializing the processor.
reported by the real-time engine, for appropriate frequency
In the native implementation of the DSP, the processor 5 and cadence consistent with a particular country's requiredoes not reside in a separate piece of hardware. Rather, it's
ments. The interface also includes facilities for tracking call
functions are carried out by the CPU of the host computer.
progress, such as detection of dial tone, ring back and busy
As in the case of the soft implementation, the DSP operating
signals. It further includes the necessary information relating
system and the libraries are resident in the computer's
to the generation and detection of DTMF signals.
memory. When this implementation is employed, the func- 10
The interface generates calls that can be classified into
tion control block 49 operates to allocate system resources
two general categories, originating calls and callback calls.
to the DSP function, such as to enforce system time
Originating calls are those which are generated in response
management, to ensure that adequate processing time is
to commands from the application program. Callback calls
given to DSP operations.
are used to report progress information to the application
The translation software 54 is made up of two parts. The
main part of the software comprises a generic service 15 program. Most originating calls might take time to complete,
and are therefore asynchronous, so that the host processor
provider 62 which functions as a device driver. This part of
can suspend servicing of the calling application program
the software receives the commands from one of the APIs 48
until the task associated with the call is complete. This
and issues the instructions to the DSP to perform the
allows the interface to be called from within an interrupt
transforms that are required in the operation of the virtual
device being implemented. This part of the software is 20 handler as well as freeing the processor while waiting for
labeled as being generic because it is independent of the
some hardware to execute a task. Completion of the process
actual hardware that is used in the implementation of the
is indicated by executing a completion routine for an assoDSP 52. To enable the service provider to communicate with
ciated callback.
the DSP, an interface 64 is provided. This interface is
The originating calls are of two types, system task calls
specific to the particular DSP that is employed as the 25
and general purpose calls. The system task calls can include
processing engine for the real-time engine. In other words,
those such as "Open", which causes system resources to be
the generic service provider does not need to know whether
allocated to the real-time engine, and "Close", which dealthe processing engine is a hard, soft or native DSP. In
locates the resources. General purpose calls can include such
essence, therefore, the interface 64 functions as an additional
layer of abstraction which virtualizes the DSP, i.e. the 30 calls as "State", which returns the current state of the virtual
device, e.g. on-hook, ringing, off-hook or on-line, "Genergeneric service provider is aware of the existence of a DSP,
ateDtmf" which causes DTMF tones to be generated, and
but does not need to know how it is actually being imple"SetAutoAnswer", which instructs the engine to answer a
mented in order to operate.
call after a predetermined number of rings. Other examples
In a practical embodiment of the invention, separate
generic service providers can be employed for the different 35 of general purpose calls include "SetSilenceDuration",
which passes to the engine the length of a silence to be
virtual devices to be implemented. For example, one service
detected, "Hook", which is used to take the virtual phone
provider can be employed to provide the services of a virtual
off-hook and on-hook, and "DiaINumber", which dials a
telephone. Such a service provider might include a set of
number in a designated string. Similar types of general
calls which enable it to determine the capabilities of the
hardware being employed, e.g. whether it can support line 40 purpose calls can be included for functions associated with
facsimile types of operations.
current detection, remote wakeup, etc. Other sets of calls are
Examples of suitable callback calls include
used for control and status information, tone generation and
"DtmfDetected", which indicates that a particular DTMF
detection, data transfer, and power management.
digit has been detected, "RingIndicate", which identifies
Another service provider can be used for sound
when a valid ring has been detected on the line, and
applications, and a third service provider for video applica- 45
"DiaIToneDetected", which is called when a valid dial tone
tions. Depending upon the particular virtual device to be
is detected. Other appropriate callback calls will be readily
implemented, the function control block 49 calls up the
apparent from these examples.
appropriate service provider when configuring the real-time
The flow of events that occur when the fax/data modem
engine. Each service provider communicates with the handler 44 through a respective one of the APIs 48, and with the 50 is activated will now be described. These events are illustrated in the flow diagrams of FIGS. 4A-4C. From the
DSP 52 through the same interface 64.
perspective of an application program 10, it is "talking" to
An example of a suitable interface 48 for telephony
an external modem connected to the serial port. In fact,
applications will now be described in detail. The interface
however, it is actually obtaining communications services
basically operates to transmit high-level requests for service.
The functionality of such an interface can be divided into 55 from an internal virtual modem 20 and the hardware interface 22.
two main categories, namely functions that are used only on
At boot time, the computer's operating system determines
public service telephone network (PSTN) lines, such as ring
whether the computer is capable of supporting a communidetection, and those functions used on any telephone line,
cations system. This allows the operating system to notify
such as DlMF generation and detection. This arrangement
allows the interface to be used for ISDN and PBX lines as 60 the user on application program activation that a communications session is not possible on the computer. This deterwell as traditional analog lines for call progress and modem
mination is made by assessing system-dependent factors
functions. For PSTN lines, the interface generates comsuch as presence of a data stream processor, sufficient
mands for setting the appropriate electrical parameters, such
system resources, and so forth. In the following discussion
as voltage levels that comply with a particular country's
regulations. For this purpose, the interface can include data 65 it is assumed that the requisite resources are available.
At the outset, with reference to FIG. 4A, a communicatables containing information on all country-specific parameters.
tions application 10 is launched. A communications "con-
US 6,343,263 Bl
9
10
nection" is opened either implicitly on launch, or by comReferring now to FIG. 4C, upon completion of the virtual
mand. This directs the communications subsystem to
phone dial command, the fax/data module issues a command
initialize itself. The communications application's connecto the virtual phone, i.e. the hardware interface, directing it
to listen for an answering modem sequence. Again, this
tion establishment request is passed to the communications
toolbox 16. This in turn causes a driver command "Open" to 5 command is received by the handler 44 and is translated into
be issued by the fax/data modem logic 20 to the hardware
a virtual real-time engine command to detect tones (signal
interface 22.
energy) at certain specified frequencies and levels.
Optionally, the real-time engine may be commanded to
The hardware interface driver command "Open" is
concurrently listen for voice energy in case a human answers
received by the hardware interface adapter handler 44. As
noted, the handler has previously-typically at boot time- 10 the phone.
determined that the host computer has the resources to
Assuming that the answering station presents valid
establish a communications session, in this example being
answering modem tones, the handler will then be directed to
an analog modem over a telephone service line.
instigate a modem connection. This results in another command to the virtual real-time engine, this time requesting a
The handler calls function control block 49, to initialize
the real-time engine. The action taken by function control 15 modem connection compatible with the answer tone
sequence received. The actual modulation and demodulation
block depends on the real-time engine's implementation. If
of the hardware interface adapter's isochronous PCM data
a programmable DSP is used for the real-time engine, the
stream is accomplished entirely by the real-time engine.
function control block might issue a series of DSP operating
system specific commands to download and initialize the
Once the modem connection is established, the handler
DSP subsystem, followed by commands to download the 20 notifies the fax/data modem module that data transmission
DSP algorithms that perform the modem's analog modulamay begin. Digital data now flows between remote and local
tion. A native-mode DSP implementation may result in the
computers via handler Read and Write calls. Data is passed
function control block simply allocating system memory and
between the real-time engine and the handler via full-duplex
host processor resources needed for the modem algorithms.
FIFOs. This data is in turn passed between the handler and
In either case, it is significant to note that the hardware 25 the application program through the modem logic 20.
interface is designed to use a virtual real-time engine. The
The ability to communicate over different types of transentire real-time engine implementation is "hidden" from the
mission mediums in this single system is made possible by
handler 44 by the function control block. The handler does
the fact that each of the various components is isolated from
not communicate with the real-time engine directly, via
the particular features of the other through suitable levels of
DSP-specific commands. Rather, all communications take 30 abstraction implemented via the application programming
place over the virtual real-time engine interface 48 via the
interfaces. For example, to change the transmission medium
mailboxes and the full-duplex data FIFO registers.
from the telephone lines to an ISDN line, the telecom
The handler 44, as part of the Open process, prepares the
adapter 36 is disconnected from the serial port 37, and a new
attached telecom adapter 36 for operation. After 35 adapter appropriate for ISDN is plugged into the serial port.
initialization, the hardware interface telecom adapter delivThe associated adapter handler 44 is also loaded into the
ers a full duplex, isochronous data stream.
system. Thereafter, whenever the adapter handler issues a
command to the real-time engine to perform a transform, it
If the real-time engine is successfully configured, the
identifies the fact that the transformed data must be suitable
hardware interface is initialized properly, and all other
necessary resources are available, the handler Open opera- 40 for ISDN format. In response thereto, the API 48 which
receives these commands supplies the real-time engine with
tion will be successful, and an analog modem communicathe appropriate parameters for performing the transforms in
tions link over the hardware interface adapter can begin at
the required format, e.g. the proper number of bits per word,
any time. Otherwise, communications are impossible and an
etc.
error is reported to the application program.
Similarly, if the computer is transported from one country
Referring now to FIG. 4B, the application program now 45
to another, the only change that needs to be implemented to
initiates a modem connection with a remote station. For this
carry out telephone communications in the new country is to
purpose, the character sequence "ATDT5551212" might be
switch the adapter and its handler. Upon initialization, the
issued by the application program, signifying (in the "AT"
adapter identifies the fact that it is designed for a specific
modem command standard) that the communications subsystem should dial the remote station at number 5551212, 50 country. Whenever commands are to be sent to the real-time
engine, the handler instructs the API 48 of the country as
and instigate a modem connection with the answering
well as the command itself. For example, the command
modem, if present.
might be to generate a dial tone for country X. In response,
The dial command string is passed by the communicathe API 48 instructs the real-time engine to generate the dial
tions toolbox 16 to the CLI 24, where it is parsed and
converted into a virtual phone dial command. The virtual 55 tone, and provides it with the parameters pertinent to dial
tones in country X. The real-time engine then generates the
phone dial command is passed to the adapter handler 44 as
necessary PCM signals and supplies them to the adapter 36
a driver-level control call, where it is translated into a virtual
via the DMA. The adapter takes care of converting those
real-time engine command and placed on the virtual realsignals into the necessary electrical signals for transmission
time engine's command/response interface 48. This causes
the real-time engine to generate a PCM data stream that 60 on the telephone lines of that country.
directs the hardware interface telecom adapter to go offIn essence, the real-time engine allows any type of
hook, then to generate the DTMF tones corresponding to the
transform to be performed on any type of data delivered over
entered phone number. The handler 44 "sleeps", waiting for
any type of transmission medium. The application program
the real-time engine to signal that the real-time DTMF
which receives the transformed data does not have to have
command has been completed. In this operation, the handler 65 any knowledge of the fact that the transmissions are being
carried out over an ISDN line, rather than the telephone lines
has no involvement with the isochronous data stream created
that it might have been originally programmed for. Thus, for
by the real-time engine.
US 6,343,263 Bl
11
12
example, a modem connection can be established over an
and the realtime signal processing subsystem to allow
ISDN line without the application being aware of a change
the telecommunications subsystem to interoperate with
said realtime services.
in the transmission medium. The adapter 36, the hardware
4. The signal processing system as set forth in claim 3,
abstraction layer 40, the serial driver 42 and the adapter
handler 44 function to configure a real-time data stream 5 wherein the realtime signal processing subsystem comfrom the transmission medium to the real-time engine, and
prises:
vice versa. The speed at which this data can be delivered, as
at least one realtime communications module coupled to
well as the format of the data, is no longer limited by
receive a plurality of communications commands from
hardware devices that are employed in conventional hardsaid applications programs via said datastream handler
wired modems, particularly UARTs and the like. Rather, the 10
program and said realtime APIs, said realtime commudata is delivered at a real-time rate, where it is handled by
nications module in response to said communications
the computer's CPU.
commands issuing a plurality of requests for realtime
services to at least one realtime service provider;
The foregoing examples of the invention have been
presented to facilitate an understanding of its features and
a translation interface program coupled to receive said
operation. It will be appreciated, however, that the practical
requests for realtime services from said communicaapplications of the invention are not limited to these specific 15
tions modules; and
embodiments. Rather, the invention will find utility in any
a realtime processor including a realtime operating system
environment in which it is desirable to transmit and process
interoperating with said translation program for executdata at real-time rates. Thus, while the invention has been
ing a plurality of realtime operations comprising realdescribed in the context of communications over a wide-area
time functions in response to said requests.
network, it can be used in any type of data acquisition 20
5. The realtime data processing system as set forth in
claim 4, wherein the translation interface comprises a plusystem. The preceding description should therefore be
rality of realtime features to access a modem unit for
viewed as exemplary, rather than restrictive. The scope of
communicating over said WAN.
the invention is indicated by the following claims, rather
6. The signal processing system as set forth in claim 3
than the foregoing description, and all changes which come
within the meaning and range of equivalents thereof are 25 further comprising a direct memory access (DMA) unit
coupled between said realtime signal processing subsystem
intended to be embraced therein.
and a hardware abstraction portion of said telecommunicaWe claim:
tions subsystem, said DMA unit providing for transfer of
1. A signal processing system for providing a plurality of
datablocks from said telecommunications adapter module to
realtime services to and from a number of independent client
30 said realtime signal processing subsystem.
applications and devices, said system comprising:
7. A signal processing system for providing a plurality of
a subsystem comprising a host central processing unit
realtime services over a wide area network (WAN), said
(CPU) operating in accordance with at least one applisystem comprising:
cation program and a device handler program, said
a telecommunications subsystem comprising a host censubsystem further comprising an adapter subsystem
tral processing unit (CPU) operating in accordance with
35
interoperating with said host CPU and said device;
at least one applications program and a datastream
a realtime signal processing subsystem for performing a
handler program, said telecommunications subsystem
further comprising a telecommunications adapter subplurality of data transforms comprising a plurality of
system interoperating with said host CPU and said
realtime signal processing operations; and
WAN;
at least one realtime application program interface (API) 40
a virtual realtime device enabling a plurality of realtime
coupled between the subsystem and the realtime signal
processing subsystem to allow the subsystem to intersignal processing operations in accordance with at least
operate with said realtime services.
one realtime service request issued by said applications
program; and
2. The signal processing system as set forth in claim 1,
wherein said signal processing system receives and trans- 45
at least one realtime application program interface (API)
mits a plurality of datatypes over a plurality of different wide
interoperating with the telecommunications subsystem
area networks (WANs).
and the virtual realtime device to enable the telecom3. A signal processing system for providing a plurality of
munications subsystem to interoperate with said realrealtime services over a wide area network (WAN), said
time signal processing operations.
system comprising:
8. The signal processing system as set forth in claim 7,
50
wherein the virtual realtime device comprises a realtime
a telecommunications subsystem comprising a host centranslation interface program and virtual realtime engine,
tral processing unit (CPU) and a wide area network
said virtual realtime engine enabling said realtime services
interface, where said wide area network interface is
by performing a number of data translation operations in
comprised of a hardware interface to the network and
55 accordance with said realtime service request and said
driver software which executes on the host
realtime translation interface program.
a telecommunications subsystem comprising a host cen9. The signal processing system as set forth in claim 8,
tral processing unit (CPU) operating in accordance with
wherein the virtual realtime engine comprises:
at least one application program and a datastream
a realtime processor including a realtime operating
handler program, said telecommunications subsystem
system, and
further comprising a telecommunications adapter sub- 60
system interoperating with said host CPU and said
a plurality of realtime function libraries interoperatively
WAN;
coupled with said realtime processor for providing a
plurality of processing steps comprising said realtime
a realtime signal processing subsystem for performing a
signal processing operations,
plurality of transforms comprising a plurality of realtime signal processing operations; and
65
whereby said virtual realtime engine responds to commuat least one realtime application program interface (API)
nications commands initiated by said applications programs.
coupled between the telecommunications subsystem
US 6,343,263 Bl
13
14
10. The signal processing system as set forth in claim 7
further comprising a direct memory access (DMA) unit
coupled between said virtual realtime signal processing
subsystem and a hardware abstraction portion of said telecommunications subsystem, said DMA unit providing for
transfer of data from said telecommunications adapter module to said virtual realtime signal processing subsystem.
11. The signal processing system as set forth in claim 7,
wherein the virtual realtime translation interface comprises
a plurality of realtime features to access a modem unit for
communicating over said WAN.
12. The signal processing system as set forth in claim 11,
wherein the modem unit comprises at least a serial communications controller, a programmable timer, and a plurality
of input/output (I/O) lines.
13. The signal processing system as set forth in claim 7,
wherein realtime service requests are selected from the
group of realtime service request devices consisting of
telephone answering machines, automatic telephone dialing
machines, and remote control systems.
14. The signal processing system as claimed in claim 6,
wherein the realtime signal processing operations are
selected from the group of telecommunications transactions
consisting of fax (send/receive) and data transmission transactions.
15. The signal processing system as claimed in claim 14,
wherein the data transmission transaction comprises at least
one data framing format and at least one data protocol.
16. The virtual realtime data processing system as set
forth in claim 9, wherein the realtime processor comprises a
programmable processing unit which is controlled by said
realtime communications applications and said realtime
communications interface.
17. The virtual realtime data processing system as set
forth in claim 9, wherein the realtime processor comprises
said host CPU.
18. The signal processing system as set forth in claim 9,
wherein the realtime processor comprises a hard digital
signal processor in which the realtime operating system and
the realtime function libraries are fixedly embodied in a
hardware element.
19. The realtime data processing system of claim 4
comprising a plurality of realtime communications modules
which are respectively associated with different realtime
serVIces.
20. The realtime data processing system of claim 19
wherein at least some of said realtime communications
modules provide a service which implements a virtual
realtime device.
21. The realtime data processing system of claim 19
wherein one of said realtime services comprises a video
processing service.
22. The realtime data processing system of claim 19
wherein one of said realtime services comprises a sound
processing service.
23. The realtime data processing system of claim 19
wherein one of said realtime services comprises a telephone
serVIce.
24. The signal processing system of claim 1, wherein said
realtime signal processing subsystem comprises:
a realtime processor including an operating system for
executing a plurality of realtime functions;
a realtime communications module which is independent
of said realtime processor and is coupled to receive a
plurality of communications commands from said
application programs via said device handler program
and said realtime API, said realtime communications
module operating in response to said communications
commands to issue a plurality of requests for realtime
services to said realtime processor; and
a translation interface program which is specific to said
realtime processor and is coupled to receive said
requests for realtime services from said communications module and provide said requests to said realtime
processor.
25. The signal processing system of claim 24 comprising
a plurality of realtime communications modules which are
respectively associated with different realtime services.
26. The signal processing system of claim 25 wherein at
least some of said realtime communications modules provide a service which implements a virtual realtime device.
27. The signal processing system as set forth in claim 24,
wherein the realtime processor comprises a hard digital
signal processor in which said operating system and realtime
function libraries are fixedly embodied in a hardware element.
28. The signal processing system as set forth in claim 24,
wherein the realtime processor comprises said host CPU.
29. The signal processing system of claim 24, wherein
said realtime processor is embodied in a hardware device
and includes realtime function libraries that are embodied in
programmable software.
30. The signal processing system of claim 29 wherein said
operating system is also embodied in programmable software.
31. A signal processing system, comprising:
an input/output device for sending and/or receiving isochronous streams of data transmitted over a communications path;
a realtime engine for performing data transformations on
the isochronous streams of data, said realtime engine
being independent of said input/output device;
a device handler program associated with said input/
output device, for generating requests to the realtime
engine to perform data transformations on the isochronous streams of data; and
at least one application programming interface for receiving the requests generated by said device handler
program and issuing commands to said realtime engine
to perform the requested data transformations.
32. The signal processing system of claim 31 comprising
a plurality of said application programming interfaces which
are respectively associated with different types of services to
be provided by said realtime engine with respect to isochronous streams of data.
33. The signal processing system of claim 32 wherein one
of said application programming services relates to the
operation of the realtime engine as a virtual telephone
device.
34. The signal processing system of claim 32 wherein one
of said application programming services relates to the
operation of the realtime engine as a virtual sound device.
35. The signal processing system of claim 32 wherein one
of said application programming services relates to the
operation of the realtime engine as a virtual video device.
36. The signal processing system of claim 31 wherein said
application programming interface includes command/
control registers that are shared between said realtime
engine and said device handler program for transferring said
requests and responding thereto, and a buffer for transferring
isochronous streams of data between said device handler
program and said realtime engine.
37. The signal processing system of claim 31, wherein
said realtime engine comprises:
5
10
15
20
25
30
35
40
45
50
55
60
65
US 6,343,263 Bl
15
16
signal processor in which said operating system and realtime
function libraries are fixedly embodied in a hardware element.
a communications module which is independent of said
39. The signal processing system as set forth in claim 37,
realtime processor and is coupled to receive said com- 5 wherein said processing system is incorporated in a data
processing system having a host central processing unit
mands from said application programming interface,
(CPU), and wherein the realtime processor comprises said
said communications module operating in response to
host CPU operating in accordance with software instructions
said commands to issue a plurality of requests for
relating to said realtime functions.
realtime services to said realtime processor; and
40. The signal processing system of claim 37, wherein
a translation interface program which is specific to said 10 said realtime processor is embodied in a hardware device
and includes realtime function libraries that are embodied in
realtime processor and is coupled to receive said
programmable software.
requests for realtime services from said communica41. The signal processing system of claim 40 wherein said
tions module and provide said requests to said realtime
operating system is also embodied in programmable softprocessor.
ware.
38. The signal processing system as set forth in claim 37, 15
wherein the realtime processor comprises a hard digital
* * * * *
a realtime processor including an operating system for
executing a plurality of realtime functions;
UNITED STATES PATENT AND TRADEMARK OFFICE
CERTIFICATE OF CORRECTION
PATENT NO.
: 6,343,263 Bl
DATED
: January 29, 2002
INVENTOR(S) : James B. Nichols and John Lynch
Page 1 of 1
It is certified that error appears in the above-identified patent and that said Letters Patent is
hereby corrected as shown below:
Title page,
Item [75], Inventors, "James B. Nichols", please delete "San Mateo" as city and insert
-- Los Altos -- in it's place.
"John Lynch", please delete "San Jose" as city and insert -- Monte Sereno -- in it's
place.
Signed and Sealed this
Twenty-sixth Day of November, 2002
Attest:
Attesting Officer
JAMES E. ROGAN
Director ofthe United States Patent and Trademark Office
Disclaimer: Justia Dockets & Filings provides public litigation records from the federal appellate and district courts. These filings and docket sheets should not be considered findings of fact or liability, nor do they necessarily reflect the view of Justia.
Why Is My Information Online?