#include <lid.h>
Inheritance diagram for OpalLineInterfaceDevice:
Public Types | |
enum | { MaxVolume = 100 } |
enum | AECLevels { AECOff, AECLow, AECMedium, AECHigh, AECAuto, AECAGC, AECError } |
enum | { DefaultDTMFOnTime = 180, DefaultDTMFOffTime = 120 } |
enum | CallProgressTones { NoTone = 0x00, DialTone = 0x01, RingTone = 0x02, BusyTone = 0x04, ClearTone = 0x08, CNGTone = 0x10, AllTones = 0x1f } |
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 } |
Public Member Functions | |
OpalLineInterfaceDevice () | |
virtual BOOL | Open (const PString &device)=0 |
virtual BOOL | IsOpen () const |
virtual BOOL | Close () |
virtual PString | GetName () const =0 |
virtual unsigned | GetLineCount ()=0 |
virtual BOOL | IsLineTerminal (unsigned line) |
virtual BOOL | IsLinePresent (unsigned line, BOOL force=FALSE) |
virtual BOOL | IsLineOffHook (unsigned line)=0 |
virtual BOOL | SetLineOffHook (unsigned line, BOOL newState=TRUE)=0 |
virtual BOOL | SetLineOnHook (unsigned line) |
virtual BOOL | HookFlash (unsigned line, unsigned flashTime=200) |
virtual BOOL | HasHookFlash (unsigned line) |
virtual BOOL | IsLineRinging (unsigned line, DWORD *cadence=NULL) |
virtual BOOL | RingLine (unsigned line, DWORD cadence) |
virtual BOOL | RingLine (unsigned line, PINDEX nCadence, unsigned *pattern) |
virtual BOOL | IsLineDisconnected (unsigned line, BOOL checkForWink=TRUE) |
virtual BOOL | SetLineToLineDirect (unsigned line1, unsigned line2, BOOL connect) |
virtual BOOL | IsLineToLineDirect (unsigned line1, unsigned line2) |
virtual OpalMediaFormat::List | GetMediaFormats () const =0 |
virtual BOOL | SetReadFormat (unsigned line, const OpalMediaFormat &mediaFormat)=0 |
virtual BOOL | SetWriteFormat (unsigned line, const OpalMediaFormat &mediaFormat)=0 |
virtual OpalMediaFormat | GetReadFormat (unsigned line)=0 |
virtual OpalMediaFormat | GetWriteFormat (unsigned line)=0 |
virtual BOOL | SetReadCodec (unsigned line, RTP_DataFrame::PayloadTypes codec) |
virtual BOOL | SetWriteCodec (unsigned line, RTP_DataFrame::PayloadTypes codec) |
virtual BOOL | SetRawCodec (unsigned line) |
virtual BOOL | StopReadCodec (unsigned line) |
virtual BOOL | StopWriteCodec (unsigned line) |
virtual BOOL | StopRawCodec (unsigned line) |
virtual BOOL | SetReadFrameSize (unsigned line, PINDEX frameSize) |
virtual BOOL | SetWriteFrameSize (unsigned line, PINDEX frameSize) |
virtual PINDEX | GetReadFrameSize (unsigned line)=0 |
virtual PINDEX | GetWriteFrameSize (unsigned line)=0 |
virtual BOOL | ReadFrame (unsigned line, void *buf, PINDEX &count)=0 |
virtual BOOL | WriteFrame (unsigned line, const void *buf, PINDEX count, PINDEX &written)=0 |
virtual BOOL | ReadBlock (unsigned line, void *buf, PINDEX count) |
virtual BOOL | WriteBlock (unsigned line, const void *buf, PINDEX count) |
virtual unsigned | GetAverageSignalLevel (unsigned line, BOOL playback) |
virtual BOOL | EnableAudio (unsigned line, BOOL enable=TRUE) |
BOOL | DisableAudio (unsigned line) |
virtual BOOL | IsAudioEnabled (unsigned line) |
virtual BOOL | SetRecordVolume (unsigned line, unsigned volume) |
virtual BOOL | SetPlayVolume (unsigned line, unsigned volume) |
virtual BOOL | GetRecordVolume (unsigned line, unsigned &volume) |
virtual BOOL | GetPlayVolume (unsigned line, unsigned &volume) |
virtual AECLevels | GetAEC (unsigned line) |
virtual BOOL | SetAEC (unsigned line, AECLevels level) |
virtual unsigned | GetWinkDuration (unsigned line) |
virtual BOOL | SetWinkDuration (unsigned line, unsigned winkDuration) |
virtual BOOL | GetVAD (unsigned line) |
virtual BOOL | SetVAD (unsigned line, BOOL enable) |
virtual BOOL | GetCallerID (unsigned line, PString &idString, BOOL full=FALSE) |
virtual BOOL | SetCallerID (unsigned line, const PString &idString) |
virtual BOOL | SendCallerIDOnCallWaiting (unsigned line, const PString &idString) |
virtual BOOL | SendVisualMessageWaitingIndicator (unsigned line, BOOL on) |
virtual BOOL | PlayDTMF (unsigned line, const char *digits, DWORD onTime=DefaultDTMFOnTime, DWORD offTime=DefaultDTMFOffTime) |
virtual char | ReadDTMF (unsigned line) |
virtual BOOL | GetRemoveDTMF (unsigned line) |
virtual BOOL | SetRemoveDTMF (unsigned line, BOOL removeTones) |
virtual unsigned | IsToneDetected (unsigned line) |
virtual unsigned | WaitForToneDetect (unsigned line, unsigned timeout=3000) |
virtual BOOL | WaitForTone (unsigned line, CallProgressTones tone, unsigned timeout=3000) |
virtual BOOL | SetToneFilter (unsigned line, CallProgressTones tone, const PString &description) |
virtual BOOL | SetToneFilterParameters (unsigned line, CallProgressTones tone, unsigned lowFrequency, unsigned highFrequency, PINDEX numCadences, const unsigned *onTimes, const unsigned *offTimes) |
virtual BOOL | PlayTone (unsigned line, CallProgressTones tone) |
virtual BOOL | IsTonePlaying (unsigned line) |
virtual BOOL | StopTone (unsigned line) |
virtual BOOL | PlayAudio (unsigned line, const PString &filename) |
virtual BOOL | StopAudio (unsigned line) |
virtual CallProgressTones | DialOut (unsigned line, const PString &number, BOOL requireTones=FALSE) |
T35CountryCodes | GetCountryCode () const |
PString | GetCountryCodeName () const |
virtual BOOL | SetCountryCode (T35CountryCodes country) |
virtual BOOL | SetCountryCodeName (const PString &countryName) |
virtual PStringList | GetCountryCodeNameList () const |
int | GetErrorNumber () const |
PString | GetErrorText () const |
virtual void | PrintOn (ostream &strm) const |
Static Public Member Functions | |
PString | GetCountryCodeName (T35CountryCodes code) |
T35CountryCodes | GetCountryCode (const PString &name) |
Protected Attributes | |
int | os_handle |
int | osError |
T35CountryCodes | countryCode |
PBYTEArray | readDeblockingBuffer |
PBYTEArray | writeDeblockingBuffer |
PINDEX | readDeblockingOffset |
PINDEX | writeDeblockingOffset |
|
|
|
|
|
|
|
|
|
|
Construct a new line interface device. |
|
Close the line interface device. Reimplemented in OpalIxJDevice, OpalVoipBlasterDevice, and OpalVpbDevice. |
|
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
|
|
Disable audio for the line.
|
|
Enable audio for the line.
Reimplemented in OpalIxJDevice, and OpalVoipBlasterDevice. |
|
Get acoustic echo cancellation. Note, not all devices may support this function.
Reimplemented in OpalIxJDevice, and OpalVoipBlasterDevice. |
|
Get average signal level in last frame.
Reimplemented in OpalIxJDevice, and OpalVoipBlasterDevice. |
|
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 of the number field, the time/date and the name field separated by tabs ('').
Reimplemented in OpalIxJDevice, and OpalVoipBlasterDevice. |
|
|
|
Get the country code set for the device. |
|
Get the country code set for the device as a string. |
|
Get the country code set for the device as a string. |
|
Get the list of countries actually supported by the device |
|
Return number for last error. |
|
Return text for last error. |
|
Get the total number of lines supported by this device. Implemented in OpalIxJDevice, OpalVoipBlasterDevice, and OpalVpbDevice. |
|
Get the media formats this device is capable of using. Implemented in OpalIxJDevice, OpalVoipBlasterDevice, and OpalVpbDevice. |
|
Determine the type of 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". Implemented in OpalIxJDevice, OpalVoipBlasterDevice, and OpalVpbDevice. |
|
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.
Reimplemented in OpalIxJDevice, and OpalVoipBlasterDevice. |
|
Get the media format (codec) for reading on the specified line.
Implemented in OpalIxJDevice, OpalVoipBlasterDevice, and OpalVpbDevice. |
|
Get the read frame size in bytes. All calls to ReadFrame() will return this number of bytes.
Implemented in OpalIxJDevice, OpalVoipBlasterDevice, and OpalVpbDevice. |
|
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.
Reimplemented in OpalIxJDevice, and OpalVoipBlasterDevice. |
|
Get DTMF removal mode. When set in this mode the DTMF tones detected are removed from the encoded data stream as returned by ReadFrame().
Reimplemented in OpalIxJDevice, and OpalVoipBlasterDevice. |
|
Get voice activity detection. Note, not all devices, or selected codecs, may support this function.
Reimplemented in OpalIxJDevice, and OpalVoipBlasterDevice. |
|
Get wink detect minimum duration. This is the signal used by telcos to end PSTN call.
Reimplemented in OpalIxJDevice. |
|
Get the media format (codec) for writing on the specified line.
Implemented in OpalIxJDevice, OpalVoipBlasterDevice, and OpalVpbDevice. |
|
Get the write frame size in bytes. All calls to WriteFrame() must be this number of bytes.
Implemented in OpalIxJDevice, OpalVoipBlasterDevice, and OpalVpbDevice. |
|
Return TRUE if a hook flash has been detected Reimplemented in OpalIxJDevice, and OpalVoipBlasterDevice. |
|
Set the hook state off then straight back on again. This will only operate if the line is currently off hook.
|
|
Determine if audio for the line is enabled.
Reimplemented in OpalIxJDevice. |
|
Determine if line has been disconnected from a call. This uses the hardware (and country) dependent means for determining
Reimplemented in OpalIxJDevice, OpalVoipBlasterDevice, and OpalVpbDevice. |
|
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.
Implemented in OpalIxJDevice, OpalVoipBlasterDevice, and OpalVpbDevice. |
|
Determine if a physical line is present on the logical line.
Reimplemented in OpalIxJDevice, and OpalVoipBlasterDevice. |
|
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.
Reimplemented in OpalIxJDevice, OpalVoipBlasterDevice, and OpalVpbDevice. |
|
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.
Reimplemented in OpalIxJDevice, and OpalVoipBlasterDevice. |
|
Determine if the two lines are directly connected.
Reimplemented in OpalIxJDevice, and OpalVoipBlasterDevice. |
|
Determine if the line interface device is open. |
|
See if any tone is detected.
Reimplemented in OpalIxJDevice, OpalVoipBlasterDevice, and OpalVpbDevice. |
|
Determine if a tone is still playing
Reimplemented in OpalIxJDevice, and OpalVoipBlasterDevice. |
|
Open the line interface device.
Implemented in OpalIxJDevice, OpalVoipBlasterDevice, and OpalVpbDevice. |
|
Play a wav file
Reimplemented in OpalVpbDevice. |
|
Play a DTMF digit. Any characters that are not in the set 0-9, A-D, * or # will be ignored.
Reimplemented in OpalIxJDevice, OpalVoipBlasterDevice, and OpalVpbDevice. |
|
Play a tone.
Reimplemented in OpalIxJDevice, OpalVoipBlasterDevice, and OpalVpbDevice. |
|
|
|
High level read of audio data from the device. This version will allow non-integral number of frames to be read.
|
|
Read a DTMF digit detected. This may be characters from the set 0-9, A-D, * or #. A null ('') 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
Reimplemented in OpalIxJDevice, OpalVoipBlasterDevice, and OpalVpbDevice. |
|
Low level read of a frame from the device.
Implemented in OpalIxJDevice, OpalVoipBlasterDevice, and OpalVpbDevice. |
|
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 }
Reimplemented in OpalIxJDevice. |
|
Begin ringing local phone set with specified cadence. If cadence 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.
Reimplemented in OpalIxJDevice, and OpalVoipBlasterDevice. |
|
Send a Caller ID on call waiting command The full data of the caller ID string consists of the number field, the time/date and the name field separated by tabs (''). If the date field is missing (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.
Reimplemented in OpalIxJDevice, and OpalVoipBlasterDevice. |
|
Send a Visual Message Waiting Indicator
Reimplemented in OpalIxJDevice, and OpalVoipBlasterDevice. |
|
Set acoustic echo cancellation. Note, not all devices may support this function.
Reimplemented in OpalIxJDevice, and OpalVoipBlasterDevice. |
|
Set Caller ID for use in next RingLine() call. The full data of the caller ID string consists of the number field, the time/date and the name field separated by tabs (''). If the date field is missing (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.
Reimplemented in OpalIxJDevice, and OpalVoipBlasterDevice. |
|
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.
Reimplemented in OpalIxJDevice, and OpalVoipBlasterDevice. |
|
Set the country code set for the device.
|
|
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.
Implemented in OpalIxJDevice, OpalVoipBlasterDevice, and OpalVpbDevice. |
|
Set the hook state of the line. This is the complement of SetLineOffHook().
|
|
Directly connect the two lines.
Reimplemented in OpalIxJDevice, and OpalVoipBlasterDevice. |
|
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.
Reimplemented in OpalIxJDevice, OpalVoipBlasterDevice, and OpalVpbDevice. |
|
Set the line codec for reading/writing raw PCM data. A descendent may use this to do anything special to the device before beginning special PCM output. For example disabling AEC and set volume levels to standard values. This can then be used for generating standard tones using PCM if the driver is not capable of generating or detecting them directly. The default behaviour simply does a SetReadCodec and SetWriteCodec for PCM data.
Reimplemented in OpalIxJDevice, and OpalVoipBlasterDevice. |
|
Set the line codec for reading. Note this function is now deprecated as it could not distinguish between some codec subtypes (eg G.729 and G.729B) or non standard formats. Use the SetReadFormat function instead. The default behaviour now finds the first OpalMediaFormat with the payload type and uses that.
|
|
Set the media format (codec) for reading on the specified line.
Implemented in OpalIxJDevice, OpalVoipBlasterDevice, and OpalVpbDevice. |
|
Set the read frame size in bytes. Note that a LID may ignore this value so always use GetReadFrameSize() for I/O.
Reimplemented in OpalIxJDevice, OpalVoipBlasterDevice, and OpalVpbDevice. |
|
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.
Reimplemented in OpalIxJDevice, OpalVoipBlasterDevice, and OpalVpbDevice. |
|
Set DTMF removal mode. When set in this mode the DTMF tones detected are removed from the encoded data stream as returned by ReadFrame().
Reimplemented in OpalIxJDevice, and OpalVoipBlasterDevice. |
|
Set a tones filter information. The description string is of the form frequence ':' cadence where frequency is either frequency low '-' high and cadence is mintime ontime '-' offtime ontime '-' offtime '-' ontime '-' offtime examples: 300:0.25 300Hz for minimum 250ms 1100:0.4-0.4 1100Hz with cadence 400ms on, 400ms off 900-1300:1.5 900Hz to 1300Hz for minimum of 1.5 seconds 425:0.4-0.2-0.4-2 425Hz with cadence 400ms on, 200ms off, 400ms on, 2 seconds off
|
|
Set a tones filter information.
Reimplemented in OpalIxJDevice. |
|
Set voice activity detection. Note, not all devices, or selected codecs, may support this function.
Reimplemented in OpalIxJDevice, and OpalVoipBlasterDevice. |
|
Set wink detect minimum duration. This is the signal used by telcos to end PSTN call.
Reimplemented in OpalIxJDevice. |
|
Set the line codec for writing. Note this function is now deprecated as it could not distinguish between some codec subtypes (eg G.729 and G.729B) or non standard formats. Use the SetReadFormat function instead.
|
|
Set the media format (codec) for writing on the specified line.
Implemented in OpalIxJDevice, OpalVoipBlasterDevice, and OpalVpbDevice. |
|
Set the write frame size in bytes. Note that a LID may ignore this value so always use GetReadFrameSize() for I/O.
Reimplemented in OpalIxJDevice, OpalVoipBlasterDevice, and OpalVpbDevice. |
|
Stop playing the Wave File
Reimplemented in OpalVpbDevice. |
|
Stop the raw PCM mode codec.
Reimplemented in OpalIxJDevice, and OpalVoipBlasterDevice. |
|
Stop the read codec.
Reimplemented in OpalIxJDevice, OpalVoipBlasterDevice, and OpalVpbDevice. |
|
Stop playing a tone.
Reimplemented in OpalIxJDevice, OpalVoipBlasterDevice, and OpalVpbDevice. |
|
Stop the write codec.
Reimplemented in OpalIxJDevice, OpalVoipBlasterDevice, and OpalVpbDevice. |
|
See if a specific tone is detected.
|
|
See if any tone is detected.
|
|
High level write audio data to the device.
|
|
Low level write frame to the device.
Implemented in OpalIxJDevice, OpalVoipBlasterDevice, and OpalVpbDevice. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|