<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    A task may delete itself by calling vTaskDelete(NULL) as the final
    statement, and that's normally a better way to shutdown a task, if
    you can signal the task it should terminate. Deleting a task from
    outside may always result in resources taken by the task not being
    freed, as the task gets terminated wherever it just is.<br>
    <br>
    As the vehicle task also needs to access vehicle data memory,
    vehicle destruction should not begin until the task has finished,
    otherwise a task job already running while the vehicle destruction
    takes place may run into an illegal memory access (access after
    free). Keep in mind, destructors are executed bottom up, so waiting
    for the task shutdown within the destructor won't help.<br>
    <br>
    Also, I think "MyCan.DeregisterCallback(TAG)" in ShuttingDown() is
    now obsolete.<br>
    <br>
    Regards,<br>
    Michael<br>
    <br>
    <br>
    <div class="moz-cite-prefix">Am 02.05.24 um 15:23 schrieb Michael
      Geddes:<br>
    </div>
    <blockquote type="cite"
cite="mid:CAH0p7uJ0cqEzP1HLYoE3L-h20mk5OWEQA=SZHKFOz-be5VDnDQ@mail.gmail.com">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <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"
            moz-do-not-send="true" class="moz-txt-link-freetext">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> 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"
                        moz-do-not-send="true"
                        class="moz-txt-link-freetext">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"
                          moz-do-not-send="true"
                          class="moz-txt-link-freetext">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"
                                      moz-do-not-send="true"
                                      class="moz-txt-link-freetext">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"
                                              moz-do-not-send="true"
class="moz-txt-link-freetext">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"
                                                  moz-do-not-send="true"
class="moz-txt-link-freetext">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"
moz-do-not-send="true" class="moz-txt-link-freetext">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" moz-do-not-send="true" class="moz-txt-link-freetext">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" moz-do-not-send="true" class="moz-txt-link-freetext">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" moz-do-not-send="true" class="moz-txt-link-freetext">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" moz-do-not-send="true" class="moz-txt-link-freetext">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" moz-do-not-send="true" class="moz-txt-link-freetext">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" moz-do-not-send="true" class="moz-txt-link-freetext">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" moz-do-not-send="true" class="moz-txt-link-freetext">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" moz-do-not-send="true" class="moz-txt-link-freetext">OvmsDev@lists.openvehicles.com</a>
<a href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev"
rel="noreferrer noreferrer noreferrer noreferrer noreferrer"
target="_blank" moz-do-not-send="true" class="moz-txt-link-freetext">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" moz-do-not-send="true" class="moz-txt-link-freetext">OvmsDev@lists.openvehicles.com</a><br>
                                                          <a
href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev"
rel="noreferrer noreferrer noreferrer noreferrer noreferrer noreferrer"
target="_blank" moz-do-not-send="true" class="moz-txt-link-freetext">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" moz-do-not-send="true" class="moz-txt-link-freetext">OvmsDev@lists.openvehicles.com</a>
<a href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev"
rel="noreferrer noreferrer noreferrer noreferrer noreferrer"
target="_blank" moz-do-not-send="true" class="moz-txt-link-freetext">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" moz-do-not-send="true" class="moz-txt-link-freetext">OvmsDev@lists.openvehicles.com</a>
<a href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev"
rel="noreferrer noreferrer noreferrer noreferrer noreferrer"
target="_blank" moz-do-not-send="true" class="moz-txt-link-freetext">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" moz-do-not-send="true" class="moz-txt-link-freetext">OvmsDev@lists.openvehicles.com</a><br>
                                                        <a
href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev"
rel="noreferrer noreferrer noreferrer noreferrer noreferrer noreferrer"
target="_blank" moz-do-not-send="true" class="moz-txt-link-freetext">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"
                        moz-do-not-send="true"
                        class="moz-txt-link-freetext">OvmsDev@lists.openvehicles.com</a><br>
                      <a
href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev"
                        rel="noreferrer noreferrer noreferrer"
                        target="_blank" moz-do-not-send="true"
                        class="moz-txt-link-freetext">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" moz-do-not-send="true"
            class="moz-txt-link-freetext">OvmsDev@lists.openvehicles.com</a><br>
          <a
href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev"
            rel="noreferrer noreferrer" target="_blank"
            moz-do-not-send="true" class="moz-txt-link-freetext">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a><br>
        </blockquote>
      </div>
    </blockquote>
    <br>
    <pre class="moz-signature" cols="72">-- 
Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal
Fon 02333 / 833 5735 * Handy 0176 / 206 989 26</pre>
  </body>
</html>