May
2006, Issue 190
ARM-Based
Modern Answering Machine
Philips
ARM Design Contest 2005 First Prize
MODES
OF OPERATION
I
customized the TAM-TAM system shown in Photo 1 for the
Smith family. Featuring only four main modes of operation,
the system was fairly easy to develop.
In
Idle mode, the system waits for a phone call. The ring
detection routine is sophisticated enough to reject
short rings and rings of the wrong frequency. All of
these parameters are extracted from the core software.
Magic numbers are avoided throughout the software.
When
the first ring burst is detected, the system enters
Smart Answering Machine mode (see Figure 1). First,
the caller ID detection routine is activated. An interrupt
service routine (ISR) handles the demodulation of the
signal, software UART, and checksum calculation. The
background task waits for the detection to be completed.
A timeout allows the operation to be aborted if the
detection is missed or if the checksum is wrong. After
a preprogrammed number of rings, the system goes off
the hook. Another key step (sometimes mishandled) involves
correctly counting the rings. A ring burst on Monday
followed by another ring burst on Tuesday isn’t counted
as two rings!
|

(Click
here to enlarge)
|
Figure
1—It’s important to understand the different phases
of the answering machine mode and the DSP functions
that are required in each phase. |
After
going off hook, the machine plays the first WAV file:
“Hi, this is the Smith family. Please press 1 for Jim,
2 for Julie, 3 for the kids, or 0 for a general message.”
This statement invites the caller to send a DTMF key
to direct the message to the correct virtual answering
machine. If a DTMF digit isn’t detected, a generic message
is played after a programmable timeout. Otherwise, a
more specific message can be played. If the caller presses
the 2 button, the system plays Julie’s recording: “Hi,
this is Julie. I am currently visiting my mother. Please
leave me a message.”
General
messages and the ones recorded after a digit timeout
are stored in mailbox 0. Messages are recorded until
one of three things happens: the maximum message duration,
which is programmable, is reached (in which case a short
tone will inform the caller that the system is about
to hang up); someone picks up the local handset (thus
aborting the message); or a remote hang-up is detected
(when a short interruption of the line current is sensed
or when a dial tone is detected). After a message is
recorded, the recipient is notified by e-mail and his
or her assigned green LED (0, 1, 2, or 3) blinks slowly.
This indicates that at least one message is pending.
A
user like Julie can retrieve her messages when the system
is in Local Retrieval mode. The front panel is easy
to use. She can press her button and retrieve her messages
one after the other. After a message, a short tone sounds.
She now has a 3-s window of time to save or erase the
message. If she presses a key and holds it for 1 s,
the most recently played message will be erased from
the queue.
I
think Internet Message Retrieval mode is the most interesting.
By just typing the IP address of the home network to
which the TAM-TAM is connected, Julie can retrieve her
messages. This retrieval procedure has an inherent problem
because ISPs don’t want users without a professional
account to run web servers on their network. This is
why ISPs often rotate the IP address assigned to such
networks and block incoming connection to port 80. I
designed the TAM-TAM with the web server running on
port 8000 to bypass this restriction.
In
addition, I subscribed to a service that enables me
to name my web server and access it on its own port
for free. The TAM-TAM’s own web server running on port
8000 can be accessed from anywhere by typing tamtam.hostredirect.com
(hostredirect.com is just an example here). The IP address
is maintained current in the DNS servers thanks to a
small utility running on my PC. The company that offers
this service details how this utility can be implemented
on another platform, so theoretically it could be ported
to the TAM-TAM.