OPAL  Version 3.18.8
lidpluginmgr.h
Go to the documentation of this file.
1 /*
2  * lidpluginmgr.h
3  *
4  * Line Interface Device plugins manager
5  *
6  * Open Phone Abstraction Library (OPAL)
7  * Formally known as the Open H323 project.
8  *
9  * Copyright (C) 2005 Post Increment
10  *
11  * The contents of this file are subject to the Mozilla Public License
12  * Version 1.0 (the "License"); you may not use this file except in
13  * compliance with the License. You may obtain a copy of the License at
14  * http://www.mozilla.org/MPL/
15  *
16  * Software distributed under the License is distributed on an "AS IS"
17  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
18  * the License for the specific language governing rights and limitations
19  * under the License.
20  *
21  * The Original Code is Open Phone Abstraction Library.
22  *
23  * The Initial Developer of the Original Code is Post Increment
24  *
25  * Contributor(s): ______________________________________.
26  */
27 
28 #ifndef OPAL_LIDS_LIDPLUGINMGR_H
29 #define OPAL_LIDS_LIDPLUGINMGR_H
30 
31 #ifdef P_USE_PRAGMA
32 #pragma interface
33 #endif
34 
35 #include <opal_config.h>
36 
37 #if OPAL_LID
38 
39 #include <ptlib/pluginmgr.h>
40 #include <ptlib/sound.h>
41 #include <lids/lidplugin.h>
42 #include <lids/lid.h>
43 
44 
45 
47 {
48  public:
50 
51  OpalLineInterfaceDevice * Create(void * param) const;
52 
53  private:
54  PluginLID_Definition m_definition;
55 };
56 
57 
58 class OpalPluginLIDManager : public PPluginModuleManager
59 {
60  PCLASSINFO(OpalPluginLIDManager, PPluginModuleManager);
61  public:
62  OpalPluginLIDManager(PPluginManager * pluginMgr = NULL);
64 
65  virtual void OnLoadPlugin(PDynaLink & dll, INT code);
66  virtual void OnShutdown();
67 
68  protected:
69  PList<OpalPluginLIDRegistration> m_registrations;
70 };
71 
72 
73 
75 {
77  public:
78  OpalPluginLID(const PluginLID_Definition & definition);
80 
83  virtual PBoolean Open(
84  const PString & device
85  );
86 
89  virtual PBoolean Close();
90 
94  virtual PString GetDeviceType() const;
95 
100  virtual PString GetDeviceName() const;
101 
104  virtual PStringArray GetAllNames() const;
105 
111  virtual PString GetDescription() const;
112 
115  virtual unsigned GetLineCount() const;
116 
123  virtual PBoolean IsLineTerminal(
124  unsigned line
125  );
126 
127 
130  virtual PBoolean IsLinePresent(
131  unsigned line,
132  PBoolean force = false
133  );
134 
135 
141  virtual PBoolean IsLineOffHook(
142  unsigned line
143  );
144 
150  virtual PBoolean SetLineOffHook(
151  unsigned line,
152  PBoolean newState = true
153  );
154 
158  virtual PBoolean HookFlash(
159  unsigned line,
160  unsigned flashTime = 200
161  );
162 
165  virtual PBoolean HasHookFlash(unsigned line);
166 
167 
178  virtual PBoolean IsLineRinging(
179  unsigned line,
180  DWORD * cadence = NULL
181  );
182 
197  virtual PBoolean RingLine(
198  unsigned line,
199  PINDEX nCadence,
200  const unsigned * pattern = NULL,
201  unsigned frequency = 400
202  );
203 
204 
215  virtual PBoolean SetLineConnected(
216  unsigned line
217  );
218 
226  virtual PBoolean IsLineConnected(
227  unsigned line
228  );
229 
230 
237  virtual PBoolean IsLineDisconnected(
238  unsigned line,
239  PBoolean checkForWink = true
240  );
241 
242 
245  virtual PBoolean SetLineToLineDirect(
246  unsigned line1,
247  unsigned line2,
248  PBoolean connect
249  );
250 
253  virtual PBoolean IsLineToLineDirect(
254  unsigned line1,
255  unsigned line2
256  );
257 
258 
261  virtual OpalMediaFormatList GetMediaFormats() const;
262 
265  virtual PBoolean SetReadFormat(
266  unsigned line,
267  const OpalMediaFormat & mediaFormat
268  );
269 
272  virtual PBoolean SetWriteFormat(
273  unsigned line,
274  const OpalMediaFormat & mediaFormat
275  );
276 
280  unsigned line
281  );
282 
286  unsigned line
287  );
288 
291  virtual PBoolean StopReading(
292  unsigned line
293  );
294 
297  virtual PBoolean StopWriting(
298  unsigned line
299  );
300 
305  virtual PBoolean SetReadFrameSize(
306  unsigned line,
307  PINDEX frameSize
308  );
309 
314  virtual PBoolean SetWriteFrameSize(
315  unsigned line,
316  PINDEX frameSize
317  );
318 
322  virtual PINDEX GetReadFrameSize(
323  unsigned line
324  );
325 
329  virtual PINDEX GetWriteFrameSize(
330  unsigned line
331  );
332 
335  virtual PBoolean ReadFrame(
336  unsigned line,
337  void * buf,
338  PINDEX & count
339  );
340 
343  virtual PBoolean WriteFrame(
344  unsigned line,
345  const void * buf,
346  PINDEX count,
347  PINDEX & written
348  );
349 
350 
353  virtual unsigned GetAverageSignalLevel(
354  unsigned line,
355  PBoolean playback
356  );
357 
358 
361  virtual PBoolean EnableAudio(
362  unsigned line,
363  PBoolean enable = true
364  );
365 
368  virtual PBoolean IsAudioEnabled(
369  unsigned line
370  ) const;
371 
372 
377  virtual PBoolean SetRecordVolume(
378  unsigned line,
379  unsigned volume
380  );
381 
386  virtual PBoolean SetPlayVolume(
387  unsigned line,
388  unsigned volume
389  );
390 
395  virtual PBoolean GetRecordVolume(
396  unsigned line,
397  unsigned & volume
398  );
399 
404  virtual PBoolean GetPlayVolume(
405  unsigned line,
406  unsigned & volume
407  );
408 
409 
413  virtual AECLevels GetAEC(
414  unsigned line
415  ) const;
416 
420  virtual PBoolean SetAEC(
421  unsigned line,
422  AECLevels level
423  );
424 
428  virtual PBoolean GetVAD(
429  unsigned line
430  ) const;
431 
435  virtual PBoolean SetVAD(
436  unsigned line,
437  PBoolean enable
438  );
439 
440 
454  virtual PBoolean GetCallerID(
455  unsigned line,
456  PString & idString,
457  PBoolean full = false
458  );
459 
481  virtual PBoolean SetCallerID(
482  unsigned line,
483  const PString & idString
484  );
485 
488  virtual PBoolean SendVisualMessageWaitingIndicator(
489  unsigned line,
490  PBoolean on
491  );
492 
493 
497  virtual PBoolean PlayDTMF(
498  unsigned line,
499  const char * digits,
500  DWORD onTime = DefaultDTMFOnTime,
501  DWORD offTime = DefaultDTMFOffTime
502  );
503 
513  virtual char ReadDTMF(
514  unsigned line
515  );
516 
521  virtual PBoolean GetRemoveDTMF(
522  unsigned line
523  );
524 
529  virtual PBoolean SetRemoveDTMF(
530  unsigned line,
531  PBoolean removeTones
532  );
533 
534 
538  unsigned line
539  );
540 
544  unsigned line,
545  unsigned timeout = 3000
546  );
547 
550  virtual PBoolean WaitForTone(
551  unsigned line,
552  CallProgressTones tone,
553  unsigned timeout = 3000
554  );
555 
558  virtual bool SetToneParameters(
559  unsigned line,
560  CallProgressTones tone,
561  unsigned frequency1,
562  unsigned frequency2,
563  ToneMixingModes mode,
564  PINDEX numCadences,
565  const unsigned * onTimes,
566  const unsigned * offTimes
567  );
568 
571  virtual PBoolean PlayTone(
572  unsigned line,
573  CallProgressTones tone
574  );
575 
578  virtual PBoolean IsTonePlaying(
579  unsigned line
580  );
581 
584  virtual PBoolean StopTone(
585  unsigned line
586  );
587 
588 
604  virtual CallProgressTones DialOut(
605  unsigned line,
606  const PString & number,
607  const DialParams & params = DialParams()
608  );
609 
610 
614  virtual unsigned GetWinkDuration(
615  unsigned line
616  );
617 
621  virtual PBoolean SetWinkDuration(
622  unsigned line,
623  unsigned winkDuration
624  );
625 
631  virtual PBoolean SetCountryCode(
632  T35CountryCodes country
633  );
634 
637  virtual PStringList GetCountryCodeNameList() const;
638 
639 
640 
641  protected:
642  PDECLARE_NOTIFIER(PThread, OpalPluginLID, TonePlayer);
643  bool StartTonePlayerThread(int tone);
644  void StopTonePlayerThread();
645 
646 #if PTRACING
647  bool BadContext() const;
648  bool BadFunction(void * fnPtr, const char * fnName) const;
649  PluginLID_Errors CheckError(PluginLID_Errors error, const char * fnName) const;
650 #endif
651 
653  void * m_context;
654  PString m_deviceName;
655 
656  PSoundChannel m_recorder;
657  PSoundChannel m_player;
658  PThread * m_tonePlayer;
659  PSyncPoint m_stopTone;
661 };
662 
663 
665 
666 #endif // OPAL_LID
667 
668 #endif // OPAL_LIDS_LIDPLUGINMGR_H
virtual PBoolean Close()
Definition: lidpluginmgr.h:58
virtual PBoolean SetRecordVolume(unsigned line, unsigned volume)
virtual PStringList GetCountryCodeNameList() const
bool m_lockOutTones
Definition: lidpluginmgr.h:660
virtual PBoolean SetCallerID(unsigned line, const PString &idString)
virtual PBoolean PlayTone(unsigned line, CallProgressTones tone)
Definition: lidpluginmgr.h:74
T35CountryCodes
Definition: lid.h:745
virtual OpalMediaFormat GetWriteFormat(unsigned line)
virtual PString GetDeviceType() const
OpalPluginLID(const PluginLID_Definition &definition)
virtual PBoolean RingLine(unsigned line, PINDEX nCadence, const unsigned *pattern=NULL, unsigned frequency=400)
virtual PString GetDescription() const
virtual PBoolean SetPlayVolume(unsigned line, unsigned volume)
virtual char ReadDTMF(unsigned line)
virtual PBoolean IsLineTerminal(unsigned line)
OpalPluginLIDManager(PPluginManager *pluginMgr=NULL)
virtual PBoolean GetCallerID(unsigned line, PString &idString, PBoolean full=false)
OpalLineInterfaceDevice * Create(void *param) const
const PluginLID_Definition & m_definition
Definition: lidpluginmgr.h:652
virtual unsigned GetLineCount() const
virtual PBoolean IsTonePlaying(unsigned line)
AECLevels
Definition: lid.h:442
void StopTonePlayerThread()
PFACTORY_LOAD(OpalPluginCodecManager)
virtual PBoolean SetCountryCode(T35CountryCodes country)
virtual PBoolean SetWriteFormat(unsigned line, const OpalMediaFormat &mediaFormat)
virtual PBoolean IsLineToLineDirect(unsigned line1, unsigned line2)
PSoundChannel m_player
Definition: lidpluginmgr.h:657
Definition: mediafmt.h:112
virtual PBoolean GetVAD(unsigned line) const
virtual PBoolean SetWinkDuration(unsigned line, unsigned winkDuration)
virtual PBoolean IsLineRinging(unsigned line, DWORD *cadence=NULL)
virtual PBoolean SendVisualMessageWaitingIndicator(unsigned line, PBoolean on)
PThread * m_tonePlayer
Definition: lidpluginmgr.h:658
virtual OpalMediaFormatList GetMediaFormats() const
Definition: mediafmt.h:806
PDECLARE_NOTIFIER(PThread, OpalPluginLID, TonePlayer)
virtual PBoolean SetVAD(unsigned line, PBoolean enable)
virtual unsigned GetAverageSignalLevel(unsigned line, PBoolean playback)
virtual PBoolean SetReadFrameSize(unsigned line, PINDEX frameSize)
virtual PStringArray GetAllNames() const
virtual PBoolean SetLineToLineDirect(unsigned line1, unsigned line2, PBoolean connect)
virtual AECLevels GetAEC(unsigned line) const
bool StartTonePlayerThread(int tone)
PluginLID_Errors
Definition: lidplugin.h:71
PList< OpalPluginLIDRegistration > m_registrations
Definition: lidpluginmgr.h:69
virtual PBoolean HasHookFlash(unsigned line)
virtual PBoolean IsLineConnected(unsigned line)
virtual PBoolean GetPlayVolume(unsigned line, unsigned &volume)
virtual CallProgressTones IsToneDetected(unsigned line)
PSyncPoint m_stopTone
Definition: lidpluginmgr.h:659
PString m_deviceName
Definition: lidpluginmgr.h:654
virtual PString GetDeviceName() const
virtual unsigned GetWinkDuration(unsigned line)
virtual PBoolean GetRecordVolume(unsigned line, unsigned &volume)
virtual PBoolean ReadFrame(unsigned line, void *buf, PINDEX &count)
virtual void OnShutdown()
virtual void OnLoadPlugin(PDynaLink &dll, INT code)
virtual PBoolean WriteFrame(unsigned line, const void *buf, PINDEX count, PINDEX &written)
virtual PBoolean SetAEC(unsigned line, AECLevels level)
Definition: lid.h:49
virtual PBoolean GetRemoveDTMF(unsigned line)
virtual PBoolean Open(const PString &device)
virtual PBoolean SetWriteFrameSize(unsigned line, PINDEX frameSize)
virtual PBoolean SetLineConnected(unsigned line)
virtual PBoolean IsLineOffHook(unsigned line)
virtual PINDEX GetWriteFrameSize(unsigned line)
Definition: lid.h:1413
virtual CallProgressTones WaitForToneDetect(unsigned line, unsigned timeout=3000)
virtual bool SetToneParameters(unsigned line, CallProgressTones tone, unsigned frequency1, unsigned frequency2, ToneMixingModes mode, PINDEX numCadences, const unsigned *onTimes, const unsigned *offTimes)
CallProgressTones
Definition: lid.h:582
Definition: lidpluginmgr.h:46
virtual PBoolean SetRemoveDTMF(unsigned line, PBoolean removeTones)
virtual PBoolean WaitForTone(unsigned line, CallProgressTones tone, unsigned timeout=3000)
virtual PBoolean HookFlash(unsigned line, unsigned flashTime=200)
virtual PINDEX GetReadFrameSize(unsigned line)
void * m_context
Definition: lidpluginmgr.h:653
Definition: lidplugin.h:117
ToneMixingModes
Definition: lid.h:646
virtual PBoolean SetLineOffHook(unsigned line, PBoolean newState=true)
virtual OpalMediaFormat GetReadFormat(unsigned line)
virtual PBoolean StopTone(unsigned line)
virtual PBoolean IsLinePresent(unsigned line, PBoolean force=false)
virtual PBoolean PlayDTMF(unsigned line, const char *digits, DWORD onTime=DefaultDTMFOnTime, DWORD offTime=DefaultDTMFOffTime)
virtual PBoolean SetReadFormat(unsigned line, const OpalMediaFormat &mediaFormat)
virtual PBoolean StopReading(unsigned line)
OpalPluginLIDRegistration(const PluginLID_Definition &definition)
virtual PBoolean StopWriting(unsigned line)
virtual CallProgressTones DialOut(unsigned line, const PString &number, const DialParams &params=DialParams())
virtual PBoolean IsLineDisconnected(unsigned line, PBoolean checkForWink=true)
virtual PBoolean EnableAudio(unsigned line, PBoolean enable=true)
PSoundChannel m_recorder
Definition: lidpluginmgr.h:656
virtual PBoolean IsAudioEnabled(unsigned line) const