📄 cpmacro_h.html
字号:
<HTML><HEAD><TITLE>cpmacro.h File Reference</TITLE><LINK HREF="micro.css" REL="stylesheet" TYPE="text/css"></HEAD><BODY BGCOLOR="#FFFFFF"><a name="PageTop"></a><!------ Document Header -------------------------------------------><table border="0" cellspacing="0" cellpadding="0"><tr><td valign="bottom"><img src="pictures/maphead.gif" vspace="0" border="0" height="20"></td></tr></table><table border="0" cellspacing="0" cellpadding="0"><tr><td valign="bottom"><a href="index.html"><img src="pictures/button_index.gif" vspace="0" border="0" height="25"></a></td><td valign="bottom"><a href="files.html"><img src="pictures/button_files.gif" vspace="0" border="0" height="25"></a></td><td valign="bottom"><a href="globals.html"><img src="pictures/button_funcs.gif" vspace="0" border="0" height="25"></a></td><td valign="bottom" width="80"> </td><td valign="bottom"><a href="annotated.html"><img src="pictures/button_structs.gif" vspace="0" border="0" height="25"></a></td><td valign="bottom"><a href="functions.html"><img src="pictures/button_members.gif" vspace="0" border="0" height="25"></a></td></tr></table><hr noshade width=680 size=1 align=left><!------ Document Start --------------------------------------------><table width=680><tr><td><!-- Generated by Doxygen 1.2.6 --><h1>cpmacro.h File Reference</h1>CANpie macros. <a href="#_details">More...</a><p><code>#include "<a class="el" href="cpconst_h-source.html">cpconst.h</a>"</code><br><p><a href="cpmacro_h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0><tr><td colspan=2><br><h2>Defines</h2></td></tr><tr><td nowrap align=right valign=top>#define </td><td valign=bottom><a class="el" href="cpmacro_h.html#a0">CpMacGetBufNum</a>(MSG_PTR) (_U08)(((MSG_PTR)->v_MsgFlags) >> 4)</td></tr><tr><td> </td><td><font size=-1><em>Get message buffer number.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top>#define </td><td valign=bottom><a class="el" href="cpmacro_h.html#a1">CpMacGetData</a>(MSG_PTR, POS) ( (MSG_PTR)->v_MsgData[POS] )</td></tr><tr><td> </td><td><font size=-1><em>Get Data.</em> <a href="#a1">More...</a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top>#define </td><td valign=bottom><a class="el" href="cpmacro_h.html#a2">CpMacGetDlc</a>(MSG_PTR) (_U08)(((MSG_PTR)->v_MsgFlags) & CP_MASK_DLC_BITS)</td></tr><tr><td> </td><td><font size=-1><em>Get Data Length Code.</em> <a href="#a2">More...</a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top>#define </td><td valign=bottom><a class="el" href="cpmacro_h.html#a3">CpMacGetExtId</a>(MSG_PTR) ((MSG_PTR)->v_MsgId) & CP_MASK_EXT_FRAME</td></tr><tr><td> </td><td><font size=-1><em>Get 29 Bit Identifier Value.</em> <a href="#a3">More...</a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top>#define </td><td valign=bottom><a class="el" href="cpmacro_h.html#a4">CpMacGetStdId</a>(MSG_PTR) (_U16)((MSG_PTR)->v_MsgId) & CP_MASK_STD_FRAME</td></tr><tr><td> </td><td><font size=-1><em>Get 11 Bit Identifier Value.</em> <a href="#a4">More...</a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top>#define </td><td valign=bottom><a class="el" href="cpmacro_h.html#a5">CpMacIsExtended</a>(MSG_PTR) (_U08)(((MSG_PTR)->v_MsgId) >> 31)</td></tr><tr><td> </td><td><font size=-1><em>Check the frame type.</em> <a href="#a5">More...</a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top>#define </td><td valign=bottom><a class="el" href="cpmacro_h.html#a6">CpMacIsRemote</a>(MSG_PTR) (_U08)(((MSG_PTR)->v_MsgId) >> 30)</td></tr><tr><td> </td><td><font size=-1><em>Check for remote frame.</em> <a href="#a6">More...</a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top>#define </td><td valign=bottom><a class="el" href="cpmacro_h.html#a7">CpMacMsgClear</a>(MSG_PTR) (MSG_PTR)->v_MsgId= 0;(MSG_PTR)->v_MsgFlags = 0</td></tr><tr><td> </td><td><font size=-1><em>Clear message structure.</em> <a href="#a7">More...</a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top>#define </td><td valign=bottom><a class="el" href="cpmacro_h.html#a8">CpMacSetBufNum</a>(MSG_PTR, VAL) (MSG_PTR)->v_MsgFlags &= (~CP_MASK_BUF_BITS); (MSG_PTR)->v_MsgFlags |= (VAL << 4)</td></tr><tr><td> </td><td><font size=-1><em>Set message buffer number.</em> <a href="#a8">More...</a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top>#define </td><td valign=bottom><a class="el" href="cpmacro_h.html#a9">CpMacSetData</a>(MSG_PTR, POS, VAL) (MSG_PTR)->v_MsgData[POS] = VAL</td></tr><tr><td> </td><td><font size=-1><em>Set Data.</em> <a href="#a9">More...</a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top>#define </td><td valign=bottom><a class="el" href="cpmacro_h.html#a10">CpMacSetDlc</a>(MSG_PTR, DLC) (MSG_PTR)->v_MsgFlags &= (~CP_MASK_DLC_BITS); (MSG_PTR)->v_MsgFlags |= DLC</td></tr><tr><td> </td><td><font size=-1><em>Set Data Length Code.</em> <a href="#a10">More...</a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top>#define </td><td valign=bottom><a class="el" href="cpmacro_h.html#a11">CpMacSetExtId</a>(MSG_PTR, VAL) (MSG_PTR)->v_MsgId = VAL | CP_MASK_EXT_BIT</td></tr><tr><td> </td><td><font size=-1><em>Set 29 Bit Identifier Value.</em> <a href="#a11">More...</a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top>#define </td><td valign=bottom><a class="el" href="cpmacro_h.html#a12">CpMacSetRemote</a>(MSG_PTR) (MSG_PTR)->v_MsgId |= CP_MASK_RTR_BIT</td></tr><tr><td> </td><td><font size=-1><em>Set RTR bit.</em> <a href="#a12">More...</a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top>#define </td><td valign=bottom><a class="el" href="cpmacro_h.html#a13">CpMacSetStdId</a>(MSG_PTR, VAL) (MSG_PTR)->v_MsgId = VAL</td></tr><tr><td> </td><td><font size=-1><em>Set 11 Bit Identifier Value.</em> <a href="#a13">More...</a><em></em></font><br><br></td></tr></table><hr><a name="_details"></a><h2>Detailed Description</h2>CANpie macros.<p><p><p> In order to create small and fast code, CANpie supplies a set of macros to access the CAN message structure (<a class="el" href="struct_CpStruct_CAN.html">CpStruct_CAN</a>). These macros can be used instead of the functions defined in the <a class="el" href="cpmsg_h.html">cpmsg.h</a> header file. However keep in mind that macros can't be used to check for value ranges or parameter consistence. <p> <b>Example</b> <div class="fragment"><pre> <font class="comment">//--- setup a CAN message ----------------------------------------</font> <a class="code" href="struct_CpStruct_CAN.html">CpStruct_CAN</a> myMessage; <a class="code" href="cpmacro_h.html#a7">CpMacMsgClear</a>(&myMessage); <font class="comment">// clear the message</font> <a class="code" href="cpmacro_h.html#a13">CpMacSetStdId</a>(&myMessage, 100, 0); <font class="comment">// identifier is 100 dec, no RTR</font> <a class="code" href="cpmacro_h.html#a10">CpMacSetDlc</a>(&myMessage, 2); <font class="comment">// data length code is 2</font> <a class="code" href="cpmacro_h.html#a9">CpMacSetData</a>(&myMessage, 0, 0x11); <font class="comment">// byte 0 has the value 0x11</font> <a class="code" href="cpmacro_h.html#a9">CpMacSetData</a>(&myMessage, 1, 0x22); <font class="comment">// byte 1 has the value 0x22</font> <font class="comment">//... do something with it ....</font> <font class="comment">//--- evaluate a message that was received -----------------------</font> <a class="code" href="struct_CpStruct_CAN.html">CpStruct_CAN</a> receiveMsg; <font class="comment">//... receive the stuff ....</font> <font class="keywordflow">if</font>(<a class="code" href="cpmacro_h.html#a5">CpMacIsExtended</a>(&receiveMsg)) { <font class="comment">//--- this is an Extended Frame ---------------------</font> DoExtendedMessageService(); <font class="keywordflow">return</font>; } <font class="keywordflow">if</font>(<a class="code" href="cpmacro_h.html#a6">CpMacIsRemote</a>(&receiveMsg)) { <font class="comment">//... do something with RTR frames</font> }</pre></div><p><hr><h2>Define Documentation</h2><a name="a0" doxytag="cpmacro.h::CpMacGetBufNum"></a><p><table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td nowrap valign="top"><b> #define CpMacGetBufNum( </b></td> <td valign="bottom"><b>MSG_PTR ) (_U08)(((MSG_PTR)->v_MsgFlags) >> 4) </table> </td> </tr></table><table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td><p>Get message buffer number.<p><dl compact><dt><b>Parameters: </b><dd><table border=0 cellspacing=2 cellpadding=0><tr><td valign=top><em>MSG_PTR</em> </td><td>Pointer to a <a class="el" href="struct_CpStruct_CAN.html">CpStruct_CAN</a> message<p></td></tr></table></dl>A FullCAN controller has the feature of message buffers. The buffer number is coded in the field v_MsgFlags of the structure <a class="el" href="struct_CpStruct_CAN.html">CpStruct_CAN</a>. With this macro the number of the buffer (index starts at 1) can be retrieved. </td> </tr></table><a name="a1" doxytag="cpmacro.h::CpMacGetData"></a><p><table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td nowrap valign="top"><b> #define CpMacGetData( </b></td> <td valign="bottom"><b>MSG_PTR, POS ) ( (MSG_PTR)->v_MsgData[POS] ) </table> </td> </tr></table><table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td><p>Get Data.<p><dl compact><dt><b>Parameters: </b><dd><table border=0 cellspacing=2 cellpadding=0><tr><td valign=top><em>MSG_PTR</em> </td><td>Pointer to a <a class="el" href="struct_CpStruct_CAN.html">CpStruct_CAN</a> message </td></tr><tr><td valign=top><em>POS</em> </td><td>Zero based index of byte position </td></tr></table></dl><dl compact><dt><b>See also: </b><dd>The corresponding function <a class="el" href="cpmsg_h.html#a6">CpMsgGetData</a>()<p></dl>This macro retrieves the data of a CAN message. The parameter POS must be within the range 0 .. 7. </td> </tr></table><a name="a2" doxytag="cpmacro.h::CpMacGetDlc"></a><p><table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td nowrap valign="top"><b> #define CpMacGetDlc( </b></td> <td valign="bottom"><b>MSG_PTR ) (_U08)(((MSG_PTR)->v_MsgFlags) & CP_MASK_DLC_BITS) </table> </td> </tr></table><table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td><p>Get Data Length Code.<p><dl compact><dt><b>Parameters: </b><dd><table border=0 cellspacing=2 cellpadding=0><tr><td valign=top><em>MSG_PTR</em> </td><td>Pointer to a <a class="el" href="struct_CpStruct_CAN.html">CpStruct_CAN</a> message </td></tr></table></dl><dl compact><dt><b>See also: </b><dd>The corresponding function <a class="el" href="cpmsg_h.html#a4">CpMsgGetDlc</a>()<p></dl>This macro retrieves the data length code (DLC) of a CAN message. </td> </tr></table><a name="a3" doxytag="cpmacro.h::CpMacGetExtId"></a><p><table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td nowrap valign="top"><b> #define CpMacGetExtId( </b></td> <td valign="bottom"><b>MSG_PTR ) ((MSG_PTR)->v_MsgId) & CP_MASK_EXT_FRAME </table> </td> </tr></table><table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td><p>Get 29 Bit Identifier Value.<p><dl compact><dt><b>Parameters: </b><dd><table border=0 cellspacing=2 cellpadding=0><tr><td valign=top><em>MSG_PTR</em> </td><td>Pointer to a <a class="el" href="struct_CpStruct_CAN.html">CpStruct_CAN</a> message </td></tr></table></dl><dl compact><dt><b>See also: </b><dd>The corresponding function <a class="el" href="cpmsg_h.html#a2">CpMsgGetExtId</a>()<p></dl>This macro retrieves the value for the identifier of an extended frame (CAN 2.0B). </td> </tr></table><a name="a4" doxytag="cpmacro.h::CpMacGetStdId"></a><p><table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td nowrap valign="top"><b> #define CpMacGetStdId( </b></td> <td valign="bottom"><b>MSG_PTR ) (_U16)((MSG_PTR)->v_MsgId) & CP_MASK_STD_FRAME </table> </td> </tr></table><table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td><p>Get 11 Bit Identifier Value.<p><dl compact><dt><b>Parameters: </b><dd><table border=0 cellspacing=2 cellpadding=0><tr><td valign=top><em>MSG_PTR</em> </td><td>Pointer to a <a class="el" href="struct_CpStruct_CAN.html">CpStruct_CAN</a> message </td></tr></table></dl><dl compact><dt><b>See also: </b><dd>The corresponding function <a class="el" href="cpmsg_h.html#a0">CpMsgGetStdId</a>()<p></dl>This macro retrieves the value for the identifier of an standard frame (CAN 2.0A). The value is scaled to an unsigned 16 bit value. </td> </tr></table><a name="a5" doxytag="cpmacro.h::CpMacIsExtended"></a><p><table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td nowrap valign="top"><b> #define CpMacIsExtended( </b></td> <td valign="bottom"><b>MSG_PTR ) (_U08)(((MSG_PTR)->v_MsgId) >> 31) </table> </td> </tr></table><table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td><p>Check the frame type.<p><dl compact><dt><b>Parameters: </b><dd><table border=0 cellspacing=2 cellpadding=0><tr><td valign=top><em>MSG_PTR</em> </td><td>Pointer to a <a class="el" href="struct_CpStruct_CAN.html">CpStruct_CAN</a> message<p></td></tr></table></dl>This macro checks the frame type. If the frame is CAN 2.0A (Standard Frame), the value 0 is returned. If the frame is CAN 2.0B (Extended Frame), the value 1 is returned. </td> </tr>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -