<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">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">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>