doc/doxygen/html/objacces_8h-source.html
author etisserant
Mon, 02 Jul 2007 18:22:58 +0200
changeset 236 905677ed00f3
parent 215 f49e5a6b7804
child 240 34654679f262
permissions -rw-r--r--
Full preliminary implementation of TPDO transmit type:
- SYNC (N) (1-240)
- RTR only + SYNC (252)
- RTR only (253)
- EVENT, with timer and inhibit time (254 and 255)

User app have to call sendPDOevent(d) to eventually signal mapped data changes.
Callbacks added to 0x140N, TPDO comm parameters for on the fly timers values change.
TestMasterSlave updated.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>CanFestival: include/objacces.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.1 -->
<div class="tabs">
  <ul>
    <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
    <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
    <li id="current"><a href="files.html"><span>Files</span></a></li>
    <li><a href="dirs.html"><span>Directories</span></a></li>
  </ul></div>
<div class="tabs">
  <ul>
    <li><a href="files.html"><span>File&nbsp;List</span></a></li>
    <li><a href="globals.html"><span>Globals</span></a></li>
  </ul></div>
<div class="nav">
<a class="el" href="dir_2209bfb26110ae52d50da4cefad5e72f.html">include</a></div>
<h1>objacces.h</h1><a href="objacces_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment">This file is part of CanFestival, a library implementing CanOpen Stack. </span>
<a name="l00003"></a>00003 <span class="comment"></span>
<a name="l00004"></a>00004 <span class="comment">Copyright (C): Edouard TISSERANT and Francis DUPIN</span>
<a name="l00005"></a>00005 <span class="comment"></span>
<a name="l00006"></a>00006 <span class="comment">See COPYING file for copyrights details.</span>
<a name="l00007"></a>00007 <span class="comment"></span>
<a name="l00008"></a>00008 <span class="comment">This library is free software; you can redistribute it and/or</span>
<a name="l00009"></a>00009 <span class="comment">modify it under the terms of the GNU Lesser General Public</span>
<a name="l00010"></a>00010 <span class="comment">License as published by the Free Software Foundation; either</span>
<a name="l00011"></a>00011 <span class="comment">version 2.1 of the License, or (at your option) any later version.</span>
<a name="l00012"></a>00012 <span class="comment"></span>
<a name="l00013"></a>00013 <span class="comment">This library is distributed in the hope that it will be useful,</span>
<a name="l00014"></a>00014 <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<a name="l00015"></a>00015 <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU</span>
<a name="l00016"></a>00016 <span class="comment">Lesser General Public License for more details.</span>
<a name="l00017"></a>00017 <span class="comment"></span>
<a name="l00018"></a>00018 <span class="comment">You should have received a copy of the GNU Lesser General Public</span>
<a name="l00019"></a>00019 <span class="comment">License along with this library; if not, write to the Free Software</span>
<a name="l00020"></a>00020 <span class="comment">Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA</span>
<a name="l00021"></a>00021 <span class="comment">*/</span>
<a name="l00022"></a>00022 
<a name="l00034"></a>00034 <span class="preprocessor">#ifndef __objacces_h__</span>
<a name="l00035"></a>00035 <span class="preprocessor"></span><span class="preprocessor">#define __objacces_h__</span>
<a name="l00036"></a>00036 <span class="preprocessor"></span>
<a name="l00037"></a>00037 <span class="preprocessor">#include &lt;<a class="code" href="win32_2applicfg_8h.html">applicfg.h</a>&gt;</span>
<a name="l00038"></a>00038 
<a name="l00039"></a><a class="code" href="objacces_8h.html#270e94e9acf61da8b2f36b3ebdbf2fdd">00039</a> <span class="keyword">typedef</span> <a class="code" href="hcs12_2applicfg_8h.html#889a782714194ae2f780002d25d6e0be">UNS32</a> (*<a class="code" href="objacces_8h.html#270e94e9acf61da8b2f36b3ebdbf2fdd">valueRangeTest_t</a>)(<a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a> typeValue, <span class="keywordtype">void</span> *Value);
<a name="l00040"></a><a class="code" href="objacces_8h.html#7b55b55a3f5ed8e4b2991cb85c7be7ce">00040</a> <span class="keyword">typedef</span> void (* <a class="code" href="objacces_8h.html#7b55b55a3f5ed8e4b2991cb85c7be7ce">storeODSubIndex_t</a>)(<a class="code" href="hcs12_2applicfg_8h.html#5528eeccf214bfe021532622d78c6a96">UNS16</a> wIndex, <a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a> bSubindex);
<a name="l00041"></a>00041 <span class="keywordtype">void</span> <a class="code" href="objacces_8c.html#43bf8d2616cf3d7d713b4af3d33a139c">_storeODSubIndex</a> (<a class="code" href="hcs12_2applicfg_8h.html#5528eeccf214bfe021532622d78c6a96">UNS16</a> wIndex, <a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a> bSubindex);
<a name="l00042"></a>00042 
<a name="l00043"></a>00043 <span class="preprocessor">#include "<a class="code" href="data_8h.html">data.h</a>"</span>
<a name="l00044"></a>00044 
<a name="l00045"></a>00045 
<a name="l00046"></a>00046 
<a name="l00047"></a>00047 <span class="comment">/*</span>
<a name="l00048"></a>00048 <span class="comment">Print MSG_WAR (s) if error to the access to the object dictionary occurs.</span>
<a name="l00049"></a>00049 <span class="comment">You must uncomment the lines</span>
<a name="l00050"></a>00050 <span class="comment">//#define DEBUG_CAN</span>
<a name="l00051"></a>00051 <span class="comment">//#define DEBUG_WAR_CONSOLE_ON</span>
<a name="l00052"></a>00052 <span class="comment">//#define DEBUG_ERR_CONSOLE_ON</span>
<a name="l00053"></a>00053 <span class="comment">in the file objaccess.c</span>
<a name="l00054"></a>00054 <span class="comment">sizeDataDict : Size of the data defined in the dictionary</span>
<a name="l00055"></a>00055 <span class="comment">sizeDataGiven : Size data given by the user.</span>
<a name="l00056"></a>00056 <span class="comment">code : error code to print. (SDO abort code. See file def.h)</span>
<a name="l00057"></a>00057 <span class="comment">Beware that sometimes, we force the sizeDataDict or sizeDataGiven to 0, when we wants to use</span>
<a name="l00058"></a>00058 <span class="comment">this function but we do not have the access to the right value. One example is</span>
<a name="l00059"></a>00059 <span class="comment">getSDOerror(). So do not take attention to these variables if they are null.</span>
<a name="l00060"></a>00060 <span class="comment">*/</span>
<a name="l00061"></a>00061 
<a name="l00062"></a>00062 <a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a> <a class="code" href="objacces_8c.html#75d39b2dadcdb48f7321c6f3766aad26">accessDictionaryError</a>(<a class="code" href="hcs12_2applicfg_8h.html#5528eeccf214bfe021532622d78c6a96">UNS16</a> index, <a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a> subIndex, 
<a name="l00063"></a>00063                            <a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a> sizeDataDict, <a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a> sizeDataGiven, <a class="code" href="hcs12_2applicfg_8h.html#889a782714194ae2f780002d25d6e0be">UNS32</a> code);
<a name="l00064"></a>00064 
<a name="l00065"></a>00065 
<a name="l00066"></a>00066 <span class="comment">/* Reads an entry from the object dictionary.\n</span>
<a name="l00067"></a>00067 <span class="comment"> *  \code</span>
<a name="l00068"></a>00068 <span class="comment"> *  // Example usage:</span>
<a name="l00069"></a>00069 <span class="comment"> *  UNS8  *pbData;</span>
<a name="l00070"></a>00070 <span class="comment"> *  UNS8 length;</span>
<a name="l00071"></a>00071 <span class="comment"> *  UNS32 returnValue;</span>
<a name="l00072"></a>00072 <span class="comment"> *</span>
<a name="l00073"></a>00073 <span class="comment"> *  returnValue = getODentry( (UNS16)0x100B, (UNS8)1, </span>
<a name="l00074"></a>00074 <span class="comment"> *  (void * *)&amp;pbData, (UNS8 *)&amp;length );</span>
<a name="l00075"></a>00075 <span class="comment"> *  if( returnValue != SUCCESSFUL )</span>
<a name="l00076"></a>00076 <span class="comment"> *  {</span>
<a name="l00077"></a>00077 <span class="comment"> *      // error handling</span>
<a name="l00078"></a>00078 <span class="comment"> *  }</span>
<a name="l00079"></a>00079 <span class="comment"> *  \endcode </span>
<a name="l00080"></a>00080 <span class="comment"> *  \param wIndex The index in the object dictionary where you want to read</span>
<a name="l00081"></a>00081 <span class="comment"> *                an entry</span>
<a name="l00082"></a>00082 <span class="comment"> *  \param bSubindex The subindex of the Index. e.g. mostly subindex 0 is</span>
<a name="l00083"></a>00083 <span class="comment"> *                   used to tell you how many valid entries you can find</span>
<a name="l00084"></a>00084 <span class="comment"> *                   in this index. Look at the canopen standard for further</span>
<a name="l00085"></a>00085 <span class="comment"> *                   information</span>
<a name="l00086"></a>00086 <span class="comment"> *  \param ppbData Pointer to the pointer which points to the variable where</span>
<a name="l00087"></a>00087 <span class="comment"> *                 the value of this object dictionary entry should be copied</span>
<a name="l00088"></a>00088 <span class="comment"> *  \param pdwSize This function writes the size of the copied value (in Byte)</span>
<a name="l00089"></a>00089 <span class="comment"> *                 into this variable.</span>
<a name="l00090"></a>00090 <span class="comment"> *  \param pDataType : The type of the data. See objdictdef.h</span>
<a name="l00091"></a>00091 <span class="comment"> *  \param CheckAccess if other than 0, do not read if the data is Write Only</span>
<a name="l00092"></a>00092 <span class="comment"> *                     [Not used today. Put always 0].</span>
<a name="l00093"></a>00093 <span class="comment"> *  \return OD_SUCCESSFUL or SDO abort code. (See file def.h)</span>
<a name="l00094"></a>00094 <span class="comment"> */</span>
<a name="l00095"></a>00095 <a class="code" href="hcs12_2applicfg_8h.html#889a782714194ae2f780002d25d6e0be">UNS32</a> <a class="code" href="objacces_8c.html#39c263a4bc5d2d824fefe22fdb4c2dac">getODentry</a>( <a class="code" href="structstruct__CO__Data.html">CO_Data</a>* d, 
<a name="l00096"></a>00096                   <a class="code" href="hcs12_2applicfg_8h.html#5528eeccf214bfe021532622d78c6a96">UNS16</a> wIndex,
<a name="l00097"></a>00097                   <a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a> bSubindex,
<a name="l00098"></a>00098                   <span class="keywordtype">void</span> * pDestData,
<a name="l00099"></a>00099                   <a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a> * pExpectedSize,
<a name="l00100"></a>00100                   <a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a> * pDataType,
<a name="l00101"></a>00101                   <a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a> checkAccess);
<a name="l00102"></a>00102 
<a name="l00103"></a>00103 
<a name="l00104"></a>00104 <span class="comment">/* By this function you can write an entry into the object dictionary\n</span>
<a name="l00105"></a>00105 <span class="comment"> *  \code</span>
<a name="l00106"></a>00106 <span class="comment"> *  // Example usage:</span>
<a name="l00107"></a>00107 <span class="comment"> *  UNS8 B;</span>
<a name="l00108"></a>00108 <span class="comment"> *  B = 0xFF; // set transmission type</span>
<a name="l00109"></a>00109 <span class="comment"> *</span>
<a name="l00110"></a>00110 <span class="comment"> *  retcode = setODentry( (UNS16)0x1800, (UNS8)2, &amp;B, sizeof(UNS8), 1 );</span>
<a name="l00111"></a>00111 <span class="comment"> *  \endocde</span>
<a name="l00112"></a>00112 <span class="comment"> *  \param wIndex The index in the object dictionary where you want to write</span>
<a name="l00113"></a>00113 <span class="comment"> *                an entry</span>
<a name="l00114"></a>00114 <span class="comment"> *  \param bSubindex The subindex of the Index. e.g. mostly subindex 0 is</span>
<a name="l00115"></a>00115 <span class="comment"> *                   used to tell you how many valid entries you can find</span>
<a name="l00116"></a>00116 <span class="comment"> *                   in this index. Look at the canopen standard for further</span>
<a name="l00117"></a>00117 <span class="comment"> *                   information</span>
<a name="l00118"></a>00118 <span class="comment"> *  \param pbData Pointer to the variable that holds the value that should</span>
<a name="l00119"></a>00119 <span class="comment"> *                 be copied into the object dictionary</span>
<a name="l00120"></a>00120 <span class="comment"> *  \param dwSize The size of the value (in Byte).</span>
<a name="l00121"></a>00121 <span class="comment"> *  \param CheckAccess if other than 0, do not read if the data is Read Only or Constant</span>
<a name="l00122"></a>00122 <span class="comment"> *  \return OD_SUCCESSFUL or SDO abort code. (See file def.h)</span>
<a name="l00123"></a>00123 <span class="comment"> */</span>
<a name="l00124"></a>00124 <a class="code" href="hcs12_2applicfg_8h.html#889a782714194ae2f780002d25d6e0be">UNS32</a> <a class="code" href="objacces_8c.html#17e598cc1b2e60380e2e4e75afe9b3b0">setODentry</a>( <a class="code" href="structstruct__CO__Data.html">CO_Data</a>* d, 
<a name="l00125"></a>00125                   <a class="code" href="hcs12_2applicfg_8h.html#5528eeccf214bfe021532622d78c6a96">UNS16</a> wIndex,
<a name="l00126"></a>00126                   <a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a> bSubindex, 
<a name="l00127"></a>00127                   <span class="keywordtype">void</span> * pSourceData, 
<a name="l00128"></a>00128                   <a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a> * pExpectedSize, 
<a name="l00129"></a>00129                   <a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a> checkAccess);
<a name="l00130"></a>00130 
<a name="l00131"></a>00131 <span class="comment">/*The same, without endianisation*/</span>
<a name="l00132"></a>00132 <a class="code" href="hcs12_2applicfg_8h.html#889a782714194ae2f780002d25d6e0be">UNS32</a> <a class="code" href="objacces_8c.html#7cc58d6e7711bd0d9fd75e8ff721ce36">writeLocalDict</a>( <a class="code" href="structstruct__CO__Data.html">CO_Data</a>* d, 
<a name="l00133"></a>00133                   <a class="code" href="hcs12_2applicfg_8h.html#5528eeccf214bfe021532622d78c6a96">UNS16</a> wIndex,
<a name="l00134"></a>00134                   <a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a> bSubindex, 
<a name="l00135"></a>00135                   <span class="keywordtype">void</span> * pSourceData, 
<a name="l00136"></a>00136                   <a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a> * pExpectedSize, 
<a name="l00137"></a>00137                   <a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a> checkAccess);
<a name="l00138"></a>00138 
<a name="l00139"></a>00139 
<a name="l00140"></a>00140 <span class="comment">/* Scan the index of object dictionary. Used only by setODentry and getODentry.</span>
<a name="l00141"></a>00141 <span class="comment"> *  *errorCode :  OD_SUCCESSFUL if index foundor SDO abort code. (See file def.h)</span>
<a name="l00142"></a>00142 <span class="comment"> *  Return NULL if index not found. Else : return the table part of the object dictionary.</span>
<a name="l00143"></a>00143 <span class="comment"> */</span>
<a name="l00144"></a>00144  <span class="keyword">const</span> <a class="code" href="structtd__indextable.html">indextable</a> * <a class="code" href="objacces_8c.html#11e9f24840d05a6a622955b51f91af53">scanIndexOD</a> (<a class="code" href="structstruct__CO__Data.html">CO_Data</a>* d, <a class="code" href="hcs12_2applicfg_8h.html#5528eeccf214bfe021532622d78c6a96">UNS16</a> wIndex, <a class="code" href="hcs12_2applicfg_8h.html#889a782714194ae2f780002d25d6e0be">UNS32</a> *errorCode, <a class="code" href="objdictdef_8h.html#91481b154cacc926ae5824fd121d6b43">ODCallback_t</a> **Callback);
<a name="l00145"></a>00145 
<a name="l00146"></a>00146 <a class="code" href="hcs12_2applicfg_8h.html#889a782714194ae2f780002d25d6e0be">UNS32</a> <a class="code" href="objacces_8c.html#514e7b9c13835a86446b1cd38fa34049">RegisterSetODentryCallBack</a>(<a class="code" href="structstruct__CO__Data.html">CO_Data</a>* d, <a class="code" href="hcs12_2applicfg_8h.html#5528eeccf214bfe021532622d78c6a96">UNS16</a> wIndex, <a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a> bSubindex, <a class="code" href="objdictdef_8h.html#91481b154cacc926ae5824fd121d6b43">ODCallback_t</a> Callback);
<a name="l00147"></a>00147 
<a name="l00148"></a>00148 <span class="preprocessor">#endif </span><span class="comment">/* __objacces_h__ */</span>
</pre></div><hr size="1"><address style="align: right;"><small>Generated on Fri Jun 8 08:51:39 2007 for CanFestival by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.1 </small></address>
</body>
</html>