[Ovmsdev] P/R 859 - Moving polling to separate thread & More polling ideas

Michael Geddes frog at bunyip.wheelycreek.net
Thu Apr 6 17:45:34 HKT 2023


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).
A success will call Incoming_Full with a std::string buffer  and a fail
calls Incoming_Fail.

bool OvmsHyundaiIoniqEv::PollRequestVIN()
{
  if (!StdMetrics.ms_v_env_awake->AsBool()) {
    ESP_LOGV(TAG, "PollRequestVIN: Not Awake Request not sent");
    return false;
  }
  auto poll_entry = std::shared_ptr<OvmsVehicle::OnceOffPoll>(
      new OvmsVehicle::OnceOffPoll(m_can1,
        std::bind(&OvmsHyundaiIoniqEv::Incoming_Full, this, _1, _2, _3, _4,
_5, _6),
        std::bind(&OvmsHyundaiIoniqEv::Incoming_Fail, this, _1, _2, _3, _4,
_5, _6),
        VEHICLE_OBD_BROADCAST_MODULE_TX, VEHICLE_OBD_BROADCAST_MODULE_RX,
        VEHICLE_POLL_TYPE_OBDIIVEHICLE,  2,
        ISOTP_STD, 0, 3/*retries*/ ));
  PollRequest("!xiq.vin", poll_entry);
  return true;
}


On Tue, 4 Apr 2023 at 07:13, Michael Geddes <frog at bunyip.wheelycreek.net>
wrote:

> Hi all,
> I was after some feedback on
> https://github.com/openvehicles/Open-Vehicle-Monitoring-System-3/pull/859
> which moves the ISOTP polling into what is currently the ISOTP response
> thread.
>
> 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.
>
> 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).
>
> I'm also interested in other people's thoughts on where they see what
> improvements might be had to the poll-list mechanism.
> Already Done:
>   * Clean up the blocking poll mechanism
>   * Allow for multiple concurrent poll lists (still executed sequentially)
>   * Add once-off non-blocking poll mechanism
>   * Add a poll-list that allows repeating more-frequently than the primary
> poll
>
> Ideas:
>   * 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)
>   * ??? Have a poll thread per bus ???
>
> //.ichael
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openvehicles.com/pipermail/ovmsdev/attachments/20230406/53aa924d/attachment.htm>


More information about the OvmsDev mailing list