gnuk/ChibiOS_2.0.8/docs/html/group___c_a_n.html

720 lines
51 KiB
HTML
Raw Normal View History

2010-08-10 03:11:02 +00:00
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>ChibiOS/RT: CAN Driver</title>
<link href="custom.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<table style="text-align: center; width: 100%;" border="0"
cellpadding="2" cellspacing="2">
<tbody>
<tr>
<td style="width: 80px;"><img alt="ChibiOS/RT Logo" src="logo_small.png"></td>
<td><big><big>ChibiOS/RT</big></big><br><br>Architecture - Reference Manual - Guides</td>
<td style="width: 80px;"></td>
</tr>
</tbody>
</table>
<hr size="1">
2010-11-22 05:53:37 +00:00
<!-- Generated by Doxygen 1.7.1 -->
2010-08-10 03:11:02 +00:00
<div class="navigation" id="top">
<div class="tabs">
2010-11-22 05:53:37 +00:00
<ul class="tablist">
2010-08-10 03:11:02 +00:00
<li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
</div>
2010-11-22 05:53:37 +00:00
<div class="header">
<div class="summary">
<a href="#groups">Modules</a> &#124;
<a href="#define-members">Defines</a> &#124;
<a href="#enum-members">Enumerations</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
2010-08-10 03:11:02 +00:00
<h1>CAN Driver<br/>
<small>
[<a class="el" href="group___i_o.html">HAL</a>]</small>
2010-11-22 05:53:37 +00:00
</h1> </div>
</div>
<div class="contents">
2010-08-10 03:11:02 +00:00
<p>Generic CAN Driver.
<a href="#_details">More...</a></p>
<p><div class="dynheader">
Collaboration diagram for CAN Driver:</div>
2010-11-22 05:53:37 +00:00
<div class="dyncontent">
<center><table><tr><td><img src="group___c_a_n.png" border="0" alt="" usemap="#group______c__a__n"/>
<map name="group______c__a__n" id="group______c__a__n">
<area shape="rect" id="node3" href="group___c_a_n___l_l_d.html" title="CAN Driver low level driver template." alt="" coords="221,5,352,32"/> <area shape="rect" id="node2" href="group___i_o.html" title="Hardware Abstraction Layer." alt="" coords="5,5,48,32"/> </map>
</td></tr></table></center>
2010-08-10 03:11:02 +00:00
</div>
</p>
<hr/><a name="_details"></a><h2>Description</h2>
<p>Generic CAN Driver. </p>
<p>This module implements a generic ADC driver. The driver implements a state machine internally: </p>
<div align="center">
<img src="inline_dotgraph_17.dot.png" alt="inline_dotgraph_17.dot" border="0" usemap="#inline_dotgraph_17.dot.map">
<map name="inline_dotgraph_17.dot.map" id="inline_dotgraph_17.dot.map"></map>
</div>
2010-11-22 05:53:37 +00:00
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="groups"></a>
Modules</h2></td></tr>
2010-08-10 03:11:02 +00:00
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_a_n___l_l_d.html">CAN Low Level Driver</a></td></tr>
<p><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p><a class="el" href="group___c_a_n.html">CAN Driver</a> low level driver template. </p>
<br/></td></tr>
</p>
2010-11-22 05:53:37 +00:00
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
2010-08-10 03:11:02 +00:00
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_a_n.html#ga9e84b4cbbb9eb88519aa922ae9c33f09">CAN_LIMIT_WARNING</a>&nbsp;&nbsp;&nbsp;1</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Errors rate warning. <a href="#ga9e84b4cbbb9eb88519aa922ae9c33f09"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_a_n.html#ga50706597b6872fbf90222fede47d1f54">CAN_LIMIT_ERROR</a>&nbsp;&nbsp;&nbsp;2</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Errors rate error. <a href="#ga50706597b6872fbf90222fede47d1f54"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_a_n.html#gaaa317e7894d81461722dfeb4aa2c14dd">CAN_BUS_OFF_ERROR</a>&nbsp;&nbsp;&nbsp;4</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Bus off condition reached. <a href="#gaaa317e7894d81461722dfeb4aa2c14dd"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_a_n.html#ga76f084f2cf0c2088ed0d8948e6075709">CAN_FRAMING_ERROR</a>&nbsp;&nbsp;&nbsp;8</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Framing error of some kind on the CAN bus. <a href="#ga76f084f2cf0c2088ed0d8948e6075709"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_a_n.html#ga8da95bff65bea0790d564841895c42d0">CAN_OVERFLOW_ERROR</a>&nbsp;&nbsp;&nbsp;16</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Overflow in receive queue. <a href="#ga8da95bff65bea0790d564841895c42d0"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_a_n.html#ga5294d9d12e4186c781df3b2f1d8bd80b">CAN_USE_SLEEP_MODE</a>&nbsp;&nbsp;&nbsp;TRUE</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sleep mode related APIs inclusion switch. <a href="#ga5294d9d12e4186c781df3b2f1d8bd80b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_a_n.html#ga41491eed34c87bf9b8f225a007266e58">canAddFlagsI</a>(canp, mask)&nbsp;&nbsp;&nbsp;((canp)-&gt;cd_status |= (mask))</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Adds some flags to the CAN status mask. <a href="#ga41491eed34c87bf9b8f225a007266e58"></a><br/></td></tr>
2010-11-22 05:53:37 +00:00
<tr><td colspan="2"><h2><a name="enum-members"></a>
Enumerations</h2></td></tr>
2010-08-10 03:11:02 +00:00
<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_a_n.html#gaca62464ffdcedae03d49adf3f6ce870e">canstate_t</a> { <br/>
&nbsp;&nbsp;<a class="el" href="group___c_a_n.html#ggaca62464ffdcedae03d49adf3f6ce870ea91fe9adee6b7f27be97e8b59439774cc">CAN_UNINIT</a> = 0,
<a class="el" href="group___c_a_n.html#ggaca62464ffdcedae03d49adf3f6ce870ea6ed84a3a97073b3e04918a90d90dd11e">CAN_STOP</a> = 1,
<a class="el" href="group___c_a_n.html#ggaca62464ffdcedae03d49adf3f6ce870eaf10eb7d86ea8728c90d931f34a432394">CAN_STARTING</a> = 2,
<a class="el" href="group___c_a_n.html#ggaca62464ffdcedae03d49adf3f6ce870eaf6cc9dbdefe635c9db9dca135cc94610">CAN_READY</a> = 3,
<br/>
&nbsp;&nbsp;<a class="el" href="group___c_a_n.html#ggaca62464ffdcedae03d49adf3f6ce870ea7b6ee207a3d1bfec35374f0d3964e6aa">CAN_SLEEP</a> = 4
<br/>
}</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>Driver state machine possible states. </p>
<a href="group___c_a_n.html#gaca62464ffdcedae03d49adf3f6ce870e">More...</a><br/></td></tr>
2010-11-22 05:53:37 +00:00
<tr><td colspan="2"><h2><a name="func-members"></a>
Functions</h2></td></tr>
2010-08-10 03:11:02 +00:00
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_a_n.html#ga2d3efc34f7704ab23c293aac2be47764">canInit</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">CAN Driver initialization. <a href="#ga2d3efc34f7704ab23c293aac2be47764"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_a_n.html#gadf8c892ca4bd2544d03be8a690885aef">canObjectInit</a> (<a class="el" href="struct_c_a_n_driver.html">CANDriver</a> *canp)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initializes the standard part of a <code><a class="el" href="struct_c_a_n_driver.html" title="Structure representing an CAN driver.">CANDriver</a></code> structure. <a href="#gadf8c892ca4bd2544d03be8a690885aef"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_a_n.html#ga05d2448864b2cae4674ed7e6f3c576b8">canStart</a> (<a class="el" href="struct_c_a_n_driver.html">CANDriver</a> *canp, const <a class="el" href="struct_c_a_n_config.html">CANConfig</a> *config)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Configures and activates the CAN peripheral. <a href="#ga05d2448864b2cae4674ed7e6f3c576b8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_a_n.html#ga4e89a7d246119e077d27431a02586133">canStop</a> (<a class="el" href="struct_c_a_n_driver.html">CANDriver</a> *canp)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Deactivates the CAN peripheral. <a href="#ga4e89a7d246119e077d27431a02586133"></a><br/></td></tr>
2010-11-22 05:53:37 +00:00
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__types.html#ga35bcb0c321cd7bc45bf1a11fa17ebdd3">msg_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_a_n.html#gad9c686d19b4319ef586af3631b779c6c">canTransmit</a> (<a class="el" href="struct_c_a_n_driver.html">CANDriver</a> *canp, const <a class="el" href="struct_c_a_n_tx_frame.html">CANTxFrame</a> *ctfp, <a class="el" href="group__types.html#gae3e32a98d431a02106616da3071832dd">systime_t</a> timeout)</td></tr>
2010-08-10 03:11:02 +00:00
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Can frame transmission. <a href="#gad9c686d19b4319ef586af3631b779c6c"></a><br/></td></tr>
2010-11-22 05:53:37 +00:00
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__types.html#ga35bcb0c321cd7bc45bf1a11fa17ebdd3">msg_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_a_n.html#ga557d845167f6ab4f224b036860411db5">canReceive</a> (<a class="el" href="struct_c_a_n_driver.html">CANDriver</a> *canp, <a class="el" href="struct_c_a_n_rx_frame.html">CANRxFrame</a> *crfp, <a class="el" href="group__types.html#gae3e32a98d431a02106616da3071832dd">systime_t</a> timeout)</td></tr>
2010-08-10 03:11:02 +00:00
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Can frame receive. <a href="#ga557d845167f6ab4f224b036860411db5"></a><br/></td></tr>
2010-11-22 05:53:37 +00:00
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___c_a_n___l_l_d.html#ga4a6894bc11434dfa96263dcd72735330">canstatus_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_a_n.html#ga377a78b04ad6733e24b31615b76cdada">canGetAndClearFlags</a> (<a class="el" href="struct_c_a_n_driver.html">CANDriver</a> *canp)</td></tr>
2010-08-10 03:11:02 +00:00
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the current status mask and clears it. <a href="#ga377a78b04ad6733e24b31615b76cdada"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_a_n.html#ga97caf4f277c09588c225ea2328a74cba">canSleep</a> (<a class="el" href="struct_c_a_n_driver.html">CANDriver</a> *canp)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enters the sleep mode. <a href="#ga97caf4f277c09588c225ea2328a74cba"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_a_n.html#ga09737d4ae5be724bf791a309e8a28dff">canWakeup</a> (<a class="el" href="struct_c_a_n_driver.html">CANDriver</a> *canp)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enforces leaving the sleep mode. <a href="#ga09737d4ae5be724bf791a309e8a28dff"></a><br/></td></tr>
</table>
<hr/><h2>Define Documentation</h2>
<a class="anchor" id="ga9e84b4cbbb9eb88519aa922ae9c33f09"></a><!-- doxytag: member="can.h::CAN_LIMIT_WARNING" ref="ga9e84b4cbbb9eb88519aa922ae9c33f09" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CAN_LIMIT_WARNING&nbsp;&nbsp;&nbsp;1</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Errors rate warning. </p>
<p>Definition at line <a class="el" href="can_8h_source.html#l00047">47</a> of file <a class="el" href="can_8h_source.html">can.h</a>.</p>
</div>
</div>
<a class="anchor" id="ga50706597b6872fbf90222fede47d1f54"></a><!-- doxytag: member="can.h::CAN_LIMIT_ERROR" ref="ga50706597b6872fbf90222fede47d1f54" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CAN_LIMIT_ERROR&nbsp;&nbsp;&nbsp;2</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Errors rate error. </p>
<p>Definition at line <a class="el" href="can_8h_source.html#l00051">51</a> of file <a class="el" href="can_8h_source.html">can.h</a>.</p>
</div>
</div>
<a class="anchor" id="gaaa317e7894d81461722dfeb4aa2c14dd"></a><!-- doxytag: member="can.h::CAN_BUS_OFF_ERROR" ref="gaaa317e7894d81461722dfeb4aa2c14dd" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CAN_BUS_OFF_ERROR&nbsp;&nbsp;&nbsp;4</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Bus off condition reached. </p>
<p>Definition at line <a class="el" href="can_8h_source.html#l00055">55</a> of file <a class="el" href="can_8h_source.html">can.h</a>.</p>
</div>
</div>
<a class="anchor" id="ga76f084f2cf0c2088ed0d8948e6075709"></a><!-- doxytag: member="can.h::CAN_FRAMING_ERROR" ref="ga76f084f2cf0c2088ed0d8948e6075709" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CAN_FRAMING_ERROR&nbsp;&nbsp;&nbsp;8</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Framing error of some kind on the CAN bus. </p>
<p>Definition at line <a class="el" href="can_8h_source.html#l00059">59</a> of file <a class="el" href="can_8h_source.html">can.h</a>.</p>
</div>
</div>
<a class="anchor" id="ga8da95bff65bea0790d564841895c42d0"></a><!-- doxytag: member="can.h::CAN_OVERFLOW_ERROR" ref="ga8da95bff65bea0790d564841895c42d0" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CAN_OVERFLOW_ERROR&nbsp;&nbsp;&nbsp;16</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Overflow in receive queue. </p>
<p>Definition at line <a class="el" href="can_8h_source.html#l00063">63</a> of file <a class="el" href="can_8h_source.html">can.h</a>.</p>
</div>
</div>
<a class="anchor" id="ga5294d9d12e4186c781df3b2f1d8bd80b"></a><!-- doxytag: member="can.h::CAN_USE_SLEEP_MODE" ref="ga5294d9d12e4186c781df3b2f1d8bd80b" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CAN_USE_SLEEP_MODE&nbsp;&nbsp;&nbsp;TRUE</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Sleep mode related APIs inclusion switch. </p>
2010-11-22 05:53:37 +00:00
<p>Definition at line <a class="el" href="can_8h_source.html#l00073">73</a> of file <a class="el" href="can_8h_source.html">can.h</a>.</p>
2010-08-10 03:11:02 +00:00
</div>
</div>
<a class="anchor" id="ga41491eed34c87bf9b8f225a007266e58"></a><!-- doxytag: member="can.h::canAddFlagsI" ref="ga41491eed34c87bf9b8f225a007266e58" args="(canp, mask)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define canAddFlagsI</td>
<td>(</td>
2010-11-22 05:53:37 +00:00
<td class="paramtype">&nbsp;</td>
<td class="paramname">canp, </td>
2010-08-10 03:11:02 +00:00
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
2010-11-22 05:53:37 +00:00
<td class="paramtype">&nbsp;</td>
<td class="paramname">mask</td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td>&nbsp;&nbsp;&nbsp;((canp)-&gt;cd_status |= (mask))</td>
2010-08-10 03:11:02 +00:00
</tr>
</table>
</div>
<div class="memdoc">
<p>Adds some flags to the CAN status mask. </p>
<dl><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>canp</em>&nbsp;</td><td>pointer to the <code><a class="el" href="struct_c_a_n_driver.html" title="Structure representing an CAN driver.">CANDriver</a></code> object </td></tr>
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>mask</em>&nbsp;</td><td>flags to be added to the status mask </td></tr>
</table>
</dd>
</dl>
2010-11-22 05:53:37 +00:00
<p>Definition at line <a class="el" href="can_8h_source.html#l00111">111</a> of file <a class="el" href="can_8h_source.html">can.h</a>.</p>
2010-08-10 03:11:02 +00:00
</div>
</div>
<hr/><h2>Enumeration Type Documentation</h2>
<a class="anchor" id="gaca62464ffdcedae03d49adf3f6ce870e"></a><!-- doxytag: member="can.h::canstate_t" ref="gaca62464ffdcedae03d49adf3f6ce870e" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group___c_a_n.html#gaca62464ffdcedae03d49adf3f6ce870e">canstate_t</a></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Driver state machine possible states. </p>
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" id="ggaca62464ffdcedae03d49adf3f6ce870ea91fe9adee6b7f27be97e8b59439774cc"></a><!-- doxytag: member="CAN_UNINIT" ref="ggaca62464ffdcedae03d49adf3f6ce870ea91fe9adee6b7f27be97e8b59439774cc" args="" -->CAN_UNINIT</em>&nbsp;</td><td>
<p>Not initialized. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaca62464ffdcedae03d49adf3f6ce870ea6ed84a3a97073b3e04918a90d90dd11e"></a><!-- doxytag: member="CAN_STOP" ref="ggaca62464ffdcedae03d49adf3f6ce870ea6ed84a3a97073b3e04918a90d90dd11e" args="" -->CAN_STOP</em>&nbsp;</td><td>
<p>Stopped. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaca62464ffdcedae03d49adf3f6ce870eaf10eb7d86ea8728c90d931f34a432394"></a><!-- doxytag: member="CAN_STARTING" ref="ggaca62464ffdcedae03d49adf3f6ce870eaf10eb7d86ea8728c90d931f34a432394" args="" -->CAN_STARTING</em>&nbsp;</td><td>
<p>Starting. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaca62464ffdcedae03d49adf3f6ce870eaf6cc9dbdefe635c9db9dca135cc94610"></a><!-- doxytag: member="CAN_READY" ref="ggaca62464ffdcedae03d49adf3f6ce870eaf6cc9dbdefe635c9db9dca135cc94610" args="" -->CAN_READY</em>&nbsp;</td><td>
<p>Ready. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaca62464ffdcedae03d49adf3f6ce870ea7b6ee207a3d1bfec35374f0d3964e6aa"></a><!-- doxytag: member="CAN_SLEEP" ref="ggaca62464ffdcedae03d49adf3f6ce870ea7b6ee207a3d1bfec35374f0d3964e6aa" args="" -->CAN_SLEEP</em>&nbsp;</td><td>
<p>Sleep state. </p>
</td></tr>
</table>
</dd>
</dl>
2010-11-22 05:53:37 +00:00
<p>Definition at line <a class="el" href="can_8h_source.html#l00091">91</a> of file <a class="el" href="can_8h_source.html">can.h</a>.</p>
2010-08-10 03:11:02 +00:00
</div>
</div>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="ga2d3efc34f7704ab23c293aac2be47764"></a><!-- doxytag: member="can.h::canInit" ref="ga2d3efc34f7704ab23c293aac2be47764" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void canInit </td>
<td>(</td>
<td class="paramtype">void&nbsp;</td>
<td class="paramname"></td>
<td>&nbsp;)&nbsp;</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>CAN Driver initialization. </p>
<p>Definition at line <a class="el" href="can_8c_source.html#l00059">59</a> of file <a class="el" href="can_8c_source.html">can.c</a>.</p>
<p>References <a class="el" href="group___c_a_n___l_l_d.html#gaa215539c505ce7099f30c0aace00bf25">can_lld_init()</a>.</p>
<p>Referenced by <a class="el" href="group___h_a_l.html#gafd89c1650df524d95aef39b8bc38170d">halInit()</a>.</p>
<p><div class="dynheader">
Here is the call graph for this function:</div>
2010-11-22 05:53:37 +00:00
<div class="dyncontent">
<div class="center"><img src="group___c_a_n_ga2d3efc34f7704ab23c293aac2be47764_cgraph.png" border="0" usemap="#group___c_a_n_ga2d3efc34f7704ab23c293aac2be47764_cgraph" alt=""/></div>
<map name="group___c_a_n_ga2d3efc34f7704ab23c293aac2be47764_cgraph" id="group___c_a_n_ga2d3efc34f7704ab23c293aac2be47764_cgraph">
<area shape="rect" id="node3" href="group___c_a_n___l_l_d.html#gaa215539c505ce7099f30c0aace00bf25" title="Low level CAN driver initialization." alt="" coords="107,5,181,32"/> </map>
2010-08-10 03:11:02 +00:00
</div>
</p>
</div>
</div>
<a class="anchor" id="gadf8c892ca4bd2544d03be8a690885aef"></a><!-- doxytag: member="can.h::canObjectInit" ref="gadf8c892ca4bd2544d03be8a690885aef" args="(CANDriver *canp)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void canObjectInit </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_c_a_n_driver.html">CANDriver</a> *&nbsp;</td>
<td class="paramname"> <em>canp</em></td>
<td>&nbsp;)&nbsp;</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Initializes the standard part of a <code><a class="el" href="struct_c_a_n_driver.html" title="Structure representing an CAN driver.">CANDriver</a></code> structure. </p>
<dl><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>canp</em>&nbsp;</td><td>pointer to the <code><a class="el" href="struct_c_a_n_driver.html" title="Structure representing an CAN driver.">CANDriver</a></code> object </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="can_8c_source.html#l00069">69</a> of file <a class="el" href="can_8c_source.html">can.c</a>.</p>
2010-11-22 05:53:37 +00:00
<p>References <a class="el" href="struct_c_a_n_driver.html#a06a64e755c1b87bf9f8156d7d19a4e41">CANDriver::cd_config</a>, <a class="el" href="struct_c_a_n_driver.html#aa4bc47b7806c2414382071f31b0cef89">CANDriver::cd_error_event</a>, <a class="el" href="struct_c_a_n_driver.html#af26143d0b9fed9421e79fa4fcb7f3d4b">CANDriver::cd_rxfull_event</a>, <a class="el" href="struct_c_a_n_driver.html#aae5656b95d7632b579d098e95c3c77d4">CANDriver::cd_rxsem</a>, <a class="el" href="struct_c_a_n_driver.html#a424d4fd0c061b0237803c03c5815b450">CANDriver::cd_sleep_event</a>, <a class="el" href="struct_c_a_n_driver.html#a5ed8f92d00941a212ad798e05c001dcb">CANDriver::cd_state</a>, <a class="el" href="struct_c_a_n_driver.html#a149df5bb5907beae27b8623d432cb20a">CANDriver::cd_status</a>, <a class="el" href="struct_c_a_n_driver.html#a39538106afd16adf6e1b2640458f5fa2">CANDriver::cd_txempty_event</a>, <a class="el" href="struct_c_a_n_driver.html#a2d4f41efdd17ff64233fd636873601c7">CANDriver::cd_txsem</a>, <a class="el" href="struct_c_a_n_driver.html#ab860f0342e594220bd9428bed397614e">CANDriver::cd_wakeup_event</a>, <a class="el" href="group__events.html#gab8d0fdc09be629dfb438c32a0523db42">chEvtInit</a>, and <a class="el" href="group__semaphores.html#gafe8fc6155a871074e8017efd908b2c58">chSemInit()</a>.</p>
2010-08-10 03:11:02 +00:00
<p><div class="dynheader">
Here is the call graph for this function:</div>
2010-11-22 05:53:37 +00:00
<div class="dyncontent">
<div class="center"><img src="group___c_a_n_gadf8c892ca4bd2544d03be8a690885aef_cgraph.png" border="0" usemap="#group___c_a_n_gadf8c892ca4bd2544d03be8a690885aef_cgraph" alt=""/></div>
<map name="group___c_a_n_gadf8c892ca4bd2544d03be8a690885aef_cgraph" id="group___c_a_n_gadf8c892ca4bd2544d03be8a690885aef_cgraph">
<area shape="rect" id="node3" href="group__semaphores.html#gafe8fc6155a871074e8017efd908b2c58" title="Initializes a semaphore with the specified counter value." alt="" coords="140,5,207,32"/> </map>
2010-08-10 03:11:02 +00:00
</div>
</p>
</div>
</div>
<a class="anchor" id="ga05d2448864b2cae4674ed7e6f3c576b8"></a><!-- doxytag: member="can.h::canStart" ref="ga05d2448864b2cae4674ed7e6f3c576b8" args="(CANDriver *canp, const CANConfig *config)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void canStart </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_c_a_n_driver.html">CANDriver</a> *&nbsp;</td>
<td class="paramname"> <em>canp</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="struct_c_a_n_config.html">CANConfig</a> *&nbsp;</td>
<td class="paramname"> <em>config</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Configures and activates the CAN peripheral. </p>
<dl><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>canp</em>&nbsp;</td><td>pointer to the <code><a class="el" href="struct_c_a_n_driver.html" title="Structure representing an CAN driver.">CANDriver</a></code> object </td></tr>
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>config</em>&nbsp;</td><td>pointer to the <code><a class="el" href="struct_c_a_n_config.html" title="Driver configuration structure.">CANConfig</a></code> object </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="can_8c_source.html#l00091">91</a> of file <a class="el" href="can_8c_source.html">can.c</a>.</p>
<p>References <a class="el" href="group___c_a_n___l_l_d.html#gafae65e8b034b2c1cda8d46790eb2c3fb">can_lld_start()</a>, <a class="el" href="group___c_a_n.html#ggaca62464ffdcedae03d49adf3f6ce870eaf6cc9dbdefe635c9db9dca135cc94610">CAN_READY</a>, <a class="el" href="group___c_a_n.html#ggaca62464ffdcedae03d49adf3f6ce870eaf10eb7d86ea8728c90d931f34a432394">CAN_STARTING</a>, <a class="el" href="group___c_a_n.html#ggaca62464ffdcedae03d49adf3f6ce870ea6ed84a3a97073b3e04918a90d90dd11e">CAN_STOP</a>, <a class="el" href="struct_c_a_n_driver.html#a06a64e755c1b87bf9f8156d7d19a4e41">CANDriver::cd_config</a>, <a class="el" href="struct_c_a_n_driver.html#a5ed8f92d00941a212ad798e05c001dcb">CANDriver::cd_state</a>, <a class="el" href="group__debug.html#ga43d50c69eb730d0f024eb832d61f30c9">chDbgAssert</a>, <a class="el" href="group__debug.html#ga6bb6c0f97caab3a66332c8bfbf7a3844">chDbgCheck</a>, <a class="el" href="group__system.html#ga9f6573c0763d1e4e97c63c62edad6e42">chSysLock</a>, <a class="el" href="group__system.html#ga5a257fa58a09815eb64a45e2dfbdc22e">chSysUnlock</a>, and <a class="el" href="group__threads.html#ga851dc0c4ac72885bf09feebdef4673ac">chThdSleepS</a>.</p>
<p><div class="dynheader">
Here is the call graph for this function:</div>
2010-11-22 05:53:37 +00:00
<div class="dyncontent">
<div class="center"><img src="group___c_a_n_ga05d2448864b2cae4674ed7e6f3c576b8_cgraph.png" border="0" usemap="#group___c_a_n_ga05d2448864b2cae4674ed7e6f3c576b8_cgraph" alt=""/></div>
<map name="group___c_a_n_ga05d2448864b2cae4674ed7e6f3c576b8_cgraph" id="group___c_a_n_ga05d2448864b2cae4674ed7e6f3c576b8_cgraph">
<area shape="rect" id="node3" href="group___c_a_n___l_l_d.html#gafae65e8b034b2c1cda8d46790eb2c3fb" title="Configures and activates the CAN peripheral." alt="" coords="119,5,201,32"/> </map>
2010-08-10 03:11:02 +00:00
</div>
</p>
</div>
</div>
<a class="anchor" id="ga4e89a7d246119e077d27431a02586133"></a><!-- doxytag: member="can.h::canStop" ref="ga4e89a7d246119e077d27431a02586133" args="(CANDriver *canp)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void canStop </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_c_a_n_driver.html">CANDriver</a> *&nbsp;</td>
<td class="paramname"> <em>canp</em></td>
<td>&nbsp;)&nbsp;</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Deactivates the CAN peripheral. </p>
<dl><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>canp</em>&nbsp;</td><td>pointer to the <code><a class="el" href="struct_c_a_n_driver.html" title="Structure representing an CAN driver.">CANDriver</a></code> object </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="can_8c_source.html#l00116">116</a> of file <a class="el" href="can_8c_source.html">can.c</a>.</p>
<p>References <a class="el" href="group___c_a_n___l_l_d.html#gad6fff809711eb161f9c53acf4f3f8470">can_lld_stop()</a>, <a class="el" href="group___c_a_n.html#ggaca62464ffdcedae03d49adf3f6ce870eaf6cc9dbdefe635c9db9dca135cc94610">CAN_READY</a>, <a class="el" href="group___c_a_n.html#ggaca62464ffdcedae03d49adf3f6ce870ea6ed84a3a97073b3e04918a90d90dd11e">CAN_STOP</a>, <a class="el" href="struct_c_a_n_driver.html#aae5656b95d7632b579d098e95c3c77d4">CANDriver::cd_rxsem</a>, <a class="el" href="struct_c_a_n_driver.html#a5ed8f92d00941a212ad798e05c001dcb">CANDriver::cd_state</a>, <a class="el" href="struct_c_a_n_driver.html#a149df5bb5907beae27b8623d432cb20a">CANDriver::cd_status</a>, <a class="el" href="struct_c_a_n_driver.html#a2d4f41efdd17ff64233fd636873601c7">CANDriver::cd_txsem</a>, <a class="el" href="group__debug.html#ga43d50c69eb730d0f024eb832d61f30c9">chDbgAssert</a>, <a class="el" href="group__debug.html#ga6bb6c0f97caab3a66332c8bfbf7a3844">chDbgCheck</a>, <a class="el" href="group__scheduler.html#ga4e38b4bee3d2330f6a0f1cdb7660af20">chSchRescheduleS()</a>, <a class="el" href="group__semaphores.html#gae7972b6b22b80ac09bac5a186277ab81">chSemResetI()</a>, <a class="el" href="group__system.html#ga9f6573c0763d1e4e97c63c62edad6e42">chSysLock</a>, and <a class="el" href="group__system.html#ga5a257fa58a09815eb64a45e2dfbdc22e">chSysUnlock</a>.</p>
<p><div class="dynheader">
Here is the call graph for this function:</div>
2010-11-22 05:53:37 +00:00
<div class="dyncontent">
<div class="center"><img src="group___c_a_n_ga4e89a7d246119e077d27431a02586133_cgraph.png" border="0" usemap="#group___c_a_n_ga4e89a7d246119e077d27431a02586133_cgraph" alt=""/></div>
<map name="group___c_a_n_ga4e89a7d246119e077d27431a02586133_cgraph" id="group___c_a_n_ga4e89a7d246119e077d27431a02586133_cgraph">
<area shape="rect" id="node3" href="group___c_a_n___l_l_d.html#gad6fff809711eb161f9c53acf4f3f8470" title="Deactivates the CAN peripheral." alt="" coords="135,5,217,32"/> <area shape="rect" id="node5" href="group__scheduler.html#ga4e38b4bee3d2330f6a0f1cdb7660af20" title="Performs a reschedule if a higher priority thread is runnable." alt="" coords="117,56,235,83"/> <area shape="rect" id="node11" href="group__semaphores.html#gae7972b6b22b80ac09bac5a186277ab81" title="Performs a reset operation on the semaphore." alt="" coords="133,107,219,133"/> <area shape="rect" id="node7" href="group__scheduler.html#ga0257cf203e72a766a52059750cb97e6e" title="Switches to the first thread on the runnable queue." alt="" coords="283,56,408,83"/> <area shape="rect" id="node9" href="group__scheduler.html#ga535d58cfb3436c8d4e4586c31c062298" title="Inserts a thread in the Ready List." alt="" coords="457,81,543,108"/> <area shape="rect" id="node14" href="group__internals.html#gacacfe77140cab62948e63d898bf4dfba" title="Removes the last&#45;out Thread from a queue and returns it." alt="" coords="307,157,384,184"/> </map>
2010-08-10 03:11:02 +00:00
</div>
</p>
</div>
</div>
<a class="anchor" id="gad9c686d19b4319ef586af3631b779c6c"></a><!-- doxytag: member="can.h::canTransmit" ref="gad9c686d19b4319ef586af3631b779c6c" args="(CANDriver *canp, const CANTxFrame *ctfp, systime_t timeout)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
2010-11-22 05:53:37 +00:00
<td class="memname"><a class="el" href="group__types.html#ga35bcb0c321cd7bc45bf1a11fa17ebdd3">msg_t</a> canTransmit </td>
2010-08-10 03:11:02 +00:00
<td>(</td>
<td class="paramtype"><a class="el" href="struct_c_a_n_driver.html">CANDriver</a> *&nbsp;</td>
<td class="paramname"> <em>canp</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="struct_c_a_n_tx_frame.html">CANTxFrame</a> *&nbsp;</td>
<td class="paramname"> <em>ctfp</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
2010-11-22 05:53:37 +00:00
<td class="paramtype"><a class="el" href="group__types.html#gae3e32a98d431a02106616da3071832dd">systime_t</a>&nbsp;</td>
2010-08-10 03:11:02 +00:00
<td class="paramname"> <em>timeout</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Can frame transmission. </p>
<p>The specified frame is queued for transmission, if the hardware queue is full then the invoking thread is queued. </p>
<dl class="note"><dt><b>Note:</b></dt><dd>Trying to transmit while in sleep mode simply enqueues the thread.</dd></dl>
<dl><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>canp</em>&nbsp;</td><td>pointer to the <code><a class="el" href="struct_c_a_n_driver.html" title="Structure representing an CAN driver.">CANDriver</a></code> object </td></tr>
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>ctfp</em>&nbsp;</td><td>pointer to the CAN frame to be transmitted </td></tr>
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>timeout</em>&nbsp;</td><td>the number of ticks before the operation timeouts, the following special values are allowed:</p>
<ul>
<li><em>TIME_IMMEDIATE</em> immediate timeout.</li>
<li><em>TIME_INFINITE</em> no timeout.</li>
</ul>
</td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>The operation result. </dd></dl>
<dl><dt><b>Return values:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>RDY_OK</em>&nbsp;</td><td>the frame has been queued for transmission. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>RDY_TIMEOUT</em>&nbsp;</td><td>operation not finished within the specified time. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>RDY_RESET</em>&nbsp;</td><td>driver stopped while waiting. </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="can_8c_source.html#l00151">151</a> of file <a class="el" href="can_8c_source.html">can.c</a>.</p>
<p>References <a class="el" href="group___c_a_n___l_l_d.html#ga81f2cbcb7b885628bdf54177375b7f9b">can_lld_can_transmit()</a>, <a class="el" href="group___c_a_n___l_l_d.html#ga7117eccbe00b5524e55546a4aa688446">can_lld_transmit()</a>, <a class="el" href="group___c_a_n.html#ggaca62464ffdcedae03d49adf3f6ce870eaf6cc9dbdefe635c9db9dca135cc94610">CAN_READY</a>, <a class="el" href="group___c_a_n.html#ggaca62464ffdcedae03d49adf3f6ce870ea7b6ee207a3d1bfec35374f0d3964e6aa">CAN_SLEEP</a>, <a class="el" href="struct_c_a_n_driver.html#a5ed8f92d00941a212ad798e05c001dcb">CANDriver::cd_state</a>, <a class="el" href="struct_c_a_n_driver.html#a2d4f41efdd17ff64233fd636873601c7">CANDriver::cd_txsem</a>, <a class="el" href="group__debug.html#ga43d50c69eb730d0f024eb832d61f30c9">chDbgAssert</a>, <a class="el" href="group__debug.html#ga6bb6c0f97caab3a66332c8bfbf7a3844">chDbgCheck</a>, <a class="el" href="group__semaphores.html#ga924ec5d191bb8debe8727ae4dd5d6d03">chSemWaitTimeoutS()</a>, <a class="el" href="group__system.html#ga9f6573c0763d1e4e97c63c62edad6e42">chSysLock</a>, <a class="el" href="group__system.html#ga5a257fa58a09815eb64a45e2dfbdc22e">chSysUnlock</a>, and <a class="el" href="group__scheduler.html#gae1c86078318e11c2fa57ee3c2ec69f61">RDY_OK</a>.</p>
<p><div class="dynheader">
Here is the call graph for this function:</div>
2010-11-22 05:53:37 +00:00
<div class="dyncontent">
<div class="center"><img src="group___c_a_n_gad9c686d19b4319ef586af3631b779c6c_cgraph.png" border="0" usemap="#group___c_a_n_gad9c686d19b4319ef586af3631b779c6c_cgraph" alt=""/></div>
<map name="group___c_a_n_gad9c686d19b4319ef586af3631b779c6c_cgraph" id="group___c_a_n_gad9c686d19b4319ef586af3631b779c6c_cgraph">
<area shape="rect" id="node3" href="group___c_a_n___l_l_d.html#ga81f2cbcb7b885628bdf54177375b7f9b" title="Determines whether a frame can be transmitted." alt="" coords="137,5,260,32"/> <area shape="rect" id="node5" href="group___c_a_n___l_l_d.html#ga7117eccbe00b5524e55546a4aa688446" title="Inserts a frame into the transmit queue." alt="" coords="149,56,248,83"/> <area shape="rect" id="node7" href="group__semaphores.html#ga924ec5d191bb8debe8727ae4dd5d6d03" title="Performs a wait operation on a semaphore with timeout specification." alt="" coords="139,107,259,133"/> <area shape="rect" id="node9" href="group__scheduler.html#ga306e564f678c1a39139639490c77e78b" title="Puts the current thread to sleep into the specified state with timeout specification." alt="" coords="309,107,448,133"/> </map>
2010-08-10 03:11:02 +00:00
</div>
</p>
</div>
</div>
<a class="anchor" id="ga557d845167f6ab4f224b036860411db5"></a><!-- doxytag: member="can.h::canReceive" ref="ga557d845167f6ab4f224b036860411db5" args="(CANDriver *canp, CANRxFrame *crfp, systime_t timeout)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
2010-11-22 05:53:37 +00:00
<td class="memname"><a class="el" href="group__types.html#ga35bcb0c321cd7bc45bf1a11fa17ebdd3">msg_t</a> canReceive </td>
2010-08-10 03:11:02 +00:00
<td>(</td>
<td class="paramtype"><a class="el" href="struct_c_a_n_driver.html">CANDriver</a> *&nbsp;</td>
<td class="paramname"> <em>canp</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_c_a_n_rx_frame.html">CANRxFrame</a> *&nbsp;</td>
<td class="paramname"> <em>crfp</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
2010-11-22 05:53:37 +00:00
<td class="paramtype"><a class="el" href="group__types.html#gae3e32a98d431a02106616da3071832dd">systime_t</a>&nbsp;</td>
2010-08-10 03:11:02 +00:00
<td class="paramname"> <em>timeout</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Can frame receive. </p>
<p>The function waits until a frame is received. </p>
<dl class="note"><dt><b>Note:</b></dt><dd>Trying to receive while in sleep mode simply enqueues the thread.</dd></dl>
<dl><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>canp</em>&nbsp;</td><td>pointer to the <code><a class="el" href="struct_c_a_n_driver.html" title="Structure representing an CAN driver.">CANDriver</a></code> object </td></tr>
<tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>crfp</em>&nbsp;</td><td>pointer to the buffer where the CAN frame is copied </td></tr>
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>timeout</em>&nbsp;</td><td>the number of ticks before the operation timeouts, the following special values are allowed:</p>
<ul>
<li><em>TIME_IMMEDIATE</em> immediate timeout (useful in an event driven scenario where a thread never blocks for I/O).</li>
<li><em>TIME_INFINITE</em> no timeout.</li>
</ul>
</td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>The operation result. </dd></dl>
<dl><dt><b>Return values:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>RDY_OK</em>&nbsp;</td><td>a frame has been received and placed in the buffer. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>RDY_TIMEOUT</em>&nbsp;</td><td>operation not finished within the specified time or frame not immediately available if invoked using <code>TIME_IMMEDIATE</code>. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>RDY_RESET</em>&nbsp;</td><td>driver stopped while waiting. </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="can_8c_source.html#l00192">192</a> of file <a class="el" href="can_8c_source.html">can.c</a>.</p>
<p>References <a class="el" href="group___c_a_n___l_l_d.html#ga27ca2bb8369163a8be3ebd020522f7b0">can_lld_can_receive()</a>, <a class="el" href="group___c_a_n___l_l_d.html#ga5c9d83ee107cfb59880c4bd19a7961bd">can_lld_receive()</a>, <a class="el" href="group___c_a_n.html#ggaca62464ffdcedae03d49adf3f6ce870eaf6cc9dbdefe635c9db9dca135cc94610">CAN_READY</a>, <a class="el" href="group___c_a_n.html#ggaca62464ffdcedae03d49adf3f6ce870ea7b6ee207a3d1bfec35374f0d3964e6aa">CAN_SLEEP</a>, <a class="el" href="struct_c_a_n_driver.html#aae5656b95d7632b579d098e95c3c77d4">CANDriver::cd_rxsem</a>, <a class="el" href="struct_c_a_n_driver.html#a5ed8f92d00941a212ad798e05c001dcb">CANDriver::cd_state</a>, <a class="el" href="group__debug.html#ga43d50c69eb730d0f024eb832d61f30c9">chDbgAssert</a>, <a class="el" href="group__debug.html#ga6bb6c0f97caab3a66332c8bfbf7a3844">chDbgCheck</a>, <a class="el" href="group__semaphores.html#ga924ec5d191bb8debe8727ae4dd5d6d03">chSemWaitTimeoutS()</a>, <a class="el" href="group__system.html#ga9f6573c0763d1e4e97c63c62edad6e42">chSysLock</a>, <a class="el" href="group__system.html#ga5a257fa58a09815eb64a45e2dfbdc22e">chSysUnlock</a>, and <a class="el" href="group__scheduler.html#gae1c86078318e11c2fa57ee3c2ec69f61">RDY_OK</a>.</p>
<p><div class="dynheader">
Here is the call graph for this function:</div>
2010-11-22 05:53:37 +00:00
<div class="dyncontent">
<div class="center"><img src="group___c_a_n_ga557d845167f6ab4f224b036860411db5_cgraph.png" border="0" usemap="#group___c_a_n_ga557d845167f6ab4f224b036860411db5_cgraph" alt=""/></div>
<map name="group___c_a_n_ga557d845167f6ab4f224b036860411db5_cgraph" id="group___c_a_n_ga557d845167f6ab4f224b036860411db5_cgraph">
<area shape="rect" id="node3" href="group___c_a_n___l_l_d.html#ga27ca2bb8369163a8be3ebd020522f7b0" title="Determines whether a frame has been received." alt="" coords="133,5,256,32"/> <area shape="rect" id="node5" href="group___c_a_n___l_l_d.html#ga5c9d83ee107cfb59880c4bd19a7961bd" title="Receives a frame from the input queue." alt="" coords="145,56,244,83"/> <area shape="rect" id="node7" href="group__semaphores.html#ga924ec5d191bb8debe8727ae4dd5d6d03" title="Performs a wait operation on a semaphore with timeout specification." alt="" coords="135,107,255,133"/> <area shape="rect" id="node9" href="group__scheduler.html#ga306e564f678c1a39139639490c77e78b" title="Puts the current thread to sleep into the specified state with timeout specification." alt="" coords="304,107,443,133"/> </map>
2010-08-10 03:11:02 +00:00
</div>
</p>
</div>
</div>
<a class="anchor" id="ga377a78b04ad6733e24b31615b76cdada"></a><!-- doxytag: member="can.h::canGetAndClearFlags" ref="ga377a78b04ad6733e24b31615b76cdada" args="(CANDriver *canp)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
2010-11-22 05:53:37 +00:00
<td class="memname"><a class="el" href="group___c_a_n___l_l_d.html#ga4a6894bc11434dfa96263dcd72735330">canstatus_t</a> canGetAndClearFlags </td>
2010-08-10 03:11:02 +00:00
<td>(</td>
<td class="paramtype"><a class="el" href="struct_c_a_n_driver.html">CANDriver</a> *&nbsp;</td>
<td class="paramname"> <em>canp</em></td>
<td>&nbsp;)&nbsp;</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Returns the current status mask and clears it. </p>
<dl><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>canp</em>&nbsp;</td><td>pointer to the <code><a class="el" href="struct_c_a_n_driver.html" title="Structure representing an CAN driver.">CANDriver</a></code> object </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>The status flags mask. </dd></dl>
<p>Definition at line <a class="el" href="can_8c_source.html#l00218">218</a> of file <a class="el" href="can_8c_source.html">can.c</a>.</p>
<p>References <a class="el" href="struct_c_a_n_driver.html#a149df5bb5907beae27b8623d432cb20a">CANDriver::cd_status</a>, <a class="el" href="group__system.html#ga9f6573c0763d1e4e97c63c62edad6e42">chSysLock</a>, and <a class="el" href="group__system.html#ga5a257fa58a09815eb64a45e2dfbdc22e">chSysUnlock</a>.</p>
</div>
</div>
<a class="anchor" id="ga97caf4f277c09588c225ea2328a74cba"></a><!-- doxytag: member="can.c::canSleep" ref="ga97caf4f277c09588c225ea2328a74cba" args="(CANDriver *canp)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void canSleep </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_c_a_n_driver.html">CANDriver</a> *&nbsp;</td>
<td class="paramname"> <em>canp</em></td>
<td>&nbsp;)&nbsp;</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Enters the sleep mode. </p>
<dl><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>canp</em>&nbsp;</td><td>pointer to the <code><a class="el" href="struct_c_a_n_driver.html" title="Structure representing an CAN driver.">CANDriver</a></code> object </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="can_8c_source.html#l00234">234</a> of file <a class="el" href="can_8c_source.html">can.c</a>.</p>
<p>References <a class="el" href="group___c_a_n___l_l_d.html#ga90f2254324f338714bfe1663eb73a2ba">can_lld_sleep()</a>, <a class="el" href="group___c_a_n.html#ggaca62464ffdcedae03d49adf3f6ce870eaf6cc9dbdefe635c9db9dca135cc94610">CAN_READY</a>, <a class="el" href="group___c_a_n.html#ggaca62464ffdcedae03d49adf3f6ce870ea7b6ee207a3d1bfec35374f0d3964e6aa">CAN_SLEEP</a>, <a class="el" href="struct_c_a_n_driver.html#a424d4fd0c061b0237803c03c5815b450">CANDriver::cd_sleep_event</a>, <a class="el" href="struct_c_a_n_driver.html#a5ed8f92d00941a212ad798e05c001dcb">CANDriver::cd_state</a>, <a class="el" href="group__debug.html#ga43d50c69eb730d0f024eb832d61f30c9">chDbgAssert</a>, <a class="el" href="group__debug.html#ga6bb6c0f97caab3a66332c8bfbf7a3844">chDbgCheck</a>, <a class="el" href="group__events.html#gaa24d9bed5b676b577200c4a8ebe3b8a3">chEvtBroadcastI()</a>, <a class="el" href="group__scheduler.html#ga4e38b4bee3d2330f6a0f1cdb7660af20">chSchRescheduleS()</a>, <a class="el" href="group__system.html#ga9f6573c0763d1e4e97c63c62edad6e42">chSysLock</a>, and <a class="el" href="group__system.html#ga5a257fa58a09815eb64a45e2dfbdc22e">chSysUnlock</a>.</p>
<p><div class="dynheader">
Here is the call graph for this function:</div>
2010-11-22 05:53:37 +00:00
<div class="dyncontent">
<div class="center"><img src="group___c_a_n_ga97caf4f277c09588c225ea2328a74cba_cgraph.png" border="0" usemap="#group___c_a_n_ga97caf4f277c09588c225ea2328a74cba_cgraph" alt=""/></div>
<map name="group___c_a_n_ga97caf4f277c09588c225ea2328a74cba_cgraph" id="group___c_a_n_ga97caf4f277c09588c225ea2328a74cba_cgraph">
<area shape="rect" id="node3" href="group___c_a_n___l_l_d.html#ga90f2254324f338714bfe1663eb73a2ba" title="Enters the sleep mode." alt="" coords="135,5,223,32"/> <area shape="rect" id="node5" href="group__events.html#gaa24d9bed5b676b577200c4a8ebe3b8a3" title="Signals all the Event Listeners registered on the specified Event Source." alt="" coords="128,56,229,83"/> <area shape="rect" id="node9" href="group__scheduler.html#ga4e38b4bee3d2330f6a0f1cdb7660af20" title="Performs a reschedule if a higher priority thread is runnable." alt="" coords="120,107,237,133"/> <area shape="rect" id="node7" href="group__events.html#ga6c219038c3e618e2142c6e1601997907" title="Pends a set of event flags on the specified Thread." alt="" coords="308,56,388,83"/> <area shape="rect" id="node11" href="group__scheduler.html#ga0257cf203e72a766a52059750cb97e6e" title="Switches to the first thread on the runnable queue." alt="" coords="285,107,411,133"/> </map>
2010-08-10 03:11:02 +00:00
</div>
</p>
</div>
</div>
<a class="anchor" id="ga09737d4ae5be724bf791a309e8a28dff"></a><!-- doxytag: member="can.c::canWakeup" ref="ga09737d4ae5be724bf791a309e8a28dff" args="(CANDriver *canp)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void canWakeup </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_c_a_n_driver.html">CANDriver</a> *&nbsp;</td>
<td class="paramname"> <em>canp</em></td>
<td>&nbsp;)&nbsp;</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Enforces leaving the sleep mode. </p>
<dl class="note"><dt><b>Note:</b></dt><dd>The sleep mode is supposed to be usually exited automatically by an hardware event.</dd></dl>
<dl><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>canp</em>&nbsp;</td><td>pointer to the <code><a class="el" href="struct_c_a_n_driver.html" title="Structure representing an CAN driver.">CANDriver</a></code> object </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="can_8c_source.html#l00258">258</a> of file <a class="el" href="can_8c_source.html">can.c</a>.</p>
<p>References <a class="el" href="group___c_a_n___l_l_d.html#ga7a5e18d180ae064548783e6ac18903ba">can_lld_wakeup()</a>, <a class="el" href="group___c_a_n.html#ggaca62464ffdcedae03d49adf3f6ce870eaf6cc9dbdefe635c9db9dca135cc94610">CAN_READY</a>, <a class="el" href="group___c_a_n.html#ggaca62464ffdcedae03d49adf3f6ce870ea7b6ee207a3d1bfec35374f0d3964e6aa">CAN_SLEEP</a>, <a class="el" href="struct_c_a_n_driver.html#a5ed8f92d00941a212ad798e05c001dcb">CANDriver::cd_state</a>, <a class="el" href="struct_c_a_n_driver.html#ab860f0342e594220bd9428bed397614e">CANDriver::cd_wakeup_event</a>, <a class="el" href="group__debug.html#ga43d50c69eb730d0f024eb832d61f30c9">chDbgAssert</a>, <a class="el" href="group__debug.html#ga6bb6c0f97caab3a66332c8bfbf7a3844">chDbgCheck</a>, <a class="el" href="group__events.html#gaa24d9bed5b676b577200c4a8ebe3b8a3">chEvtBroadcastI()</a>, <a class="el" href="group__scheduler.html#ga4e38b4bee3d2330f6a0f1cdb7660af20">chSchRescheduleS()</a>, <a class="el" href="group__system.html#ga9f6573c0763d1e4e97c63c62edad6e42">chSysLock</a>, and <a class="el" href="group__system.html#ga5a257fa58a09815eb64a45e2dfbdc22e">chSysUnlock</a>.</p>
<p><div class="dynheader">
Here is the call graph for this function:</div>
2010-11-22 05:53:37 +00:00
<div class="dyncontent">
<div class="center"><img src="group___c_a_n_ga09737d4ae5be724bf791a309e8a28dff_cgraph.png" border="0" usemap="#group___c_a_n_ga09737d4ae5be724bf791a309e8a28dff_cgraph" alt=""/></div>
<map name="group___c_a_n_ga09737d4ae5be724bf791a309e8a28dff_cgraph" id="group___c_a_n_ga09737d4ae5be724bf791a309e8a28dff_cgraph">
<area shape="rect" id="node3" href="group___c_a_n___l_l_d.html#ga7a5e18d180ae064548783e6ac18903ba" title="Enforces leaving the sleep mode." alt="" coords="141,5,243,32"/> <area shape="rect" id="node5" href="group__events.html#gaa24d9bed5b676b577200c4a8ebe3b8a3" title="Signals all the Event Listeners registered on the specified Event Source." alt="" coords="141,56,243,83"/> <area shape="rect" id="node9" href="group__scheduler.html#ga4e38b4bee3d2330f6a0f1cdb7660af20" title="Performs a reschedule if a higher priority thread is runnable." alt="" coords="133,107,251,133"/> <area shape="rect" id="node7" href="group__events.html#ga6c219038c3e618e2142c6e1601997907" title="Pends a set of event flags on the specified Thread." alt="" coords="321,56,401,83"/> <area shape="rect" id="node11" href="group__scheduler.html#ga0257cf203e72a766a52059750cb97e6e" title="Switches to the first thread on the runnable queue." alt="" coords="299,107,424,133"/> </map>
2010-08-10 03:11:02 +00:00
</div>
</p>
</div>
</div>
</div>
<hr size="1"><address style="text-align: right;"><small>
2010-11-30 04:54:43 +00:00
Generated on Sun Nov 28 2010 14:09:57 for ChibiOS/RT by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.7.1</small></address>
2010-08-10 03:11:02 +00:00
</body>
</html>