<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
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 class="moz-txt-link-freetext" href="https://www.freertos.org/RTOS-queue-sets.html">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 class="moz-cite-prefix">Am 30.04.24 um 01:20 schrieb Michael
Geddes:<br>
</div>
<blockquote type="cite"
cite="mid:CAH0p7uKA5Y3LekkDohOLhzcL-H6fuhnp+xdv8uXw2FzUsb0-KQ@mail.gmail.com">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<div dir="ltr">
<div dir="auto">
<div>It might be worth reverting, but, I've got a patch
suggestion that I'll push up which will let me know if I
understand everything and which might provide a solution.</div>
<div><br>
</div>
<div>If this isn't going to work then revert. (P/R coming)</div>
<div dir="auto"><br>
</div>
<div>While the poller was still a part of the vehicle class it
was probably still all ok. The poller had taken over what
I assume you are talking about as the vehicle task. A
call-back fromthe poller was calling IncomingPollRxFrame
which was then coming from the (now) poller task (is that
correct?)</div>
<div><br>
</div>
<div>While we have OVMS_COMP_POLLER config defined, we could
just use the poller task to provide the IncomingPollRxFrame
call-back from the poller (was vehicle?) task.</div>
<div><br>
</div>
<div>The problem is when OVMS_COMP_POLLER is undefined, we
need an alternate (maybe we could use the 'Event' loop then)
which is when I hacked that bad solution.</div>
<div><br>
</div>
<div><br>
</div>
<div>//.ichael</div>
<div><br>
</div>
<div dir="auto"><br>
</div>
<div dir="auto">I was thinking though that because everything
is being queued we could divert some calls into the car <br>
<br>
<div class="gmail_quote" dir="auto">
<div dir="ltr" class="gmail_attr">On Mon, 29 Apr 2024,
18:58 Michael Balzer, <<a
href="mailto:dexter@expeedo.de" target="_blank"
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" 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"
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"
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" 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" 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" 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" 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" 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" 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"
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" 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" 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" 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>
<br>
<fieldset></fieldset>
<pre>_______________________________________________
OvmsDev mailing list
<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>
<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>
</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" 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" 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" 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>
</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 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>