Added debug message printing. Added socket option : CAN_RAW_LOOPBACK=1 and CAN_RAW_RECV_OWN_MSGS=0.
<!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>CanFestival: drivers/can_virtual/can_virtual.c File 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.1 -->
<div class="tabs">
<ul>
<li><a href="main.html"><span>Main Page</span></a></li>
<li><a href="annotated.html"><span>Data Structures</span></a></li>
<li id="current"><a href="files.html"><span>Files</span></a></li>
<li><a href="dirs.html"><span>Directories</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul></div>
<div class="nav">
<a class="el" href="dir_65dd258ff9b9ef4cd7bd0d22f5e58dba.html">drivers</a> » <a class="el" href="dir_e214fcc19be6ea390978e8fc1683888c.html">can_virtual</a></div>
<h1>can_virtual.c File Reference</h1><code>#include <stdio.h></code><br>
<code>#include <unistd.h></code><br>
<code>#include "<a class="el" href="can__driver_8h-source.html">can_driver.h</a>"</code><br>
<code>#include "<a class="el" href="def_8h-source.html">def.h</a>"</code><br>
<p>
Include dependency graph for can_virtual.c:<p><center><img src="can__virtual_8c__incl.png" border="0" usemap="#drivers/can_virtual/can_virtual.c_map" alt=""></center>
<map name="drivers/can_virtual/can_virtual.c_map">
<area href="can__driver_8h.html" shape="rect" coords="248,107,336,133" alt="">
<area href="def_8h.html" shape="rect" coords="268,157,316,184" alt="">
<area href="win32_2applicfg_8h.html" shape="rect" coords="499,56,573,83" alt="">
<area href="can_8h.html" shape="rect" coords="393,107,441,133" alt="">
<area href="config_8h.html" shape="rect" coords="385,157,449,184" alt="">
</map>
<p>
<a href="can__virtual_8c-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structCANPipe.html">CANPipe</a></td></tr>
<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="can__virtual_8c.html#722407e147a7e12159a03b4d7ce8e389">MAX_NB_CAN_PIPES</a> 16</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="can__virtual_8c.html#303cb6e9adb33087e17f29b9a75ba379">MyCase</a>(fc) case fc: printf(#fc);break;</td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">UNS8 </td><td class="memItemRight" valign="bottom"><a class="el" href="can__virtual_8c.html#b0b7065be05f6d53009b7bd46626e2c0">canReceive_driver</a> (<a class="el" href="win32_2applicfg_8h.html#324227f7b01d51ee83a883174769ac8f">CAN_HANDLE</a> fd0, <a class="el" href="structMessage.html">Message</a> *m)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="can__virtual_8c.html#d1dd3b302365b1f2bd0ce49f3db780d8">print_message</a> (<a class="el" href="structMessage.html">Message</a> *m)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">UNS8 </td><td class="memItemRight" valign="bottom"><a class="el" href="can__virtual_8c.html#36327c9e0ec6d284b346963a321e3c2b">canSend_driver</a> (<a class="el" href="win32_2applicfg_8h.html#324227f7b01d51ee83a883174769ac8f">CAN_HANDLE</a> fd0, <a class="el" href="structMessage.html">Message</a> *m)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="win32_2applicfg_8h.html#324227f7b01d51ee83a883174769ac8f">CAN_HANDLE</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="can__virtual_8c.html#a91c5884b47322592815c82427be3fac">canOpen_driver</a> (<a class="el" href="structstruct__s__BOARD.html">s_BOARD</a> *board)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="can__virtual_8c.html#d2f4803f3a623c82a4c3e92d4e75e5a5">canClose_driver</a> (<a class="el" href="win32_2applicfg_8h.html#324227f7b01d51ee83a883174769ac8f">CAN_HANDLE</a> fd0)</td></tr>
<tr><td colspan="2"><br><h2>Variables</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structCANPipe.html">CANPipe</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="can__virtual_8c.html#a13bbe9d129fed0a2f43085698c79e3e">canpipes</a> [MAX_NB_CAN_PIPES] = {{0,},{0,},{0,},{0,},{0,},{0,},{0,},{0,},{0,},{0,},{0,},{0,},{0,},{0,},{0,},{0,},}</td></tr>
</table>
<hr><h2>Define Documentation</h2>
<a class="anchor" name="722407e147a7e12159a03b4d7ce8e389"></a><!-- doxytag: member="can_virtual.c::MAX_NB_CAN_PIPES" ref="722407e147a7e12159a03b4d7ce8e389" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MAX_NB_CAN_PIPES 16 </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
<p>
Definition at line <a class="el" href="can__virtual_8c-source.html#l00033">33</a> of file <a class="el" href="can__virtual_8c-source.html">can_virtual.c</a>.
<p>
Referenced by <a class="el" href="can__virtual_8c-source.html#l00121">canOpen_driver()</a>, and <a class="el" href="can__virtual_8c-source.html#l00081">canSend_driver()</a>.
</div>
</div><p>
<a class="anchor" name="303cb6e9adb33087e17f29b9a75ba379"></a><!-- doxytag: member="can_virtual.c::MyCase" ref="303cb6e9adb33087e17f29b9a75ba379" args="(fc)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MyCase </td>
<td>(</td>
<td class="paramtype">fc </td>
<td class="paramname"> </td>
<td> ) </td>
<td width="100%"> case fc: printf(#fc);break;</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
<p>
Definition at line <a class="el" href="can__virtual_8c-source.html#l00052">52</a> of file <a class="el" href="can__virtual_8c-source.html">can_virtual.c</a>.
<p>
Referenced by <a class="el" href="can__virtual_8c-source.html#l00053">print_message()</a>.
</div>
</div><p>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="d2f4803f3a623c82a4c3e92d4e75e5a5"></a><!-- doxytag: member="can_virtual.c::canClose_driver" ref="d2f4803f3a623c82a4c3e92d4e75e5a5" args="(CAN_HANDLE fd0)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int canClose_driver </td>
<td>(</td>
<td class="paramtype"><a class="el" href="win32_2applicfg_8h.html#324227f7b01d51ee83a883174769ac8f">CAN_HANDLE</a> </td>
<td class="paramname"> <em>fd0</em> </td>
<td> ) </td>
<td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
<p>
Definition at line <a class="el" href="can__virtual_8c-source.html#l00142">142</a> of file <a class="el" href="can__virtual_8c-source.html">can_virtual.c</a>.
</div>
</div><p>
<a class="anchor" name="a91c5884b47322592815c82427be3fac"></a><!-- doxytag: member="can_virtual.c::canOpen_driver" ref="a91c5884b47322592815c82427be3fac" args="(s_BOARD *board)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="win32_2applicfg_8h.html#324227f7b01d51ee83a883174769ac8f">CAN_HANDLE</a> canOpen_driver </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structstruct__s__BOARD.html">s_BOARD</a> * </td>
<td class="paramname"> <em>board</em> </td>
<td> ) </td>
<td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
<p>
Definition at line <a class="el" href="can__virtual_8c-source.html#l00121">121</a> of file <a class="el" href="can__virtual_8c-source.html">can_virtual.c</a>.
<p>
References <a class="el" href="can__virtual_8c-source.html#l00040">canpipes</a>, <a class="el" href="can__virtual_8c-source.html#l00033">MAX_NB_CAN_PIPES</a>, and <a class="el" href="can__virtual_8c-source.html#l00036">CANPipe::used</a>.
</div>
</div><p>
<a class="anchor" name="b0b7065be05f6d53009b7bd46626e2c0"></a><!-- doxytag: member="can_virtual.c::canReceive_driver" ref="b0b7065be05f6d53009b7bd46626e2c0" args="(CAN_HANDLE fd0, Message *m)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">UNS8 canReceive_driver </td>
<td>(</td>
<td class="paramtype"><a class="el" href="win32_2applicfg_8h.html#324227f7b01d51ee83a883174769ac8f">CAN_HANDLE</a> </td>
<td class="paramname"> <em>fd0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structMessage.html">Message</a> * </td>
<td class="paramname"> <em>m</em></td><td> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
<p>
Definition at line <a class="el" href="can__virtual_8c-source.html#l00043">43</a> of file <a class="el" href="can__virtual_8c-source.html">can_virtual.c</a>.
</div>
</div><p>
<a class="anchor" name="36327c9e0ec6d284b346963a321e3c2b"></a><!-- doxytag: member="can_virtual.c::canSend_driver" ref="36327c9e0ec6d284b346963a321e3c2b" args="(CAN_HANDLE fd0, Message *m)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">UNS8 canSend_driver </td>
<td>(</td>
<td class="paramtype"><a class="el" href="win32_2applicfg_8h.html#324227f7b01d51ee83a883174769ac8f">CAN_HANDLE</a> </td>
<td class="paramname"> <em>fd0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structMessage.html">Message</a> * </td>
<td class="paramname"> <em>m</em></td><td> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
<p>
Definition at line <a class="el" href="can__virtual_8c-source.html#l00081">81</a> of file <a class="el" href="can__virtual_8c-source.html">can_virtual.c</a>.
<p>
References <a class="el" href="can__virtual_8c-source.html#l00040">canpipes</a>, <a class="el" href="can__virtual_8c-source.html#l00033">MAX_NB_CAN_PIPES</a>, and <a class="el" href="can__virtual_8c-source.html#l00053">print_message()</a>.
<p>
Here is the call graph for this function:<p><center><img src="can__virtual_8c_36327c9e0ec6d284b346963a321e3c2b_cgraph.png" border="0" usemap="#can__virtual_8c_36327c9e0ec6d284b346963a321e3c2b_cgraph_map" alt=""></center>
<map name="can__virtual_8c_36327c9e0ec6d284b346963a321e3c2b_cgraph_map">
<area href="can__virtual_8c.html#d1dd3b302365b1f2bd0ce49f3db780d8" shape="rect" coords="160,5,259,32" alt="">
</map>
</div>
</div><p>
<a class="anchor" name="d1dd3b302365b1f2bd0ce49f3db780d8"></a><!-- doxytag: member="can_virtual.c::print_message" ref="d1dd3b302365b1f2bd0ce49f3db780d8" args="(Message *m)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void print_message </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structMessage.html">Message</a> * </td>
<td class="paramname"> <em>m</em> </td>
<td> ) </td>
<td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
<p>
Definition at line <a class="el" href="can__virtual_8c-source.html#l00053">53</a> of file <a class="el" href="can__virtual_8c-source.html">can_virtual.c</a>.
<p>
References <a class="el" href="can_8h-source.html#l00042">Message::cob_id</a>, <a class="el" href="can_8h-source.html#l00046">Message::data</a>, <a class="el" href="can_8h-source.html#l00045">Message::len</a>, <a class="el" href="can__virtual_8c-source.html#l00052">MyCase</a>, <a class="el" href="def_8h-source.html#l00084">NMT</a>, <a class="el" href="def_8h-source.html#l00097">NODE_GUARD</a>, <a class="el" href="def_8h-source.html#l00088">PDO1rx</a>, <a class="el" href="def_8h-source.html#l00087">PDO1tx</a>, <a class="el" href="def_8h-source.html#l00090">PDO2rx</a>, <a class="el" href="def_8h-source.html#l00089">PDO2tx</a>, <a class="el" href="def_8h-source.html#l00092">PDO3rx</a>, <a class="el" href="def_8h-source.html#l00091">PDO3tx</a>, <a class="el" href="def_8h-source.html#l00094">PDO4rx</a>, <a class="el" href="def_8h-source.html#l00093">PDO4tx</a>, <a class="el" href="can_8h-source.html#l00043">Message::rtr</a>, <a class="el" href="def_8h-source.html#l00096">SDOrx</a>, <a class="el" href="def_8h-source.html#l00095">SDOtx</a>, <a class="el" href="def_8h-source.html#l00085">SYNC</a>, <a class="el" href="def_8h-source.html#l00086">TIME_STAMP</a>, and <a class="el" href="can_8h-source.html#l00036">SHORT_CAN::w</a>.
<p>
Referenced by <a class="el" href="can__virtual_8c-source.html#l00081">canSend_driver()</a>.
</div>
</div><p>
<hr><h2>Variable Documentation</h2>
<a class="anchor" name="a13bbe9d129fed0a2f43085698c79e3e"></a><!-- doxytag: member="can_virtual.c::canpipes" ref="a13bbe9d129fed0a2f43085698c79e3e" args="[MAX_NB_CAN_PIPES]" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structCANPipe.html">CANPipe</a> <a class="el" href="can__virtual_8c.html#a13bbe9d129fed0a2f43085698c79e3e">canpipes</a>[MAX_NB_CAN_PIPES] = {{0,},{0,},{0,},{0,},{0,},{0,},{0,},{0,},{0,},{0,},{0,},{0,},{0,},{0,},{0,},{0,},} </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
<p>
Definition at line <a class="el" href="can__virtual_8c-source.html#l00040">40</a> of file <a class="el" href="can__virtual_8c-source.html">can_virtual.c</a>.
<p>
Referenced by <a class="el" href="can__virtual_8c-source.html#l00121">canOpen_driver()</a>, and <a class="el" href="can__virtual_8c-source.html#l00081">canSend_driver()</a>.
</div>
</div><p>
<hr size="1"><address style="align: right;"><small>Generated on Mon Jul 2 19:10:17 2007 for CanFestival by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.1 </small></address>
</body>
</html>