<div dir="auto">No it will start the poll thread of the poller fine for those that don't use it.  That's the last commit.... so that should be covered. When the callback is registered the thread is force started.<div dir="auto"><br></div><div dir="auto"><br></div><div dir="auto">This is not to say that what you are suggesting isn't a better way forward... just that it should work.</div><div dir="auto"><br></div><div dir="auto">Michael <br><div dir="auto"><br></div><br><br><div class="gmail_quote" dir="auto"><div dir="ltr" class="gmail_attr">On Tue, 30 Apr 2024, 14:51 Michael Balzer via OvmsDev, <<a href="mailto:ovmsdev@lists.openvehicles.com">ovmsdev@lists.openvehicles.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><u></u>

  
    
  
  <div>
    Michael,<br>
    <br>
    (taking this back to the list, as other developers may have helpful
    ideas or suggestions)<br>
    <br>
    from a first check, your new patch (PR #1008) won't help for
    vehicles that don't use the poller, like the generic DBC vehicle or
    the Fiat 500 (plus possibly non-public third party vehicles). As the
    poller is normally compiled in, these would need a run time switch
    to re-enable the vehicle task, or more suitably default into that
    configuration and switch to the poller task only when the poller
    gets initialized.<br>
    <br>
    How about moving the task back into the vehicle class, but keeping
    your task message extensions while doing so, and adding a way for
    the poller to hook into the task? The dedicated vehicle task is an
    essential part of the vehicle framework, but I do remember some
    occasions where a general way to pass custom messages to the vehicle
    task would have been helpful to use the task for more than CAN
    processing.<br>
    <br>
    If the poller shall become avaible as a separate service that can be
    used without any vehicle instance (currently not a defined use
    case), the construct of a CAN processor task that can be extended
    for custom messages (or a message processor task that can subscribe
    to CAN frames) could be factored out into a dedicated class or
    template. The poller could then create his own instance of that
    class, if it cannot hook into an existing one.<br>
    <br>
    Btw, in case you're not aware of this, FreeRTOS also provides queue
    sets (<a href="https://www.freertos.org/RTOS-queue-sets.html" target="_blank" rel="noreferrer">https://www.freertos.org/RTOS-queue-sets.html</a>). We haven't
    used them in the OVMS yet, but they could be useful, especially if
    message unions become large or tasks shall be able to dynamically
    subscribe to different message sources.<br>
    <br>
    Regards,<br>
    Michael<br>
    <br>
    <br>
    <div>Am 30.04.24 um 01:20 schrieb Michael
      Geddes:<br>
    </div>
    <blockquote type="cite">
      
      <div dir="ltr">
        <div dir="auto">
          <div>It might be worth reverting, but, I've got a patch
            suggestion that I'll push up which will let me know if I
            understand everything and which might provide a solution.</div>
          <div><br>
          </div>
          <div>If this isn't going to work then revert. (P/R coming)</div>
          <div dir="auto"><br>
          </div>
          <div>While the poller was still a part of the vehicle class it
            was probably still all ok.   The poller had taken over what
            I assume you are talking about as the vehicle task.  A
            call-back fromthe poller was calling IncomingPollRxFrame
            which was then coming from the (now) poller task (is that
            correct?)</div>
          <div><br>
          </div>
          <div>While we have OVMS_COMP_POLLER config defined, we could
            just use the poller task to provide the IncomingPollRxFrame
            call-back from the poller (was vehicle?) task.</div>
          <div><br>
          </div>
          <div>The problem is when OVMS_COMP_POLLER is undefined, we
            need an alternate (maybe we could use the 'Event' loop then)
            which is when I hacked that bad solution.</div>
          <div><br>
          </div>
          <div><br>
          </div>
          <div>//.ichael</div>
          <div><br>
          </div>
          <div dir="auto"><br>
          </div>
          <div dir="auto">I was thinking though that because everything
            is being queued we could divert some calls into the car <br>
            <br>
            <div class="gmail_quote" dir="auto">
              <div dir="ltr" class="gmail_attr">On Mon, 29 Apr 2024,
                18:58 Michael Balzer, <<a href="mailto:dexter@expeedo.de" target="_blank" rel="noreferrer">dexter@expeedo.de</a>>
                wrote:<br>
              </div>
              <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
                <div> Michael,<br>
                  <br>
                  I've found a severe design flaw with your poller
                  change. Sorry, I should have seen that before, and
                  shouldn't have merged this.<br>
                  <br>
                  You have moved the standard CAN frame processing from
                  the vehicle task into the CAN task by changing the
                  vehicle from a CAN listener to a CAN callback
                  processor. That will break all kind of things,
                  vehicles like the Twizy, Smart and many others rely on
                  frame processing being done in the dedicated vehicle
                  task.<br>
                  <br>
                  This especially induces issues regarding CAN
                  processing capacity, as the vehicles rely on having a
                  separate context and not needing to decouple complex
                  processing of incoming frames. So this will degrade
                  the CAN processing performance seriously in many
                  cases, where additional steps involving file or
                  network I/O need to be done.<br>
                  <br>
                  So this needs to be changed back.<br>
                  <br>
                  I assumed you introduced a new dedicated poller task
                  but kept the vehicle task intact. From your naming
                  (OvmsVehicle::IncomingPollRxFrame), it seems you
                  misinterpreted the vehicle task's purpose as only
                  being used for polling.<br>
                  <br>
                  I assume this isn't a small change…? If so we should
                  revert the poller merge, to avoid having a
                  defunctional edge build state until the fix.<br>
                  <br>
                  <br>
                  Secondly: logging is generally expensive regardless of
                  the log level control and log channels enabled. Any
                  log message needs to be queued to the log system, so
                  involves a lock and a potential wait state (for the
                  queue) & resulting context switch (= minimum delay
                  of 10 ms). Therefore, logging must be avoided as far
                  as possible in any time critical context, and is
                  forbidden under some circumstances, e.g. in a timer
                  callback (see FreeRTOS docs on this). The log system
                  load multiplies with connected web clients or enabled
                  file logging and enabled debug / verbose level logging
                  -- that quickly becomes too much, usually triggering
                  the task watchdog.<br>
                  <br>
                  Your logging of nearly all bus events passing to/from
                  the poller (especially the log entry in
                  Queue_PollerFrame) becomes an issue on any vehicle
                  that has high frequency running process data frames on
                  the bus, like the Twizy or Smart. As a counter
                  measure, I've just added a runtime control for all the
                  poller's verbose logging (by default now off), and
                  changed some debug level logs to verbose. Not sure if
                  I've catched all that may need to be silenced by
                  default. Please check all your log calls and place
                  them under the new "trace" control flag wherever
                  appropriate.<br>
                  <br>
                  This won't help avoiding issues with process data
                  frame buses though.<br>
                  <br>
                  <br>
                  Shall I revert the poller merge for now?<br>
                  <br>
                  Regards,<br>
                  Michael<br>
                  <br>
                  <br>
                  <br>
                  <div>Am 29.04.24 um 06:18 schrieb Michael Geddes:<br>
                  </div>
                  <blockquote type="cite">
                    <div dir="auto">Btw I included the log changes in
                      the p/r which is a few small commits for the
                      poller.
                      <div dir="auto"><br>
                      </div>
                      <div dir="auto">//.</div>
                    </div>
                    <br>
                    <div class="gmail_quote">
                      <div dir="ltr" class="gmail_attr">On Mon, 29 Apr
                        2024, 07:20 Michael Geddes, <<a href="mailto:frog@bunyip.wheelycreek.net" rel="noreferrer noreferrer" target="_blank">frog@bunyip.wheelycreek.net</a>>
                        wrote:<br>
                      </div>
                      <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
                        <div dir="ltr">Hey Michael,
                          <div>I've got to work now (it's Monday), but I
                            suspect those 'giving up' are from
                            unsolicited messages on the bus.</div>
                          <div>I can re-order things so that the message
                            will likely be  'dropped (no poll entry)'
                            rather than the time-out message. </div>
                          <div>And make it a verbose log.</div>
                          <div><br>
                          </div>
                          <div>//.ichael </div>
                        </div>
                        <br>
                        <div class="gmail_quote">
                          <div dir="ltr" class="gmail_attr">On Mon, 29
                            Apr 2024 at 00:25, Michael Balzer <<a href="mailto:dexter@expeedo.de" rel="noreferrer noreferrer noreferrer" target="_blank">dexter@expeedo.de</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> Michael,<br>
                              <br>
                              forwarding the Twizy logs to you directly,
                              as they contain the user location.<br>
                              <br>
                              He has just verified it's the new version,
                              he says the module stops responding as
                              soon as he turns on the Twizy.<br>
                              <br>
                              His description of his actions is a bit
                              ambiguous, and it seems he didn't enable
                              logging to the file persistently.<br>
                              <br>
                              According to the server, these were the
                              version boot times:<br>
                              <br>
                              2024-04-28 15:30:56    0   
                              3.3.004-32-g125e0841/ota_0/edge (build idf
                              v3.3.4-849-g6e214dc335 Apr 26 2024
                              19:16:50)<br>
                              2024-04-28 16:21:08    0   
                              3.3.004-32-g125e0841/ota_0/edge (build idf
                              v3.3.4-849-g6e214dc335 Apr 26 2024
                              19:16:50)<br>
                              2024-04-28 16:38:33    0   
                              3.3.004-63-gf3595561/ota_1/edge (build idf
                              v3.3.4-849-g6e214dc335 Apr 27 2024
                              07:44:50)<br>
                              2024-04-28 16:40:57    0   
                              3.3.004-63-gf3595561/ota_1/edge (build idf
                              v3.3.4-849-g6e214dc335 Apr 27 2024
                              07:44:50)<br>
                              2024-04-28 16:43:14    0   
                              3.3.004-63-gf3595561/ota_1/edge (build idf
                              v3.3.4-849-g6e214dc335 Apr 27 2024
                              07:44:50)<br>
                              2024-04-28 16:46:39    0   
                              3.3.004-63-gf3595561/ota_1/edge (build idf
                              v3.3.4-849-g6e214dc335 Apr 27 2024
                              07:44:50)<br>
                              2024-04-28 16:54:44    0   
                              3.3.004-32-g125e0841/ota_0/edge (build idf
                              v3.3.4-849-g6e214dc335 Apr 26 2024
                              19:16:50)<br>
                              <br>
                              Attached is also his crash debug log --
                              a2ll doesn't tell much about what
                              happened, but maybe you get an idea from
                              this.<br>
                              <br>
                              After the boot at 16:46, there are
                              immediately lots of these messages:<br>
                              <br>
                              2024-04-28 16:46:33.792 CEST D (39042)
                              vehicle-poll: Poller: Queue PollerFrame()<br>
                              2024-04-28 16:46:33.792 CEST D (39042)
                              vehicle-poll: [1]Poller: Incoming - giving
                              up<br>
                              <br>
                              Regards,<br>
                              Michael<br>
                              <br>
                              <br>
                              <div>Am 28.04.24 um 16:44 schrieb Michael
                                Geddes:<br>
                              </div>
                              <blockquote type="cite">
                                <div dir="auto">Ah. OK.
                                  <div dir="auto"><br>
                                  </div>
                                  <div dir="auto">I could try to fix the
                                    vin thing using the new way of doing
                                    it and get rid of a semaphore? </div>
                                  <div dir="auto">It would at least
                                    identify the problem possibly?</div>
                                  <div dir="auto"><br>
                                  </div>
                                  <div dir="auto">Michael </div>
                                  <div dir="auto"><br>
                                  </div>
                                </div>
                                <br>
                                <div class="gmail_quote">
                                  <div dir="ltr" class="gmail_attr">On
                                    Sun, 28 Apr 2024, 22:32 Michael
                                    Balzer via OvmsDev, <<a href="mailto:ovmsdev@lists.openvehicles.com" rel="noreferrer noreferrer noreferrer" target="_blank">ovmsdev@lists.openvehicles.com</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> Not sure if that's the
                                      problem, but I've found a
                                      different behaviour with the new
                                      PollSetState() implementation.<br>
                                      <br>
                                      The old version only did anything
                                      if the new state actually was
                                      different from the previous one.
                                      The Twizy relies on this
                                      behaviour, calling PollSetState()
                                      from the per second ticker (see
                                      OvmsVehicleRenaultTwizy::ObdTicker1).<br>
                                      <br>
                                      The new implementation apparently
                                      always sends the PollState command
                                      to the task, and that in turn
                                      always at least locks the poller
                                      mutex. Not sure if/how that could
                                      cause the observed issues, but it
                                      definitely adds quite some
                                      (unnecessary?) lock/unlock
                                      operations.<br>
                                      <br>
                                      <br>
                                      <br>
                                      <div>Am 28.04.24 um 16:05 schrieb
                                        Michael Balzer via OvmsDev:<br>
                                      </div>
                                      <blockquote type="cite"> The Twizy
                                        uses the poller to query the VIN
                                        (once) and DTCs (every 10
                                        seconds while driving), see
                                        rt_obd2.cpp.<br>
                                        <br>
                                        It also has its own version of
                                        the OBD single request
                                        (OvmsVehicleRenaultTwizy::ObdRequest),
                                        which was the precursor for the
                                        generalized version. This is
                                        used by custom/user Twizy
                                        plugins and scripts to access
                                        ECU internals.<br>
                                        <br>
                                        The Twizy doesn't use
                                        IncomingPollRxFrame, but the
                                        Twizy's IncomingPollReply
                                        handler will log any poll
                                        responses it doesn't know about,
                                        so that could lead to a lot of
                                        log output if something goes
                                        wrong there.<br>
                                        <br>
                                        <br>
                                        <div>Am 28.04.24 um 15:49
                                          schrieb Michael Geddes via
                                          OvmsDev:<br>
                                        </div>
                                        <blockquote type="cite">
                                          <div dir="ltr">
                                            <div>AFAICT the twizzy
                                              doesn't use the poller
                                              list at all.  So is it
                                              missing a call-back or
                                              something??</div>
                                            <div><br>
                                            </div>
                                            <div>I can see a potential
                                              problem with
                                              IncomingPollRxFrame being
                                              called twice as much as it
                                              should be but only when
                                              there is a poll list. 
                                              Maybe commenting out this
                                              would do it.  (I can find
                                              another away to get this
                                              called on the thread I
                                              want).  This might be the
                                              problem with the smarted</div>
                                            <div><br>
                                            </div>
                                            <div><font face="monospace">void
OvmsVehicle::OvmsVehicleSignal::IncomingPollRxFrame(canbus* bus,
                                                CAN_frame_t *frame, bool
                                                success)<br>
                                                  {<br>
                                                  //if (Ready())<br>
                                                  // 
                                                m_parent->IncomingPollRxFrame(frame,
                                                success);<br>
                                                  }<br>
                                              </font></div>
                                            <div><br>
                                            </div>
                                            <div>//.</div>
                                            <div><br>
                                            </div>
                                            <br>
                                            <div class="gmail_quote">
                                              <div dir="ltr" class="gmail_attr">On
                                                Sun, 28 Apr 2024 at
                                                21:10, Michael Balzer
                                                via OvmsDev <<a href="mailto:ovmsdev@lists.openvehicles.com" rel="noreferrer noreferrer noreferrer noreferrer" target="_blank">ovmsdev@lists.openvehicles.com</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> There may also be
                                                  an issue with the
                                                  Renault Twizy, I've
                                                  received a report of a
                                                  user who is using the
                                                  edge builds, that the
                                                  latest build wouldn't
                                                  work.<br>
                                                  <br>
                                                  He reports all kinds
                                                  of errors and warnings
                                                  signaled by the car
                                                  during driving, and
                                                  switching back to the
                                                  previous build fixed
                                                  the issues.<br>
                                                  <br>
                                                  I've asked him to
                                                  provide a debug log
                                                  excerpt if possible.<br>
                                                  <br>
                                                  Regards,<br>
                                                  Michael<br>
                                                  <br>
                                                  <br>
                                                  <div>Am 28.04.24 um
                                                    14:29 schrieb
                                                    Michael Geddes via
                                                    OvmsDev:<br>
                                                  </div>
                                                  <blockquote type="cite">
                                                    <div dir="auto">
                                                      <div>OK. That's
                                                        bad.</div>
                                                      <div dir="auto"><br>
                                                      </div>
                                                      <div dir="auto">Does
                                                        the reading work
                                                        in general?</div>
                                                      <div dir="auto"><br>
                                                      </div>
                                                      <div dir="auto">Is
                                                        it just the
                                                        writing
                                                        commands?</div>
                                                      <div dir="auto"><br>
                                                      </div>
                                                      <div dir="auto">Raise
                                                        a ticket on
                                                        github and tag
                                                        me in and we can
                                                        address it that
                                                        way.</div>
                                                      <div dir="auto"><br>
                                                      </div>
                                                      <div dir="auto">Michael</div>
                                                      <div dir="auto"><br>
                                                        <div class="gmail_quote" dir="auto">
                                                          <div dir="ltr" class="gmail_attr">On Sun, 28 Apr 2024, 19:49 Thomas Heuer via OvmsDev,
                                                          <<a href="mailto:ovmsdev@lists.openvehicles.com" rel="noreferrer noreferrer noreferrer noreferrer" target="_blank">ovmsdev@lists.openvehicles.com</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 lang="DE">
                                                          <div>
                                                          <p class="MsoNormal"><span style="font-size:11pt">Hi,</span></p>
                                                          <p class="MsoNormal"><span style="font-size:11pt"> </span></p>
                                                          <p class="MsoNormal"><span style="font-size:11pt" lang="EN-GB">The new
                                                          poller code
                                                          doesn't seem
                                                          to work
                                                          properly with
                                                          the smarted.</span></p>
                                                          <div style="border:1pt solid rgb(204,204,204);padding:7pt;background:whitesmoke">
                                                          <p class="MsoNormal" style="margin-bottom:7.5pt;background:whitesmoke;word-break:break-all;border:none;padding:0cm"><span style="font-size:8.5pt;font-family:"Cascadia Mono";color:gray" lang="EN-GB">D
                                                          (218831)
                                                          vehicle-poll:
[1]PollerNextTick(PRI): cycle complete for ticker=215</span></p>
                                                          <p class="MsoNormal" style="margin-bottom:7.5pt;background:whitesmoke;word-break:break-all;border:none;padding:0cm"><span style="font-size:8.5pt;font-family:"Cascadia Mono";color:gray" lang="EN-GB">V
                                                          (218831)
                                                          vehicle-poll:
                                                          Standard Poll
                                                          Series: List
                                                          reset</span></p>
                                                          <p class="MsoNormal" style="margin-bottom:7.5pt;background:whitesmoke;word-break:break-all;border:none;padding:0cm"><span style="font-size:8.5pt;font-family:"Cascadia Mono";color:gray" lang="EN-GB">D
                                                          (218831)
                                                          vehicle-poll:
PollSeriesList::NextPollEntry[!v.standard]: ReachedEnd</span></p>
                                                          <p class="MsoNormal" style="margin-bottom:7.5pt;background:whitesmoke;word-break:break-all;border:none;padding:0cm"><span style="font-size:8.5pt;font-family:"Cascadia Mono";color:gray" lang="EN-GB">V
                                                          (218831)
                                                          vehicle-poll:
                                                          [1]PollerSend:
                                                          Poller Reached
                                                          End</span></p>
                                                          <p class="MsoNormal" style="margin-bottom:7.5pt;background:whitesmoke;word-break:break-all;border:none;padding:0cm"><span style="font-size:8.5pt;font-family:"Cascadia Mono";color:gray" lang="EN-GB">D
                                                          (219691)
                                                          vehicle-poll:
                                                          Poller: Queue
                                                          PollerFrame()</span></p>
                                                          <p class="MsoNormal" style="margin-bottom:7.5pt;background:whitesmoke;word-break:break-all;border:none;padding:0cm"><span style="font-size:8.5pt;font-family:"Cascadia Mono";color:gray" lang="EN-GB">D
                                                          (219691)
                                                          vehicle-poll:
                                                          Poller: Queue
                                                          PollerFrame()</span></p>
                                                          <p class="MsoNormal" style="margin-bottom:7.5pt;background:whitesmoke;word-break:break-all;border:none;padding:0cm"><span style="font-size:8.5pt;font-family:"Cascadia Mono";color:gray" lang="EN-GB">V
                                                          (219691)
                                                          vehicle-poll:
                                                          Pollers:
                                                          FrameRx(bus=2)</span></p>
                                                          <p class="MsoNormal" style="margin-bottom:7.5pt;background:whitesmoke;word-break:break-all;border:none;padding:0cm"><span style="font-size:8.5pt;font-family:"Cascadia Mono";color:gray" lang="EN-GB">D
                                                          (219691)
                                                          vehicle-poll:
                                                          Poller: Queue
                                                          PollerFrame()</span></p>
                                                          <p class="MsoNormal" style="margin-bottom:7.5pt;background:whitesmoke;word-break:break-all;border:none;padding:0cm"><span style="font-size:8.5pt;font-family:"Cascadia Mono";color:gray" lang="EN-GB">V
                                                          (219691)
                                                          vehicle-poll:
                                                          Pollers:
                                                          FrameRx(bus=2)</span></p>
                                                          <p class="MsoNormal" style="margin-bottom:7.5pt;background:whitesmoke;word-break:break-all;border:none;padding:0cm"><span style="font-size:8.5pt;font-family:"Cascadia Mono";color:gray" lang="EN-GB">V
                                                          (219691)
                                                          vehicle-poll:
                                                          Pollers:
                                                          FrameRx(bus=2)</span></p>
                                                          <p class="MsoNormal" style="margin-bottom:7.5pt;background:whitesmoke;word-break:break-all;border:none;padding:0cm"><span style="font-size:8.5pt;font-family:"Cascadia Mono";color:gray" lang="EN-GB">D
                                                          (219691)
                                                          vehicle-poll:
                                                          Poller: Queue
                                                          PollerFrame()</span></p>
                                                          <p class="MsoNormal" style="margin-bottom:7.5pt;background:whitesmoke;word-break:break-all;border:none;padding:0cm"><b><span style="font-size:10pt;font-family:"Cascadia Mono";color:rgb(0,34,0)" lang="EN-GB">OVMS#</span></b><span style="font-size:10pt;font-family:"Cascadia Mono";color:rgb(0,34,0)" lang="EN-GB"> </span><span style="font-size:9pt;font-family:"Cascadia Mono";color:white;background:rgb(51,51,51)" lang="EN-GB">unlock
                                                          22</span><span style="font-size:10pt;font-family:"Cascadia Mono";color:rgb(0,34,0)" lang="EN-GB"><br>
                                                          Vehicle
                                                          unlocked</span></p>
                                                          <p class="MsoNormal" style="margin-bottom:7.5pt;background:whitesmoke;word-break:break-all;border:none;padding:0cm"><span style="font-size:8.5pt;font-family:"Cascadia Mono";color:gray" lang="EN-GB">V
                                                          (219691)
                                                          vehicle-poll:
                                                          Pollers:
                                                          FrameRx(bus=2)</span></p>
                                                          <p class="MsoNormal" style="margin-bottom:7.5pt;background:whitesmoke;word-break:break-all;border:none;padding:0cm"><span style="font-size:8.5pt;font-family:"Cascadia Mono";color:gray" lang="EN-GB">D
                                                          (219691)
                                                          vehicle-poll:
                                                          Poller: Queue
                                                          PollerFrame()</span></p>
                                                          <p class="MsoNormal" style="margin-bottom:7.5pt;background:whitesmoke;word-break:break-all;border:none;padding:0cm"><span style="font-size:8.5pt;font-family:"Cascadia Mono";color:gray" lang="EN-GB">V
                                                          (219691)
                                                          vehicle-poll:
                                                          Pollers:
                                                          FrameRx(bus=2)</span></p>
                                                          <p class="MsoNormal" style="margin-bottom:7.5pt;background:whitesmoke;word-break:break-all;border:none;padding:0cm"><span style="font-size:8.5pt;font-family:"Cascadia Mono";color:gray" lang="EN-GB">D
                                                          (219701)
                                                          vehicle-poll:
                                                          Poller: Queue
                                                          PollerFrame()</span></p>
                                                          <p class="MsoNormal" style="margin-bottom:7.5pt;background:whitesmoke;word-break:break-all;border:none;padding:0cm"><span style="font-size:8.5pt;font-family:"Cascadia Mono";color:gray" lang="EN-GB">V
                                                          (219701)
                                                          vehicle-poll:
                                                          Pollers:
                                                          FrameRx(bus=2)</span></p>
                                                          <p class="MsoNormal" style="margin-bottom:7.5pt;background:whitesmoke;word-break:break-all;border:none;padding:0cm"><span style="font-size:8.5pt;font-family:"Cascadia Mono";color:gray" lang="EN-GB">D
                                                          (219701)
                                                          vehicle-poll:
                                                          Poller: Queue
                                                          PollerFrame()</span></p>
                                                          <p class="MsoNormal" style="margin-bottom:7.5pt;background:whitesmoke;word-break:break-all;border:none;padding:0cm"><span style="font-size:8.5pt;font-family:"Cascadia Mono";color:gray" lang="EN-GB">V
                                                          (219701)
                                                          vehicle-poll:
                                                          Pollers:
                                                          FrameRx(bus=2)</span></p>
                                                          <p class="MsoNormal" style="margin-bottom:7.5pt;background:whitesmoke;word-break:break-all;border:none;padding:0cm"><span style="font-size:8.5pt;font-family:"Cascadia Mono";color:gray" lang="EN-GB">D
                                                          (219701)
                                                          vehicle-poll:
                                                          Poller: Queue
                                                          PollerFrame()</span></p>
                                                          <p class="MsoNormal" style="margin-bottom:7.5pt;background:whitesmoke;word-break:break-all;border:none;padding:0cm"><span style="font-size:8.5pt;font-family:"Cascadia Mono";color:gray" lang="EN-GB">V
                                                          (219701)
                                                          vehicle-poll:
                                                          Pollers:
                                                          FrameRx(bus=2)</span></p>
                                                          <p class="MsoNormal" style="margin-bottom:7.5pt;background:whitesmoke;word-break:break-all;border:none;padding:0cm"><span style="font-size:8.5pt;font-family:"Cascadia Mono";color:gray" lang="EN-GB">D
                                                          (219701)
                                                          vehicle-poll:
                                                          Poller: Queue
                                                          PollerFrame()</span></p>
                                                          <p class="MsoNormal" style="margin-bottom:7.5pt;background:whitesmoke;word-break:break-all;border:none;padding:0cm"><span style="font-size:8.5pt;font-family:"Cascadia Mono";color:gray" lang="EN-GB">V
                                                          (219701)
                                                          vehicle-poll:
                                                          Pollers:
                                                          FrameRx(bus=2)</span></p>
                                                          <p class="MsoNormal" style="margin-bottom:7.5pt;background:whitesmoke;word-break:break-all;border:none;padding:0cm"><span style="font-size:8.5pt;font-family:"Cascadia Mono";color:gray" lang="EN-GB">D
                                                          (219701)
                                                          vehicle-poll:
                                                          Poller: Queue
                                                          PollerFrame()</span></p>
                                                          <p class="MsoNormal" style="margin-bottom:7.5pt;background:whitesmoke;word-break:break-all;border:none;padding:0cm"><span style="font-size:8.5pt;font-family:"Cascadia Mono";color:gray" lang="EN-GB">V
                                                          (219701)
                                                          vehicle-poll:
                                                          Pollers:
                                                          FrameRx(bus=2)</span></p>
                                                          <p class="MsoNormal" style="margin-bottom:7.5pt;background:whitesmoke;word-break:break-all;border:none;padding:0cm"><span style="font-size:8.5pt;font-family:"Cascadia Mono";color:gray" lang="EN-GB">D
                                                          (219701)
                                                          vehicle-poll:
                                                          Poller: Queue
                                                          PollerFrame()</span></p>
                                                          <p class="MsoNormal" style="margin-bottom:7.5pt;background:whitesmoke;word-break:break-all;border:none;padding:0cm"><span style="font-size:8.5pt;font-family:"Cascadia Mono";color:gray" lang="EN-GB">V
                                                          (219701)
                                                          vehicle-poll:
                                                          Pollers:
                                                          FrameRx(bus=2)</span></p>
                                                          <p class="MsoNormal" style="margin-bottom:7.5pt;background:whitesmoke;word-break:break-all;border:none;padding:0cm"><span style="font-size:8.5pt;font-family:"Cascadia Mono";color:gray" lang="EN-GB">D
                                                          (219701)
                                                          vehicle-poll:
                                                          Poller: Queue
                                                          PollerFrame()</span></p>
                                                          <p class="MsoNormal" style="margin-bottom:7.5pt;background:whitesmoke;word-break:break-all;border:none;padding:0cm"><span style="font-size:8.5pt;font-family:"Cascadia Mono";color:gray" lang="EN-GB">V
                                                          (219701)
                                                          vehicle-poll:
                                                          Pollers:
                                                          FrameRx(bus=2)</span></p>
                                                          <p class="MsoNormal" style="margin-bottom:7.5pt;background:whitesmoke;word-break:break-all;border:none;padding:0cm"><span style="font-size:8.5pt;font-family:"Cascadia Mono";color:gray" lang="EN-GB">D
                                                          (219701)
                                                          vehicle-poll:
                                                          Poller: Queue
                                                          PollerFrame()</span></p>
                                                          <p class="MsoNormal" style="margin-bottom:7.5pt;background:whitesmoke;word-break:break-all;border:none;padding:0cm"><span style="font-size:8.5pt;font-family:"Cascadia Mono";color:gray" lang="EN-GB">V
                                                          (219701)
                                                          vehicle-poll:
                                                          Pollers:
                                                          FrameRx(bus=2)</span></p>
                                                          <p class="MsoNormal" style="margin-bottom:7.5pt;background:whitesmoke;word-break:break-all;border:none;padding:0cm"><span style="font-size:8.5pt;font-family:"Cascadia Mono";color:gray" lang="EN-GB">D
                                                          (219701)
                                                          vehicle-poll:
                                                          Poller: Queue
                                                          PollerFrame()</span></p>
                                                          <p class="MsoNormal" style="margin-bottom:7.5pt;background:whitesmoke;word-break:break-all;border:none;padding:0cm"><span style="font-size:8.5pt;font-family:"Cascadia Mono";color:gray" lang="EN-GB">V
                                                          (219701)
                                                          vehicle-poll:
                                                          Pollers:
                                                          FrameRx(bus=2)</span></p>
                                                          <p class="MsoNormal" style="margin-bottom:7.5pt;background:whitesmoke;word-break:break-all;border:none;padding:0cm"><span style="font-size:8.5pt;font-family:"Cascadia Mono";color:gray" lang="EN-GB">D
                                                          (219701)
                                                          vehicle-poll:
                                                          Poller: Queue
                                                          PollerFrame()</span></p>
                                                          <p class="MsoNormal" style="margin-bottom:7.5pt;background:whitesmoke;word-break:break-all;border:none;padding:0cm"><span style="font-size:8.5pt;font-family:"Cascadia Mono";color:gray" lang="EN-GB">V
                                                          (219701)
                                                          vehicle-poll:
                                                          Pollers:
                                                          FrameRx(bus=2)</span></p>
                                                          <p class="MsoNormal" style="margin-bottom:7.5pt;background:whitesmoke;word-break:break-all;border:none;padding:0cm"><span style="font-size:8.5pt;font-family:"Cascadia Mono";color:gray" lang="EN-GB">D
                                                          (219701)
                                                          vehicle-poll:
                                                          Poller: Queue
                                                          PollerFrame()</span></p>
                                                          </div>
                                                          <p class="MsoNormal"><span style="font-size:11pt" lang="EN-GB"> </span></p>
                                                          <p class="MsoNormal"><span style="font-size:11pt" lang="EN-GB"> </span></p>
                                                          <div style="border-right:none;border-bottom:none;border-left:none;border-top:1pt solid rgb(225,225,225);padding:3pt 0cm 0cm">
                                                          <p class="MsoNormal"><b><span style="font-size:11pt;font-family:Calibri,sans-serif">Von:</span></b><span style="font-size:11pt;font-family:Calibri,sans-serif"> OvmsDev <<a href="mailto:ovmsdev-bounces@lists.openvehicles.com" rel="noreferrer noreferrer noreferrer noreferrer noreferrer" target="_blank">ovmsdev-bounces@lists.openvehicles.com</a>>
                                                          <b>Im Auftrag
                                                          von </b>Michael
                                                          Geddes via
                                                          OvmsDev<br>
                                                          <b>Gesendet:</b>
                                                          Sonntag, 28.
                                                          April 2024
                                                          12:27<br>
                                                          <b>An:</b>
                                                          OVMS
                                                          Developers
                                                          <<a href="mailto:ovmsdev@lists.openvehicles.com" rel="noreferrer noreferrer noreferrer noreferrer noreferrer" target="_blank">ovmsdev@lists.openvehicles.com</a>><br>
                                                          <b>Cc:</b>
                                                          Michael Geddes
                                                          <<a href="mailto:frog@bunyip.wheelycreek.net" rel="noreferrer noreferrer noreferrer noreferrer noreferrer" target="_blank">frog@bunyip.wheelycreek.net</a>><br>
                                                          <b>Betreff:</b>
                                                          [Ovmsdev] OVMS
                                                          Poller
                                                          module/singleton</span></p>
                                                          </div>
                                                          <p class="MsoNormal"> </p>
                                                          <div>
                                                          <p class="MsoNormal">Hey all,</p>
                                                          <div>
                                                          <p class="MsoNormal"> </p>
                                                          </div>
                                                          <div>
                                                          <p class="MsoNormal">The poller singleton code that I've been working on
                                                          for over a
                                                          year now is
                                                          merged in.
                                                          (Thanks
                                                          Michael for
                                                          expediting the
                                                          final step).</p>
                                                          </div>
                                                          <div>
                                                          <p class="MsoNormal"> </p>
                                                          </div>
                                                          <div>
                                                          <p class="MsoNormal">This includes separate multi-frame states per bus and
                                                          multiple poll
                                                          lists as well
                                                          as
                                                          non-blocking
                                                          one off
                                                          queries. As
                                                          well as more
                                                          'states'.</p>
                                                          </div>
                                                          <div>
                                                          <p class="MsoNormal"> </p>
                                                          </div>
                                                          <div>
                                                          <p class="MsoNormal">I have included some programming documentation in the
                                                          change but am
                                                          happy to
                                                          supply more if
                                                          needed. </p>
                                                          </div>
                                                          <div>
                                                          <p class="MsoNormal"> </p>
                                                          </div>
                                                          <div>
                                                          <p class="MsoNormal">The ioniq 5 code has some examples of how it can be
                                                          used. Some
                                                          examples are:</p>
                                                          </div>
                                                          <div>
                                                          <p class="MsoNormal"> </p>
                                                          </div>
                                                          <div>
                                                          <p class="MsoNormal">* grabbing the vin as a one shot without blocking </p>
                                                          </div>
                                                          <div>
                                                          <p class="MsoNormal">* having a short list of queries that are polled
                                                          quickly for
                                                          obd2ecu (this
                                                          also
                                                          demonstrates
                                                          using a
                                                          shorter frame
                                                          break value
                                                          and then a
                                                          break after
                                                          successful a
                                                          response)</p>
                                                          </div>
                                                          <div>
                                                          <p class="MsoNormal"> </p>
                                                          </div>
                                                          <div>
                                                          <p class="MsoNormal">Have a play please!</p>
                                                          </div>
                                                          <div>
                                                          <p class="MsoNormal"> </p>
                                                          </div>
                                                          <div>
                                                          <p class="MsoNormal">Also interested in hearing what user tools might be
                                                          worth looking
                                                          at next for
                                                          the poller
                                                          object.</p>
                                                          </div>
                                                          <div>
                                                          <p class="MsoNormal"> </p>
                                                          </div>
                                                          <div>
                                                          <p class="MsoNormal">//.ichael G.</p>
                                                          </div>
                                                          <div>
                                                          <p class="MsoNormal"> </p>
                                                          </div>
                                                          <div>
                                                          <p class="MsoNormal"> </p>
                                                          </div>
                                                          <div>
                                                          <p class="MsoNormal"> </p>
                                                          </div>
                                                          <div>
                                                          <p class="MsoNormal"> </p>
                                                          </div>
                                                          </div>
                                                          </div>
                                                          </div>
_______________________________________________<br>
                                                          OvmsDev
                                                          mailing list<br>
                                                          <a href="mailto:OvmsDev@lists.openvehicles.com" rel="noreferrer noreferrer noreferrer noreferrer noreferrer" target="_blank">OvmsDev@lists.openvehicles.com</a><br>
                                                          <a href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" rel="noreferrer noreferrer noreferrer noreferrer noreferrer noreferrer" target="_blank">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a><br>
                                                          </blockquote>
                                                        </div>
                                                      </div>
                                                    </div>
                                                    <br>
                                                    <fieldset></fieldset>
                                                    <pre>_______________________________________________
OvmsDev mailing list
<a href="mailto:OvmsDev@lists.openvehicles.com" rel="noreferrer noreferrer noreferrer noreferrer" target="_blank">OvmsDev@lists.openvehicles.com</a>
<a href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" rel="noreferrer noreferrer noreferrer noreferrer" target="_blank">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a>
</pre>
                                                  </blockquote>
                                                  <br>
                                                  <pre cols="72">-- 
Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal
Fon 02333 / 833 5735 * Handy 0176 / 206 989 26</pre>
                                                </div>
_______________________________________________<br>
                                                OvmsDev mailing list<br>
                                                <a href="mailto:OvmsDev@lists.openvehicles.com" rel="noreferrer noreferrer noreferrer noreferrer" target="_blank">OvmsDev@lists.openvehicles.com</a><br>
                                                <a href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" rel="noreferrer noreferrer noreferrer noreferrer noreferrer" target="_blank">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a><br>
                                              </blockquote>
                                            </div>
                                          </div>
                                          <br>
                                          <fieldset></fieldset>
                                          <pre>_______________________________________________
OvmsDev mailing list
<a href="mailto:OvmsDev@lists.openvehicles.com" rel="noreferrer noreferrer noreferrer noreferrer" target="_blank">OvmsDev@lists.openvehicles.com</a>
<a href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" rel="noreferrer noreferrer noreferrer noreferrer" target="_blank">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a>
</pre>
                                        </blockquote>
                                        <br>
                                        <pre cols="72">-- 
Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal
Fon 02333 / 833 5735 * Handy 0176 / 206 989 26</pre>
                                        <br>
                                        <fieldset></fieldset>
                                        <pre>_______________________________________________
OvmsDev mailing list
<a href="mailto:OvmsDev@lists.openvehicles.com" rel="noreferrer noreferrer noreferrer noreferrer" target="_blank">OvmsDev@lists.openvehicles.com</a>
<a href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" rel="noreferrer noreferrer noreferrer noreferrer" target="_blank">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a>
</pre>
                                      </blockquote>
                                      <br>
                                      <pre cols="72">-- 
Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal
Fon 02333 / 833 5735 * Handy 0176 / 206 989 26</pre>
                                    </div>
_______________________________________________<br>
                                    OvmsDev mailing list<br>
                                    <a href="mailto:OvmsDev@lists.openvehicles.com" rel="noreferrer noreferrer noreferrer noreferrer" target="_blank">OvmsDev@lists.openvehicles.com</a><br>
                                    <a href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" rel="noreferrer noreferrer noreferrer noreferrer noreferrer" target="_blank">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a><br>
                                  </blockquote>
                                </div>
                              </blockquote>
                              <br>
                              <pre cols="72">-- 
Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal
Fon 02333 / 833 5735 * Handy 0176 / 206 989 26</pre>
                            </div>
                          </blockquote>
                        </div>
                      </blockquote>
                    </div>
                  </blockquote>
                  <br>
                  <pre cols="72">-- 
Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal
Fon 02333 / 833 5735 * Handy 0176 / 206 989 26</pre>
                </div>
              </blockquote>
            </div>
          </div>
        </div>
      </div>
    </blockquote>
    <br>
    <pre cols="72">-- 
Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal
Fon 02333 / 833 5735 * Handy 0176 / 206 989 26</pre>
  </div>

_______________________________________________<br>
OvmsDev mailing list<br>
<a href="mailto:OvmsDev@lists.openvehicles.com" target="_blank" rel="noreferrer">OvmsDev@lists.openvehicles.com</a><br>
<a href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" rel="noreferrer noreferrer" target="_blank">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a><br>
</blockquote></div></div></div>