CentreVu™ Agent McFone Low-Level Design

CentreVu™ Agent McFone Low-Level Design
Document
subject:
Issue 1.0
COMPAS ID 58373
date:
December 4, 1997
from:
Keith R. McFarlane
Org. 13F5C0000
DR 30L45
(303) 538-1642
[email protected]
Svetoslav Sinapov
Org. 13F5C0000
DR 30K99
(303) 538-4537
ABSTRACT
This document contains the low-level design for release one of the CVA “McFone” application, a TAPIbased telephony application for call centers. This product is the first release of the product, with
enhancements planned for subsequent releases.
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-2-
Copy To:
Amardeep Singh (Development)
Bill Jolicoeur (Market Management)
Cara Spengler (Product Introduction)
Carla Boroff (Integration)
Carla McNearny (System Engineering)
Cindy Jones (Project Management)
Dana Cline (Development)
Darryl Maxwell (System Engineering)
Dave Breggin (Development)
Dave Felder (System Verification)
Deborah Price (System Verification)
Eileen Hillis (System Engineering)
Helena Fowler (System Verification)
Jeff Anderson (Project Introduction)
Jeff Bogart (System Engineering)
Jose Velez (Development)
Michelle Allaire (Documentation)
Mike Soll (System Verification)
Mohan Amasa (Development)
Nandu Sankaran (Development)
Paul Richman (Development Management)
Randy Applegate (Development)
Richard Cunday (Development)
Steve Coury (Integration)
Svet Sinapov (Development)
Tim Larison (Development)
Tom Turnmire (Development Management)
Zhen Chen (Setup)
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-3CentreVu™ Agent McFone Low-Level Design
Document
subject:
Issue 1.0
COMPAS ID 58373
date:
December 4, 1997
from:
Keith McFarlane
Org. 13F5C0000
DR 30L45
(303) 538-1642
[email protected]
Svetoslav Sinapov
Org. 13F5C0000
DR 30K99
(303) 538-4537
DESIGN DOCUMENT
1. INTRODUCTION
1.1 General
This document contains the low-level design for the McFone telephony core. The design elements within
this document cover the requirements and architecture for the telephony components of the McFone
application, a simplified replacement for the former CentreVu Agent application; other components
related to this application are defined within other documents as delineated in “Related Documents”
(section 1.1.6).
1.1.1 Purpose
This document’s purpose is to clearly define the design elements which will cover all requirements in [1].
To ensure that this need is met, the document includes references to all requirements in the sections
related to the fulfillment of those requirements.
1.1.2 Module Definition
The telephony core of McFone functions as the McFone main application. It displays callbars, allows the
user to perform telephony functions, and presents user interface elements for administration of the
application.
1.1.3 Document Scope
This document covers only the low-level design elements of the telephony core; the designs of the
PASTER and Event Log components are detailed in [2] and [3], respectively.
1.1.4 Document History
Issue .1 - Initial Version
Issue 1.0 - Incorporated review changes
1.1.5 Document Change Control
Changes to this document will be initiated through COMPAS MRs.
1.1.6 Related Documents
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-4CentreVu Agent McFone Requirements and Visual Feature Specification by F.J. Bogart (COMPAS ID
57503) [1]
CentreVu Agent Design Document for Paster by Nandakumar Sankaran (COMPAS ID 54096) [2]
CVA Design Specification for Event Log by Richard Cunday (COMPAS ID 54241) [3]
CentreVu Agent McFone Technical Prospectus by F.J. Bogart (COMPAS ID 57398) [4]
CentreVu™ Agent McFone High-Level Design Document by Keith R. McFarlane and Svetoslav Sinapov
(COMPAS ID 58015) [5]
1.2 Terminology and Acronyms
Basic Callbar Objects (Basic Objects) - the subset of Callbar Objects which are not also containers (that
do not inherit from the CCallbarObjectContainer class).
Call Information Panel (CIP) - a callbar object which represents the status of a particular call. CIPs show
lamp and display states for the call and allow actions upon the call through a button (Answer,
Reconnect, Release). These are usually displayed within CIP Frames.
Callbar - a logical collection of CCallbarObject and CCallbarObjectContainer objects. The objects are
organized in a tree, with the root object always an instance of CCallbarObjectContainer.
Callbar Object - an entity which performs a particular function on a callbar (button, combo, text label,
etc.)
CIP Frame - a container which manages only CIPs. CIP Frames stretch to fit the current number of CIPs
within them. CIP Frames are also callbar objects.
Container - an entity capable of managing and displaying callbar objects.
Container Callbar Objects (Container Objects) - the subset of Callbar Objects which are also containers
(that inherit from the CCallbarObjectContainer class).
Event Log - the McFone application which manages the recording of software information and error
events to the log.
PASTE - PC Applications Software Translation Exchange. Allows applications to download telephone
translation information through the 2nd-line display of the telephone.
1.3 Customer Documentation Concerns
2. EXTERNAL INTERFACES
2.1 Event Log Function Calls
2.2 PASTER Function Calls
3. EXPOSED INTERFACES
All interfaces provided to other components or external applications are detailed in a separate, referenced
document (for large, complex interfaces) and reviewed by affected parties.
4. LOW LEVEL DESIGN
4.1 Application Performance
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-5All telephony core code will be written using C++ and the Microsoft Foundation Classes (MFC). This,
along with direct communication to TAPI, will allow for the following performance conditions:
•
The running RAM footprint of the McFone application will not exceed 10 Mb (<57503-212>).
•
The maximum percentage of GDI resources consumed by the McFone application will not exceed
10% (<57503-213>).
•
The maximum percentage of USER resources consumed by the McFone application will not exceed
10% (<57503-214>).
•
The McFone splash screen will appear after no more than three seconds (<57503-210>).
•
The McFone application will allow the user to make and receive calls within 15 seconds of
application launch (<57503-211>).
•
The McFone application will handle calls no more than 25% at the 90th percentile and 37.5% at the
99th percentile slower than a standalone telephone (<57503-199>).
•
The McFone application will handle lamp updates within 500ms at the 90th percentile and 750ms at
the 99th percentile after the same lamp is updated on the telephone (<57503-200>).
4.2 CMcFoneApp
4.2.1 Description
The CMcFoneApp class represents the application as a whole. This class is derived from MFC’s
CWinApp class, and it overrides several of the CWinApp members in order to provide for the special
needs of McFone initialization. Also, this class contains pointers to all top-level application objects.
The application may be started using any standard windows start method (<57503-189>).
4.2.2 Interfacing FUs/Classes
CMcFoneApp creates instances of all main application objects, and then destroys them all when the
application exits; this interaction, however simplistic, is fundamental to the system, and if it fails then
system initialization cannot continue.
CMcFoneApp is specifically dependent upon the CCallbarManager and CCallbarWindow classes. When
CCallbarManager is created, it instantiates the main callbar; this has the effect of creating the main
application window. The CCallbarManager object sets CMcFoneApp’s m_pMainWnd member variable to
point to this window.
4.2.3 Data Structures and Variables
m_pCallbarManager - pointer to an instance of th CCallbarManager class
m_pVICE - pointer to and instance of the CVICE class
m_pConfigSettings - pointer to an instance of the CConfigSettings class
m_pEvtLog - pointer to an instance of the CEvtLog class.
4.2.4 Functions/Methods
CMcPhoneApp();
Constructor of the app object. This procedure sets the app object member variable m_pMainWnd to
NULL so that code that tries to use this variable can determine if the variable has not yet been set.
virtual BOOL InitInstance();
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-6This method, an override of the CWinApp class, is called at startup, shortly after the application
object is constructed; it is in this routine that application initialization happens. InitInstance performs
the following actions:
1.
Determine if this is the first instance of the CVA application; if not, find the first instance,
activate it, and exit (<57503-190>).
2.
Display the CVA splash screen (<57503-191>, <57503-210>).
3.
Create an instance of the CEvtLog class and assign it to m_pEvtLog (<57503-192>).
4.
Log the version of the McFone executable (<57503-192>).
5.
Create an instance of the CConfigSettings class and assign it to m_pConfigSettings. Call
CConfigSettings::LoadSettings (<57503-195>).
6.
Create an instance of the CVICE class and assign it to m_pVICE. If this allocation fails, report
the error to the user and exit.
7.
Call the VICE InitTAPI member function. If this initialization fails, report the error to the user
and exit.
8.
Create an instance of the CCallbarManager class and assign it to m_pCallbarManager.
9.
Instruct VICE to gather and distribute the states of current calls using the CVICE::RefreshCalls
method. (<57503-1>)
10. Destroy the CVA splash screen (<57503-191>).
11. Attempt to read PASTE data using PasterReadPASTEData. If the data is incomplete, ask the user
if a PASTE download should be executed. If the answer is yes, perform the PASTE download as
specified in the steps of CCallbarManager::OnOptionsDownload; if the answer is no, display a
warning message indicating that some features will not be available, and that a download should
be requested at a later time (<57503-195>).
virtual int ExitInstance();
1.
Call the CVICE ClearTAPI member to uninitialize TAPI.
2.
Record all open callbar windows and their rectangles in the CConfigSettings class, then call
CConfigSettings::SaveSettings (<57503-197>).
3.
Delete all top-level class instances.
4.2.5 Startup
See section 4.2.4.
4.2.6 Shutdown
See section 4.2.4.
4.2.7 Error Messages
The following is a list of error messages which might be displayed during the execution of the members of
this class.
NOTE: The headings of this section are indicative of message content, not message appearance; the final
wordings of these messages will be obtained from documentation writers.
4.2.7.1 Failed to initialize TAPI
In the event that TAPI does not initialize correctly, the software will display this message and exit. This
message is displayed with an OK button.
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-74.2.7.2 Memory allocation failed
If an instance of a particular class cannot be allocated, the software will display this message and exit.
This message is displayed with an OK button.
4.2.8 Events for Event Log
All errors which occur during startup of the application will be logged (<57503-16>). Specific categories
of startup errors are detailed in this section.
4.2.8.1 Memory Errors
All memory allocation errors which occur after the CEvtLog class has been instantiated will be logged.
4.2.8.2 TAPI Initialization Error
If TAPI fails initialization, this problem will be logged.
4.2.8.3 TAPI Initialization/Shutdown Errors
If a call to InitTAPI or ClearTAPI fails, this event will be logged.
4.3 CCallbarManager
4.3.1 Description
The CCallbarManager class controls all callbar display functionality and provides the interface between
callbars and VICE. The application creates one instance of this class and uses it to create the main callbar;
after this point, all user interactions are under the control of the callbar manager.
CCallbarManager maintains a list of the currently active top-level containers in its g_parContainerList
member variable; each top-level container is the root node of a callbar tree. Callbar objects are stored
within the various containers in each tree, and the Callbar Manager maintains an insertion-sorted (by
Windows control ID) list of pointers to all callbar objects (m_pCBObjList) for ease of access.
4.3.2 Interfacing FUs/Classes
CCallbarObjectContainer
As explained above, the Callbar Manager maintains a list of these, each of which represents the root of a
callbar tree.
4.3.3 Data Structures and Variables
m_pPhoneSettingsDlg - pointer to a modeless dialog box which allows manipulation of phone settings (if
this dialog currently exists).
m_pRecorderDlg - pointer to a modeless dialog box which allows manipulation of the agent’s
personalized announcements (if this dialog is currently open).
4.3.4 Functions/Methods
CCallbarManager();
1.
Set up the McFone system tray icon. Its initial state is connected.
~CCallbarManager();
1.
Destroy the McFone system tray icon.
BOOL BuildMainCallbar();
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-8The App Object calls this method shortly after application startup to create the main application
callbar. This method goes through the following steps:
1.
Get the main callbar’s rectangle from the CConfigSettings object (<57503-194>).
2.
Using the obtained rectangle, create the CCallbarWindow to which this callbar will be attached.
Create and attach the McFone main menu (<57503-49>). Load and apply previous window
coordinates if they exist in the INI file.
3.
Assign the CCallbarWindow pointer to the App Object’s m_pMainWnd member. This sets up the
new callbar window as the main application window.
4.
Create the initial CIP Frame (<57503-206>).
5.
Create 2nd line display area (<57503-32>).
6.
Create the dial area, including the dial strings combo box, the Send button, and the dialpad
(<57503-25>). Set the width of the combo box such that it may display the string “99-1-888-5550000” fully on-screen (use GetTextExtent) (<57503-33>). Fill the combo box with the 15 mostrecently-dialed strings (<57503-33>, <57503-35>).
7.
Create the “Big Four” buttons (<57503-40>).
8.
Create the main window call center buttons (Login, Logout, Auto-In, Manual-In, AUX, ACW,
Assist).
9.
Create the Mute button (<57503-41>).
10. Create the Release button.
11. Create the announcements area, including the multi-state announcements button and the
announcement combo. Fill the announcement combo with all appropriate strings.
12. Create the message waiting indicator (<57503-37>).
13. Create the callbar features area, including the following buttons: Phone, Call Ctr, Abbrv Dial,
Misc, Stroke, AUX RC, Logout RC (<57503-42>).
For every button it creates, BuildMainCallbar checks to see if the feature assigned to that button
actually exists by calling CVICE::GetButtonByFeature; if the feature does not exist, the button is
disabled (<57503-38>). Also, every feature button string is filtered using CConfigSettings::
MapPasteName. (<57503-91>)
NOTE: The order of object creation implies the tab order of callbar objects (<57503-53>).
BOOL BuildAbbrevDialCallbar();
1.
Get the abbreviated dial callbar’s rectangle from the CConfigSettings object (<57503-194>).
2.
Using the obtained rectangle, create the CCallbarWindow to which this callbar will be attached.
Load and apply previous window coordinates if they exist in the INI file.
3.
For all PASTE identifiers, call CVICE::GetFeatureButtonByPASTEID.
4.
If the feature for an ID is Abbreviated Dial, add an abbreviated dial button to the callbar and set
the button’s caption to the abbreviated dial extension (<57502-54>).
5.
Position buttons alternately in two columns on the window.
For every button it creates, BuildAbbrevDialCallbar checks to see if the feature assigned to that button
actually exists by calling CVICE::GetButtonByFeature; if the feature does not exist, the button is
disabled (<57503-38>). Also, every feature button string is filtered using CConfigSettings::
MapPasteName. (<57503-91>)
BOOL BuildMiscFeatCallbar();
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-91.
Get the miscellaneous feature callbar’s rectangle from the CConfigSettings object (<57503194>).
2.
Using the obtained rectangle, create the CCallbarWindow to which this callbar will be attached.
Load and apply previous window coordinates if they exist in the INI file.
3.
For all PASTE identifiers between 57 and 74 (page 5 of the Definity 606A1 admin screen), call
CVICE::GetFeatureButtonByPASTEID.
4.
If the feature for an ID exists, add the feature to the callbar as a button. Set the button’s feature
name and feature index properties appropriately. NOTE: Bridged appearance buttons will ONLY
be available on this palette; in order to originate a call on a bridged appearance, the user must
click one of these buttons (<57503-19>, <57503-24>, <57503-55>).
5.
Position buttons alternately in two columns on the window.
For every button it creates, BuildMiscFeatCallbar checks to see if the feature assigned to that button
actually exists by calling CVICE::GetButtonByFeature; if the feature does not exist, the button is
disabled (<57503-38>). Also, every feature button string is filtered using CConfigSettings::
MapPasteName. (<57503-91>)
BOOL BuildCCFeatCallbar();
1.
Get the call center feature callbar’s rectangle from the CConfigSettings object (<57503-194>).
2.
Using the obtained rectangle, create the CCallbarWindow to which this callbar will be attached.
Load and apply previous window coordinates if they exist in the INI file.
3.
For all PASTE identifiers between 35 and 56 (page 6 of the Definity 606A1 admin screen), call
CVICE::GetFeatureButtonByPASTEID.
4.
If the feature for an ID exists, add the feature to the callbar as a button. Set the button’s feature
name and feature index properties appropriately (<57503-56>).
5.
Position buttons alternately in two columns on the window.
For every button it creates, BuildCCFeatCallbar checks to see if the feature assigned to that button
actually exists by calling CVICE::GetButtonByFeature; if the feature does not exist, the button is
disabled (<57503-38>). Also, every feature button string is filtered using CConfigSettings::
MapPasteName. (<57503-91>)
BOOL BuildAUXReasonCodeCallbar();
1.
Get the AUX reason code callbar’s rectangle from the CConfigSettings object (<57503-194>).
2.
Using the obtained rectangle, create the CCallbarWindow to which this callbar will be attached.
Load and apply previous window coordinates if they exist in the INI file.
3.
For all PASTE identifiers, call CVICE::GetFeatureButtonByPASTEID.
4.
If the feature for an ID is AUX Reason Code, add the AUX Reason Code button to the callbar.
Set the button’s feature name and feature index properties appropriately (<57503-57>).
5.
Position buttons alternately in two columns on the window.
For every button it creates, BuildAUXReasonCodeCallbar checks to see if the feature assigned to that
button actually exists by calling CVICE::GetButtonByFeature; if the feature does not exist, the button
is disabled (<57503-38>). Also, every feature button string is filtered using CConfigSettings::
MapPasteName. (<57503-91>)
BOOL BuildStrokeCountCallbar();
1.
Get the stroke count callbar’s rectangle from the CConfigSettings object (<57503-194>).
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-102.
Using the obtained rectangle, create the CCallbarWindow to which this callbar will be attached.
Load and apply previous window coordinates if they exist in the INI file.
3.
For all PASTE identifiers, call CVICE::GetFeatureButtonByPASTEID.
4.
If the feature for an ID is Stroke Count, add the Stroke Count button to the callbar. Set the
button’s feature name and feature index properties appropriately (<57503-60>).
5.
Position buttons alternately in two columns on the window.
For every button it creates, BuildStrokeCountCallbar checks to see if the feature assigned to that
button actually exists by calling CVICE::GetButtonByFeature; if the feature does not exist, the button
is disabled (<57503-38>). Also, every feature button string is filtered using CConfigSettings::
MapPasteName. (<57503-91>)
void EndPhoneSettings();
Set the m_pPhoneSettingsDlg member to NULL.
void OnCallbarButton(UINT nID);
This function receives all user button clicks through the application’s message map. In response to
these clicks, it performs a number of functions depending on the button’s type:
CBAR_BTNTYPE_SPEEDDIAL
Although this button type exists, speed dial buttons are not supported in the first release.
CBAR_BTNTYPE_MAKECALL
1.
If the button’s AssociatedObject property is not blank, get the associated object, assuming
it’s a dial string combo. Get the dial string from the combo.
2.
If the dial string is blank and no current call exists, generate a call using CVICE::MakeCall;
if the dial string is blank and a call exists, do nothing (<57503-18>).
3.
If the dial string is not blank and no current call exists, call the VICE MakeCall method with
the dial string; if a current call exists, call the VICE DialString method (<57503-25>).
4.
If the dial string was not blank, add the dial string to the combo’s drop-down list. If the
number of items in the list is now 16, remove the last item from the list. (<57503-35>)
5.
If MakeCall returns a value indicating failure, the callbar manager displays the error
message detailed in section 4.3.7.1 (<57503-20>).
CBAR_BTNTYPE_DIALPAD
1.
Get the value of the button’s FeatureString property (the digit this button represents) and
pass this on to the VICE DialString method (<57503-25>). The buttons will always be dialed
using DTMF tones (<57503-15>). S-channel dialing will not be performed through explicit
calls; s-channel state will be handled through phone/switch interactions.
CBAR_BTNTYPE_CIP
A CIP button may be in one of three states depending on which state changes have taken place
for the call associated with the button’s CIP. Based on the current state of the CIP button,
perform the following steps:
CBAR_CURRCIPFUNC_RELEASE
1.
Get the name of the CIP associated with this button using the button’s AssociatedObject
property.
2.
Get a pointer to the CIP using FindObjectByName.
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-113.
Get the value of the CIP’s CallHandle property and send it to the VICE ReleaseCall
function (<57503-22>).
CBAR_CURRCIPFUNC_ANSWER
1.
Get the name of the CIP associated with this button using the button’s AssociatedObject
property.
2.
Get a pointer to the CIP using FindObjectByName.
3.
Get the value of the CIP’s CallHandle property and send it to the VICE AnswerCall
function. (<57503-6>)
CBAR_CURRCIPFUNC_UNHOLD
1.
Get the name of the CIP associated with this button using the button’s AssociatedObject
property.
2.
Get a pointer to the CIP using FindObjectByName.
3.
Get the value of the CIP’s CallHandle property and send it to the VICE UnholdCall
function (<57503-21>).
CBAR_BTNTYPE_FEATURE
Get the value of the button’s FeatureString property (the PASTE feature name this button
represents) and pass this on to the VICE ActivateFeature method (<57503-42>).
CBAR_BTNTYPE_FAC
Get the value of the button’s FeatureString property (the PASTE FAC name this button
represents) and pass this on to the VICE ActivateFAC method.
CBAR_BTNTYPE_ANNOUNCE
1.
Check the current state of the recorder using the VICE GetRecorderState method.
2.
Depending on recorder state, do the following:
PLAYING
If the device is currently playing, call the VICE StopGreeting method.
RECORDING
If the device is currently recording, the button should be disabled, so this situation
should never occur.
STOPPED
If the device is currently stopped, get the button’s AssociatedObject property, which
should be a list box. Determine the currently selected announcement by querying the list
and call the VICE Play greeting method with the greeting number.
CBAR_BTNTYPE_POPCB
1.
Get the value of the button’s AssociatedObject property.
2.
Search for a top-level window with this title in the root container list.
3.
If the window is found in the list, set the focus to the window; if it is not found, call the
appropriate callbar creation routine for the name specified by AssociatedObject (see Table 1).
Callbar Type Name
MainCB
Construction Method
BuildMainCallbar
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-12AbbrevCB
BuildAbbrevDialCallbar
SWFeatCB
BuildSwitchFeatCallbar
CCFeatCB
BuildCCFeatCallbar
AUXReasonCB
BuildAUXReasonCodeCallbar
StrokeCB
BuildStrokeCountCallbar
Table 1. Callbar Types and Construction Methods
void OnConnectionStateChange(DWORD dwConnState);
LineCallback calls this method whenever the current connection status changes. For all connection
state changes, the callbar manager updates the McFone system tray icon to reflect the state change.
(<57503-5>)
If this message indicates either a switch or COM link failure, the callbar manager zeros out all lamp
and call state displays. If, on the other hand, the message indicates the return of service, the callbar
manager performs several operations (<57503-4>):
1.
Resets the state of every lamp to corresponding phone lamp’s state.
2.
Determines the current 2nd line display contents (if possible) and updates 2nd-line display objects.
void OnControlKeyPress(UINT nID, UINT nChar);
1.
Determine which control sent this message using FindObjectByID.
2.
If the object is a combo box, ignore the key press.
3.
For all other objects, if the key pressed was a dialpad key and no calls exist, initiate a call and
dial the digit (<57503-16>). Otherwise, if the key pressed was a dialpad key and calls exist,
simply dial the digit (<57503-17>) and append the dialed digit to the current call’s truncated
display (<57503-205>).
void OnDispLine2Change(CString& sLine);
LineCallback calls this method whenever the 2nd line of the 606 logical display changes (<5750332>). Upon receipt of the message, CCallbarManager finds all instances of the
CBAR_OBTYPE_DISPLAY object type in its m_parCallbarObjects list, calling SetDispText with
sLine for each one.
void OnWindowPhoneSettings(); (<57503-49>)
1.
Create an instance of the CPhoneSettingsDlg class and assign its pointer to
m_pPhoneSettingsDlg.
2.
Use the CPhoneSettingsDlg::Create member function to create a modeless dialog box.
3.
Show and update the modeless dialog.
void OnOptionsDownload(); (<57503-88>, <57503-49>)
1.
Confirm the user’s request by displaying a message box. If the user cancels, exit.
2.
Display an instance of the CPasteProgressDlg dialog box modally (<57503-89>).
3.
Call PasterGetPasteData.
4.
If PasterGetPasteData returns success, reload PASTE data and display a message to the user
confirming a successful PASTE download (<57503-90>).
5.
If PasterGetPasteData fails, display an error message stating the reason for failure (<57503-92).
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-13void OnWindowCallCenter(); (<57503-49>)
Call BuildCCFeatCallbar.
void OnWindowAbbrevDial(); (<57503-49>)
Call BuildAbbrevDialCallbar.
void OnWindowSwitchFeat(); (<57503-49>)
Call BuildMiscFeatCallbar.
void OnWindowStrokeCounts(); (<57503-49>)
Call BuildStrokeCountCallbar.
void OnAnnouncementState(int nState, void *pData, int nModule);
Called from CVoiceRecorder object to notify about change of state for a single announcement
void OnRecorderState(int nState, void *pData, int nModule);
Called from CVoiceRecorder object to notify about change of state for the entire object.
int AutoPlayAnnouncement(void);
Initiates playback of the announcement which is administered to be played automatically.
int PlayAnnouncement(int nIndex);
Initiates playback of the announcements selected in the combo-box on the callbar.
int StopAnnouncement(void);
Stops playback if such one is in progress.
4.3.5 Startup
See the constructor for CCallbarManager in section 0.
4.3.6 Shutdown
See the destructor for CCallbarManager in section 0.
4.3.7 Error Messages
4.3.7.1 Could not make call
This message indicates failure in originating a call. The message will be displayed with an OK button.
4.3.8 Events for Event Log
This class logs all TAPI call errors and memory allocation errors.
4.4 CCallbarWindow
4.4.1 Description
This class represents the root display window of a callbar; it is created by and bound to a root callbar
object container during the container’s constructor. The callbar manager builds callbars by creating a root
container (and, thus, creating an instance of CCallbarWindow) and adding callbar objects and child
containers to that root container; while so doing, the callbar manager also assigns an appropriate parent
window to the objects (in most cases, the top-level window).
4.4.2 Interfacing FUs/Classes
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-14CCallbarManager
This class interacts directly with the CCallbarManager class. CCallbarWindow must receive a pointer to a
callbar manager in its constructor so that it may forward menu and control messages through to
CCallbarManager message handlers; it does this by overriding the OnCmdMsg member of the CWnd
class and calling the callbar manager’s OnCmdMsg member.
This technique allows the application as a whole to take advantage of the MFC message routing scheme
while using dynamically created and configured callbar windows.
CCallbarObjectContainer
CCallbarWindow passes paint messages to its container, which then passes the paint messages to all
objects of which this window is the parent; this operation results in a call to each object’s DrawControl
method.
4.4.3 Data Structures and Variables
m_pCont - a pointer to this window’s container.
m_pMgr - a pointer to the callbar manager object.
4.4.4 Functions/Methods
CCallbarWindow(CCallbarManager* pMgr, CCallbarObjectContainer* pCont,
CRect& rcInitPos, LPCTSTR lpszMenuName);
The constructor of the CCallbarWindow class performs the following actions:
1.
Set the m_pCont and m_pMgr members to the supplied values.
2.
Create the callbar window.
4.4.5 Startup
See the class constructor in section 4.4.4.
4.4.6 Shutdown
This class performs no actions at shutdown.
4.4.7 Error Messages
This class does not display any user error messages.
4.4.8 Events for Event Log
This class logs failure to create its window.
4.5 Callbar Object Containers
4.5.1 CCallbarObjectContainer Class
4.5.1.1 Description
The CCallbarObjectContainer class manages a list of callbar objects within a callbar tree structure. The
root node of a callbar tree is always a container, and each container may house an arbitrary number of
callbar objects and containers.
A container is responsible for framing callbar objects and other containers, and so must always be
associated with a window. A root container is always associated with an instance of the CallbarWindow
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-15class that is created within its constructor. When this window receives messages, it passes its container a
subset of these which the container must process (i.e., containers must pass the OnPaint message to all
callbar objects which do not possess their own windows, like CCallbarIndicators).
4.5.1.2 Interfacing FUs/Classes
4.5.1.3 Data Structures and Variables
m_parCallbarObjects - array of callbar objects within this container.
m_parChildContainers - array of callbar objects containers within this container.
m_pCBWnd - pointer to the instance of the CCallbarWindow class associated with this callbar. Data
storage for the Wnd property.
m_pMgr - pointer to the callbar manager object.
4.5.1.4 Functions/Methods
4.5.1.4.1 Actions
void AddCallbarObject(CObject* pObj);
Call the Add method of the m_parCallbarObjects member with the pObj parameter.
void AddChildContainer(VOID* pCont);
Call the Add method of the m_parChildContainers member with the pCont parameter.
CCallbarObjectContainer(CCallbarManager* pMgr);
1.
Set m_pMgr to the value of pMgr.
2.
Create an instance of the CCallbarWindow class and assign it to m_pCBWnd.
3.
Show and update the callbar window.
~CCallbarObjectContainer();
1.
Clear the callbar object list using ClearCallbarObjects.
2.
Clear the container list using ClearChildContainers.
3.
If this container represented the main application callbar window, null out the app object’s
m_pMainWnd pointer so that messages to the app will be properly discarded.
void ClearCallbarObjects();
1.
For all objects in m_parCallbarObjects, delete the object.
2.
Remove all object pointers from the list.
void ClearChildContainers();
1.
For all objects in m_parChildContainers, delete the object.
2.
Remove all object pointers from the list.
CCallbarObject* FindObjectByID(UINT nID);
This method looks up a callbar object by its assigned Windows control ID. It linearly searches
m_parCallbarObjects for an object with the supplied control ID and then returns a pointer to that
object.
CCallbarObject* FindObjectByName(CString& sName);
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-16This method looks up a callbar object by its name. It linearly searches m_parCallbarObjects for an
object of the supplied name and then returns a pointer to that object.
void OnControlKeyPress(UINT nID, UINT nChar);
Every windowed callbar object of which this window is the parent forwards keystrokes to this window
through calls to this method. this method simply forwards these calls on to the callbar manager’s
OnControlKeyPress method.
void OnPaintCallbarObjects(CDC* pDC);
For every object in the m_parCallbarObjects list, this method calls DrawControl.
void RemoveCallbarObject(CObject* pObj);
This method searches m_parCallbarObjects for the supplied pointer. If the pointer is found, the object
is removed from the list and deleted.
void RemoveChildContainer(VOID* pObj);
This method searches m_parChildContainers for the supplied pointer. If the pointer is found, the
container is removed from the list.
void ShiftObjectsDown(LONG lAmount, VOID* pExclude);
This method, used by CIP frames to move all controls down when resizing, performs the following
steps:
1.
For all objects in the m_parCallbarObjects array, get the object’s rectangle using the
BoundingRect property, adjust the rectangle vertically by lAmount, and set the object’s new
rectangle using the Move method.
2.
For all containers in the m_parCholdContainers array save the object denoted by the pExclude
parameter, get the container’s rectangle using the BoundingRect property, adjust the rectangle
vertically by lAmount, and set the object’s new rectangle using the Move method.
4.5.1.4.2 Properties
Wnd Property
This property allows access to the window associated with this container. It is a read-only property
which may be retrieved using the following access method:
CWnd* GetWnd();
4.5.1.5 Startup
See constructor in section 0
4.5.1.6 Shutdown
See destructor in section 0
4.5.1.7 Error Messages
The CCallbarObjectContainer displays no user error messages.
4.5.1.8 Events for Event Log
CCallbarObjectContainer logs the following events:
•
Memory allocation errors
•
Items for which a member function searches and cannot find
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-174.5.2 CCallbarFrame
4.5.2.1 Description
The CCallbarFrame class inherits from CCallbarObjectContainer, and thus is capable of containing
callbar objects and containers. To these capabilities the CCallbarFrame class adds the ability to contain
objects and containers in a group box, displaying around them a 3D frame with optional text in its upperleft corner.
4.5.2.2 Interfacing FUs/Classes
CCallbarObjectContainer
CCallbarFrame inherits all of its containment capabilities from CCallbarObjectContainer.
4.5.2.3 Data Structures and Variables
m_pGroupBox - pointer to the group box frame window associated with this object.
4.5.2.4 Functions/Methods
4.5.2.4.1 Actions
CCallbarFrame(CWnd* pWnd, CCallbarObjectContainer* pCont, CRect&
rcBounds, CString& sName, Cstring& sCaption);
The constructor of the CCallbarFrame class performs the following functions:
1.
Store pWnd, pCont, rcBounds, and sName in respective member variables.
2.
Set the object type to CBAR_OBTYPE_FRAME.
3.
Create the group box using the caption specified in sCaption and assign it to the m_pGroupBox
member variable.
4.
Add self to the callbar manager’s global list by calling the CCallbarManager::AddGlobalObject
method.
~CCallbarFrame();
The destructor simply removes the frame object from the callbar manager’s global list using
CCallbarManager::RemoveGlobalObject, destroys the window represented by m_pGroupBox, and
deletes m_pGroupBox.
void Move(CRect& rcNew);
This method moves the frame object to the new coordinates specified by rcNew. In order to do this, it
calls the MoveWindow member of m_pGroupBox.
4.5.2.4.2 Properties
Wnd Property
The Wnd property represents the group box window allocated by the frame. It is a read-only property
and may be retrieved using the following method:
CWnd* GetWnd();
4.5.2.5 Startup
See the constructor for CCallbarFrame in section 4.5.2.4.
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-184.5.2.6 Shutdown
See the destructor for CCallbarFrame in section 4.5.2.4.
4.5.2.7 Error Messages
This class displays no user error messages.
4.5.2.8 Events for Event Log
This class logs failures to allocate memory.
4.5.3 CCallbarCIPFrame
4.5.3.1 Description
The CCallbarCIPFrame class inherits from CCallbarFrame, which allows it to act as a callbar object
container and to use the CCallbarFrame’s group box. However, CCallbarCIPFrame adds special call
handling features such as ordered CIP display and automatic window resizing.
4.5.3.2 Interfacing FUs/Classes
CCallbarFrame
CCallbarCIPFrame inherits all of its containment capabilities from CCallbarFrame.
CCallbarCIP
The CCallbarCIPFrame class creates CIPs when a new call must be displayed, and destroys them when a
call becomes idle. In order to accomodate these additions and subtractions, it stretches itself and moves all
surrounding objects (<57503-23>).
CIPs are created for both normal and bridged appearances (<57503-24>).
4.5.3.3 Data Structures and Variables
This class adds no member variables.
4.5.3.4 Functions/Methods
4.5.3.4.1 Actions
CCallbarCIP* AddCIP(HCALL hCall); (<57503-23>)
1.
Calculate the rectangle for our new CIP.
2.
Calculate a delta value for resizing of the frame window and movement of objects.
3.
Resize the main callbar to accommodate the height of the added CIP.
4.
Adjust the height of the frame using the delta.
5.
Adjust the positions of objects and the callbar window height using the delta with the
ShiftObjectsDown call.
6.
Create a new CIP, set its call handle, and add the object to our list using AddCallbarObject.
7.
Set the CIP button’s indicator to the button ID associated with this HCALL.
8.
Return the new CIP pointer.
CCallbarCIPFrame(CWnd* pWnd, CCallbarObjectContainer* pCont, CRect&
rcBounds, CString& sName, Cstring& sCaption);
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-19The constructor of the CCallbarFrame class performs the following functions:
1.
Store pWnd, pCont, rcBounds, and sName in respective member variables.
2.
Set the object type to CBAR_OBTYPE_CIPFRAME.
3.
Adjust the height of the specified rectangle such that the CIP frame will be displayed in its “no
calls” size.
4.
Create the group box using the caption specified in sCaption and assign it to the m_pGroupBox
member variable.
5.
Add self to the callbar manager’s global list by calling the CCallbarManager::AddGlobalObject
method.
~CCallbarCIPFrame();
The destructor simply removes the frame object from the callbar manager’s global list using
CCallbarManager::RemoveGlobalObject, destroys the window represented by m_pGroupBox, and
deletes m_pGroupBox.
void DrawControl(CRect& rcNew);
This event is simply passed on to all objects owned by this CIP frame.
void GetHCallCIP(HCALL hCall);
Loop through the m_parCallbarObjects array looking for a CIP whose HCALL is set to that specified.
If found, return the CIP pointer.
void GetIndexCIP(HCALL hCall);
Loop through the m_parCallbarObjects array looking for a CIP whose HCALL is set to that specified.
If found, return the index of the CIP in the m_parCallbarObjects array.
void Move(CRect& rcNew);
This method moves the frame object to the new top, left, and right coordinates specified by rcNew,
and modifies the bottom coordinate such that the height of the frame doesn’t change.
void OnCallStateChange(HCALL hCall, DWORD dwCallState);
1.
Look up the CIP associated with this HCALL using GetHCallCIP. If there is no CIP associated
with this HCALL, add a new CIP using AddCIP.
2.
If the call state is LINECALLSTATE_IDLE or LINECALLSTATE_CONFERENCED, remove
the CIP associated with the call (if any).
3.
If the call state transitions from LINECALLSTATE_OFFERING to
LINECALLSTATE_CONNECTED for a given CIP, call the callbar manager’s
AutoPlayAnnouncement method.
4.
If the call state transitions from LINECALLSTATE_CONNECTED to any other state for a given
CIP, call the callbar manager’s StopAnnouncement method to stop any currently-playing
announcement.
5.
For any other call state, if there is not currently a CIP allocated for this HCALL, create one.
6.
Reset the CIP’s call state.
void RemoveCIP(HCALL hCall);
1.
Retrieve a pointer to the CIP associated with this HCALL and get the CIP’s index in the
m_parCallbarObjects array.
2.
Remove this CIP from our object array.
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-203.
Calculate the vertical size change necessary.
4.
Move CIPs to adjusted locations.
5.
Adjust height of the CIP frame.
6.
Move callbar object up by passing the negative size change to ShiftObjectsDown.
7.
Resize the callbar window.
4.5.3.4.2 Properties
NumCIPs Property
The NumCIPs property represents the number of CIPs currently maintained by this CIP frame. It is a
read-only property and may be retrieved using the following method:
int GetNumCIPs();
This method loops through the m_parCallbarObjects array and counts all of the CIP objects.
Wnd Property
The Wnd property represents the group box window allocated by the frame. It is a read-only property
and may be retrieved using the following method:
CWnd* GetWnd();
4.5.3.5 Startup
See the constructor for CCallbarCIPFrame in section 4.5.3.4.
4.5.3.6 Shutdown
See the destructor for CCallbarCIPFrame in section 4.5.3.4.
4.5.3.7 Error Messages
This class displays no user error messages.
4.5.3.8 Events for Event Log
This class logs failures to allocate memory and out-of-bounds requests to its member functions.
4.6 Callbar Objects
4.6.1 CCallbarObject
4.6.1.1 Description
CCallbarObject is the root class of all callbar object classes. It provides all common properties of callbar
objects, and also inherits from CObject and the IControlDraw interface.
4.6.1.2 Interfacing FUs/Classes
CObject
Although callbar loading and saving are not supported in this release of the product, the CCallbarObject
class is derived from CObject, allowing for standardized serialization in the future.
IControlDraw
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-21CCallbarObject inherits this interface to provide a generic means through which a container may ask a
callbar object to paint itself. This is useful for windowless objects such as indicators, or for objects which
combine windowed and windowless objects, such as CIPs.
4.6.1.3 Data Structures and Variables
m_pCont - a pointer to this object’s callbar object container. Data storage for the Container property.
m_pOwner - a pointer to this object’s parent window. Data storage for the ParentWindow property.
m_rcBounds - the current bounding rectangle of this object within its parent window. Data storage for the
BoundingRect property.
m_sName - the name of this object. Data storage for the Name property.
m_dwObType - the type of this object. Data storage for the ObjectType property.
m_nControlID - the Windows control ID of this object. Data storage for the ControlID property.
m_sAssociatedObject - the value of the sName property for an object associated with this object. Used by
MakeCall buttons to determine their associated CCallbarCombo, and by CIP buttons to find their CIP
owner. Data storage for the AssociatedObject property.
4.6.1.4 Functions/Methods
4.6.1.4.1 Actions
void DrawControl(CDC* pDC);
This method performs no actions; it is simply a default implementation.
void Move(CRect& rcNew);
This method sets m_rcBounds to the new rectangle.
void Serialize(CArchive& ar);
This method is a placeholder for future functionality.
4.6.1.4.2 Properties
The following properties are common to all callbar objects.
AssociatedObject Property
The AssociatedObject property is a string containing the name assigned to an object associated with
this object. This association can come in several forms:
•
For CIP buttons, the associated object is the owning CIP; therefor, this property would be set to
the name of the CIP.
•
For MakeCall buttons, this property is set to the name of a combo box from which to obtain a
string to dial.
The AssociatedObject property may be set or retrieved using these methods:
CString GetAssociatedObject();
void SetAssociatedObject(CString& sObjectName);
BoundingRect Property
The BoundingRect property represents the parent-window rectangle into which the object will be
drawn. Setting this property is equivalent to using the Move method.
The Font property may be set or retrieved using these methods:
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-22CRect GetBoundingRect();
void SetBoundingRect(CRect& rcNew);
Container Property
The Container property a pointer to the callbar object container which contains this object. It is readonly and may be retrieved using the following method:
CCallbarObjectContainer* GetContainer();
ControlID Property
The ControlID property holds the Windows control ID for a control associated with a callbar object
(button, combo, etc.). This value is used by the callbar manager when it is reacting to callbar events
(i.e., OnCallbarButton).
The ControlID property is read-only and may be retrieved using the following method:
CString GetControlID();
Name Property
The Name property is the reference string used by objects to find one another, as in CIP button which
must look up its owning CIP.
The Name property may be set or retrieved using these methods:
CString GetName();
void SetName(CString& sName);
ObjectType Property
The ObjectType property contains the type of this object (button, combo, CIP, etc.). It may be set to
any one of the following constants:
CBAR_OBTYPE_BUTTON
CBAR_OBTYPE_CIP
CBAR_OBTYPE_INDICATOR
CBAR_OBTYPE_COMBO
CBAR_OBTYPE_DROPLIST
CBAR_OBTYPE_FRAME
CBAR_OBTYPE_CIPFRAME
CBAR_OBTYPE_DISPLAY
CBAR_OBTYPE_STATIC
CBAR_OBTYPE_SLIDER
The ObjectType property is read-only (set only during construction) and may be retrieved using the
following method:
DWORD GetObjectType();
ParentWindow Property
The ParentWindow property maintains a pointer to the CWnd which is the parent of this callbar
object. This property only applies to windowed objects.
The ParentWindow property is read-only may be retrieved using the following method:
CWnd* GetParentWindow();
4.6.1.5 Startup
This class has only a default constructor.
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-234.6.1.6 Shutdown
No special actions are taken in the destructor of this class.
4.6.1.7 Error Messages
This class displays no user error messages.
4.6.1.8 Events for Event Log
This class logs no errors.
4.6.2 CCallbarButton
4.6.2.1 Description
The CCallbarButton class manages the appearance and characteristics of a callbar button, an entity which
can take on many forms and meanings. Callbar buttons perform the following functions:
•
•
•
•
•
•
•
Activate a set feature
Activate a Feature Access Code (FAC)
Dial a digit
Create a call
Play/Stop an announcement
Dial a speed-dial number
Display another callbar
4.6.2.2 Interfacing FUs/Classes
CCallbarManager
When an instance of the CCallbarButton class is created, it registers itself with the callbar manager. The
callbar manager is responsible for handling all Windows control events sent to the button through
CCallbarManager::OnCallbarButton.
4.6.2.3 Data Structures and Variables
Besides the members it inherits from CCallbarObject, CCallbarButton contains the following members:
m_pButton - Instance of the CButton class owned by this object
m_pIndicator - Instance of the CCallbarIndicator class owned by this object. Data storage for the
Indicator property.
m_dwBtnType - Action to be performed by this button. Data storage for the ButtonType property.
m_dwCurrCIPFunc - Current state of a CIP button. Data storage for the CurrCIPFunc property.
m_dwIndicType - Type of indictor displayed with this button. Data storage for the IndicType property.
m_sFeatString - String associated with the current button type. Data storage for the FeatString property.
m_dwFeatIndex - Index of feature associated with this button. Data storage for the FeatIndex property.
4.6.2.4 Functions/Methods
4.6.2.4.1 Actions
CCallbarButton(CWnd* pWnd, CCallbarObjectContainer* pCont, UINT nID,
CRect& rcBounds, CString& sName, CString& sCaption, LONG
lIndicatorType);
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-24The constructor for the CCallbarButton class performs the following function:
1.
Set the values of inherited members (m_pOwner, m_pCont, m_nControlID, m_rcBounds, and
m_sName).
2.
Set m_dwObType to CBAR_OBTYPE_BUTTON.
3.
If any type of indicator is requested other than CBAR_INDICTYPE_NONE, build the indicator,
calculate its position, and add it to our container.
4.
Create the button window using the supplied caption.
5.
Add this object to the callbar manager’s global object list.
~CCallbarButton();
The destructor for the CCallbarButton class removes this object from the callbar manager global list,
removes its indicator (if one exists) from its container, deletes the window which represents the
button by calling m_pButton-> DestroyWindow, and then deletes the button object pointed to by
m_pButton.
void Move(CRect& rc);
This method changes the current location of the button object within its parent window, moving the
button itself and any associated indicator. After modifying the value of the m_rcBounds member, it
invalidates the previous rectangle and the new rectangle, and then it calls MoveWindow for its
internal button object.
4.6.2.4.2 Properties
ButtonIcon Property
The ButtonIcon property represents the bitmap currently displayed on the button face. It may be set or
retrieved using these methods:
HICON GetIcon();
HICON SetIcon(HICON hIcon);
These methods directly call the CButton methods of the same names.
ButtonType Property
The ButtonType property maintains the type of function performed by this button. This value is set by
entities external to this object, but defaults to CBAR_BTNTYPE_FEATURE.
This property may be set to any one of the following values:
CBAR_BTNTYPE_SPEEDDIAL - a speed dial button (not supported in this release)
CBAR_BTNTYPE_MAKECALL - a button which places a call
CBAR_BTNTYPE_DIALPAD - a dialpad button (<57503-25>)
CBAR_BTNTYPE_CIP - a call information panel button
CBAR_BTNTYPE_FEATURE - a button representing a telephone feature
CBAR_BTNTYPE_FAC - a button which dials a Feature Access Code
CBAR_BTNTYPE_ANNOUNCE - a button which plays/stops announcements
CBAR_BTNTYPE_POPCB - a button which displays other callbars
The ButtonType property may be set or retrieved using these methods:
DWORD GetButtonType();
void SetButtonType(DWORD dwButtonType);
CurrCIPFunc Property
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-25The CurrCIPFunc property maintains the type of function performed by this button. This value is set
by entities external to this object, but defaults to CBAR_BTNTYPE_FEATURE.
This property may be set to any one of the following values:
CBAR_CURRCIPFUNC_RELEASE - the button currently displays the string “Release,” and will
release its call when it is pushed.
CBAR_CURRCIPFUNC_ANSWER - the button currently displays the string “Answer,” and will
answer its call when it is pushed.
CBAR_CURRCIPFUNC_UNHOLD - the button currently displays the string “Reconnect,” and will
unhold its call when it is pushed.
CBAR_CURRCIPFUNC_BRIDGEDANSWER - the button currently displays the extension of the
bridged appearance with which the call is associated, and will answer the call when it is pushed.
The CurrCIPFunc property may be set or retrieved using these methods:
DWORD GetCIPFunc();
void SetCIPFunc(DWORD dwFunc);
Indicator Property
The Indicator property allows access to the button’s indicator object.It is read-only and may be
retrieved using the following method:
CCallbarIndicator* GetIndicator();
IndicType Property
The IndicType property maintains the type of indicator this button displays. It may take on any of
these values:
CBAR_INDICTYPE_NONE - the button displays no indicator.
CBAR_INDICTYPE_CALLAPP - the button displays a line feature indicator with two lamps.
CBAR_INDICTYPE_FEAT - the button displays a feature indicator with one lamp.
The IndicType property is read-only and may be retrieved using the following method:
DWORD GetIndicType();
FeatString Property
The FeatString property contains a string used to perform the function assigned to a button; its
meaning is dependent upon the ButtonType property. The meanings of this property per button type
are as follows:
CBAR_BTNTYPE_SPEEDDIAL - the user-defined dial string (not supported in this release)
CBAR_BTNTYPE_DIALPAD - the digit to be dialed
CBAR_BTNTYPE_FEATURE - the PASTE name of the feature to be activated
CBAR_BTNTYPE_FAC - the PASTE name of the FAC to be activated
CBAR_BTNTYPE_POPCB - the name of the callbar to display
The FeatString property may be set and retrieved using the following methods:
CString GetFeatString();
void SetFeatString(CString& sFeat);
FeatIndex Property
The FeatIndex property indicates the depth to which the callbar manager should search in the PASTE
data table for a particular feature; for example, if this button represented the abrv-dial switch feature,
and we wished for this button to activate the third abbreviated dial button, then the value of this
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-26property would be three. This property is only used with the CBAR_BTNTYPE_FEATURE button
type.
The FeatString property may be set and retrieved using the following methods:
CString GetFeatIndex();
void SetFeatIndex(DWORD dwIndex);
4.6.2.5 Startup
See constructor in section 4.6.2.4.
4.6.2.6 Shutdown
See destructor in section 4.6.2.4.
4.6.2.7 Error Messages
This class displays no user error messages.
4.6.2.8 Events for Event Log
This class logs memory allocation errors.
4.6.3 CCallbarCIP
4.6.3.1 Description
The CCallbarCIP class displays a basic McFone telephony component, the Call Information Panel (CIP).
CIPs bind themselves to a call (specifically, to the TAPI HCALL) and provide information and services
for that call. CIPs show the display text for a call in a display area, display line-feature-like lamp status
using an indicator, and allow state-related call manipulation through a button.
4.6.3.2 Interfacing FUs/Classes
CCallbarCIPFrame
This derivative of the CCallbarFrame class handles the display of multiple CIPs, representative of
multiple incoming and outgoing calls. CCallbarCIPFrame creates CIPs when it detects a TAPI HCALL
for which it has not already created a CIP, and removes CIPs when their calls become idle.
4.6.3.3 Data Structures and Variables
Besides the members it inherits from CCallbarObject, CCallbarButton contains the following members:
m_pCBButton - Instance of the CCallbarButton class owned by this CIP. Data storage for the CIPButton
property.
m_dwCallState - Current TAPI state of the call associated with this CIP. Data storage for the CallState
property.
m_hCall - Action to be performed by this button. Data storage for the CallHandle property.
m_pDispFont - Current font for the CIP display text. Data storage for the Font property.
m_sDispText - Current display text. Data storage for the DispText property.
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-274.6.3.4 Functions/Methods
4.6.3.4.1 Actions
CCallbarCIP::CCallbarCIP(CWnd* pWnd, CCallbarObjectContainer* pCont,
UINT nID, CRect& rc, CString& sName);
The constructor for the CCallbarCIP class performs the following function:
1.
Set the values of inherited members (m_pOwner, m_pCont, m_nControlID, m_rcBounds, and
m_sName).
2.
Set m_dwObType to CBAR_OBTYPE_CIP.
3.
Create the font used in the display area.
4.
Create the CIP button.
5.
Add this object to the callbar manager’s global object list.
~CCallbarButton();
The destructor for the CCallbarCIP class removes this object from the callbar manager global list,
removes the CIP button from its container, and then deletes the display font.
void DrawControl(CDC* pDC);
This method performs the following actions:
1.
Draw a 3D rectangle around the display area specified by m_rcBounds.
2.
Draw the text in m_sDispText vertically centered and left-justified within m_rcBounds.
void Move(CRect& rcNew);
This method moves the CIP object to the new coordinates specified by rcNew. In order to do this, it
invalidates the current bounding rectangle, invalidates the new rectangle, updates the value of the
current bounding rectangle, and calls for a window update. Then it moves the button control using
CCallbarButton::Move.
void OnCallDisplayChange();
On receipt of this message, the CIP looks up the display for its HCALL using
CVICE::GetHCallDispString; if this display line is not blank, the CIP updates its DispText property
to reflect the change.
4.6.3.4.2 Properties
CallHandle Property
The CallHandle property represents the TAPI HCALL currently associated with this CIP. The
CallHandle property may be set or retrieved using these methods:
HCALL GetCallHandle();
void SetCallHandle(HCALL hCall);
CallState Property
The CallState property represents the current state of the TAPI call associated with this CIP. It can
take on the value of any TAPI LINECALLSTATE_ constant.
The CallState property may be set or retrieved using these methods:
DWORD GetCallState();
void SetCallState(DWORD dwCallState);
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-28This access method performs the following steps based on call state:
1.
Set the m_dwCallState member variable.
2.
If the new call state is LINECALLSTATE_CONNECTED, change the CIP button text to
“Release” and set the button function to CBAR_CURRCIPFUNC_RELEASE. If the
BS_DEFPUSHBUTTON style bit was previously added to this button, remove it (<575038>).
3.
If the new call state is LINECALLSTATE_ONHOLD, LINECALLSTATE_
ONHOLDPENDCONF, or LINECALLSTATE_ONHOLDPENDTRANSFER, change the
CIP button text to “Reconnect” and set the button function to CBAR_CURRCIPFUNC_
UNHOLD.
4.
If the new call state is LINECALLSTATE_OFFERING and the associated appearance is
bridged, set the CIP button text to display the extension of the bridged appearance; if the
appearance is not bridged, change the CIP button text to “Answer.” In both cases, set the
button function to CBAR_CURRCIPFUNC_ANSWER. If no other offering calls exist, add
the BS_DEFPUSHBUTTON style bit to the CIP button, making this the default button for
ENTER key presses (<57503-7>, <57503-39>).
CIPButton Property
The CIPButton property allows access to the CIP’s button object. It is read-only and may be retrieved
using the following method:
CCallbarButton* GetCIPButton();
DispText Property
The DispText property contains the current display string used in painting the CIP. It is empty by
default, but may be set or retrieved using these methods:
CString GetDispText();
void SetDispText(CString& sDisp);
Font Property
The Font property represents a pointer to a CFont object (m_sDispFont). This font is created and set
to a default value (Times New Roman, Normal, 20 ht.) in CCallbarCIP’s constructor, and the font
object is deleted when the CCallbarCIP object is deleted.
The Font property may be set or retrieved using these methods:
CFont GetFont();
void SetFont(CFont& font);
4.6.3.5 Startup
See constructor in section 4.6.3.4.
4.6.3.6 Shutdown
See destructor in section 4.6.3.4.
4.6.3.7 Error Messages
This class displays no user error messages.
4.6.3.8 Events for Event Log
This class logs memory allocation errors.
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-294.6.4 CCallbarCombo
4.6.4.1 Description
The CCallbarCombo class manages the appearance and characteristics of a callbar combo box. Callbar
combos are drop-down list boxes with writable text areas which are used for senderized dialing (<5750325>).
The CCallbarCombo class combo box window does not specifically limit the amount of characters which
may be entered by the user; this allows for the entry of 65,535 bytes in characters (<57503-33>).
4.6.4.2 Interfacing FUs/Classes
CCallbarManager
When an instance of the CCallbarCombo class is created, it registers itself with the callbar manager. The
callbar manager is responsible for handling all Windows control events sent to the combo.
4.6.4.3 Data Structures and Variables
Besides the members it inherits from CCallbarObject, CCallbarCombo contains the following members:
m_pCombo - Instance of the CComboBox class owned by this object. Data storage for the Combo
property.
4.6.4.4 Functions/Methods
4.6.4.4.1 Actions
CCallbarCombo(CWnd* pWnd, UINT nID, CRect& rcBounds, CString& sName);
The constructor for the CCallbarCombo class performs the following functions:
1.
Set the values of inherited members (m_pOwner, m_nControlID, m_rcBounds, and m_sName).
2.
Set m_dwObType to CBAR_OBTYPE_COMBO.
3.
Create the combo window using the supplied caption.
4.
Add this object to the callbar manager’s global object list.
~CCallbarCombo();
The destructor for the CCallbarCombo class removes this object from the callbar manager global list,
deletes the window which represents the combo by calling m_pCombo-> DestroyWindow, and then
deletes the combo object pointed to by m_pCombo.
void Move(CRect& rc);
This method changes the current location of the combo object within its parent window. After
modifying the value of the m_rcBounds member, it calls MoveWindow for its internal combo object.
4.6.4.4.2 Properties
Combo Property
The Combo property allows access to the combo control this object represents. This property is readonly and may be retrieved using the following method:
CComboBox* GetCombo();
4.6.4.5 Startup
See constructor in section 4.6.4.4.
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-304.6.4.6 Shutdown
See destructor in section 4.6.4.4.
4.6.4.7 Error Messages
This class displays no user error messages.
4.6.4.8 Events for Event Log
This class logs memory allocation errors.
4.6.5 CCallbarDisplay
4.6.5.1 Description
The CCallbarDisplay class shows all 2nd-line display text sent by the switch (i.e., Date/Time, Call
Prompting Digits, Directory, etc.) (<57503-32>). It is drawn as a simple 3D rectangle with embedded text
on the DC of its container; it does not have a window of its own.
4.6.5.2 Interfacing FUs/Classes
CCallbarManager
When an instance of the CCallbarDisplay class is created, it registers itself with the callbar manager.
Thereafter, when the callbar manager receives 2nd-line display change notifications from the VICE layer
through VICE calls to CCallbarManager::OnDispLine2Change, all instances of CCallbarDisplay are
notified of the update.
4.6.5.3 Data Structures and Variables
m_pDispFont - pointer to the current CFont object being used to paint display text. Data storage for this
object’s Font property.
m_sDispText - string containing the current display contents. Data area for this object’s DispText
property.
4.6.5.4 Functions/Methods
4.6.5.4.1 Actions
CCallbarDisplay(CWnd* pWnd, CCallbarObjectContainer* pCont, CRect&
rcBounds, CString& sName);
The constructor of the CCallbarDisplay class performs the following functions:
1.
Store pWnd, pCont, rcBounds, and sName in respective member variables.
2.
Set the object type to CBAR_OBTYPE_DISPLAY.
3.
Set initial display text (m_sDispText) to a blank string.
4.
Allocate a CFont object and assign it to m_pDispFont. Create the default font for display text.
5.
Add self to the callbar manager’s global list by calling the CCallbarManager::AddGlobalObject
method.
~CCallbarDisplay();
The destructor simply removes the display object from the callbar manager’s global list using
CCallbarManager::RemoveGlobalObject and deletes m_pDispFont.
void DrawControl(CDC* pDC);
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-31This method performs the following actions:
1.
Draw a 3D rectangle around the display area specified by m_rcBounds.
2.
Draw the text in m_sDispText vertically centered and left-justified within m_rcBounds.
void Move(CRect& rcNew);
This method moves the display object to the new coordinates specified by rcNew. In order to do this,
it invalidates the current bounding rectangle, invalidates the new rectangle, updates the value of the
current bounding rectangle, and calls for a window update.
4.6.5.4.2 Properties
The following properties extend those properties which the CCallbarDisplay class inherits from the
CCallbarObject class. They represent those characteristics peculiar to callbar display objects.
DispText Property
The DispText property contains the current display string used in painting the object. It is empty by
default, but may be set or retrieved using these methods:
CString GetDispText();
void SetDispText(CString& sDisp);
Font Property
The Font property represents a pointer to a CFont object (m_sDispFont). This font is created and set
to a default value (Times New Roman, Normal, 20 ht.) in CCallbarDisplay’s constructor, and the font
object is deleted when the CCallbarDisplay object is deleted.
The Font property may be set or retrieved using these methods:
CFont GetFont();
void SetFont(CFont& font);
4.6.5.5 Startup
See the constructor for CCallbarDisplay in section 4.6.5.4.
4.6.5.6 Shutdown
See the destructor for CCallbarDisplay in section 4.6.5.4.
4.6.5.7 Error Messages
This class displays no user error messages.
4.6.5.8 Events for Event Log
This class logs failures to allocate memory.
4.6.6 CCallbarDroplist
4.6.6.1 Description
The CCallbarDroplist class manages the appearance and characteristics of a callbar drop-down text
(droplist) box. Callbar droplists are drop-down list boxes with read-only text areas which are used for
announcement selection.
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-324.6.6.2 Interfacing FUs/Classes
CCallbarManager
When an instance of the CCallbarDroplist class is created, it registers itself with the callbar manager. The
callbar manager is responsible for handling all Windows control events sent to the droplist.
4.6.6.3 Data Structures and Variables
Besides the members it inherits from CCallbarObject, CCallbarDroplist contains the following members:
m_pCombo - Instance of the CComboBox class owned by this object. Data storage for the Combo
property.
4.6.6.4 Functions/Methods
4.6.6.4.1 Actions
CCallbarDroplist(CWnd* pWnd, UINT nID, CRect& rcBounds, CString& sName);
The constructor for the CCallbarDroplist class performs the following functions:
1.
Set the values of inherited members (m_pOwner, m_nControlID, m_rcBounds, and m_sName).
2.
Set m_dwObType to CBAR_OBTYPE_DROPLIST.
3.
Create the droplist window.
4.
Add this object to the callbar manager’s global object list.
~CCallbarDroplist();
The destructor for the CCallbarDroplist class removes this object from the callbar manager global list,
deletes the window which represents the droplist by calling m_pCombo-> DestroyWindow, and then
deletes the combo object pointed to by m_pCombo.
void Move(CRect& rc);
This method changes the current location of the droplist object within its parent window. After
modifying the value of the m_rcBounds member, it calls MoveWindow for its internal combo object.
4.6.6.4.2 Properties
Combo Property
The Combo property allows access to the combo control this object represents. This property is readonly and may be retrieved using the following method:
CComboBox* GetCombo();
4.6.6.5 Startup
See constructor in section 4.6.4.4.
4.6.6.6 Shutdown
See destructor in section 4.6.4.4.
4.6.6.7 Error Messages
This class displays no user error messages.
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-334.6.6.8 Events for Event Log
This class logs memory allocation errors.
4.6.7 CCallbarIndicator
4.6.7.1 Description
The CCallbarIndicator class displays either a one or two Definity-style lamps, analogous to Definity
feature and line feature buttons, repectively. Indicators are usually associated with buttons of the
CBAR_BTNTYPE_FEATURE button type.
4.6.7.2 Interfacing FUs/Classes
CCallbarManager
When an instance of the CCallbarIndicator class is created, it registers itself with the callbar manager.
Thereafter, when the callbar manager receives lamp update notifications through OnLampStateChange,
these notifications are passed to the indicator.
4.6.7.3 Data Structures and Variables
m_dwBtnID - the TAPI button ID assigned to this indicator. Data Storage for the BtnID property.
m_dwCurrentIndicState - state of the “current call” (red) indicator lamp. Data Storage for the
CurrentIndicState property.
m_dwIndicatorType - type of indicator displayed by this object. Data Storage for the IndicatorType
property.
m_dwStatusIndicFlashState - on/off state of the status indicator (green) lamp within the context of its
current flash pattern. Data storage for the StatusIndicFlashState property.
m_dwStatusIndicState - state of the status (green) indicator lamp. Data Storage for the StatusIndicState
property.
4.6.7.4 Functions/Methods
4.6.7.4.1 Actions
CCallbarIndicator(CWnd* pWnd, CCallbarObjectContainer* pCont, CRect&
rcBounds, CString& sName, DWORD dwIndicatorType);
The constructor of the CCallbarIndicator class performs the following functions:
1.
Store pWnd, pCont, rcBounds, sName and dwIndicatorType in respective member variables.
2.
Set the object type to CBAR_OBTYPE_INDICATOR.
3.
Allocate a CFont object and assign it to m_pDispFont. Create the default font for display text.
4.
Register with the pulse generator object for lamp flash pattern pulses.
5.
Add self to the callbar manager’s global list by calling the CCallbarManager::AddGlobalObject
method.
~CCallbarIndicator();
The destructor simply unregisters from the pulse generator and removes this object from the callbar
manager’s global list.
void DrawControl(CDC* pDC);
This method performs the following actions:
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-341.
Determine the colors of the current call and status indicators based on indicator state.
2.
If the indicator type is CBAR_INDICTYPE_CALLAPP, draw the current and status lamps with
3D rectangle on their perimeters.
3.
If the indicator type is CBAR_INDICTYPE_FEAT, draw only the status lamp with a 3D
rectangle on its perimeter.
void IndicatorPulse(LONG lStatusIndicState);
This method is called by the pulse generator object on every lamp pulse interval. lStatusIndicState is a
bitmap which indicates this interval’s on/off flash state for every lamp flash type. This method
performs the following steps:
1.
AND the bitmap with the value of the StatusIndicState property to determine the on/off flash
state of our flash type for this interval.
2.
If our flash state has changed, redraw the status lamp by invalidating its area and requesting an
update.
void Move(CRect& rcNew);
This method moves the indicator object by invalidating the lamp’s current position, resetting the
lamp’s rectangle to rcNew, and invalidating the lamp’s new position.
4.6.7.4.2 Properties
The following properties extend those properties which the CCallbarIndicator class inherits from the
CCallbarObject class. They represent those characteristics peculiar to callbar indicator objects.
BtnID Property
The BtnID property is the TAPI button ID used by this indicator to determine the lamp state
notifications upon which it should update itself . It may be set or retrieved using these methods:
DWORD GetBtnID();
void SetBtnID(DWORD dwBtnID);
CurrentIndicState Property
The CurrentIndicState property determines the state of the “current call” (red) indicator lamp. This
may be either of the following values:
CBAR_INDICSTATE_OFF
CBAR_INDICSTATE_STEADY
The CurrentIndicState property may be set or retrieved using these methods:
DWORD GetCurrentIndicState();
void SetCurrentIndicState(DWORD dwIndicState);
IndicatorType Property
The IndicatorType property determines the type of indicator which will be displayed. This may be
either of the following values:
CBAR_INDICTYPE_CALLAPP - a two-lamp line feature indicator
CBAR_INDICTYPE_FEAT - a one-lamp feature indicator
The IndicatorType property may be set or retrieved using these methods:
DWORD GetIndicatorType();
void SetIndicatorType(DWORD dwIndicType);
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-35StatusIndicFlashState Property
The StatusIndicFlashState property determines the current display state of the status indicator lamp
within its flash pattern. This may be either of the following values:
CBAR_INDICFLASH_OFF
CBAR_INDICFLASH_ON
The StatusIndicFlashState property is read-only and may be retrieved using the following method:
DWORD GetStatusIndicFlashState();
StatusIndicState Property
The StatusIndicState property determines the state of the status (green) indicator lamp. This may be
one of the following values:
CBAR_INDICSTATE_OFF
CBAR_INDICSTATE_STEADY
CBAR_INDICSTATE_WINK
CBAR_INDICSTATE_INVWINK
CBAR_INDICSTATE_FLASH
CBAR_INDICSTATE_FLUTTER
CBAR_INDICSTATE_BRKFLUTTER
The StatusIndicState property may be set or retrieved using these methods:
DWORD GetStatusIndicState();
void SetStatusIndicState(DWORD dwIndicState);
4.6.7.5 Startup
See the constructor for CCallbarIndicator in section 4.6.7.4.
4.6.7.6 Shutdown
See the destructor for CCallbarDisplay in section 4.6.7.4.
4.6.7.7 Error Messages
This class displays no user error messages.
4.6.7.8 Events for Event Log
This class logs failures to allocate memory.
4.6.8 CCallbarSlider
4.6.8.1 Description
The CCallbarSlider class manages the appearance and characteristics of a callbar slider. Callbar sliders
are sliders that are used
4.6.8.2 Interfacing FUs/Classes
CCallbarManager
When an instance of the CCallbarSlider class is created, it registers itself with the callbar manager. The
callbar manager is responsible for handling all Windows control events sent to the slider.
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-364.6.8.3 Data Structures and Variables
Besides the members it inherits from CCallbarObject, CCallbarSlider contains the following members:
m_pSlider - Instance of the CSliderCtrl class owned by this object. Data storage for the Combo property.
m_iPosition - Current position of the slider
m_iType - Type of slider, ringer or headset volume.
4.6.8.4 Functions/Methods
4.6.8.4.1 Actions
CCallbarSlider(CWnd* pWnd, CCallbarObjectContainer* pCont, UINT nID,
CRect& rcBounds, CString& sName, UINT iType);
The constructor for the CCallbarDroplist class performs the following functions:
1.
Set the values of inherited members (m_pOwner, m_pCont, m_nControlID, m_rcBounds, and
m_sName),
2.
Set m_dwObType to CBAR_OBTYPE_SLIDER,
3.
Create the slider window,
4.
Add this object to the callbar manager’s global object list,
5.
Set the slider range,
6.
Get the current headset or ringer volume and
7.
Initialize the slider to the current volume.
~CCallbarSlider();
The destructor for the CCallbarDroplist class removes this object from the callbar manager global list,
deletes the window which represents the slider by calling m_pSlider -> DestroyWindow, and then
deletes the slider object pointed to by m_pSlider.
void Move(CRect& rc);
This method changes the current location of the slider object within its parent window. After
modifying the value of the m_rcBounds member, it calls MoveWindow for its internal combo object.
4.6.8.4.2 Properties
Slider Property
The Slider property allows access to the slider control this object represents. This property is readonly and may be retrieved using the following method:
CSliderCtrl * GetSlider();
Type Property
The Type property allows access to the type of slider control this object represents. This may be one
of the following values:
CBAR_SLRTYPE_VOLUME
CBAR_SLRTYPE_RINGER
Position Property
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-37The Position property allows access to the current position of the slider control. This property may be
set or retrieved using the following method:
UINT GetPosition()
void SetPosition(UINT iPosition)
4.6.8.5 Startup
See constructor in section 4.6.4.4.
4.6.8.6 Shutdown
See destructor in section 4.6.4.4.
4.6.8.7 Error Messages
This class displays no user error messages.
4.6.8.8 Events for Event Log
This class logs memory allocation errors.
4.7 Telephony Management Classes
4.7.1 CVICE
4.7.1.1 Description
CVICE is the telephony abstraction layer of the McFone CVA release. It presents telephony, PASTE, and
voice recorder functionality as a set of uniform class methods.
4.7.1.2 Interfacing FUs/Classes
CCallbarManager, TAPI Callbacks
All of the listed entities call CVICE members to invoke telephony commands.
4.7.1.3 Data Structures and Variables
m_pDisplayCache - instance of the CDisplayCache class used to track the current display contents of
each line
m_pPhoneCaps - pointer to the TAPI PHONECAPS structure for our phone.
m_pRecorder - pointer to the voice recorder object.
m_pSizeOfPasteStructures - pointer to a structure which indicates how large the various PASTER arrays
are.
m_pFeatureAccessCodes - pointer to an array of PASTER-allocated FeatureAccessCodes structures.
m_pButtonAssignments - pointer to an array of PASTER-allocated ButtonAssignments structures.
4.7.1.4 Functions/Methods
void ActivateFAC(CString sFAC);
1. Look up the dial string of the FAC by searching the m_pFeatureAccessCodes array.
2.
If found, dial the FAC using the TAPI lineMakeCall function (<57503-42>).
void ActivateFeature(CString sFeature, LONG lIndex);
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-381. Look up the button number of the feature using GetButtonByFeature.
2.
Press the button using the TAPI lineDevSpecificFeature function (<57503-43>).
void AnswerCall(HCALL hCall);
Call TAPI’s lineAnswer function with the supplied HCALL. (<57503-6>)
NOTE: If a call is currently active, this API function will place that call on hold before activating the
new call (<57503-9>).
DWORD ButtonIDFromPasteID(CString sType, DWORD dwPasteID);
1.
If dwPasteID is a number which appears on the 3rd or 4th 606A1 administration screen (as
indicated by sType), multiply (dwPasteID - 1) by two (to account for TAPI’s phantom lamps) and
add this number to TAPI_LINEFEAT_BASE to get the button ID.
2.
If dwPasteID is a number which appears on the 5th 606A1 administration screen (as indicated by
sType), multiply (dwPasteID - 1) by two (to account for TAPI’s phantom lamps) and add this
number to TAPI_COVE_BASE to get the button ID.
3.
If dwPasteID is a number which appears on the 6th 606A1 administration screen (as indicated by
sType), add (dwPasteID - 35) to TAPI_PROGFEAT_BASE to get the button ID. 35 is the
starting PASTE ID of the 6th administration screen.
4.
Return the button ID ORed with TAPI_BTN_BASE.
CVICE();
1.
Default member variables to NULL or 0 as appropriate.
2.
Call PasterReadPASTEData to read the PASTE file data into
m_pSizeOfPasteStructures, m_pFeatureAccessCodes, m_pButtonAssignments.
3.
If the return code from PasterReadPASTEData indicates partial or no PASTE file data,
do the following:
A.
Ask the user if a PASTE download should commence.
B.
If the user approves a PASTE download, display an instance of the
CPasteProgressDlg Dialog box and call PasterGetPASTEData.
C.
If the return code from PasterGetPASTEData indicates success, call
PasterReadPASTEData once again. If this call fails, display the error message listed
in section 4.7.1.7.2.
~CVICE();
Delete allocated memory referenced by m_pSizeOfPasteStructures, m_pFeatureAccessCodes,
m_pButtonAssignments.
void DialString(CString sDialString);
For each character in sDialString, perform the following steps:
1.
If the character is a comma, sleep for an amount of time specified by current TAPI settings.
2.
For all other characters, call lineDevSpecificFeature to dial the digit. If this function returns
LINEERR_RESOURCEUNAVAIL, wait 500 milliseconds and retry up to three times.
DWORD GetButtonByFeature(LONG lIndex, CString& sFeatureName);
1.
Search the special features table for the feature name. If this feature is in the special features
table, return the feature’s button number by calling GetButtonByFunction.
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-392.
If the feature is not in the special features table, search the m_pButtonAssignments array for
instances of the sFeatureName feature; find the instance of the feature specified by the lIndex
parameter.
3.
If the feature exists in PASTE data, call ButtonIDFromPasteID with the PASTE order number
and return the TAPI button ID.
DWORD GetButtonByFunction(LONG lIndex, DWORD dwFunction);
1.
If the dwFunction parameter contains the special value ALL_CALLAPPS, search the
m_pPhoneCaps button functions array for all call appearance types (normal and bridged). Return
the button number of the appearance corresponding to the offset given by lIndex.
2.
In all other cases, search the m_pPhoneCaps button functions array for the instance of
dwFunction specified by lIndex.
DWORD GetRecorderState();
1.
Call phoneGetData with the DATAID_QUERY identifier.
2.
Return the recorder status.
BOOL InitTAPI();
1.
Initialize the TAPI line device using lineInitialize.
2.
Find the line corresponding to the Definity line device using FindLineDevice.
3.
Negotiate TAPI line API and extension versions using lineNegotiateAPIVersion and
lineNegotiateExtVersion, respectively.
4.
Open the line using lineOpen.
5.
Set up required line status messages using lineSetStatusMessages.
6.
Use lineGetLineDevStatus to monitor the line device such that the function does not proceed
until the device status bit LINEDEVSTATUSFLAGS_CONNECTED is on.
7.
Initialize the TAPI phone device using phoneInitialize.
8.
Find the line corresponding to the Definity phone device.
9.
Negotiate TAPI phone API and extension versions using phoneNegotiateAPIVersion and
phoneNegotiateExtVersion, respectively.
10. Open the phone using phoneOpen.
11. Retrieve and store the PHONECAPS structure.
12. Set up required phone status messages using PhoneSetStatusMessages.
13. Create the voice recorder object and assign it to m_pRecorder.
void MakeCall(CString sDialString);
1.
Translate the dial string using the VICE TranslateDialString method.
2.
Use the TAPI lineMakeCall method to place the call.
3.
If an error occurs, display an error message indicative of call placement failure.
void PlayGreeting(LONG lGreeting);
Call the Play method of the VICE internal recorder object.
void RecordGreeting(LONG lGreeting);
Call the Record method of the VICE internal recorder object.
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-40void RefreshCalls(); (<57503-1>)
1.
Collect currently-active calls using the TAPI lineGetNewCalls function.
2.
For each call, pass the call handle and current state to the Callbar Manager for distribution.
void ReleaseCall(HCALL hCall);
Call TAPI’s lineRelease function with the supplied HCALL.
void StopGreeting();
Call the Stop method of the VICE internal recorder object.
CString TranslateDialString(CString sDialString);
1.
Translate string characters according to Table 2 (<57503-34>).
2.
Return the translated string.
Characters
Send
A, B, and C
2
D, E, and F
3
G, H, and I
4
J, K, and L
5
M, N, and O
6
P, Q, R, and S
7
T, U, and V
8
W, X, Y, and Z
9
comma (pause)
no translation
0 through 9, *, #
no translation
all others
remove
Table 2. Dial String Character Map
void UnholdCall(HCALL hCall);
Call TAPI’s lineUnhold function with the supplied HCALL.
BOOL UninitTAPI();
1.
Delete m_pPhoneCaps.
2.
Close the phone.
3.
Shut down the phone device.
4.
Close the line.
5.
Shut down the line device.
6.
Delete m_pRecorder.
4.7.1.5 Startup
See the CVICE constructor in section 4.7.1.4.
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-414.7.1.6 Shutdown
N/A
4.7.1.7 Error Messages
4.7.1.7.1 Failed to place call
This message indicates a failure to place a call using the TAPI lineMakeCall method. It is displayed with
an OK button.
4.7.1.7.2 Could not load switch data
This message indicates a failure to load PASTE data after a PASTE download; it informs the user that
some telephone functionality will not be available, and that PASTE download should be attempted again
in the future. It is displayed with an OK button.
4.7.1.8 Events for Event Log
CVICE logs all TAPI function call errors and memory allocation errors.
4.7.2 TAPI Line Callback (LineCallback)
4.7.2.1 Description
This callback function handles receipt and distribution of all TAPI line messages. Where appropriate,
notifications may be sent to the callbar manager or the VICE layer, or they may be handled internally by
the callback function.
4.7.2.2 Interfacing FUs/Classes
CCallbarManager
Most notifications are sent directly to the callbar manager for interface updates; these include messages
such as call state changes via LINE_CALLSTATE.
4.7.2.3 Data Structures and Variables
N/A
4.7.2.4 Interpreted Messages
LINE_CALLSTATE
This message is the heartbeat of McFone’s call processing engine. Whenever LineCallback gets a call
state change notification, it forwards the call handle and the state change to the call manager object
through the OnCallStateChange method, with the notable exception of LINECALLSTATE_IDLE.
When it receives this message, LineCallback passes the message to the callbar manager, and then it
deallocates the call using lineDeallocateCall, conserving limited TAPI memory resources.
TAPI sends this message on calls generated by both switch-generated and user-generated events
(<57503-26>). It also sends the message if the telephone event was triggered by actions in another
application (TAPI or TSAPI) (<57503-27>).
LINE_CLOSE
Upon receipt of this message, the following steps are performed:
1.
Inform the user that the application can no longer run.
2.
Exit the application.
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-42LINE_DEVSTATE
TAPI sends this message whenever the state of the line device changes; it is this message we use to
monitor the health of the link to the telephone and to log link state changes. (<57503-2>, <57503-3>)
Four of notifications within this message are of interest to us:
LINEDEVSTATE_CONNECTED - tells us when the phone has been reconnected to the PC after a
disconnection. When LineCallback receives this message, it logs the status change. It also calls
the VICE RefreshCalls method to re-sync the user interface with the phone. (<57503-4>,
<57503-28>)
LINEDEVSTATE_DISCONNECTED - tells us when the phone has been disconnected from the PC.
When LineCallback receives this message, it logs the status change.
LINEDEVSTATE_INSERVICE - tells us when the phone has been reconnected to the switch after a
disconnection. When LineCallback receives this message, it logs the status change. It also calls
the VICE RefreshCalls method to re-sync the user interface with the phone. (<57503-4>,
<57503-28>)
LINEDEVSTATE_DISCONNECTED - tells us when the phone has been disconnected from the
switch. When LineCallback receives this message, it logs the status change.
This message is also forwarded to the call manager object’s OnConnectionStateChange method so
that it may perform relevant user interface updates.
LINE_REPLY
Whenever LineCallback receives this message, it logs 1) the request ID with which the message is
associated and 2) the success or failure code.
Each of these messages is connected to a TAPI function call which returned a request ID earlier; the
request IDs for these function calls are logged by the caller for references to LINE_REPLY messages.
Also, if the reply is associated with a failed lineMakeCall request, display a message box informing
the user.
4.7.2.5 Startup
N/A
4.7.2.6 Shutdown
N/A
4.7.2.7 Error Messages
This callback displays no user error messages.
4.7.2.8 Events for Event Log
This callback logs the following events:
•
TAPI function call errors
•
TAPI LINE_REPLY error codes
•
Memory allocation errors
4.7.3 TAPI Phone Callback (PhoneCallback)
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-434.7.3.1 Description
This callback function handles receipt and distribution of all TAPI phone messages. Where appropriate,
notifications may be sent to the callbar manager or the VICE layer, or they may be handled internally by
the callback function.
4.7.3.2 Interfacing FUs/Classes
CVICE
Voice recorder notifications are routed by the callback to VICE, which sends these messages to its internal
CVoiceRecorder object. This object 1) updates its internal voice recorder data and 2) passes notifications
on to any current instance of the CRecorderDlg class, if one exists.
CCallbarManager
Lamp, display and voice recorder notifications are sent directly to the callbar manager for interface
updates.
4.7.3.3 Data Structures and Variables
N/A
4.7.3.4 Interpreted Messages
PHONE_CLOSE
Upon receipt of this message, the following steps are performed:
1.
Set phone device handles to NULL.
2.
Release the CVICE PHONECAPS structure referenced by m_pPhoneCaps.
3.
Set m_pPhoneCaps to NULL.
4.
Inform the user that the application will no longer have phone-related functionality.
PHONE_DEVSPECIFIC
We receive voice recorder status messages through his event. These messages are passed directly to
VICE for processing and distribution.
PHONE_REPLY
Whenever PhoneCallback receives this message, it logs 1) the request ID with which the message is
associated and 2) the success or failure code.
Each of these messages is connected to a TAPI function call which returned a request ID earlier; the
request IDs for these function calls are logged by the caller for references to PHONE_REPLY
messages.
PHONE_STATE
Most status messages of importance to us arrive via this message. PhoneCallback acts upon receipt of
the following Param1 values:
PHONESTATE_DISPLAY
PhoneCallback parses display lines into two categories: Call-related and non-call-related. It
determines if a first-line display is call-related by verifying that a) the first character of the
display is an alphanumeric character and that 2) the second character is an equal (=) sign. Any
display message on the first line which does not meet these criteria is considered to be non-callrealted. All second-line display strings are treated as non-call displays.
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-44Once these determinations have been made, call-related displays are first sent to the localization
DLL for Eurofont character conversion (<57503-31>), then sent to the VICE layer to be placed in
the display cache, and then the callbar manager is notified of the display change so that it may
update all CCallbarCIPs. Non-call displays are always forwarded through Eurofont translation
and then to the callbar manager for update of all CCallbarDisplay instances (<57503-29>,
<57503-30>, <57503-32>).
PHONESTATE_LAMP
These notifications are sent to the callbar manager through its OnLampStateChange member;
these notifications are then forwarded to all CCallbarIndicator objects.
PHONESTATE_RINGVOLUME
If an instance of the CPhoneSettingsDlg class exists, PhoneCallback calls
CPhoneSettingsDlg::OnRingVolChange, allowing the dialog to update its user interface.
PHONESTATE_HEADSETVOLUME
If an instance of the CPhoneSettingsDlg class exists, PhoneCallback calls
CPhoneSettingsDlg::OnHeadsetVolChange, allowing the dialog to update its user interface.
PHONESTATE_REINIT
DO WE NEED THIS?
TAPI sends this message on calls generated by both switch-generated and user-generated events
(<57503-26>). It also sends the message if the telephone event was triggered by actions in another
application (TAPI or TSAPI) (<57503-27>).
4.7.3.5 Startup
N/A
4.7.3.6 Shutdown
N/A
4.7.3.7 Error Messages
This callback displays no user error messages.
4.7.3.8 Events for Event Log
This callback logs the following events:
•
TAPI function call errors
•
TAPI LINE_REPLY error codes
•
Memory allocation errors
4.8 Other Support Classes
4.8.1 CConfigSettings
4.8.1.1 Description
The CConfigSettings class encapsulates storage of the user’s preference settings. The data items stored
are:
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-45•
•
•
•
•
•
Headset on/off status
Headset volume
Personalized ring
Ring volume
Window positions
PASTE feature name map
4.8.1.2 Interfacing FUs/Classes
CMcPhoneApp
The application object creates an instance of this class at startup and calls its LoadSettings and
LoadPasteMap methods. It then uses the settings properties to put the phone into a previous state.
CCallbarManager
The callbar manager Calls the MapPasteName method to perform string-to-string replacement on feature
button labels.
4.8.1.3 Data Structures and Variables
4.8.1.3.1 Structures
PASTENAMEENTRY
This structure consists of two strings, sPasteName and sLabelName, used in mapping from PASTE feature
names to names which will be displayed in the user interface.
4.8.1.3.2 Variables
m_nInitHeadsetState - initial state of the headset. Data storage for the HeadsetState property.
m_nInitRingPattern - initial personalized ring pattern. Data storage for the RingPattern property.
m_nInitHeadsetVol - initial headset volume. Data storage for the HeadsetVol property.
m_nInitRingVol - initial ringer volume. Data storage for the RingVol property.
m_uPasteNameMap - an array of PASTENAMEENTRY structures constituting the PASTE name
mapping table.
m_rcMain - rectangle representing the last position of the main callbar. Data storage for the MainRect
property.
m_rcAbbrevDial - rectangle representing the last position of the abbreviated dial callbar. Data storage for
the AbbrevRect property.
m_rcMiscFeat - rectangle representing the last position of the miscellaneous features callbar. Data
storage for the MiscRect property.
m_rcCCFeat - rectangle representing the last position of the call center features callbar. Data storage for
the CCRect property.
m_rcAUXReason - rectangle representing the last position of the AUX reason codes callbar. Data storage
for the AUXRect property.
m_rcLogoutReason- rectangle representing the last position of the logout reason codes callbar. Data
storage for the LogoutRect property.
m_rcStrokeCount - rectangle representing the last position of the stroke count callbar. Data storage for
the StrokeCtRect property.
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-464.8.1.4 Functions/Methods
4.8.1.4.1 Methods
void LoadSettings();
This method loads CVALOCAL.INI file settings in the [PhoneSettings] section into member
variables. It performs the following steps:
1.
Load the current headset on/off settings from the HeadsetState entry and store the value in
m_nInitHeadsetState. If not found, default this value to the on state.
2.
Load the current personalized ring pattern settings from the PersonalRing entry and store the
value in m_nInitRingPattern. If not found, default this value to ring pattern 1.
3.
Load the current headset volume settings from the HeadsetVol entry and store the value in
m_nInitHeadsetVol. If not found, default this value to volume level 4.
4.
Load the current ringer volume settings from the RingVol entry and store the value in
m_nInitRingVol. If not found, default this value to volume level 7 (highest).
5.
Load all callbar rectangles. Any entries which do not exist for a callbar are set to 0; callbar
rectangles with left and right coordinates that are both 0 are set to reasonable default positions
when opened.
void LoadPasteNameMap(); (<57503-91>)
1.
Delete the current PASTE name map.
2.
Open the PASTE name map file from the CVA data directory location.
3.
For every line in the file, parse it into two strings delimited by a ‘|’ and store the strings within a
PASTENAMEENTRY structure in the m_uPasteNameMap array.
CString MapPasteName(CString& sPasteName); (<57503-91>)
1.
Search the m_uPasteNameMap array for an entry with an sPasteName field equivalent to the
string passed in the sPasteName parameter.
2.
If the PASTE name is found, return the sLabelName from the found record; otherwise, return the
value of the sPasteName parameter.
void SaveSettings();
This method saves current settings into the [PhoneSettings] section of the CVALOCAL.INI file. It
performs the following steps:
1.
Save the current value of m_nInitHeadsetState to the HeadsetState entry.
2.
Save the current value of m_nInitRingPattern to the PersonalRing entry.
3.
Save the current value of m_nInitHeadsetVol to the HeadsetVol entry.
4.
Save the current value of m_nInitRingVol to the RingVol entry.
5.
Save all callbar rectangles.
4.8.1.4.2 Properties
AbbrevRect Property
The AbbrevRect property represents the current rectangle of the abbreviated dial callbar window.
CRect GetAbbrevRect();
void SetAbbrevRect(CRect& rcNew);
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-47AUXRect Property
The AUXRect property represents the current rectangle of the AUX reason codes callbar window.
CRect GetAUXRect();
void SetAUXRect(CRect& rcNew);
CCRect Property
The CCRect property represents the current rectangle of the call center features callbar window.
CRect GetCCRect();
void SetCCRect(CRect& rcNew);
HeadsetState Property
The HeadsetState property is the on/off state of the telephone’s headset switch. It may be set or
retrieved using these methods:
LONG GetHeadsetState();
void SetHeadsetState(LONG lHeadsetState);
HeadsetVol Property
The HeadsetVol property represents the volume level of the headset. It may be set or retrieved using
these methods:
DWORD GetHeadsetVol();
void SetHeadsetVol(DWORD dwHeadsetVol);
LogoutRect Property
The LogoutRect property represents the current rectangle of the logout reason codes callbar window.
CRect GetLogoutRect();
void SetLogoutRect(CRect& rcNew);
MainRect Property
The MainRect property represents the current rectangle of the main callbar window.
CRect GetMainRect();
void SetMainRect(CRect& rcNew);
MiscRect Property
The MiscRect property represents the current rectangle of the miscellaneous features callbar window.
CRect GetMiscRect();
void SetMiscRect(CRect& rcNew);
RingPattern Property
The RingPattern property is the personal ring pattern on the phone . It may be set or retrieved using
these methods:
DWORD GetRingPattern();
void SetRingPattern(DWORD dwRingPattern);
RingVol Property
The RingVol property represents the volume level of the phone ringer. It may be set or retrieved using
these methods:
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-48DWORD GetRingVol();
void SetRingVol(DWORD dwRingVol);
StrokeCtRect Property
The StrokeCtRect property represents the current rectangle of the stroke count callbar window.
CRect GetStrokeCtRect();
void SetStrokeCtRect(CRect& rcNew);
4.8.1.5 Startup
N/A
4.8.1.6 Shutdown
N/A
4.8.1.7 Error Messages
4.8.1.7.1 Could not write to CVALOCAL.INI
In the event that CConfigSettings cannot write to the CVALOCAL.INI file, it will display this error
message.
4.8.1.8 Events for Event Log
This class logs all file access and memory allocation errors.
4.8.2 CEvtLog
4.8.2.1 Description
The CEvtLog class encapsulates all event logging functionality. This class is used by the application to log
all detectable error conditions (<57503-198>).
This class makes use of two tables, InfoTable and ErrorTable, from which it extracts strings. The tables
load all strings from the application’s string table at event log creation.
4.8.2.2 Interfacing FUs/Classes
All classes use CEvtLog to log errors and noteworthy events.
4.8.2.3 Data Structures and Variables
m_uLogRec - an instance of the LOGREC structure with non-changing fields initialized
m_hLoggerDLL - module handle of the logger DLL
m_fnExecLogger - pointer to the logger startup call
m_fnLogEvent - pointer to the event logging call
m_fnLogSysEvent - pointer to logger shutdown call
4.8.2.4 Functions/Methods
4.8.2.4.1 Notifications
CEvtLog();
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-49The constructor for the CEvtLog class performs the following steps:
1.
Set the initial values of m_fnLogEvent, m_fnExecLogger, and m_fnLogSysEvent to NULL.
2.
Attempt to load the LTEVTLOG.DLL using LoadLibrary and store its module ID in
m_hLoggerDLL; if this step fails, exit.
3.
Attempt to load pointers to ExecLogger, LogEvent, and LogSysEvent into their respective
member variables; if any of these fails, set each pointer back to NULL and release the DLL.
4.
Call ExecLogger with the value of the localBinPath key in the [cva] section of CVALOCAL.INI.
If this call fails, set all function pointers to NULL and release the DLL.
5.
Load event strings from resource file into InfoTable and ErrorTable.
6.
Set up initial values of m_uLogRec.
7.
Log the fact that Event Log binding has succeeded.
~CEvtLog();
The destructor for the CEvtLog class performs the following steps:
1.
Log the fact that our Event Log connection is being released.
2.
Call LogSysEvent requesting a logger shutdown.
3.
Release the logger DLL using FreeLibrary.
CString GetString(LONG lStringID, LONG lParam1, LONG lParam2, LONG
lParam3);
1.
Lookup the string associated with lStringID in the resource file.
2.
Call SubstituteString using the resource string and return the new string.
void LogMcFoneEvent(LONG lDesc, LONG lSourcePos, LONG lEventType, LONG
lSeverity, LONG lParam1, LONG lParam2, LONG lParam3);
1.
If m_fnLogEvent is NULL, exit.
2.
Set m_uLogRec structure values based on provided parameters.
3.
Call m_fnLogEvent.
CString SubstituteString(CString sString, DWORD lFlags, LONG lParam1,
LONG lParam2, LONG lParam3);
1.
Format the string using the CString::Format method. Substitute the parameters provided into the
string as appropriate.
4.8.2.5 Startup
See the CEvtLog constructor in section 4.8.2.4.
4.8.2.6 Shutdown
See the CEvtLog destructor in section 4.8.2.4.
4.8.2.7 Error Messages
This class displays no user error messages.
4.8.2.8 Events for Event Log
This class logs connection to and disconnection from the Event Log.
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-504.8.3 CPasteProgressDlg
4.8.3.1 Description
The CPasteProgressDlg class displays an animation while a PASTE download is in progress and allows
the user to cancel the download (<57503-93>).
4.8.3.2 Interfacing FUs/Classes
CCallbarManager
The callbar manager activates this dialog modally whenever it receives a Tools | Download Phone Data
menu event and initiates a PASTE download.
CMcPhoneApp
The app object displays this dialog on startup if it needs to start a PASTE download.
4.8.3.3 Data Structures and Variables
N/A
4.8.3.4 Functions/Methods
4.8.3.4.1 Notifications
void OnCancel();
This notification is sent when the “Cancel” button on the dialog is pressed by the user. This method
performs the following steps:
1.
Display an “Are you sure?” message box.
2.
If the user confirms the cancel, call PasterCancel to stop the PASTE download.
BOOL OnInitDialog();
This notification is sent as the dialog box starts up. We perform the following initialization tasks
during this event:
1.
Load the download animation into the animation control.
2.
Play the animation.
4.8.3.5 Startup
See the OnInitDialog member function in section 4.8.3.4.
4.8.3.6 Shutdown
N/A
4.8.3.7 Error Messages
This class displays no user error messages.
4.8.3.8 Events for Event Log
This class logs all memory allocation errors.
4.8.4 CPhoneSettingsDlg
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-514.8.4.1 Description
The CPhoneSettingsDlg class allows the user to manipulate telephone settings. Specifically, the following
settings are supported:
•
•
•
•
•
Headset on/off
Headset volume
Personalized ring
Personalized ring test
Ring volume
4.8.4.2 Interfacing FUs/Classes
CCallbarManager
The callbar manager activates this class whenever it receives a Window | Phone Settings menu event. It
tracks a pointer to this dialog and doesn’t allow more than one instance of the dialog to be displayed.
CPhoneSettingsDlg
Whenever this dialog changes a hardware setting, it sets the appropriate property of CConfigSettings to
the new value and calls CConfigSettings::SaveSettings().
4.8.4.3 Data Structures and Variables
m_nHeadsetOff - group id of the currently-selected headset state radio button
m_nRingPattern - current pattern in the personalized ring combo box
m_sldHeadsetVol - control variable representing the headset volume slider
m_sldRingVol - control variable representing the ringer volume slider
4.8.4.4 Functions/Methods
4.8.4.4.1 Notifications
void OnButtonTest()
This notification is sent when the “Test” button on the dialog is pressed by the user. This method
performs the following steps:
1.
Get the current ring settings using phoneGetRing.
2.
If the phone is currently ringing, exit.
3.
Ring the phone with the inside call identifier (2) using the phoneSetRing TAPI function
(<57503-61>).
4.
Sleep for one second.
5.
Re-query the current ring info using phoneGetRing.
6.
Stop the phone from ringing using phoneSetRing (<57503-61>).
BOOL OnInitDialog();
This notification is sent as the dialog box starts up. We perform the following initialization tasks
during this event:
1.
Set the correct min/max ranges for the volume slider controls.
2.
Retrieve the current hardware volume settings for the handset and the ringer and set the slider
controls to reflect these values.
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-523.
Retrieve the current personalized ring using phoneGetData and the
DATAID_PERSONAL_RING value. Set the personalized ring combo box to reflect this value.
void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
This member receives notifications from the volume slider controls. The following steps are
performed per control:
IDC_SLIDER_HEADSETVOL
Use the FindObjectByName() function to get a pointer to the slider on the main callbar. Update the
main callbar slider to reflect the new phone setting (<57503-61>, <57503-63>). When the main
callbar slider is updated the SetHeadsetVolume() function will be called to update the phone.
Commit the new setting to CConfigSettings and call ConfigSettings::SaveSettings.
IDC_SLIDER_RINGSETVOL
Get the current slider position. Use phoneSetRing to reflect the new slider setting on the phone
(<57503-61>, <57503-63>). Commit the new setting to CConfigSettings and call
CConfigSettings::SaveSettings.
void OnRadioHeadsetoff();
Turn off the headset using the phoneSetHookSwitch function, supplying the
PHONEHOOKSWITCHMODE_ONHOOK constant (<57503-64>). Commit the new setting to
CConfigSettings and call CConfigSettings::SaveSettings.
void OnRadioHeadseton();
Turn off the headset using the phoneSetHookSwitch function, supplying the
PHONEHOOKSWITCHMODE_MICSPEAKER constant (<57503-64>). Commit the new setting to
CConfigSettings and call CConfigSettings::SaveSettings.
void OnSelchangeComboRingpat();
This notification is sent when the user selects a new personalized ring setting. We perform the
following tasks during this event:
1.
Get the current user-selected ring pattern from the combo.
2.
Use phoneSetData with the DATAID_PERSONAL_RING value to set the phone’s current
personalized ring (<57503-61>, <57503-62>).
3.
Commit the new setting to CConfigSettings and call CConfigSettings::SaveSettings.
void PostNcDestroy();
This notification is sent after the dialog window has been destroyed; it allows us to do post-dialog
cleanup. The following actions are taken by this event:
1.
Save all hardware settings to the CVALOCAL.INI file for use at next startup (<57503-65>).
2.
Call the callbar manager’s EndPhoneSettings member to clear the phone settings dialog pointer.
3.
Delete the CPhoneSettingsDlg object.
4.8.4.5 Startup
See the OnInitDialog member function in section 4.8.3.4.
4.8.4.6 Shutdown
See the PostNcDestroy member function in section 4.8.3.4.
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-534.8.4.7 Error Messages
This class displays no user error messages.
4.8.4.8 Events for Event Log
This class logs all TAPI function call and memory allocation errors.
4.8.5 CRecorderDlg
4.8.5.1 Description
class CRecorderDlg : public CDialog
The CRecorderDlg class allows the user to manipulate the personalized announcements which can be
recorded and played on CALMASTER VI phone device. Specifically, the following actions are supported
through this dialog:
•
Select any of the six available announcements for recording and playing them back for testing
purposes.
•
Record and re-record a selected announcement.
•
Play a selected announcement for testing and verification purposes.
•
Delete the contents of a selected announcement.
•
Change the default names of the announcements to user-supplied such.
•
Select one of the six announcements to be played automatically on answering of an incoming call.
•
Store the data associated with the new recordings, after the contents of the sound-chip has been
changed.
•
Control the correctness of the user’s actions while modifying the contents of the sound-chip and
error-reporting on improper interaction.
•
Notify the CCallbarManager object about the changes of the contents of data associated with the
announcements (erasing, renaming, etc.), so that the manager can update the interface objects place
on the callbar to represent the current recordings on the CALLMASTER VI.
This dialog is modeless and gets control over the CRecorderDlg object when it is opened to perform
administration of the agent’s announcements.
The dialog renders the control of the CVoiceRecorder object to the CCallbarManager object after it has
been closed by the user.
The CVoiceRecorder object notifies both - the CCallbarManger and the CRecorderDlg objects about
changes of the state of the announcements and its internal properties as well.
Any of the changes of the contents of the announcements done through the interface, which this dialog
provides affect directly the properties of the CVoiceRecorder object (as a part of CVICE object), so that
the new contents can be used by the callbar for working purposes simultaneously, even if the dialog is still
open.
The changes done to the announcements (renaming, erasing, re-recording, etc.) through this dialog are
reflected simultaneously in the callbar interface as well.
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-544.8.5.2 Interfacing FUs/Classes
CCallbarManager
The callbar manager activates this class whenever it receives a Window | Announcements menu event. It
tracks a pointer to this dialog and doesn’t allow more than one instance of the dialog to be displayed.
CVoiceRecorder and CVICE
The dialog accesses directly the properties and the methods provided with CVICE and the
CVoiceRecorder objects in order to implement the required functionality while recording and playing back
announcements.
The CCallbarManager objects receives from CRecorderDlg and the CVoiceRecorder objects the following
notifications:
// states reported to the CCallbarManger::OnAnnouncementState notification handler
#define ANNC_STATES
0
#define ANNC_PSTART
1
// playing has started
#define ANNC_PSTOP
2
// playing has stopped
#define ANNC_RSTART
3
// recording has started
#define ANNC_RSTOP
4
// recording has stopped
#define ANNC_ERASED
5
// record has been erased
#define ANNC_RENAMED
6
// record has been renamed
#define ANNC_EMPTY
7
// record is empty
#define ANNC_LOCKED
8
// record is locked
#define ANNC_UNLOCKED
9
// record is unlocked
#define ANNC_SELECTED
10
// record has been selected
#define ANNC_AUTOANSWER
11
// - '' - for auto-answer
#define ANNC_ERROR
12
// error condition
// states reported through the CCallbarManger:: OnRecorderState notification handler
#define VREC_STATES
0
#define VREC_PLAYING
1
// voice-chip is playing
#define VREC_RECORDING
2
// voice-chip is recording
#define VREC_STOP
3
// voice-chip is idle
#define VREC_INUSE
4
// record in use has changed
#define VREC_SELECTED
5
// record has been selected
#define VREC_AUTOANSWER
6
// new record for auto-answer
#define VREC_REFRESH
7
// the contents of the VT has been changed
#define VREC_RELOAD
8
// the table has been re-loaded from the file
#define VREC_REINIT
10
// the table has been re-initialized
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-55#define VREC_SAVED
11
// the table has been saved
#define VREC_ADMINSTART
12
// the recorder dlg is open
#define VREC_ADMINSTOP
13
// the recorder dlg is open
#define VREC_ERROR
14
// error condition
4.8.5.3 Data Structures and Variables
Dialog Data members
enum { IDD = IDD_RECORDER_DIALOG };
The resource identifier of the dialog template.
BOOL m_bAnswer;
This holds the currently selected usage mode of the selected announcements. TRUE represents
the fact that the announcement has been selected to be played automatically on answering a call,
otherwise the state of this property is FALSE.
CString m_strName;
This property contains the name of the currently selected announcements from the
announcements list.
int
m_nIndex;
This property contains the index of the selected announcements. Knowing this index, additional
information about the announcements can be retrieved from the CVoiceRecorder object.
Protected data members
HICON m_hIcon;
The bitmap of the dialog as loaded from the resources.
CBitmap m_bmpErase;
CBitmap m_bmpEraseAct;
The bitmaps of the ‘Erase’ button representing the active and the inactive state of the button.
CBitmap m_bmpPlay;
CBitmap m_bmpPlayAct;
The bitmaps of the ‘Play’ button representing the active and the inactive state of the button.
CBitmap m_bmpStop;
CBitmap m_bmpStopAct;
The bitmaps of the ‘Stop’ button representing the active and the inactive state of the button.
CBitmap m_bmpRecord;
CBitmap m_bmpRecordAct;
The bitmaps of the ‘Record’ button representing the active and the inactive state of the button.
Public data members
CString m_strSelName;
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-56Name of the currently selected announcement;
CString m_strNewName;
New name of the currently selected announcement in case of editing.
int
m_nPos;
int
m_nCurrPos;
int
m_nStart;
int
m_nEnd;
Data members reresenting the parameters of the currently selected announcement used to control
the operation of the progress indicator while playback or recording is in progress.
int
m_nState;
State of the announcement currently selected by the user.
UINT
m_uTimerID;
ID of the timer created for the current recording or playing operation.
BOOL m_bEdit;
Flag showing if the contents of the voice-table have been changed after the data has been written
to disk.
CSemaphore *m_pLockSig;
Points to a CSemaphore object created to ensure priority and protection of the UI updates while a
playback or recording is in progress and the timer is on.
4.8.5.4 Functions/Methods
4.8.5.4.1 Notifications
afx_msg BOOL OnInitDialog();
This notification is sent as the dialog box starts up. We perform the following initialization tasks
during this event:
1.
Loads the bitmaps for the buttons and the icon of the dialog window.
2.
Retrieve the list of the current recordings on CALLMASTER VI and sets the list box of the
IDC_COMBO_LIST control to reflect the names of the announcements.
3.
Retrieves in this list the announcement which is currently selected to be played automatically on
answering a call and selects it from the combo box.
4.
Retrieves the parameters associated with the selected announcement and represents its length in
the IDC_PROGRESS_INDICATOR control.
5.
Marks the current state of the voice table represented in the CVoiceRecorder object as ‘Locked’
so any attempt to play an announcement from the callbar will fail, while the administration of the
announcements is not confirmed as done by closing the dialog window..
afx_msg void OnBtnErase();
<57503-82,71>
This notification is sent as the dialog box each time the user presses the ‘Erase’ button: The following
actions will be performed in this case
1.
The announcement currently selected will be marked as ‘Erased’.
2.
This new state for the selected announcement will be updated in the CVoiceRecorder object.
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-573.
The filled area of the IDC_PROGRESS_INDICATOR control will be reset to zero length.
4.
Although the CALLMASTER VI does not provide a special command for erasing the contents of
the sound chip, this will be achieved by first executing the ‘Record’ function followed
immediately by the ‘Stop’ command.
afx_msg void OnBtnPlay(); <57503-82,69>
This notification is sent as the dialog box each time the user presses the ‘Play’ button: The following
actions will be performed in this case
1.
The announcement currently selected will be marked as being currently in use. Its internal
parameters (start segment, end segment and length) will be retrieved from the CVoiceRecorder
object.
2.
The playback of the announcement will be started by directly invoking the
ManualPlayAnnouncement method of the CVoiceRecorder object.
3.
The timer will be started for this dialog window.
4.
As the playback is confirmed to have been normally started, on each timer tick the filled area of
the IDC_PROGRESS_INDICATOR control will be updated to represent the current position of
the audio-marker.
afx_msg void OnBtnRecord(); <57503-82,67>
This notification is sent as the dialog box each time the user presses the ‘Record’ button: The
following actions will be performed in this case
1.
The announcement currently selected will be marked as being currently in use. Its internal
parameters (start segment, end segment and length) will be retrieved from the CVoiceRecorder
object.
2.
The playback of the announcement will be started by directly invoking the RecordAnnouncement
method of the CVoiceRecorder object with the starting segment and the length of the
announcement supplied as parameters.
3.
The timer will be started for this dialog window.
4.
As the recording is confirmed to have been normally started, on each timer tick the filled area of
the IDC_PROGRESS_INDICATOR control will be updated to represent the current position of
the audio-marker.
afx_msg void OnBtnStop(); <57503-82,70>
This notification is sent to the dialog box each time the user presses the ‘Stop’ button: The following
actions will be performed in this case
1.
A playback or a recording of an announcement, if either one is currently in progress will be
stopped by invoking directly the StopAnnouncement method of CVoiceRecorder object.
2.
The timer installed for this window will be stopped. This will stop also the updating of the filled
area of the IDC_PROGRESS_INDICATOR control.
3.
In case of a recording, after receiving the confirmation that the recording has been stopped the
new parameters of the recording will be updated inside the CVoiceREcorder object.
afx_msg void OnCheckAnswer(); <57503-84>
This notification is sent to the dialog box each time the user changes the state of the ‘Play on Answer’
check-box. The following actions will be performed in this case
1.
The m_bAnswer dialog data member will be updated to represent the current user selection. If
the new state is FALSE the corresponding flag of the data associated with the selected
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-58announcement will be re-set to this state to represent the fact that the recording is not selected to
be played automatically on answering a call.
2.
If the value of the m_bAnswer property is TRUE, than first the value of the corresponding flag of
each of the announcements will be set to FALSE and only after that this flag will be raised for the
currently selected announcement, marking it as selected to be played automatically on incoming
call.
afx_msg void OnTimer(UINT nIDEvent);
This notification is sent to the dialog box on each timer tick sent to this window, after the timer has
been started on recording or playing back of an announcement. The following actions will be
performed in this case
1.
The new elapsed time since the starting of a playback or recording cycle will be calculated.
2.
Depending on this value, the length of the filled area of the IDC_PROGRESS_INDICATOR
control will be recalculated and set to represent the new position of the audio-marker.
afx_msg void OnEditchangeComboList(); <57503-72>
This notification is sent to the dialog box each time the user makes a change inside the text-box,
representing the name of the selected announcement. The new string value for the name of the
selected announcement will be retrieved from the edit control of the combo-box.
1.
afx_msg void OnKillfocusComboList();
afx_msg void OnCloseupComboList();
afx_msg void OnDropdownComboList();
On these control notifications the CVoiceRecorder object’s method RenameAnnouncement will be
called, so that the name of the currently selected announcement will be changed, as read from the
edit control of the combo-box. The new name, if changed will be reflected on the callbar’s combo-box
too, if.the reanmed announcement is the one currently selected.
1.
afx_msg void OnMove(int x, int y);
afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg void OnShowWindow(BOOL bShow, UINT nStatus);
On these notifications the psoition and the state of the dialog window will be retrieved and
properly represented into the CCfgSet object, so that the proper restoration of the window will
be posssible after having been closed.
afx_msg void OnSelchangeComboList(); <57503-66>
afx_msg void OnSelendcancelComboList();
afx_msg void OnSelendokComboList();
These notifications are sent to the dialog box each time the user makes a selection inside the combobox representing the list of the announcements. The following actions will be performed in this case
1.
The new string value for the name of the selected announcement will be retrieved.
2.
The index of the selected announcement will be retrieved.
3.
The parameters of the selected announcement will be retrieved from the CVoiceRecorder object,
given the index.
afx_msg void OnDblclkComboList();
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-59This notification is sent to the dialog box each time the user double-clicks on a string inside the listbox of the combo-box control. The following actions will be performed in this case
1.
The double-clicked announcement will be selected for usage.
2.
The parameters of the selected announcement will be retrieved from the CVoiceRecorder object,
given the index.
3.
The playback of this announcement will be started.
afx_msg void OnClose();
This notification is sent to the dialog box each time the user closes the CAnnouncementsRecorderDlg
window. The following actions will be performed in this case
1.
The callbar manager will be informed that the user has finished the administration of the
personalized greetings.
2.
The CVoiceRecorder object will be place in an ‘Unlocked’ state, so that that the callbar can use
the recorded announcements in manual or automatic mode.
3.
The data associated with the announcements will be saved in a COM file. <57503-86,87,81>
4.8.5.5 Virtual Over-ridden Functions
void DoDataExchange(CDataExchange* pDX);
Supports the dialog data members exchange with the controls placed on the dialog window.
BOOL DestroyWindow();
This function is called from the framework to destroy the window of this dialog. The following
actions will be performed in this case:
1.
The allocated resources (bitmaps, icons, etc.) will be freed.
Pending operations will be terminated.void PostNcDestroy();
This function is called after the dialog window has been destroyed; it allows us to do post-dialog
cleanup. The following actions are taken on this event:
1.
The dialog renders the control of the CVoiceRecorder object to the callbar manager object by
setting the m_pRecorder pointer of the CVoiceRecorder object to NULL.
2.
From this moment on, all notifications coming from the CVICE object and related to the
announcements will be routed directly to the callbar manager, instead of routing them first to the
CAnnouncementsRecorderDlg object.
void OnOK();
void OnCancel();
The OnClose meber function will be called here to ensure the proper closure of the dialog (proper resource
clean-up and operation termination).
4.8.5.6 Members Functions
CRecorderDlg(CWnd* pParent = NULL); // standard constructor
This is a standard constructor of the CRecorderDlg.
void StartTimer(); <57503-68>
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-601.
This function is called after the user presses the ‘Play’ or the ‘Record’ button and the
confirmation from the CALLMASTER VI has been received. The timer object is activated for the
dialog window on this call.
void StopTimer(); <57503-68>
This function is called after the user presses the ‘Stop’ button in case a either a playback or a
recording cycle is currently in process. The following actions are taken at this event:
The timer object is deactivated and destroyed, so that the dialog window no longer receives the
OnTimer events.
int OnRecorderState(int nEvent, int nModule);
This function will be called from the CVoiceRecorder object whenever the state of the
CALLMASTER VI recorder has changed its state. The following actions will be performed in this
case:
The recorder state will be reflected on the UI and appropriately handled by the CRecorderDlg object.
int OnCallbarState(int nEvent, void *pData);
This function will be called from the CBManager object whenever the state of the
CALLMASTER VI recorder has been changed due to a call from within the callbar.. The
following actions will be performed in this case:
This call will not have a visible effect on the state of the dialog’s UI, but any operation started
from the callbar will have to be terminated from the callbar and only afterwards any recording,
playback or erasing a could be invoked from the dialog. The dialog’s UI will be disabled while
an operation started from the callbar is in progress.
int GetAnnouncementDuration(int nIndex); <57503-68>
Gets the duration of an announcement as recorded on the voice-chip of CALLMASTER VI and
refreshes the state of the progress indicator.
int RefreshProgressBar(int nIndex, int nNewPos); <57503-68>
Refreshes the state of the progress indicator control to represent the new position of the voice-chip
martker.
int RefreshButtons(int nEvent);
Called from OnRecorderState to represent the state of the dialog buttons, depending on the event
reported from the CVoicerRecorder object.
int ResetProgressBar(int nIndex); <57503-68>
Resets the progress indicator to zero-length.
void BtnStopEnable(void);
void BtnStopDisable(void);
void BtnRecordEnable(void);
void BtnStopEnable(void);
void BtnStopOnlyDisable(void);
These functions are called from RefreshButtons private member function to reload new bitmaps and
update the states of buttons, depending on the current state of the CVoiceRecorder object and a
particular announcement.
BOOL CheckHookswitchState(void);
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-61Retrieves the current hook-switch state of the phone, as no operations through the dialog are
allowed if the headset state is ‘On’.
CString ShowRecorderError(int nErrCode, CString sError);
Shows a user-visible message box which notifies about certain errors or unavailable operations.
void Terminate(BOOL bSource);
Called upon termination conditions for resource and pending operations clean-up before closing
the dialog. Could be called from either outside (Callbar manager module) or from within the
dialog object itself, depending on the value of bSource, as the dialog is a modeless one.
4.8.5.7 Dialog Controls
The CRecorderDlg object contains the following controls:
Resource ID:
Mapped to class:
----------------------------------------------------------
-----------------------------------
IDC_BTN_PLAY
1001
CButton
IDC_BTN_ERASE
1003
CButton
IDC_BTN_RECORD
1004
CButton
IDC_BTN_STOP
1005
CButton
IDC_PROGRESS_INDICATOR
1007
CProgressBar
IDC_COMBO_LIST
1014
CCombo
IDC_CHECK_ANSWER
1015
CButton (type CheckBox)
4.8.5.8 Startup
See the OnInitDialog member function in section 4.8.1.4
4.8.5.9 Shutdown
See the DestroyWindow, PostNcDestroy and OnClose member function in section 4.8.1.4 and 5.7.2.5.
4.8.5.10 Error Messages
This class generates error messages which are specified in RFS document (CID 57503). The following
situations will be reported as specified in the requirements:
Cannot perform recording or playback - <57503-74>)
Error message text: Unable to perform recording (or playback). <The rest of the text explains the
reason>
Recording capacity exceeded. - <57503-75>.
Warning message text: The end of the available recording space on CALLMASTER VI has been
reached.
Prevent recording when on an active call - <57503-76>.
Warning message text: You cannot record or playback an announcement while on a call.
4.8.5.11 Events for Event Log
This class logs all UI related failures as stated above and the announcements-related TAPI and VICE
function calls and memory allocation errors as well.
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-62-
4.8.6 CVoiceRecorder
4.8.6.1 Description
class CVoiceRecorder : public CObject
The CVoiceRecorder class supports the basic functionality required to manipulate the personalized
announcements, while recording or playing them on the CALMASTER VI phone device.
This object is created during initialization of the CVICE object, which is responsible for this. It is an
object, visible to other components of the framework through the CVICE object.
It encapsulates properties and methods which other objects of the McFone callbar can access for the
purpose of recording and playing selected announcements in manual or automatic mode. These methods
and properties are specified further on this section.
The following basic functionality will be provided by this object:
•
Maintain the data associated with the personalized announcements (retrieve, update and store the
table representing the recordings on the CALLMASTER VI in a file)..
•
Use directly the functionality provided by VICE to access the announcements-related features of the
CALLMASTER VI device for the purpose of recording and playback of the personalized agent’s
announcements.
•
Communicate with the CCallbarManager and the CRecorderDlg objects inside the context of the
entire McFone framework in order to ensure proper routing of the announcements-related TAPI
messages and use the appropriate CVICE function calls while manipulation of the announcements
recording and playback is being performed.
•
Notify the CCallbarManager object about the changes of the contents of the announcements table, so
that this object can update the state of other interface objects placed on the callbar to represent the
state of the current recordings on the CALLMASTER VI.
The changes done to the announcements (renaming, erasing, etc.) in this dialog are reflected
simultaneously in the Call-bar interface as well
4.8.6.2 Interfacing FUs/Classes
CCallbarManager
The CCallbarManager object receives messages sent from within this class whenever the states of the
CALLMASTER VI voice recorder changes. These messages can be processed in an appropriate way - to
update the UI of the callbar, or to retrieve additional information about the current recordings as they
reside in the voice-chip of the phone device.
The CCallbarManager object can also initiate playback of a selected announcement in manual or
automatic mode using the member functions provided with this class. The user can initiate these actions
through the GUI of the call-bar, or the CCallbarManger object can start playing an announcement
automatically on incoming call as well.
CRecorderDlg
When the CRecorderDlg object is active it uses the services provided with the CVoiceRecorder object. The
notifications from the CVoiceRecorder object are re-routed first to this dialog, and the CRecorderDlg
objects is responsible for their proper processing.
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-63Through the UI provided with the CRecorderDlg object recording or playback of an announcement can be
initiated. The CCallbarManger can also initiate these actions as requests from the callbar.
The CRecorderDlg object sends a subset of the notification messages listed in 4.7.5.2 to the
CCallbarManager, as a result of user actions performed through the UI.
The CRecorderDlg objects sends to the CCallbarManager object a subset of the notification messages
listed in 4.7.5.2, regarding the state of the announcements administration task and the actions performed
as initiated by the user Through the UI of this dialog.
CVICE and TAPI Callback
The CVoiceRecorder object is part of the CVICE object and is created each time the latter is created. It is
destroyed when the CVICE object is de-initialized and destroyed.
The CVoiceRecorder uses specific set of function calls to TAPI, implemented in CVICE, to start and stop
recording or playback of announcements. The following functions are provided with CVICE for this
purpose.
CVoiceRecorder * GetPhoneRecorder(void);
Creates and initializes a CVoiceREcorder object as part of CVICE.
int PlayGreeting(VOICECHIPDATA *pData);
Starts playback of a recorded greetings, starting at a given segment.
int RecordGreeting(VOICECHIPDATA *pData);
Starts recording of an announcement at a given segment and with a specified length.
int StopGreeting(void);
Stops a recording opr a playback cycle.
int GetRecorderCaps(VOICECHIPCAPS * pCaps);
Retrieves from CALLMASTER VI the parameters describing the recording capacity of the sound
chip.
int GetDeviceID(void);
Retrieves from CALLMASTER VI the device ID of the phone device.
int GetPhoneExtension(void);
Retrieves the main extension used for the phone.
The TAPI Callback module routes to the CVoiceRecorder object specific messages to inform the latter
about the current state of the CALLMASTER VI recording device. These messages come as a response to
the function calls initiating recording or playback of the announcements.
After the appropriate processing of these messages by the CVoiceRecorder object, they are re-routed either
to the CRecorderDlg object or to the CCallbarManager object, depending on which one is currently in
control of the former.
4.8.6.3 Data Structures and Variables
1.
Miscellaneous structures and classes
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-64VOICECHIPCAPS structure
This structure contains the parameters describing the number of the individually addressable segments on
the voice-chip, the duration of each segments in msec and the state of the CALLMASTER VI
recorder/player.device.
typedef struct {
short nSegments;
// number of segments on the voice-chip
short nDuration;
// duration of a single segment in [msec]
short nState;
} VOICECHIPCAPS, FAR * LPVOICECHIPCAPS;
VOICECHIPDATA structure
This structure contains the starting and the ending segments and also the status of an announcement
recorded on the voice-chip. It also contains the device ID of the device on which the recording has been
performed. The enumeration of the segments is zero-based.
typedef struct {
short
nStart;
// starting segment
short
nLength;
// max length in segments
int
nState;
// state of the recording
int
nStartPos;
// starting position in [msec]
int
nEndPos;
// max len in [msec]
int
nDuration;
// current duration in [msec].
BOOL
bAutoPlay;
// to be played on auto-answer
} VOICECHIPDATA, FAR * LPVOICECHIPDATA;
DEVICEID structure
A sequence of three bytes represents the device ID of the CALLMASTER VI phone, stored in the nonvolatile memory of the device.
typedef struct {
BYTE byDevID[3];
} DEVICEID, FAR * LPDEVICEID;
Class CVoiceRecord : public Cobject
This class/structure contains the data related to a single announcement stored on the voice-chip
of CALLMASTER VI.
Constructors
CVoiceRecord();
CVoiceRecord(int nIndex);
CVoiceRecord(int nIndex, CString strName, VOICECHIPDATA vcData);
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-65Destructor
~CVoiceRecord();
Public data members
int
m_nIndex;
Represents the index of the announcement inside the table, describing the entity of the
announcements recorded on the voice chip.
CString
m_strName;
Represents the name of the announcement, user-give or the default one.
CString
m_strOwner;
Represent the login ID of the user who has recorded the announcement (not used in CVA 1.0).
VOICECHIPDATA
m_vcData;
This structure holds the parameters associated with the announcement, describing its physical
layout in the voice-chip memory
Public member function
virtual void Serialize(CArchive& ar);
This function is called from the CVoiceRrcorder object for each of the CVoiceRecord objects
included in the table representing the recorded announcements.
2.Class Data Members
Public members:
CRecorderDlg *
m_pRecorderDlg;
Points to the CRecorderDlg object when it is activated for performing administration of the
announcements.
CCallbarManager * m_pCBManager;
Points to the CCallbarManager object, so that notifications can be sent to it.
CVICE *
m_pVice;
Points to the CVICE object which aggregates the current CVoiceRecorder object
VOICECHIPCAPS
m_vcCaps;
Holds the recording capabilities of the voice chip as retrieved from the CALLMASTER VI upon
initialization of CVICE
int
m_nSize;
Number of recordings as predefined in the INI file or hard-code by the GREETINGS_MAX constant
int
m_nState;
State of the table representing the announcements:
VT_ERROR, when a table cannot be created, loaded or stored
VT_ REFRESH, when the contents have changed
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-66VT_RELOAD, when the table has been reloaded from the file
VT_ CREATE, when a new default one has been created
VT_SAVE, when the contents have been stored on the disk
CObArray
m_obaRecords;
An array of CVoiceRecords objects. The size of the array depends on the value of the m_lSize
member.
int
m_nRecInUse;
Contains the index of the announcement that is currently in use (selected, recorded or played)
int
m_nAutoPlay;
Index of the announcement which is administered as to be played back automatically on
answering of a call.
int
m_nRecState;
Current state of the voice-chip, one of the following:
VR_ NOTSUPPORTED, when the voice-chip is not found in CALLMASTER
VR_ STOPPED, when the reorder/player is idle
VR_ PLAYING, when the playback is in progress
VR_ RECORDING, when recording is in progrress
VR_ ENDOFSPACE, when recording or playback has been stopped at the end of the available on
the voice-chip space.
int
m_nRecPos;
Current position of the recorder, showing in which segment is the audio-marker after a recording or a
playback cycle have been stopped.
CString
m_strStorage;
Full path/name of the file in which the CVoiceRecorder object is serialized
int
m_nDeviceID;
The Device ID on which the recordings have been performed, an integer in the range of
0x00FFFFFF.
CString
0-
m_strUserID;
The current user Login ID (left for extensibility)
int
m_nLastCaller;
The ID of the last module which has placed a request for an announcements-related operation.
The modules IDs are enumerated.
BOOL
m_bSaved;
Flag showing whether or not the voice-table has been saved to disk after the most recent change
of its contents.
BOOL
m_bNoPlay;
Flag showing whether or not the play of an announcement should be performed on the next
invoked play operation. Set on some external events to skip any subsequent request for playback.
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-674.8.6.4 Functions/Methods
Constructors:
CVoiceRecorder();
CVoiceRecorder(CString
strStorage, CVICE *pVice);
CVoiceRecorder(CString
VOICECHIPCAPS vcCaps);
strStorage, CVICE *pVice, int nMode, int nSize,
These initialize the CVoiceRecorder object when called from the CVICE object. During creation of
the object the capabilities of parameters describing the voice-chip capabilities and the size of the voice
table are passed as defined during the initialization of the CVICE object. The table describing the
current recordings is de-serialized from the corresponding file as well.
Destructor:
~CVoiceRecorder();
When the object is destroyed the current contents of the voice table is serialized back to the dedicated
storage and the clean-up of the allocated memory is performed.
Virtual Over-ridden Member Functions:
virtual void Serialize(CArchive&);
This virtual function is over-ridden to perform serialization and de-serialization of the
CVoiceRecorder object.
Implementation Member Functions:
void
SetOwnerDlg(CRecorderDlg * pRecorderDlg);
The CRecorderDlg uses this function to render its pointer and announce that it is in use of the
CVoiceRecorder object. Setting this pointer to NULL represents the fact that the CRecorderDlg
renders the control of the object to the CCallbarManager object.
void
SetOwnerManager(CCallbarManager * pCBManager);
After the CCallbarManager object has been created and initialized it calls this member function to
render its pointer to the CVoiceRecorder object. Through this pointer the latter can re-rout all the
announcements-related notifications to the manager.
int
ReInitialize(int nEvent);
Calls to this function will result to re-initialization of the voice-tables contents either by restoring
from the disk or by reseting its contents to the defaults.
Possible values for the nEvent input parameter are:
VT_CREATE - to re-initialize the contents to the defaults.
VT_REINIT - to re-load the table from the disk.
int GetRecord(int nIndex, CString& strName, VOICECHIPDATA& vcData);
CVoiceRecord * GetRecord(int nIndex);
Both functions return the data associated with a given announcement. The index of the announcement
should be supplied. This index is one-based.
int SetRecord(int nIndex, CString strName,
VOICECHIPDATA vcData);
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-68int SetRecord(int nIndex, CVoiceRecord *pRecords);
Both functions modify the parameters associated with a particular record inside the table representing
the data about the current recordings on the voice-chip.
int ResetRecord(int nIndex);
Resets a given record to none-recorded (erased) state.
int RenameAnnouncement(int nIndex, CString strNewName);
Renames an announcement.
int GetName(int nIndex, CString& strName);
Returns the name of a given announcement.
int SetNewDuration(int nIndex, int nNewDuration);
Sets the actual duration of the announcement after recording.
int GetVoicechipCaps(VOICECHIPCAPS& vcData);
Gets from CVICE object the capabilities of the voice-chip embedded in the CALLMASTER VI device.
Int GetRecorderState(void);
Gets the current state of the recorder (stopped, playing, recording).
int GetAnnouncementState(int nIndex);
Gets the current state of an announcement (erased, locked, recorded. etc.)
int SetAnnouncementState(int nIndex, int nState, int nModule);
Sets a new state for an announcement, depending on certain events.
int SaveVoiceTable(void);
Saves the data associated with the current recordings by serializing the CVoiceRecorder object to a
file.. Always called in the object’s destructor.
int LoadVoiceTable(void);
Loads the data associated with the current recordings by de-serializing the CVoiceRecorder object
from a file. Always called in the object’s constructor.
int RecalcVoiceTable(void);
Calculates the lay-out of the announcements in the voice-chip memory, based on the value of the
m_nSize data member.
int GetSize(void);
Returns the size of the table (the maximum number of the announcements).
.BOOL IsLocked(int nIndex);
Checks whether the announcements cam be played from the callbar - TRUE if the announcement is used
currently from the CRecorderDlg object, either for playback or recording.
BOOL IsRecorded(int nIndex);
Checks whether a given announcement is recorded and has non-zero length..
BOOL IsDeviceValid();
Checks whether a given announcement has been recorded on the phone device currently attached to
the PC.
BOOL
GetRejectPlayback();
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-69Returns the value of the ‘lock’ flag of the recorder.
void
SetRejectPlayback(BOOL bReject);
Sets the value of the ‘lock’ flag of the recorder.
BOOL CheckCurrentDeviceID(void);
Retrieves from the phone its device ID. If the device ID of the voice-table is different, reinitializes the table to its default contents.
void SetCurrentDeviceID(int nDevID);
Sets the value of the m_nDeviceID data member.
BOOL CheckHookswitchState(void);
Retrieves from the phone the current hook state (hedaset-on - TRUE, headset-off - FALSE).
int AutoPlayAnnouncement(); < 57503-77>
Starts the playback of the announcement which has been administered to be played back
automatically on answering of a call.
int PlayAnnouncement(int nIndex, int nModule); < 57503-77>
Starts the playback of the announcement with the given index.
int RecordAnnouncement(long lIndex, int nModule);
Starts the recording of the announcement with the given index.
int StopAnnouncement(int nModule);
Stops a recording or a playback cycle if one is in progress.
int FillAnnouncementsList(CComboBox *pCombo);
Fills an interface object (combo-box) with the names of the annoncements.
Notification Functions:
int OnRecorderStateChange(int nState, int nPosition);
Called from the TAPI Callbacks module after the PHONE_DEVSPECIFIC message is received and
identified as one that is recorder-related.
4.8.6.5 Startup
The CVICE object is responsible for creating and initializing properly this object. If during initialization
of TAPI the voice-chip recording capabilities of the phone device have not been recognized this object will
not be created and the user interface will not contain controls and menu items related to the
Announcements at all.
4.8.6.6 Shutdown
The CVICE object is responsible for the destruction of this object on de-initializing TAPI.
4.8.6.7 Error Messages
This object does not report error messages to the user. However, most of the functions return error codes
related to fault situations when recording and playing back announcements. The error codes returned are
defined and documented in the const.h file of the McPhone project
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-704.8.6.8 Events for Event Log
This class will log all failures as reported from this object during the execution of the announcementsrelated TAPI and VICE function calls and memory allocation errors as well.
5. DESIGN CONCERNS
Any areas of the design which could be potential trouble areas are identified in this section. For example,
performance concerns about a particular area of the design could be described here. Any dependencies on
other components’ designs should be documented here.
6. OTHER CONSIDERATIONS
6.1 Processes and Control Flow
Only two distinct processes exists within the McFone R1 product: the telephony core and the event logger.
Communication between these two processes take place through the CEvtLog class; see section 4.8.2 for
details.
6.2 Internal Interfaces
Internal interfaces are defined within the method and property description section of each class. See each
class for the set of interface functions it supports.
6.3 Capacities
N/A
6.4 Resource Usage
The classes of the telephony core are designed such that, when a resource is allocated, it is deallocated in
the destructor. See each class for details on its resource handling.
6.5 Performance
N/A
6.6 Hardware/Firmware
N/A
6.7 Target Dependencies
N/A
6.8 Future Considerations
Please see [5] for a discussion of future considerations.
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-717. LIST OF TABLES
TABLE 1. CALLBAR TYPES AND CONSTRUCTION METHODS..................................................... 12
TABLE 2. DIAL STRING CHARACTER MAP..................................................................................... 40
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-72-
8. TABLE OF CONTENTS
1. INTRODUCTION .............................................................................................................................. 3
1.1 GENERAL......................................................................................................................................... 3
1.1.1 Purpose.................................................................................................................................... 3
1.1.2 Module Definition .................................................................................................................... 3
1.1.3 Document Scope ...................................................................................................................... 3
1.1.4 Document History .................................................................................................................... 3
1.1.5 Document Change Control....................................................................................................... 3
1.1.6 Related Documents .................................................................................................................. 3
1.2 TERMINOLOGY AND ACRONYMS ....................................................................................................... 4
1.3 CUSTOMER DOCUMENTATION CONCERNS ......................................................................................... 4
2. EXTERNAL INTERFACES .............................................................................................................. 4
2.1 EVENT LOG FUNCTION CALLS .......................................................................................................... 4
2.2 PASTER FUNCTION CALLS.............................................................................................................. 4
3. EXPOSED INTERFACES ................................................................................................................. 4
4. LOW LEVEL DESIGN...................................................................................................................... 4
4.1 APPLICATION PERFORMANCE............................................................................................................ 4
4.2 CMCFONEAPP ................................................................................................................................. 5
4.2.1 Description .............................................................................................................................. 5
4.2.2 Interfacing FUs/Classes ........................................................................................................... 5
4.2.3 Data Structures and Variables ................................................................................................. 5
4.2.4 Functions/Methods................................................................................................................... 5
4.2.5 Startup ..................................................................................................................................... 6
4.2.6 Shutdown ................................................................................................................................. 6
4.2.7 Error Messages........................................................................................................................ 6
4.2.7.1 Failed to initialize TAPI.................................................................................................................... 6
4.2.7.2 Memory allocation failed .................................................................................................................. 7
4.2.8 Events for Event Log................................................................................................................ 7
4.2.8.1 Memory Errors.................................................................................................................................. 7
4.2.8.2 TAPI Initialization Error ................................................................................................................... 7
4.2.8.3 TAPI Initialization/Shutdown Errors ................................................................................................. 7
4.3 CCALLBARMANAGER ...................................................................................................................... 7
4.3.1 Description .............................................................................................................................. 7
4.3.2 Interfacing FUs/Classes ........................................................................................................... 7
4.3.3 Data Structures and Variables ................................................................................................. 7
4.3.4 Functions/Methods................................................................................................................... 7
4.3.5 Startup ................................................................................................................................... 13
4.3.6 Shutdown ............................................................................................................................... 13
4.3.7 Error Messages...................................................................................................................... 13
4.3.7.1 Could not make call ........................................................................................................................ 13
4.3.8 Events for Event Log.............................................................................................................. 13
4.4 CCALLBARWINDOW ...................................................................................................................... 13
4.4.1 Description ............................................................................................................................ 13
4.4.2 Interfacing FUs/Classes ......................................................................................................... 13
4.4.3 Data Structures and Variables ............................................................................................... 14
4.4.4 Functions/Methods................................................................................................................. 14
4.4.5 Startup ................................................................................................................................... 14
4.4.6 Shutdown ............................................................................................................................... 14
4.4.7 Error Messages...................................................................................................................... 14
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-734.4.8 Events for Event Log.............................................................................................................. 14
4.5 CALLBAR OBJECT CONTAINERS ...................................................................................................... 14
4.5.1 CCallbarObjectContainer Class............................................................................................. 14
4.5.1.1 Description ..................................................................................................................................... 14
4.5.1.2 Interfacing FUs/Classes................................................................................................................... 15
4.5.1.3 Data Structures and Variables ......................................................................................................... 15
4.5.1.4 Functions/Methods.......................................................................................................................... 15
4.5.1.4.1 Actions .................................................................................................................................... 15
4.5.1.4.2 Properties ................................................................................................................................ 16
4.5.1.5 Startup............................................................................................................................................ 16
4.5.1.6 Shutdown........................................................................................................................................ 16
4.5.1.7 Error Messages ............................................................................................................................... 16
4.5.1.8 Events for Event Log....................................................................................................................... 16
4.5.2 CCallbarFrame...................................................................................................................... 17
4.5.2.1 Description ..................................................................................................................................... 17
4.5.2.2 Interfacing FUs/Classes................................................................................................................... 17
4.5.2.3 Data Structures and Variables ......................................................................................................... 17
4.5.2.4 Functions/Methods.......................................................................................................................... 17
4.5.2.4.1 Actions .................................................................................................................................... 17
4.5.2.4.2 Properties ................................................................................................................................ 17
4.5.2.5 Startup............................................................................................................................................ 17
4.5.2.6 Shutdown........................................................................................................................................ 18
4.5.2.7 Error Messages ............................................................................................................................... 18
4.5.2.8 Events for Event Log....................................................................................................................... 18
4.5.3 CCallbarCIPFrame................................................................................................................ 18
4.5.3.1 Description ..................................................................................................................................... 18
4.5.3.2 Interfacing FUs/Classes................................................................................................................... 18
4.5.3.3 Data Structures and Variables ......................................................................................................... 18
4.5.3.4 Functions/Methods.......................................................................................................................... 18
4.5.3.4.1 Actions .................................................................................................................................... 18
4.5.3.4.2 Properties ................................................................................................................................ 20
4.5.3.5 Startup............................................................................................................................................ 20
4.5.3.6 Shutdown........................................................................................................................................ 20
4.5.3.7 Error Messages ............................................................................................................................... 20
4.5.3.8 Events for Event Log....................................................................................................................... 20
4.6 CALLBAR OBJECTS......................................................................................................................... 20
4.6.1 CCallbarObject...................................................................................................................... 20
4.6.1.1 Description ..................................................................................................................................... 20
4.6.1.2 Interfacing FUs/Classes................................................................................................................... 20
4.6.1.3 Data Structures and Variables ......................................................................................................... 21
4.6.1.4 Functions/Methods.......................................................................................................................... 21
4.6.1.4.1 Actions .................................................................................................................................... 21
4.6.1.4.2 Properties ................................................................................................................................ 21
4.6.1.5 Startup............................................................................................................................................ 22
4.6.1.6 Shutdown........................................................................................................................................ 23
4.6.1.7 Error Messages ............................................................................................................................... 23
4.6.1.8 Events for Event Log....................................................................................................................... 23
4.6.2 CCallbarButton...................................................................................................................... 23
4.6.2.1 Description ..................................................................................................................................... 23
4.6.2.2 Interfacing FUs/Classes................................................................................................................... 23
4.6.2.3 Data Structures and Variables ......................................................................................................... 23
4.6.2.4 Functions/Methods.......................................................................................................................... 23
4.6.2.4.1 Actions .................................................................................................................................... 23
4.6.2.4.2 Properties ................................................................................................................................ 24
4.6.2.5 Startup............................................................................................................................................ 26
4.6.2.6 Shutdown........................................................................................................................................ 26
4.6.2.7 Error Messages ............................................................................................................................... 26
4.6.2.8 Events for Event Log....................................................................................................................... 26
4.6.3 CCallbarCIP.......................................................................................................................... 26
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-744.6.3.1 Description ..................................................................................................................................... 26
4.6.3.2 Interfacing FUs/Classes................................................................................................................... 26
4.6.3.3 Data Structures and Variables ......................................................................................................... 26
4.6.3.4 Functions/Methods.......................................................................................................................... 27
4.6.3.4.1 Actions .................................................................................................................................... 27
4.6.3.4.2 Properties ................................................................................................................................ 27
4.6.3.5 Startup............................................................................................................................................ 28
4.6.3.6 Shutdown........................................................................................................................................ 28
4.6.3.7 Error Messages ............................................................................................................................... 28
4.6.3.8 Events for Event Log....................................................................................................................... 28
4.6.4 CCallbarCombo..................................................................................................................... 29
4.6.4.1 Description ..................................................................................................................................... 29
4.6.4.2 Interfacing FUs/Classes................................................................................................................... 29
4.6.4.3 Data Structures and Variables ......................................................................................................... 29
4.6.4.4 Functions/Methods.......................................................................................................................... 29
4.6.4.4.1 Actions .................................................................................................................................... 29
4.6.4.4.2 Properties ................................................................................................................................ 29
4.6.4.5 Startup............................................................................................................................................ 29
4.6.4.6 Shutdown........................................................................................................................................ 30
4.6.4.7 Error Messages ............................................................................................................................... 30
4.6.4.8 Events for Event Log....................................................................................................................... 30
4.6.5 CCallbarDisplay .................................................................................................................... 30
4.6.5.1 Description ..................................................................................................................................... 30
4.6.5.2 Interfacing FUs/Classes................................................................................................................... 30
4.6.5.3 Data Structures and Variables ......................................................................................................... 30
4.6.5.4 Functions/Methods.......................................................................................................................... 30
4.6.5.4.1 Actions .................................................................................................................................... 30
4.6.5.4.2 Properties ................................................................................................................................ 31
4.6.5.5 Startup............................................................................................................................................ 31
4.6.5.6 Shutdown........................................................................................................................................ 31
4.6.5.7 Error Messages ............................................................................................................................... 31
4.6.5.8 Events for Event Log....................................................................................................................... 31
4.6.6 CCallbarDroplist ................................................................................................................... 31
4.6.6.1 Description ..................................................................................................................................... 31
4.6.6.2 Interfacing FUs/Classes................................................................................................................... 32
4.6.6.3 Data Structures and Variables ......................................................................................................... 32
4.6.6.4 Functions/Methods.......................................................................................................................... 32
4.6.6.4.1 Actions .................................................................................................................................... 32
4.6.6.4.2 Properties ................................................................................................................................ 32
4.6.6.5 Startup............................................................................................................................................ 32
4.6.6.6 Shutdown........................................................................................................................................ 32
4.6.6.7 Error Messages ............................................................................................................................... 32
4.6.6.8 Events for Event Log....................................................................................................................... 33
4.6.7 CCallbarIndicator.................................................................................................................. 33
4.6.7.1 Description ..................................................................................................................................... 33
4.6.7.2 Interfacing FUs/Classes................................................................................................................... 33
4.6.7.3 Data Structures and Variables ......................................................................................................... 33
4.6.7.4 Functions/Methods.......................................................................................................................... 33
4.6.7.4.1 Actions .................................................................................................................................... 33
4.6.7.4.2 Properties ................................................................................................................................ 34
4.6.7.5 Startup............................................................................................................................................ 35
4.6.7.6 Shutdown........................................................................................................................................ 35
4.6.7.7 Error Messages ............................................................................................................................... 35
4.6.7.8 Events for Event Log....................................................................................................................... 35
4.6.8 CCallbarSlider....................................................................................................................... 35
4.6.8.1 Description ..................................................................................................................................... 35
4.6.8.2 Interfacing FUs/Classes................................................................................................................... 35
4.6.8.3 Data Structures and Variables ......................................................................................................... 36
4.6.8.4 Functions/Methods.......................................................................................................................... 36
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-754.6.8.4.1 Actions .................................................................................................................................... 36
4.6.8.4.2 Properties ................................................................................................................................ 36
4.6.8.5 Startup............................................................................................................................................ 37
4.6.8.6 Shutdown........................................................................................................................................ 37
4.6.8.7 Error Messages ............................................................................................................................... 37
4.6.8.8 Events for Event Log....................................................................................................................... 37
4.7 TELEPHONY MANAGEMENT CLASSES .............................................................................................. 37
4.7.1 CVICE ................................................................................................................................... 37
4.7.1.1 Description ..................................................................................................................................... 37
4.7.1.2 Interfacing FUs/Classes................................................................................................................... 37
4.7.1.3 Data Structures and Variables ......................................................................................................... 37
4.7.1.4 Functions/Methods.......................................................................................................................... 37
4.7.1.5 Startup............................................................................................................................................ 40
4.7.1.6 Shutdown........................................................................................................................................ 41
4.7.1.7 Error Messages ............................................................................................................................... 41
4.7.1.7.1 Failed to place call................................................................................................................... 41
4.7.1.7.2 Could not load switch data ....................................................................................................... 41
4.7.1.8 Events for Event Log....................................................................................................................... 41
4.7.2 TAPI Line Callback (LineCallback)........................................................................................ 41
4.7.2.1 Description ..................................................................................................................................... 41
4.7.2.2 Interfacing FUs/Classes................................................................................................................... 41
4.7.2.3 Data Structures and Variables ......................................................................................................... 41
4.7.2.4 Interpreted Messages ...................................................................................................................... 41
4.7.2.5 Startup............................................................................................................................................ 42
4.7.2.6 Shutdown........................................................................................................................................ 42
4.7.2.7 Error Messages ............................................................................................................................... 42
4.7.2.8 Events for Event Log....................................................................................................................... 42
4.7.3 TAPI Phone Callback (PhoneCallback).................................................................................. 42
4.7.3.1 Description ..................................................................................................................................... 43
4.7.3.2 Interfacing FUs/Classes................................................................................................................... 43
4.7.3.3 Data Structures and Variables ......................................................................................................... 43
4.7.3.4 Interpreted Messages ...................................................................................................................... 43
4.7.3.5 Startup............................................................................................................................................ 44
4.7.3.6 Shutdown........................................................................................................................................ 44
4.7.3.7 Error Messages ............................................................................................................................... 44
4.7.3.8 Events for Event Log....................................................................................................................... 44
4.8 OTHER SUPPORT CLASSES .............................................................................................................. 44
4.8.1 CConfigSettings ..................................................................................................................... 44
4.8.1.1 Description ..................................................................................................................................... 44
4.8.1.2 Interfacing FUs/Classes................................................................................................................... 45
4.8.1.3 Data Structures and Variables ......................................................................................................... 45
4.8.1.3.1 Structures ................................................................................................................................ 45
4.8.1.3.2 Variables ................................................................................................................................. 45
4.8.1.4 Functions/Methods.......................................................................................................................... 46
4.8.1.4.1 Methods .................................................................................................................................. 46
4.8.1.4.2 Properties ................................................................................................................................ 46
4.8.1.5 Startup............................................................................................................................................ 48
4.8.1.6 Shutdown........................................................................................................................................ 48
4.8.1.7 Error Messages ............................................................................................................................... 48
4.8.1.7.1 Could not write to CVALOCAL.INI......................................................................................... 48
4.8.1.8 Events for Event Log....................................................................................................................... 48
4.8.2 CEvtLog................................................................................................................................. 48
4.8.2.1 Description ..................................................................................................................................... 48
4.8.2.2 Interfacing FUs/Classes................................................................................................................... 48
4.8.2.3 Data Structures and Variables ......................................................................................................... 48
4.8.2.4 Functions/Methods.......................................................................................................................... 48
4.8.2.4.1 Notifications ............................................................................................................................ 48
4.8.2.5 Startup............................................................................................................................................ 49
4.8.2.6 Shutdown........................................................................................................................................ 49
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-764.8.2.7 Error Messages ............................................................................................................................... 49
4.8.2.8 Events for Event Log....................................................................................................................... 49
4.8.3 CPasteProgressDlg ................................................................................................................ 50
4.8.3.1 Description ..................................................................................................................................... 50
4.8.3.2 Interfacing FUs/Classes................................................................................................................... 50
4.8.3.3 Data Structures and Variables ......................................................................................................... 50
4.8.3.4 Functions/Methods.......................................................................................................................... 50
4.8.3.4.1 Notifications ............................................................................................................................ 50
4.8.3.5 Startup............................................................................................................................................ 50
4.8.3.6 Shutdown........................................................................................................................................ 50
4.8.3.7 Error Messages ............................................................................................................................... 50
4.8.3.8 Events for Event Log....................................................................................................................... 50
4.8.4 CPhoneSettingsDlg ................................................................................................................ 50
4.8.4.1 Description ..................................................................................................................................... 51
4.8.4.2 Interfacing FUs/Classes................................................................................................................... 51
4.8.4.3 Data Structures and Variables ......................................................................................................... 51
4.8.4.4 Functions/Methods.......................................................................................................................... 51
4.8.4.4.1 Notifications ............................................................................................................................ 51
4.8.4.5 Startup............................................................................................................................................ 52
4.8.4.6 Shutdown........................................................................................................................................ 52
4.8.4.7 Error Messages ............................................................................................................................... 53
4.8.4.8 Events for Event Log....................................................................................................................... 53
4.8.5 CRecorderDlg........................................................................................................................ 53
4.8.5.1 Description ..................................................................................................................................... 53
4.8.5.2 Interfacing FUs/Classes................................................................................................................... 54
4.8.5.3 Data Structures and Variables ......................................................................................................... 55
4.8.5.4 Functions/Methods.......................................................................................................................... 55
4.8.5.4.1 Notifications ............................................................................................................................ 56
4.8.5.5 Virtual Over-ridden Functions......................................................................................................... 59
4.8.5.6 Members Functions......................................................................................................................... 59
4.8.5.7 Dialog Controls............................................................................................................................... 60
4.8.5.8 Startup............................................................................................................................................ 61
4.8.5.9 Shutdown........................................................................................................................................ 61
4.8.5.10 Error Messages ............................................................................................................................. 61
4.8.5.11 Events for Event Log..................................................................................................................... 61
4.8.6 CVoiceRecorder..................................................................................................................... 62
4.8.6.1 Description ..................................................................................................................................... 62
4.8.6.2 Interfacing FUs/Classes................................................................................................................... 62
4.8.6.3 Data Structures and Variables ......................................................................................................... 63
4.8.6.4 Functions/Methods.......................................................................................................................... 67
4.8.6.5 Startup............................................................................................................................................ 69
4.8.6.6 Shutdown........................................................................................................................................ 69
4.8.6.7 Error Messages ............................................................................................................................... 69
4.8.6.8 Events for Event Log....................................................................................................................... 70
5. DESIGN CONCERNS...................................................................................................................... 70
6. OTHER CONSIDERATIONS ......................................................................................................... 70
6.1 PROCESSES AND CONTROL FLOW .................................................................................................... 70
6.2 INTERNAL INTERFACES................................................................................................................... 70
6.3 CAPACITIES ................................................................................................................................... 70
6.4 RESOURCE USAGE .......................................................................................................................... 70
6.5 PERFORMANCE............................................................................................................................... 70
6.6 HARDWARE/FIRMWARE .................................................................................................................. 70
6.7 TARGET DEPENDENCIES ................................................................................................................. 70
6.8 FUTURE CONSIDERATIONS .............................................................................................................. 70
7. LIST OF TABLES............................................................................................................................ 71
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-778. TABLE OF CONTENTS.................................................................................................................. 72
Lucent Technologies - Proprietary
Use pursuant to Company instructions.
-78APPENDIX A: DESIGN TEAM DECISON TRACKING
Note: Information about any significant design decisions shall be included in this section. The
information shall include the date of the meeting (whether formal or informal), the attendees, and the
decision made (and why) at the meeting.
Lucent Technologies - Proprietary
Use pursuant to Company instructions.