ixjlid.h

Go to the documentation of this file.
00001 /*
00002  * ixjlid.h
00003  *
00004  * QuickNet Internet Phone/Line JACK codec interface
00005  *
00006  * Open H323 Library
00007  *
00008  * Copyright (c) 1999-2001 Equivalence Pty. Ltd.
00009  *
00010  * The contents of this file are subject to the Mozilla Public License
00011  * Version 1.0 (the "License"); you may not use this file except in
00012  * compliance with the License. You may obtain a copy of the License at
00013  * http://www.mozilla.org/MPL/
00014  *
00015  * Software distributed under the License is distributed on an "AS IS"
00016  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
00017  * the License for the specific language governing rights and limitations
00018  * under the License.
00019  *
00020  * The Original Code is Open H323 Library.
00021  *
00022  * The Initial Developer of the Original Code is Equivalence Pty. Ltd.
00023  *
00024  * Portions of this code were written with the assisance of funding from
00025  * Quicknet Technologies, Inc. http://www.quicknet.net.
00026  *
00027  * Contributor(s): ______________________________________.
00028  *
00029  * $Log: ixjlid.h,v $
00030  * Revision 2.11  2005/12/15 21:15:44  dsandras
00031  * Fixed compilation with gcc 4.1.
00032  *
00033  * Revision 2.10  2005/11/30 13:35:26  csoutheren
00034  * Changed tags for Doxygen
00035  *
00036  * Revision 2.9  2004/10/06 13:03:41  rjongbloed
00037  * Added "configure" support for known LIDs
00038  * Changed LID GetName() function to be normalised against the GetAllNames()
00039  *   return values and fixed the pre-factory registration system.
00040  * Added a GetDescription() function to do what the previous GetName() did.
00041  *
00042  * Revision 2.8  2004/02/19 10:46:44  rjongbloed
00043  * Merged OpenH323 version 1.13.1 changes.
00044  *
00045  * Revision 2.7  2003/03/24 07:18:29  robertj
00046  * Added registration system for LIDs so can work with various LID types by
00047  *   name instead of class instance.
00048  *
00049  * Revision 2.6  2002/11/10 11:33:17  robertj
00050  * Updated to OpenH323 v1.10.3
00051  *
00052  * Revision 2.5  2002/09/16 02:52:34  robertj
00053  * Added #define so can select if #pragma interface/implementation is used on
00054  *   platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan.
00055  *
00056  * Revision 2.4  2002/09/04 06:01:47  robertj
00057  * Updated to OpenH323 v1.9.6
00058  *
00059  * Revision 2.3  2002/07/01 04:56:30  robertj
00060  * Updated to OpenH323 v1.9.1
00061  *
00062  * Revision 2.2  2001/10/05 00:22:13  robertj
00063  * Updated to PWLib 1.2.0 and OpenH323 1.7.0
00064  *
00065  * Revision 2.1  2001/08/01 05:18:51  robertj
00066  * Made OpalMediaFormatList class global to help with documentation.
00067  *
00068  * Revision 2.0  2001/07/27 15:48:24  robertj
00069  * Conversion of OpenH323 to Open Phone Abstraction Library (OPAL)
00070  *
00071  * Revision 1.65  2004/01/31 13:13:22  csoutheren
00072  * Fixed problem with HAS_IXJ being tested but not included
00073  *
00074  * Revision 1.64  2003/10/27 20:27:37  dereksmithies
00075  * Add log scale methods for audio.
00076  *
00077  * Revision 1.63  2003/04/29 08:27:47  robertj
00078  * Cleaned up documentation for new wink duration functions.
00079  *
00080  * Revision 1.62  2003/04/28 01:47:53  dereks
00081  * Add ability to set/get wink duration for ixj device.
00082  *
00083  * Revision 1.61  2002/11/06 04:03:38  dereks
00084  * Improve docs for  SetToneFilterParameters().
00085  *
00086  * Revision 1.60  2002/11/05 04:26:21  robertj
00087  * Imported RingLine() by array from OPAL.
00088  *
00089  * Revision 1.59  2002/09/16 01:14:15  robertj
00090  * Added #define so can select if #pragma interface/implementation is used on
00091  *   platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan.
00092  *
00093  * Revision 1.58  2002/09/03 06:19:37  robertj
00094  * Normalised the multi-include header prevention ifdef/define symbol.
00095  *
00096  * Revision 1.57  2002/08/05 10:03:47  robertj
00097  * Cosmetic changes to normalise the usage of pragma interface/implementation.
00098  *
00099  * Revision 1.56  2002/05/09 06:26:30  robertj
00100  * Added fuction to get the current audio enable state for line in device.
00101  * Changed IxJ EnableAudio() semantics so is exclusive, no direct switching
00102  *   from PSTN to POTS and vice versa without disabling the old one first.
00103  *
00104  * Revision 1.55  2001/09/24 12:31:35  robertj
00105  * Added backward compatibility with old drivers.
00106  *
00107  * Revision 1.54  2001/07/19 05:54:27  robertj
00108  * Updated interface to xJACK drivers to utilise cadence and filter functions
00109  *   for dial tone, busy tone and ringback tone detection.
00110  *
00111  * Revision 1.53  2001/05/21 06:36:46  craigs
00112  * Changed to allow optional wink detection for line disconnect
00113  *
00114  * Revision 1.52  2001/03/29 23:38:48  robertj
00115  * Added ability to get average signal level for both receive and transmit.
00116  *
00117  * Revision 1.51  2001/02/09 05:16:24  robertj
00118  * Added #pragma interface for GNU C++.
00119  *
00120  * Revision 1.50  2001/01/25 07:27:14  robertj
00121  * Major changes to add more flexible OpalMediaFormat class to normalise
00122  *   all information about media types, especially codecs.
00123  *
00124  * Revision 1.49  2001/01/24 05:34:49  robertj
00125  * Altered volume control range to be percentage, ie 100 is max volume.
00126  *
00127  * Revision 1.48  2000/12/19 06:38:57  robertj
00128  * Fixed missing virtual on IsTonePlaying() function.
00129  *
00130  * Revision 1.47  2000/12/11 01:47:28  robertj
00131  * Changed to use built PWLib class for overlapped I/O.
00132  *
00133  * Revision 1.46  2000/12/11 00:16:51  robertj
00134  * Removed unused filter/cadence function.
00135  *
00136  * Revision 1.45  2000/12/05 11:29:31  craigs
00137  * Fixed problem with DTMF signal by adding queue for DTMF digits
00138  *
00139  * Revision 1.44  2000/12/04 23:30:02  craigs
00140  * Added better initialisation of Quicknet devices
00141  *
00142  * Revision 1.43  2000/11/30 21:28:47  eokerson
00143  * Fixed DTMF signal handling to stop polling ixj driver.
00144  *
00145  * Revision 1.42  2000/11/30 08:48:35  robertj
00146  * Added functions to enable/disable Voice Activity Detection in LID's
00147  *
00148  * Revision 1.41  2000/11/27 10:30:01  craigs
00149  * Added SetRawCodec function
00150  *
00151  * Revision 1.40  2000/11/27 00:12:17  robertj
00152  * Added WIN32 version of hook flash detection function.
00153  *
00154  * Revision 1.39  2000/11/26 23:12:18  craigs
00155  * Added hook flash detection API
00156  *
00157  * Revision 1.38  2000/11/24 11:18:36  robertj
00158  * Don't need special raw modes for Linux drivers ... yet.
00159  *
00160  * Revision 1.37  2000/11/24 10:50:13  robertj
00161  * Added a raw PCM dta mode for generating/detecting standard tones.
00162  * Modified the ReadFrame/WriteFrame functions to allow for variable length codecs.
00163  * Fixed hook state debouncing.
00164  * Added codec to explicitly set LineJACK mixer settings to avoid funny modes
00165  *    the driver/hardware gets into sometimes.
00166  *
00167  * Revision 1.36  2000/11/20 03:15:13  craigs
00168  * Changed tone detection API slightly to allow detection of multiple
00169  * simultaneous tones
00170  * Added fax CNG tone to tone list
00171  *
00172  * Revision 1.35  2000/11/12 22:34:32  craigs
00173  * Changed Linux driver interface code to use signals
00174  *
00175  * Revision 1.34  2000/11/06 06:33:20  robertj
00176  * Changed hook state debounce so does not block for 200ms.
00177  *
00178  * Revision 1.33  2000/11/03 06:22:48  robertj
00179  * Added flag to IsLinePresent() to force slow test, guarenteeing correct value.
00180  *
00181  * Revision 1.32  2000/10/23 05:39:07  craigs
00182  * Added access to exception detection on Unix
00183  * Fixed problem with detecting available devices when
00184  * devices with lower ordinals were used
00185  *
00186  * Revision 1.31  2000/10/19 04:12:13  robertj
00187  * Added enum for xJACK card types.
00188  *
00189  * Revision 1.30  2000/10/19 04:00:35  robertj
00190  * Added functions to get xJACK card type and serial number.
00191  *
00192  * Revision 1.29  2000/10/13 02:21:40  robertj
00193  * Changed volume control code to set more mixer values on LineJACK.
00194  *
00195  * Revision 1.28  2000/09/25 23:59:42  craigs
00196  * Finally got G.728 working on boards which use the 8021
00197  * Added better handling for wink exceptions
00198  *
00199  * Revision 1.27  2000/09/22 01:35:03  robertj
00200  * Added support for handling LID's that only do symmetric codecs.
00201  *
00202  * Revision 1.26  2000/09/13 09:26:28  rogerh
00203  * Add location of FreeBSD header files
00204  *
00205  * Revision 1.25  2000/09/08 06:43:42  craigs
00206  * Added additional ioctl debugging
00207  * Added attempt to reduce ioctl count for hookstate monitoring
00208  *
00209  * Revision 1.24  2000/08/31 13:14:39  craigs
00210  * Added functions to LID
00211  * More bulletproofing to Linux driver
00212  *
00213  * Revision 1.23  2000/07/28 06:29:20  robertj
00214  * Fixed AEC under Win32 so can be changed from other processes.
00215  *
00216  * Revision 1.22  2000/06/22 02:47:12  craigs
00217  * Improved PSTN ring detection
00218  *
00219  * Revision 1.21  2000/06/17 09:34:45  robertj
00220  * Put back variables mistakenly thought to be Linux specific.
00221  *
00222  * Revision 1.20  2000/06/17 04:11:13  craigs
00223  * Fixed problem with potential codec startup problem in Linux IXJ driver
00224  * Moved Linux specific variables to Linux specific section
00225  *
00226  * Revision 1.19  2000/05/24 06:42:18  craigs
00227  * Added calls to get volume settings
00228  *
00229  * Revision 1.18  2000/05/02 04:32:24  robertj
00230  * Fixed copyright notice comment.
00231  *
00232  * Revision 1.17  2000/04/13 23:09:38  craigs
00233  * Fixed problem with callerId on some systems
00234  *
00235  * Revision 1.16  2000/04/06 20:36:25  robertj
00236  * Fixed some LineJACK compatbility problems (eg DTMF detect stopping).
00237  *
00238  * Revision 1.15  2000/04/06 19:37:50  craigs
00239  * Normalised bask to HAS_IXJ
00240  *
00241  * Revision 1.14  2000/04/06 19:29:04  craigs
00242  * Removed all vestiges of the old IXJ driver
00243  *
00244  * Revision 1.13  2000/04/06 17:49:40  craigs
00245  * Removed LINUX_TELEPHONY. Again.
00246  *
00247  * Revision 1.12  2000/04/05 18:04:12  robertj
00248  * Changed caller ID code for better portability.
00249  *
00250  * Revision 1.11  2000/04/05 16:28:05  craigs
00251  * Added caller ID function
00252  *
00253  * Revision 1.10  2000/03/29 20:46:47  robertj
00254  * Added function on LID to get available codecs.
00255  *
00256  * Revision 1.9  2000/03/28 03:47:12  craigs
00257  * Added stuff to stop tone playing from going wrong
00258  *
00259  * Revision 1.8  2000/03/22 17:18:48  robertj
00260  * Changed default DTMF tone string times.
00261  *
00262  * Revision 1.7  2000/03/17 20:58:51  robertj
00263  * Fixed line count to be xJACK card dependent.
00264  *
00265  * Revision 1.6  2000/03/14 11:20:49  rogerh
00266  * Compile the ixj code on FreeBSD. This is needed for openphone support.
00267  *
00268  * Revision 1.5  2000/02/22 09:44:33  robertj
00269  * Fixed compatibility with Linux systems not yet with the Linux Telephony code.
00270  *
00271  * Revision 1.4  2000/01/07 10:01:26  robertj
00272  * GCC/Linux compatibility
00273  *
00274  * Revision 1.3  2000/01/07 08:28:09  robertj
00275  * Additions and changes to line interface device base class.
00276  *
00277  * Revision 1.2  1999/12/24 00:28:03  robertj
00278  * Changes to IXJ interface to follow LID abstraction
00279  *
00280  * Revision 1.1  1999/12/23 23:02:35  robertj
00281  * File reorganision for separating RTP from H.323 and creation of LID for VPB support.
00282  *
00283  */
00284 
00285 #ifndef __OPAL_IXJLID_H
00286 #define __OPAL_IXJLID_H
00287 
00288 #ifdef P_USE_PRAGMA
00289 #pragma interface
00290 #endif
00291 
00292 
00293 #include <opal/buildopts.h>
00294 
00295 #ifdef HAS_IXJ
00296 
00297 #include <lids/lid.h>
00298 
00299 #ifdef P_LINUX
00300 #include <linux/telephony.h>
00301 #include <linux/ixjuser.h>
00302 #endif
00303 #ifdef P_FREEBSD
00304 #include <sys/telephony.h>
00305 #include <sys/ixjuser.h>
00306 #endif
00307 
00308 
00310 
00313 class OpalIxJDevice : public OpalLineInterfaceDevice
00314 {
00315   PCLASSINFO(OpalIxJDevice, OpalLineInterfaceDevice);
00316 
00317   enum { MaxIxjDevices = 10 };
00318 
00319   public:
00322     OpalIxJDevice();
00323 
00327     ~OpalIxJDevice() { Close(); }
00328 
00331     virtual BOOL Open(
00332       const PString & device  
00333     );
00334 
00337     virtual BOOL Close();
00338 
00342     virtual PString GetDeviceType() const;
00343 
00346     virtual PString GetDeviceName() const;
00347 
00350     virtual PStringArray GetAllNames() const;
00351 
00354     virtual PString GetDescription() const;
00355 
00356 
00357     enum {
00358       POTSLine,
00359       PSTNLine,
00360       NumLines
00361     };
00362 
00365     virtual unsigned GetLineCount();
00366 
00367 
00370     virtual BOOL IsLineTerminal(
00371       unsigned line   
00372     ) { return line == POTSLine; }
00373 
00374 
00377     virtual BOOL IsLinePresent(
00378       unsigned line,      
00379       BOOL force = FALSE  
00380     );
00381 
00382 
00387     virtual BOOL IsLineOffHook(
00388       unsigned line   
00389     );
00390 
00394     virtual BOOL SetLineOffHook(
00395       unsigned line,        
00396       BOOL newState = TRUE  
00397     );
00398 
00399 
00402     virtual BOOL IsLineRinging(
00403       unsigned line,          
00404       DWORD * cadence = NULL  
00405     );
00406 
00410     virtual BOOL RingLine(
00411       unsigned line,    
00412       DWORD cadence     
00413     );
00414 
00429     virtual BOOL RingLine(
00430       unsigned line,     
00431       PINDEX nCadence,   
00432       unsigned * pattern 
00433     );
00434 
00435 
00438     virtual BOOL IsLineDisconnected(
00439       unsigned line,   
00440       BOOL checkForWink = TRUE
00441     );
00442 
00443 
00446     BOOL SetLineToLineDirect(
00447       unsigned line1,   
00448       unsigned line2,   
00449       BOOL connect      
00450     );
00451 
00454     BOOL IsLineToLineDirect(
00455       unsigned line1,   
00456       unsigned line2    
00457     );
00458 
00459 
00462     virtual OpalMediaFormatList GetMediaFormats() const;
00463 
00466     virtual BOOL SetReadFormat(
00467       unsigned line,    
00468       const OpalMediaFormat & mediaFormat   
00469     );
00470 
00473     virtual BOOL SetWriteFormat(
00474       unsigned line,    
00475       const OpalMediaFormat & mediaFormat   
00476     );
00477 
00480     virtual OpalMediaFormat GetReadFormat(
00481       unsigned line    
00482     );
00483 
00486     virtual OpalMediaFormat GetWriteFormat(
00487       unsigned line    
00488     );
00489 
00500     virtual BOOL SetRawCodec(
00501       unsigned line    
00502     );
00503 
00506     virtual BOOL StopRawCodec(
00507       unsigned line   
00508     );
00509 
00512     virtual BOOL StopReadCodec(
00513       unsigned line   
00514     );
00515 
00518     virtual BOOL StopWriteCodec(
00519       unsigned line   
00520     );
00521 
00525     virtual PINDEX GetReadFrameSize(
00526       unsigned line   
00527     );
00528 
00529     virtual BOOL SetReadFrameSize(unsigned, PINDEX);
00530 
00534     virtual PINDEX GetWriteFrameSize(
00535       unsigned line   
00536     );
00537 
00538     virtual BOOL SetWriteFrameSize(unsigned, PINDEX);
00539 
00542     virtual BOOL ReadFrame(
00543       unsigned line,    
00544       void * buf,       
00545       PINDEX & count    
00546     );
00547 
00550     virtual BOOL WriteFrame(
00551       unsigned line,    
00552       const void * buf, 
00553       PINDEX count,     
00554       PINDEX & written  
00555     );
00556 
00559     virtual unsigned GetAverageSignalLevel(
00560       unsigned line,  
00561       BOOL playback   
00562     );
00563 
00564 
00567     virtual BOOL EnableAudio(
00568       unsigned line,      
00569       BOOL enable = TRUE
00570     );
00571 
00574     virtual BOOL IsAudioEnabled(
00575       unsigned line      
00576     );
00577 
00578 
00583     virtual BOOL SetRecordVolume(
00584       unsigned line,    
00585       unsigned volume   
00586     );
00587 
00592     virtual BOOL SetPlayVolume(
00593       unsigned line,    
00594       unsigned volume   
00595     );
00596 
00601     virtual BOOL GetRecordVolume(
00602       unsigned line,      
00603       unsigned & volume   
00604     );
00605 
00610     virtual BOOL GetPlayVolume(
00611       unsigned line,      
00612       unsigned & volume   
00613     );
00614 
00617     AECLevels GetAEC(
00618       unsigned line    
00619     );
00620 
00623     BOOL SetAEC(
00624       unsigned line,    
00625       AECLevels level   
00626     );
00627 
00631     unsigned GetWinkDuration(
00632       unsigned line    
00633     );
00634 
00638     BOOL SetWinkDuration(
00639       unsigned line,        
00640       unsigned winkDuration 
00641     );
00642 
00646     virtual BOOL GetVAD(
00647       unsigned line    
00648     );
00649 
00653     virtual BOOL SetVAD(
00654       unsigned line,    
00655       BOOL enable       
00656     );
00657 
00658 
00666     virtual BOOL GetCallerID(
00667       unsigned line,      
00668       PString & idString, 
00669       BOOL full = FALSE   
00670     );
00671 
00680     virtual BOOL SetCallerID(
00681       unsigned line,            
00682       const PString & idString  
00683     );
00684 
00687     virtual BOOL SendCallerIDOnCallWaiting(
00688       unsigned line,            
00689       const PString & idString  
00690     );
00691 
00694     virtual BOOL SendVisualMessageWaitingIndicator(
00695       unsigned line,            
00696       BOOL on
00697     );
00698 
00699 
00700 
00704     virtual BOOL PlayDTMF(
00705       unsigned line,            
00706       const char * digits,      
00707       DWORD onTime = DefaultDTMFOnTime,  
00708       DWORD offTime = DefaultDTMFOffTime 
00709     );
00710 
00716     virtual char ReadDTMF(
00717       unsigned line   
00718     );
00719 
00724     virtual BOOL GetRemoveDTMF(
00725       unsigned line            
00726     );
00727 
00732     virtual BOOL SetRemoveDTMF(
00733       unsigned line,            
00734       BOOL removeTones   
00735     );
00736 
00737 
00740     virtual unsigned IsToneDetected(
00741       unsigned line   
00742     );
00743 
00749     virtual BOOL SetToneFilterParameters(
00750       unsigned line,            
00751       CallProgressTones tone,   
00752       unsigned lowFrequency,    
00753       unsigned highFrequency,   
00754       PINDEX numCadences,       
00755       const unsigned * onTimes, 
00756       const unsigned * offTimes 
00757     );
00758 
00761     virtual BOOL PlayTone(
00762       unsigned line,          
00763       CallProgressTones tone  
00764     );
00765 
00768     virtual BOOL IsTonePlaying(
00769       unsigned line   
00770     );
00771 
00774     virtual BOOL StopTone(
00775       unsigned line   
00776     );
00777 
00780     virtual BOOL HasHookFlash(unsigned line);
00781 
00787     virtual BOOL SetCountryCode(
00788       T35CountryCodes country   
00789     );
00790 
00791 
00794     virtual DWORD GetSerialNumber();
00795 
00796     enum CardTypes {
00797       PhoneJACK = 1,
00798       LineJACK = 3,
00799       PhoneJACK_Lite,
00800       PhoneJACK_PCI,
00801       PhoneCARD,
00802       PhoneJACK_PCI_TJ
00803     };
00804 
00807     DWORD GetCardType() const { return dwCardType; }
00808 
00809 
00812     static PStringArray GetDeviceNames();
00813 
00814 
00815   protected:
00816 
00817     PINDEX    LogScaleVolume(unsigned line, PINDEX volume, BOOL isPlay);
00818 
00819     PString   deviceName;
00820     DWORD     dwCardType;
00821     PMutex    readMutex, writeMutex;
00822     BOOL      readStopped, writeStopped;
00823     PINDEX    readFrameSize, writeFrameSize;
00824     PINDEX    readCodecType, writeCodecType;
00825     BOOL      lastHookState, currentHookState;
00826     PTimer    hookTimeout;
00827     BOOL      inRawMode;
00828     unsigned  enabledAudioLine;
00829     BOOL      exclusiveAudioMode;
00830 
00831 #if defined(WIN32)
00832     BOOL InternalSetVolume(BOOL record, unsigned id, int volume, int mute);
00833     BOOL InternalPlayTone(unsigned line,
00834                           DWORD toneIndex,
00835                           DWORD onTime, DWORD offTime,
00836                           BOOL synchronous);
00837     BOOL IoControl(DWORD dwIoControlCode,
00838                    DWORD inParam = 0,
00839                    DWORD * outParam = NULL);
00840     BOOL IoControl(DWORD dwIoControlCode,
00841                    LPVOID lpInBuffer,
00842                    DWORD nInBufferSize,
00843                    LPVOID lpOutBuffer,
00844                    DWORD nOutBufferSize,
00845                    LPDWORD lpdwBytesReturned,
00846                    PWin32Overlapped * overlap = NULL);
00847 
00848     HANDLE        hDriver;
00849     DWORD         driverVersion;
00850     PTimer        ringTimeout;
00851     DWORD         lastDTMFDigit;
00852     DWORD         lastFlashState;
00853     PTimeInterval toneSendCompletionTime;
00854     BOOL          vadEnabled;
00855     HANDLE        hReadEvent, hWriteEvent;
00856 
00857 #elif defined(HAS_IXJ)
00858 
00859   public:
00860     class ExceptionInfo {
00861       public:
00862         int fd;
00863 
00864         BOOL hasRing;
00865         BOOL hookState;
00866         BOOL hasWink;
00867         BOOL hasFlash;
00868         char dtmf[16];
00869         int dtmfIn;
00870         int dtmfOut;
00871 #ifdef IXJCTL_VMWI
00872         BOOL hasCid;
00873         PHONE_CID cid;
00874 #endif
00875         BOOL filter[4];
00876         BOOL cadence[4];
00877         telephony_exception data;
00878         timeval lastHookChange;
00879     };
00880 
00881     static void SignalHandler(int sig);
00882     ExceptionInfo * GetException();
00883     int GetOSHandle() { return os_handle; }
00884 
00885   protected:
00886     BOOL ConvertOSError(int err);
00887 
00888     static ExceptionInfo exceptionInfo[MaxIxjDevices];
00889     static PMutex        exceptionMutex;
00890     static BOOL          exceptionInit;
00891 
00892     AECLevels aecLevel;
00893     BOOL removeDTMF;
00894     PMutex toneMutex;
00895     BOOL tonePlaying;
00896     PTimer lastRingTime;
00897     BOOL pstnIsOffHook;
00898     BOOL gotWink;
00899     int  userPlayVol, userRecVol;
00900 
00901     int  savedPlayVol, savedRecVol;
00902     AECLevels savedAEC;
00903 
00904 #ifdef IXJCTL_VMWI
00905     PHONE_CID callerIdInfo;
00906 #endif
00907 
00908 #endif
00909 };
00910 
00911 
00912 #define OPAL_IXJ_TYPE_NAME  "Quicknet"
00913 #define OPAL_REGISTER_IXJ() OPAL_REGISTER_LID(OpalIxJDevice, OPAL_IXJ_TYPE_NAME)
00914 
00915 #else // HAS_IXJ
00916 
00917 #define OPAL_REGISTER_IXJ()
00918 
00919 #endif // HAS_IXJ
00920 
00921 #endif // __OPAL_IXJLID_H
00922 
00923 

Generated on Mon Sep 25 16:20:07 2006 for OPAL by  doxygen 1.4.7