Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 06e1e0ab98898582c876a8be34ecb5e9 > files > 204

capisuite-0.4.5-5mdv2010.0.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>CapiSuite: CallModule Class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.3.8 -->
<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
<h1>CallModule Class Reference</h1>Base class for all call handling modules.  
<a href="#_details">More...</a>
<p>
<code>#include &lt;<a class="el" href="callmodule_8h-source.html">callmodule.h</a>&gt;</code>
<p>
<p>Inheritance diagram for CallModule:
<p><center><img src="classCallModule.png" usemap="#CallModule_map" border="0" alt=""></center>
<map name="CallModule_map">
<area href="classCallInterface.html" alt="CallInterface" shape="rect" coords="0,0,117,24">
<area href="classAudioReceive.html" alt="AudioReceive" shape="rect" coords="127,112,244,136">
<area href="classAudioSend.html" alt="AudioSend" shape="rect" coords="127,168,244,192">
<area href="classCallOutgoing.html" alt="CallOutgoing" shape="rect" coords="127,224,244,248">
<area href="classConnectModule.html" alt="ConnectModule" shape="rect" coords="127,280,244,304">
<area href="classDisconnectModule.html" alt="DisconnectModule" shape="rect" coords="127,336,244,360">
<area href="classFaxReceive.html" alt="FaxReceive" shape="rect" coords="127,392,244,416">
<area href="classFaxSend.html" alt="FaxSend" shape="rect" coords="127,448,244,472">
<area href="classReadDTMF.html" alt="ReadDTMF" shape="rect" coords="127,504,244,528">
<area href="classSwitch2FaxG3.html" alt="Switch2FaxG3" shape="rect" coords="127,560,244,584">
</map>
<a href="classCallModule-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 Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classCallModule.html#a0">CallModule</a> (<a class="el" href="classConnection.html">Connection</a> *connection, int <a class="el" href="classCallModule.html#p5">timeout</a>=-1, bool <a class="el" href="classCallModule.html#p0">DTMF_exit</a>=false)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Constructor. Register this module at the according <a class="el" href="classConnection.html">Connection</a> object.  <a href="#a0"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classCallModule.html#a1">~CallModule</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destructor. Deregister this module at the according <a class="el" href="classConnection.html">Connection</a> object.  <a href="#a1"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classCallModule.html#a2">mainLoop</a> ()  throw (CapiWrongState,CapiMsgError,CapiExternalError,CapiError)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Waits in busy loop until the module is completed.  <a href="#a2"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classCallModule.html#a3">transmissionComplete</a> (void)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">empty here.  <a href="#a3"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classCallModule.html#a4">alerting</a> (void)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">empty here.  <a href="#a4"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classCallModule.html#a5">callConnected</a> (void)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">empty here.  <a href="#a5"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classCallModule.html#a6">callDisconnectedLogical</a> (void)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">abort current modul if logical connection is lost.  <a href="#a6"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classCallModule.html#a7">callDisconnectedPhysical</a> (void)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">abort current module if physical connection is lost.  <a href="#a7"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classCallModule.html#a8">gotDTMF</a> (void)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">finish current module if DTMF is received.  <a href="#a8"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classCallModule.html#a9">dataIn</a> (unsigned char *data, unsigned length)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">empty here.  <a href="#a9"></a><br></td></tr>
<tr><td colspan=2><br><h2>Protected Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>virtual long&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classCallModule.html#b0">getTime</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get the current time in # of seconds sinc 1/1/1970  <a href="#b0"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classCallModule.html#b1">resetTimer</a> (int new_timeout)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">restart the timer with new timeout value  <a href="#b1"></a><br></td></tr>
<tr><td colspan=2><br><h2>Protected Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classCallModule.html#p0">DTMF_exit</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">if set to true, we will finish when we receive a DTMF signal  <a href="#p0"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classCallModule.html#p1">finish</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set this if the module should exit nicely for any reason  <a href="#p1"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classCallModule.html#p2">abort</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set this for hard exit because connection is lost, causes <a class="el" href="classCapiWrongState.html">CapiWrongState</a> to be throwed in mainLoop  <a href="#p2"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="classConnection.html">Connection</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classCallModule.html#p3">conn</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">reference to the according <a class="el" href="classConnection.html">Connection</a> object  <a href="#p3"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>long&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classCallModule.html#p4">exit_time</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">time when the timeout should occur  <a href="#p4"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classCallModule.html#p5">timeout</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">timeout period in seconds  <a href="#p5"></a><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Base class for all call handling modules. 
<p>
This class implements the <a class="el" href="classCallInterface.html">CallInterface</a>. It is the base class for all special call handling modules like FaxReceive/FaxSend, AudioReceive/AudioSend, etc. It contains basic code for registering with the according <a class="el" href="classConnection.html">Connection</a> object, realizing exits because of timeouts, received DTMF and call clearing from the other party.<p>
The general usage is: create a CallModule object, then run <a class="el" href="classCallModule.html#a2">mainLoop()</a>. <a class="el" href="classCallModule.html#a2">mainLoop()</a> will exit if necessary.<p>
To be able to recognize call clearing of the other party, the <a class="el" href="classCapiWrongState.html">CapiWrongState</a> exception is used. It is triggered by <a class="el" href="classCallModule.html#a2">mainLoop()</a>.<p>
Sub classes will mainly overwrite <a class="el" href="classCallModule.html#a2">mainLoop()</a> and the other signals they need for their tasks.<p>
If you don't change the semantics in the sub classes, the module will terminate when at least one of the following events occurs:<ul>
<li>logical connection is ended</li><li>physical connection is ended</li><li>DTMF code is received (depending on the value of DTMF_exit given in the constructor)</li></ul>
<p>
<dl compact><dt><b>Author:</b></dt><dd>Gernot Hillier </dd></dl>

<p>
<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="a0" doxytag="CallModule::CallModule" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> CallModule::CallModule           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="classConnection.html">Connection</a> *&nbsp;</td>
          <td class="mdname" nowrap> <em>connection</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname" nowrap> <em>timeout</em> = <code>-1</code>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td></td>
          <td class="md" nowrap>bool&nbsp;</td>
          <td class="mdname" nowrap> <em>DTMF_exit</em> = <code>false</code></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Constructor. Register this module at the according <a class="el" href="classConnection.html">Connection</a> object. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td></td><td valign=top><em>connection</em>&nbsp;</td><td>reference to <a class="el" href="classConnection.html">Connection</a> object </td></tr>
    <tr><td></td><td valign=top><em>timeout</em>&nbsp;</td><td>timeout for this module in seconds (only considered in mainLoop!), -1=infinite (default) </td></tr>
    <tr><td></td><td valign=top><em>DTMF_exit</em>&nbsp;</td><td>if this is set to true, then the current module is exited if we receive a DTMF tone</td></tr>
  </table>
</dl>
    </td>
  </tr>
</table>
<a class="anchor" name="a1" doxytag="CallModule::~CallModule" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> CallModule::~<a class="el" href="classCallModule.html">CallModule</a>           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Destructor. Deregister this module at the according <a class="el" href="classConnection.html">Connection</a> object. 
<p>
    </td>
  </tr>
</table>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="a4" doxytag="CallModule::alerting" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void CallModule::alerting           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">void&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap><code> [virtual]</code></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
empty here. 
<p>
empty function to overwrite if necessary
<p>
Implements <a class="el" href="classCallInterface.html#a0">CallInterface</a>.
<p>

<p>
Reimplemented in <a class="el" href="classCallOutgoing.html#a3">CallOutgoing</a>.
<p>
    </td>
  </tr>
</table>
<a class="anchor" name="a5" doxytag="CallModule::callConnected" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void CallModule::callConnected           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">void&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap><code> [virtual]</code></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
empty here. 
<p>
empty function to overwrite if necessary
<p>
Implements <a class="el" href="classCallInterface.html#a1">CallInterface</a>.
<p>

<p>
Reimplemented in <a class="el" href="classCallOutgoing.html#a2">CallOutgoing</a>, <a class="el" href="classConnectModule.html#a2">ConnectModule</a>, and <a class="el" href="classSwitch2FaxG3.html#a3">Switch2FaxG3</a>.
<p>
    </td>
  </tr>
</table>
<a class="anchor" name="a6" doxytag="CallModule::callDisconnectedLogical" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void CallModule::callDisconnectedLogical           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">void&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap><code> [virtual]</code></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
abort current modul if logical connection is lost. 
<p>
will abort currently running module. May be overwritten with complete new behaviour if needed.
<p>
Implements <a class="el" href="classCallInterface.html#a2">CallInterface</a>.
<p>

<p>
Reimplemented in <a class="el" href="classDisconnectModule.html#a2">DisconnectModule</a>, and <a class="el" href="classSwitch2FaxG3.html#a2">Switch2FaxG3</a>.
<p>
    </td>
  </tr>
</table>
<a class="anchor" name="a7" doxytag="CallModule::callDisconnectedPhysical" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void CallModule::callDisconnectedPhysical           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">void&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap><code> [virtual]</code></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
abort current module if physical connection is lost. 
<p>
will abort currently running module. Only overwrite if you know what you do!
<p>
Implements <a class="el" href="classCallInterface.html#a3">CallInterface</a>.
<p>

<p>
Reimplemented in <a class="el" href="classDisconnectModule.html#a3">DisconnectModule</a>.
<p>
    </td>
  </tr>
</table>
<a class="anchor" name="a9" doxytag="CallModule::dataIn" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void CallModule::dataIn           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">unsigned char *&nbsp;</td>
          <td class="mdname" nowrap> <em>data</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td></td>
          <td class="md" nowrap>unsigned&nbsp;</td>
          <td class="mdname" nowrap> <em>length</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"><code> [virtual]</code></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
empty here. 
<p>
empty function to overwrite if necessary
<p>
Implements <a class="el" href="classCallInterface.html#a6">CallInterface</a>.
<p>

<p>
Reimplemented in <a class="el" href="classAudioReceive.html#a2">AudioReceive</a>.
<p>
    </td>
  </tr>
</table>
<a class="anchor" name="b0" doxytag="CallModule::getTime" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> long CallModule::getTime           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap><code> [protected, virtual]</code></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
get the current time in # of seconds sinc 1/1/1970 
<p>
    </td>
  </tr>
</table>
<a class="anchor" name="a8" doxytag="CallModule::gotDTMF" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void CallModule::gotDTMF           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">void&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap><code> [virtual]</code></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
finish current module if DTMF is received. 
<p>
finish current module if DTMF_exit was enabled
<p>
Implements <a class="el" href="classCallInterface.html#a5">CallInterface</a>.
<p>

<p>
Reimplemented in <a class="el" href="classReadDTMF.html#a2">ReadDTMF</a>.
<p>
    </td>
  </tr>
</table>
<a class="anchor" name="a2" doxytag="CallModule::mainLoop" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void CallModule::mainLoop           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap>  throw (<a class="el" href="classCapiWrongState.html">CapiWrongState</a>,<a class="el" href="classCapiMsgError.html">CapiMsgError</a>,<a class="el" href="classCapiExternalError.html">CapiExternalError</a>,<a class="el" href="classCapiError.html">CapiError</a>)<code> [virtual]</code></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Waits in busy loop until the module is completed. 
<p>
Waits in a busy loop (sleeping 100 msecs between each iteration) until a DTMF signal is reached (if enabled) or the timeout is reached (if enabled).<p>
This method will likely be overwritten in each sub class. You can call <a class="el" href="classCallModule.html#a2">CallModule::mainLoop()</a> there to implement busy loops. <dl compact><dt><b>Exceptions:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td></td><td valign=top><em>CapiWrongState</em>&nbsp;</td><td>Something is tried in a wrong connection state. This usually means our call was finished (raised directly). </td></tr>
    <tr><td></td><td valign=top><em>CapiMsgError</em>&nbsp;</td><td>A CAPI function hasn't succeeded for some reason (not thrown by CallModule, but may be thrown in subclasses). </td></tr>
    <tr><td></td><td valign=top><em>CapiError</em>&nbsp;</td><td>Some internal error has occured (not thrown by CallModule, but may be thrown in subclasses). </td></tr>
    <tr><td></td><td valign=top><em>CapiExternalError</em>&nbsp;</td><td>A given command didn't succeed for a reason not caused by the CAPI (not thrown by CallModule, but may be thrown in subclasses)</td></tr>
  </table>
</dl>

<p>
Reimplemented in <a class="el" href="classAudioReceive.html#a1">AudioReceive</a>, <a class="el" href="classAudioSend.html#a1">AudioSend</a>, <a class="el" href="classCallOutgoing.html#a1">CallOutgoing</a>, <a class="el" href="classConnectModule.html#a1">ConnectModule</a>, <a class="el" href="classDisconnectModule.html#a1">DisconnectModule</a>, <a class="el" href="classFaxReceive.html#a1">FaxReceive</a>, <a class="el" href="classFaxSend.html#a1">FaxSend</a>, <a class="el" href="classReadDTMF.html#a1">ReadDTMF</a>, and <a class="el" href="classSwitch2FaxG3.html#a1">Switch2FaxG3</a>.
<p>
    </td>
  </tr>
</table>
<a class="anchor" name="b1" doxytag="CallModule::resetTimer" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void CallModule::resetTimer           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">int&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>new_timeout</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap><code> [protected]</code></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
restart the timer with new timeout value 
<p>
    </td>
  </tr>
</table>
<a class="anchor" name="a3" doxytag="CallModule::transmissionComplete" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void CallModule::transmissionComplete           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">void&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap><code> [virtual]</code></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
empty here. 
<p>
empty function to overwrite if necessary
<p>
Implements <a class="el" href="classCallInterface.html#a4">CallInterface</a>.
<p>

<p>
Reimplemented in <a class="el" href="classAudioSend.html#a2">AudioSend</a>, <a class="el" href="classFaxReceive.html#a2">FaxReceive</a>, and <a class="el" href="classFaxSend.html#a2">FaxSend</a>.
<p>
    </td>
  </tr>
</table>
<hr><h2>Member Data Documentation</h2>
<a class="anchor" name="p2" doxytag="CallModule::abort" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> bool <a class="el" href="classCallModule.html#p2">CallModule::abort</a><code> [protected]</code>          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
set this for hard exit because connection is lost, causes <a class="el" href="classCapiWrongState.html">CapiWrongState</a> to be throwed in mainLoop 
<p>
    </td>
  </tr>
</table>
<a class="anchor" name="p3" doxytag="CallModule::conn" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="classConnection.html">Connection</a>* <a class="el" href="classCallModule.html#p3">CallModule::conn</a><code> [protected]</code>          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
reference to the according <a class="el" href="classConnection.html">Connection</a> object 
<p>
    </td>
  </tr>
</table>
<a class="anchor" name="p0" doxytag="CallModule::DTMF_exit" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> bool <a class="el" href="classCallModule.html#p0">CallModule::DTMF_exit</a><code> [protected]</code>          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
if set to true, we will finish when we receive a DTMF signal 
<p>
    </td>
  </tr>
</table>
<a class="anchor" name="p4" doxytag="CallModule::exit_time" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> long <a class="el" href="classCallModule.html#p4">CallModule::exit_time</a><code> [protected]</code>          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
time when the timeout should occur 
<p>
    </td>
  </tr>
</table>
<a class="anchor" name="p1" doxytag="CallModule::finish" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> bool <a class="el" href="classCallModule.html#p1">CallModule::finish</a><code> [protected]</code>          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
set this if the module should exit nicely for any reason 
<p>
    </td>
  </tr>
</table>
<a class="anchor" name="p5" doxytag="CallModule::timeout" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> int <a class="el" href="classCallModule.html#p5">CallModule::timeout</a><code> [protected]</code>          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
timeout period in seconds 
<p>
    </td>
  </tr>
</table>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="callmodule_8h-source.html">callmodule.h</a><li>callmodule.cpp</ul>
<hr size="1"><address style="align: right;"><small>Generated on Sun Nov 28 14:37:44 2004 for CapiSuite by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0 ></a> 1.3.8 </small></address>
</body>
</html>