<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
Michael,<br>
<br>
I'm sorry I currently don't have the time to support you properly. I
had a look at your PR some days ago, saw some issues and got the
impression something must be missing either from your PR or in my
understanding of your goal with that PR – it seemed the changes now
wouldn't have any effect on poll frequency at all, which I assumed
was the initial goal. I didn't have the time to do a proper
analysis.<br>
<br>
Regarding moving the poller to a job worker/client model, that's
very welcome. I recommend taking a look at my CANopen
implementation, which implements that model and provides workers per
bus, asynchronous and synchronous client APIs and a general shell
interface. While CANopen is quite different from ISOTP, the basic
principles are the same.<br>
<br>
CANopen usage:
<a class="moz-txt-link-freetext" href="https://docs.openvehicles.com/en/latest/components/canopen/docs/index.html">https://docs.openvehicles.com/en/latest/components/canopen/docs/index.html</a><br>
<br>
That was my first larger FreeRTOS application, so may be improvable,
but it works nicely (currently only used by the Twizy adapter).<br>
<br>
Regards,<br>
Michael<br>
<br>
<br>
<div class="moz-cite-prefix">Am 06.04.23 um 11:45 schrieb Michael
Geddes:<br>
</div>
<blockquote type="cite"
cite="mid:CAH0p7uKByGDjCXa7xMx=BaEA6cegdBaT2Ckw2kDiuSujHQ6cKQ@mail.gmail.com">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<div dir="ltr">This is an example of where I'm headed. This
creates and activates a Once-off poll entry that doesn't block
(and removes itself from the poll list once it is done).
<div>A success will call Incoming_Full with a std::string
buffer and a fail calls Incoming_Fail.</div>
<div><br>
<blockquote style="margin:0 0 0 40px;border:none;padding:0px">
<div><font face="monospace">bool
OvmsHyundaiIoniqEv::PollRequestVIN()</font></div>
<div><font face="monospace">{</font></div>
<div><font face="monospace"> if
(!StdMetrics.ms_v_env_awake->AsBool()) {</font></div>
<div><font face="monospace"> ESP_LOGV(TAG,
"PollRequestVIN: Not Awake Request not sent");</font></div>
<div><font face="monospace"> return false;</font></div>
<div><font face="monospace"> }</font></div>
<div><font face="monospace"> auto poll_entry =
std::shared_ptr<OvmsVehicle::OnceOffPoll>(</font></div>
<div><font face="monospace"> new
OvmsVehicle::OnceOffPoll(m_can1,</font></div>
<div><font face="monospace">
std::bind(&OvmsHyundaiIoniqEv::Incoming_Full, this,
_1, _2, _3, _4, _5, _6),</font></div>
<div><font face="monospace">
std::bind(&OvmsHyundaiIoniqEv::Incoming_Fail, this,
_1, _2, _3, _4, _5, _6),</font></div>
<div><font face="monospace">
VEHICLE_OBD_BROADCAST_MODULE_TX,
VEHICLE_OBD_BROADCAST_MODULE_RX,</font></div>
<div><font face="monospace">
VEHICLE_POLL_TYPE_OBDIIVEHICLE, 2,</font></div>
<div><font face="monospace"> ISOTP_STD, 0,
3/*retries*/ ));</font></div>
<div><font face="monospace"> PollRequest("!xiq.vin",
poll_entry);</font></div>
<div><font face="monospace"> return true;</font></div>
<div><font face="monospace">}</font></div>
</blockquote>
</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Tue, 4 Apr 2023 at 07:13,
Michael Geddes <<a
href="mailto:frog@bunyip.wheelycreek.net"
moz-do-not-send="true" class="moz-txt-link-freetext">frog@bunyip.wheelycreek.net</a>>
wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div dir="ltr">
<div>Hi all,<br>
</div>
<div>I was after some feedback on </div>
<a
href="https://github.com/openvehicles/Open-Vehicle-Monitoring-System-3/pull/859"
target="_blank" moz-do-not-send="true"
class="moz-txt-link-freetext">https://github.com/openvehicles/Open-Vehicle-Monitoring-System-3/pull/859</a>
<div>which moves the ISOTP polling into what is currently
the ISOTP response thread.</div>
<div><br>
</div>
<div>
<div>This is part of a larger rework I have been doing to
add flexibility to the loop and to move the poll-loop
operations behind a clean interface.<br>
</div>
</div>
<div><br>
</div>
<div>I'm interested in feedback on the mechanism in the p/r
directly, but I'm also happy to provide the usage examples
I have (which would be the follow-up commits for Ioniq 5).</div>
<div><br>
</div>
<div>I'm also interested in other people's thoughts on where
they see what improvements might be had to the poll-list
mechanism.</div>
<div>Already Done:</div>
<div> * Clean up the blocking poll mechanism</div>
<div> * Allow for multiple concurrent poll lists (still
executed sequentially)</div>
<div> * Add once-off non-blocking poll mechanism</div>
<div> * Add a poll-list that allows repeating
more-frequently than the primary poll</div>
<div><br>
</div>
<div>Ideas:</div>
<div> * Add a user-configurable poller that could possibly
utilise the DBC framework (on top of the existing vehicle
framework) to allow exploring/experimenting with both
passive data as well as polled data. (Given that the DBC
framework already does the heavy lifting of interpreting
data - adding a poll request to that seems to be a nice
way of going)</div>
<div> * ??? Have a poll thread per bus ???</div>
<div> </div>
<div>//.ichael</div>
<div><br>
</div>
<div><br>
</div>
</div>
</blockquote>
</div>
</blockquote>
<br>
<pre class="moz-signature" cols="72">--
Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal
Fon 02333 / 833 5735 * Handy 0176 / 206 989 26</pre>
</body>
</html>