<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title>Yate: IAXFrame Class Reference</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> <link href="tabs.css" rel="stylesheet" type="text/css"> </head><body> <!-- Generated by Doxygen 1.5.7.1 --> <div class="navigation" id="top"> <div class="tabs"> <ul> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="namespaces.html"><span>Namespaces</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li><a href="files.html"><span>Files</span></a></li> </ul> </div> <div class="tabs"> <ul> <li><a href="annotated.html"><span>Class List</span></a></li> <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Class Members</span></a></li> </ul> </div> <div class="navpath"><a class="el" href="namespaceTelEngine.html">TelEngine</a>::<a class="el" href="classTelEngine_1_1IAXFrame.html">IAXFrame</a> </div> </div> <div class="contents"> <h1>IAXFrame Class Reference</h1><!-- doxytag: class="TelEngine::IAXFrame" --><!-- doxytag: inherits="TelEngine::RefObject" -->This class holds an IAX frame. <a href="#_details">More...</a> <p> <code>#include <<a class="el" href="yateiax_8h-source.html">yateiax.h</a>></code> <p> <div class="dynheader"> Inheritance diagram for IAXFrame:</div> <div class="dynsection"> <p><center><img src="classTelEngine_1_1IAXFrame.png" usemap="#IAXFrame_map" border="0" alt=""></center> <map name="IAXFrame_map"> <area href="classTelEngine_1_1RefObject.html" alt="RefObject" shape="rect" coords="0,56,90,80"> <area href="classTelEngine_1_1GenObject.html" alt="GenObject" shape="rect" coords="0,0,90,24"> <area href="classTelEngine_1_1IAXFullFrame.html" alt="IAXFullFrame" shape="rect" coords="0,168,90,192"> <area href="classTelEngine_1_1IAXFrameOut.html" alt="IAXFrameOut" shape="rect" coords="0,224,90,248"> </map> </div> <p> <a href="classTelEngine_1_1IAXFrame-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0"> <tr><td></td></tr> <tr><td colspan="2"><br><h2>Public Types</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1IAXFrame.html#1d1cfd8ffb84e947f82999c682b666a7">Type</a> { <br> <b>DTMF</b> = 0x01, <b>Voice</b> = 0x02, <b>Video</b> = 0x03, <b>Control</b> = 0x04, <br> <b>Null</b> = 0x05, <b>IAX</b> = 0x06, <b>Text</b> = 0x07, <b>Image</b> = 0x08, <br> <b>HTML</b> = 0x09, <b>Noise</b> = 0x0a <br> }</td></tr> <tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1IAXFrame.html#001231a31a33a0ab6a662ef5e22a1168">IAXFrame</a> (<a class="el" href="classTelEngine_1_1IAXFrame.html#1d1cfd8ffb84e947f82999c682b666a7">Type</a> type, u_int16_t sCallNo, u_int32_t tStamp, bool retrans, const unsigned char *buf, unsigned int len)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1IAXFrame.html#5c9a0d80e098b6b5e26d869d5080dc59">~IAXFrame</a> ()</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classTelEngine_1_1IAXFrame.html#1d1cfd8ffb84e947f82999c682b666a7">Type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1IAXFrame.html#fbd0fa31db28593e9669c3c56711c0a7">type</a> () const </td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classTelEngine_1_1DataBlock.html">DataBlock</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1IAXFrame.html#ec5e47df053fce5ac19f56dcb130206c">data</a> ()</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1IAXFrame.html#ce9a1b4b252bf8f3681f4ec30d81970d">retrans</a> () const </td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">u_int16_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1IAXFrame.html#5128e4769c843049cfc240d90eceda4d">sourceCallNo</a> () const </td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">u_int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1IAXFrame.html#d2afe3a5ba96047c7aca5a7c5d31a129">timeStamp</a> () const </td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual const <a class="el" href="classTelEngine_1_1IAXFullFrame.html">IAXFullFrame</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1IAXFrame.html#3c052990c95e405373394ca108bbd01a">fullFrame</a> () const </td></tr> <tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="classTelEngine_1_1IAXFrame.html">IAXFrame</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1IAXFrame.html#7e0452f6f3d700238f12af9eee07f909">parse</a> (const unsigned char *buf, unsigned int len, <a class="el" href="classTelEngine_1_1IAXEngine.html">IAXEngine</a> *engine=0, const <a class="el" href="classTelEngine_1_1SocketAddr.html">SocketAddr</a> *addr=0)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static u_int8_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1IAXFrame.html#cf4845bb95f2458db3ba0e5877c7e335">packSubclass</a> (u_int32_t value)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static u_int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1IAXFrame.html#c4aea3ec7178c4dea9318ed5b11a5e60">unpackSubclass</a> (u_int8_t value)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1IAXFrame.html#2c30947987c8f6acd49167b9750342b9">typeText</a> (int type)</td></tr> <tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classTelEngine_1_1DataBlock.html">DataBlock</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1IAXFrame.html#d56abe48f5b150093823e30c0883328d">m_data</a></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classTelEngine_1_1IAXFrame.html#222f594ca85b9e1980cccb481db1eef4">m_retrans</a></td></tr> </table> <hr><a name="_details"></a><h2>Detailed Description</h2> This class holds an IAX frame. <p> This class holds all data needded to manage an IAX frame <hr><h2>Member Enumeration Documentation</h2> <a class="anchor" name="1d1cfd8ffb84e947f82999c682b666a7"></a><!-- doxytag: member="TelEngine::IAXFrame::Type" ref="1d1cfd8ffb84e947f82999c682b666a7" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">enum <a class="el" href="classTelEngine_1_1IAXFrame.html#1d1cfd8ffb84e947f82999c682b666a7">Type</a> </td> </tr> </table> </div> <div class="memdoc"> <p> IAX frame type enumeration </div> </div><p> <hr><h2>Constructor & Destructor Documentation</h2> <a class="anchor" name="001231a31a33a0ab6a662ef5e22a1168"></a><!-- doxytag: member="TelEngine::IAXFrame::IAXFrame" ref="001231a31a33a0ab6a662ef5e22a1168" args="(Type type, u_int16_t sCallNo, u_int32_t tStamp, bool retrans, const unsigned char *buf, unsigned int len)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classTelEngine_1_1IAXFrame.html">IAXFrame</a> </td> <td>(</td> <td class="paramtype"><a class="el" href="classTelEngine_1_1IAXFrame.html#1d1cfd8ffb84e947f82999c682b666a7">Type</a> </td> <td class="paramname"> <em>type</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">u_int16_t </td> <td class="paramname"> <em>sCallNo</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">u_int32_t </td> <td class="paramname"> <em>tStamp</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">bool </td> <td class="paramname"> <em>retrans</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const unsigned char * </td> <td class="paramname"> <em>buf</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">unsigned int </td> <td class="paramname"> <em>len</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Constructor. Constructs an incoming frame <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>type</em> </td><td>Frame type </td></tr> <tr><td valign="top"></td><td valign="top"><em>sCallNo</em> </td><td>Source call number </td></tr> <tr><td valign="top"></td><td valign="top"><em>tStamp</em> </td><td>Frame timestamp </td></tr> <tr><td valign="top"></td><td valign="top"><em>retrans</em> </td><td>Retransmission flag </td></tr> <tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>IE buffer </td></tr> <tr><td valign="top"></td><td valign="top"><em>len</em> </td><td>IE buffer length </td></tr> </table> </dl> </div> </div><p> <a class="anchor" name="5c9a0d80e098b6b5e26d869d5080dc59"></a><!-- doxytag: member="TelEngine::IAXFrame::~IAXFrame" ref="5c9a0d80e098b6b5e26d869d5080dc59" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual ~<a class="el" href="classTelEngine_1_1IAXFrame.html">IAXFrame</a> </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Destructor </div> </div><p> <hr><h2>Member Function Documentation</h2> <a class="anchor" name="ec5e47df053fce5ac19f56dcb130206c"></a><!-- doxytag: member="TelEngine::IAXFrame::data" ref="ec5e47df053fce5ac19f56dcb130206c" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classTelEngine_1_1DataBlock.html">DataBlock</a>& data </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Get the data buffer of the frame <dl class="return" compact><dt><b>Returns:</b></dt><dd>The data buffer of the frame </dd></dl> </div> </div><p> <a class="anchor" name="3c052990c95e405373394ca108bbd01a"></a><!-- doxytag: member="TelEngine::IAXFrame::fullFrame" ref="3c052990c95e405373394ca108bbd01a" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual const <a class="el" href="classTelEngine_1_1IAXFullFrame.html">IAXFullFrame</a>* fullFrame </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td> const<code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Get a pointer to this frame if it is a full frame <dl class="return" compact><dt><b>Returns:</b></dt><dd>A pointer to this frame if it is a full frame or 0 </dd></dl> <p>Reimplemented in <a class="el" href="classTelEngine_1_1IAXFullFrame.html#3c052990c95e405373394ca108bbd01a">IAXFullFrame</a>.</p> </div> </div><p> <a class="anchor" name="cf4845bb95f2458db3ba0e5877c7e335"></a><!-- doxytag: member="TelEngine::IAXFrame::packSubclass" ref="cf4845bb95f2458db3ba0e5877c7e335" args="(u_int32_t value)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static u_int8_t packSubclass </td> <td>(</td> <td class="paramtype">u_int32_t </td> <td class="paramname"> <em>value</em> </td> <td> ) </td> <td><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Pack a subclass value according to IAX protocol <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>value</em> </td><td>Value to pack </td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>The packed subclass value or 0 if invalid (>255 and not a power of 2) </dd></dl> </div> </div><p> <a class="anchor" name="7e0452f6f3d700238f12af9eee07f909"></a><!-- doxytag: member="TelEngine::IAXFrame::parse" ref="7e0452f6f3d700238f12af9eee07f909" args="(const unsigned char *buf, unsigned int len, IAXEngine *engine=0, const SocketAddr *addr=0)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static <a class="el" href="classTelEngine_1_1IAXFrame.html">IAXFrame</a>* parse </td> <td>(</td> <td class="paramtype">const unsigned char * </td> <td class="paramname"> <em>buf</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">unsigned int </td> <td class="paramname"> <em>len</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="classTelEngine_1_1IAXEngine.html">IAXEngine</a> * </td> <td class="paramname"> <em>engine</em> = <code>0</code>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classTelEngine_1_1SocketAddr.html">SocketAddr</a> * </td> <td class="paramname"> <em>addr</em> = <code>0</code></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Parse a received buffer and returns a <a class="el" href="classTelEngine_1_1IAXFrame.html" title="This class holds an IAX frame.">IAXFrame</a> pointer if valid <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>Received buffer </td></tr> <tr><td valign="top"></td><td valign="top"><em>len</em> </td><td>Buffer length </td></tr> <tr><td valign="top"></td><td valign="top"><em>engine</em> </td><td>The <a class="el" href="classTelEngine_1_1IAXEngine.html" title="IAX engine class.">IAXEngine</a> who requested the operation </td></tr> <tr><td valign="top"></td><td valign="top"><em>addr</em> </td><td>The source address </td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>A frame pointer on success or 0 </dd></dl> </div> </div><p> <a class="anchor" name="ce9a1b4b252bf8f3681f4ec30d81970d"></a><!-- doxytag: member="TelEngine::IAXFrame::retrans" ref="ce9a1b4b252bf8f3681f4ec30d81970d" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool retrans </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td> const<code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Get the retransmission flag of this frame <dl class="return" compact><dt><b>Returns:</b></dt><dd>The retransmission flag of this frame </dd></dl> </div> </div><p> <a class="anchor" name="5128e4769c843049cfc240d90eceda4d"></a><!-- doxytag: member="TelEngine::IAXFrame::sourceCallNo" ref="5128e4769c843049cfc240d90eceda4d" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">u_int16_t sourceCallNo </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td> const<code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Get the source call number of this frame <dl class="return" compact><dt><b>Returns:</b></dt><dd>The source call number of this frame </dd></dl> </div> </div><p> <a class="anchor" name="d2afe3a5ba96047c7aca5a7c5d31a129"></a><!-- doxytag: member="TelEngine::IAXFrame::timeStamp" ref="d2afe3a5ba96047c7aca5a7c5d31a129" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">u_int32_t timeStamp </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td> const<code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Get the timestamp of this frame <dl class="return" compact><dt><b>Returns:</b></dt><dd>The timestamp of this frame </dd></dl> </div> </div><p> <a class="anchor" name="fbd0fa31db28593e9669c3c56711c0a7"></a><!-- doxytag: member="TelEngine::IAXFrame::type" ref="fbd0fa31db28593e9669c3c56711c0a7" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classTelEngine_1_1IAXFrame.html#1d1cfd8ffb84e947f82999c682b666a7">Type</a> type </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td> const<code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Get the type of this frame as enumeration <dl class="return" compact><dt><b>Returns:</b></dt><dd>The type of this frame as enumeration </dd></dl> </div> </div><p> <a class="anchor" name="2c30947987c8f6acd49167b9750342b9"></a><!-- doxytag: member="TelEngine::IAXFrame::typeText" ref="2c30947987c8f6acd49167b9750342b9" args="(int type)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static const char* typeText </td> <td>(</td> <td class="paramtype">int </td> <td class="paramname"> <em>type</em> </td> <td> ) </td> <td><code> [inline, static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Get the string associated with the given IAX frame type <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>type</em> </td><td>The requested type </td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>The text if type is valid or 0 </dd></dl> <p>References <a class="el" href="namespaceTelEngine.html#4668c9172c6ae5f59f5782ecc6e05516">TelEngine::lookup()</a>.</p> </div> </div><p> <a class="anchor" name="c4aea3ec7178c4dea9318ed5b11a5e60"></a><!-- doxytag: member="TelEngine::IAXFrame::unpackSubclass" ref="c4aea3ec7178c4dea9318ed5b11a5e60" args="(u_int8_t value)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static u_int32_t unpackSubclass </td> <td>(</td> <td class="paramtype">u_int8_t </td> <td class="paramname"> <em>value</em> </td> <td> ) </td> <td><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Unpack a subclass value according to IAX protocol <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>value</em> </td><td>Value to unpack </td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>The unpacked subclass value </dd></dl> </div> </div><p> <hr><h2>Member Data Documentation</h2> <a class="anchor" name="d56abe48f5b150093823e30c0883328d"></a><!-- doxytag: member="TelEngine::IAXFrame::m_data" ref="d56abe48f5b150093823e30c0883328d" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classTelEngine_1_1DataBlock.html">DataBlock</a> <a class="el" href="classTelEngine_1_1IAXFrame.html#d56abe48f5b150093823e30c0883328d">m_data</a><code> [protected]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> Contains the frame's IE list for an incoming frame or the whole frame for an outgoing one </div> </div><p> <a class="anchor" name="222f594ca85b9e1980cccb481db1eef4"></a><!-- doxytag: member="TelEngine::IAXFrame::m_retrans" ref="222f594ca85b9e1980cccb481db1eef4" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool <a class="el" href="classTelEngine_1_1IAXFrame.html#222f594ca85b9e1980cccb481db1eef4">m_retrans</a><code> [protected]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> Retransmission flag </div> </div><p> <hr>The documentation for this class was generated from the following file:<ul> <li><a class="el" href="yateiax_8h-source.html">yateiax.h</a></ul> </div> <hr size="1"><address style="text-align: right;"><small>Generated on Sun Dec 7 21:36:12 2008 for Yate by <a href="http://www.doxygen.org/index.html"> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.7.1 </small></address> </body> </html>