IAX2CallProcessor Class Reference

#include <callprocessor.h>

Inheritance diagram for IAX2CallProcessor:

IAX2Processor List of all members.

Internal, protected methods, which are invoked only by this

thread

enum  SoundBufferState { BufferToSmall, Normal, BufferToBig }
enum  CallStatus {
  callNewed = 1 << 0, callSentRinging = 1 << 1, callRegistered = 1 << 2, callAuthorised = 1 << 3,
  callAccepted = 1 << 4, callRinging = 1 << 5, callAnswered = 1 << 6, callTerminating = 1 << 7
}
PAtomicInteger audioFramesSent
PAtomicInteger audioFramesRcvd
PAtomicInteger videoFramesSent
PAtomicInteger videoFramesRcvd
SafeString remotePhoneNumber
SafeStrings callList
SafeString dtmfText
SafeStrings textList
SafeStrings dtmfNetworkList
SafeStrings hangList
BOOL holdCall
BOOL holdReleaseCall
IAX2SoundList soundWaitingForTransmission
SoundBufferState soundBufferState
PINDEX lastFullFrameTimeStamp
BOOL audioCanFlow
unsigned int selectedCodec
unsigned short callStatus
BOOL firstMediaFrame
BOOL answerCallNow
BOOL statusCheckOtherEnd
PTimer statusCheckTimer
PINDEX audioFrameDuration
PINDEX audioCompressedBytes
BOOL audioFramesNotStarted
PString userName
PString password
PMutex transferMutex
BOOL doTransfer
PString transferCalledNumber
PString transferCalledContext
BOOL RemoteSelectedCodecOk ()
void CheckForHangupMessages ()
void ProcessNetworkFrame (IAX2Frame *src)
void ProcessNetworkFrame (IAX2MiniFrame *src)
void ProcessNetworkFrame (IAX2FullFrame *src)
void ProcessNetworkFrame (IAX2FullFrameDtmf *src)
void ProcessNetworkFrame (IAX2FullFrameVoice *src)
void ProcessNetworkFrame (IAX2FullFrameVideo *src)
void ProcessNetworkFrame (IAX2FullFrameSessionControl *src)
void ProcessNetworkFrame (IAX2FullFrameNull *src)
virtual BOOL ProcessNetworkFrame (IAX2FullFrameProtocol *src)
void ProcessNetworkFrame (IAX2FullFrameText *src)
void ProcessNetworkFrame (IAX2FullFrameImage *src)
void ProcessNetworkFrame (IAX2FullFrameHtml *src)
void ProcessNetworkFrame (IAX2FullFrameCng *src)
virtual void ProcessLists ()
void ConnectToRemoteNode (PString &destination)
void SendDtmfMessage (char message)
void SendTextMessage (PString &message)
void SendSoundMessage (PBYTEArray *sound)
void SendTransferMessage ()
void SendQuelchMessage ()
void SendUnQuelchMessage ()
void IncAudioFramesSent ()
void IncAudioFramesRcvd ()
void IncVideoFramesSent ()
void IncVideoFramesRcvd ()
void RemoteNodeHasAnswered ()
void CallStopSounds ()
void ReceivedHookFlash ()
void RemoteNodeIsBusy ()
void ProcessIncomingAudioFrame (IAX2Frame *newFrame)
void ProcessIncomingVideoFrame (IAX2Frame *newFrame)
void ProcessIaxCmdNew (IAX2FullFrameProtocol *src)
void ProcessIaxCmdAck (IAX2FullFrameProtocol *src)
void ProcessIaxCmdHangup (IAX2FullFrameProtocol *src)
void ProcessIaxCmdReject (IAX2FullFrameProtocol *src)
void ProcessIaxCmdAccept (IAX2FullFrameProtocol *src)
void ProcessIaxCmdAuthReq (IAX2FullFrameProtocol *src)
void ProcessIaxCmdAuthRep (IAX2FullFrameProtocol *src)
void ProcessIaxCmdInval (IAX2FullFrameProtocol *src)
void ProcessIaxCmdDpReq (IAX2FullFrameProtocol *src)
void ProcessIaxCmdDpRep (IAX2FullFrameProtocol *src)
void ProcessIaxCmdDial (IAX2FullFrameProtocol *src)
void ProcessIaxCmdTxreq (IAX2FullFrameProtocol *src)
void ProcessIaxCmdTxcnt (IAX2FullFrameProtocol *src)
void ProcessIaxCmdTxacc (IAX2FullFrameProtocol *src)
void ProcessIaxCmdTxready (IAX2FullFrameProtocol *src)
void ProcessIaxCmdTxrel (IAX2FullFrameProtocol *src)
void ProcessIaxCmdTxrej (IAX2FullFrameProtocol *src)
void ProcessIaxCmdQuelch (IAX2FullFrameProtocol *src)
void ProcessIaxCmdUnquelch (IAX2FullFrameProtocol *src)
void ProcessIaxCmdPage (IAX2FullFrameProtocol *src)
void ProcessIaxCmdMwi (IAX2FullFrameProtocol *src)
void ProcessIaxCmdUnsupport (IAX2FullFrameProtocol *src)
void ProcessIaxCmdTransfer (IAX2FullFrameProtocol *src)
void ProcessIaxCmdProvision (IAX2FullFrameProtocol *src)
void ProcessIaxCmdFwDownl (IAX2FullFrameProtocol *src)
void ProcessIaxCmdFwData (IAX2FullFrameProtocol *src)
void SetCallSentRinging (BOOL newValue=TRUE)
void SetCallNewed (BOOL newValue=TRUE)
void SetCallRegistered (BOOL newValue=TRUE)
void SetCallAuthorised (BOOL newValue=TRUE)
void SetCallAccepted (BOOL newValue=TRUE)
void SetCallRinging (BOOL newValue=TRUE)
void SetCallAnswered (BOOL newValue=TRUE)
void SetCallTerminating (BOOL newValue=TRUE)
BOOL IsCallHappening ()
BOOL IsCallNewed ()
BOOL IsCallSentRinging ()
BOOL IsCallRegistered ()
BOOL IsCallAuthorised ()
BOOL IsCallAccepted ()
BOOL IsCallRinging ()
BOOL IsCallAnswered ()
void SendAnswerMessageToRemoteNode ()
void StartStatusCheckTimer (PINDEX msToWait=10000)
void OnStatusCheck (PTimer &, INT)
void DoStatusCheck ()
void RemoteNodeIsRinging ()
void RingingWasAcked ()
void AnswerWasAcked ()
void CheckForRemoteCapabilities (IAX2FullFrameProtocol *src)
virtual void OnNoResponseTimeout ()
virtual void ProcessFullFrame (IAX2FullFrame &fullFrame)

Public Member Functions

 IAX2CallProcessor (IAX2EndPoint &ep)
virtual ~IAX2CallProcessor ()
void AssignConnection (IAX2Connection *_con)
void PutSoundPacketToNetwork (PBYTEArray *sund)
IAX2EncryptionGetEncryptionInfo ()
virtual void Release (OpalConnection::CallEndReason releaseReason=OpalConnection::EndedByLocalUser)
void ClearCall (OpalConnection::CallEndReason releaseReason=OpalConnection::EndedByLocalUser)
virtual void OnReleased ()
void SendDtmf (const PString &dtmfs)
void SendText (const PString &text)
virtual BOOL SetUpConnection ()
BOOL Matches (IAX2Frame *frame)
virtual void PrintOn (ostream &strm) const
void ReportStatistics ()
BOOL MatchingLocalCallNumber (PINDEX compare)
unsigned short GetSelectedCodec ()
void SetConnected ()
void AcceptIncomingCall ()
virtual BOOL SetAlerting (const PString &calleeName, BOOL withMedia)
void SetEstablished (BOOL originator)
void Hangup (PString messageToSend)
BOOL IsCallTerminating ()
void SendHold ()
void SendHoldRelease ()
void SetUserName (PString &inUserName)
PString GetUserName () const
void SetPassword (PString &inPassword)
PString GetPassword () const
void SendTransfer (const PString &calledNumber, const PString &calledContext=PString::Empty())

Protected Attributes

IAX2Connectioncon

Detailed Description

This class does the work of processing the lists of IAX packets (in and out) that are associated with each call. There is one IAX2CallProcessor per connection.


Member Enumeration Documentation

enum IAX2CallProcessor::SoundBufferState [protected]

This is the current state of the sound buffer for the packets that are being recieved. It is used so if a bad event occurs like the buffer gets to big or the buffer gets to small then we can reduce the amount of audiable disturbances.

Enumerator:
BufferToSmall 
Normal  We need more sound packets to come in.
BufferToBig  We need the buffer size to be reduced there is to much latency.

enum IAX2CallProcessor::CallStatus [protected]

bit mask of the different flags to indicate call status

Enumerator:
callNewed  we have received a new packet to set this call up.
callSentRinging  we have sent a packet to indicate that the phone is ringing at our end
callRegistered  registration with a remote asterisk server has been approved
callAuthorised  we are waiting on password authentication at the remote endpoint
callAccepted  call has been accepted, which means that the new request has been approved
callRinging  Remote end has sent us advice the phone is ringing, awaiting answer
callAnswered  call setup complete, now do audio
callTerminating  Flag to indicate call is closing down after iax2 call end commands


Constructor & Destructor Documentation

IAX2CallProcessor::IAX2CallProcessor ( IAX2EndPoint ep  ) 

Construct this class

virtual IAX2CallProcessor::~IAX2CallProcessor (  )  [virtual]

Destructor


Member Function Documentation

void IAX2CallProcessor::AssignConnection ( IAX2Connection _con  ) 

Assign a pointer to the connection class to process, and starts thread

void IAX2CallProcessor::PutSoundPacketToNetwork ( PBYTEArray *  sund  ) 

Handle a sound packet received from the sound device. Now onsend this to the remote endpoint.

IAX2Encryption& IAX2CallProcessor::GetEncryptionInfo (  )  [inline]

Get the iax2 encryption info

Reimplemented from IAX2Processor.

virtual void IAX2CallProcessor::Release ( OpalConnection::CallEndReason  releaseReason = OpalConnection::EndedByLocalUser  )  [virtual]

Call back from the IAX2Connection class

void IAX2CallProcessor::ClearCall ( OpalConnection::CallEndReason  releaseReason = OpalConnection::EndedByLocalUser  ) 

From the IAX2Connection class. CAlling this sends a hangup frame

virtual void IAX2CallProcessor::OnReleased (  )  [virtual]

Call back from the IAX2Connection class. This indicates the IAX2Connection class is in the final stages of destruction. At this point, we can terminate the thread that processors all iax packets

void IAX2CallProcessor::SendDtmf ( const PString &  dtmfs  ) 

Ask this IAX2CallProcessor to send dtmf to the remote endpoint. The dtmf is placed on a queue, ready for transmission in fullframes of type dtmf.

void IAX2CallProcessor::SendText ( const PString &  text  ) 

Ask this IAX2CallProcessor to send text to the remote endpoint. The text is placed on a queue, ready for transmission in fullframes of type text.

virtual BOOL IAX2CallProcessor::SetUpConnection (  )  [virtual]

Start an outgoing connection. This function will initiate the connection to the remote entity, for example in H.323 it sends a SETUP, in SIP it sends an INVITE etc.

The behaviour at the opal level is pure. Here, the method is defined.

BOOL IAX2CallProcessor::Matches ( IAX2Frame frame  )  [inline]

Return TRUE if the remote info in the frame matches the remote info in this connection

virtual void IAX2CallProcessor::PrintOn ( ostream &  strm  )  const [virtual]

A method to cause some of the values in this class to be formatted into a printable stream

Implements IAX2Processor.

void IAX2CallProcessor::ReportStatistics (  ) 

Invoked by the User interface, which causes the statistics (count of in/out packets) to be printed

BOOL IAX2CallProcessor::MatchingLocalCallNumber ( PINDEX  compare  )  [inline]

Return TRUE if the arg matches the source call number for this connection

unsigned short IAX2CallProcessor::GetSelectedCodec (  )  [inline]

Get the bit pattern of the selected codec

void IAX2CallProcessor::SetConnected (  ) 

Indicate to remote endpoint we are connected.

void IAX2CallProcessor::AcceptIncomingCall (  ) 

Send appropriate packets to the remote node to indicate we will accept this call. Note that this method is called from the endpoint thread, (not this IAX2Connection's thread

virtual BOOL IAX2CallProcessor::SetAlerting ( const PString &  calleeName,
BOOL  withMedia 
) [virtual]

Indicate to remote endpoint an alert is in progress. If this is an incoming connection and the AnswerCallResponse is in a AnswerCallDeferred or AnswerCallPending state, then this function is used to indicate to that endpoint that an alert is in progress. This is usually due to another connection which is in the call (the B party) has received an OnAlerting() indicating that its remoteendpoint is "ringing".

The default behaviour is pure.

Parameters:
withMedia  Name of endpoint being alerted. Open media with alerting

void IAX2CallProcessor::SetEstablished ( BOOL  originator  ) 

Advise the procesor that this call is totally setup, and answer accordingly

Parameters:
originator  Flag to indicate if we created the call

void IAX2CallProcessor::Hangup ( PString  messageToSend  ) 

Cause this thread to hangup the current call, but not die. Death will come soon though. The argument is placed in the iax2 hangup packet as the cause string.

BOOL IAX2CallProcessor::IsCallTerminating (  )  [inline]

Report the status of the flag callEndingNow, which indicates if the call is terminating under iax2 control

void IAX2CallProcessor::SendHold (  ) 

Put the remote connection on hold

void IAX2CallProcessor::SendHoldRelease (  ) 

Take the remote connection of hold

void IAX2CallProcessor::SetUserName ( PString &  inUserName  )  [inline]

Set the username for when we connect to a remote node we use it as authentication. Note this must only be used before the main thread is started. This is optional because some servers do not required authentication, also if it is not set then the default iax2Ep username will be used instead.

PString IAX2CallProcessor::GetUserName (  )  const

Get the username

void IAX2CallProcessor::SetPassword ( PString &  inPassword  )  [inline]

Set the password for when we connect to a remote node we use it as authentication. Note this must only be used before the main thread is started. This is optional because some servers do not required authentication, also if it is not set then the default iax2Ep password will be used instead.

PString IAX2CallProcessor::GetPassword (  )  const [inline]

Get the password

void IAX2CallProcessor::SendTransfer ( const PString &  calledNumber,
const PString &  calledContext = PString::Empty() 
)

Send a transfer request, to transfer the remote party to the specified number and optionally with a context

BOOL IAX2CallProcessor::RemoteSelectedCodecOk (  )  [protected]

Test the value supplied in the format Ie is compatible.

void IAX2CallProcessor::CheckForHangupMessages (  )  [protected]

Check to see if there is an outstanding request to send a hangup frame. This needs to be done in two places, so we use a routine to see if need to send a hanup frame.

void IAX2CallProcessor::ProcessNetworkFrame ( IAX2Frame src  )  [protected]

Internal method to process an incoming network frame of type IAX2Frame

void IAX2CallProcessor::ProcessNetworkFrame ( IAX2MiniFrame src  )  [protected, virtual]

Internal method to process an incoming network frame of type IAX2MiniFrame

Implements IAX2Processor.

void IAX2CallProcessor::ProcessNetworkFrame ( IAX2FullFrame src  )  [protected]

Internal method to process an incoming network frame of type IAX2FullFrame

void IAX2CallProcessor::ProcessNetworkFrame ( IAX2FullFrameDtmf src  )  [protected]

Internal method to process an incoming network frame of type IAX2FullFrameDtmf

void IAX2CallProcessor::ProcessNetworkFrame ( IAX2FullFrameVoice src  )  [protected]

Internal method to process an incoming network frame of type IAX2FullFrameVoice

void IAX2CallProcessor::ProcessNetworkFrame ( IAX2FullFrameVideo src  )  [protected]

Internal method to process an incoming network frame of type IAX2FullFrameVideo

void IAX2CallProcessor::ProcessNetworkFrame ( IAX2FullFrameSessionControl src  )  [protected]

Internal method to process an incoming network frame of type IAX2FullFrameSessionControl

void IAX2CallProcessor::ProcessNetworkFrame ( IAX2FullFrameNull src  )  [protected]

Internal method to process an incoming network frame of type IAX2FullFrameNull

virtual BOOL IAX2CallProcessor::ProcessNetworkFrame ( IAX2FullFrameProtocol src  )  [protected, virtual]

Internal method to process an incoming network frame of type IAX2FullFrameProtocol.

A frame of FullFrameProtocol type is labelled as AST_FRAME_IAX in the asterisk souces, It will contain 0, 1, 2 or more Information Elements (Ie) in the data section.

Reimplemented from IAX2Processor.

void IAX2CallProcessor::ProcessNetworkFrame ( IAX2FullFrameText src  )  [protected]

Internal method to process an incoming network frame of type IAX2FullFrameText

void IAX2CallProcessor::ProcessNetworkFrame ( IAX2FullFrameImage src  )  [protected]

Internal method to process an incoming network frame of type IAX2FullFrameImage

void IAX2CallProcessor::ProcessNetworkFrame ( IAX2FullFrameHtml src  )  [protected]

Internal method to process an incoming network frame of type IAX2FullFrameHtml

void IAX2CallProcessor::ProcessNetworkFrame ( IAX2FullFrameCng src  )  [protected]

Internal method to process an incoming network frame of type IAX2FullFrameCng

virtual void IAX2CallProcessor::ProcessLists (  )  [protected, virtual]

Go through the three lists for incoming data (ethernet/sound/UI commands.

Implements IAX2Processor.

void IAX2CallProcessor::ConnectToRemoteNode ( PString &  destination  )  [protected]

Make a call to a remote node

void IAX2CallProcessor::SendDtmfMessage ( char  message  )  [protected]

Cause the dtmf full frames to go out for this dtmf character

void IAX2CallProcessor::SendTextMessage ( PString &  message  )  [protected]

Cause the text full frames to go out for this text message

void IAX2CallProcessor::SendSoundMessage ( PBYTEArray *  sound  )  [protected]

Cause a sound frame (which is full or mini) to be sent. The data in the array is already compressed.

void IAX2CallProcessor::SendTransferMessage (  )  [protected]

Sends a transfer message ONLY if doTransfer is TRUE

void IAX2CallProcessor::SendQuelchMessage (  )  [protected]

Send a message to put the remote connection on hold

void IAX2CallProcessor::SendUnQuelchMessage (  )  [protected]

Send a message to take the remote connection off hold

void IAX2CallProcessor::IncAudioFramesSent (  )  [inline, protected]

Increment the count of audio frames sent

void IAX2CallProcessor::IncAudioFramesRcvd (  )  [inline, protected]

Increment the count of audio frames received

void IAX2CallProcessor::IncVideoFramesSent (  )  [inline, protected]

Increment the count of video frames sent

void IAX2CallProcessor::IncVideoFramesRcvd (  )  [inline, protected]

Increment the count of video frames received

void IAX2CallProcessor::RemoteNodeHasAnswered (  )  [protected]

A callback which is used to indicate the remote party has accepted our call. Media can flow now

void IAX2CallProcessor::CallStopSounds (  )  [protected]

A stop sounds packet has been received, which means we have moved from waiting for the remote person to answer, to they have answered and media can flow in both directions

void IAX2CallProcessor::ReceivedHookFlash (  )  [protected]

A callback which is used to indicate that the remote party has sent us a hook flash message (i.e, their hook was flashed)

void IAX2CallProcessor::RemoteNodeIsBusy (  )  [protected]

A callback which is used to indicate that the remote party has sent us a message stating they are busy.

void IAX2CallProcessor::ProcessIncomingAudioFrame ( IAX2Frame newFrame  )  [protected]

Process the audio data portions of the Frame argument, which may be a MiniFrame or FullFrame

void IAX2CallProcessor::ProcessIncomingVideoFrame ( IAX2Frame newFrame  )  [protected]

Process the video data portions of the Frame argument, which may be a MiniFrame or FullFrame

void IAX2CallProcessor::ProcessIaxCmdNew ( IAX2FullFrameProtocol src  )  [protected]

Process a FullFrameProtocol class, where the sub Class value is Create a new call

void IAX2CallProcessor::ProcessIaxCmdAck ( IAX2FullFrameProtocol src  )  [protected]

Process a FullFrameProtocol class, where the sub Class value is Acknowledge a Reliably sent full frame

void IAX2CallProcessor::ProcessIaxCmdHangup ( IAX2FullFrameProtocol src  )  [protected]

Process a FullFrameProtocol class, where the sub Class value is Request to terminate this call

void IAX2CallProcessor::ProcessIaxCmdReject ( IAX2FullFrameProtocol src  )  [protected]

Process a FullFrameProtocol class, where the sub Class value is Refuse to accept this call. May happen if authentication faile

void IAX2CallProcessor::ProcessIaxCmdAccept ( IAX2FullFrameProtocol src  )  [protected]

Process a FullFrameProtocol class, where the sub Class value is Allow this call to procee

void IAX2CallProcessor::ProcessIaxCmdAuthReq ( IAX2FullFrameProtocol src  )  [protected]

Process a FullFrameProtocol class, where the sub Class value is Ask remote end to supply authentication

void IAX2CallProcessor::ProcessIaxCmdAuthRep ( IAX2FullFrameProtocol src  )  [protected]

Process a FullFrameProtocol class, where the sub Class value is A reply, that contains authentication

void IAX2CallProcessor::ProcessIaxCmdInval ( IAX2FullFrameProtocol src  )  [protected]

Process a FullFrameProtocol class, where the sub Class value is Destroy this call immediately

void IAX2CallProcessor::ProcessIaxCmdDpReq ( IAX2FullFrameProtocol src  )  [protected]

Process a FullFrameProtocol class, where the sub Class value is Request status of a dialplan entry

void IAX2CallProcessor::ProcessIaxCmdDpRep ( IAX2FullFrameProtocol src  )  [protected]

Process a FullFrameProtocol class, where the sub Class value is Request status of a dialplan entry

void IAX2CallProcessor::ProcessIaxCmdDial ( IAX2FullFrameProtocol src  )  [protected]

Process a FullFrameProtocol class, where the sub Class value is Request a dial on channel brought up TBD

void IAX2CallProcessor::ProcessIaxCmdTxreq ( IAX2FullFrameProtocol src  )  [protected]

Process a FullFrameProtocol class, where the sub Class value is Transfer Request

void IAX2CallProcessor::ProcessIaxCmdTxcnt ( IAX2FullFrameProtocol src  )  [protected]

Process a FullFrameProtocol class, where the sub Class value is Transfer Connect

void IAX2CallProcessor::ProcessIaxCmdTxacc ( IAX2FullFrameProtocol src  )  [protected]

Process a FullFrameProtocol class, where the sub Class value is Transfer Accepted

void IAX2CallProcessor::ProcessIaxCmdTxready ( IAX2FullFrameProtocol src  )  [protected]

Process a FullFrameProtocol class, where the sub Class value is Transfer ready

void IAX2CallProcessor::ProcessIaxCmdTxrel ( IAX2FullFrameProtocol src  )  [protected]

Process a FullFrameProtocol class, where the sub Class value is Transfer release

void IAX2CallProcessor::ProcessIaxCmdTxrej ( IAX2FullFrameProtocol src  )  [protected]

Process a FullFrameProtocol class, where the sub Class value is Transfer reject

void IAX2CallProcessor::ProcessIaxCmdQuelch ( IAX2FullFrameProtocol src  )  [protected]

Process a FullFrameProtocol class, where the sub Class value is Stop audio/video transmission

void IAX2CallProcessor::ProcessIaxCmdUnquelch ( IAX2FullFrameProtocol src  )  [protected]

Process a FullFrameProtocol class, where the sub Class value is Resume audio/video transmission

void IAX2CallProcessor::ProcessIaxCmdPage ( IAX2FullFrameProtocol src  )  [protected]

Process a FullFrameProtocol class, where the sub Class value is Paging description

void IAX2CallProcessor::ProcessIaxCmdMwi ( IAX2FullFrameProtocol src  )  [protected]

Process a FullFrameProtocol class, where the sub Class value is Stand-alone message waiting indicator

void IAX2CallProcessor::ProcessIaxCmdUnsupport ( IAX2FullFrameProtocol src  )  [protected]

Process a FullFrameProtocol class, where the sub Class value is Unsupported message received

void IAX2CallProcessor::ProcessIaxCmdTransfer ( IAX2FullFrameProtocol src  )  [protected]

Process a FullFrameProtocol class, where the sub Class value is Request remote transfer

void IAX2CallProcessor::ProcessIaxCmdProvision ( IAX2FullFrameProtocol src  )  [protected]

Process a FullFrameProtocol class, where the sub Class value is Provision device

void IAX2CallProcessor::ProcessIaxCmdFwDownl ( IAX2FullFrameProtocol src  )  [protected]

Process a FullFrameProtocol class, where the sub Class value is Download firmware

void IAX2CallProcessor::ProcessIaxCmdFwData ( IAX2FullFrameProtocol src  )  [protected]

Process a FullFrameProtocol class, where the sub Class value is Firmware Data

void IAX2CallProcessor::SetCallSentRinging ( BOOL  newValue = TRUE  )  [inline, protected]

Mark call status as having sent a iaxcmdRinging packet

void IAX2CallProcessor::SetCallNewed ( BOOL  newValue = TRUE  )  [inline, protected]

Mark call status as having received a new packet

void IAX2CallProcessor::SetCallRegistered ( BOOL  newValue = TRUE  )  [inline, protected]

Mark call status Registered (argument determines flag status)

void IAX2CallProcessor::SetCallAuthorised ( BOOL  newValue = TRUE  )  [inline, protected]

Mark call status Authorised (argument determines flag status)

void IAX2CallProcessor::SetCallAccepted ( BOOL  newValue = TRUE  )  [inline, protected]

Mark call status Accepted (argument determines flag status)

void IAX2CallProcessor::SetCallRinging ( BOOL  newValue = TRUE  )  [inline, protected]

Mark call status Ringing (argument determines flag status)

void IAX2CallProcessor::SetCallAnswered ( BOOL  newValue = TRUE  )  [inline, protected]

Mark call status Answered (argument determines flag status)

void IAX2CallProcessor::SetCallTerminating ( BOOL  newValue = TRUE  )  [inline, protected]

Mark call status as terminated (is processing IAX2 hangup packets etc )

BOOL IAX2CallProcessor::IsCallHappening (  )  [inline, protected]

See if any of the flag bits are on, which indicate this call is actually active

BOOL IAX2CallProcessor::IsCallNewed (  )  [inline, protected]

Get marker to indicate that some packets have flowed etc for this call

BOOL IAX2CallProcessor::IsCallSentRinging (  )  [inline, protected]

Get marker to indicate that we are waiting on the ack for the iaxcommandringing packet we sent

BOOL IAX2CallProcessor::IsCallRegistered (  )  [inline, protected]

Get the current value of the call status flag callRegistered

BOOL IAX2CallProcessor::IsCallAuthorised (  )  [inline, protected]

Get the current value of the call status flag callAuthorised

BOOL IAX2CallProcessor::IsCallAccepted (  )  [inline, protected]

Get the current value of the call status flag callAccepted

BOOL IAX2CallProcessor::IsCallRinging (  )  [inline, protected]

Get the current value of the call status flag callRinging

BOOL IAX2CallProcessor::IsCallAnswered (  )  [inline, protected]

Get the current value of the call status flag callAnswered

void IAX2CallProcessor::SendAnswerMessageToRemoteNode (  )  [protected]

Advise the other end that we have picked up the phone

void IAX2CallProcessor::StartStatusCheckTimer ( PINDEX  msToWait = 10000  )  [protected]

Set up the acceptable time (in milliseconds) to wait between doing status checks.

Parameters:
msToWait  time between status checks, default = 10 seconds

void IAX2CallProcessor::OnStatusCheck ( PTimer &  ,
INT   
) [protected]

A pwlib callback function to invoke another status check on the other endpoint

This method runs in a separate thread to the heart of the Connection. It is threadsafe, cause each of the elements in Connection (that are touched) are thread safe

void IAX2CallProcessor::DoStatusCheck (  )  [protected]

Code to send a PING and a LAGRQ packet to the remote endpoint

void IAX2CallProcessor::RemoteNodeIsRinging (  )  [protected]

we have received a message that the remote node is ringing. Now wait for the remote user to answer.

void IAX2CallProcessor::RingingWasAcked (  )  [protected]

We have told the remote node that our phone is ringing. they have acked this message. Now, we advise opal that our phone "should" be ringing, and does opal want to accept our call.

void IAX2CallProcessor::AnswerWasAcked (  )  [protected]

We have received an ack message from the remote node. The ack message was sent in response to our Answer message. Since the Answer message has been acked, we have to regard this call as Established();.

void IAX2CallProcessor::CheckForRemoteCapabilities ( IAX2FullFrameProtocol src  )  [protected]

If the incoming frame has Information Elements defining remote capability, define the list of remote capabilities

virtual void IAX2CallProcessor::OnNoResponseTimeout (  )  [protected, virtual]

A call back when there has been no acknowledgment and the timeout peroid has been reached

Implements IAX2Processor.

virtual void IAX2CallProcessor::ProcessFullFrame ( IAX2FullFrame fullFrame  )  [protected, virtual]

Process a full frame and respond accordingly to it

Implements IAX2Processor.


Member Data Documentation

IAX2Connection* IAX2CallProcessor::con [protected]

The connection class we are charged with running.

PAtomicInteger IAX2CallProcessor::audioFramesSent [protected]

Count of the number of sound frames sent

PAtomicInteger IAX2CallProcessor::audioFramesRcvd [protected]

Count of the number of sound frames received

PAtomicInteger IAX2CallProcessor::videoFramesSent [protected]

Count of the number of video frames sent

PAtomicInteger IAX2CallProcessor::videoFramesRcvd [protected]

Count of the number of video frames received

SafeString IAX2CallProcessor::remotePhoneNumber [protected]

Phone number of the remote endpoint

SafeStrings IAX2CallProcessor::callList [protected]

Array of remote node we have to make a call to

SafeString IAX2CallProcessor::dtmfText [protected]

Contains the concatanation of the dtmf we have to send to the remote endpoint. This string is sent a character at a time, one DTMF frame per character. This list is threadsafe.

SafeStrings IAX2CallProcessor::textList [protected]

Array of the text we have to send to the remote endpoint. This array is threadsafe.

SafeStrings IAX2CallProcessor::dtmfNetworkList [protected]

Array of received dtmf characters (These have come from the network)

SafeStrings IAX2CallProcessor::hangList [protected]

Array of requests to end this current call

BOOL IAX2CallProcessor::holdCall [protected]

Flag to indicate we have to send hold call

BOOL IAX2CallProcessor::holdReleaseCall [protected]

Flag to indicate we have to send hold release

IAX2SoundList IAX2CallProcessor::soundWaitingForTransmission [protected]

Array of sound packets read from the audio device, and is about to be transmitted to the remote node

SoundBufferState IAX2CallProcessor::soundBufferState [protected]

This holds the current state for the sound recieving buffer

PINDEX IAX2CallProcessor::lastFullFrameTimeStamp [protected]

This is the timestamp of the last received full frame, which is used to reconstruct the timestamp of received MiniFrames

BOOL IAX2CallProcessor::audioCanFlow [protected]

Flag to indicate we are ready for audio to flow

unsigned int IAX2CallProcessor::selectedCodec [protected]

Bitmask of FullFrameVoice::AudioSc values to specify which codec is used

unsigned short IAX2CallProcessor::callStatus [protected]

Contains the bits stating what is happening in the call

BOOL IAX2CallProcessor::firstMediaFrame [protected]

Flag to indicate if we are waiting on the first full frame of media (voice or video). The arrival of this frame causes the IAX2Connection::OnEstablished method to be called.

BOOL IAX2CallProcessor::answerCallNow [protected]

Flag to indicate we have to answer this call (i.e. send a FullFrameSessionControl::answer packet).

BOOL IAX2CallProcessor::statusCheckOtherEnd [protected]

Flag to indicate we need to do a status query on the other end. this means, send a PING and a LAGRQ packet, which happens every 10 seconds. The timer, timeStatusCheck controls when this happens

PTimer IAX2CallProcessor::statusCheckTimer [protected]

The timer which is used to do the status check

PINDEX IAX2CallProcessor::audioFrameDuration [protected]

The time period, in ms, of each audio frame. It is used when determining the appropriate timestamp to go on a packet.

PINDEX IAX2CallProcessor::audioCompressedBytes [protected]

The number of bytes from compressing one frame of audio

BOOL IAX2CallProcessor::audioFramesNotStarted [protected]

A flag to indicate we have yet to send an audio frame to remote endpoint. If this is on, then the first audio frame sent is a full one.

PString IAX2CallProcessor::userName [protected]

Optional username for when we connect to a remote node we use it as authentication. Note this must only be set before the main thread is started.

PString IAX2CallProcessor::password [protected]

Optional password for when we connect to a remote node we use it as authentication. Note this must only be set before the main thread is started.

PMutex IAX2CallProcessor::transferMutex [protected]

A mutex to make the transfer related fields atomic

BOOL IAX2CallProcessor::doTransfer [protected]

Whether we want a transfer event to occur or not

PString IAX2CallProcessor::transferCalledNumber [protected]

The number to call for a transfer

PString IAX2CallProcessor::transferCalledContext [protected]

The context to call for a transfer -- this is optional


The documentation for this class was generated from the following file:
Generated on Fri Mar 7 06:34:02 2008 for OPAL by  doxygen 1.5.1