File: rtcan_8h-source.html

package info (click to toggle)
xenomai 2.5.4-3squeeze1
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 36,140 kB
  • ctags: 35,509
  • sloc: ansic: 109,084; sh: 11,745; makefile: 2,205; xml: 1,356; asm: 613; php: 316; perl: 155
file content (289 lines) | stat: -rw-r--r-- 39,043 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>Xenomai API: include/rtdm/rtcan.h Source File</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.6 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;Pages</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 class="current"><a href="files.html"><span>Files</span></a></li>
      <li><a href="examples.html"><span>Examples</span></a></li>
    <li>
      <form action="search.php" method="get">
        <table cellspacing="0" cellpadding="0" border="0">
          <tr>
            <td><label>&nbsp;<u>S</u>earch&nbsp;for&nbsp;</label></td>
            <td><input type="text" name="query" value="" size="20" accesskey="s"/></td>
          </tr>
        </table>
      </form>
    </li>
    </ul>
  </div>
<h1>include/rtdm/rtcan.h</h1><a href="rtcan_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 
<a name="l00236"></a>00236 <span class="preprocessor">#ifndef _RTCAN_H</span>
<a name="l00237"></a>00237 <span class="preprocessor"></span><span class="preprocessor">#define _RTCAN_H</span>
<a name="l00238"></a>00238 <span class="preprocessor"></span>
<a name="l00239"></a>00239 <span class="preprocessor">#ifdef __KERNEL__</span>
<a name="l00240"></a>00240 <span class="preprocessor"></span>
<a name="l00241"></a>00241 <span class="preprocessor">#include &lt;linux/net.h&gt;</span>
<a name="l00242"></a>00242 <span class="preprocessor">#include &lt;linux/socket.h&gt;</span>
<a name="l00243"></a>00243 <span class="preprocessor">#include &lt;linux/if.h&gt;</span>
<a name="l00244"></a>00244 
<a name="l00245"></a>00245 <span class="preprocessor">#else </span><span class="comment">/* !__KERNEL__ */</span>
<a name="l00246"></a>00246 
<a name="l00247"></a>00247 <span class="preprocessor">#include &lt;net/if.h&gt;</span>
<a name="l00248"></a>00248 
<a name="l00249"></a>00249 <span class="preprocessor">#endif </span><span class="comment">/* !__KERNEL__ */</span>
<a name="l00250"></a>00250 
<a name="l00251"></a>00251 <span class="preprocessor">#include &lt;<a class="code" href="rtdm_8h.html" title="Real-Time Driver Model for Xenomai, user API header.">rtdm/rtdm.h</a>&gt;</span>
<a name="l00252"></a>00252 
<a name="l00253"></a>00253 <span class="preprocessor">#define RTCAN_PROFILE_VER  2</span>
<a name="l00254"></a>00254 <span class="preprocessor"></span>
<a name="l00255"></a>00255 <span class="preprocessor">#ifndef AF_CAN</span>
<a name="l00256"></a>00256 <span class="preprocessor"></span>
<a name="l00258"></a><a class="code" href="group__rtcan.html#g546620c7e758f003b24b7fdae4f97bd4">00258</a> <span class="preprocessor">#define AF_CAN  29</span>
<a name="l00259"></a>00259 <span class="preprocessor"></span>
<a name="l00261"></a><a class="code" href="group__rtcan.html#geac0c3db7a1e021f17987bcc76893849">00261</a> <span class="preprocessor">#define PF_CAN  AF_CAN</span>
<a name="l00262"></a>00262 <span class="preprocessor"></span>
<a name="l00263"></a>00263 <span class="preprocessor">#endif</span>
<a name="l00264"></a>00264 <span class="preprocessor"></span>
<a name="l00269"></a><a class="code" href="group__rtcan.html#gd981aa82a29d828882a2fb4c35c1cdd7">00269</a> <span class="preprocessor">#define SOL_CAN_RAW  103</span>
<a name="l00270"></a>00270 <span class="preprocessor"></span>
<a name="l00272"></a><a class="code" href="group__rtcan.html#gd4cb716102402e9be0b5919cd2dd6ead">00272</a> <span class="keyword">typedef</span> uint32_t <a class="code" href="group__rtcan.html#gd4cb716102402e9be0b5919cd2dd6ead" title="Type of CAN id (see CAN_xxx_MASK and CAN_xxx_FLAG).">can_id_t</a>;
<a name="l00273"></a>00273 <span class="keyword">typedef</span> uint32_t canid_t;
<a name="l00274"></a>00274 
<a name="l00276"></a><a class="code" href="group__rtcan.html#ge3b8d6d39f9bbd387bf74031aba8f4f5">00276</a> <span class="keyword">typedef</span> <a class="code" href="group__rtcan.html#gd4cb716102402e9be0b5919cd2dd6ead" title="Type of CAN id (see CAN_xxx_MASK and CAN_xxx_FLAG).">can_id_t</a> <a class="code" href="group__rtcan.html#ge3b8d6d39f9bbd387bf74031aba8f4f5" title="Type of CAN error mask.">can_err_mask_t</a>;
<a name="l00277"></a>00277 
<a name="l00284"></a><a class="code" href="group__rtcan.html#g83b943dca61d0aad5b07ec01c3317572">00284</a> <span class="preprocessor">#define CAN_EFF_MASK  0x1FFFFFFF</span>
<a name="l00285"></a>00285 <span class="preprocessor"></span>
<a name="l00287"></a><a class="code" href="group__rtcan.html#gfe4fc3f9cab58aeeb463861289e8ce93">00287</a> <span class="preprocessor">#define CAN_SFF_MASK  0x000007FF</span>
<a name="l00288"></a>00288 <span class="preprocessor"></span>
<a name="l00296"></a><a class="code" href="group__rtcan.html#g5ae55ab3741140024858bd7b8762ea42">00296</a> <span class="preprocessor">#define CAN_EFF_FLAG  0x80000000</span>
<a name="l00297"></a>00297 <span class="preprocessor"></span>
<a name="l00298"></a><a class="code" href="group__rtcan.html#gf324d65226057755175038a15d9bbd75">00298</a> <span class="preprocessor">#define CAN_RTR_FLAG  0x40000000</span>
<a name="l00299"></a>00299 <span class="preprocessor"></span>
<a name="l00300"></a><a class="code" href="group__rtcan.html#g24df2eae50a2cef0f7f08c73a246a012">00300</a> <span class="preprocessor">#define CAN_ERR_FLAG  0x20000000</span>
<a name="l00301"></a>00301 <span class="preprocessor"></span>
<a name="l00302"></a><a class="code" href="group__rtcan.html#g5cb484fa2d90489f6b4e7a77c254c59f">00302</a> <span class="preprocessor">#define CAN_INV_FILTER CAN_ERR_FLAG</span>
<a name="l00303"></a>00303 <span class="preprocessor"></span>
<a name="l00313"></a><a class="code" href="group__rtcan.html#g57682d9a1e4f4d90943dbaa683582bf5">00313</a> <span class="preprocessor">#define CAN_RAW  1</span>
<a name="l00314"></a>00314 <span class="preprocessor"></span>
<a name="l00316"></a>00316 <span class="preprocessor">#define CAN_BAUDRATE_UNKNOWN       ((uint32_t)-1)</span>
<a name="l00317"></a>00317 <span class="preprocessor"></span><span class="preprocessor">#define CAN_BAUDRATE_UNCONFIGURED  0</span>
<a name="l00318"></a>00318 <span class="preprocessor"></span>
<a name="l00322"></a><a class="code" href="group__rtcan.html#g1c314e1f81a7211a9778da835202a741">00322</a> <span class="keyword">typedef</span> uint32_t <a class="code" href="group__rtcan.html#g1c314e1f81a7211a9778da835202a741" title="Baudrate definition in bits per second.">can_baudrate_t</a>;
<a name="l00323"></a>00323 
<a name="l00327"></a><a class="code" href="group__rtcan.html#g42c4f551b57f47d4e004c02505a01f71">00327</a> <span class="keyword">enum</span> <a class="code" href="group__rtcan.html#g42c4f551b57f47d4e004c02505a01f71" title="Supported CAN bit-time types.">CAN_BITTIME_TYPE</a> {
<a name="l00329"></a><a class="code" href="group__rtcan.html#gg42c4f551b57f47d4e004c02505a01f71160d7c514df2477f8016ed1bf5a6709f">00329</a>         <a class="code" href="group__rtcan.html#gg42c4f551b57f47d4e004c02505a01f71160d7c514df2477f8016ed1bf5a6709f" title="Standard bit-time definition according to Bosch.">CAN_BITTIME_STD</a>,
<a name="l00331"></a><a class="code" href="group__rtcan.html#gg42c4f551b57f47d4e004c02505a01f71e164a942c698440f2548bd82fea33e55">00331</a>         <a class="code" href="group__rtcan.html#gg42c4f551b57f47d4e004c02505a01f71e164a942c698440f2548bd82fea33e55" title="Hardware-specific BTR bit-time definition.">CAN_BITTIME_BTR</a>
<a name="l00332"></a>00332 };
<a name="l00333"></a>00333 
<a name="l00337"></a><a class="code" href="group__rtcan.html#g94a6fb4128854d6fec6e0882df4374f2">00337</a> <span class="keyword">typedef</span> <span class="keyword">enum</span> <a class="code" href="group__rtcan.html#g42c4f551b57f47d4e004c02505a01f71" title="Supported CAN bit-time types.">CAN_BITTIME_TYPE</a> <a class="code" href="group__rtcan.html#g94a6fb4128854d6fec6e0882df4374f2" title="See CAN_BITTIME_TYPE.">can_bittime_type_t</a>;
<a name="l00338"></a>00338 
<a name="l00342"></a><a class="code" href="structcan__bittime__std.html">00342</a> <span class="keyword">struct </span><a class="code" href="structcan__bittime__std.html" title="Standard bit-time parameters according to Bosch.">can_bittime_std</a> {
<a name="l00343"></a><a class="code" href="structcan__bittime__std.html#08d6def90babb8958ec9da1f328e2bae">00343</a>         uint32_t <a class="code" href="structcan__bittime__std.html#08d6def90babb8958ec9da1f328e2bae" title="Baud rate prescaler.">brp</a>;           
<a name="l00344"></a><a class="code" href="structcan__bittime__std.html#071c82fd3d0a66ce45fe51c8fedb156a">00344</a>         uint8_t <a class="code" href="structcan__bittime__std.html#071c82fd3d0a66ce45fe51c8fedb156a" title="from 1 to 8">prop_seg</a>;       
<a name="l00345"></a><a class="code" href="structcan__bittime__std.html#4ea4b12dc1d6cec75599f88b3c3dde3c">00345</a>         uint8_t <a class="code" href="structcan__bittime__std.html#4ea4b12dc1d6cec75599f88b3c3dde3c" title="from 1 to 8">phase_seg1</a>;     
<a name="l00346"></a><a class="code" href="structcan__bittime__std.html#55a0d5efff79f06626177ff46101997b">00346</a>         uint8_t <a class="code" href="structcan__bittime__std.html#55a0d5efff79f06626177ff46101997b" title="from 1 to 8">phase_seg2</a>;     
<a name="l00347"></a><a class="code" href="structcan__bittime__std.html#0c42abf9132d5e08196a0af51b86905f">00347</a>         uint8_t <a class="code" href="structcan__bittime__std.html#0c42abf9132d5e08196a0af51b86905f" title="from 1 to 4">sjw</a>:7;          
<a name="l00348"></a><a class="code" href="structcan__bittime__std.html#e6ab12fbeab86132bd178d63a1fd968f">00348</a>         uint8_t <a class="code" href="structcan__bittime__std.html#e6ab12fbeab86132bd178d63a1fd968f" title="1 - enable triple sampling">sam</a>:1;          
<a name="l00349"></a>00349 };
<a name="l00350"></a>00350 
<a name="l00354"></a><a class="code" href="structcan__bittime__btr.html">00354</a> <span class="keyword">struct </span><a class="code" href="structcan__bittime__btr.html" title="Hardware-specific BTR bit-times.">can_bittime_btr</a> {
<a name="l00355"></a>00355 
<a name="l00356"></a><a class="code" href="structcan__bittime__btr.html#17d058dedc9a9339e378f2b7b352a554">00356</a>         uint8_t <a class="code" href="structcan__bittime__btr.html#17d058dedc9a9339e378f2b7b352a554" title="Bus timing register 0.">btr0</a>;           
<a name="l00357"></a><a class="code" href="structcan__bittime__btr.html#6d93f9587762eb9d0a9a05612b108afe">00357</a>         uint8_t <a class="code" href="structcan__bittime__btr.html#6d93f9587762eb9d0a9a05612b108afe" title="Bus timing register 1.">btr1</a>;           
<a name="l00358"></a>00358 };
<a name="l00359"></a>00359 
<a name="l00363"></a><a class="code" href="structcan__bittime.html">00363</a> <span class="keyword">struct </span><a class="code" href="structcan__bittime.html" title="Custom CAN bit-time definition.">can_bittime</a> {
<a name="l00365"></a><a class="code" href="structcan__bittime.html#7635b85b6a373e78cdbed846986e330f">00365</a>         <a class="code" href="group__rtcan.html#g94a6fb4128854d6fec6e0882df4374f2" title="See CAN_BITTIME_TYPE.">can_bittime_type_t</a> <a class="code" href="structcan__bittime.html#7635b85b6a373e78cdbed846986e330f" title="Type of bit-time definition.">type</a>;
<a name="l00366"></a>00366 
<a name="l00367"></a>00367         <span class="keyword">union </span>{
<a name="l00369"></a><a class="code" href="structcan__bittime.html#63ff3bc997c3c48090dfcff8876dc909">00369</a>                 <span class="keyword">struct </span><a class="code" href="structcan__bittime__std.html" title="Standard bit-time parameters according to Bosch.">can_bittime_std</a> <a class="code" href="structcan__bittime.html#63ff3bc997c3c48090dfcff8876dc909" title="Standard bit-time.">std</a>;
<a name="l00371"></a><a class="code" href="structcan__bittime.html#1553dfa8833111c9b6f1dc2ab4984b72">00371</a>                 <span class="keyword">struct </span><a class="code" href="structcan__bittime__btr.html" title="Hardware-specific BTR bit-times.">can_bittime_btr</a> <a class="code" href="structcan__bittime.html#1553dfa8833111c9b6f1dc2ab4984b72" title="Hardware-spcific BTR bit-time.">btr</a>;
<a name="l00372"></a>00372         };
<a name="l00373"></a>00373 };
<a name="l00374"></a>00374 
<a name="l00379"></a><a class="code" href="group__rtcan.html#gc0d6cdda2cf4abb51116b86bc99acf99">00379</a> <span class="keyword">enum</span> <a class="code" href="group__rtcan.html#gc0d6cdda2cf4abb51116b86bc99acf99">CAN_MODE</a> {
<a name="l00381"></a><a class="code" href="group__rtcan.html#ggc0d6cdda2cf4abb51116b86bc99acf9904f549e87bf7ddf764c563062dd76790">00381</a>         <a class="code" href="group__rtcan.html#ggc0d6cdda2cf4abb51116b86bc99acf9904f549e87bf7ddf764c563062dd76790">CAN_MODE_STOP</a> = 0,
<a name="l00382"></a>00382 
<a name="l00386"></a><a class="code" href="group__rtcan.html#ggc0d6cdda2cf4abb51116b86bc99acf99f9c617b6b198770017f6e7198bfb50b6">00386</a>         <a class="code" href="group__rtcan.html#ggc0d6cdda2cf4abb51116b86bc99acf99f9c617b6b198770017f6e7198bfb50b6">CAN_MODE_START</a>,
<a name="l00387"></a>00387 
<a name="l00394"></a><a class="code" href="group__rtcan.html#ggc0d6cdda2cf4abb51116b86bc99acf9957866c198e12c54747aca0786dc33e3e">00394</a>         <a class="code" href="group__rtcan.html#ggc0d6cdda2cf4abb51116b86bc99acf9957866c198e12c54747aca0786dc33e3e">CAN_MODE_SLEEP</a>
<a name="l00395"></a>00395 };
<a name="l00399"></a><a class="code" href="group__rtcan.html#g47a129d7188a7cd7b68fbf60ebbfd9e8">00399</a> <span class="keyword">typedef</span> <span class="keyword">enum</span> <a class="code" href="group__rtcan.html#gc0d6cdda2cf4abb51116b86bc99acf99">CAN_MODE</a> <a class="code" href="group__rtcan.html#g47a129d7188a7cd7b68fbf60ebbfd9e8" title="See CAN_MODE.">can_mode_t</a>;
<a name="l00400"></a>00400 
<a name="l00416"></a><a class="code" href="group__rtcan.html#ge4ba49824d17e7d06300cb8b4a4bff45">00416</a> <span class="preprocessor">#define CAN_CTRLMODE_LISTENONLY 0x1</span>
<a name="l00417"></a>00417 <span class="preprocessor"></span>
<a name="l00423"></a><a class="code" href="group__rtcan.html#g19ec0cc4379e80c32cbd333cf7c145e9">00423</a> <span class="preprocessor">#define CAN_CTRLMODE_LOOPBACK   0x2</span>
<a name="l00424"></a>00424 <span class="preprocessor"></span>
<a name="l00428"></a><a class="code" href="group__rtcan.html#ga1db20ee5ae4803157e38db4b6c6150b">00428</a> <span class="keyword">typedef</span> <span class="keywordtype">int</span> <a class="code" href="group__rtcan.html#ga1db20ee5ae4803157e38db4b6c6150b" title="See CAN_CTRLMODE.">can_ctrlmode_t</a>;
<a name="l00429"></a>00429 
<a name="l00434"></a><a class="code" href="group__rtcan.html#g8680f5710e1a13d553067cc32c86226b">00434</a> <span class="keyword">enum</span> <a class="code" href="group__rtcan.html#g8680f5710e1a13d553067cc32c86226b">CAN_STATE</a> {
<a name="l00436"></a><a class="code" href="group__rtcan.html#gg8680f5710e1a13d553067cc32c86226b7db2add3bd2ed5a01893a3d2a012ac67">00436</a>         <a class="code" href="group__rtcan.html#gg8680f5710e1a13d553067cc32c86226b7db2add3bd2ed5a01893a3d2a012ac67" title="CAN controller is error active.">CAN_STATE_ACTIVE</a> = 0,
<a name="l00437"></a>00437 
<a name="l00439"></a><a class="code" href="group__rtcan.html#gg8680f5710e1a13d553067cc32c86226b8e8ffc38c3886c8ab4b7a6ebd24db2e1">00439</a>         <a class="code" href="group__rtcan.html#gg8680f5710e1a13d553067cc32c86226b8e8ffc38c3886c8ab4b7a6ebd24db2e1" title="CAN controller is error active, warning level is reached.">CAN_STATE_BUS_WARNING</a>,
<a name="l00440"></a>00440 
<a name="l00442"></a><a class="code" href="group__rtcan.html#gg8680f5710e1a13d553067cc32c86226b16806979589ee8f20ee84c767903b667">00442</a>         <a class="code" href="group__rtcan.html#gg8680f5710e1a13d553067cc32c86226b16806979589ee8f20ee84c767903b667" title="CAN controller is error passive.">CAN_STATE_BUS_PASSIVE</a>,
<a name="l00443"></a>00443 
<a name="l00445"></a><a class="code" href="group__rtcan.html#gg8680f5710e1a13d553067cc32c86226b679935a8710667fcb99423d217cd9959">00445</a>         <a class="code" href="group__rtcan.html#gg8680f5710e1a13d553067cc32c86226b679935a8710667fcb99423d217cd9959" title="CAN controller went into Bus Off.">CAN_STATE_BUS_OFF</a>,
<a name="l00446"></a>00446 
<a name="l00448"></a><a class="code" href="group__rtcan.html#gg8680f5710e1a13d553067cc32c86226bcc4b4039f38316b01662d775eeb981ff">00448</a>         <a class="code" href="group__rtcan.html#gg8680f5710e1a13d553067cc32c86226bcc4b4039f38316b01662d775eeb981ff" title="CAN controller is scanning to get the baudrate.">CAN_STATE_SCANNING_BAUDRATE</a>,
<a name="l00449"></a>00449 
<a name="l00451"></a><a class="code" href="group__rtcan.html#gg8680f5710e1a13d553067cc32c86226b644e7a441f2e607b93528d3128508cc8">00451</a>         <a class="code" href="group__rtcan.html#gg8680f5710e1a13d553067cc32c86226b644e7a441f2e607b93528d3128508cc8" title="CAN controller is in stopped mode.">CAN_STATE_STOPPED</a>,
<a name="l00452"></a>00452 
<a name="l00454"></a><a class="code" href="group__rtcan.html#gg8680f5710e1a13d553067cc32c86226b2bb74d448dac491e9cfcc7f7bcc14857">00454</a>         <a class="code" href="group__rtcan.html#gg8680f5710e1a13d553067cc32c86226b2bb74d448dac491e9cfcc7f7bcc14857" title="CAN controller is in Sleep mode.">CAN_STATE_SLEEPING</a>,
<a name="l00455"></a>00455 };
<a name="l00459"></a><a class="code" href="group__rtcan.html#g046ddfab86ca47210233f254bc874c6d">00459</a> <span class="keyword">typedef</span> <span class="keyword">enum</span> <a class="code" href="group__rtcan.html#g8680f5710e1a13d553067cc32c86226b">CAN_STATE</a> <a class="code" href="group__rtcan.html#g046ddfab86ca47210233f254bc874c6d" title="See CAN_STATE.">can_state_t</a>;
<a name="l00460"></a>00460 
<a name="l00461"></a>00461 <span class="preprocessor">#define CAN_STATE_OPERATING(state) ((state) &lt; CAN_STATE_BUS_OFF)</span>
<a name="l00462"></a>00462 <span class="preprocessor"></span>
<a name="l00488"></a><a class="code" href="structcan__filter.html">00488</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structcan__filter.html" title="Filter for reception of CAN messages.">can_filter</a> {
<a name="l00491"></a><a class="code" href="structcan__filter.html#ac0f27fee94e90063d8a80f4928e1298">00491</a>         uint32_t <a class="code" href="structcan__filter.html#ac0f27fee94e90063d8a80f4928e1298" title="CAN ID which must match with incoming IDs after passing the mask.">can_id</a>;
<a name="l00492"></a>00492 
<a name="l00495"></a><a class="code" href="structcan__filter.html#fa419227fe42bf1ce84a7c41600f1f90">00495</a>         uint32_t <a class="code" href="structcan__filter.html#fa419227fe42bf1ce84a7c41600f1f90" title="Mask which is applied to incoming IDs.">can_mask</a>;
<a name="l00496"></a>00496 } <a class="code" href="structcan__filter.html" title="Filter for reception of CAN messages.">can_filter_t</a>;
<a name="l00497"></a>00497 
<a name="l00501"></a><a class="code" href="structsockaddr__can.html">00501</a> <span class="keyword">struct </span><a class="code" href="structsockaddr__can.html" title="Socket address structure for the CAN address family.">sockaddr_can</a> {
<a name="l00503"></a><a class="code" href="structsockaddr__can.html#e9d8c789193e516c282a707d5a118ebc">00503</a>         sa_family_t <a class="code" href="structsockaddr__can.html#e9d8c789193e516c282a707d5a118ebc" title="CAN address family, must be AF_CAN.">can_family</a>;
<a name="l00504"></a>00504 
<a name="l00506"></a><a class="code" href="structsockaddr__can.html#f1586f4d4c039a7941f07c0d746a73a7">00506</a>         <span class="keywordtype">int</span> <a class="code" href="structsockaddr__can.html#f1586f4d4c039a7941f07c0d746a73a7" title="Interface index of CAN controller.">can_ifindex</a>;
<a name="l00507"></a>00507 };
<a name="l00508"></a>00508 
<a name="l00514"></a><a class="code" href="structcan__frame.html">00514</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structcan__frame.html" title="Raw CAN frame.">can_frame</a> {
<a name="l00519"></a><a class="code" href="structcan__frame.html#0294f06f81a3ae0d155eb5fd14733d63">00519</a>         <a class="code" href="group__rtcan.html#gd4cb716102402e9be0b5919cd2dd6ead" title="Type of CAN id (see CAN_xxx_MASK and CAN_xxx_FLAG).">can_id_t</a> <a class="code" href="structcan__frame.html#0294f06f81a3ae0d155eb5fd14733d63" title="CAN ID of the frame.">can_id</a>;
<a name="l00520"></a>00520 
<a name="l00522"></a><a class="code" href="structcan__frame.html#a055f09fd81b299201618396b7dc9314">00522</a>         uint8_t <a class="code" href="structcan__frame.html#a055f09fd81b299201618396b7dc9314" title="Size of the payload in bytes.">can_dlc</a>;
<a name="l00523"></a>00523 
<a name="l00525"></a>00525         uint8_t data[8] <a class="code" href="structcan__frame.html#f58d971323fd8fdd65fb4b1140bc0ee5" title="Payload data bytes.">__attribute__</a> ((aligned(8)));
<a name="l00526"></a>00526 } <a class="code" href="structcan__frame.html" title="Raw CAN frame.">can_frame_t</a>;
<a name="l00527"></a>00527 
<a name="l00532"></a><a class="code" href="group__rtcan.html#ge06ad16f505d1ec6c1e55d82ac82ef89">00532</a> <span class="preprocessor">#define RTCAN_TAKE_NO_TIMESTAMPS        0  </span>
<a name="l00533"></a><a class="code" href="group__rtcan.html#ge39894e7e6d107d4bab150cc0ef993c8">00533</a> <span class="preprocessor">#define RTCAN_TAKE_TIMESTAMPS           1  </span>
<a name="l00536"></a>00536 <span class="preprocessor">#define RTIOC_TYPE_CAN  RTDM_CLASS_CAN</span>
<a name="l00537"></a>00537 <span class="preprocessor"></span>
<a name="l00576"></a><a class="code" href="group__rtcan.html#g87313c6e632294aa4582899a3bbc89e4">00576</a> <span class="preprocessor">#define CAN_RAW_FILTER          0x1</span>
<a name="l00577"></a>00577 <span class="preprocessor"></span>
<a name="l00606"></a><a class="code" href="group__rtcan.html#g451ba35aa4d0bef48cb7b0416f5b4367">00606</a> <span class="preprocessor">#define CAN_RAW_ERR_FILTER      0x2</span>
<a name="l00607"></a>00607 <span class="preprocessor"></span>
<a name="l00634"></a><a class="code" href="group__rtcan.html#ga7eb7dc3aa940a0aca20d3a564a147d9">00634</a> <span class="preprocessor">#define CAN_RAW_LOOPBACK        0x3</span>
<a name="l00635"></a>00635 <span class="preprocessor"></span>
<a name="l00642"></a><a class="code" href="group__rtcan.html#g712942ca3d0d621184fb2019a24677c3">00642</a> <span class="preprocessor">#define CAN_RAW_RECV_OWN_MSGS   0x4</span>
<a name="l00643"></a>00643 <span class="preprocessor"></span>
<a name="l00676"></a>00676 <span class="preprocessor">#ifdef DOXYGEN_CPP </span><span class="comment">/* For Doxygen only, already defined by kernel headers */</span>
<a name="l00677"></a><a class="code" href="group__rtcan.html#gee74ae50c8ea0a6aee277c6f124a3866">00677</a> <span class="preprocessor">#define SIOCGIFINDEX defined_by_kernel_header_file</span>
<a name="l00678"></a>00678 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00679"></a>00679 <span class="preprocessor"></span>
<a name="l00714"></a><a class="code" href="group__rtcan.html#g7c070037c218b40de849ebf4d299f977">00714</a> <span class="preprocessor">#define SIOCSCANBAUDRATE        _IOW(RTIOC_TYPE_CAN, 0x01, struct ifreq)</span>
<a name="l00715"></a>00715 <span class="preprocessor"></span>
<a name="l00741"></a><a class="code" href="group__rtcan.html#g9a3032f07b3a6a2f92eb2ba25a4ff8bf">00741</a> <span class="preprocessor">#define SIOCGCANBAUDRATE        _IOWR(RTIOC_TYPE_CAN, 0x02, struct ifreq)</span>
<a name="l00742"></a>00742 <span class="preprocessor"></span>
<a name="l00775"></a><a class="code" href="group__rtcan.html#g4e9547dcb608fd0b8d5cf57f926e5176">00775</a> <span class="preprocessor">#define SIOCSCANCUSTOMBITTIME   _IOW(RTIOC_TYPE_CAN, 0x03, struct ifreq)</span>
<a name="l00776"></a>00776 <span class="preprocessor"></span>
<a name="l00802"></a><a class="code" href="group__rtcan.html#gb92b51127ca47c491069b9f3e5013a7f">00802</a> <span class="preprocessor">#define SIOCGCANCUSTOMBITTIME   _IOWR(RTIOC_TYPE_CAN, 0x04, struct ifreq)</span>
<a name="l00803"></a>00803 <span class="preprocessor"></span>
<a name="l00845"></a><a class="code" href="group__rtcan.html#g72b56a34fe466bca858b1f5f401e1076">00845</a> <span class="preprocessor">#define SIOCSCANMODE            _IOW(RTIOC_TYPE_CAN, 0x05, struct ifreq)</span>
<a name="l00846"></a>00846 <span class="preprocessor"></span>
<a name="l00879"></a><a class="code" href="group__rtcan.html#g5b5f750db08d56f40489679f22236ef4">00879</a> <span class="preprocessor">#define SIOCGCANSTATE           _IOWR(RTIOC_TYPE_CAN, 0x06, struct ifreq)</span>
<a name="l00880"></a>00880 <span class="preprocessor"></span>
<a name="l00913"></a><a class="code" href="group__rtcan.html#g26fa69d2cded6e172b96b4a6dc3798df">00913</a> <span class="preprocessor">#define SIOCSCANCTRLMODE        _IOW(RTIOC_TYPE_CAN, 0x07, struct ifreq)</span>
<a name="l00914"></a>00914 <span class="preprocessor"></span>
<a name="l00941"></a><a class="code" href="group__rtcan.html#ga78d64e69ffd68a20f93a6aa64393d6a">00941</a> <span class="preprocessor">#define SIOCGCANCTRLMODE        _IOWR(RTIOC_TYPE_CAN, 0x08, struct ifreq)</span>
<a name="l00942"></a>00942 <span class="preprocessor"></span>
<a name="l00968"></a><a class="code" href="group__rtcan.html#gedd7bd75a1983735052fed62e101e5ce">00968</a> <span class="preprocessor">#define RTCAN_RTIOC_TAKE_TIMESTAMP _IOW(RTIOC_TYPE_CAN, 0x09, int)</span>
<a name="l00969"></a>00969 <span class="preprocessor"></span>
<a name="l01001"></a><a class="code" href="group__rtcan.html#gd8af08ea3624e8e9c464ff143fcb66c0">01001</a> <span class="preprocessor">#define RTCAN_RTIOC_RCV_TIMEOUT _IOW(RTIOC_TYPE_CAN, 0x0A, nanosecs_rel_t)</span>
<a name="l01002"></a>01002 <span class="preprocessor"></span>
<a name="l01034"></a><a class="code" href="group__rtcan.html#gd3758528585b2779e8949df671f1cf6c">01034</a> <span class="preprocessor">#define RTCAN_RTIOC_SND_TIMEOUT _IOW(RTIOC_TYPE_CAN, 0x0B, nanosecs_rel_t)</span>
<a name="l01035"></a>01035 <span class="preprocessor"></span>
<a name="l01037"></a>01037 <span class="preprocessor">#define CAN_ERR_DLC  8  </span><span class="comment">/* dlc for error frames */</span>
<a name="l01038"></a>01038 
<a name="l01059"></a><a class="code" href="group__rtcan.html#g168d1c5d468bad5e52ccbd70c5f37986">01059</a> <span class="preprocessor">#define CAN_ERR_TX_TIMEOUT      0x00000001U</span>
<a name="l01060"></a>01060 <span class="preprocessor"></span>
<a name="l01062"></a><a class="code" href="group__rtcan.html#ga79a977211fe6534a627541f71373df0">01062</a> <span class="preprocessor">#define CAN_ERR_LOSTARB         0x00000002U</span>
<a name="l01063"></a>01063 <span class="preprocessor"></span>
<a name="l01065"></a><a class="code" href="group__rtcan.html#g8086092a2e40c1b0429caaad3b2c8675">01065</a> <span class="preprocessor">#define CAN_ERR_CRTL            0x00000004U</span>
<a name="l01066"></a>01066 <span class="preprocessor"></span>
<a name="l01069"></a><a class="code" href="group__rtcan.html#g0fdfaa2091c61c2db8caa7a51e8c0037">01069</a> <span class="preprocessor">#define CAN_ERR_PROT            0x00000008U</span>
<a name="l01070"></a>01070 <span class="preprocessor"></span>
<a name="l01072"></a><a class="code" href="group__rtcan.html#gf0026f916a985610cc449ffa6a31445f">01072</a> <span class="preprocessor">#define CAN_ERR_TRX             0x00000010U</span>
<a name="l01073"></a>01073 <span class="preprocessor"></span>
<a name="l01075"></a><a class="code" href="group__rtcan.html#gdbe83f5e81c1c8c767daaf97c5849017">01075</a> <span class="preprocessor">#define CAN_ERR_ACK             0x00000020U</span>
<a name="l01076"></a>01076 <span class="preprocessor"></span>
<a name="l01078"></a><a class="code" href="group__rtcan.html#g8b0903e35c75de100b97a7b3e368b269">01078</a> <span class="preprocessor">#define CAN_ERR_BUSOFF          0x00000040U</span>
<a name="l01079"></a>01079 <span class="preprocessor"></span>
<a name="l01081"></a><a class="code" href="group__rtcan.html#g0b068b1221129441b89967ee2ddb9f44">01081</a> <span class="preprocessor">#define CAN_ERR_BUSERROR        0x00000080U</span>
<a name="l01082"></a>01082 <span class="preprocessor"></span>
<a name="l01084"></a><a class="code" href="group__rtcan.html#g54583090d19940d761a224bc0801ec6a">01084</a> <span class="preprocessor">#define CAN_ERR_RESTARTED       0x00000100U</span>
<a name="l01085"></a>01085 <span class="preprocessor"></span>
<a name="l01087"></a><a class="code" href="group__rtcan.html#gd4061a08b8c5aa6de3bb390efd3b6bd6">01087</a> <span class="preprocessor">#define CAN_ERR_MASK            0x1FFFFFFFU</span>
<a name="l01088"></a>01088 <span class="preprocessor"></span>
<a name="l01095"></a>01095 <span class="comment">/* arbitration lost in bit ... / data[0] */</span>
<a name="l01096"></a><a class="code" href="group__rtcan.html#g7fa1bc55bccfadf780c0556c7d4d7fef">01096</a> <span class="preprocessor">#define CAN_ERR_LOSTARB_UNSPEC  0x00 </span>
<a name="l01104"></a>01104 <span class="preprocessor"></span><span class="comment">/* error status of CAN-controller / data[1] */</span>
<a name="l01105"></a><a class="code" href="group__rtcan.html#gfcdc17774047f27e70f3c39f6fb66076">01105</a> <span class="preprocessor">#define CAN_ERR_CRTL_UNSPEC      0x00 </span>
<a name="l01106"></a><a class="code" href="group__rtcan.html#g23d6f05d55b62fffdbd0a50969bc2d04">01106</a> <span class="preprocessor">#define CAN_ERR_CRTL_RX_OVERFLOW 0x01 </span>
<a name="l01107"></a><a class="code" href="group__rtcan.html#gb1412f1e2cc4f23334ed5ea766d12006">01107</a> <span class="preprocessor">#define CAN_ERR_CRTL_TX_OVERFLOW 0x02 </span>
<a name="l01108"></a><a class="code" href="group__rtcan.html#ge93958bbabe5e2e6d328d8fa5d491a96">01108</a> <span class="preprocessor">#define CAN_ERR_CRTL_RX_WARNING  0x04 </span>
<a name="l01109"></a><a class="code" href="group__rtcan.html#gb46d1dddb458203ca07e0c351275c549">01109</a> <span class="preprocessor">#define CAN_ERR_CRTL_TX_WARNING  0x08 </span>
<a name="l01110"></a><a class="code" href="group__rtcan.html#g853db0a1bf833caea89e3597a0123c11">01110</a> <span class="preprocessor">#define CAN_ERR_CRTL_RX_PASSIVE  0x10 </span>
<a name="l01111"></a><a class="code" href="group__rtcan.html#g29185de9d3b35414a729af6e0fad6574">01111</a> <span class="preprocessor">#define CAN_ERR_CRTL_TX_PASSIVE  0x20 </span>
<a name="l01118"></a>01118 <span class="preprocessor"></span><span class="comment">/* error in CAN protocol (type) / data[2] */</span>
<a name="l01119"></a><a class="code" href="group__rtcan.html#g6cf7ee3a3d83315ed2589bb3bdb816b3">01119</a> <span class="preprocessor">#define CAN_ERR_PROT_UNSPEC     0x00 </span>
<a name="l01120"></a><a class="code" href="group__rtcan.html#g0443c62a7e861f429f51c7bb6dc4ee23">01120</a> <span class="preprocessor">#define CAN_ERR_PROT_BIT        0x01 </span>
<a name="l01121"></a><a class="code" href="group__rtcan.html#ge8f76071caf3ac10abb88be4347b9625">01121</a> <span class="preprocessor">#define CAN_ERR_PROT_FORM       0x02 </span>
<a name="l01122"></a><a class="code" href="group__rtcan.html#g31af2ea01de879fb1d153cb6c0d642f8">01122</a> <span class="preprocessor">#define CAN_ERR_PROT_STUFF      0x04 </span>
<a name="l01123"></a><a class="code" href="group__rtcan.html#g1b469132ce858c4a0222e367b986343a">01123</a> <span class="preprocessor">#define CAN_ERR_PROT_BIT0       0x08 </span>
<a name="l01124"></a><a class="code" href="group__rtcan.html#g13e44854f6873a4a08ba2c9de0544471">01124</a> <span class="preprocessor">#define CAN_ERR_PROT_BIT1       0x10 </span>
<a name="l01125"></a><a class="code" href="group__rtcan.html#g0c02b06cad0d95b340c1b6294a5f9f9f">01125</a> <span class="preprocessor">#define CAN_ERR_PROT_OVERLOAD   0x20 </span>
<a name="l01126"></a><a class="code" href="group__rtcan.html#g460ee0be98290e6916f85c8651d6de05">01126</a> <span class="preprocessor">#define CAN_ERR_PROT_ACTIVE     0x40 </span>
<a name="l01127"></a><a class="code" href="group__rtcan.html#gbee807ce2e8ccf6eafc9b6f73a9315fb">01127</a> <span class="preprocessor">#define CAN_ERR_PROT_TX         0x80 </span>
<a name="l01134"></a>01134 <span class="preprocessor"></span><span class="comment">/* error in CAN protocol (location) / data[3] */</span>
<a name="l01135"></a><a class="code" href="group__rtcan.html#g4ac83a947ca929b857af6352300ad6d8">01135</a> <span class="preprocessor">#define CAN_ERR_PROT_LOC_UNSPEC  0x00 </span>
<a name="l01136"></a><a class="code" href="group__rtcan.html#ga7a2392801977b667a4d39083d0c92c3">01136</a> <span class="preprocessor">#define CAN_ERR_PROT_LOC_SOF     0x03 </span>
<a name="l01137"></a><a class="code" href="group__rtcan.html#g0592a90c8dba2c8102479e184dcd6c62">01137</a> <span class="preprocessor">#define CAN_ERR_PROT_LOC_ID28_21 0x02 </span>
<a name="l01138"></a><a class="code" href="group__rtcan.html#g240923d7f939dd08d2e4f434468e3006">01138</a> <span class="preprocessor">#define CAN_ERR_PROT_LOC_ID20_18 0x06 </span>
<a name="l01139"></a><a class="code" href="group__rtcan.html#gd70fa4d644d5b71f8891de051643226a">01139</a> <span class="preprocessor">#define CAN_ERR_PROT_LOC_SRTR    0x04 </span>
<a name="l01140"></a><a class="code" href="group__rtcan.html#g4fe7a2839d2ca31e8dd383564b1865c1">01140</a> <span class="preprocessor">#define CAN_ERR_PROT_LOC_IDE     0x05 </span>
<a name="l01141"></a><a class="code" href="group__rtcan.html#gbb436ab756394e8844a3925edd92b95c">01141</a> <span class="preprocessor">#define CAN_ERR_PROT_LOC_ID17_13 0x07 </span>
<a name="l01142"></a><a class="code" href="group__rtcan.html#gfd6cd3681ebf245896d282daabdac0b7">01142</a> <span class="preprocessor">#define CAN_ERR_PROT_LOC_ID12_05 0x0F </span>
<a name="l01143"></a><a class="code" href="group__rtcan.html#g00bc04bfcae8d6486aa149cd19dd6102">01143</a> <span class="preprocessor">#define CAN_ERR_PROT_LOC_ID04_00 0x0E </span>
<a name="l01144"></a><a class="code" href="group__rtcan.html#g79567d5df1287ccdd1966d092b5e047c">01144</a> <span class="preprocessor">#define CAN_ERR_PROT_LOC_RTR     0x0C </span>
<a name="l01145"></a><a class="code" href="group__rtcan.html#g13aa190099e1600314bb8e46e0a693ce">01145</a> <span class="preprocessor">#define CAN_ERR_PROT_LOC_RES1    0x0D </span>
<a name="l01146"></a><a class="code" href="group__rtcan.html#gfe744ebfd9a71b557d3059bc3f8aee56">01146</a> <span class="preprocessor">#define CAN_ERR_PROT_LOC_RES0    0x09 </span>
<a name="l01147"></a><a class="code" href="group__rtcan.html#g2aa0ab15f3f4fc974653ff556688046a">01147</a> <span class="preprocessor">#define CAN_ERR_PROT_LOC_DLC     0x0B </span>
<a name="l01148"></a><a class="code" href="group__rtcan.html#g1877b10333d3805f2ea1ef9195a8dee1">01148</a> <span class="preprocessor">#define CAN_ERR_PROT_LOC_DATA    0x0A </span>
<a name="l01149"></a><a class="code" href="group__rtcan.html#g1e56b5931c70b6ecf21a3b7d9ceebe16">01149</a> <span class="preprocessor">#define CAN_ERR_PROT_LOC_CRC_SEQ 0x08 </span>
<a name="l01150"></a><a class="code" href="group__rtcan.html#g893a0c29cb622265c5d22ba7f26575a2">01150</a> <span class="preprocessor">#define CAN_ERR_PROT_LOC_CRC_DEL 0x18 </span>
<a name="l01151"></a><a class="code" href="group__rtcan.html#g14988a58a4514b44061ab5b942c6bbdf">01151</a> <span class="preprocessor">#define CAN_ERR_PROT_LOC_ACK     0x19 </span>
<a name="l01152"></a><a class="code" href="group__rtcan.html#g8e928e081ef83a83c2885259fc0a6002">01152</a> <span class="preprocessor">#define CAN_ERR_PROT_LOC_ACK_DEL 0x1B </span>
<a name="l01153"></a><a class="code" href="group__rtcan.html#g811713c9831116e6e6c42631fb7d287a">01153</a> <span class="preprocessor">#define CAN_ERR_PROT_LOC_EOF     0x1A </span>
<a name="l01154"></a><a class="code" href="group__rtcan.html#gc52eb448c0ec04421f0e21ccf9a496a0">01154</a> <span class="preprocessor">#define CAN_ERR_PROT_LOC_INTERM  0x12 </span>
<a name="l01161"></a>01161 <span class="preprocessor"></span><span class="comment">/* error status of CAN-transceiver / data[4] */</span>
<a name="l01162"></a>01162 <span class="comment">/*                                               CANH CANL */</span>
<a name="l01163"></a><a class="code" href="group__rtcan.html#g2169eab29b3c954598fe6780d98b479a">01163</a> <span class="preprocessor">#define CAN_ERR_TRX_UNSPEC              0x00 </span>
<a name="l01164"></a><a class="code" href="group__rtcan.html#gc39d4c89032cba5c08981182e297c7d7">01164</a> <span class="preprocessor">#define CAN_ERR_TRX_CANH_NO_WIRE        0x04 </span>
<a name="l01165"></a><a class="code" href="group__rtcan.html#g294393d4f39d4476d0c57876c3504a98">01165</a> <span class="preprocessor">#define CAN_ERR_TRX_CANH_SHORT_TO_BAT   0x05 </span>
<a name="l01166"></a><a class="code" href="group__rtcan.html#g85ab738e9c73d380f96371f195aa41ab">01166</a> <span class="preprocessor">#define CAN_ERR_TRX_CANH_SHORT_TO_VCC   0x06 </span>
<a name="l01167"></a><a class="code" href="group__rtcan.html#g325c4d192a7de24a61b8fcca1d434669">01167</a> <span class="preprocessor">#define CAN_ERR_TRX_CANH_SHORT_TO_GND   0x07 </span>
<a name="l01168"></a><a class="code" href="group__rtcan.html#g1ecc59939f560d7e018af307df03a370">01168</a> <span class="preprocessor">#define CAN_ERR_TRX_CANL_NO_WIRE        0x40 </span>
<a name="l01169"></a><a class="code" href="group__rtcan.html#gf4ec9ec512befde085f5a7701d0813fe">01169</a> <span class="preprocessor">#define CAN_ERR_TRX_CANL_SHORT_TO_BAT   0x50 </span>
<a name="l01170"></a><a class="code" href="group__rtcan.html#gce999081029fcd690f89c76aa8738122">01170</a> <span class="preprocessor">#define CAN_ERR_TRX_CANL_SHORT_TO_VCC   0x60 </span>
<a name="l01171"></a><a class="code" href="group__rtcan.html#g428b96738439b9df662a999f1a5f9ffd">01171</a> <span class="preprocessor">#define CAN_ERR_TRX_CANL_SHORT_TO_GND   0x70 </span>
<a name="l01172"></a><a class="code" href="group__rtcan.html#gaed57dcbd07a56050c8915fcd8bd5ba8">01172</a> <span class="preprocessor">#define CAN_ERR_TRX_CANL_SHORT_TO_CANH  0x80 </span>
<a name="l01175"></a>01175 <span class="preprocessor"></span><span class="comment">/* controller specific additional information / data[5..7] */</span>
<a name="l01176"></a>01176 
<a name="l01190"></a>01190 <span class="preprocessor">#endif </span><span class="comment">/* _RTCAN_H */</span>
</pre></div></div>
<hr size="1"><address style="text-align: right;"><small>Generated on Mon Aug 2 12:48:36 2010 for Xenomai API by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>