Abstract:
A method for controlling flow, through a computer hardware resource, of information to and from computer applications. When a flow of information is initiated from one of the applications, a determination is made whether the resource is being accessed by another one of the applications and, if so, the flow of information from the first application is delayed. If not, then the flow of information is enabled. When a flow of information is initiated toward the applications, a determination is made to which one of the applications the information is flowing, and the flow is directed to that one application. A graphical interface associates, in the mind of a user, a computer hardware resource with a corresponding real office device, the computer resource enabling the computer to function like the consumer device. The graphical interface includes a surrealistic image having physical features which represent functional components of the resource, the physical features of the image resembling corresponding features of the office device; and an animation routine which causes the image to change when the user selects one of the features of the image, thereby invoking the change occurring in a manner which resembles changes to the office device when the corresponding feature of the office device is invoked.

Description:
This is a continuation of copending application Ser. No. 08/303,627, filed Sep. 9, 1994. 
    
    
     BACKGROUND 
     This invention relates to a computer/user interface for computer hardware resources associated with familiar devices. 
     The proliferation of the personal computer has made it possible to move many familiar office devices off of the desktop and into the computer system. Fax modems, for example, allow the user to not only to transmit and receive data from bulletin board services and computer networks, but also to send and receive facsimile transmissions, as well as place and accept calls over telephone lines. CD-ROM is not only an inexpensive storage medium for large computer programs or vast amounts of electronic data, but also a medium through which the computer may play music or display pictures or graphics. In addition, other office devices, e.g., AM/FM receivers and television tuners, are available as computer system components. 
     For experienced computer users, existing computer/user interface packages, such as Microsoft Windows, are more than sufficient to enable the user to manipulate these familiar office devices. The experienced user usually has no trouble selecting an office device for use, invoking the appropriate application to operate the device, and configuring the computer system for proper operation of the application and the device. 
     Novice users, on the other hand, usually have little, if any, understanding of the computer and are often unable or unwilling to perform the tasks necessary to use these otherwise familiar devices. At best, the novice user is confused when trying to operate office devices through the computer. 
     Experienced users and novice users alike encounter difficulties when a device is used for conflicting purposes. A fax modem, for example, may be used to initiate and answer voice calls as well as to transmit and receive facsimiles. If the modem receives an incoming call, the user must decipher whether it is a voice or facsimile call and then invoke the appropriate application, all before the caller gets tired of waiting and hangs up. In addition, the user may attempt to place a telephone call while unaware that facsimile data is being received by the modem. 
     SUMMARY 
     In general, in one aspect, the invention features controlling flow, through a computer hardware resource, of information to and from computer applications. When a flow of information is initiated from one of the applications, a determination is made whether the resource is being accessed by another one of the applications and, if so, the flow of information from the first application is delayed. If not, the flow of information is enabled. When a flow of information is initiated toward the applications, a determination is made to which one of the applications the information is flowing, and the flow is directed to that one application. 
     Implementations of the invention may include the following features. A determination may be made whether the application to which information is flowing is able to accept the flow of information and, if not, the flow may be halted. If an application to which information is flowing is not running, the application may be launched. The step of determining to which one of the applications the information is flowing may include alerting a user to the flow of information, and allowing the user to select an appropriate one of the applications to receive the flow of information. A user may be told to which one of the applications the flow of information has been directed, and the user may be allowed to interrupt the flow of information to that one of the applications and direct it to another one of the applications. If one of the applications, in order to function properly, requires the presence of a specific hardware component, the method may include halting the flow of information to that one of the applications when the specific hardware component is not present. 
     A source of the information flowing toward the applications may be identified. The user may be allowed to halt the flow of information toward the applications at any time after the flow of information has been directed to one of the applications. If one of the applications requires disk storage space to accept the flow of information, the remaining capacity of the disk storage space may be monitored and the user may be alerted when the remaining capacity of disk storage space falls below a predetermined threshold value. The user may be told when the flow of information has been directed to the application requiring disk storage space. 
     A user may prespecify to which of the applications the flow of information can be directed. The user may be told when the flow of information from the first application is delayed. The method may be arranged to insure that all required information is included in the flow of information initiated by one of the applications. The flow of information initiated by one of the applications may include information obtained from another one of the applications. The resource may include a modem and the flow of information may include a telephone line signal. The applications may include: a telephone application, an answering machine application, or a facsimile application. 
     In general, in another aspect, the invention features an Operator process which manages a modem in a computer, the modem being configured to receive and transmit signals for a telephone/answering machine application and a facsimile application. An administrator process accepts from one of the applications a request for transmission of a telephone or facsimile signal by the modem, determines if the modem is busy transmitting or receiving another signal and, if so, delays transmission of the telephone or facsimile signals, and when the modem is not busy, forwards the telephone or facsimile signal to the modem for transmission. A discriminator process receives an incoming signal from a telephone line and determines whether the signal is a telephone or facsimile signal. When the signal is a telephone signal, it informs the user that a telephone signal has been received, allows the user to determine which, if either, of the following modules in the telephone/answering machine application receives the signal: a telephone module or an answering machine module, directs the signal to the selected module, and when the signal is a facsimile signal, directs the signal to the facsimile application. 
     In general, in another aspect, the invention features a graphical interface which associates, in the mind of a user, a computer hardware resource with a corresponding real office device, the computer resource enabling the computer to function like the consumer device. The graphical interface includes a surrealistic image having physical features which represent functional components of the resource, the physical features of the image resembling corresponding features of the office device; and an animation routine which causes the image to change when the user selects one of the features of the image, thereby invoking the corresponding functional component of the resource, the change occurring in a manner which resembles changes to the office device when the corresponding feature of the office device is invoked. 
     In general, in another aspect, the invention features a graphical computer interface for enabling a user to control a computer hardware resource. The interface includes a displayed surrealistic image representing a real consumer device and having visual features which correspond to functional features of the computer hardware resource; and a process which causes the displayed surrealistic image to change when the user selects one of the visual features of the image, and causes a corresponding functional feature of the resource to operate in a manner that resembles the operation of the real consumer device. 
     Implementations may include the following features. The change in the displayed surrealistic image may be effected through animated motion resembling motion made by the real consumer device. The appearance of the displayed surrealistic image may so resemble the appearance of the real consumer device that each of the visual features of the image are immediately recognizable as related to the corresponding functional feature of the computer hardware resource. The computer hardware resource may be a modem and the displayed surrealistic image may be an image of one of the following: a telephone, an answering machine, a telephone/answering machine, a speakerphone, or a facsimile machine. The displayed surrealistic image may be an image of a telephone and one of the visual features may be an image of a handset in a cradle, and dialing a telephone number may cause the image of the handset to move away from the cradle. 
     In general, in another aspect, the invention features a method used by a computer application running on a computer, for learning commands which, when executed, automatically launch a computer program stored on a storage medium. an automatic installation or setup process for the computer program is monitored as the process passes the commands from the storage medium to the computer. The commands are identified and copied as they are passed from the storage medium to the computer. The commands are stored for future use in automatic execution of the computer program. 
     Some of the advantages and features of the invention are the following. The invention provides a graphical computer interface which provides surrealistic images that resemble real office devices and that are associated with computer hardware resources which function in a manner similar to the real office devices. The graphical computer interface is both readily understandable by novice users and appealing to experienced users. The invention also provides a way to manage the flow of information from computer applications to the hardware resources as well as from the hardware resources to the applications. A process for &#34;snooping&#34; execution commands associated with an executable program stored on a medium is also provided. 
     Other advantages and features of the invention will become apparent from the following description and from the claims. 
    
    
     DESCRIPTION 
     FIG. 1 is a functional block diagram of an electronic component interface. 
     FIG. 2 is a functional block diagram of an Operator and modem-related applications of the electronic component interface. 
     FIGS. 3A-3E are a flow diagram for and screen shots of the Operator when a phone call is received. 
     FIGS. 4A and 4B are screen shots of the Operator warning of a full hard disk. 
     FIG. 5 is a screen shot of a default mode for the Operator. 
     FIGS. 6A-6E are screen shots of an option-setting mode of the Operator. 
     FIGS. 6F-6I are screen shots of the Operator&#39;s window. 
     FIGS. 7A and 7B are screen shots of a graphic for a telephone application. 
     FIGS. 8A-8C are screen shots for an answering machine application. 
     FIGS. 9A-9D are screen shots for a facsimile machine application. 
     FIGS. 9E-9S are screen shots for a speakerphone/answering machine application. 
     FIGS. 10A and 10B are screen shots for an address book application. 
     FIGS. 11A-11D are screen shots for a sound system application. 
     FIG. 12 is a flow chart for a &#34;snooping&#34; process. 
     FIG. 13A and 13B are screen shots of a remote control for the electronic component interface. 
     FIGS. 14A-14O are screen shots of a fax machine/fax mailbox application. 
     FIGS. 15A and 15B describe the operation of each of the controls on the MiniPilot and the TV remote controls, respectively. 
    
    
     Referring to FIG. 1, a personal computer, or PC (not shown), uses graphical images, or icons, to represent applications that allow hardware resources on the PC to simulate familiar, real office devices. For example, a phone center icon 10 is associated with a telephone/answering machine (TAM) application 12 which uses a modem 14 and other physical computer hardware resources to simulate a speakerphone and an answering machine. A facsimile (fax) machine icon 16 is associated with a fax application 18, which also uses the modem 14 to simulate a familiar device. A Rolodex icon 20 represents an address book application 22, which stores address and phone number information for use with the TAM 12 and fax 18 applications. The modem&#39;s use for TAM and fax services is governed by a system Operator 24, which is described in detail below. 
     A sound system icon 26 is associated with a multimedia application 28 which allows the computer to simulate, e.g., a CD player or an AM/FM stereo receiver. A television (TV) icon 30 is associated with TV drivers 32 which allow the computer to display video signals form a TV tuner 34. The computer may also use other icons to represent familiar office devices, such as a VCR icon 36 or a data communications service icon 38 (e.g., America Online or Prodigy). Many of the applications associated with an icon may be manipulated by the user with a software remote control icon 39, even when the application is not running in the foreground. 
     Referring also to FIG. 7, for each of the real office devices represented, the appearance of the graphical image very closely resembles the appearance of the real device. On the other hand, each of the graphical images contains an artistic element which gives the image a surrealistic appearance. As a result, each graphical image sufficiently resembles the corresponding real device that even a novice user would readily recognize the function of the computer hardware resources associated with the image; at the same time, the image is sufficiently appealing that the most experienced users, who generally prefer the look and feel of traditional computer/user interfaces, would find the images interesting and amusing and would readily accept the images as a legitimate interface. 
     The image of FIG. 7A, for example, unmistakably resembles a speakerphone/answering machine. With this image, even the most inexperienced user could immediately use the corresponding computer hardware resources (e.g., modem, speaker, microphone) to place a telephone call. The appealing appearance of the phone would also likely capture the interests of an experienced modem user. 
     Referring to FIGS. 2 and 3A-3E, the TAM application 12 and the fax application 18 share the modem 14, whose operation is governed by a system Operator 24. In general, the user may be working in a Windows application when a phone call is received 100 (FIG. 3A) by the modem 14 over the phone line. The modem 14 notifies the Operator 24 of the incoming call by simulating rings, which are counted by the Operator 24. The Operator will be running in an Operator window 40 (FIG. 3B), usually in the background and possibly iconized, when it receives the first ring. If so, the Operator immediately notifies the user of the call by moving the Operator window into the foreground. The user may also configure the Operator 24 to produce audible rings. If the Operator window is iconized, it is brought to the foreground in the iconized state and is restored by the user. Once restored, the Operator window 40 tells the user that someone is calling. If Caller ID is available, the Operator 24 identifies the calling party. 
     Referring to FIG. 3B, the Operator 24, like the applications, is associated with a surrealistic graphical image. The Operator 24 is represented graphically in the form of a man wearing a coat and a headset (such as those used by a real telephone &#34;Operator&#34;). While the man clearly resembles a real human, he also has an artistic (though not cartoon-like) appearance. Information and instructions from the Operator 24 to the user appear within a &#34;bubble&#34;, as though the information is being spoken by the telephone &#34;Operator.&#34; The user reacts to this information by pressing buttons which are clearly marked according their function. Allowing the Operator to communicate with the user in this manner provides a much easier, and more readily understandable, computer/user interface than is available with traditional graphical user interfaces. 
     Referring again to FIGS. 2 and 3A-3E, when a call is received, the user has three options: answer the call directly, instruct the Operator to take a message, or do nothing at all. If the user decides to answer 102 the call directly, the Operator takes 104 the phone offhook and launches 106 the TAM application 12. The Operator window 40 allows 108 the user to press either a &#34;Hang Up&#34; button 42 (FIG. 3C) when the call is complete or a &#34;Take a Message&#34; button 44 to allow the caller to leave a message. The &#34;Take a Message&#34; button 44 is useful, e.g., when the call is for someone other than the user. 
     If the user does not answer 102 the call but instructs 110 the Operator 24 take a message, the modem 14 in taken 112 offhook and the TAM application 12 is launched 114. The Operator window 40 then informs 116 the user that the caller is leaving a message and provides a &#34;Talk&#34; button 46 (FIG. 3D) which, if pressed, allows the user to interrupt the message and speak to the caller. 
     If the user does not answer 102 the call or instruct 104 the Operator 24 to take a message, the Operator 24 lets the phone ring until the caller hangs up or until a predetermined number of rings has been reached. When the maximum number of rings is reached, the Operator determines whether or not the caller can leave 120 a message or a fax. If not, the Operator ignores 122 the call. Otherwise, the Operator takes 112 the modem 14 offhook and launches 114 the TAM application 12, as if the user had instructed it to take a message. 
     Once the TAM application has been launched (whether the user answers the call or instructs the Operator to take a message is irrelevant), the Operator 24 starts a timer (preferably about 6 to 8 seconds in length), and a signal discriminator 48 in the Operator looks 124 for a fax carrier signal in the incoming call. If the discriminator 48 detects a fax carrier signal before the timer times out, and if the user has answered 126 the call or has instructed 128 the Operator to take a message, the TAM application 12 is stopped 130 and the fax application 18 is launched 132. If a fax signal is detected and the user has ignored the incoming call, the Operator determines 134 whether or not a fax can be accepted. If not, the TAM application 12 is stopped 136 and the call is terminated 138. Otherwise, the TAM application 12 is stopped 130 and the fax application 18 is launched 132. 
     After the fax application 18 is launched 132, the Operator 24 receives the incoming fax and places it into a fax mailbox 19. At the same time, the Operator window 40 informs 140 the user that a fax is being received. If the user wishes to terminate the fax, a &#34;Hang Up&#34; button 52 (FIG. 3E) can be pressed 142, in which case the Operator 24 will shut down 144 the fax application 18 and terminate 146 the call. If the button 52 is not pressed, the call is terminated 146 when the fax application 18 decides 148 to end the call, e.g., when the fax transmission is complete or when the hard disk 49 becomes full. 
     If no fax signal is detected 124 by the discriminator 48 and the user has answered the call, a telephone module 54 in the TAM application 12 routes the call to the user through the appropriate sound hardware 55, such as a sound card. Voice signals from the caller are transmitted to the user through a speaker 56 or headphones (not shown), and voice signals from the user are detected by a microphone 58. 
     The TAM application 12 carries an incoming call until the user presses 142 the &#34;Hang Up&#34; button 42, thereby shutting down 144 the TAM application 12 and terminating 146 the call, or until the user presses 158 the &#34;Take a Message&#34; button 44, thereby instructing 160 the TAM application to take a message. If the user chooses to take a message, the Operator window 40 provides 162 a &#34;Talk&#34; button 46 (FIG. 3D) which, if pressed, interrupts the message and allows the user to again talk to the caller. The application may also decide 148 on its own to terminate 146 the call, e.g., when the caller hangs up but the user does not press the &#34;Hang Up&#34; button 42. 
     If no fax signal is detected by the discriminator 48 and the user has instructed the Operator 24 to take a message, the call is routed to an answering machine module 60 in the TAM application 12. Upon receiving the call, the answering machine module 60 plays a greeting and then records the caller&#39;s message on the computer&#39;s hard disk 49. If the user presses 150 the &#34;Talk&#34; button 46 during the caller&#39;s message, the TAM application stops 152 the recorder 62 and allows 154 the user to talk to the caller. When this happens, the Operator window 40 displays 156 the &#34;Hang Up&#34; button 42 and the &#34;Take a Message&#34; button 44. The TAM application 12 may also decide 148 to stop the recorder and terminate 146 the call when, e.g., the caller hangs up or the hard disk 49 becomes full. 
     Referring also to FIGS. 4A and 4B, when the hard disk 49 is full, the TAM and fax applications are unable to receive incoming messages and faxes. To protect against this, the Operator 24 monitors at all times the storage space remaining on the hard disk 49. When the remaining space falls below a threshold level (determined by the user), the Operator window 40 provides a warning 63. The warning is flashed periodically as long as storage space remains below the threshold level or until the hard disk 49 is full. The window 40 also provides a help button 64 to help the user solve the storage problem. When the hard disk 49 is full or, in the alternative, falls below a second threshold value, the Operator window warns 65 (FIG. 4B) the user that messages and faxes can no longer be accepted. 
     Referring also to FIG. 5, in a default mode the Operator 24 waits for the user to press a &#34;Place a Call&#34; button 66 or a &#34;Send a Fax&#34; button 68 in the Operator window 40. (The user may also press an &#34;Options&#34; button 70 to configure the Operator and the TAM and fax applications, as described in detail below.) When the user decides to place a call, the Operator 24 invokes the TAM application or, if the application is already running, brings it to the foreground in its current state (e.g., iconized or restored). If the user chooses to send a fax, the fax application is likewise invoked and brought to the foreground. The Operator also places the fax application in a &#34;create fax&#34; mode (described above). 
     After the appropriate application is invoked, a serial port administrator 50 in the Operator 24 relinquishes control of the modem&#39;s serial port to the application. When the application is exited, control of the serial port is returned to the administrator 50. The administrator 50 may also temporarily relinquish control of the modem to applications unknown to the Operator. If the user attempts to invoke one of the modem-related applications while the modem is in use, the serial port administrator 50 informs the user that the modem is in use and tells which application is using it. As a result, the user is always informed when and why a selected application cannot be run. 
     The operation of the TAM application is dependent upon the hardware installed on the system. If the system has no microphone 58, the speaker phone is not supported, and only the answering machine will run. In this situation, the &#34;Place a Call&#34; button 66 in FIG. 5 becomes a &#34;Get Messages&#34; button, and the &#34;Answer the Phone&#34; button 41 and &#34;Talk&#34; button 46 in FIGS. 3B and 3D, respectively, are eliminated. Likewise, if the system has no speaker 56, neither the speakerphone nor the answering machine are supported, and the TAM application will not run at all. 
     Referring to FIGS. 5 and 6A-6E, selecting the &#34;Options&#34; button 70 in the default Operator window 40 opens an option menu 72 which allows the user to configure the Operator for operation of the telephone device, the answering machine device or the fax machine device. If the user selects the &#34;Telephone&#34; button 74, a &#34;Telephone Options&#34; window 76 is created. In this window, the user determines whether or not the phone should ring audibly, and if so, how loudly and in what manner: a simple beep which matches the cadence of the ring produced by the modem, or a sound from a .WAV file produced with each ring. 
     If the user selects the &#34;Answering Machine&#34; button 78, an &#34;Answering Machine Options&#34; window 80 appears. In this window, the user selects whether or not the answering machine should take massages when the user is away (or is ignoring the ringing phone). If so, the user sets the number of rings at which the answering machine is invoked. Two values may be set: one for when unplayed messages are stored in the recorder and another for when no messages are stored. The user may also set a maximum message length and determine whether or not a caller&#39;s message should be played over the speaker while it is recorded. The user also determines when (i.e., at what storage capacity remaining) the Operator warns the user that the disk is almost full, as well as when the Operator should stop accepting messages (i.e., the user can stop messages before the disk is completely full). 
     When the &#34;Fax Machine&#34; button 82 is selected, a &#34;Fax Options&#34; window 84 is opened, and the user configures the Operator for the transmission of faxes. In this window, the user selects a name for the fax machine, determines how long and how often the device should try to send a fax, and determines which editor should be used to create faxes. The user may also select an &#34;Advanced Options&#34; button 86, which opens an &#34;Advanced Fax Options&#34; window 88. This window allows the user to configure, e.g., fax banner settings and communication settings, such as minimum and maximum transmission &#34;baud&#34; rates. Additional detail in relation to the Operator is provided in the following functional specification and description. 
     Referring to FIG. 7, invoking the TAM application opens a telephone center window 200. This window provides a true-to-life telephone/answering machine image 202 which invokes the telephone and answering machine modules. To place a call, the user dials the desired number on the keypad 204 and presses the dial button 206. As the number is dialed, the number appears in a liquid crystal display bar (LCD bar) 207. The application may also cross-reference the number against the address book and display the name of the dialed party, if found, in the LCD bar 207. 
     When the dial button 206 is pressed, the TAM application enters an animation routine that shows the handset 208 lifting out of its cradle and out of view, as though the user has picked up the handset (FIG. 7B). At any time during a conversation, the user can increase or decrease the volume of the speaker by adjusting the slide switch 210. When the conversation is over, the user presses the &#34;Hang Up&#34; button 212 in the handset cradle, and the animation routine returns the handset to the cradle. 
     When the Operator notifies the user of an incoming call and the user chooses to answer it, the phone center window 200 is displayed in the foreground with the handset off the cradle. If Caller ID is available, the number of the calling party is displayed in the LCD bar. The application ma also cross-reference the number of the calling party to the address book and, if found, display the calling party&#39;s name in the LCD bar. 
     Referring also in FIGS. 8A and 8C, when the answering machine contains new messages, a light 214 blinks to notify the user. The name of the default mailbox (&#34;General&#34;) is displayed in the LCD bar 207 along with the number of new messages in that mailbox. To retrieve any new messages, the user presses the &#34;Mailboxes&#34; button 216, which causes the keypad 204 to be replaced with a list of mailboxes 218 (FIG. 8A). The user may take several actions on each mailbox by pressing the buttons 219 next to the mailbox list 218. 
     When the user selects a mailbox to view, a password may need to be entered. If the correct password is entered, a list of messages 220 (FIG. 8B) in the mailbox is provided, including the date and time each message was recorded. A message can be played by selecting it from the list, and the message can be discarded by pressing the &#34;Cancel&#34; button 222. 
     In addition to recording phone messages, the answering machine can also record memos created by the user. To record a memo, the user selects the appropriate mailbox by pressing the &#34;Next Mailbox&#34; button 224 (FIG. 7A) and the &#34;Memo&#34; button 226. The &#34;Next Mailbox&#34; button 224 is then replaced by a record button 228 (FIG. 8C), which the user presses to begin recording the memo. Then the memo is complete, the user presses a stop button 230. The memo is then treated as any other message by the application. 
     Referring to FIGS. 9A-9D, the fax application opens a fax window 240 containing a graphical image 242 resembling an ordinary fax machine. The fax image 242 displays an &#34;In Box&#34; 244 containing information about incoming faxes, and an &#34;Out Box&#34; 246 containing information about outgoing faxes. The fax image 242 also contains buttons 248 which allow the user to manipulate (e.g., view, forward, delete) existing faxes or create new ones. 
     When the user decides to create a new fax, the fax application displays a fax creation checklist 250 (FIG. 9B) in the fax window 240. The checklist 250 allows the user to easily see which tasks are required and which tasks are optional when sending faxes. To perform a task, the user selects it from the checklist, and the fax application moves to the appropriate location (e.g., text editor, graphics editor, menu) to perform the task. Required tasks include entering text and choosing recipients. Optional tasks include choosing a cover sheet, adding graphics, and scheduling delivery of the fax. 
     When the user decides to forward a received fax, a similar checklist 252 is displayed (FIG. 9C). This checklist also includes required tasks (e.g., selection of recipients) and optional tasks (e.g., adding comments, modifying the fax, choosing a cover sheet, and scheduling delivery). When the user decides to view a received fax, the fax is displayed in a fax view window 254 (FIG. 9D). Additional detail in relation to the TAM and fax applications is provided in the following functional specifications and descriptions. 
     Referring to FIGS. 10A-10B, selection of the Rolodex icon 20 (FIG. 1) invokes an address book application 22. When this application is running, an address book window 260 is opened. The address book window 260 displays a graphic image 262 representing a card file which contains address and phone number cards, indexed alphabetically. To view a card, the user selects from a row of letter tabs 264 the letter corresponding to the name of the addressee. A list of names 266 beginning with the selected letter is then displayed, and the user can select an addressee from the list 266. If the user presses the &#34;Dial&#34; button 274, the TAM application is launched or brought to the foreground, and the phone number associated with the addressee is automatically dialed. 
     The address book also maintains a speed dial list 268, which is used to store the names and numbers of addresses frequently contacted by the user. To access the list, the user selects a &#34;Speed Dial List&#34; tab 270 in the window. Once the desired name is found, the user presses the &#34;Dial&#34; button 274 to automatically invoke the TAM application and dial the number. the address book may also be used to cross-reference caller ID information with the caller&#39;s name for incoming phone calls, as discussed above. 
     Referring to FIGS. 11A-11D, selection of the sound system icon 26 (FIG. 1) invokes a multi-media application 28, which opens a sound system window 280. The sound system window 280 displays a sound system graphic 282, which resembles a stereo rack. The sound system graphic 282 contains graphic images of a MIDI file player and recorder 284, a .WAV file player and recorder 286, a CD-ROM player 288 and a mixer 290, the functions of which are well known. 
     For the CD-ROM player 288, the sound system application maintains a collection 292 of frequently used CDs, including both music (and photo) CDs 294 and program CDs 296. The CDs in the collection are displayed in a graphic resembling an ordinary CD cabinet. The music CDs 294 and program CDs 296 are displayed in separate stacks for easy identification by the user. 
     The collection 292 contains user-provided information about each CD. When a CD is inserted into the CD player, the CD is identified, and if it belongs to the collection, the collection information is retrieved. For music CDs, the collection information 300 indicates which tracks should be played when the CD is inserted: all tracks, or only certain tracks (&#34;favorite&#34; tracks) 302 selected by the user. For program CDs, the collection information 304 provides instructions for the automatic execution of programs on the CD. 
     Referring to FIG. 12, when a program CD is inserted 340 for the first time, it is installed by Windows. Once the program is installed, an executable command line must be provided to execute the program. Because novice users are usually unfamiliar with installation and command lines, the sound system application &#34;snoops&#34; the command line information from Windows during the installation process. Each program CD contains an installation or setup routine which is run 342 to enable Windows to locate and install 344 the executable program file. As Windows retrieves 346 the program execution command line from the CD, the sound system application seizes (or &#34;snoops&#34;) 348 the command line and stores 350 it as collection information 304 for the program CD. Then each time the Cd is inserted, the command line is retrieved 352 from the collection information 304, and the program is automatically executed 354 without user intervention. 
     Referring to FIGS. 13A-13B, the electronic component interface provides a graphical remote control 310, which, when a program is running in the foreground, allows the user to manipulate the applications running in the background without bringing them to the foreground. The remote control 310 also launches and brings to the foreground applications which must be viewed to be manipulated by the user. The remote control, like the other graphical images, very closely resembles a real device, yet its appearance is artisticly enhanced by the presence of miniature icons, each of which allows the user to control one of the applications. 
     On the remote control 310, a telephone/answering machine icon 312 includes a light 314 which blinks when the answering machine contains a new message. By selecting the icon, the user prepares the remote control 310 to control the TAM application. When the play icon 316 is pressed, the first message in the &#34;General&#34; mailbox is played. Other icons 318 allow the user to skip to the next message, skip to the previous message, fast forward or reverse within a message, or stop playing messages. All of this is done without the user entering the TAM window. A CD icon 320 allows the user to similarly control the stereo system. 
     A fax icon 322 contains a light 324 which blinks when a fax has been received by the fax application. Unlike the TAM icon 312 and CD icon 320, however, the fax icon 322 launches and restores the fax application, because the user must see the fax window in order to manipulate incoming faxes. Likewise, an address book icon 326 launches and restores the address book application. 
     A TV icon 328 allows the user to control a television tuner with the system remote control 310. When an &#34;Adjust&#34; icon 332 is selected, a TV remote 330 pops up next to the remote control 310. The TV remote 330 contains icons which adjust the features of the video window, such as color, brightness, or window frame style. The function of each icon on both the system remote 310 and the TV remote 330 is described below. 
     General features of the inventive architecture include: 
     Alerts the user when the phone rings--both visually and audibly. 
     Lets the user choose whether to take the call or take a message. 
     Displays CallerID data (where supported). 
     Lets the user set program options. 
     Lets the user &#34;hear&#34; the phone ring by matching the Telco cadence or optionally playing a .WAV file for each ring. 
     Provides a ring timer that automatically answers and routes a call after a number of rings (two values: one if the mailbox contains unread voicemail; another if it does not). 
     Lets the user choose whether to accept unsolicited FAXes or let callers leave voicemail. 
     In short, the Operator is a remote control for the TAM and FAX applications. It has two jobs: first, it alerts the user to an incoming call and lets them deal with it. Second, it launches the TAM and FAX application when the user wants to initiate a call. We will cover both scenarios separately. 
     Ideally, the Operator is launched from Windows startup and is always running. When restored, it runs in a standard dialog box frame as shown in Table 1. Only one instance is allowed; if the user tries to run a second copy, the copy simply restores and shows the initial instance and exits. 
     
                       TABLE 1______________________________________Control           Yes    No______________________________________Restore           .check mark.                    .check mark.Move              .check mark.                    .check mark.Minimize          .check mark.                    .check mark.Maximize          .check mark.                    .check mark.Close             .check mark.                    .check mark.Switch To . . .   .check mark.                    .check mark.______________________________________ 
    
     Of course, users can place a call or send a FAX via the TAM and FAX applications. They also can &#34;jump&#34; to those applications via the Operator screen. When there is NO incoming call, the Operator&#39;s window looks like FIG. 5F. 
     The help bubble in FIG. 5F speaks to the user in simple, concise sentences; in this case, simply by asking &#34;What would you like to do?&#34; The user may: 
     Go elsewhere via standard Windows navigation 
     minimize the Operator via standard indows controls. 
     Press Place a Call which invokes/restores the TAM application, brings it to foreground, and displays the main screen. 
     Press Send a FAX which invokes the FAX application and pseudo-presses the Create FAX button to launch the user directly into FAX creation. 
     Press Options to invoke the Operator&#39;s options dialog box. 
     Note that the TAM application will NOT provide its speakerphone functionality unless the PC or monitor has integrated speakers and a microphone (see the TAM and Setup specifications for more information). With external speakers, only the Answering Machine functionality is available. If no speakers are installed, the application cannot run. The ECI Setup utility will report the customer&#39;s speaker/microphone configuration. Obviously the configuration determines how the Operator&#39;s screens and buttons are presented. The screen shown in FIG. 5F assumes fully integrated speakers and microphone. If speakers and microphones are not integrated, the Place a Call button is reworded to say Get Messages and launches TAM with only its Answering Machine enabled. If speakers are not installed, the Place a Call button is removed (since you must have speakers to hear anything|). 
     When the telephone rings, the application will move immediately to foreground in its current iconized or restored state. Note that when iconized, the user can simply double click the icon to restore the window. 
     Bombay will notify the application of each ring and show the cadence. In the Options dialog box, the user can choose to &#34;hear&#34; the phone ring (default), matching the Telco cadence, or play a .WAV file for each ring. The Operator will count rings in preparation for taking the call automatically. 
     When the Operator is restored, its window looks like FIG. 3B. The bubble help tells the user who is calling if CallerID information is available. If not, the middle line is omitted and the two remaining lines are displayed in the center of the bubble, as shown in FIG. 6H. 
     There are several possibilities while the phone is ringing. The user can: 
     Select Answer the Phone. This tells the Operator you want to talk to the caller. By default, it invokes the TAM and commands it to route audio in/out via the PC&#39;s speakers and microphone. 
     Select Take a Message. This tells the Operator you want to let the caller leave a message. 
     do nothing (minimize, go elsewhere, or otherwise let the ring timer expire). This tells the Operator you want to let the caller leave a message. 
     The caller can simply hang up. In this case, the Operator returns to its initial state (restored or minimized) and shows the application that previously was in foreground. 
     Exactly how and when the Operator routes an incoming call is based on several factors: 
     Whether the owner will accept unsolicited FAXes (set in Options screen). 
     Whether the caller is allowed to leave a message (set in Options screen). 
     The number of rings to count before answering automatically (set in Options screen). 
     Whether the caller is a FAX machine or a real person. 
     Whether the user has installed a microphone. 
     As mentioned before, how the Operator handles a call depends on the customer&#39;s speaker/microphone arrangement. The screen shown in FIG. 9F is used when speakers/microphones are fully integrated. If speakers are not integrated, Answer the Phone is removed and the Operator will only answer the phone if Take a Message is pressed or if the ring count expires (routed to answering machine or FAX). If no speakers are installed, both buttons are removed and the Operator answers the phone only if the ring count expires (routes call only to FAX, if FAX). 
     One of the Operator&#39;s most useful traits is its ability to discern incoming FAX calls while also mimicking an answering machine. By default, all calls are routed to the TAM application. However, when the phone goes offhook, the Operator must start a short countdown timer: 8 to 10 seconds is probably sufficient; and then launch the TAM. If FAX carrier is heard before the timer expires, the TAM must be told to &#34;shutdown&#34; and the call is rerouted to the FAX application without user intervention. This must be done quickly to prevent the calling FAX machine from timing out. 
     The chart of FIG. 9G shows the sequence of events, beginning with the first ring. As the diagram shows, the Operator always answers the phone and routes the call to the TAM application (in either voice or answering machine mode). If, within some reasonable time (6-8 seconds), FAX carrier is detected, the Operator must tell the TAM to relinquish control of the line, launch the FAX application, and command it to receive the FAX. When control is revoked from the TAM application, any greeting playback or message recording already in progress is stopped. Any partially recorded message is discarded. 
     The following rules apply when launching the FAX and TAM applications: 
     When placing a call or sending a FAX: 
     If the application is already running, simply bring it to foreground and show Restored. 
     If the application is NOT already running, launch it, bring it to foreground, and show Restored. 
     When taking a call: 
     If the application is already running, simply bring it to foreground in its current state (Restored or Minimized). 
     If the application is NOT already running, invoke it as iconic and bring it to foreground. 
     This method lets the user decide &#34;how much&#34; of each application they want to see. Since the Operator is something of a Remote Control for the telephony applications, it can handle most routine calls. Placing calls and sending FAXes requires the respective applications--therefore they are shown Restored. Taking calls can be handled, minimally, from the Operator screen. If they want the &#34;real&#34; application, they can just double-click its icon. 
     What happens to the icons and focus after the call completes? Ideally, you would want the software to &#34;get out of the way&#34; and let the user keep working. However, one could also argue that the software should not second-guess the user--instead, let them minimize/hide the applications to suit themselves. Compaq&#39;s Human Factors group will be testing user preference in this area. But note that a final decision will probably NOT be made until the working software (early Beta) is tested. 
     When handling an incoming call, the Operator&#39;s screen changes depending on the type of call: voice, FAX, or voicemail. During a pure voice call (talking to the caller), the screen looks like FIG. 3C. Hang Up terminates the call immediately. Take a Message reroutes the call to the Answering Machine. It is useful, for example, when the caller wants to leave a message for someone who is away. The slider adjusts the audio volume. When receiving a FAX, the Operator screen looks like FIG. 3E. Again, Hang Up terminates the call immediately and discards any partial FAX received. Finally, the screen looks like FIG. 3D when someone is leaving a voicemail. In this mode, the call is routed to the Answering Machine but, presumably, someone is listening (screening the call). The slider switch can be used to control the volume. Pressing Talk stops greeting playback/message recording and treats the call as if the user had pressed Answer the Phone. Any partially recorded message is discarded. 
     The user may press the Options button to set program options whenever the Operator is not taking a call (see FIG. 5F). The Options screen looks like FIG. 6A. The three buttons let the user set options for the telephone, answering machine, and FAX. As can be seen in FIGS. 6B, 6C, 6G, 6H and FIGS. 6D and 6I, the options affect not only their respective devices, but the Operator&#39;s behavior as well. The options are simply organized this way for coherence. 
     Unfortunately, not all FAX options can fit within the ECI metaphor. Some topics, such as modem settings and cover page information, are somewhat confusing. To solve this, we will (A) assume reasonable defaults (shown in FIG. 6E), (B) &#34;hide&#34; expert settings under the FAX option screen&#39;s Advanced Options button, and (C) rely on thorough online help to guide a wayward novice in and out of this area. The screen looks like FIG. 6E, where the Save Settings and Cancel buttons return to the previous screen. 
     Windows allows only one task at a time to use a serial port. If a port is in use and another program asks for it, Windows displays an offensive, somewhat cryptic message trying to report the collision. One of ECI&#39;s goals is to help insulate the user from this message. 
     This code could probably be part of the Operator since it must answer a ringing phone anyway. Rather than respect FutureSoft&#39;s existing driver, we will simply list the functional requirements we need: 
     1. Cooperating telephone applications will request use of the serial port via a messaging API. If access cannot be granted, a MessageBox() will appear telling which application has control of the port. If granted, the Operator passes the serial port handle to the requesting application. Similarly, the application must relinquish the handle when it is finished using it. 
     2. For non-ECI compliant applications, a separate &#34;loader&#34; applet can ask CAPI to relinquish a serial port, and provide the new owner&#39;s window handle. CAPI, in turn, can reassert ownership of the port when the comm application completes. 
     As you can imagine, the answering machine and FAX machine are useless if the PC&#39;s hard drive becomes full. To help prevent the problem, the Operator will occasionally check the PC&#39;s hard drive to make sure sufficient disk space exists. It will work off of two thresholds set in the Options screen. The first threshold decides the point at which the Operator starts to warn of the impending problem (e.g., when 10% or less free space remains). When the threshold is reached, the Operator displays a panel like FIG. 4A. This panel alternates with the &#34;What do you want to do/place a call/send a FAX&#34; panel--is visible for a predetermined amount of time and then the previous panel is restored. (The interval should be set in the INI file in the format. For example; WARN=aaa,bbb where aaa is the number of seconds the warning panel is visible and bbb is the number of seconds before the warning is shown again. Default should be something reasonable, such as WARN=10,20.) We also need to alert the user with a mild beep--nothing so obvious that it becomes too bothersome. The user can click on the Help button to receive a polite description of the painfully obvious--disk space is required in order to record answering machine messages and receive FAXes. If they ignore the warning and eventually reach the second threshold, the panel of FIG. 4B appears. 
     Again, this panel alternates with the &#34;What do you want to do/place a call/send a FAX&#34; panel--same time interval for alternating the screens, and the same warning tone. As before, the user can click the Help icon to get hints on how to free disk space by deleting unwanted files. 
     At this point, the Operator should: 
     Refuse to accept incoming FAXes. 
     Refuse to dispatch calls to the answering machine. 
     Gray-out the Take a Message button in all panels. 
     As disk space is released, the Operator should revert to its &#34;first threshold warning&#34;, as appropriate, and finally to its normal operation. 
     In order for programs to locate ECI applications (whether they are running), each application must have a static Windows Class name. In doing so, programs can simply use FindWindow() to locate a given ECI application. See Table 2. Note that these class names are NOT translated. 
     
                       TABLE 2______________________________________ECI Application      Class Name______________________________________Operator             Compaq OperatorTAM                  Compaq TAMFAX                  Compaq FAXMultimedia Sound System                Compaq MMediaSSCard File            Compaq CardFile______________________________________ 
    
     All hardware configuration information, serial port selection, etc. will be recorded in Plug and Play BIOS. Given the hardware dependency of this project, the software will refuse to run unless the conditions in Table 3 are met. These conditions are in addition to any file, DLL, driver, etc. dependencies the software may have. If any test fails, the software will produce an applicable error message in a standard MessageBox() and then exit. 
     
                       TABLE 3______________________________________Condition              Application______________________________________Running on a Compaq PC AllWindows version 3.1    AllBombay modem/TAM audio driver                  FAX.TAMpresentESS Audio Driver/hardware present                  TAM.Media RackSpeaker(s) present     TAM.Media Rack______________________________________ 
    
     In order to coordinate access to the ESS audio hardware, all applications must use a similar method for controlling their audio settings. We have tentatively chosen Microsoft&#39;s MSMIXMGR.DLL from Windows Sound System 2.0. 
     The TAM application manages the voice portion of the Bombay modem and also implements voicemail (the answering machine appliance). This paper describes the software&#39;s functional characteristics. The actual technical information needed to implement the code may be found in several sources: 
     The Bombay Modem Functional Specification (Compaq). 
     The Bombay TAM Audio Driver Functional Specification (Compaq). 
     Windows Multimedia Programmer&#39;s Guide (Microsoft). 
     Windows Multimedia Programmer&#39;s Reference (Microsoft). 
     Despite its fairly straightforward appearance, this application may be difficult since it uses several system components at once: the call discriminator/serial port arbitrator, the sound card via Windows MCI, the Bombay audio DSP via Windows MCI, and the actual Bombay modem itself. The chart of FIG. 9E shows the relationship between the components. Essentially both the ESS audio chip and the Bombay TAM DSP will be driven via Windows&#39; MCI WAV series. By opening the appropriate device via Windows MCI services, the application can direct output to, or receive input from either the ESS or Bombay. The ESS chip manages the PC&#39;s speakers (2-speakers, stereo) and built-in microphone. Bombay TAM DSP provides access only to the handset speaker and the microphone and to the local Telco wire service. 
     While TAM&#39;s restored window looks like FIG. 9F, the application runs in a traditional Windows dialog box and supports the controls shown in Table 4. 
     
                       TABLE 4______________________________________Control           Yes    No______________________________________Restore           .check mark.Move              .check mark.Size                     .check mark.Minimize          .check mark.Maximize                 .check mark.Close             .check mark.Switch To         .check mark.______________________________________ 
    
     The graphic always appears center screen and can be moved or iconized (but not sized). It can be viewed from the Windows shell, from the ECI shell, or via the ECI Address Book application. Note that when the Address Book launches the TAM application, it always provides a telephone number to dial. Only one instance of the TAM application may be running at a time; however, additional instances may run long enough to tell the first instance to dial the number. From this screen, the user can take or place calls, consult the Address Book, listen to messages, record memos to other family members, or access other features via the Mailboxes button. We will cover each topic individually. 
     To place a call, the user simply provides a phone number and presses the Dial button. Users may choose dial digits by: 
     Clicking digits on the GUI&#39;s phone pad: Each digit appears in the LCD status bar. When the user presses Dial, the modem goes offhook and the number is dialed. The user presses Clear to erase the bar and start over. 
     Pressing numeric keys on the keyboard: Each digit appears in the LCD status bar. When the user presses Dial, the modem goes offhook and the number is dialed. The user presses Clear to erase the bar and start over. 
     Lifting the handset and dialing the complete number: Lifting the physicalhandset and pressing buttons will, of course, introduce dialtone and digits will be dialed as keys are pressed. When the receiver goes offhook, the application will erase any numbers already in the LCD status bar and begin echoing keys as they are pressed (by detecting their DTMF tones). 
     Note that we cannot support only numeric characters in the phone number string| Some users will, no doubt, want to hook into a switch or centrex where alpha characters must be used to select lines, features, etc. Additionally, the user can dial from the Address Book by clicking the button showing the Address Book icon. Special note, we must be able to send DTMF from the keyboard, keypad graphic, or handset after connect to support dialing-up online services. (User must be able to tap on the GUI keypad to send DTMF tones after a connect.) When the user finally presses Dial, the graphic changes to look like FIG. 7B. We will provide an animation sequence showing the handset lift offhook when placing a call. As long as the phone is offhook, the controls are in the state shown in Table 5. The LCD bar shows information about the number being called. At a minimum, it shows the number dialed. At best, it should show the name of the called party. The name is available immediately when the user dials from the Address Book. When dialing from the keypad or handset, however, the application will have to look up the information in the Address Book once the Dial button is pressed. The user can terminate the call via the Hang Up button in either this application or in the Operator, at which time the window reverts to the &#34;General&#34; mailbox screen. 
     
                       TABLE 5______________________________________Control             State______________________________________All recording controls and pushbuttons               Grayed out -- inactiveClear, Dial/Answer and Address Book               Grayed out - - inactivebuttonsKeypad              Visible but inactiveHelp                Displays Help Screen (TBD)Speaker Volume      Controls speaker volumeHang up             Terminates the callMute                Mutes the microphoneWindows Close System Menu Command               Grayed out - - inactive______________________________________ 
    
     When the Operator tells TAM to answer the phone and talk, the window moves to foreground in its current state (iconic or restored). The restored graphic is the same as the one shown in FIG. 7B. The Operator may, at some point, send two levels of CallerID information: (1) the basic information taken from the wire; and (2) reconciled information derived by looking up the number in the Address Book. In either case, the information is displayed in the LCD bar. Other than that difference, all the controls work the same as for placing a call. Hangup hangs up the phone, the volume controls adjust speaker and microphone volume, etc. 
     The graphic for the Take a Message function looks just like FIGS. 7A and 7B. It shows the main screen with the phone offhook and any available CallerID information shown in the LCD window. The difference, however, is that the TAM lets the user leave a voicemail message. Both sides of the conversation (the recordings and the caller&#39;s audio) may or may not be heard based on an option set in the Operator. 
     TAM supports two modes at this point: Voicemail mode and Owner mode. In Owner mode, the caller (after providing the password) can change greetings, listen to voicemail, change mailboxes, etc. We will cover that topic. For now, we will discuss only Voicemail mode. TAM supports a level mailbox structure for recording voicemail. It works by always declaring a mailbox as &#34;ACTIVE&#34;--that is, the active one will receive any voicemail left by the caller. By default, mailbox 0 (General) is active while voicemail is active. Table 6 describes the TAM&#39;s behavior while receiving voicemail. 
     
                       TABLE 6______________________________________                           DTMEStep Action                     Command______________________________________1.   Make mailbox 0 active2.   Begin playing active mailbox&#39;s greeting or WAVfile 8 if none defined3.   Honor DTMF command to stop greeting playback. If                           #heard, stop playback and go to step 54.   Wait for playback to finish5.   Play RECORD TONE to signal start of recording.Begin recording voicemail into active mailbox6.   Honor DTMF command to change mailboxes. If heard,                           0-9go to step 137.   Honor DTMF command to stop recording. If heard,go to step 178.   Honor DTMF command to enter Owner mode. Ignore                           *0nnnn-sequences that timeout. If heard, go to step 20                           *9nnnn9.   When recording complete, close file and add toactive mailbox.10.  Restore graphic, hang phone up, etc.11.  ********** END OF CALL **********13.  Is specified mailbox valid?14.  YES: delete recording in progress and go to step 115.  NO: delete recording in progress and go to step 217.  Stop greeting playback18.  Go to step 520.  Valid mailbox requested?21.  NO: delete recording in progress and go to step 222.  Valid password?23.  NO: delete recording in progress and go to step 224.  Delete recording in progress25.  Enter Owner Mode (see Remote Access discussionlater in this document)______________________________________ 
    
     The software supports ten voicemail boxes. Table 7 describes their attributes. Mailboxes are numbered 0 through 9. The numbers are significant ONLY when dealing with the DTMF commands; press 1 to leave a message for Suzy, 2 for Bob, and 3 for Leroy. Their three mailbox numbers are 1, 2, and 3, respectively. Mailbox 0 is always the default mailbox. Its default name is General and cannot be changed (no provision in the software). The user can create up to nine additional mailboxes. All mailboxes have an associated greeting file that plays when the mailbox is opened (when taking a phone call). Boxes 1-9 can be password protected to prevent other family members from listening to their messages. Mailbox 0 also has a password, but it is only used when listening to messages via DTMF remote access to prevent tampering. 
     
                       TABLE 7______________________________________Mailbox Default    Has      Password Protected?                                Can LeaveNumber Name       Greeting?                     Local Remote?                                  Memo?______________________________________0     General    Yes      No    Yes    Yes1-9   None (user Yes      No    Yes    Yes defined)______________________________________ 
    
     As you saw earlier, the main screen displays an LCD Status Bar, a small blinking dot, and a series of buttons. The dot is visible and blinking ONLY when there are unread (unlisted?) messages in one of the mailboxes. By default, the General mailbox status is displayed. As the graphic shows, it contains two new messages. This format is always used to report the mailbox status: 
     mailboxName: # NEW 
     For example, they might say: 
     Will&#39;s Mailbox: 2 NEW 
     Mom&#39;s Stuff: 0 NEW 
     The Next Mailbox button cycles to the next defined mailbox. If no others are defined, this button is invisible. Note that new messages (those not yet listened to) stay new until you listen to them. Further, new messages stay new until you leave the mailbox. Once they lose their new status, you must go to the Mailboxes screen if you want to access them again. More about that later. 
     The buttons under the LCD display manipulate the messages in the named mailbox. If there are no new messages in a mailbox, the buttons are grayed out. Otherwise, Table 8 describes the relevant button actions. 
     
                       TABLE 8______________________________________Button   Action______________________________________    Plays all new messages back to back, with 3 seconds    of silence in between▪    Plays the previous new message from the beginning▪    Stops playback▪    Begins playing the next new message from the    beginningDelete   Deletes the message currently playing. This button    is grayed out if no rnessage is playing. The button    is visible during message playback and for 3 seconds    of silence immediately after.______________________________________ 
    
     All mailboxes may be password protected. When the user presses one of these buttons in a protected mailbox (except General), they are prompted to enter the password as shown in FIG. 9F(a). If they provide the wrong password, they are notified via the MessageBox() shown in FIG. 9F(b) and the button press is ignored. This sequence repeats each time they press one of the aforementioned buttons. Once they enter the correct password, they are not prompted again as long as they remain in the mailbox. Once they leave the mailbox, they must satisfy any password imposed on the new mailbox. Note that passwords are optional--some mailboxes may be protected, while others are not. The General mailbox has a password that is used for remote access only. We never prompt for a password to access the General mailbox from the PC keyboard. 
     Message playback is done via the PC speakers. Playing messages through the handset is not supported. To promote security, if the application is idle for 30 seconds, the screen returns to the General mailbox. (This feature needs to be implemented but inactive by default. Activate it via an INI file switch.) The actual timeout (seconds) should be configurable in an INI file but not in the GUI. The screen also has the buttons shown in FIG. 9G. 
     Memos are useful reminders to other family members. For example, Mom could remind Dad to stop for milk and bread on the way home from work. To leave one, jus press a &#34;Next Mailbox&#34; (FIG. 9H(a)) button to move to the desired mailbox. Then press the &#34;Memo&#34; (FIG. 9H(b)) button (no password is required). A screen like FIG. 8C appears and is superimposed on the main screen with the handset visible. The mailbox name is displayed at the top of the screen. The object is to leave a voicemail just as if it had been taken from the phone line, except the words &#34;Memo&#34; will replace the data ordinarily left by CallerID. The waveform drawing at the top would be nice, but not required. Optionally, an LCD bar similar to the VU meter on home cassette recorders might be used. The object is to give the user some entertainment/feedback while the memo is recorded. The buttons like those shown in FIG. 9I are active. When the user presses the Record button (), the handset lifts off the cradle (as it does when taking a call) and exposes the Hang Up and Mute buttons and the Mic Volume control. The Mute button is grayed out and inactive--the others work as intended. The PC&#39;s built-in microphone is used for input and the PC&#39;s speakers are used for playback. We do not support playback or recording via the handset. Recording or playback halts if the handset is lifted. If recording, the partial message is deleted. 
     Pressing the Mailboxes button on the main screen brings you to the Mailbox Maintenance level. Here you can move among the mailboxes, read, move, and delete messages, create greetings, and assign passwords. The graphic looks like FIG. 8A. On entry, the LCD bar is empty and the listbox shows all the defined mailboxes. Note that both the mailbox name and number are shown. The controls like those shown in FIG. 9N are used. As you scroll the listbox, each highlighted mailbox name, in turn, is displayed in the LCD bar and the total number of messages in each box is displayed in the small box on the right. In FIG. 9J, YES in the &#34;Prompts for Password&#34; column means the software prompts for the mailbox password before allowing this function. The password is requested only once. If it fails, the last accessed mailbox remains active. If successful, the new mailbox becomes active and the user is not prompted again until they select another mailbox. As before, to promote security, if the application is idle for 30 seconds, the screen returns to the General mailbox. 
     Recording a greeting is almost exactly like leaving a memo. The greeting is applied to the selected mailbox. A screen like FIG. 9K is used. Again, the mailbox name is displayed at the top of the dialog box; the same buttons are used, and work exactly as they did for Memos. The Save button saves the current greeting; the Cancel button returns to the previous screen, leaving the existing greeting intact. The Find File button invokes a standard Windows Find File dialog box that they can use to locate a .WAV file to use as the greeting. The selected file is copied into the pseudo-greeting file for this mailbox--do not simply point to the .WAV file. 
     As before, the waveform drawing at the top would be nice, but is not required. Optionally, an LED bar similar to the VU meter on home cassette recorders might be used. The object is to give the user some entertainment/feedback while the memo is recorded. 
     Once in a mailbox, you may set or change its password. Clicking the Password invokes a dialog box like FIG. 9L. The user may now type a 4-byte numeric password for the mailbox. Two boxes are provided--type it once, then type the same digits again to verify the original. Standard OK and Cancel buttons are used to exit this dialog box; Cancel means return and do not change the password, and OK means save and apply the password. When they press OK, we must insure that the two editboxes contain the same value. If not, a MessageBox() like FIG. 9M is displayed. When they press OK, both editboxes are cleared and the user must type both values again. Note that we said passwords must be exactly four numeric characters. If a non-numeric character is typed or if a password is not exactly four bytes long, the dialog box like FIG. 9N is displayed. When they press OK, both editboxes are cleared and the user must type both values again. 
     Users can add a new mailbox simply by clicking Add Mailbox. A dialog box like FIG. 9O appears. They simply type the new mailbox name and press OK. The new mailbox is assigned the next available sequential number. No greeting file or password is assigned--the user may perform those actions via the buttons on the Mailbox Maintenance screen. Note that the Add Mailbox button is invisible if all ten mailboxes are defined. 
     To delete the selected mailbox, simply click Delete Mailbox. A confirmation dialog box like FIG. 9P is displayed. The user may confirm by pressing OK or abort by selecting Cancel. Note: when you delete a mailbox, you also implicitly delete all the messages it contains. Note that this will leave &#34;holes&#34; in the mailbox numbering. If you have boxes 3, 4, and 5 and delete 4, boxes 3 and 5 remain. We must do this in order in insure that the remote DTMF commands still match the instructions in mailbox greetings. 
     A user can access messages by highlighting a mailbox name (in the mailbox screen) and pressing the Messages button, as shown in FIG. 8B. Initially the LCD bar is blank. Messages are shown in the listbox; the small &#34;letter&#34; icon to the left of some means they are NEW (unlistened). From here, the user can select one or more messages and do what is shown in FIG. 9Q. 
     Where CallerID is not available, a message description will contain only the timestamp when it was recorded. Memos will simply say &#34;Memo&#34;. This button lets the user enter a description for the selected message. A dialog box like FIG. 9R is used for each selected message. The current message description appears at the top of the box followed by instructions to enter a short description. The user may type a new description in the editbox--it is not scrollable. When the user presses OK, the message description is updated as follows: 
     2/22/94 11:01 &lt;USER INPUT&gt; 
     Note that the timestamp cannot be edited. If the user selects Cancel, the message description is not changed. 
     Users can move one or more messages to another mailbox by selecting them and pressing Move. A dialog box like FIG. 9S appears. Mailbox names appear in the scrollable listbox. The user can select a mailbox and press OK or double-click a mailbox to move them. When the operation is complete, they are returned to the Messages screen. Cancel cancels the operation and no files are moved. 
     Earlier we talked about someone calling in to leave voicemail. We also said that certain DTMF commands (*Onnnn*9nnnn) let you enter Owner Mode. This mode lets you play back voicemail and do other maintenance chores. The graphic for this function looks just like the one used for voicemail. It shows the main screen with the phone offhook and any available CallerID information shown in the LCD window. Both sides of the conversation (the recordings and the caller&#39;s audio) may or may not be heard based on an option set in the Operator. Table 9 describes the TAM&#39;s behavior while in Owner Mode: 
     
                       TABLE 9______________________________________                           DTMFStep Action                     Command______________________________________1.   Active mailbox was set by previous DTMFcommand (see step 20 in previous state table)Play WAV file 9 or 10 as appropriate2.   Is disk space within preset thresholds(Operator Option)?YES: Play WAV file 3 or 4 as appropriate3.   Honor DTMF command to stop playback. If                           #heard, go to step 54.   Play WAV files 11, 12, 14, 15, 165.   Honor DTMF command to change Owner mailbox.                           *0nnnn-Ignore sequences that timeout. If heard, go                           *9nnnnto step 176    Honor DTMF command to record a new greeting                           2for active mailbox. If heard, go to step 247.   Honor DTMF command to pay current greeting for                           4active mailbox. If heard, go to step 248.   Honor DTMF command to play new messages in                           6active mailbox. If heard, go to step 289.   After ? seconds of silence, or if caller hangsup, hang up, reset graphics, etc.10.  * * * * * * * * * * END OF CALL * * * * * * * * * *12.  Honor DTMF command to stop recording. If                           #heard, go to step 1413.  Play WAV file 5.Begin recording greeting for active mailbox14.  When recording complete, close and save file;update pointers, etc.15.  Go to step 217.  Valid mailbox requested?18.  NO: play WAV file 1 and go to step 319.  Valid password?20.  NO: play WAV file 2 and go to step 321.  Specified mailbox becomes active22.  GO to step 324.  Honor DTMF command to stop playback. If                           #heard, stop playback and go to step 325.  Begin playing greeting for active mailbox26.  When complete, go to step 328.  Honor DTMF command to stop playback. If                           #heard, go to step 3029.  Play first new (unlisted) message30.  Play WAV files 11, 12, 13, 14, 15, 16, 1731.  Honor DTMF command to delete last message                           3played. If heard, go to step 4232.  Honor DTMF command to play next new message in                           6active mailbox. If heard, go to step 39.Honor DTMF command to play message again. If                           7heard, go to step 4533.  Honor DTMF command to change Owner mailbox.                           *0nnnn-ignore sequences that timeout. If heard, go                           *9nnnnto step 1734.  Honor DTMF command to record a new greeting                           2for active mailbox. If heard, go to step 1235.  Honor DTMF command to play current greeting                           4for active mailbox. If heard, go to step 2436.  After ? seconds of silence, or if caller hangsup, hang up, reset graphics, etc.37.  * * * * * * * * * * END OF CALL * * * * * * * * * *39.  Remove NEW status for last mesasge played40.  More messages?YES: Go to step 28NO: Play WAV file 9 and go to step 242.  Delete last message played43.  Play WAV file 744.  Go to step 345.  Play last message again______________________________________ 
    
     When in Owner Mode, WAV files are played across the phone line to help the user navigate and to report system status. The messages shown in Table 10 have been identified. In some cases (specifically steps 4 and 30), several WAV files must be played back to back in order to present the entire range of choices. 
     
                       TABLE 10______________________________________WAVFile    Meaning          Sentence______________________________________1       User tried to enter an                    &#34;That mailbox number is   invalid mailbox  invalid&#34;2       Incorrect password given                    &#34;Password incorrect - -   for mailbox access                    access denied&#34;3       First disk space threshold                    &#34;Your hard disk in nearly   has been reached (see                    full&#34;   Operator Options dialog box   description)4       Second disk space threshold                    &#34;Your hard disk is full.   has been reached (see                    The answering machine   Operator Options dialog box                    cannot take any new   description)     messages.&#34;5       Tells how to begin and stop                    &#34;Begin recording your   recording a greeting                    greeting when you hear the                    tone.&#34;6       Greeting not found for this                    &#34;This mailbox has no   mailbox          greeting.&#34;7       Last message has been                    &#34;Message deleted.&#34;   deleted8       Simply tells user to leave                    &#34;Please leave a message   a message at the tone.                    when you hear the tone.&#34;   Used when there is no   microphone attached.9       Tells the owner that there                    &#34;There are no new   are no messages in the                    messages.&#34;   current mailbox.10      Tells the owner that there                    &#34;You have new messages.&#34;   are messages in the current   mailbox11      Prefix to &#34;Press #### to                    &#34;Press&#34;   ########&#34; sentences.12      Press # to record a new                    &#34;two to record a new   greeting         greeting.&#34;13      Press # to delete the last                    &#34;three to delete this   message          message.&#34;14      Press # to play greeting                    &#34;four to play the                    greeting.&#34;15      Press # to play next                    &#34;Six to play the next   message          message.&#34;16      Press # to change Owner                    &#34;To change mailboxes,   mailbox          press star, then the                    mailbox number, then the                    password.&#34;17      Press # to play the last                    &#34;seven to play the last   message again    message again.&#34;18      Tells caller they can&#39;t                    &#34;Sorry, the answering   leave a message because the                    machine&#39;s tape is full.&#34;   disk is full.______________________________________ 
    
     In order for programs to locate ECI applications (tell whether they are running), each application must have a static Windows Class name. In doing so, programs can simply FindWindow() to locate a given ECI application. See Table 11. Note that these class names are not translated. 
     
                       TABLE 11______________________________________ECI Application      Class Name______________________________________Operator             Compaq OperatorTAM                  Compaqg TAMFAX                  Compaq FAXMultimedia Sound System                Compaq MMediaSSCard File            Compaq CardFile______________________________________ 
    
     All hardware configuration information, serial port selection, etc., will be recorded in Plug and Play BIOS. Given the hardware dependency of this project, the software will refuse to run unless the conditions of Table 12 are met. These conditions are in addition to any file, DLL, driver, etc. dependencies the software may have. If any test fails, the software will produce an applicable error message in a standard MessageBox() and then exit. 
     
                       TABLE 12______________________________________Condition            Application______________________________________Running on a Compaq PC                AllWindow version 3.1   AllBombay modem/TAM audio driver                AllpresentESS Audio Driver/hardware present                FAX, TAM, Media RackSpeaker(s) present   TAM, Media Rack______________________________________ 
    
     Note that this application is somewhat different in that it contains two tightly-knit applications--a speakerphone and an answering machine. Its functionality must change somewhat, depending on the customer&#39;s speaker and microphone arrangement as indicated in Table 13. The ECI Setup utility must prompt the user for their speaker/microphone configuration and set flags to tell the TAM software how to act. When acting as an Answering Machine only, the keypad, Clear, Dial, and Address Book buttons are nonfunctioning. Additionally, when no microphone is installed, the memo and greeting Rec(ord) buttons are nonfunctioning. 
     
                       TABLE 13______________________________________Speaker/Microphone Configuration            Functionality______________________________________Speakers and microphone fully            Full functionalityintegrated in PC (Sun Valley)Speakers and microphone inte-            Full functionalitygrated in Compaq monitor(future)External microphone and speakers            Answering Machine only. NO            SPEAKERPHONE. Can record greet-            ings and memos via external            microphone.External speakers, no microphone            Answering Machine only. NO            SPEAKERPHONE. Cannot record            greetings (must used canned            ones) or record memos.No speakers      Application refuses to run______________________________________ 
    
     In order to coordinate access to the ESS audio hardware, all applications must use a similar method for controlling their audio settings. We have tentatively chose Microsoft&#39;s MSMIXMGR.DLL from Windows Sound System 2.0. 
     In order to conserve disk space, the TAM should have the capability of compressing messages (those left by callers) before they are made accessible to the user. The most likely choice of compression algorithm will be Microsoft TrueSpeech, from the Microsoft Windows Sound System 2.0 SDK. In preparation for this feature, we offer the following architectural suggestion: 
     1. Save messages, uncompressed, into a temporary holding area--essentially a directory beneath the TAM directory. 
     2. Create a process that periodically checks the directory for files. When an uncompressed file is found, it compresses it, copies it to the &#34;real&#34; mailbox directory, and then deletes the original. The user can access the file only when it appears in the mailbox directory. 
     3. When a caller leaves a message, send a (Windows) message to the process to alert it to the file&#39;s presence. This will let it work on demand, while the timed polling is used for cleaning up files left over from reboot. 
     Compression can be turned on and off via the Operator&#39;s Answering Machine Options screen. Note that the setting affects recording only--playback must work on either compressed or uncompressed files regardless of the switch setting. 
     The ECI FAX machine is adapted from Eclipse FAX SE. Based on talks with Phoenix, Future Soft, and Compaq Product Marketing, we found that SE contains nearly all of the functionality we want in a FAX application. The goal of this project is to port much of SE to a GUI that meets our ECI requirements, yet maintains much of the existing product&#39;s functionality. 
     The software supports most of the basic features that SE provides: 
     FAXes organized into two &#34;folders&#34; or tabs. 
     Integrated text editor. 
     Optional user-defined editor. 
     Ability to annotate and forward a FAX. 
     Add clipart, letterhead, signatures, logos, etc. via drag and drop. 
     Schedule for immediate or deferred delivery. 
     Send to individual or group. 
     Create and maintain groups of frequently used FAX numbers. 
     Maintain a log of all sent and received FAXes. 
     When invoked, the screen looks like FIG. 9A. The application is displayed in a traditional Windows dialog box and supports the controls listed in Table 14. 
     
                       TABLE 14______________________________________Control           Yes    No______________________________________Restore           .check mark.Move              .check mark.Size                     .check mark.Minimize          .check mark.Maximize                 .check mark.Close             .check mark.Switch to         .check mark.______________________________________ 
    
     The main screen shows two tabs, IN Box and OUT Box, which alternate between sent FAXes, respectively. Member FAXes are shown in the listbox; their description includes their current status, the time and date they were last handled, and the originator/recipient&#39;s name (if known). FAX status is reported using the words shown in Table 15. The controls shown in Table 16 are used. 
     
                       TABLE 15______________________________________Status  Meaning                Goes In______________________________________Received   FAX was received completely - - no errors                          IN BoxIncomplete   FAX was partially received - - last page                          IN Box   incomplete or pages missingSent    FAX was successfully sent                          OUT BoxPending FAX is waiting to be sent                          OUT BoxAborted FAX could not be sent -- no answer,                          OUT Box   hardware failure, etc.______________________________________ 
    
     
                       TABLE 16______________________________________Control  Type       Action______________________________________IN Box   TAB (button)               Causes incoming FAXes to be shown in               the listboxOUT Box  TAB (button)               Causes outgoing FAXes to be shown in               the listboxListbox  Listbox    (1) Lists received and incomplete               FAXes when the IN Box tab is               selected               (2) Lists sent, pending, and aborted               FAXes when the OUT Box tab is               selectedAddress Book    Icon       Inactive (may be removed)Close    Button     Closes the FAX applicationCreate FAX    Button     Lets you create a new FAX. Always               availableDelete   Button     Deletes the selected FAX. Grayed               out until a FAX is selected.Details  Button     Displays information about the               selected FAX. Grayed out until a               FAX is selected.Forward  Button     Lets you annotate and forward the               selected FAX. Grayed out until a               FAX is selected.Help     Icon       Displays program help (TBD)Options  Button     Invokes the Operator Options dialog               boxPrint FAX    Button     Prints the selected FAXes. Grayed               out until a FAX is selected.Print Log    Button     Prints log entries for all faxes in               the active tab (inbox/outbox)View     Button     Lets you view the selected FAX and               change its description. Grayed out               until a FAX is selected.______________________________________ 
    
     The Print Log command prints the log entry for the selected FAX(s). The output may contain one or more of the following fields: 
     Status--Received. Incomplete. Sent. Pending. Aborted. 
     FAX Number--Lists the recipient or sender&#39;s FAX number. 
     Pages--Number of pages. 
     Duration--Time required to send/receive this FAX. 
     Description--User-supplied text. Set via Change Label button. 
     Filename--The TIF file&#39;s complete path and name. 
     The Print Log dialog box lets the user choose which fields they want to see. Initially, all boxes are checked--you get everything. Just uncheck the things you don&#39;t want and press OK to start printing. Settings are saved from one invocation to the next and, on subsequent invocations, are reset according to preference. 
     The Print FAX command (see FIG. 14A) prints the selected FAX(s) on the current printer. It lets you choose the whole document or selected pages, and also provides full-page or thumbnail output (FIG. 14B). 
     Printer Setup is accessible from both the Print Log and Print FAX dialog boxes. It launches a dialog box like FIG. 14C that lets the user choose a printer for subsequent printing. It contains the usual printer setup and options screens (as in Control Panel). 
     The Details command invokes a dialog box like FIG. 14D containing information about the selected FAX, whose controls/fields are shown in Table 17. 
     
                       TABLE 17______________________________________Control    Type         Purpose______________________________________FAX        Text - not editable                   Causes incoming FAXes to be                   shown in the listboxType       Text - not editable                   Displays the compression                   model used to store the fileFile:      Text - not editable                   Displays the TIFF file&#39;s                   complete path and nameFile Specs:      Text - not editable                   Displays the file&#39;s proper-                   ties (resolution)Status:    Text - not editable                   Received. Incomplete. Sent.                   Pending. AbortedPages:     Text - not editable                   Number of pagesDuration:  Text- not editable                   Time required to send/receive                   this FAXDescription:      Editbox      By default, contains CallerID                   (received FAXes) or recip-                   ient&#39;s name (sent FAXes).                   User can change the                   description.Save       Button       Button is active if the user                   changes the FAX description.                   When selected, saves the new                   description and returns to                   the previous screen.Cancel     Button       Discards any changes made to                   the description and returns                   to the previous screen.Help       Iconic Button                   Displays online help______________________________________ 
    
     The Delete command lets you delete the selected FAX. The FAX name (label) is shown at the top of the dialog box (FIG. 14E). Two mutually exclusive radio buttons lets them delete both the FAX and the log entry or the FAX (TIFF file) only. By default, both will be deleted. 
     The whole process of creating a FAX is somewhat unnerving to novice users. Traditional FAX software gives you no clue as to what steps are required, the order, or exactly when you are in the process. ECI addresses this problem by presenting a Checklist when you start to Create a FAX. The checklist details the required steps and, as its name suggests, uses a checkmark for each completed step. The screen looks like FIG. 9B. Buttons are used to invoke each step. Send is grayed out until all required steps have been completed. Note that some steps say &#34;Optional&#34;. In fact, the only required steps are Enter Text and Choose Recipients. To &#34;work on&#34; a step, the user simply clicks the associated button. Upon return, a checkmark appears in the box to let the user know they have completed that step. Users may perform each step an arbitrary number of times while preparing a FAX. In other words, they may choose recipients, go edit the text, choose more recipients, add more text, etc. until ready to send. Data is maintained between steps, but not between FAXes. Note that the Address Book icon is visible but inactive on this screen (FIG. 9B). This checklist screen becomes a hub that ties all the FAX-creation steps together as shown in FIG. 14F. Although the steps are presented in a sensible, preferred order, the user should be able to do any step, in any order, as many times as they like. Subsequent steps must adjust to account for the data (or lack of) provided by previous steps. For example, if they go first into Page Layout, only a blank page will show. If they choose a coversheet and then Page Layout, the rasterized coversheet will show. The following paragraphs document the behavior of each step. 
     One of the prompts in the Operator application&#39;s FAX Options screen lets you choose between the &#34;built-in&#34; editor and one of your own. When this button is clicked, the user&#39;s editor-of-choice is launched. By default, the built-in one, shown in FIG. 14G, is used. It is a simple editbox control that supports text only. By its nature, it supports Clipboard cut and paste via traditional Windows keychords. On the first invocation, the editbox is blank. Subsequent invocations show the last text block the user saved. Press Save to save changes and return to the checklist screen, or Cancel to disregard changes and return. Note that when the user clicks Save, the editbox content is transparently printed on the proverbial Fax Printer Driver. If the user&#39;s own editor was launched, they have the burden of manually selecting the FAX driver and printing the document--just like in the &#34;olden days&#34;. When an external editor is used, the application remains on the Checklist screen. Again, the Address Book icon is inactive on this screen. 
     The Choose Cover Sheet button lets you choose a FAX coversheet from your &#34;collection&#34;. As we can do elsewhere in ECI, we need to create and maintain a directory (collection) of coversheets from which the user can choose. Our goal is to provide at least two or three samples per language. Coversheets may be standard Windows, BMP files or TIF files. The screen looks like FIG. 14H and has a listbox that contains all the coversheets in the collection. As you scroll about the list, each coversheet is opened and displayed in the large box on the right. This lets the user see what each one looks like before choosing one. On first invocation, &#34;NONE&#34; is selected. On subsequent invocations, the user&#39;s current choice is selected and the file (if any) is displayed. Again, press Save to return to the Checklist screen or Cancel to retain the previous cover sheet. Not that a Find File button is also available. It invokes a standard Windows Find File common dialog box that lets you hunt for a file. Once found, the file is added to the collection and is, thereby, available in subsequent sessions. 
     The Select Recipients screen lets you build the FAX&#39;s address list. Two modes are supported: individual and group FAX. Individual, of course, simply means one FAX--the recipient. Group FAX lets you queue a FAX to multiple addresses. The screens look like FIGS. 14I and 14J. The GUI alternates between these two screens based on the stat of the Individual and Group radio buttons. By default, Individual is always selected. Note that data should be retained between modes. In other words, click Individual, add data, click Group, click Individual again and the data you typed is still there. Table 18 shows the controls available. 
     
                       TABLE 18______________________________________Control   Type      Action______________________________________Individual     Radio     Inactive while in Individual Mode. In     Button    Group Mode, switches screens back to               Individual Mode.Group     Radio     Inactive while in Group Mode. In     Button    Individual Mode, switches screens back               to Group Mode.Cancel    Button    Returns to the Checklist screen with no               changes.Save      Button    Saves addressee data and returns to the               Checklist screen.Address Book     Button    Invokes the ECI Address Book.Help      Button    Displays online help.               Individual ModeAdd to    Button    Adds the data currently in the fieldsAddress Book        to the ECI Address Book. Record is               added in the alpha tab corresponding to               the first character of the last name.               Therefore, the button is grayed out               until the last name field is provided.               Blank fields are not updated.Last Name Editbox   See * belowFirst Name     Editbox   See * belowCompany   Editbox   See * belowAddress   Editbox   See * belowVoice     Editbox   See * belowFAX       Editbox   See * below               Group ModeDelete Group     Button    Deletes the group named in the Group               Listbox.Create Group     Button    Creates the group named in the Group               Listbox.Group Listbox     ComboBox  (1) Lists the defined group names, (2)               lets the user enter a new group name.Group Members     Listbox   Lists the members of the group named               in the Group Listbox.FAX       Listbox   Lists the names of people who willRecipients          receive a copy of this FAX.Add       Button    Adds the selected name from the Group               Members listbox to the FAX Recipients               listbox.Add All   Button    Adds all names from the Group Mem-               bers listbox to the FAX Recipients               listbox.Remove    Button    Removes the selected name from the               FAX Recipients listbox.Remove All     Button    Removes all names from the FAX               Recipients listbox.______________________________________ *The properties of all fields in the Individual recipient record match th corresponding fields in the ECI Address Book application. 
    
     In Individual Mode, only the FAX number field is required. Other fields are optional but mirror those used in the ECI Address Book. The user can click the Address Book icon (to invoke the ECI Address Book) and select a name. Upon return, all available data is inserted into the appropriate edit fields. 
     Group Addressing is very flexible: 
     The Group Name combobox lists all the user-defined groups plus a default one called Everyone (discussed later). 
     The Group Members listbox contains the names of all members in the selected group. 
     The FAX Recipients listbox will list the names of everyone who is to receive a copy of this FAX. 
     The object of the game is to choose names from the Group Members box and copy them to the FAX Recipients box. You do it by highlighting Group Member names and pressing Add to add them to the recipient list. Similarly, you can high-light a name in the recipient list and press Remove to remove it. The Add All button adds all names in the members list to the recipients list. Conversely, the Remove All button removes all names from the recipient list--effectively emptying it. The user can add names from one group, select another group and add more names, etc. until the recipient list is complete. A byproduct of this process can easily be a new group (subsets or supersets of other groups). To save a group, just type the new name in the Group Name combobox and press Save Group. Similarly, you can press Delete Group to delete the selected group. It responds with a typical Windows MessageBox(), like FIG. 14K, asking confirmation. 
     Now, let&#39;s take a small step backward. Upon entry, a group called Everyone is displayed. This group is always available and references all entries in the ECI Address Book that have FAX numbers. Besides that, it serves as a launching pad for creating new groups. While the Everyone group is selected, the Save Group and Delete Group buttons are grayed out (e.g., you cannot delete the Everyone group). When you are finished creating the recipient list, just press Save Changes to go back to the Checklist screen. 
     The Add Graphics screen lets the user see FAX pages as they will be transmitted (FIG. 14L). On entry, all available text, clipart, etc. is rasterized and placed on the pages in rubber band boxes. Boxes can be sized and moved (drag-n-drop) to new locations. Controls for the screen of FIG. 14L are shown in Table 19. Tool controls for FIG. 14L are shown in Table 20. 
     
                       TABLE 19______________________________________Control  Type       Action______________________________________Left Arrow    Button     Displays the previous page.               Inactive when page 1 is shown for a               1-page FAXes.Right Arrow    Button     Displays the last page. Inactive               when the last page is shown and for               1-page FAXes.Help     Button Icon               Displays online help (TBD)Address Book    Button Icon               InactiveClip Art Button     Lets the user choose clip art (see               discussion below).Checklist    Button     Saves changes and returns to the               Checklist screen.Cancel   Button     Discards changes and returns to the               Checklist screen.______________________________________ 
    
     
                       TABLE 20______________________________________Control   Action______________________________________Magnifying     Click On/Off. Zooms in on the selected item. OtherGlass     buttons are inactive until the button is clicked     again (screen is normalized)Stylus    Begins drawing on tbe page. Position mouse cursor,     hold left button down to draw - - just like MS     Paint.Arrow     Draws a line with an arrowhead. Position mouse,     press and hold mouse button, snap line where button     is released. Arrowhead goes on the first click     location.Line      Draws a line. Position mouse, press and hold mouse     button, snap box line where button is released.Box       Draws a box frame. Position mouse, press and hold     mouse button, snap box line where button is     released.Circle    Draws a circle frame. Position mouse, press and     hold mouse button, snap circle line where button is     released as diameter.Filled    Draw a black-filled box. Position mouse, pressBox       and hold mouse button, snap box line where button     is released.Filled    Draws a black-filled circle. Position mouse, pressCircle    and hold mouse button, snap circle using line where     button is released as diameter.A(lpha)   Click on/off. Lets you type alphanumeric     characters over the page. Position the mouse and     click the left mouse button . . I-beam cursor     appears. Draw all alphanumeric characters typed     until the button is clicked again or another button     is clicked.Rotate    Rotates the image 90 degrees right.Fonts     Displays a standard Windows Font common dialog     box. This font is applied to any text the user     enters using the A(lpha) command.Undo      Undoes the last action.______________________________________ 
    
     The Clip Art button lets the user select clip art to appear in the current FAX page. It launches the dialog box like FIG. 14M. The Clip Art Library is a collection of TIF or BMP clipart files. It&#39;s where we will provide sample coversheets, cool pictures, logos, etc. The user can scroll about the listbox--each highlighted file is displayed (thumbnail) in the box on the right to let the user sample each one. Both BMP and TIF file formats should be supported. This provides a variety of ways for users to create and edit their files. To use a file, just click Paste. To return without selecting a file, click Close. To add a file to the collection, press Find File to launch a standard Windows Find File common dialog box. If a file is selected, it is added to the &#34;collection&#34;, the listbox is updated, and it is selected and displayed. When Paste is selected, the selected file is superimposed on the active FAX page, center screen, in a rubber band box like FIG. 14N. The user can drag-n-drop the box to move the object, or they can resize it by dragging the size boxes. Note that &#34;center screen&#34; assumes the object is applied to a standard 8-1/2×11 page. The file itself could consume the entire page--for example, a form letter or company stationery. Oversize images should be shrunk, proportionally, to fit on the page. 
     A Schedule Delivery screen like FIG. 14O lets you choose when the FAX is to be sent--ASAP (now) or at a specified time and date. While the other screens overlay the main graphic, this screen is a simple pop-up dialog box since it is so small. The only consideration for this screen is time/date presentation. The format must follow the user&#39;s choice in Control Panel--12/24 hour clock, date format, separator characters (:and/), and am/pm labels. 
     The Send command is available from the main screen (while INbox and OUTbox contents are showing) and is used to forward a FAX to another individual/group. This command works exactly like Create FAX, with the following exceptions: 
     The Enter Text choice is removed, or possible Checked and inactive. 
     The complete FAX includes the original coversheet. 
     User can go into Add Graphics and use the toolbar to annotate the FAX. 
     Select Recipients and Schedule work as before. 
     When you select a FAX and press Forward (on the main screen), you essentially perform the same steps as creating a new FAX, except the rasterized image of the original FAX is appended to the new one. A slightly modified Checklist screen (like FIG. 9C) is used for forwarding a FAX. 
     The View command is available from the main screen (while the INbox and OUTbox contents are showing) and is used to view a FAX. The screen looks like FIG. 9D. This is the same basic screen as create FAX&#39;s Add Graphics page viewer with the edit controls removed. Controls for FIG. 9D are shown in Table 21. 
     
                       TABLE 21______________________________________Control Type       Action______________________________________Left Arrow   Button     Displays the previous page. Inactive              when page 1 is shown and for 1-page              FAXes.Right   Button     Displays the next page. Inactive whenArrow              the last page is shown and for 1-page              FAXes.Help    Button Icon              Displays online help (TBD)Address Button Icon              InactiveBookTools   Button     Launches the viewer toolbar (see below)Magnifying   Button     Click On/Off. Zooms in on the selectedGlass              item. Other buttons are inactive until              the button is clicked again (screen is              normalized).Rotate  Button     Rotates the image 90 degrees right.Close   Button     Returns to the main screen______________________________________ 
    
     We will not discuss the FAX Engine&#39;s behavior in this specification since the Eclipse engine is complete and essentially behaves as intended. We anticipate that the engine will show its own dialog box containing relevant progress messages as FAXes are received and sent. Note, however, that the FAX engine must support sending FAXes both from the ECI GUI and from the traditional way of printing to the FAX driver. When someone prints to the FAX driver from outside the ECI GUI, the checklist should appear with the &#34;Edit Text&#34; button checked. The user can complete the other steps via the checklist. 
     In order for programs to locate ECI applications (tell whether they are running), each application must have a static Windows Class name. In doing so, programs can simply use FindWindow() to locate a given ECI application. See Table 22. Note that these class names are NOT translated. 
     
                       TABLE 22______________________________________ECI Application     Class Name______________________________________Operator            Compaq OperatorTAM                 Compaq TAMFAX                 Compaq FAXMultimedia Sound System               Compaq MMediaSSECI Address Book    Compaq Address Book______________________________________ 
    
     All hardware configuration information, serial port selection, etc. will be recorded in Plug and Play BIOS. Given the hardware dependency of this project, the software will refuse to run unless the conditions of Table 23 are met. These conditions are in addition to any file, DLL, driver, etc. dependencies the software may have. If any test fails, the software will produce an applicable error message in a standard MessageBox() and then exit. 
     
                       TABLE 23______________________________________Condition              Application______________________________________Running on a Compaq PC AllWindows version 3.i    AllBombay modem/TAM audio FAX.TAMdriver presentESS Audio Driver/hardware                  TAM. Media RackpresentSpeaker(s) present     TAM. Media Rack______________________________________ 
    
     In order to coordinate access to the ESS audio hardware, all applications must use a similar method for controlling their audio settings. We have tentatively chosen Microsoft&#39;s MSMIXMGR.DLL from Windows Sound System 2.0 
     FIG. 15A describes the operation of each of the controls on the MiniPilot remote control. FIG. 15B describes the operation of each of the controls on the TV remote control.