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