Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/class_c_thread_server.html
author Dominic Pinkman <Dominic.Pinkman@Nokia.com>
Fri, 22 Jan 2010 18:26:19 +0000
changeset 1 25a17d01db0c
child 6 43e37759235e
permissions -rw-r--r--
Addition of the PDK content and example code for Documentation_content according to Feature bug 1607 and bug 1608

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>TB10.1 Example Applications: CThreadServer 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.3 -->
<h1>CThreadServer Class Reference</h1><!-- doxytag: class="CThreadServer" -->
<p>
<a href="class_c_thread_server-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 &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_thread_server.html#fb6315c557a5690492f0441ae493b512">TDriverState</a> { <br>
&nbsp;&nbsp;<a class="el" href="class_c_thread_server.html#fb6315c557a5690492f0441ae493b512fc5be2eeffed347a046b37284e86ff80">EStateUnknown</a>, 
<a class="el" href="class_c_thread_server.html#fb6315c557a5690492f0441ae493b512ce59c86fe5da6d24bb2c5bec86a5a5b3">EDriverLoaded</a>, 
<a class="el" href="class_c_thread_server.html#fb6315c557a5690492f0441ae493b512b5db379d7cf833defa8690a3f5d0738e">ELogicalChannelOpened</a>, 
<a class="el" href="class_c_thread_server.html#fb6315c557a5690492f0441ae493b51208bbd7887d61182c1f21091413a3da57">ESendingData</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="class_c_thread_server.html#fb6315c557a5690492f0441ae493b512592e09bd12f4b0fdb8d3303546944024">ELogicalChannelClosed</a>, 
<a class="el" href="class_c_thread_server.html#fb6315c557a5690492f0441ae493b5121ef73cf3ae958d4857aab914d01cdcfd">EDriverUnloaded</a>
<br>
 }</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="class_c_thread_server.html#adfbd81c8ebdf682c5ea26e837024f39">~CThreadServer</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">CSession2 *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_thread_server.html#30edb9952525008bc2f994aa8e1c2542">NewSessionL</a> (const TVersion &amp;aVersion, const RMessage2 &amp;aMessage) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_thread_server.html#e8800ec9ca3333ebffdbc790b38b218e">IncrementRefCount</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_thread_server.html#dd52c0ec21335f60489aa9a2478c11ab">DecrementRefCount</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">TInt&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_thread_server.html#b276a628b73ccf6b080c3e5f69a9cbba">LoadDevice</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">TInt&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_thread_server.html#5fff82f416011501a5d3e5040a24d515">UnloadDevice</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">TInt&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_thread_server.html#50d46df581a8dd334babd2441bd21154">OpenLogicalChannel</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_thread_server.html#bebdf4dc3dbbe186b9bf20ea3d16681f">CloseLogicalChannel</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">TInt&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_thread_server.html#5d9fd415bca412e6f73b8c80cdf60f29">SendDataToDevice</a> (TRequestStatus &amp;aStatus, const TDesC8 &amp;aData)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_thread_server.html#fa4844b8aec06286cc5a29d11f12ae47">CancelSendData</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_thread_server.html#631c9159f8d0d91fc3136f1012663851">UpdateDriverState</a> (<a class="el" href="class_c_thread_server.html#fb6315c557a5690492f0441ae493b512">TDriverState</a> aState)</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 IMPORT_C TInt&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_thread_server.html#cdab1f08c0f860dd83ccacbf26eeaced">StartThread</a> (TAny *aPointer)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_thread_server.html#7c41592480f2c412599c332f52a61347">NewLC</a> ()</td></tr>

</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Server interface for thread server. 
<p>Definition at line <a class="el" href="threadserver_8h-source.html#l00031">31</a> of file <a class="el" href="threadserver_8h-source.html">threadserver.h</a>.</p>
<hr><h2>Member Enumeration Documentation</h2>
<a class="anchor" name="fb6315c557a5690492f0441ae493b512"></a><!-- doxytag: member="CThreadServer::TDriverState" ref="fb6315c557a5690492f0441ae493b512" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="class_c_thread_server.html#fb6315c557a5690492f0441ae493b512">CThreadServer::TDriverState</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Enumeration of the driver states. <dl compact><dt><b>Enumerator: </b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" name="fb6315c557a5690492f0441ae493b512fc5be2eeffed347a046b37284e86ff80"></a><!-- doxytag: member="EStateUnknown" ref="fb6315c557a5690492f0441ae493b512fc5be2eeffed347a046b37284e86ff80" args="" -->EStateUnknown</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="fb6315c557a5690492f0441ae493b512ce59c86fe5da6d24bb2c5bec86a5a5b3"></a><!-- doxytag: member="EDriverLoaded" ref="fb6315c557a5690492f0441ae493b512ce59c86fe5da6d24bb2c5bec86a5a5b3" args="" -->EDriverLoaded</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="fb6315c557a5690492f0441ae493b512b5db379d7cf833defa8690a3f5d0738e"></a><!-- doxytag: member="ELogicalChannelOpened" ref="fb6315c557a5690492f0441ae493b512b5db379d7cf833defa8690a3f5d0738e" args="" -->ELogicalChannelOpened</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="fb6315c557a5690492f0441ae493b51208bbd7887d61182c1f21091413a3da57"></a><!-- doxytag: member="ESendingData" ref="fb6315c557a5690492f0441ae493b51208bbd7887d61182c1f21091413a3da57" args="" -->ESendingData</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="fb6315c557a5690492f0441ae493b512592e09bd12f4b0fdb8d3303546944024"></a><!-- doxytag: member="ELogicalChannelClosed" ref="fb6315c557a5690492f0441ae493b512592e09bd12f4b0fdb8d3303546944024" args="" -->ELogicalChannelClosed</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="fb6315c557a5690492f0441ae493b5121ef73cf3ae958d4857aab914d01cdcfd"></a><!-- doxytag: member="EDriverUnloaded" ref="fb6315c557a5690492f0441ae493b5121ef73cf3ae958d4857aab914d01cdcfd" args="" -->EDriverUnloaded</em>&nbsp;</td><td>
</td></tr>
</table>
</dl>

<p>Definition at line <a class="el" href="threadserver_8h-source.html#l00037">37</a> of file <a class="el" href="threadserver_8h-source.html">threadserver.h</a>.</p>

</div>
</div><p>
<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="adfbd81c8ebdf682c5ea26e837024f39"></a><!-- doxytag: member="CThreadServer::~CThreadServer" ref="adfbd81c8ebdf682c5ea26e837024f39" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CThreadServer::~CThreadServer           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Destructor. The device driver will be unloaded when the server destructor is called.<p>
Destructor 
<p>Definition at line <a class="el" href="threadserver_8cpp-source.html#l00050">50</a> of file <a class="el" href="threadserver_8cpp-source.html">threadserver.cpp</a>.</p>

</div>
</div><p>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="cdab1f08c0f860dd83ccacbf26eeaced"></a><!-- doxytag: member="CThreadServer::StartThread" ref="cdab1f08c0f860dd83ccacbf26eeaced" args="(TAny *aPointer)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">EXPORT_C TInt CThreadServer::StartThread           </td>
          <td>(</td>
          <td class="paramtype">TAny *&nbsp;</td>
          <td class="paramname"> <em>aPointer</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Thread entry function.<p>
Thread entry-point function. The ThreadServerStart object is passed as the thread parameter 
<p>Definition at line <a class="el" href="threadserverstart_8cpp-source.html#l00024">24</a> of file <a class="el" href="threadserverstart_8cpp-source.html">threadserverstart.cpp</a>.</p>

</div>
</div><p>
<a class="anchor" name="7c41592480f2c412599c332f52a61347"></a><!-- doxytag: member="CThreadServer::NewLC" ref="7c41592480f2c412599c332f52a61347" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void CThreadServer::NewLC           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
First and second phase constructor.<p>
Starts two phase construction 
<p>Definition at line <a class="el" href="threadserver_8cpp-source.html#l00027">27</a> of file <a class="el" href="threadserver_8cpp-source.html">threadserver.cpp</a>.</p>

</div>
</div><p>
<a class="anchor" name="30edb9952525008bc2f994aa8e1c2542"></a><!-- doxytag: member="CThreadServer::NewSessionL" ref="30edb9952525008bc2f994aa8e1c2542" args="(const TVersion &amp;aVersion, const RMessage2 &amp;aMessage) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CSession2 * CThreadServer::NewSessionL           </td>
          <td>(</td>
          <td class="paramtype">const TVersion &amp;&nbsp;</td>
          <td class="paramname"> <em>aVersion</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const RMessage2 &amp;&nbsp;</td>
          <td class="paramname"> <em>aMessage</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Create a server-side session object. <dl class="see" compact><dt><b>See also:</b></dt><dd>CServer2::NewSessionL().</dd></dl>
Create a new server-side session <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>aVersion</em>&nbsp;</td><td>Version argument </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>aMessage</em>&nbsp;</td><td>The message to process </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Instance of server side client session. </dd></dl>

<p>Definition at line <a class="el" href="threadserver_8cpp-source.html#l00066">66</a> of file <a class="el" href="threadserver_8cpp-source.html">threadserver.cpp</a>.</p>

</div>
</div><p>
<a class="anchor" name="e8800ec9ca3333ebffdbc790b38b218e"></a><!-- doxytag: member="CThreadServer::IncrementRefCount" ref="e8800ec9ca3333ebffdbc790b38b218e" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void CThreadServer::IncrementRefCount           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Increase reference count and cancel shutdown timer. This function is called when a new session is created.<p>
Increment the count of the number of clients connected 
<p>Definition at line <a class="el" href="threadserver_8cpp-source.html#l00081">81</a> of file <a class="el" href="threadserver_8cpp-source.html">threadserver.cpp</a>.</p>

</div>
</div><p>
<a class="anchor" name="dd52c0ec21335f60489aa9a2478c11ab"></a><!-- doxytag: member="CThreadServer::DecrementRefCount" ref="dd52c0ec21335f60489aa9a2478c11ab" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void CThreadServer::DecrementRefCount           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Decrease reference count and start shutdown timer. This function is called when a session is destroyed.<p>
Decrement the count of the number of clients connected 
<p>Definition at line <a class="el" href="threadserver_8cpp-source.html#l00089">89</a> of file <a class="el" href="threadserver_8cpp-source.html">threadserver.cpp</a>.</p>

</div>
</div><p>
<a class="anchor" name="b276a628b73ccf6b080c3e5f69a9cbba"></a><!-- doxytag: member="CThreadServer::LoadDevice" ref="b276a628b73ccf6b080c3e5f69a9cbba" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">TInt CThreadServer::LoadDevice           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Load device, including sample PDD and LDD.<p>
Load both LDD and PDD <dl class="return" compact><dt><b>Returns:</b></dt><dd>KErrNone or standard error code. </dd></dl>

<p>Definition at line <a class="el" href="threadserver_8cpp-source.html#l00117">117</a> of file <a class="el" href="threadserver_8cpp-source.html">threadserver.cpp</a>.</p>

</div>
</div><p>
<a class="anchor" name="5fff82f416011501a5d3e5040a24d515"></a><!-- doxytag: member="CThreadServer::UnloadDevice" ref="5fff82f416011501a5d3e5040a24d515" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">TInt CThreadServer::UnloadDevice           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Unload device, including sample LDD and PDD.<p>
Unload both LDD and PDD <dl class="return" compact><dt><b>Returns:</b></dt><dd>KErrNone or standard error code. </dd></dl>

<p>Definition at line <a class="el" href="threadserver_8cpp-source.html#l00138">138</a> of file <a class="el" href="threadserver_8cpp-source.html">threadserver.cpp</a>.</p>

</div>
</div><p>
<a class="anchor" name="50d46df581a8dd334babd2441bd21154"></a><!-- doxytag: member="CThreadServer::OpenLogicalChannel" ref="50d46df581a8dd334babd2441bd21154" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">TInt CThreadServer::OpenLogicalChannel           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Open device logical channel.<p>
Open LDD <dl class="return" compact><dt><b>Returns:</b></dt><dd>KErrNone or standard error code. </dd></dl>

<p>Definition at line <a class="el" href="threadserver_8cpp-source.html#l00164">164</a> of file <a class="el" href="threadserver_8cpp-source.html">threadserver.cpp</a>.</p>

</div>
</div><p>
<a class="anchor" name="bebdf4dc3dbbe186b9bf20ea3d16681f"></a><!-- doxytag: member="CThreadServer::CloseLogicalChannel" ref="bebdf4dc3dbbe186b9bf20ea3d16681f" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void CThreadServer::CloseLogicalChannel           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Close device logical channel.<p>
Close LDD 
<p>Definition at line <a class="el" href="threadserver_8cpp-source.html#l00178">178</a> of file <a class="el" href="threadserver_8cpp-source.html">threadserver.cpp</a>.</p>

</div>
</div><p>
<a class="anchor" name="5d9fd415bca412e6f73b8c80cdf60f29"></a><!-- doxytag: member="CThreadServer::SendDataToDevice" ref="5d9fd415bca412e6f73b8c80cdf60f29" args="(TRequestStatus &amp;aStatus, const TDesC8 &amp;aData)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">TInt CThreadServer::SendDataToDevice           </td>
          <td>(</td>
          <td class="paramtype">TRequestStatus &amp;&nbsp;</td>
          <td class="paramname"> <em>aStatus</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const TDesC8 &amp;&nbsp;</td>
          <td class="paramname"> <em>aData</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Send data to device. It is an asynchronous request.<p>
Send data to LDD device <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>aStatus</em>&nbsp;</td><td></td></tr>
    <tr><td valign="top"></td><td valign="top"><em>aData</em>&nbsp;</td><td>Data to be sent </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>KErrNone or standard error code. </dd></dl>

<p>Definition at line <a class="el" href="threadserver_8cpp-source.html#l00192">192</a> of file <a class="el" href="threadserver_8cpp-source.html">threadserver.cpp</a>.</p>

</div>
</div><p>
<a class="anchor" name="fa4844b8aec06286cc5a29d11f12ae47"></a><!-- doxytag: member="CThreadServer::CancelSendData" ref="fa4844b8aec06286cc5a29d11f12ae47" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void CThreadServer::CancelSendData           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Cancel send data operation to device driver.<p>
Cancel sending data 
<p>Definition at line <a class="el" href="threadserver_8cpp-source.html#l00209">209</a> of file <a class="el" href="threadserver_8cpp-source.html">threadserver.cpp</a>.</p>

</div>
</div><p>
<a class="anchor" name="631c9159f8d0d91fc3136f1012663851"></a><!-- doxytag: member="CThreadServer::UpdateDriverState" ref="631c9159f8d0d91fc3136f1012663851" args="(TDriverState aState)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void CThreadServer::UpdateDriverState           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_c_thread_server.html#fb6315c557a5690492f0441ae493b512">TDriverState</a>&nbsp;</td>
          <td class="paramname"> <em>aState</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Update device state.<p>
Update the states of the driver <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>aState</em>&nbsp;</td><td>State of the driver to be updated </td></tr>
  </table>
</dl>

<p>Definition at line <a class="el" href="threadserver_8cpp-source.html#l00218">218</a> of file <a class="el" href="threadserver_8cpp-source.html">threadserver.cpp</a>.</p>

</div>
</div><p>
<hr size="1"><address style="text-align: right;"><small>Generated on Thu Jan 21 10:33:07 2010 for TB10.1 Example Applications by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
</body>
</html>