OPAL  Version 3.18.8
OpalPluginLID Class Reference

#include <lidpluginmgr.h>

Inheritance diagram for OpalPluginLID:
Collaboration diagram for OpalPluginLID:

Public Member Functions

 OpalPluginLID (const PluginLID_Definition &definition)
 
 ~OpalPluginLID ()
 
virtual PBoolean Open (const PString &device)
 
virtual PBoolean Close ()
 
virtual PString GetDeviceType () const
 
virtual PString GetDeviceName () const
 
virtual PStringArray GetAllNames () const
 
virtual PString GetDescription () const
 
virtual unsigned GetLineCount () const
 
virtual PBoolean IsLineTerminal (unsigned line)
 
virtual PBoolean IsLinePresent (unsigned line, PBoolean force=false)
 
virtual PBoolean IsLineOffHook (unsigned line)
 
virtual PBoolean SetLineOffHook (unsigned line, PBoolean newState=true)
 
virtual PBoolean HookFlash (unsigned line, unsigned flashTime=200)
 
virtual PBoolean HasHookFlash (unsigned line)
 
virtual PBoolean IsLineRinging (unsigned line, DWORD *cadence=NULL)
 
virtual PBoolean RingLine (unsigned line, PINDEX nCadence, const unsigned *pattern=NULL, unsigned frequency=400)
 
virtual PBoolean SetLineConnected (unsigned line)
 
virtual PBoolean IsLineConnected (unsigned line)
 
virtual PBoolean IsLineDisconnected (unsigned line, PBoolean checkForWink=true)
 
virtual PBoolean SetLineToLineDirect (unsigned line1, unsigned line2, PBoolean connect)
 
virtual PBoolean IsLineToLineDirect (unsigned line1, unsigned line2)
 
virtual OpalMediaFormatList GetMediaFormats () const
 
virtual PBoolean SetReadFormat (unsigned line, const OpalMediaFormat &mediaFormat)
 
virtual PBoolean SetWriteFormat (unsigned line, const OpalMediaFormat &mediaFormat)
 
virtual OpalMediaFormat GetReadFormat (unsigned line)
 
virtual OpalMediaFormat GetWriteFormat (unsigned line)
 
virtual PBoolean StopReading (unsigned line)
 
virtual PBoolean StopWriting (unsigned line)
 
virtual PBoolean SetReadFrameSize (unsigned line, PINDEX frameSize)
 
virtual PBoolean SetWriteFrameSize (unsigned line, PINDEX frameSize)
 
virtual PINDEX GetReadFrameSize (unsigned line)
 
virtual PINDEX GetWriteFrameSize (unsigned line)
 
virtual PBoolean ReadFrame (unsigned line, void *buf, PINDEX &count)
 
virtual PBoolean WriteFrame (unsigned line, const void *buf, PINDEX count, PINDEX &written)
 
virtual unsigned GetAverageSignalLevel (unsigned line, PBoolean playback)
 
virtual PBoolean EnableAudio (unsigned line, PBoolean enable=true)
 
virtual PBoolean IsAudioEnabled (unsigned line) const
 
virtual PBoolean SetRecordVolume (unsigned line, unsigned volume)
 
virtual PBoolean SetPlayVolume (unsigned line, unsigned volume)
 
virtual PBoolean GetRecordVolume (unsigned line, unsigned &volume)
 
virtual PBoolean GetPlayVolume (unsigned line, unsigned &volume)
 
virtual AECLevels GetAEC (unsigned line) const
 
virtual PBoolean SetAEC (unsigned line, AECLevels level)
 
virtual PBoolean GetVAD (unsigned line) const
 
virtual PBoolean SetVAD (unsigned line, PBoolean enable)
 
virtual PBoolean GetCallerID (unsigned line, PString &idString, PBoolean full=false)
 
virtual PBoolean SetCallerID (unsigned line, const PString &idString)
 
virtual PBoolean SendVisualMessageWaitingIndicator (unsigned line, PBoolean on)
 
virtual PBoolean PlayDTMF (unsigned line, const char *digits, DWORD onTime=DefaultDTMFOnTime, DWORD offTime=DefaultDTMFOffTime)
 
virtual char ReadDTMF (unsigned line)
 
virtual PBoolean GetRemoveDTMF (unsigned line)
 
virtual PBoolean SetRemoveDTMF (unsigned line, PBoolean removeTones)
 
virtual CallProgressTones IsToneDetected (unsigned line)
 
virtual CallProgressTones WaitForToneDetect (unsigned line, unsigned timeout=3000)
 
virtual PBoolean WaitForTone (unsigned line, CallProgressTones tone, unsigned timeout=3000)
 
virtual bool SetToneParameters (unsigned line, CallProgressTones tone, unsigned frequency1, unsigned frequency2, ToneMixingModes mode, PINDEX numCadences, const unsigned *onTimes, const unsigned *offTimes)
 
virtual PBoolean PlayTone (unsigned line, CallProgressTones tone)
 
virtual PBoolean IsTonePlaying (unsigned line)
 
virtual PBoolean StopTone (unsigned line)
 
virtual CallProgressTones DialOut (unsigned line, const PString &number, const DialParams &params=DialParams())
 
virtual unsigned GetWinkDuration (unsigned line)
 
virtual PBoolean SetWinkDuration (unsigned line, unsigned winkDuration)
 
virtual PBoolean SetCountryCode (T35CountryCodes country)
 
virtual PStringList GetCountryCodeNameList () const
 
- Public Member Functions inherited from OpalLineInterfaceDevice
 OpalLineInterfaceDevice ()
 
virtual PBoolean IsOpen () const
 
virtual PBoolean SetLineOnHook (unsigned line)
 
virtual bool UsesRTP () const
 
virtual PBoolean ReadBlock (unsigned line, void *buf, PINDEX count)
 
virtual PBoolean WriteBlock (unsigned line, const void *buf, PINDEX count)
 
PBoolean DisableAudio (unsigned line)
 
virtual bool SetToneDescription (unsigned line, CallProgressTones tone, const PString &description)
 
T35CountryCodes GetCountryCode () const
 
PString GetCountryCodeName () const
 
virtual PBoolean SetCountryCodeName (const PString &countryName)
 
virtual PBoolean PlayAudio (unsigned line, const PString &filename)
 
virtual PBoolean StopAudio (unsigned line)
 
virtual PBoolean RecordAudioStart (unsigned line, const PString &filename)
 
virtual PBoolean RecordAudioStop (unsigned line)
 
int GetErrorNumber () const
 
PString GetErrorText () const
 
virtual void PrintOn (ostream &strm) const
 

Protected Member Functions

 PDECLARE_NOTIFIER (PThread, OpalPluginLID, TonePlayer)
 
bool StartTonePlayerThread (int tone)
 
void StopTonePlayerThread ()
 

Protected Attributes

const PluginLID_Definitionm_definition
 
void * m_context
 
PString m_deviceName
 
PSoundChannel m_recorder
 
PSoundChannel m_player
 
PThread * m_tonePlayer
 
PSyncPoint m_stopTone
 
bool m_lockOutTones
 
- Protected Attributes inherited from OpalLineInterfaceDevice
int m_osHandle
 
int m_osError
 
T35CountryCodes m_countryCode
 
PBYTEArray m_readDeblockingBuffer
 
PBYTEArray m_writeDeblockingBuffer
 
PINDEX m_readDeblockingOffset
 
PINDEX m_writeDeblockingOffset
 
std::vector< bool > m_LineAudioEnabled
 
PString m_callProgressTones [NumTones]
 

Additional Inherited Members

- Public Types inherited from OpalLineInterfaceDevice
enum  { MaxVolume = 100 }
 
enum  AECLevels {
  AECOff, AECLow, AECMedium, AECHigh,
  AECAuto, AECAGC, AECError
}
 
enum  { DefaultDTMFOnTime = 150, DefaultDTMFOffTime = 50 }
 
enum  CallProgressTones {
  NoTone = -1, DialTone, RingTone, BusyTone,
  CongestionTone, ClearTone, MwiTone, RoutingTone,
  CNGTone, CEDTone, UserDefinedTone, NumTones
}
 
enum  ToneMixingModes { SimpleTone, AddedTone, ModulatedTone }
 
enum  T35CountryCodes {
  Japan, Albania, Algeria, AmericanSamoa,
  Germany, Anguilla, AntiguaAndBarbuda, Argentina,
  Ascension, Australia, Austria, Bahamas,
  Bahrain, Bangladesh, Barbados, Belgium,
  Belize, Benin, Bermudas, Bhutan,
  Bolivia, Botswana, Brazil, BritishAntarcticTerritory,
  BritishIndianOceanTerritory, BritishVirginIslands, BruneiDarussalam, Bulgaria,
  Myanmar, Burundi, Byelorussia, Cameroon,
  Canada, CapeVerde, CaymanIslands, CentralAfricanRepublic,
  Chad, Chile, China, Colombia,
  Comoros, Congo, CookIslands, CostaRica,
  Cuba, Cyprus, Czechoslovakia, Cambodia,
  DemocraticPeoplesRepublicOfKorea, Denmark, Djibouti, DominicanRepublic,
  Dominica, Ecuador, Egypt, ElSalvador,
  EquatorialGuinea, Ethiopia, FalklandIslands, Fiji,
  Finland, France, FrenchPolynesia, FrenchSouthernAndAntarcticLands,
  Gabon, Gambia, Germany2, Angola,
  Ghana, Gibraltar, Greece, Grenada,
  Guam, Guatemala, Guernsey, Guinea,
  GuineaBissau, Guayana, Haiti, Honduras,
  Hongkong, Hungary, Iceland, India,
  Indonesia, Iran, Iraq, Ireland,
  Israel, Italy, CotedIvoire, Jamaica,
  Afghanistan, Jersey, Jordan, Kenya,
  Kiribati, KoreaRepublic, Kuwait, Lao,
  Lebanon, Lesotho, Liberia, Libya,
  Liechtenstein, Luxemborg, Macao, Madagascar,
  Malaysia, Malawi, Maldives, Mali,
  Malta, Mauritania, Mauritius, Mexico,
  Monaco, Mongolia, Montserrat, Morocco,
  Mozambique, Nauru, Nepal, Netherlands,
  NetherlandsAntilles, NewCaledonia, NewZealand, Nicaragua,
  Niger, Nigeria, Norway, Oman,
  Pakistan, Panama, PapuaNewGuinea, Paraguay,
  Peru, Philippines, Poland, Portugal,
  PuertoRico, Qatar, Romania, Rwanda,
  SaintKittsAndNevis, SaintCroix, SaintHelenaAndAscension, SaintLucia,
  SanMarino, SaintThomas, SaoTomeAndPrincipe, SaintVicentAndTheGrenadines,
  SaudiArabia, Senegal, Seychelles, SierraLeone,
  Singapore, SolomonIslands, Somalia, SouthAfrica,
  Spain, SriLanka, Sudan, Suriname,
  Swaziland, Sweden, Switzerland, Syria,
  Tanzania, Thailand, Togo, Tonga,
  TrinidadAndTobago, Tunisia, Turkey, TurksAndCaicosIslands,
  Tuvalu, Uganda, Ukraine, UnitedArabEmirates,
  UnitedKingdom, UnitedStates, BurkinaFaso, Uruguay,
  USSR, Vanuatu, VaticanCityState, Venezuela,
  VietNam, WallisAndFutuna, WesternSamoa, Yemen,
  Yemen2, Yugoslavia, Zaire, Zambia,
  Zimbabwe, NumCountryCodes, UnknownCountry = -1
}
 
- Static Public Member Functions inherited from OpalLineInterfaceDevice
static PString GetCountryCodeName (T35CountryCodes code)
 
static T35CountryCodes GetCountryCode (const PString &name)
 
static const T35CountryInfoGetCountryInfo (T35CountryCodes code)
 
static OpalLineInterfaceDeviceCreate (const PString &type, void *parameters=NULL)
 
static OpalLineInterfaceDeviceCreateAndOpen (const PString &descriptor, void *parameters=NULL)
 
static PStringList GetAllTypes ()
 
static PStringList GetAllDevices ()
 

Constructor & Destructor Documentation

OpalPluginLID::OpalPluginLID ( const PluginLID_Definition definition)
OpalPluginLID::~OpalPluginLID ( )

Member Function Documentation

virtual PBoolean OpalPluginLID::Close ( )
virtual

Close the line interface device.

Reimplemented from OpalLineInterfaceDevice.

virtual CallProgressTones OpalPluginLID::DialOut ( unsigned  line,
const PString &  number,
const DialParams params = DialParams() 
)
virtual

Dial a number on network line. The takes the line off hook, waits for dial tone, and transmits the specified number as DTMF tones.

If the requireTones flag is true the call is aborted of the call progress tones are not detected. Otherwise the call proceeds with short delays while it tries to detect the call progress tones.

The return code indicates the following: DialTone No dial tone detected RingTone Dial was successful BusyTone The remote phone was busy ClearTone Dial failed (usually means rang out) NoTone There was an internal error making the call

Parameters
lineNumber of line
numberNumber to dial
paramsOptional parameters for dial out.

Reimplemented from OpalLineInterfaceDevice.

virtual PBoolean OpalPluginLID::EnableAudio ( unsigned  line,
PBoolean  enable = true 
)
virtual

Enable audio for the line.

Parameters
lineNumber of line
enableFlag for enable/disable audio on line

Reimplemented from OpalLineInterfaceDevice.

virtual AECLevels OpalPluginLID::GetAEC ( unsigned  line) const
virtual

Get acoustic echo cancellation. Note, not all devices may support this function.

Parameters
lineNumber of line

Reimplemented from OpalLineInterfaceDevice.

virtual PStringArray OpalPluginLID::GetAllNames ( ) const
virtual

Get all the possible devices that can be opened.

Implements OpalLineInterfaceDevice.

virtual unsigned OpalPluginLID::GetAverageSignalLevel ( unsigned  line,
PBoolean  playback 
)
virtual

Get average signal level in last frame.

Parameters
lineNumber of line
playbackGet average playback or record level.

Reimplemented from OpalLineInterfaceDevice.

virtual PBoolean OpalPluginLID::GetCallerID ( unsigned  line,
PString &  idString,
PBoolean  full = false 
)
virtual

Get Caller ID from the last incoming ring. The idString parameter is either simply the "number" field of the caller ID data, or if full is true, all of the fields in the caller ID data.

The full data of the caller ID string consists fields separated by tab characters ('\t'), the first three are always the Calling Line Identity (CLI or calling number), the date and the Calling Line Name field. Other fields may follow and are the of the form name=value. The values are LID dependent.

A false is returned if there is no Caller ID information available, e.g. if no ring has occurred.

Parameters
lineNumber of line
idStringID string returned
fullGet full information in idString

Reimplemented from OpalLineInterfaceDevice.

virtual PStringList OpalPluginLID::GetCountryCodeNameList ( ) const
virtual

Get the list of countries actually supported by the device

Reimplemented from OpalLineInterfaceDevice.

virtual PString OpalPluginLID::GetDescription ( ) const
virtual

Get the description of the line interface device. This is a string indication of the card type for user interface display purposes or device specific control. The device should be as detailed as possible eg "Quicknet LineJACK".

Implements OpalLineInterfaceDevice.

virtual PString OpalPluginLID::GetDeviceName ( ) const
virtual

Get the device name, as used to open the device. Note the format of this name should be as is returned from GetAllName() and must be able to be used in a subsequent Open() call.

Implements OpalLineInterfaceDevice.

virtual PString OpalPluginLID::GetDeviceType ( ) const
virtual

Get the device type identifier. This is as is used in the factory registration.

Implements OpalLineInterfaceDevice.

virtual unsigned OpalPluginLID::GetLineCount ( ) const
virtual

Get the total number of lines supported by this device.

Implements OpalLineInterfaceDevice.

virtual OpalMediaFormatList OpalPluginLID::GetMediaFormats ( ) const
virtual

Get the media formats this device is capable of using.

Implements OpalLineInterfaceDevice.

virtual PBoolean OpalPluginLID::GetPlayVolume ( unsigned  line,
unsigned &  volume 
)
virtual

Set volume level for playing. A value of 100 is the maximum volume possible for the hardware. A value of 0 is the minimum volume possible for the hardware.

Parameters
lineNumber of line
volumeVolume level from 0 to 100%

Reimplemented from OpalLineInterfaceDevice.

virtual OpalMediaFormat OpalPluginLID::GetReadFormat ( unsigned  line)
virtual

Get the media format (codec) for reading on the specified line.

Parameters
lineNumber of line

Implements OpalLineInterfaceDevice.

virtual PINDEX OpalPluginLID::GetReadFrameSize ( unsigned  line)
virtual

Get the read frame size in bytes. All calls to ReadFrame() will return this number of bytes.

Parameters
lineNumber of line

Reimplemented from OpalLineInterfaceDevice.

virtual PBoolean OpalPluginLID::GetRecordVolume ( unsigned  line,
unsigned &  volume 
)
virtual

Get volume level for recording. A value of 100 is the maximum volume possible for the hardware. A value of 0 is the minimum volume possible for the hardware.

Parameters
lineNumber of line
volumeVolume level from 0 to 100%

Reimplemented from OpalLineInterfaceDevice.

virtual PBoolean OpalPluginLID::GetRemoveDTMF ( unsigned  line)
virtual

Get DTMF removal mode. When set in this mode the DTMF tones detected are removed from the encoded data stream as returned by ReadFrame().

Parameters
lineNumber of line

Reimplemented from OpalLineInterfaceDevice.

virtual PBoolean OpalPluginLID::GetVAD ( unsigned  line) const
virtual

Get voice activity detection. Note, not all devices, or selected codecs, may support this function.

Parameters
lineNumber of line

Reimplemented from OpalLineInterfaceDevice.

virtual unsigned OpalPluginLID::GetWinkDuration ( unsigned  line)
virtual

Get wink detect minimum duration. This is the signal used by telcos to end PSTN call.

Parameters
lineNumber of line

Reimplemented from OpalLineInterfaceDevice.

virtual OpalMediaFormat OpalPluginLID::GetWriteFormat ( unsigned  line)
virtual

Get the media format (codec) for writing on the specified line.

Parameters
lineNumber of line

Implements OpalLineInterfaceDevice.

virtual PINDEX OpalPluginLID::GetWriteFrameSize ( unsigned  line)
virtual

Get the write frame size in bytes. All calls to WriteFrame() must be this number of bytes.

Parameters
lineNumber of line

Reimplemented from OpalLineInterfaceDevice.

virtual PBoolean OpalPluginLID::HasHookFlash ( unsigned  line)
virtual

Return true if a hook flash has been detected

Reimplemented from OpalLineInterfaceDevice.

virtual PBoolean OpalPluginLID::HookFlash ( unsigned  line,
unsigned  flashTime = 200 
)
virtual

Set the hook state off then straight back on again. This will only operate if the line is currently off hook.

Parameters
lineNumber of line
flashTimeTime for hook flash in milliseconds

Reimplemented from OpalLineInterfaceDevice.

virtual PBoolean OpalPluginLID::IsAudioEnabled ( unsigned  line) const
virtual

Determine if audio for the line is enabled.

Parameters
lineNumber of line

Reimplemented from OpalLineInterfaceDevice.

virtual PBoolean OpalPluginLID::IsLineConnected ( unsigned  line)
virtual

Determine if remote has answered call on line. This uses the hardware (and country) dependent means for determining if the remote end of a PSTN connection has answered. Typically this is a "polarity reversal" but other techniques may be used.

For a POTS port this is equivalent to IsLineOffHook().

Parameters
lineNumber of line

Reimplemented from OpalLineInterfaceDevice.

virtual PBoolean OpalPluginLID::IsLineDisconnected ( unsigned  line,
PBoolean  checkForWink = true 
)
virtual

Determine if line has been disconnected from a call. This uses the hardware (and country) dependent means for determining if the remote end of a PSTN connection has hung up.

For a POTS port this is equivalent to !IsLineOffHook().

Parameters
lineNumber of line
checkForWinkCheck for remote hang up signal

Reimplemented from OpalLineInterfaceDevice.

virtual PBoolean OpalPluginLID::IsLineOffHook ( unsigned  line)
virtual

Determine if line is currently off hook. This function implies that the state is debounced and that a return value of true indicates that the phone is really off hook. That is hook flashes and winks are masked out.

Parameters
lineNumber of line

Implements OpalLineInterfaceDevice.

virtual PBoolean OpalPluginLID::IsLinePresent ( unsigned  line,
PBoolean  force = false 
)
virtual

Determine if a physical line is present on the logical line.

Parameters
lineNumber of line
forceForce test, do not optimise

Reimplemented from OpalLineInterfaceDevice.

virtual PBoolean OpalPluginLID::IsLineRinging ( unsigned  line,
DWORD *  cadence = NULL 
)
virtual

Determine if line is ringing. This function implies that the state is "debounced" and that a return value of true indicates that the phone is still ringing and it is not simply a pause in the ring cadence.

If cadence is not NULL then it is set with the bit pattern for the incoming ringing. Note that in this case the funtion may take a full sequence to return. If it is NULL it can be assumed that the function will return quickly.

Parameters
lineNumber of line
cadenceCadence of incoming ring

Reimplemented from OpalLineInterfaceDevice.

virtual PBoolean OpalPluginLID::IsLineTerminal ( unsigned  line)
virtual

Get the type of the line. A "terminal" line is one where a call may terminate. For example a POTS line with a standard telephone handset on it would be a terminal line. The alternative is a "network" line, that is one connected to switched network eg the standard PSTN.

Parameters
lineNumber of line

Implements OpalLineInterfaceDevice.

virtual PBoolean OpalPluginLID::IsLineToLineDirect ( unsigned  line1,
unsigned  line2 
)
virtual

Determine if the two lines are directly connected.

Parameters
line1Number of first line
line2Number of second line

Reimplemented from OpalLineInterfaceDevice.

virtual CallProgressTones OpalPluginLID::IsToneDetected ( unsigned  line)
virtual

See if any tone is detected.

Parameters
lineNumber of line

Reimplemented from OpalLineInterfaceDevice.

virtual PBoolean OpalPluginLID::IsTonePlaying ( unsigned  line)
virtual

Determine if a tone is still playing

Parameters
lineNumber of line

Reimplemented from OpalLineInterfaceDevice.

virtual PBoolean OpalPluginLID::Open ( const PString &  device)
virtual

Open the line interface device.

Parameters
deviceDevice identifier name.

Implements OpalLineInterfaceDevice.

OpalPluginLID::PDECLARE_NOTIFIER ( PThread  ,
OpalPluginLID  ,
TonePlayer   
)
protected
virtual PBoolean OpalPluginLID::PlayDTMF ( unsigned  line,
const char *  digits,
DWORD  onTime = DefaultDTMFOnTime,
DWORD  offTime = DefaultDTMFOffTime 
)
virtual

Play a DTMF digit. Any characters that are not in the set 0-9, A-D, * or # will be ignored.

Parameters
lineNumber of line
digitsDTMF digits to be played
onTimeNumber of milliseconds to play each DTMF digit
offTimeNumber of milliseconds between digits

Reimplemented from OpalLineInterfaceDevice.

virtual PBoolean OpalPluginLID::PlayTone ( unsigned  line,
CallProgressTones  tone 
)
virtual

Play a tone.

Parameters
lineNumber of line
toneTone to be played

Reimplemented from OpalLineInterfaceDevice.

virtual char OpalPluginLID::ReadDTMF ( unsigned  line)
virtual

Read a DTMF digit detected. This may be characters from the set 0-9, A-D, * or #. A null ('\0') character indicates that there are no tones in the queue. Characters E through P indicate the following tones:

E = 800 F = 1000 G = 1250 H = 950 I = 1100 J = 1400 K = 1500 L = 1600 M = 1800 N = 2100 O = 1300 P = 2450

Parameters
lineNumber of line

Reimplemented from OpalLineInterfaceDevice.

virtual PBoolean OpalPluginLID::ReadFrame ( unsigned  line,
void *  buf,
PINDEX &  count 
)
virtual

Low level read of a frame from the device.

Parameters
lineNumber of line
bufPointer to a block of memory to receive data.
countNumber of bytes read, <= GetReadFrameSize()

Implements OpalLineInterfaceDevice.

virtual PBoolean OpalPluginLID::RingLine ( unsigned  line,
PINDEX  nCadence,
const unsigned *  pattern = NULL,
unsigned  frequency = 400 
)
virtual

Begin ringing local phone set with specified cadence. If nCadence is zero then stops ringing.

Note that not be possible on a given line, for example on a PSTN line the ring state is determined by external hardware and cannot be changed by the software.

Also note that the cadence may be ignored by particular hardware driver so that only the zero or non-zero values are significant.

The ring pattern is an array of millisecond times for on and off parts of the cadence. Thus the Australian ring cadence would be represented by the array unsigned AusRing[] = { 400, 200, 400, 2000 }

Parameters
lineNumber of line
nCadenceNumber of entries in cadence array
patternRing pattern times
frequencyFrequency of ring (if relevant)

Reimplemented from OpalLineInterfaceDevice.

virtual PBoolean OpalPluginLID::SendVisualMessageWaitingIndicator ( unsigned  line,
PBoolean  on 
)
virtual

Send a Visual Message Waiting Indicator

Parameters
lineNumber of line
onFlag for VMWI on/off

Reimplemented from OpalLineInterfaceDevice.

virtual PBoolean OpalPluginLID::SetAEC ( unsigned  line,
AECLevels  level 
)
virtual

Set acoustic echo cancellation. Note, not all devices may support this function.

Parameters
lineNumber of line
levelAEC level

Reimplemented from OpalLineInterfaceDevice.

virtual PBoolean OpalPluginLID::SetCallerID ( unsigned  line,
const PString &  idString 
)
virtual

Set Caller ID information. The idString must be as a minimum a number fields for the Calling Line Identity.

The full data of the caller ID string consists fields separated by tab characters ('\t'), the first three are always the Calling Line Identity (CLI or calling number), the date and the Calling Line Name field. Other fields may follow and are the of the form name=value. The values are LID dependent.

If the date field is missing (e.g. two consecutive tabs) then the current time and date is used. Using an empty string will clear the caller ID so that no caller ID is sent on the next RingLine() call.

if the line is on hook then this information is sent when the next RingLine() function is called to start a ring cycle. Note that if the Ring cycle had already been started then this function may return false.

If the line is off hook, then a Caller ID on Message Waiting is sent, if supported by the LID, otherwise false is returned.

Parameters
lineNumber of line
idStringID string to use

Reimplemented from OpalLineInterfaceDevice.

virtual PBoolean OpalPluginLID::SetCountryCode ( T35CountryCodes  country)
virtual

Set the country code set for the device. This may change the line analogue coefficients, ring detect, call disconnect detect and call progress tones to fit the countries telephone network.

Parameters
countryCOuntry code for device

Reimplemented from OpalLineInterfaceDevice.

virtual PBoolean OpalPluginLID::SetLineConnected ( unsigned  line)
virtual

Indicate to the POTS handset that the call is connected. This uses the hardware (and country) dependent means to indicate to the remote end of a POTS connection that we have answerd. Typically this is a "polarity reversal" but other techniques may be used.

The "connected" state remains in force till the remote disconnects the call, though hanging up.

Returns true if successful, always returns false for PSTN lines.

Parameters
lineNumber of line

Reimplemented from OpalLineInterfaceDevice.

virtual PBoolean OpalPluginLID::SetLineOffHook ( unsigned  line,
PBoolean  newState = true 
)
virtual

Set the hook state of the line. Note that not be possible on a given line, for example a POTS line with a standard telephone handset. The hook state is determined by external hardware and cannot be changed by the software.

Parameters
lineNumber of line
newStateNew state to set

Implements OpalLineInterfaceDevice.

virtual PBoolean OpalPluginLID::SetLineToLineDirect ( unsigned  line1,
unsigned  line2,
PBoolean  connect 
)
virtual

Directly connect the two lines.

Parameters
line1Number of first line
line2Number of second line
connectFlag for connect/disconnect

Reimplemented from OpalLineInterfaceDevice.

virtual PBoolean OpalPluginLID::SetPlayVolume ( unsigned  line,
unsigned  volume 
)
virtual

Set volume level for playing. A value of 100 is the maximum volume possible for the hardware. A value of 0 is the minimum volume possible for the hardware.

Parameters
lineNumber of line
volumeVolume level from 0 to 100%

Reimplemented from OpalLineInterfaceDevice.

virtual PBoolean OpalPluginLID::SetReadFormat ( unsigned  line,
const OpalMediaFormat mediaFormat 
)
virtual

Set the media format (codec) for reading on the specified line.

Parameters
lineNumber of line
mediaFormatCodec type

Implements OpalLineInterfaceDevice.

virtual PBoolean OpalPluginLID::SetReadFrameSize ( unsigned  line,
PINDEX  frameSize 
)
virtual

Set the read frame size in bytes. Note that a LID may ignore this value so always use GetReadFrameSize() for I/O.

Parameters
lineNumber of line
frameSizeNew frame size

Reimplemented from OpalLineInterfaceDevice.

virtual PBoolean OpalPluginLID::SetRecordVolume ( unsigned  line,
unsigned  volume 
)
virtual

Set volume level for recording. A value of 100 is the maximum volume possible for the hardware. A value of 0 is the minimum volume possible for the hardware.

Parameters
lineNumber of line
volumeVolume level from 0 to 100%

Reimplemented from OpalLineInterfaceDevice.

virtual PBoolean OpalPluginLID::SetRemoveDTMF ( unsigned  line,
PBoolean  removeTones 
)
virtual

Set DTMF removal mode. When set in this mode the DTMF tones detected are removed from the encoded data stream as returned by ReadFrame().

Parameters
lineNumber of line
removeTonesFlag for removing DTMF tones.

Reimplemented from OpalLineInterfaceDevice.

virtual bool OpalPluginLID::SetToneParameters ( unsigned  line,
CallProgressTones  tone,
unsigned  frequency1,
unsigned  frequency2,
ToneMixingModes  mode,
PINDEX  numCadences,
const unsigned *  onTimes,
const unsigned *  offTimes 
)
virtual

Set a tones filter information.

Parameters
lineNumber of line
toneTone filter to change
frequency1Usually low frequency
frequency2Usually high frequency
modeMode for how freqencies are mixed, -1 is
numCadencesNumber of cadence times
onTimesCadence ON times
offTimesCadence OFF times

Reimplemented from OpalLineInterfaceDevice.

virtual PBoolean OpalPluginLID::SetVAD ( unsigned  line,
PBoolean  enable 
)
virtual

Set voice activity detection. Note, not all devices, or selected codecs, may support this function.

Parameters
lineNumber of line
enableFlag for enabling VAD

Reimplemented from OpalLineInterfaceDevice.

virtual PBoolean OpalPluginLID::SetWinkDuration ( unsigned  line,
unsigned  winkDuration 
)
virtual

Set wink detect minimum duration. This is the signal used by telcos to end PSTN call.

Parameters
lineNumber of line
winkDurationNew minimum duration

Reimplemented from OpalLineInterfaceDevice.

virtual PBoolean OpalPluginLID::SetWriteFormat ( unsigned  line,
const OpalMediaFormat mediaFormat 
)
virtual

Set the media format (codec) for writing on the specified line.

Parameters
lineNumber of line
mediaFormatCodec type

Implements OpalLineInterfaceDevice.

virtual PBoolean OpalPluginLID::SetWriteFrameSize ( unsigned  line,
PINDEX  frameSize 
)
virtual

Set the write frame size in bytes. Note that a LID may ignore this value so always use GetReadFrameSize() for I/O.

Parameters
lineNumber of line
frameSizeNew frame size

Reimplemented from OpalLineInterfaceDevice.

bool OpalPluginLID::StartTonePlayerThread ( int  tone)
protected
virtual PBoolean OpalPluginLID::StopReading ( unsigned  line)
virtual

Stop the read codec.

Parameters
lineNumber of line

Reimplemented from OpalLineInterfaceDevice.

virtual PBoolean OpalPluginLID::StopTone ( unsigned  line)
virtual

Stop playing a tone.

Parameters
lineNumber of line

Reimplemented from OpalLineInterfaceDevice.

void OpalPluginLID::StopTonePlayerThread ( )
protected
virtual PBoolean OpalPluginLID::StopWriting ( unsigned  line)
virtual

Stop the write codec.

Parameters
lineNumber of line

Reimplemented from OpalLineInterfaceDevice.

virtual PBoolean OpalPluginLID::WaitForTone ( unsigned  line,
CallProgressTones  tone,
unsigned  timeout = 3000 
)
virtual

See if a specific tone is detected.

Parameters
lineNumber of line
toneTone to wait for
timeoutMilliseconds to wait for

Reimplemented from OpalLineInterfaceDevice.

virtual CallProgressTones OpalPluginLID::WaitForToneDetect ( unsigned  line,
unsigned  timeout = 3000 
)
virtual

See if any tone is detected.

Parameters
lineNumber of line
timeoutMilliseconds to wait for

Reimplemented from OpalLineInterfaceDevice.

virtual PBoolean OpalPluginLID::WriteFrame ( unsigned  line,
const void *  buf,
PINDEX  count,
PINDEX &  written 
)
virtual

Low level write frame to the device.

Parameters
lineNumber of line
bufPointer to a block of memory to write.
countNumber of bytes to write, <= GetWriteFrameSize()
writtenNumber of bytes written, <= GetWriteFrameSize()

Implements OpalLineInterfaceDevice.

Field Documentation

void* OpalPluginLID::m_context
protected
const PluginLID_Definition& OpalPluginLID::m_definition
protected
PString OpalPluginLID::m_deviceName
protected
bool OpalPluginLID::m_lockOutTones
protected
PSoundChannel OpalPluginLID::m_player
protected
PSoundChannel OpalPluginLID::m_recorder
protected
PSyncPoint OpalPluginLID::m_stopTone
protected
PThread* OpalPluginLID::m_tonePlayer
protected

The documentation for this class was generated from the following file: