OPAL  Version 3.18.8
lidep.h
Go to the documentation of this file.
1 /*
2  * lidep.h
3  *
4  * Line Interface Device EndPoint
5  *
6  * Open Phone Abstraction Library
7  *
8  * Copyright (c) 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_LIDEP_H
31 #define OPAL_LIDS_LIDEP_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/endpoint.h>
42 #include <lids/lid.h>
43 #include <codec/silencedetect.h>
44 
45 
46 class OpalLineConnection;
47 
48 
54 {
55  PCLASSINFO(OpalLineEndPoint, OpalEndPoint);
56 
57  public:
63  OpalManager & manager
64  );
65 
69 
101  virtual PSafePtr<OpalConnection> MakeConnection(
102  OpalCall & call,
103  const PString & party,
104  void * userData = NULL,
105  unsigned int options = 0,
106  OpalConnection::StringOptions * stringOptions = NULL
107  );
108 
118  virtual OpalMediaFormatList GetMediaFormats() const;
120 
124  OpalCall & call,
125  OpalLine & line,
126  void * userData,
127  const PString & number
128  );
130 
137  PSafePtr<OpalLineConnection> GetLIDConnectionWithLock(
138  const PString & token,
139  PSafetyMode mode = PSafeReadWrite
140  ) { return PSafePtrCast<OpalConnection, OpalLineConnection>(GetConnectionWithLock(token, mode)); }
141 
149  PBoolean AddLine(
150  OpalLine * line
151  );
152 
156  void RemoveLine(
157  OpalLine * line
158  );
159 
160 
165  const PList<OpalLine> & GetLines() const { return m_lines; }
166 
170  void RemoveLine(
171  const PString & token
172  );
173 
178  void RemoveAllLines();
179 
189  virtual PBoolean AddLinesFromDevice(
190  OpalLineInterfaceDevice & device
191  );
192 
197  OpalLineInterfaceDevice & device
198  );
199 
205  PBoolean AddDeviceNames(
206  const PStringArray & descriptors
207  );
208 
218  PBoolean AddDeviceName(
219  const PString & descriptor
220  );
221 
225  const PString & descriptor
226  );
227 
239  virtual PBoolean AddDevice(
240  OpalLineInterfaceDevice * device
241  );
242 
246  void RemoveDevice(
247  OpalLineInterfaceDevice * device
248  );
249 
253 
261  OpalLine * GetLine(
262  const PString & lineName,
263  bool enableAudio = false,
264  bool terminating = true
265  );
266 
270  void SetDefaultLine(
271  const PString & lineName
272  );
273 
279  bool SetCountryCode(
281  );
282 
285  bool SetCountryCodeName(
286  const PString & countryName
287  );
289 
290 
291  protected:
292  PDECLARE_NOTIFIER(PThread, OpalLineEndPoint, MonitorLines);
293  virtual void MonitorLine(OpalLine & line);
294 
295  OpalLIDList m_devices;
296  OpalLineList m_lines;
297  PString m_defaultLine;
298  PDECLARE_MUTEX(m_linesMutex);
299  PThread * m_monitorThread;
300  PSyncPoint m_exitFlag;
301 };
302 
303 
307 {
308  PCLASSINFO(OpalLineConnection, OpalConnection);
309 
310  public:
316  OpalCall & call,
317  OpalLineEndPoint & endpoint,
318  OpalLine & line,
319  const PString & number
320  );
322 
327  virtual PString GetPrefixName() const;
328 
337  virtual bool IsNetworkConnection() const { return !m_line.IsTerminal(); }
338 
345  virtual PBoolean SetUpConnection();
346 
357  virtual PBoolean SetAlerting(
358  const PString & calleeName,
359  PBoolean withMedia
360  );
361 
366  virtual PBoolean SetConnected();
367 
386  virtual void OnReleased();
387 
394  virtual PString GetDestinationAddress();
395 
402  virtual OpalMediaFormatList GetMediaFormats() const;
403 
419  const OpalMediaFormat & mediaFormat,
420  unsigned sessionID,
421  PBoolean isSource
422  );
423 
436  virtual PBoolean OnOpenMediaStream(
437  OpalMediaStream & stream
438  );
439 
447  virtual void OnClosedMediaStream(
448  const OpalMediaStream & stream
449  );
450 
453  virtual PBoolean SetAudioVolume(
454  PBoolean source,
455  unsigned percentage
456  );
457 
461  virtual unsigned GetAudioSignalLevel(
462  PBoolean source
463  );
464 
472  virtual PBoolean SendUserInputString(
473  const PString & value
474  );
475 
482  virtual PBoolean SendUserInputTone(
483  char tone,
484  int duration
485  );
486 
493  virtual PBoolean PromptUserInput(
494  PBoolean play
495  );
497 
502  void StartIncoming();
503 
506  virtual void Monitor();
508 
509 
514  OpalLine & GetLine() { return m_line; }
515 
520 
524 
528  unsigned int uiDialDelay
529  ) { m_dialParams.m_dialStartDelay = uiDialDelay;}
530 
534  unsigned int getDialDelay() const { return m_dialParams.m_dialStartDelay; }
536 
537  protected:
542  PString m_dialedNumber;
545 
546  PDECLARE_NOTIFIER(PThread, OpalLineConnection, HandleIncoming);
547  PThread * m_handlerThread;
548 };
549 
550 
555 {
557  public:
563  OpalLineConnection & conn,
564  const OpalMediaFormat & mediaFormat,
565  unsigned sessionID,
566  PBoolean isSource,
567  OpalLine & line
568  );
570 
572 
573 
581  virtual PBoolean Open();
582 
588  virtual PBoolean ReadPacket(
589  RTP_DataFrame & packet
590  );
591 
597  virtual PBoolean WritePacket(
598  RTP_DataFrame & packet
599  );
600 
604  virtual PBoolean ReadData(
605  BYTE * data,
606  PINDEX size,
607  PINDEX & length
608  );
609 
613  virtual PBoolean WriteData(
614  const BYTE * data,
615  PINDEX length,
616  PINDEX & written
617  );
618 
624  virtual PBoolean SetDataSize(
625  PINDEX dataSize,
626  PINDEX frameTime
627  );
628 
632  virtual PBoolean IsSynchronous() const;
633 
644  virtual PBoolean RequiresPatchThread(
645  OpalMediaStream * stream
646  ) const;
648 
653  OpalLine & GetLine() { return m_line; }
655 
656  protected:
657  virtual void InternalClose();
658 
662  unsigned m_missedCount;
663  BYTE m_lastSID[4];
666 };
667 
668 
670 {
672  public:
678  OpalLine & line,
679  const Params & newParam
680  );
682 
693  virtual unsigned GetAverageSignalLevel(
694  const BYTE * buffer,
695  PINDEX size
696  );
698 
699  protected:
701 };
702 
703 
704 #endif // OPAL_LID
705 
706 #endif // OPAL_LIDS_LIDEP_H
707 
708 
709 // End of File ///////////////////////////////////////////////////////////////
Definition: silencedetect.h:54
Definition: manager.h:150
PSyncPoint m_exitFlag
Definition: lidep.h:300
PDECLARE_NOTIFIER(PThread, OpalLineEndPoint, MonitorLines)
Definition: endpoint.h:65
OpalLine * GetLine(const PString &lineName, bool enableAudio=false, bool terminating=true)
OpalLine & m_line
Definition: lidep.h:539
BYTE m_lastSID[4]
Definition: lidep.h:663
virtual PBoolean AddDevice(OpalLineInterfaceDevice *device)
T35CountryCodes
Definition: lid.h:745
virtual unsigned GetAudioSignalLevel(PBoolean source)
const PList< OpalLine > & GetLines() const
Definition: lidep.h:165
virtual PBoolean IsSynchronous() const
virtual OpalLineConnection * CreateConnection(OpalCall &call, OpalLine &line, void *userData, const PString &number)
const OpalLineInterfaceDevice * GetDeviceByName(const PString &descriptor)
virtual PBoolean SendUserInputString(const PString &value)
virtual PBoolean PromptUserInput(PBoolean play)
virtual void Monitor()
virtual PBoolean SetUpConnection()
PThread * m_handlerThread
Definition: lidep.h:547
virtual PString GetPrefixName() const
OpalLineConnection(OpalCall &call, OpalLineEndPoint &endpoint, OpalLine &line, const PString &number)
virtual PBoolean OnOpenMediaStream(OpalMediaStream &stream)
Definition: lidep.h:306
unsigned m_directLineNumber
Definition: lidep.h:665
virtual bool IsNetworkConnection() const
Definition: lidep.h:337
PThread * m_monitorThread
Definition: lidep.h:299
OpalLine & m_line
Definition: lidep.h:700
virtual PString GetDestinationAddress()
virtual PBoolean SetAudioVolume(PBoolean source, unsigned percentage)
PBoolean AddDeviceNames(const PStringArray &descriptors)
OpalLineSilenceDetector(OpalLine &line, const Params &newParam)
virtual PBoolean WriteData(const BYTE *data, PINDEX length, PINDEX &written)
virtual void OnReleased()
void RemoveDevice(OpalLineInterfaceDevice *device)
OpalLine & m_line
Definition: lidep.h:659
bool m_useDeblocking
Definition: lidep.h:661
bool m_wasOffHook
Definition: lidep.h:540
~OpalLineEndPoint()
Make sure thread has stopped before exiting.
bool SetCountryCodeName(const PString &countryName)
OpalLineEndPoint & m_endpoint
Definition: lidep.h:538
Definition: silencedetect.h:43
OpalLineInterfaceDevice::DialParams m_dialParams
Definition: lidep.h:543
void SetPromptTone(OpalLineInterfaceDevice::CallProgressTones tone)
Definition: lidep.h:523
PSafePtr< OpalConnection > GetConnectionWithLock(const PString &token, PSafetyMode mode=PSafeReadWrite) const
virtual OpalMediaStream * CreateMediaStream(const OpalMediaFormat &mediaFormat, unsigned sessionID, PBoolean isSource)
Definition: mediafmt.h:112
virtual OpalMediaFormatList GetMediaFormats() const
Definition: connection.h:530
virtual unsigned GetAverageSignalLevel(const BYTE *buffer, PINDEX size)
bool SetCountryCode(OpalLineInterfaceDevice::T35CountryCodes country)
void RemoveLine(OpalLine *line)
void setDialDelay(unsigned int uiDialDelay)
Definition: lidep.h:527
Definition: rtp.h:540
Definition: lidep.h:53
bool m_lastFrameWasSignal
Definition: lidep.h:664
virtual PBoolean WritePacket(RTP_DataFrame &packet)
virtual PBoolean SetDataSize(PINDEX dataSize, PINDEX frameTime)
Definition: mediafmt.h:806
OpalLineInterfaceDevice::CallProgressTones GetPromptTone() const
Definition: lidep.h:519
virtual PBoolean SetAlerting(const PString &calleeName, PBoolean withMedia)
void RemoveLinesFromDevice(OpalLineInterfaceDevice &device)
Definition: call.h:62
PBoolean AddLine(OpalLine *line)
PBoolean AddDeviceName(const PString &descriptor)
virtual void InternalClose()
virtual PBoolean IsTerminal()
Definition: lid.h:955
virtual PBoolean SendUserInputTone(char tone, int duration)
PString m_defaultLine
Definition: lidep.h:297
bool m_notUsingRTP
Definition: lidep.h:660
void RemoveDevices()
Definition: lidep.h:252
OpalLineList m_lines
Definition: lidep.h:296
PString m_dialedNumber
Definition: lidep.h:542
virtual void OnClosedMediaStream(const OpalMediaStream &stream)
unsigned m_missedCount
Definition: lidep.h:662
OpalLineEndPoint(OpalManager &manager)
Definition: lidep.h:669
PSafePtr< OpalLineConnection > GetLIDConnectionWithLock(const PString &token, PSafetyMode mode=PSafeReadWrite)
Definition: lidep.h:137
Definition: lidep.h:554
OpalLineInterfaceDevice::CallProgressTones m_promptTone
Definition: lidep.h:544
virtual PBoolean ReadPacket(RTP_DataFrame &packet)
Definition: lid.h:49
virtual PBoolean AddLinesFromDevice(OpalLineInterfaceDevice &device)
virtual PBoolean Open()
virtual PBoolean RequiresPatchThread() const
unsigned m_minimumRingCount
Definition: lidep.h:541
OpalLine & GetLine()
Definition: lidep.h:653
Definition: mediastrm.h:110
OpalLine & GetLine()
Definition: lidep.h:514
OpalLineMediaStream(OpalLineConnection &conn, const OpalMediaFormat &mediaFormat, unsigned sessionID, PBoolean isSource, OpalLine &line)
void SetDefaultLine(const PString &lineName)
Definition: connection.h:415
PDECLARE_NOTIFIER(PThread, OpalLineConnection, HandleIncoming)
CallProgressTones
Definition: lid.h:582
unsigned m_dialStartDelay
Time in msec to wait between the dial tone detection and dialing the DTMF.
Definition: lid.h:700
Definition: lid.h:921
OpalLIDList m_devices
Definition: lidep.h:295
PDECLARE_MUTEX(m_linesMutex)
virtual void MonitorLine(OpalLine &line)
virtual PBoolean SetConnected()
virtual PSafePtr< OpalConnection > MakeConnection(OpalCall &call, const PString &party, void *userData=NULL, unsigned int options=0, OpalConnection::StringOptions *stringOptions=NULL)
virtual PBoolean ReadData(BYTE *data, PINDEX size, PINDEX &length)
virtual OpalMediaFormatList GetMediaFormats() const
unsigned int getDialDelay() const
Definition: lidep.h:534