<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
The Twizy feedback looks better, 3.3.004-74-gbd4e7196 seems to be
fully functional again.<br>
<br>
Regards,<br>
Michael<br>
<br>
<br>
<div class="moz-cite-prefix">Am 03.05.24 um 13:35 schrieb Michael
Geddes via OvmsDev:<br>
</div>
<blockquote type="cite"
cite="mid:CAH0p7uJt3CKA2pJO4oqLLvs5phfa=A0dnNtTNjsuVnepF25exQ@mail.gmail.com">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<div dir="auto">
<div>Thanks that is definitely weird. Will check it out in
detail tomorrow.
<div dir="auto">
<div dir="auto"><br>
</div>
<div dir="auto"><br>
</div>
<div dir="auto">Michael </div>
</div>
<br>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Fri, 3 May 2024, 19:10
Derek Caudwell 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 dir="ltr">
<div>Hi Michael,</div>
<div><br>
</div>
When running firmware
<span
style="color:rgb(0,34,0);font-family:ui-monospace,"Cascadia Mono","Segoe UI Mono",Hack,"Source Code Pro","Roboto Mono",Menlo,Monaco,Consolas,monospace;font-size:13px">3.3.004-74-gbd4e7196
on my Nissan Leaf I suspect (but can't be 100% sure as
it's only been 24h without fault) the new poller
caused the car to throw the attached faults from
overloading the can bus whilst driving. The fault was
sufficient to send the car into limp mode and could
not be driven until cleared with LeafSpy. Ovms should
not be polling in the driving state, so I'm not sure
why the poller is overflowing.</span>
<div><span
style="color:rgb(0,34,0);font-family:ui-monospace,"Cascadia Mono","Segoe UI Mono",Hack,"Source Code Pro","Roboto Mono",Menlo,Monaco,Consolas,monospace;font-size:13px"><br>
</span></div>
<div><span
style="color:rgb(0,34,0);font-family:ui-monospace,"Cascadia Mono","Segoe UI Mono",Hack,"Source Code Pro","Roboto Mono",Menlo,Monaco,Consolas,monospace;font-size:13px">The
ovms log repeats this overflow in rapid succession
right before the failure occurred. I have since
reverted to an earlier version and it might be
advisable for other Leaf owners to do so until the
new poller is fully operational.</span>
<div><span
style="color:rgb(0,34,0);font-family:ui-monospace,"Cascadia Mono","Segoe UI Mono",Hack,"Source Code Pro","Roboto Mono",Menlo,Monaco,Consolas,monospace;font-size:13px"><br>
</span></div>
<p class="MsoNormal"
style="margin:0cm;line-height:normal;font-size:11pt;font-family:Calibri,sans-serif"><span
style="font-size:10pt;font-family:"Courier New";color:black">2024-05-02
12:22:28.316 NZST I (36847486)
vehicle-poll: Poller[Frame]: Task Queue Overflow</span></p>
<p class="MsoNormal"
style="margin:0cm;line-height:normal;font-size:11pt;font-family:Calibri,sans-serif"><span
style="font-size:10pt;font-family:"Courier New";color:black">2024-05-02
12:22:28.316 NZST I (36847486)
vehicle-poll: Poller[Frame]: Task Queue Overflow</span></p>
<p class="MsoNormal"
style="margin:0cm;line-height:normal;font-size:11pt;font-family:Calibri,sans-serif"><span
style="font-size:10pt;font-family:"Courier New";color:black">2024-05-02
12:22:28.316 NZST I (36847486)
vehicle-poll: Poller[Frame]: Task Queue Overflow</span></p>
<p class="MsoNormal"
style="margin:0cm;line-height:normal;font-size:11pt;font-family:Calibri,sans-serif"><span
style="font-size:10pt;font-family:"Courier New";color:black">2024-05-02
12:22:28.326 NZST I (36847496)
vehicle-poll: Poller[Frame]: Task Queue Overflow</span></p>
<p class="MsoNormal"
style="margin:0cm;line-height:normal;font-size:11pt;font-family:Calibri,sans-serif"><span
style="font-size:10pt;font-family:"Courier New";color:black">2024-05-02
12:22:28.326 NZST I (36847496)
vehicle-poll: Poller[Frame]: Task Queue Overflow</span></p>
<p class="MsoNormal"
style="margin:0cm;line-height:normal;font-size:11pt;font-family:Calibri,sans-serif"><span
style="font-size:10pt;font-family:"Courier New";color:black">2024-05-02
12:22:28.326 NZST I (36847496)
vehicle-poll: Poller[Frame]: Task Queue Overflow</span></p>
<p class="MsoNormal"
style="margin:0cm;line-height:normal;font-size:11pt;font-family:Calibri,sans-serif"><span
style="font-size:10pt;font-family:"Courier New";color:black">2024-05-02
12:22:28.326 NZST I (36847496)
vehicle-poll: Poller[Frame]: Task Queue Overflow</span></p>
<p class="MsoNormal"
style="margin:0cm;line-height:normal;font-size:11pt;font-family:Calibri,sans-serif"><span
style="font-size:10pt;font-family:"Courier New";color:black">2024-05-02
12:22:28.326 NZST I (36847496)
vehicle-poll: Poller[Frame]: Task Queue Overflow</span></p>
<p class="MsoNormal"
style="margin:0cm;line-height:normal;font-size:11pt;font-family:Calibri,sans-serif"><span
style="font-size:10pt;font-family:"Courier New";color:black">2024-05-02
12:22:28.326 NZST I (36847496)
vehicle-poll: Poller[Frame]: Task Queue Overflow</span></p>
<p class="MsoNormal"
style="margin:0cm;line-height:normal;font-size:11pt;font-family:Calibri,sans-serif"><span
style="font-size:10pt;font-family:"Courier New";color:black">2024-05-02
12:22:28.326 NZST I (36847496)
vehicle-poll: Poller[Frame]: Task Queue Overflow</span></p>
<p class="MsoNormal"
style="margin:0cm;line-height:normal;font-size:11pt;font-family:Calibri,sans-serif"><span
style="font-size:10pt;font-family:"Courier New";color:black">2024-05-02
12:22:28.326 NZST I (36847496)
vehicle-poll: Poller[Frame]: Task Queue Overflow</span></p>
<p class="MsoNormal"
style="margin:0cm;line-height:normal;font-size:11pt;font-family:Calibri,sans-serif"><span
style="font-size:10pt;font-family:"Courier New";color:black">2024-05-02
12:22:28.336 NZST I (36847506)
vehicle-poll: Poller[Frame]: Task Queue Overflow</span></p>
<p class="MsoNormal"
style="margin:0cm;line-height:normal;font-size:11pt;font-family:Calibri,sans-serif"><span
style="font-size:10pt;font-family:"Courier New";color:black">2024-05-02
12:22:28.336 NZST I (36847506)
vehicle-poll: Poller[Frame]: Task Queue Overflow</span></p>
<p class="MsoNormal"
style="margin:0cm;line-height:normal;font-size:11pt;font-family:Calibri,sans-serif"><span
style="font-size:10pt;font-family:"Courier New";color:black">2024-05-02
12:22:28.336 NZST I (36847506)
vehicle-poll: Poller[Frame]: Task Queue Overflow</span></p>
<p class="MsoNormal"
style="margin:0cm;line-height:normal;font-size:11pt;font-family:Calibri,sans-serif"><span
style="font-size:10pt;font-family:"Courier New";color:black">2024-05-02
12:22:28.336 NZST I (36847506)
vehicle-poll: Poller[Frame]: Task Queue Overflow</span></p>
<p class="MsoNormal"
style="margin:0cm;line-height:normal;font-size:11pt;font-family:Calibri,sans-serif"><span
style="font-size:10pt;font-family:"Courier New";color:black">2024-05-02
12:22:28.346 NZST I (36847516)
vehicle-poll: Poller[Frame]: Task Queue Overflow</span></p>
<p class="MsoNormal"
style="margin:0cm;line-height:normal;font-size:11pt;font-family:Calibri,sans-serif"><span
style="font-size:10pt;font-family:"Courier New";color:black">2024-05-02
12:22:28.346 NZST I (36847516)
vehicle-poll: Poller[Frame]: Task Queue Overflow</span></p>
<p class="MsoNormal"
style="margin:0cm;line-height:normal;font-size:11pt;font-family:Calibri,sans-serif"><span
style="font-size:10pt;font-family:"Courier New";color:black">2024-05-02
12:22:28.346 NZST I (36847516)
vehicle-poll: Poller[Frame]: Task Queue Overflow</span></p>
<p class="MsoNormal"
style="margin:0cm;line-height:normal;font-size:11pt;font-family:Calibri,sans-serif"><span
style="font-size:10pt;font-family:"Courier New";color:black">2024-05-02
12:22:28.346 NZST I (36847516)
vehicle-poll: Poller[Frame]: Task Queue Overflow</span></p>
<p class="MsoNormal"
style="margin:0cm;line-height:normal;font-size:11pt;font-family:Calibri,sans-serif"><span
style="font-size:10pt;font-family:"Courier New";color:black">2024-05-02
12:22:28.356 NZST I (36847526)
vehicle-poll: Poller[Frame]: Task Queue Overflow</span></p>
<p class="MsoNormal"
style="margin:0cm;line-height:normal;font-size:11pt;font-family:Calibri,sans-serif"><span
style="font-size:10pt;font-family:"Courier New";color:black">2024-05-02
12:22:28.356 NZST I (36847526)
vehicle-poll: Poller[Frame]: Task Queue Overflow</span></p>
<p class="MsoNormal"
style="margin:0cm;line-height:normal;font-size:11pt;font-family:Calibri,sans-serif"><span
style="font-size:10pt;font-family:"Courier New";color:black">2024-05-02
12:22:28.356 NZST I (36847526)
vehicle-poll: Poller[Frame]: Task Queue Overflow</span></p>
<p class="MsoNormal"
style="margin:0cm;line-height:normal;font-size:11pt;font-family:Calibri,sans-serif"><span
style="font-size:10pt;font-family:"Courier New";color:black">2024-05-02
12:22:28.356 NZST I (36847526)
vehicle-poll: Poller[Frame]: Task Queue Overflow</span></p>
<div><span
style="color:black;font-family:Calibri,sans-serif;font-size:11pt"> </span><span
style="color:rgb(0,34,0);font-family:ui-monospace,"Cascadia Mono","Segoe UI Mono",Hack,"Source Code Pro","Roboto Mono",Menlo,Monaco,Consolas,monospace;font-size:13px"> </span></div>
</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Fri, 3 May 2024 at
05:40, 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:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div> 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>Am 02.05.24 um 15:23 schrieb Michael Geddes:<br>
</div>
<blockquote type="cite">
<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"
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:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);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" rel="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> 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 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 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>
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 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:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);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 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 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 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 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 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 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 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 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 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 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 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 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>
<br>
<fieldset></fieldset>
<pre>_______________________________________________
OvmsDev mailing list
<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>
<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>
</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 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 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 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>
</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 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" 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"
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>
</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>
_______________________________________________<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>
</div>
</div>
<br>
<fieldset class="moz-mime-attachment-header"></fieldset>
<pre class="moz-quote-pre" wrap="">_______________________________________________
OvmsDev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:OvmsDev@lists.openvehicles.com">OvmsDev@lists.openvehicles.com</a>
<a class="moz-txt-link-freetext" href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a>
</pre>
</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>