<div dir="auto">Thanks.<div dir="auto"><br></div><div dir="auto">On that race condition... do you think we are better to just delete the task  or I saw one recommendation that</div><div dir="auto">We can delete it outside the while loop in the task itself! </div><div dir="auto"><br></div><div dir="auto">//.ichael </div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, 30 Apr 2024, 17:46 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>
    OK, understood & merged, thanks for the quick fix/workaround.<br>
    <br>
    I'll ask the Twizy driver to test this.<br>
    <br>
    Regards,<br>
    Michael<br>
    <br>
    PS: side note: there's a shutdown race condition arising from `while
    (!m_is_shutdown)` in the new `OvmsVehicle::VehicleTask()`: if the
    task receives a message while m_is_shutdown already has been set, it
    will exit the loop and return from the task function, which isn't
    allowed. I think FreeRTOS will abort in that case.<br>
    <br>
    <br>
    <br>
    <div>Am 30.04.24 um 08:55 schrieb Michael
      Geddes:<br>
    </div>
    <blockquote type="cite">
      
      <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" target="_blank" rel="noreferrer">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">
              <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" rel="noreferrer noreferrer" target="_blank">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" rel="noreferrer noreferrer" target="_blank">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 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 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 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 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 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 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 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 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 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 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 noreferrer" target="_blank">OvmsDev@lists.openvehicles.com</a>
<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>
</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 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>
                                                      <br>
                                                      <fieldset></fieldset>
                                                      <pre>_______________________________________________
OvmsDev mailing list
<a href="mailto:OvmsDev@lists.openvehicles.com" rel="noreferrer 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 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 noreferrer" target="_blank">OvmsDev@lists.openvehicles.com</a>
<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>
</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 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>
                                          </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" rel="noreferrer noreferrer" target="_blank">OvmsDev@lists.openvehicles.com</a><br>
              <a href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" rel="noreferrer noreferrer noreferrer" target="_blank">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a><br>
            </blockquote>
          </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>