Yate
Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Friends

IAXTransaction Class Reference

An IAX2 transaction. More...

#include <yateiax.h>

Inheritance diagram for IAXTransaction:
RefObject Mutex GenObject Lockable

List of all members.

Public Types

enum  Type {
  Incorrect, New, RegReq, RegRel,
  Poke
}
enum  State {
  Connected, NewLocalInvite, NewLocalInvite_AuthRecv, NewLocalInvite_RepSent,
  NewRemoteInvite, NewRemoteInvite_AuthSent, NewRemoteInvite_RepRecv, Unknown,
  Terminated, Terminating
}

Public Member Functions

virtual ~IAXTransaction ()
IAXEnginegetEngine () const
Type type () const
State state () const
u_int64_t timeStamp () const
bool outgoing () const
void setUserData (void *data)
void * getUserData () const
u_int16_t localCallNo () const
u_int16_t remoteCallNo () const
const SocketAddrremoteAddr () const
const Stringusername ()
const StringcallingNo ()
const StringcallingName ()
const StringcalledNo ()
const StringcalledContext ()
const Stringchallenge ()
u_int32_t format ()
u_int32_t formatIn ()
u_int32_t formatOut () const
u_int32_t capability () const
u_int32_t expire () const
const Stringauthdata ()
IAXTransactionprocessFrame (IAXFrame *frame)
IAXTransactionprocessMedia (DataBlock &data, u_int32_t tStamp, bool voice=false)
IAXTransactionsendMedia (const DataBlock &data, u_int32_t format)
IAXEventgetEvent (u_int64_t time)
bool sendAnswer ()
bool sendRinging ()
bool sendProgress ()
bool sendAccept ()
bool sendHangup (const char *cause=0, u_int8_t code=0)
bool sendReject (const char *cause=0, u_int8_t code=0)
bool sendAuth ()
bool sendAuthReply (const String &response)
bool sendDtmf (u_int8_t dtmf)
bool sendText (const char *text)
bool sendNoise (u_int8_t noise)
bool abortReg ()
bool enableTrunking (IAXMetaTrunkFrame *trunkFrame)
void print ()

Static Public Member Functions

static IAXTransactionfactoryIn (IAXEngine *engine, IAXFullFrame *frame, u_int16_t lcallno, const SocketAddr &addr, void *data=0)
static IAXTransactionfactoryOut (IAXEngine *engine, Type type, u_int16_t lcallno, const SocketAddr &addr, IAXIEList &ieList, void *data=0)
static unsigned char getMaxFrameList ()
static bool setMaxFrameList (unsigned char value)

Static Public Attributes

static String s_iax_modNoAuthMethod
static String s_iax_modNoMediaFormat
static String s_iax_modInvalidAuth
static String s_iax_modNoUsername

Protected Member Functions

 IAXTransaction (IAXEngine *engine, IAXFullFrame *frame, u_int16_t lcallno, const SocketAddr &addr, void *data=0)
 IAXTransaction (IAXEngine *engine, Type type, u_int16_t lcallno, const SocketAddr &addr, IAXIEList &ieList, void *data=0)
void init (IAXIEList &ieList)
bool incrementSeqNo (const IAXFullFrame *frame, bool inbound)
bool isFrameAcceptable (const IAXFullFrame *frame)
bool changeState (State newState)
IAXEventterminate (u_int8_t evType, bool local, const IAXFullFrame *frame=0, bool createIEList=true)
IAXEventwaitForTerminate (u_int8_t evType, bool local, const IAXFullFrame *frame)
void postFrame (IAXFrame::Type type, u_int32_t subclass, void *data=0, u_int16_t len=0, u_int32_t tStamp=0, bool ackOnly=false)
bool sendFrame (IAXFrameOut *frame, bool vnak=false)
IAXEventcreateEvent (u_int8_t evType, bool local, const IAXFullFrame *frame, State newState)
IAXEventcreateResponse (IAXFrameOut *frame, u_int8_t findType, u_int8_t findSubclass, u_int8_t evType, bool local, State newState)
IAXEventgetEventResponse (IAXFrameOut *frame, bool &delFrame)
IAXEventgetEventResponse_New (IAXFrameOut *frame, bool &delFrame)
IAXEventprocessAuthReq (IAXEvent *event)
IAXEventprocessAccept (IAXEvent *event)
IAXEventprocessAuthRep (IAXEvent *event)
IAXEventgetEventResponse_Reg (IAXFrameOut *frame, bool &delFrame)
IAXEventprocessRegAck (IAXEvent *event)
IAXEventgetEventStartTrans (IAXFullFrame *frame, bool &delFrame)
IAXEventgetEventRequest (IAXFullFrame *frame, bool &delFrame)
IAXEventgetEventRequest_New (IAXFullFrame *frame, bool &delFrame)
IAXFullFramefindInFrame (IAXFrame::Type type, u_int32_t subclass)
bool findInFrameTimestamp (const IAXFullFrame *frameOut, IAXFrame::Type type, u_int32_t subclass)
bool findInFrameAck (const IAXFullFrame *frameOut)
void ackInFrames ()
bool sendConnected (IAXFullFrame::ControlType subclass, IAXFrame::Type frametype=IAXFrame::Control)
void sendAck (const IAXFullFrame *frame)
void sendInval ()
void sendVNAK ()
void sendUnsupport (u_int32_t subclass)
IAXEventprocessInternalOutgoingRequest (IAXFrameOut *frame, bool &delFrame)
IAXEventprocessInternalIncomingRequest (const IAXFullFrame *frame, bool &delFrame)
IAXEventprocessMidCallControl (const IAXFullFrame *frame, bool &delFrame)
IAXEventprocessMidCallIAXControl (const IAXFullFrame *frame, bool &delFrame)
IAXEventremoteRejectCall (const IAXFullFrame *frame, bool &delFrame)
IAXEventgetEventTerminating (u_int64_t time)
IAXTransactionprocessVoiceFrame (const IAXFullFrame *frame)
IAXTransactionretransmitOnVNAK (u_int16_t seqNo)
IAXEventinternalAccept ()
IAXEventinternalReject (String &reason)
void eventTerminated (IAXEvent *event)
IAXEventkeepEvent (IAXEvent *event)

Friends

class IAXEvent
class IAXEngine

Detailed Description

An IAX2 transaction.

This class holds all the data needded for the management of an IAX2 transaction which might be a call leg, a register/unregister or a poke one


Member Enumeration Documentation

enum State

The transaction state as enumeration

enum Type

The transaction type as enumeration


Constructor & Destructor Documentation

virtual ~IAXTransaction ( ) [virtual]

Destructor

IAXTransaction ( IAXEngine engine,
IAXFullFrame frame,
u_int16_t  lcallno,
const SocketAddr addr,
void *  data = 0 
) [protected]

Constructor: constructs an incoming transaction from a received full frame with an IAX control message that needs a new transaction

Parameters:
engineThe engine that owns this transaction
frameA valid full frame
lcallnoLocal call number
addrAddress from where the frame was received
dataPointer to arbitrary user data
IAXTransaction ( IAXEngine engine,
Type  type,
u_int16_t  lcallno,
const SocketAddr addr,
IAXIEList ieList,
void *  data = 0 
) [protected]

Constructor: constructs an outgoing transaction with an IAX control message that needs a new transaction

Parameters:
engineThe engine that owns this transaction
typeTransaction type: see Type enumeration
lcallnoLocal call number
addrAddress to use
ieListStarting IE list
dataPointer to arbitrary user data

Member Function Documentation

bool abortReg ( )

Abort a registration transaction This method is thread safe

Returns:
False transaction is not a registration one or is already terminating
void ackInFrames ( ) [protected]

Acknoledge the last received full frame

const String& authdata ( ) [inline]

Retrive the authentication data sent/received during authentication

Returns:
A reference to the authentication data
const String& calledContext ( ) [inline]

Retrive the called context

Returns:
A reference to the called context
const String& calledNo ( ) [inline]

Retrive the called number

Returns:
A reference to the called number
const String& callingName ( ) [inline]

Retrive the calling name

Returns:
A reference to the calling name
const String& callingNo ( ) [inline]

Retrive the calling number

Returns:
A reference to the calling number
u_int32_t capability ( ) const [inline]

Retrive the media capability of this transaction

Returns:
The media capability of this transaction
const String& challenge ( ) [inline]

Retrive the challenge sent/received during authentication

Returns:
A reference to the challenge
bool changeState ( State  newState) [protected]

Change the transaction state

Parameters:
newStatethe new transaction state
Returns:
False if trying to change a termination state into a non termination one
IAXEvent* createEvent ( u_int8_t  evType,
bool  local,
const IAXFullFrame frame,
State  newState 
) [protected]

Create an event

Parameters:
evTypeEvent type
localIf true it is a locally generated event.
frameFrame to create from
newStateThe transaction new state
Returns:
Pointer to an IAXEvent or 0 (invalid IE list)
IAXEvent* createResponse ( IAXFrameOut frame,
u_int8_t  findType,
u_int8_t  findSubclass,
u_int8_t  evType,
bool  local,
State  newState 
) [protected]

Create an event from a received frame that is a response to a sent frame and change the transaction state to newState. Remove the response from incoming list.

Parameters:
frameFrame to create response for
findTypeFrame type to find
findSubclassFrame subclass to find
evTypeEvent type to generate
localLocal flag for the generated event.
newStateNew transaction state if an event was generated
Returns:
Pointer to an IAXEvent or 0 (invalid IE list)
bool enableTrunking ( IAXMetaTrunkFrame trunkFrame)

Enable trunking for this transaction

Parameters:
trunkFramePointer to IAXMetaTrunkFrame used to send trunked media
Returns:
False trunking is already enabled for this transactio or trunkFrame is 0
void eventTerminated ( IAXEvent event) [protected]

Event terminated feedback This method is thread safe

Parameters:
eventThe event notifying termination
u_int32_t expire ( ) const [inline]

Retrive the expiring time for a register/unregister transaction

Returns:
The expiring time for a register/unregister transaction
static IAXTransaction* factoryIn ( IAXEngine engine,
IAXFullFrame frame,
u_int16_t  lcallno,
const SocketAddr addr,
void *  data = 0 
) [static]

Constructs an incoming transaction from a received full frame with an IAX control message that needs a new transaction

Parameters:
engineThe engine that owns this transaction
frameA valid full frame
lcallnoLocal call number
addrAddress from where the frame was received
dataPointer to arbitrary user data
static IAXTransaction* factoryOut ( IAXEngine engine,
Type  type,
u_int16_t  lcallno,
const SocketAddr addr,
IAXIEList ieList,
void *  data = 0 
) [static]

Constructs an outgoing transaction with an IAX control message that needs a new transaction

Parameters:
engineThe engine that owns this transaction
typeTransaction type
lcallnoLocal call number
addrAddress to use
ieListStarting IE list
dataPointer to arbitrary user data
IAXFullFrame* findInFrame ( IAXFrame::Type  type,
u_int32_t  subclass 
) [protected]

Search for a frame in m_inFrames having the given type and subclass

Parameters:
typeFrame type to find.
subclassFrame subclass to find.
Returns:
Pointer to frame if found or 0.
bool findInFrameAck ( const IAXFullFrame frameOut) [protected]

Search in m_inFrames for an ACK frame which confirm the received frame and deletes it

Parameters:
frameOutFrame to find response for
Returns:
True if found.
bool findInFrameTimestamp ( const IAXFullFrame frameOut,
IAXFrame::Type  type,
u_int32_t  subclass 
) [protected]

Search in m_inFrames for a frame with the same timestamp as frameOut and deletes it.

Parameters:
frameOutFrame to find response for
typeFrame type to find
subclassFrame subclass to find
Returns:
True if found.
u_int32_t format ( ) [inline]

Retrive the media format used during initialization

Returns:
The initial media format
u_int32_t formatIn ( ) [inline]

Retrive the incoming media format

Returns:
The incoming media format
u_int32_t formatOut ( ) const [inline]

Retrive the outgoing media format

Returns:
The outgoing media format
IAXEngine* getEngine ( ) const [inline]

The IAX engine this transaction belongs to

Returns:
Pointer to the IAXEngine of this transaction
IAXEvent* getEvent ( u_int64_t  time)

Get an IAX event from the queue This method is thread safe.

Parameters:
timeThe time this method was called
Returns:
Pointer to an IAXEvent or 0 if none available
IAXEvent* getEventRequest ( IAXFullFrame frame,
bool &  delFrame 
) [protected]

Find out if a frame is a remote request

Parameters:
frameFrame to process
delFrameDelete rame flag. If true on exit, a request was found
Returns:
Pointer to an IAXEvent or 0
IAXEvent* getEventRequest_New ( IAXFullFrame frame,
bool &  delFrame 
) [protected]

Find out if a frame is a remote request if transaction type is New

Parameters:
frameFrame to process
delFrameDelete rame flag. If true on exit, a request was found
Returns:
Pointer to an IAXEvent or 0
IAXEvent* getEventResponse ( IAXFrameOut frame,
bool &  delFrame 
) [protected]

Find a response for a previously sent frame

Parameters:
frameFrame to find response for
delFrameDelete frame flag. If true on exit, a response was found
Returns:
Pointer to an IAXEvent or 0
IAXEvent* getEventResponse_New ( IAXFrameOut frame,
bool &  delFrame 
) [protected]

Find a response for a previously sent frame if the transaction type is New

Parameters:
frameFrame to find response for
delFrameDelete frame flag. If true on exit, a response was found
Returns:
Pointer to an IAXEvent or 0
IAXEvent* getEventResponse_Reg ( IAXFrameOut frame,
bool &  delFrame 
) [protected]

Find a response for a previously sent frame if the transaction type is RegReq/RegRel

Parameters:
frameFrame to find response for
delFrameDelete frame flag. If true on exit, a response was found
Returns:
Pointer to an IAXEvent or 0
IAXEvent* getEventStartTrans ( IAXFullFrame frame,
bool &  delFrame 
) [protected]

Find out if an incoming frame would start a transaction

Parameters:
frameFrame to process
delFrameDelete frame flag. If true on exit, frame is valid
Returns:
Pointer to an IAXEvent or 0
IAXEvent* getEventTerminating ( u_int64_t  time) [protected]

Terminate the transaction if state is Terminating on a remote request

Parameters:
timeCurrent time
Returns:
A valid IAXEvent or 0
static unsigned char getMaxFrameList ( ) [static]

Get the maximum allowed number of full frames in the incoming frame list

Returns:
The maximum allowed number of full frames in the incoming frame list
void* getUserData ( ) const [inline]

Return the opaque user data stored in the transaction

Returns:
Pointer set by user

Referenced by IAXEvent::getUserData().

bool incrementSeqNo ( const IAXFullFrame frame,
bool  inbound 
) [protected]

Increment sequence numbers (inbound or outbound) for the frames that need it

Parameters:
frameReceived frame if inbound is true, otherwise a transmitted one
inboundTrue for inbound frames
Returns:
True if incremented.
void init ( IAXIEList ieList) [protected]

Init data members from an IE list

Parameters:
ieListIE list to init from
IAXEvent* internalAccept ( ) [protected]

Generate an Accept event after internally accepting a transaction

Returns:
A valid IAXEvent
IAXEvent* internalReject ( String reason) [protected]

Generate a Reject event after internally rejecting a transaction

Parameters:
reasonThe reason of rejecting
Returns:
A valid IAXEvent
bool isFrameAcceptable ( const IAXFullFrame frame) [protected]

Test if frame is acceptable (not an out of order or a late one)

Parameters:
frameFrame to test
Returns:
True if frame can be added to incoming frame list
IAXEvent* keepEvent ( IAXEvent event) [inline, protected]

Set the current event

Parameters:
eventThe event notifying termination
Returns:
event
u_int16_t localCallNo ( ) const [inline]

Retrive the local call number

Returns:
15-bit local call number
bool outgoing ( ) const [inline]

Get the direction of this transaction

Returns:
True if it is an outgoing transaction
void postFrame ( IAXFrame::Type  type,
u_int32_t  subclass,
void *  data = 0,
u_int16_t  len = 0,
u_int32_t  tStamp = 0,
bool  ackOnly = false 
) [protected]

Constructs an IAXFrameOut frame, send it to remote peer and put it in the transmission list This method is thread safe

Parameters:
typeFrame type
subclassFrame subclass
dataFrame IE list
lenFrame IE list length
tStampFrame timestamp. If 0 the transaction timestamp will be used
ackOnlyFrame's acknoledge only flag
void print ( )

Print transaction data on stdin

IAXEvent* processAccept ( IAXEvent event) [protected]

Process an accept. If not valid (call m_engine->acceptFormatAndCapability) send a reject. Otherwise return the event

Parameters:
eventAlready generated event
Returns:
Pointer to a valid IAXEvent
IAXEvent* processAuthRep ( IAXEvent event) [protected]

Process an authentication reply

Parameters:
eventAlready generated event
Returns:
Pointer to a valid IAXEvent
IAXEvent* processAuthReq ( IAXEvent event) [protected]

Process an authentication request. If valid, send an authentication reply

Parameters:
eventAlready generated event
Returns:
Pointer to a valid IAXEvent
IAXTransaction* processFrame ( IAXFrame frame)

Process a frame from remote peer This method is thread safe.

Parameters:
frameIAX frame belonging to this transaction to process
Returns:
'this' if successful or NULL if the frame is invalid
IAXEvent* processInternalIncomingRequest ( const IAXFullFrame frame,
bool &  delFrame 
) [protected]

Internal protocol incoming frames processing (PING/LAGRQ)

Parameters:
frameFrame to process
delFrameDelete frame flag. If true on exit, a request was found
Returns:
0.
IAXEvent* processInternalOutgoingRequest ( IAXFrameOut frame,
bool &  delFrame 
) [protected]

Internal protocol outgoing frames processing (PING/LAGRQ)

Parameters:
frameFrame to process
delFrameDelete frame flag. If true on exit, a response was found
Returns:
0.
IAXTransaction* processMedia ( DataBlock data,
u_int32_t  tStamp,
bool  voice = false 
)

Process received mini frame data

Parameters:
dataReceived data
tStampMini frame timestamp
voiceTrue if received mini frame inside a Voice full frame
Returns:
0
IAXEvent* processMidCallControl ( const IAXFullFrame frame,
bool &  delFrame 
) [protected]

Process mid call control frames

Parameters:
frameFrame to process
delFrameDelete frame flag. If true on exit, a request was found
Returns:
A valid IAXEvent or 0
IAXEvent* processMidCallIAXControl ( const IAXFullFrame frame,
bool &  delFrame 
) [protected]

Process mid call IAX control frames

Parameters:
frameFrame to process
delFrameDelete frame flag. If true on exit, a request was found
Returns:
A valid IAXEvent or 0
IAXEvent* processRegAck ( IAXEvent event) [protected]

Update transaction data from the event

Parameters:
eventAlready generated event
Returns:
The received event
IAXTransaction* processVoiceFrame ( const IAXFullFrame frame) [protected]

Process received Voice frames

Parameters:
frameReceived voice frame
Returns:
0
const SocketAddr& remoteAddr ( ) const [inline]

Retrive the remote host+port address

Returns:
A reference to the remote address
u_int16_t remoteCallNo ( ) const [inline]

Retrive the remote call number

Returns:
15-bit remote call number
IAXEvent* remoteRejectCall ( const IAXFullFrame frame,
bool &  delFrame 
) [protected]

Test if frame is a Reject/RegRej frame

Parameters:
frameFrame to process.
delFrameDelete frame flag. If true on exit, a request was found
Returns:
A valid IAXEvent or 0.
IAXTransaction* retransmitOnVNAK ( u_int16_t  seqNo) [protected]

Send all frames from outgoing queue with outbound sequence number starting with seqNo.

Parameters:
seqNoRequested sequence number
Returns:
0
bool sendAccept ( )

Send an ACCEPT/REGACK frame to remote peer This method is thread safe

Returns:
False if the transaction type is not New and state is NewRemoteInvite or NewRemoteInvite_AuthRep or if the transaction type is not RegReq and state is NewRemoteInvite or type is not RegReq/RegRel and state is NewRemoteInvite_AuthRep
void sendAck ( const IAXFullFrame frame) [protected]

Send an ACK frame

Parameters:
frameAknoledged frame
bool sendAnswer ( ) [inline]

Send an ANSWER frame to remote peer This method is thread safe

Returns:
False if the current transaction state is not Connected
bool sendAuth ( )

Send an AUTHREQ/REGAUTH frame to remote peer This method is thread safe

Returns:
False if the current transaction state is not NewRemoteInvite
bool sendAuthReply ( const String response)

Send an AUTHREP/REGREQ/REGREL frame to remote peer as a response to AUTHREQ/REGREQ/REGREL This method is thread safe

Parameters:
responseResponse to send
Returns:
False if the current transaction state is not NewLocalInvite_AuthRecv
bool sendConnected ( IAXFullFrame::ControlType  subclass,
IAXFrame::Type  frametype = IAXFrame::Control 
) [protected]

Send a frame to remote peer in state Connected This method is thread safe

Parameters:
subclassFrame subclass to send
frametypeFrame type to send
Returns:
False if the current transaction state is not Connected
bool sendDtmf ( u_int8_t  dtmf) [inline]

Send a DTMF frame to remote peer This method is thread safe

Parameters:
dtmfDTMF char to send
Returns:
False if the current transaction state is not Connected or dtmf is grater then 127
bool sendFrame ( IAXFrameOut frame,
bool  vnak = false 
) [protected]

Send a full frame to remote peer

Parameters:
frameFrame to send
vnakIf true the transmission is a response to a VNAK frame
Returns:
True on success
bool sendHangup ( const char *  cause = 0,
u_int8_t  code = 0 
)

Send a HANGUP frame to remote peer This method is thread safe

Parameters:
causeOptional reason for hangup
codeOptional code of reason
Returns:
False if the transaction type is not New or state is Terminated/Terminating
void sendInval ( ) [protected]

Send an INVAL frame

IAXTransaction* sendMedia ( const DataBlock data,
u_int32_t  format 
)

Send media data to remote peer. Update the outgoing media format if changed

Parameters:
dataData to send
formatData format
Returns:
'this' if successful or 0
bool sendNoise ( u_int8_t  noise) [inline]

Send a NOISE frame to remote peer This method is thread safe

Parameters:
noiseNoise value to send
Returns:
False if the current transaction state is not Connected or noise is grater then 127
bool sendProgress ( ) [inline]

Send a PROCEEDING frame to remote peer This method is thread safe

Returns:
False if the current transaction state is not Connected
bool sendReject ( const char *  cause = 0,
u_int8_t  code = 0 
)

Send a REJECT/REGREJ frame to remote peer This method is thread safe

Parameters:
causeOptional reason for reject
codeOptional code of reason
Returns:
False if the transaction type is not New/RegReq/RegRel or state is Terminated/Terminating
bool sendRinging ( ) [inline]

Send a RINGING frame to remote peer This method is thread safe

Returns:
False if the current transaction state is not Connected
bool sendText ( const char *  text)

Send a TEXT frame to remote peer This method is thread safe

Parameters:
textText to send
Returns:
False if the current transaction state is not Connected
void sendUnsupport ( u_int32_t  subclass) [protected]

Send an Unsupport frame

Parameters:
subclassUnsupported frame's subclass
void sendVNAK ( ) [protected]

Send an VNAK frame

static bool setMaxFrameList ( unsigned char  value) [static]

Set the maximum allowed number of full frames in the incoming frame list

Parameters:
valueThe new value of m_maxInFrames
Returns:
False if value is greater then IAX2_MAX_TRANSINFRAMELIST
void setUserData ( void *  data) [inline]

Store a pointer to arbitrary user data

Parameters:
dataUser provided pointer
State state ( ) const [inline]

Get the state of this transaction

Returns:
The state of the transaction as enumeration
IAXEvent* terminate ( u_int8_t  evType,
bool  local,
const IAXFullFrame frame = 0,
bool  createIEList = true 
) [protected]

Terminate the transaction.

Parameters:
evTypeIAXEvent type to generate
localIf true it is a locally generated event
frameFrame to build event from
createIEListIf true create IE list in the generated event
Returns:
Pointer to a valid IAXEvent
u_int64_t timeStamp ( ) const [inline]

Get the timestamp of this transaction

Returns:
The timestamp of this transaction

References Time::msecNow().

Type type ( ) const [inline]

Get the type of this transaction

Returns:
The type of the transaction as enumeration
const String& username ( ) [inline]

Retrive the username

Returns:
A reference to the username
IAXEvent* waitForTerminate ( u_int8_t  evType,
bool  local,
const IAXFullFrame frame 
) [protected]

Wait for ACK to terminate the transaction. No more events will be generated

Parameters:
evTypeIAXEvent type to generate
localIf true it is a locally generated event
frameFrame to build event from
Returns:
Pointer to a valid IAXEvent

Member Data Documentation

Standard message sent if the received authentication data is incorrect

Standard message sent if unsupported/unknown/none authentication methosd was received

Standard message sent if unsupported/unknown/none media format was received

Standard message sent if a received frame doesn't have an username information element


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