Aquileo | Recent changes to feature-requestshttps://sourceforge.net/p/canfestival/feature-requests/Recent changes to feature-requestsenThu, 19 Sep 2013 11:30:51 -0000Aquileo | Allow to define timer table externallyhttps://sourceforge.net/p/canfestival/feature-requests/4/<div class="markdown_content"><p>I propose to allow to define the timer table externally via a #define (timers.c):</p>
<div class="codehilite"><pre><span class="cp">#ifndef HAS_EXTERNAL_TIMER_TABLE</span>
<span class="cm">/* --------- The timer table --------- */</span>
<span class="n">s_timer_entry</span> <span class="n">timers</span><span class="p">[</span><span class="n">MAX_NB_TIMER</span><span class="p">]</span> <span class="o">=</span> <span class="p">{{</span><span class="n">TIMER_FREE</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">},};</span>
<span class="cp">#endif</span>
</pre></div>
<p>This allows having multiple timer threads using the same code basis <strong>without modifying the original library code</strong>, following this pattern:</p>
<div class="codehilite"><pre><span class="c1">// <applicfg.h>:</span>
<span class="cp">#define HAS_EXTERNAL_TIMER_TABLE</span>
<span class="cp">#define timers getTimersList()</span>
<span class="n">s_timer_entry</span><span class="o">*</span> <span class="nf">getTimersList</span><span class="p">();</span>
<span class="c1">// <timers_driver.c or any other appropriate>:</span>
<span class="k">static</span> <span class="n">g_timer_entry</span><span class="o">*</span> <span class="n">timersLists</span><span class="p">[</span><span class="mi">256</span><span class="p">];</span>
<span class="n">s_timer_entry</span><span class="o">*</span> <span class="nf">getTimersList</span><span class="p">()</span>
<span class="p">{</span>
<span class="k">return</span> <span class="n">timersLists</span><span class="p">[</span><span class="n">getIndexForTaskId</span><span class="p">()];</span>
<span class="p">}</span>
</pre></div>
<p>In this example <code>timers[n]</code> would expand to <code>getTimersList()[n]</code> with a list per running timer task, a variant would be to have the timers lists per object dictionary:</p>
<div class="codehilite"><pre><span class="c1">// <applicfg.h>:</span>
<span class="cp">#define HAS_EXTERNAL_TIMER_TABLE</span>
<span class="cp">#define timers getTimersList(d)</span>
<span class="n">s_timer_entry</span><span class="o">*</span> <span class="nf">getTimersList</span><span class="p">(</span><span class="n">CO_Data</span><span class="o">*</span> <span class="n">d</span><span class="p">);</span>
<span class="c1">// <timers_driver.c or any other appropriate>:</span>
<span class="k">static</span> <span class="n">g_timer_entry</span><span class="o">*</span> <span class="n">timersLists</span><span class="p">[</span><span class="mi">256</span><span class="p">];</span>
<span class="n">s_timer_entry</span><span class="o">*</span> <span class="nf">getTimersList</span><span class="p">(</span><span class="n">CO_Data</span><span class="o">*</span> <span class="n">d</span><span class="p">)</span>
<span class="p">{</span>
<span class="k">return</span> <span class="n">timersLists</span><span class="p">[</span><span class="n">getIndexForOD</span><span class="p">(</span><span class="n">d</span><span class="p">)];</span>
<span class="p">}</span>
</pre></div>
</div>Sandro BoehlerThu, 19 Sep 2013 11:30:51 -0000https://sourceforge.netdd061a1cd5dfd15f850c88030e60331469671c2aAquileo | Unlock reserved indexes 0x1019 - 0x11FFhttps://sourceforge.net/p/canfestival/feature-requests/3/<div class="markdown_content"><p>Hi!<br />
I have to use indexes from 0x1019 to 0x11FF (some of them) in my application. And it would be perfect to unlock them in Object Editor to edit.</p>
<p>Unfortunetly, i can't edit our local protocol and have to search alternative ways. And at the same time, a don't want to stop using CANFestival stack. So, unlocking of those indexes would be perfect!<br />
Thank you!</p></div>ilyaikMon, 11 Mar 2013 14:15:38 -0000https://sourceforge.net29d38002c8c1e85a8184df737a4c7a6a08bd7ea1Aquileo | SDO server error messageshttps://sourceforge.net/p/canfestival/feature-requests/2/<div class="markdown_content"><p>Hello,</p>
<p>The SDO server of CanFestival is not sending 0x0504 0001 error message if command specifier is invalid.</p></div>mursusSat, 19 Jan 2013 10:11:26 -0000https://sourceforge.net849ade662d86ee0ae20bb3ac73e4427661dcc87eAquileo | Add more checks to SDO client operationshttps://sourceforge.net/p/canfestival/feature-requests/1/<div class="markdown_content"><p>Hello,</p>
<p>I have bumped into problems with CanFestival SDO client operations<br />
when reading/writing parameters fast from/to other CANopen modules.<br />
The problem occurs when e.g. last read operation ended to timeout and<br />
then immediately starting to read another parameter from the same<br />
device. If the remote device still responded to last read request, the<br />
response of last operation might be used to newly started SDO<br />
operation although the response was for different parameter. This<br />
causes confusion with the read values.</p>
<p>However, there's rather easy solution for this; check that the index<br />
and subindex of the SDO response frame from the SDO server match to<br />
newly started SDO client operation. If they do not match, simply<br />
ignore the response. This requires following changes; implement index<br />
/ sub-index checking to each SDO response handling frame for SDO<br />
client branches in proceedSDO and ignoring the frames in case they do<br />
not match. I was thinking I could implement this and send a patch for<br />
you to add it to CanFestival version control.</p>
<p>How do you like the idea? I think this should be implemented to avoid<br />
situations described above.</p>
<p>BR. Jari Kuusisto</p></div>Edouard TISSERANTThu, 09 Sep 2010 14:03:04 -0000https://sourceforge.netfe0113c790260e62ffd2391e9664525848ad9def