lidpluginmgr.h

Go to the documentation of this file.
00001 /*
00002  * lidpluginmgr.h
00003  *
00004  * Line Interface Device plugins manager
00005  *
00006  * Open Phone Abstraction Library (OPAL)
00007  * Formally known as the Open H323 project.
00008  *
00009  * Copyright (C) 2005 Post Increment
00010  *
00011  * The contents of this file are subject to the Mozilla Public License
00012  * Version 1.0 (the "License"); you may not use this file except in
00013  * compliance with the License. You may obtain a copy of the License at
00014  * http://www.mozilla.org/MPL/
00015  *
00016  * Software distributed under the License is distributed on an "AS IS"
00017  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
00018  * the License for the specific language governing rights and limitations
00019  * under the License.
00020  *
00021  * The Original Code is Open Phone Abstraction Library.
00022  *
00023  * The Initial Developer of the Original Code is Post Increment
00024  *
00025  * Contributor(s): ______________________________________.
00026  *
00027  * $Revision: 21283 $
00028  * $Author: rjongbloed $
00029  * $Date: 2008-10-11 07:10:58 +0000 (Sat, 11 Oct 2008) $
00030  */
00031 
00032 #ifndef OPAL_LIDS_LIDPLUGINMGR_H
00033 #define OPAL_LIDS_LIDPLUGINMGR_H
00034 
00035 #ifdef P_USE_PRAGMA
00036 #pragma interface
00037 #endif
00038 
00039 #include <opal/buildopts.h>
00040 
00041 #include <ptlib/pluginmgr.h>
00042 #include <ptlib/sound.h>
00043 #include <lids/lidplugin.h>
00044 #include <lids/lid.h>
00045 
00046 
00047 
00048 class OpalPluginLIDRegistration : public OpalLIDRegistration
00049 {
00050   public:
00051     OpalPluginLIDRegistration(const PluginLID_Definition & definition);
00052 
00053     OpalLineInterfaceDevice * Create(void * param) const;
00054 
00055   private:
00056     PluginLID_Definition m_definition;
00057 };
00058 
00059 
00060 class OpalPluginLIDManager : public PPluginModuleManager
00061 {
00062   PCLASSINFO(OpalPluginLIDManager, PPluginModuleManager);
00063   public:
00064     OpalPluginLIDManager(PPluginManager * pluginMgr = NULL);
00065     ~OpalPluginLIDManager();
00066 
00067     virtual void OnLoadPlugin(PDynaLink & dll, INT code);
00068     virtual void OnShutdown();
00069 
00070   protected:
00071     PList<OpalPluginLIDRegistration> m_registrations;
00072 };
00073 
00074 
00075 
00076 class OpalPluginLID : public OpalLineInterfaceDevice
00077 {
00078   PCLASSINFO(OpalPluginLID, OpalLineInterfaceDevice);
00079   public:
00080     OpalPluginLID(const PluginLID_Definition & definition);
00081     ~OpalPluginLID();
00082 
00085     virtual PBoolean Open(
00086       const PString & device      
00087     );
00088 
00091     virtual PBoolean Close();
00092 
00096     virtual PString GetDeviceType() const;
00097 
00102     virtual PString GetDeviceName() const;
00103 
00106     virtual PStringArray GetAllNames() const;
00107 
00113     virtual PString GetDescription() const;
00114 
00117     virtual unsigned GetLineCount() const;
00118 
00125     virtual PBoolean IsLineTerminal(
00126       unsigned line   
00127     );
00128 
00129 
00132     virtual PBoolean IsLinePresent(
00133       unsigned line,      
00134       PBoolean force = PFalse  
00135     );
00136 
00137 
00143     virtual PBoolean IsLineOffHook(
00144       unsigned line   
00145     );
00146 
00152     virtual PBoolean SetLineOffHook(
00153       unsigned line,        
00154       PBoolean newState = PTrue  
00155     );
00156 
00160     virtual PBoolean HookFlash(
00161       unsigned line,              
00162       unsigned flashTime = 200    
00163     );
00164 
00167     virtual PBoolean HasHookFlash(unsigned line);
00168 
00169 
00180     virtual PBoolean IsLineRinging(
00181       unsigned line,          
00182       DWORD * cadence = NULL  
00183     );
00184 
00199     virtual PBoolean RingLine(
00200       unsigned line,                   
00201       PINDEX nCadence,                 
00202       const unsigned * pattern = NULL, 
00203       unsigned frequency = 400         
00204     );
00205 
00206 
00217     virtual PBoolean SetLineConnected(
00218       unsigned line   
00219     );
00220 
00228     virtual PBoolean IsLineConnected(
00229       unsigned line   
00230     );
00231 
00232 
00239     virtual PBoolean IsLineDisconnected(
00240       unsigned line,   
00241       PBoolean checkForWink = PTrue
00242     );
00243 
00244 
00247     virtual PBoolean SetLineToLineDirect(
00248       unsigned line1,   
00249       unsigned line2,   
00250       PBoolean connect      
00251     );
00252 
00255     virtual PBoolean IsLineToLineDirect(
00256       unsigned line1,   
00257       unsigned line2    
00258     );
00259 
00260 
00263     virtual OpalMediaFormatList GetMediaFormats() const;
00264 
00267     virtual PBoolean SetReadFormat(
00268       unsigned line,    
00269       const OpalMediaFormat & mediaFormat   
00270     );
00271 
00274     virtual PBoolean SetWriteFormat(
00275       unsigned line,    
00276       const OpalMediaFormat & mediaFormat   
00277     );
00278 
00281     virtual OpalMediaFormat GetReadFormat(
00282       unsigned line    
00283     );
00284 
00287     virtual OpalMediaFormat GetWriteFormat(
00288       unsigned line    
00289     );
00290 
00293     virtual PBoolean StopReading(
00294       unsigned line   
00295     );
00296 
00299     virtual PBoolean StopWriting(
00300       unsigned line   
00301     );
00302 
00307     virtual PBoolean SetReadFrameSize(
00308       unsigned line,    
00309       PINDEX frameSize  
00310     );
00311 
00316     virtual PBoolean SetWriteFrameSize(
00317       unsigned line,    
00318       PINDEX frameSize  
00319     );
00320 
00324     virtual PINDEX GetReadFrameSize(
00325       unsigned line   
00326     );
00327 
00331     virtual PINDEX GetWriteFrameSize(
00332       unsigned line   
00333     );
00334 
00337     virtual PBoolean ReadFrame(
00338       unsigned line,    
00339       void * buf,       
00340       PINDEX & count    
00341     );
00342 
00345     virtual PBoolean WriteFrame(
00346       unsigned line,    
00347       const void * buf, 
00348       PINDEX count,     
00349       PINDEX & written  
00350     );
00351 
00352 
00355     virtual unsigned GetAverageSignalLevel(
00356       unsigned line,  
00357       PBoolean playback   
00358     );
00359 
00360 
00363     virtual PBoolean EnableAudio(
00364       unsigned line,      
00365       PBoolean enable = PTrue
00366     );
00367 
00370     virtual PBoolean IsAudioEnabled(
00371       unsigned line      
00372     ) const;
00373 
00374 
00379     virtual PBoolean SetRecordVolume(
00380       unsigned line,    
00381       unsigned volume   
00382     );
00383 
00388     virtual PBoolean SetPlayVolume(
00389       unsigned line,    
00390       unsigned volume   
00391     );
00392 
00397     virtual PBoolean GetRecordVolume(
00398       unsigned line,      
00399       unsigned & volume   
00400     );
00401 
00406     virtual PBoolean GetPlayVolume(
00407       unsigned line,      
00408       unsigned & volume   
00409     );
00410 
00411 
00415     virtual AECLevels GetAEC(
00416       unsigned line    
00417     ) const;
00418 
00422     virtual PBoolean SetAEC(
00423       unsigned line,    
00424       AECLevels level   
00425     );
00426 
00430     virtual PBoolean GetVAD(
00431       unsigned line    
00432     ) const;
00433 
00437     virtual PBoolean SetVAD(
00438       unsigned line,    
00439       PBoolean enable       
00440     );
00441 
00442 
00456     virtual PBoolean GetCallerID(
00457       unsigned line,      
00458       PString & idString, 
00459       PBoolean full = PFalse   
00460     );
00461 
00483     virtual PBoolean SetCallerID(
00484       unsigned line,            
00485       const PString & idString  
00486     );
00487 
00490     virtual PBoolean SendVisualMessageWaitingIndicator(
00491       unsigned line,            
00492       PBoolean on
00493     );
00494 
00495 
00499     virtual PBoolean PlayDTMF(
00500       unsigned line,            
00501       const char * digits,      
00502       DWORD onTime = DefaultDTMFOnTime,  
00503       DWORD offTime = DefaultDTMFOffTime 
00504     );
00505 
00515     virtual char ReadDTMF(
00516       unsigned line   
00517     );
00518 
00523     virtual PBoolean GetRemoveDTMF(
00524       unsigned line   
00525     );
00526 
00531     virtual PBoolean SetRemoveDTMF(
00532       unsigned line,     
00533       PBoolean removeTones   
00534     );
00535 
00536 
00539     virtual CallProgressTones IsToneDetected(
00540       unsigned line   
00541     );
00542 
00545     virtual CallProgressTones WaitForToneDetect(
00546       unsigned line,          
00547       unsigned timeout = 3000 
00548     );
00549 
00552     virtual PBoolean WaitForTone(
00553       unsigned line,          
00554       CallProgressTones tone, 
00555       unsigned timeout = 3000 
00556     );
00557 
00560     virtual bool SetToneParameters(
00561       unsigned line,            
00562       CallProgressTones tone,   
00563       unsigned frequency1,      
00564       unsigned frequency2,      
00565       ToneMixingModes mode,     
00566       PINDEX numCadences,       
00567       const unsigned * onTimes, 
00568       const unsigned * offTimes 
00569     );
00570 
00573     virtual PBoolean PlayTone(
00574       unsigned line,          
00575       CallProgressTones tone  
00576     );
00577 
00580     virtual PBoolean IsTonePlaying(
00581       unsigned line   
00582     );
00583 
00586     virtual PBoolean StopTone(
00587       unsigned line   
00588     );
00589 
00590 
00606     virtual CallProgressTones DialOut(
00607       unsigned line,                
00608       const PString & number,       
00609       const DialParams & params = DialParams() 
00610     );
00611 
00612 
00616     virtual unsigned GetWinkDuration(
00617       unsigned line    
00618     );
00619 
00623     virtual PBoolean SetWinkDuration(
00624       unsigned line,        
00625       unsigned winkDuration 
00626     );
00627 
00633     virtual PBoolean SetCountryCode(
00634       T35CountryCodes country   
00635     );
00636 
00639     virtual PStringList GetCountryCodeNameList() const;
00640 
00641 
00642 
00643   protected:
00644     PDECLARE_NOTIFIER(PThread, OpalPluginLID, TonePlayer);
00645     bool StartTonePlayerThread(int tone);
00646     void StopTonePlayerThread();
00647 
00648 #if PTRACING
00649     bool BadContext() const;
00650     bool BadFunction(void * fnPtr, const char * fnName) const;
00651     PluginLID_Errors CheckError(PluginLID_Errors error, const char * fnName) const;
00652 #endif
00653 
00654     const PluginLID_Definition & m_definition;
00655     void                       * m_context;
00656     PString                      m_deviceName;
00657 
00658     PSoundChannel                m_recorder;
00659     PSoundChannel                m_player;
00660     PThread                    * m_tonePlayer;
00661     PSyncPoint                   m_stopTone;
00662     bool                         m_lockOutTones;
00663 };
00664 
00665 
00666 #endif // OPAL_LIDS_LIDPLUGINMGR_H

Generated on Mon Feb 23 02:01:36 2009 for OPAL by  doxygen 1.5.1