TELEPHONE ANSWERING MACHINE
section we design a digital telephone answering machine. The system will store
messages in digital form rather than on an analog tape. To make life more
interesting, we use a simple algorithm to compress the voice data so that we
can make more efficient use of the limited amount of available memory.
1 Theory of Operation and Requirements
addition to studying the compression algorithm, we also need to learn a little
about the operation of telephone systems.
compression scheme we will use is known as adaptive differential pulse code
modulation (ADPCM). Despite the long name, the technique is relatively simple
but can yield2 compression ratios on voice data.
6.21 shows the class diagram for the answering machine. In addition to the
classes that perform the major functions, we also use classes to describe the
incoming and OGMs. As seen below, these classes are related. The buttons and
lights simply provide attributes for their input and out put values. The phone
line, microphone, and speaker are given behaviors that let us sample their
current values. The message classes are defined in Figure 6.23. Since incoming
and OGM types share many characteristics, we derive both from a more
fundamental message type. The major operational classes—Controls, Record, and
Playback. The Controls class provides an operate () behavior that over sees the
user-level operations. The Record and Playback classes provide behaviors that
handle writing and reading sample sequences. The state diagram for the Controls
activate behavior is shown in Figure 6.25. Most of the user activities are
relatively straight forward. The most complex is an- swering an incoming call.
As with the software mode mof Section5.11, we want to be sure that a single
depression of a button causes the required action to be taken exactly once;
this requires edge detection on the button signal. State diagrams for
record-msg and play back-msg are shown in Figure 6.26.We have parameterized the
specification for record-msg so that it can be used either from the phone line
or from the microphone. This requires parameterizing the source itself and the