OPAL  Version 3.18.8
lid.h
Go to the documentation of this file.
1 /*
2  * lid.h
3  *
4  * Line Interface Device
5  *
6  * Open Phone Abstraction Library
7  *
8  * Copyright (c) 1999-2001 Equivalence Pty. Ltd.
9  *
10  * The contents of this file are subject to the Mozilla Public License
11  * Version 1.0 (the "License"); you may not use this file except in
12  * compliance with the License. You may obtain a copy of the License at
13  * http://www.mozilla.org/MPL/
14  *
15  * Software distributed under the License is distributed on an "AS IS"
16  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
17  * the License for the specific language governing rights and limitations
18  * under the License.
19  *
20  * The Original Code is Open H323 Library.
21  *
22  * The Initial Developer of the Original Code is Equivalence Pty. Ltd.
23  *
24  * Portions of this code were written with the assisance of funding from
25  * Quicknet Technologies, Inc. http://www.quicknet.net.
26  *
27  * Contributor(s): ______________________________________.
28  */
29 
30 #ifndef OPAL_LIDS_LID_H
31 #define OPAL_LIDS_LID_H
32 
33 #ifdef P_USE_PRAGMA
34 #pragma interface
35 #endif
36 
37 #include <opal_config.h>
38 
39 #if OPAL_LID
40 
41 #include <opal/mediafmt.h>
42 
43 
45 
49 class OpalLineInterfaceDevice : public PObject
50 {
51  PCLASSINFO(OpalLineInterfaceDevice, PObject);
52 
53  public:
57 
60  virtual PBoolean Open(
61  const PString & device
62  ) = 0;
63 
66  virtual PBoolean IsOpen() const;
67 
70  virtual PBoolean Close();
71 
75  virtual PString GetDeviceType() const = 0;
76 
81  virtual PString GetDeviceName() const = 0;
82 
85  virtual PStringArray GetAllNames() const = 0;
86 
92  virtual PString GetDescription() const = 0;
93 
96  virtual unsigned GetLineCount() const = 0;
97 
104  virtual PBoolean IsLineTerminal(
105  unsigned line
106  ) = 0;
107 
108 
111  virtual PBoolean IsLinePresent(
112  unsigned line,
113  PBoolean force = false
114  );
115 
116 
122  virtual PBoolean IsLineOffHook(
123  unsigned line
124  ) = 0;
125 
131  virtual PBoolean SetLineOffHook(
132  unsigned line,
133  PBoolean newState = true
134  ) = 0;
135 
139  virtual PBoolean SetLineOnHook(
140  unsigned line
141  ) { return SetLineOffHook(line, false); }
142 
146  virtual PBoolean HookFlash(
147  unsigned line,
148  unsigned flashTime = 200
149  );
150 
153  virtual PBoolean HasHookFlash(unsigned line);
154 
155 
166  virtual PBoolean IsLineRinging(
167  unsigned line,
168  DWORD * cadence = NULL
169  );
170 
188  virtual PBoolean RingLine(
189  unsigned line,
190  PINDEX nCadence,
191  const unsigned * pattern = NULL,
192  unsigned frequency = 400
193  );
194 
195 
206  virtual PBoolean SetLineConnected(
207  unsigned line
208  );
209 
220  virtual PBoolean IsLineConnected(
221  unsigned line
222  );
223 
224 
236  virtual PBoolean IsLineDisconnected(
237  unsigned line,
238  PBoolean checkForWink = true
239  );
240 
241 
244  virtual PBoolean SetLineToLineDirect(
245  unsigned line1,
246  unsigned line2,
247  PBoolean connect
248  );
249 
252  virtual PBoolean IsLineToLineDirect(
253  unsigned line1,
254  unsigned line2
255  );
256 
257 
260  virtual OpalMediaFormatList GetMediaFormats() const = 0;
261 
264  virtual PBoolean SetReadFormat(
265  unsigned line,
266  const OpalMediaFormat & mediaFormat
267  ) = 0;
268 
271  virtual PBoolean SetWriteFormat(
272  unsigned line,
273  const OpalMediaFormat & mediaFormat
274  ) = 0;
275 
279  unsigned line
280  ) = 0;
281 
285  unsigned line
286  ) = 0;
287 
290  virtual PBoolean StopReading(
291  unsigned line
292  );
293 
296  virtual PBoolean StopWriting(
297  unsigned line
298  );
299 
304  virtual bool UsesRTP() const;
305 
310  virtual PBoolean SetReadFrameSize(
311  unsigned line,
312  PINDEX frameSize
313  );
314 
319  virtual PBoolean SetWriteFrameSize(
320  unsigned line,
321  PINDEX frameSize
322  );
323 
327  virtual PINDEX GetReadFrameSize(
328  unsigned line
329  );
330 
334  virtual PINDEX GetWriteFrameSize(
335  unsigned line
336  );
337 
340  virtual PBoolean ReadFrame(
341  unsigned line,
342  void * buf,
343  PINDEX & count
344  ) = 0;
345 
348  virtual PBoolean WriteFrame(
349  unsigned line,
350  const void * buf,
351  PINDEX count,
352  PINDEX & written
353  ) = 0;
354 
358  virtual PBoolean ReadBlock(
359  unsigned line,
360  void * buf,
361  PINDEX count
362  );
363 
366  virtual PBoolean WriteBlock(
367  unsigned line,
368  const void * buf,
369  PINDEX count
370  );
371 
372 
375  virtual unsigned GetAverageSignalLevel(
376  unsigned line,
377  PBoolean playback
378  );
379 
380 
383  virtual PBoolean EnableAudio(
384  unsigned line,
385  PBoolean enable = true
386  );
387 
390  PBoolean DisableAudio(
391  unsigned line
392  ) { return EnableAudio(line, false); }
393 
396  virtual PBoolean IsAudioEnabled(
397  unsigned line
398  ) const;
399 
400 
401  enum {
402  MaxVolume = 100
403  };
404 
409  virtual PBoolean SetRecordVolume(
410  unsigned line,
411  unsigned volume
412  );
413 
418  virtual PBoolean SetPlayVolume(
419  unsigned line,
420  unsigned volume
421  );
422 
427  virtual PBoolean GetRecordVolume(
428  unsigned line,
429  unsigned & volume
430  );
431 
436  virtual PBoolean GetPlayVolume(
437  unsigned line,
438  unsigned & volume
439  );
440 
441 
442  enum AECLevels {
450  };
451 
455  virtual AECLevels GetAEC(
456  unsigned line
457  ) const;
458 
462  virtual PBoolean SetAEC(
463  unsigned line,
464  AECLevels level
465  );
466 
470  virtual PBoolean GetVAD(
471  unsigned line
472  ) const;
473 
477  virtual PBoolean SetVAD(
478  unsigned line,
479  PBoolean enable
480  );
481 
482 
496  virtual PBoolean GetCallerID(
497  unsigned line,
498  PString & idString,
499  PBoolean full = false
500  );
501 
523  virtual PBoolean SetCallerID(
524  unsigned line,
525  const PString & idString
526  );
527 
530  virtual PBoolean SendVisualMessageWaitingIndicator(
531  unsigned line,
532  PBoolean on
533  );
534 
535 
536  enum {
539  };
540 
544  virtual PBoolean PlayDTMF(
545  unsigned line,
546  const char * digits,
547  DWORD onTime = DefaultDTMFOnTime,
548  DWORD offTime = DefaultDTMFOffTime
549  );
550 
560  virtual char ReadDTMF(
561  unsigned line
562  );
563 
568  virtual PBoolean GetRemoveDTMF(
569  unsigned line
570  );
571 
576  virtual PBoolean SetRemoveDTMF(
577  unsigned line,
578  PBoolean removeTones
579  );
580 
581 
583  NoTone = -1, // indicates no tones
584  DialTone, // Dial tone
585  RingTone, // Ring indication tone
586  BusyTone, // Line engaged tone
587  CongestionTone,// aka fast busy tone
588  ClearTone, // Call failed/disconnected tone (often same as busy tone)
589  MwiTone, // Message Waiting Tone
590  RoutingTone, // Call is being routed (not normal for PSTN, but VoIP can take a while)
591  CNGTone, // Fax CNG tone
592  CEDTone, // Fax CED tone
595  };
596 
600  unsigned line
601  );
602 
606  unsigned line,
607  unsigned timeout = 3000
608  );
609 
612  virtual PBoolean WaitForTone(
613  unsigned line,
614  CallProgressTones tone,
615  unsigned timeout = 3000
616  );
617 
640  virtual bool SetToneDescription(
641  unsigned line,
642  CallProgressTones tone,
643  const PString & description
644  );
645 
650  };
651 
655  virtual bool SetToneParameters(
656  unsigned line,
657  CallProgressTones tone,
658  unsigned frequency1,
659  unsigned frequency2,
660  ToneMixingModes mode,
661  PINDEX numCadences,
662  const unsigned * onTimes,
663  const unsigned * offTimes
664  );
665 
668  virtual PBoolean PlayTone(
669  unsigned line,
670  CallProgressTones tone
671  );
672 
675  virtual PBoolean IsTonePlaying(
676  unsigned line
677  );
678 
681  virtual PBoolean StopTone(
682  unsigned line
683  );
684 
685 
687  struct DialParams {
689  : m_requireTones(false)
690  , m_dialToneTimeout(2500)
691  , m_dialStartDelay(500)
694  , m_progressTimeout(5000)
695  , m_commaDelay(2000)
696  { }
697 
699  unsigned m_dialToneTimeout;
700  unsigned m_dialStartDelay;
701  unsigned m_dialDigitTime;
703  unsigned m_progressTimeout;
704  unsigned m_commaDelay;
705  };
706 
722  virtual CallProgressTones DialOut(
723  unsigned line,
724  const PString & number,
725  const DialParams & params = DialParams()
726  );
727 
728 
732  virtual unsigned GetWinkDuration(
733  unsigned line
734  );
735 
739  virtual PBoolean SetWinkDuration(
740  unsigned line,
741  unsigned winkDuration
742  );
743 
744 
779  };
780 
784 
787  PString GetCountryCodeName() const;
788 
791  static PString GetCountryCodeName(T35CountryCodes code);
792 
795  static T35CountryCodes GetCountryCode(const PString & name);
796 
798  {
799  const char * m_isoName;
800  unsigned m_dialCode;
802  const char * m_fullName;
803  const char * m_tone[NumTones];
804  };
805 
808  static const T35CountryInfo & GetCountryInfo(T35CountryCodes code);
809 
810 
816  virtual PBoolean SetCountryCode(
817  T35CountryCodes country
818  );
819 
822  virtual PBoolean SetCountryCodeName(
823  const PString & countryName
824  );
825 
828  virtual PStringList GetCountryCodeNameList() const;
829 
830 
833  virtual PBoolean PlayAudio(
834  unsigned line,
835  const PString & filename
836  );
837 
840  virtual PBoolean StopAudio(
841  unsigned line
842  );
843 
844 
848  virtual PBoolean RecordAudioStart(
849  unsigned line,
850  const PString & filename
851  );
852 
857  virtual PBoolean RecordAudioStop(
858  unsigned line
859  );
860 
861 
864  int GetErrorNumber() const { return m_osError; }
865 
868  PString GetErrorText() const;
869 
870  virtual void PrintOn(
871  ostream & strm
872  ) const;
873 
877  const PString & type,
878  void * parameters = NULL
879  );
880 
886  const PString & descriptor,
887  void * parameters = NULL
888  );
889 
892  static PStringList GetAllTypes();
893 
898  static PStringList GetAllDevices();
899 
900 
901  protected:
903  mutable int m_osError;
907  std::vector<bool> m_LineAudioEnabled;
909 #if PTRACING
910  friend ostream & operator<<(ostream & o, CallProgressTones t);
911 #endif
912 };
913 
914 
915 PLIST(OpalLIDList, OpalLineInterfaceDevice);
916 
917 
918 
921 class OpalLine : public PObject
922 {
923  PCLASSINFO(OpalLine, PObject);
924  public:
929  OpalLine(
930  OpalLineInterfaceDevice & device,
931  unsigned lineNumber,
932  const char * userToken = NULL
933  );
935 
942  void PrintOn(
943  ostream & strm
944  ) const;
946 
955  virtual PBoolean IsTerminal() { return m_device.IsLineTerminal(m_lineNumber); }
956 
957 
960  virtual PBoolean IsPresent(
961  PBoolean force = false
962  ) { return m_device.IsLinePresent(m_lineNumber, force); }
963 
964 
970  virtual PBoolean IsOffHook() { return m_device.IsLineOffHook(m_lineNumber); }
971 
977  virtual PBoolean SetOffHook() { return m_device.SetLineOffHook(m_lineNumber, true); }
978 
982  virtual PBoolean SetOnHook() { return m_device.SetLineOffHook(m_lineNumber, false); }
983 
987  virtual PBoolean HookFlash(
988  unsigned flashTime = 200
989  ) { return m_device.HookFlash(m_lineNumber, flashTime); }
990 
993  virtual PBoolean HasHookFlash() { return m_device.HasHookFlash(m_lineNumber); }
994 
995 
1006  virtual PBoolean IsRinging(
1007  DWORD * cadence = NULL
1008  );
1009 
1013  virtual unsigned GetRingCount(
1014  DWORD * cadence = NULL
1015  );
1016 
1034  virtual PBoolean Ring(
1035  PINDEX nCadence,
1036  const unsigned * pattern = NULL,
1037  unsigned frequency = 400
1038  ) { return m_device.RingLine(m_lineNumber, nCadence, pattern, frequency); }
1039 
1040 
1051  virtual PBoolean SetConnected() { return m_device.SetLineConnected(m_lineNumber); }
1052 
1060  virtual PBoolean IsConnected() { return m_device.IsLineConnected(m_lineNumber); }
1061 
1062 
1066  virtual PBoolean IsDisconnected() { return m_device.IsLineDisconnected(m_lineNumber); }
1067 
1070  virtual PBoolean SetReadFormat(
1071  const OpalMediaFormat & mediaFormat
1072  ) { return m_device.SetReadFormat(m_lineNumber, mediaFormat); }
1073 
1076  virtual PBoolean SetWriteFormat(
1077  const OpalMediaFormat & mediaFormat
1078  ) { return m_device.SetWriteFormat(m_lineNumber, mediaFormat); }
1079 
1083 
1087 
1090  virtual PBoolean StopReading() { return m_device.StopReading(m_lineNumber); }
1091 
1094  virtual PBoolean StopWriting() { return m_device.StopWriting(m_lineNumber); }
1095 
1100  virtual PBoolean SetReadFrameSize(
1101  PINDEX frameSize
1102  ) { return m_device.SetReadFrameSize(m_lineNumber, frameSize); }
1103 
1108  virtual PBoolean SetWriteFrameSize(
1109  PINDEX frameSize
1110  ) { return m_device.SetWriteFrameSize(m_lineNumber, frameSize); }
1111 
1116 
1121 
1124  virtual PBoolean ReadFrame(
1125  void * buf,
1126  PINDEX & count
1127  ) { return m_device.ReadFrame(m_lineNumber, buf, count); }
1128 
1131  virtual PBoolean WriteFrame(
1132  const void * buf,
1133  PINDEX count,
1134  PINDEX & written
1135  ) { return m_device.WriteFrame(m_lineNumber, buf, count, written); }
1136 
1140  virtual PBoolean ReadBlock(
1141  void * buf,
1142  PINDEX count
1143  ) { return m_device.ReadBlock(m_lineNumber, buf, count); }
1144 
1147  virtual PBoolean WriteBlock(
1148  const void * buf,
1149  PINDEX count
1150  ) { return m_device.WriteBlock(m_lineNumber, buf, count); }
1151 
1152 
1155  virtual unsigned GetAverageSignalLevel(
1156  PBoolean playback
1157  ) { return m_device.GetAverageSignalLevel(m_lineNumber, playback); }
1158 
1159 
1162  virtual PBoolean EnableAudio(
1163  PBoolean enable = true
1164  ) { return m_device.EnableAudio(m_lineNumber, enable); }
1165 
1168  PBoolean DisableAudio() { return EnableAudio(false); }
1169 
1172  virtual PBoolean IsAudioEnabled() const { return m_device.IsAudioEnabled(m_lineNumber); }
1173 
1174 
1179  virtual PBoolean SetRecordVolume(
1180  unsigned volume
1181  ) { return m_device.SetRecordVolume(m_lineNumber, volume); }
1182 
1187  virtual PBoolean SetPlayVolume(
1188  unsigned volume
1189  ) { return m_device.SetPlayVolume(m_lineNumber, volume); }
1190 
1195  virtual PBoolean GetRecordVolume(
1196  unsigned & volume
1197  ) { return m_device.GetRecordVolume(m_lineNumber, volume); }
1198 
1203  virtual PBoolean GetPlayVolume(
1204  unsigned & volume
1205  ) { return m_device.GetPlayVolume(m_lineNumber, volume); }
1206 
1207 
1212 
1216  virtual PBoolean SetAEC(
1218  ) { return m_device.SetAEC(m_lineNumber, level); }
1219 
1220 
1224  virtual PBoolean GetVAD() const { return m_device.GetVAD(m_lineNumber); }
1225 
1229  virtual PBoolean SetVAD(
1230  PBoolean enable
1231  ) { return m_device.SetVAD(m_lineNumber, enable); }
1232 
1233 
1247  virtual PBoolean GetCallerID(
1248  PString & idString,
1249  PBoolean full = false
1250  ) { return m_device.GetCallerID(m_lineNumber, idString, full); }
1251 
1273  virtual PBoolean SetCallerID(
1274  const PString & idString
1275  ) { return m_device.SetCallerID(m_lineNumber, idString); }
1276 
1280  PBoolean on
1282 
1283 
1287  virtual PBoolean PlayDTMF(
1288  const char * digits,
1291  ) { return m_device.PlayDTMF(m_lineNumber, digits, onTime, offTime); }
1292 
1302  virtual char ReadDTMF() { return m_device.ReadDTMF(m_lineNumber); }
1303 
1308  virtual PBoolean GetRemoveDTMF() { return m_device.GetRemoveDTMF(m_lineNumber); }
1309 
1314  virtual PBoolean SetRemoveDTMF(
1315  PBoolean removeTones
1316  ) { return m_device.SetRemoveDTMF(m_lineNumber, removeTones); }
1317 
1318 
1322 
1326  unsigned timeout = 3000
1327  ) { return m_device.WaitForToneDetect(m_lineNumber, timeout); }
1328 
1331  virtual PBoolean WaitForTone(
1333  unsigned timeout = 3000
1334  ) { return m_device.WaitForTone(m_lineNumber, tone, timeout); }
1335 
1338  virtual PBoolean PlayTone(
1340  ) { return m_device.PlayTone(m_lineNumber, tone); }
1341 
1344  virtual PBoolean IsTonePlaying() { return m_device.IsTonePlaying(m_lineNumber); }
1345 
1348  virtual PBoolean StopTone() { return m_device.StopTone(m_lineNumber); }
1349 
1350 
1367  const PString & number,
1369  ) { return m_device.DialOut(m_lineNumber, number, params); }
1371 
1377 
1380  unsigned GetLineNumber() const { return m_lineNumber; }
1381 
1384  PString GetToken() const { return m_token; }
1385 
1388  void SetToken(const PString & t) { m_token = t; }
1390 
1391  protected:
1393  unsigned m_lineNumber;
1394  PString m_token;
1395  PTimeInterval m_ringStoppedTime;
1396  PTimeInterval m_ringInterCadenceTime;
1397 
1398  PTimeInterval m_ringTick;
1399  unsigned m_ringCount;
1401 };
1402 
1403 
1404 PLIST(OpalLineList, OpalLine);
1405 
1406 
1413 class OpalLIDRegistration : public PCaselessString
1414 {
1415  PCLASSINFO(OpalLIDRegistration, PCaselessString);
1416  public:
1422  const char * name
1423  );
1424 
1429 
1434  virtual OpalLineInterfaceDevice * Create(
1435  void * parameters
1436  ) const = 0;
1438 
1439  protected:
1442 
1444 };
1445 
1446 
1447 #define OPAL_REGISTER_LID_FUNCTION(cls, type, param) \
1448 static class cls##_Registration : public OpalLIDRegistration { \
1449  public: \
1450  cls##_Registration() : OpalLIDRegistration(type) { } \
1451  OpalLineInterfaceDevice * Create(void * param) const; \
1452 } instance_##cls##_Registration; \
1453 OpalLineInterfaceDevice * cls##_Registration::Create(void * param) const
1454 
1455 #ifndef OPAL_NO_PARAM
1456 #define OPAL_NO_PARAM
1457 #endif
1458 
1459 #define OPAL_REGISTER_LID(cls, type) \
1460  OPAL_REGISTER_LID_FUNCTION(cls, type, OPAL_NO_PARAM) \
1461  { return new cls; }
1462 
1463 #define OPAL_REGISTER_LID_PARAM(cls, type) \
1464  OPAL_REGISTER_LID_FUNCTION(cls, type, parameter) \
1465  { return new cls(parameter); }
1466 
1467 #endif // OPAL_LID
1468 
1469 #endif // OPAL_LIDS_LID_H
1470 
1471 
1472 // End of File ///////////////////////////////////////////////////////////////
virtual PBoolean SetRecordVolume(unsigned line, unsigned volume)
Definition: lid.h:756
Definition: lid.h:757
virtual PBoolean HasHookFlash(unsigned line)
PString m_callProgressTones[NumTones]
Definition: lid.h:908
bool m_requireTones
Require dial/ring tone to be detected.
Definition: lid.h:698
Definition: lid.h:763
static OpalLineInterfaceDevice * CreateAndOpen(const PString &descriptor, void *parameters=NULL)
Definition: lid.h:761
virtual PBoolean ReadBlock(unsigned line, void *buf, PINDEX count)
OpalLIDRegistration(const char *name)
virtual PBoolean EnableAudio(unsigned line, PBoolean enable=true)
virtual PBoolean SetRecordVolume(unsigned volume)
Definition: lid.h:1179
PString GetCountryCodeName() const
virtual PStringArray GetAllNames() const =0
Definition: lid.h:776
PBoolean DisableAudio()
Definition: lid.h:1168
virtual bool UsesRTP() const
virtual PBoolean SendVisualMessageWaitingIndicator(unsigned line, PBoolean on)
DialParams()
Definition: lid.h:688
PINDEX m_writeDeblockingOffset
Definition: lid.h:906
virtual bool SetToneParameters(unsigned line, CallProgressTones tone, unsigned frequency1, unsigned frequency2, ToneMixingModes mode, PINDEX numCadences, const unsigned *onTimes, const unsigned *offTimes)
Definition: lid.h:759
Definition: lid.h:760
virtual char ReadDTMF(unsigned line)
PTimeInterval m_ringTick
Definition: lid.h:1398
T35CountryCodes
Definition: lid.h:745
Definition: lid.h:583
virtual PBoolean StopWriting(unsigned line)
virtual PBoolean RecordAudioStart(unsigned line, const PString &filename)
static PStringList GetAllTypes()
virtual PBoolean WriteFrame(const void *buf, PINDEX count, PINDEX &written)
Definition: lid.h:1131
virtual PBoolean IsTonePlaying(unsigned line)
virtual PBoolean EnableAudio(PBoolean enable=true)
Definition: lid.h:1162
virtual PBoolean WaitForTone(unsigned line, CallProgressTones tone, unsigned timeout=3000)
const char * m_fullName
Definition: lid.h:802
Definition: lid.h:773
virtual char ReadDTMF()
Definition: lid.h:1302
Definition: lid.h:772
PBYTEArray m_writeDeblockingBuffer
Definition: lid.h:905
virtual OpalLineInterfaceDevice::CallProgressTones WaitForToneDetect(unsigned timeout=3000)
Definition: lid.h:1325
virtual CallProgressTones DialOut(unsigned line, const PString &number, const DialParams &params=DialParams())
Definition: lid.h:762
PString GetErrorText() const
virtual PBoolean SetWriteFormat(unsigned line, const OpalMediaFormat &mediaFormat)=0
Definition: lid.h:761
virtual PBoolean GetCallerID(PString &idString, PBoolean full=false)
Definition: lid.h:1247
virtual OpalLineInterfaceDevice::CallProgressTones DialOut(const PString &number, const OpalLineInterfaceDevice::DialParams &params=OpalLineInterfaceDevice::DialParams())
Definition: lid.h:1366
Definition: lid.h:773
virtual void PrintOn(ostream &strm) const
Definition: lid.h:759
PString m_token
Definition: lid.h:1394
virtual PBoolean SetAEC(unsigned line, AECLevels level)
Definition: lid.h:448
Definition: lid.h:746
virtual PBoolean SetVAD(PBoolean enable)
Definition: lid.h:1229
virtual PBoolean SetWriteFrameSize(PINDEX frameSize)
Definition: lid.h:1108
Definition: lid.h:772
unsigned m_dialInterDigitTime
Time in msec of silence between each DTMF digit.
Definition: lid.h:702
Definition: lid.h:755
virtual PBoolean IsTonePlaying()
Definition: lid.h:1344
virtual OpalMediaFormat GetReadFormat(unsigned line)=0
bool duplicate
Definition: lid.h:1441
virtual PBoolean ReadFrame(unsigned line, void *buf, PINDEX &count)=0
Definition: lid.h:748
Definition: lid.h:752
std::vector< bool > m_LineAudioEnabled
Definition: lid.h:907
Definition: lid.h:763
virtual PBoolean SetWinkDuration(unsigned line, unsigned winkDuration)
virtual unsigned GetLineCount() const =0
virtual PBoolean ReadFrame(void *buf, PINDEX &count)
Definition: lid.h:1124
virtual PBoolean SetReadFormat(const OpalMediaFormat &mediaFormat)
Definition: lid.h:1070
virtual PBoolean IsDisconnected()
Definition: lid.h:1066
Definition: lid.h:767
Definition: lid.h:749
Definition: lid.h:764
T35CountryCodes GetCountryCode() const
Definition: lid.h:783
Definition: lid.h:758
AECLevels
Definition: lid.h:442
virtual OpalMediaFormat GetWriteFormat()
Definition: lid.h:1086
virtual PINDEX GetWriteFrameSize(unsigned line)
Definition: lid.h:771
virtual unsigned GetAverageSignalLevel(unsigned line, PBoolean playback)
Definition: lid.h:766
static PStringList GetAllDevices()
virtual PBoolean PlayTone(unsigned line, CallProgressTones tone)
Definition: lid.h:752
Definition: lid.h:766
Definition: lid.h:763
virtual PBoolean SetVAD(unsigned line, PBoolean enable)
Definition: lid.h:761
virtual PBoolean SetCountryCode(T35CountryCodes country)
virtual CallProgressTones IsToneDetected(unsigned line)
virtual PBoolean Ring(PINDEX nCadence, const unsigned *pattern=NULL, unsigned frequency=400)
Definition: lid.h:1034
virtual PBoolean IsLineConnected(unsigned line)
Definition: lid.h:773
unsigned m_commaDelay
Time in msec to wait when a comma (&#39;,&#39;) is found in the dial string.
Definition: lid.h:704
unsigned m_dialToneTimeout
Time in msec to wait for a dial tone to be detected.
Definition: lid.h:699
virtual unsigned GetRingCount(DWORD *cadence=NULL)
unsigned m_dialCode
Definition: lid.h:800
virtual PBoolean SetRemoveDTMF(PBoolean removeTones)
Definition: lid.h:1314
PTimeInterval m_ringStoppedTime
Definition: lid.h:1395
virtual OpalLineInterfaceDevice::AECLevels GetAEC() const
Definition: lid.h:1211
virtual bool SetToneDescription(unsigned line, CallProgressTones tone, const PString &description)
virtual PBoolean PlayDTMF(const char *digits, DWORD onTime=OpalLineInterfaceDevice::DefaultDTMFOnTime, DWORD offTime=OpalLineInterfaceDevice::DefaultDTMFOffTime)
Definition: lid.h:1287
virtual PBoolean SetReadFrameSize(PINDEX frameSize)
Definition: lid.h:1100
unsigned m_ringCount
Definition: lid.h:1399
Definition: lid.h:764
Definition: mediafmt.h:112
virtual PString GetDeviceType() const =0
Definition: lid.h:772
virtual PBoolean IsOffHook()
Definition: lid.h:970
virtual PBoolean SendVisualMessageWaitingIndicator(PBoolean on)
Definition: lid.h:1279
virtual PBoolean Open(const PString &device)=0
int m_osError
Definition: lid.h:903
virtual PBoolean SetLineOffHook(unsigned line, PBoolean newState=true)=0
virtual PBoolean SetOnHook()
Definition: lid.h:982
virtual OpalLineInterfaceDevice * Create(void *parameters) const =0
Definition: lid.h:752
Definition: lid.h:758
Definition: lid.h:756
virtual OpalMediaFormat GetReadFormat()
Definition: lid.h:1082
Definition: lid.h:760
virtual unsigned GetWinkDuration(unsigned line)
virtual PINDEX GetWriteFrameSize()
Definition: lid.h:1120
virtual PBoolean HookFlash(unsigned line, unsigned flashTime=200)
Definition: lid.h:444
virtual PBoolean HookFlash(unsigned flashTime=200)
Definition: lid.h:987
Definition: lid.h:764
virtual PBoolean SetLineConnected(unsigned line)
virtual PBoolean SetPlayVolume(unsigned line, unsigned volume)
Definition: lid.h:443
virtual PBoolean StopReading()
Definition: lid.h:1090
virtual PBoolean StopWriting()
Definition: lid.h:1094
virtual PBoolean SetPlayVolume(unsigned volume)
Definition: lid.h:1187
virtual PBoolean IsAudioEnabled(unsigned line) const
Definition: mediafmt.h:806
virtual PBoolean SetLineOnHook(unsigned line)
Definition: lid.h:139
virtual PBoolean GetPlayVolume(unsigned line, unsigned &volume)
PString GetToken() const
Definition: lid.h:1384
Definition: lid.h:776
virtual OpalLineInterfaceDevice::CallProgressTones IsToneDetected()
Definition: lid.h:1321
virtual PBoolean SetCallerID(const PString &idString)
Definition: lid.h:1273
Definition: lid.h:767
virtual PBoolean SetReadFormat(unsigned line, const OpalMediaFormat &mediaFormat)=0
virtual PBoolean GetVAD(unsigned line) const
virtual PBoolean SetAEC(OpalLineInterfaceDevice::AECLevels level)
Definition: lid.h:1216
virtual PBoolean IsLineOffHook(unsigned line)=0
PINDEX m_readDeblockingOffset
Definition: lid.h:906
virtual PBoolean PlayAudio(unsigned line, const PString &filename)
virtual PBoolean StopTone()
Definition: lid.h:1348
virtual PBoolean WriteFrame(unsigned line, const void *buf, PINDEX count, PINDEX &written)=0
unsigned m_dialDigitTime
Time in msec to play DTMF digit.
Definition: lid.h:701
Definition: lid.h:751
unsigned m_progressTimeout
Time in msec to wait for a progress tone (ring, busy or connected) to be detected.
Definition: lid.h:703
Definition: lid.h:753
virtual PStringList GetCountryCodeNameList() const
virtual PBoolean SetRemoveDTMF(unsigned line, PBoolean removeTones)
PLIST(H323LogicalChannelList, H323Channel)
Definition: lid.h:757
virtual PBoolean PlayDTMF(unsigned line, const char *digits, DWORD onTime=DefaultDTMFOnTime, DWORD offTime=DefaultDTMFOffTime)
const char * m_isoName
Definition: lid.h:799
virtual PINDEX GetReadFrameSize()
Definition: lid.h:1115
virtual OpalMediaFormatList GetMediaFormats() const =0
Definition: lid.h:766
virtual PBoolean IsTerminal()
Definition: lid.h:955
virtual PBoolean IsLineToLineDirect(unsigned line1, unsigned line2)
virtual PBoolean PlayTone(OpalLineInterfaceDevice::CallProgressTones tone)
Definition: lid.h:1338
virtual PBoolean RingLine(unsigned line, PINDEX nCadence, const unsigned *pattern=NULL, unsigned frequency=400)
virtual PBoolean GetRemoveDTMF()
Definition: lid.h:1308
void SetToken(const PString &t)
Definition: lid.h:1388
virtual PBoolean GetVAD() const
Definition: lid.h:1224
virtual PBoolean Close()
virtual CallProgressTones WaitForToneDetect(unsigned line, unsigned timeout=3000)
ostream & operator<<(ostream &strm, OpalSilenceDetector::Mode mode)
Definition: lid.h:757
Definition: lid.h:760
Definition: lid.h:761
virtual PBoolean IsLineDisconnected(unsigned line, PBoolean checkForWink=true)
Definition: lid.h:767
Definition: lid.h:762
unsigned m_lineNumber
Definition: lid.h:1393
virtual PBoolean GetCallerID(unsigned line, PString &idString, PBoolean full=false)
int GetErrorNumber() const
Definition: lid.h:864
virtual PBoolean IsConnected()
Definition: lid.h:1060
Definition: lid.h:758
virtual PBoolean IsOpen() const
Definition: lid.h:49
Definition: lid.h:767
virtual unsigned GetAverageSignalLevel(PBoolean playback)
Definition: lid.h:1155
virtual PBoolean SetReadFrameSize(unsigned line, PINDEX frameSize)
T35CountryCodes m_countryCode
Definition: lid.h:904
virtual PString GetDescription() const =0
Definition: lid.h:776
Definition: lid.h:761
Definition: lid.h:766
Definition: lid.h:775
static const T35CountryInfo & GetCountryInfo(T35CountryCodes code)
virtual PBoolean StopReading(unsigned line)
virtual PBoolean SetWriteFrameSize(unsigned line, PINDEX frameSize)
virtual PBoolean StopTone(unsigned line)
virtual PBoolean HasHookFlash()
Definition: lid.h:993
OpalLineInterfaceDevice & GetDevice() const
Definition: lid.h:1376
Definition: lid.h:753
Definition: lid.h:1413
Definition: lid.h:771
PBoolean DisableAudio(unsigned line)
Definition: lid.h:390
virtual PBoolean WaitForTone(OpalLineInterfaceDevice::CallProgressTones tone, unsigned timeout=3000)
Definition: lid.h:1331
virtual PINDEX GetReadFrameSize(unsigned line)
virtual PBoolean IsAudioEnabled() const
Definition: lid.h:1172
OpalLine(OpalLineInterfaceDevice &device, unsigned lineNumber, const char *userToken=NULL)
virtual PBoolean SetCountryCodeName(const PString &countryName)
CallProgressTones
Definition: lid.h:582
virtual PBoolean IsLineTerminal(unsigned line)=0
OpalLineInterfaceDevice & m_device
Definition: lid.h:1392
unsigned m_dialStartDelay
Time in msec to wait between the dial tone detection and dialing the DTMF.
Definition: lid.h:700
virtual PBoolean IsLinePresent(unsigned line, PBoolean force=false)
Definition: lid.h:757
Definition: lid.h:748
virtual PBoolean IsRinging(DWORD *cadence=NULL)
const char * m_tone[NumTones]
Definition: lid.h:803
int m_osHandle
Definition: lid.h:902
ToneMixingModes
Definition: lid.h:646
Definition: lid.h:771
T35CountryCodes m_t35Code
Definition: lid.h:801
virtual OpalMediaFormat GetWriteFormat(unsigned line)=0
Definition: lid.h:760
Definition: lid.h:921
virtual PBoolean SetOffHook()
Definition: lid.h:977
virtual PBoolean WriteBlock(unsigned line, const void *buf, PINDEX count)
PTimeInterval m_ringInterCadenceTime
Definition: lid.h:1396
virtual PBoolean IsPresent(PBoolean force=false)
Definition: lid.h:960
virtual PString GetDeviceName() const =0
virtual PBoolean GetRemoveDTMF(unsigned line)
Definition: lid.h:748
virtual PBoolean GetRecordVolume(unsigned &volume)
Definition: lid.h:1195
Definition: lid.h:752
Definition: lid.h:763
virtual PBoolean WriteBlock(const void *buf, PINDEX count)
Definition: lid.h:1147
virtual PBoolean GetRecordVolume(unsigned line, unsigned &volume)
virtual PBoolean SetWriteFormat(const OpalMediaFormat &mediaFormat)
Definition: lid.h:1076
Definition: lid.h:776
OpalLIDRegistration * link
Definition: lid.h:1440
virtual PBoolean ReadBlock(void *buf, PINDEX count)
Definition: lid.h:1140
void PrintOn(ostream &strm) const
virtual PBoolean SetLineToLineDirect(unsigned line1, unsigned line2, PBoolean connect)
virtual AECLevels GetAEC(unsigned line) const
virtual PBoolean SetConnected()
Definition: lid.h:1051
virtual PBoolean SetCallerID(unsigned line, const PString &idString)
static OpalLineInterfaceDevice * Create(const PString &type, void *parameters=NULL)
unsigned GetLineNumber() const
Definition: lid.h:1380
virtual PBoolean IsLineRinging(unsigned line, DWORD *cadence=NULL)
PBYTEArray m_readDeblockingBuffer
Definition: lid.h:905
virtual PBoolean GetPlayVolume(unsigned &volume)
Definition: lid.h:1203
virtual PBoolean RecordAudioStop(unsigned line)
virtual PBoolean StopAudio(unsigned line)
bool m_lastRingState
Definition: lid.h:1400