<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
Nikolay,<br>
<br>
that code does an OBDIIEXTENDED (16 bit PID) poll of the four PIDs
0x4965 … 0x4968 at module ID 0x753 (0b11101010011) with replies
coming in at ID 0x75b.<br>
<br>
That's something like this as a polling list:<br>
<br>
<tt>static const OvmsVehicle::poll_pid_t obdii_polls[] =</tt><tt><br>
</tt><tt> {</tt><tt><br>
</tt><tt> { 0x753, 0x75b, VEHICLE_POLL_TYPE_OBDIIEXTENDED,
0x4965, { 0, 1, 60 } },</tt><tt><br>
</tt><tt> { 0x753, 0x75b, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x4966,
{ 0, 1, 60 } },</tt><tt><br>
</tt><tt> { 0x753, 0x75b, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x4967,
{ 0, 1, 60 } },</tt><tt><br>
</tt><tt> { 0x753, 0x75b, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x4968,
{ 0, 1, 60 } },</tt><tt><br>
</tt><tt> { 0, 0, 0x00, 0x00, { 0, 0, 0 } }</tt><tt><br>
</tt><tt> };</tt><br>
<br>
If you set this as a PidList and set the poll state to 1, the polls
will be done in series with 1 second interval (every 60 seconds in
state 2). Note that's 4 seconds for a full loop, not as fast as the
old implementation which blocked the idle callback for 400 ms to
send the requests with 100 ms delays.<br>
<br>
If you really need these polls to be that fast (?), the polling
framework needs some change, or you could continue to do this in
custom code.<br>
<br>
For a custom implementation you would define a software timer to be
called every 100 ms. A single CAN TX may be possible to do within
the timer callback (take care: no blocking calls allowed). Another
option would be to generate a custom poll request or 100 ms ticker
event from the timer callback and use an event handler to actually
do the TX.<br>
<br>
Regards,<br>
Michael<br>
<br>
<br>
<div class="moz-cite-prefix">Am 31.07.2018 um 20:57 schrieb Nikolay
Shishkov:<br>
</div>
<blockquote type="cite"
cite="mid:1386931617.6344412.1533063471381@mail.yahoo.com">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<div style="font-family:Helvetica Neue, Helvetica, Arial,
sans-serif;font-size:13px;">
<div style="font-family:Helvetica Neue, Helvetica, Arial,
sans-serif;font-size:13px;">
<div>Quick question.</div>
<div>How do I convert this: </div>
<div><br>
</div>
<div><span>
<div> while (TXB0CONbits.TXREQ) {} // Loop until TX is
done</div>
<div> TXB0CON = 0;</div>
<div> TXB0SIDL = 0b01100000;</div>
<div> TXB0SIDH = 0b11101010;</div>
<div> TXB0D0 = 0x03;</div>
<div> TXB0D1 = 0x22;</div>
<div> TXB0D2 = 0x49;</div>
<div> TXB0D3 = 0x65;</div>
<div> TXB0DLC = 0b00000100; // data length (4)</div>
<div> TXB0CON = 0b00001000; // mark for transmission</div>
<div> delay100b(); // Delay a little... (100ms, approx)</div>
<div><br>
</div>
<div> while (TXB0CONbits.TXREQ) {} // Loop until TX is
done</div>
<div> TXB0CON = 0;</div>
<div> TXB0SIDL = 0b01100000;</div>
<div> TXB0SIDH = 0b11101010;</div>
<div> TXB0D0 = 0x03;</div>
<div> TXB0D1 = 0x22;</div>
<div> TXB0D2 = 0x49;</div>
<div> TXB0D3 = 0x66;</div>
<div> TXB0DLC = 0b00000100; // data length (4)</div>
<div> TXB0CON = 0b00001000; // mark for transmission</div>
<div> delay100b(); // Delay a little... (100ms, approx)</div>
<div><br>
</div>
<div> while (TXB0CONbits.TXREQ) {} // Loop until TX is
done</div>
<div> TXB0CON = 0;</div>
<div> TXB0SIDL = 0b01100000;</div>
<div> TXB0SIDH = 0b11101010;</div>
<div> TXB0D0 = 0x03;</div>
<div> TXB0D1 = 0x22;</div>
<div> TXB0D2 = 0x49;</div>
<div> TXB0D3 = 0x67;</div>
<div> TXB0DLC = 0b00000100; // data length (4)</div>
<div> TXB0CON = 0b00001000; // mark for transmission</div>
<div> delay100b(); // Delay a little... (100ms, approx)</div>
<div><br>
</div>
<div> while (TXB0CONbits.TXREQ) {} // Loop until TX is
done</div>
<div> TXB0CON = 0;</div>
<div> TXB0SIDL = 0b01100000;</div>
<div> TXB0SIDH = 0b11101010;</div>
<div> TXB0D0 = 0x03;</div>
<div> TXB0D1 = 0x22;</div>
<div> TXB0D2 = 0x49;</div>
<div> TXB0D3 = 0x68;</div>
<div> TXB0DLC = 0b00000100; // data length (4)</div>
<div> TXB0CON = 0b00001000; // mark for transmission</div>
<div> delay100b(); // Delay a little... (100ms, approx)</div>
<div> </div>
<div>To the new polling framework?</div>
<div>I took a look at the leaf code, but the configuration
is a mystery to me. What are the input parameters? </div>
<div>Maybe there is a document that I am missing?</div>
<div><br>
</div>
<div>Thanks in advance,</div>
<div>Nikolay</div>
</span></div>
</div>
<div id="yahoo_quoted_4015627491" class="yahoo_quoted">
<div style="font-family:'Helvetica Neue', Helvetica, Arial,
sans-serif;font-size:13px;color:#26282a;">
<div> On Saturday, July 28, 2018, 11:42:13 PM GMT+2, Nikolay
Shishkov <a class="moz-txt-link-rfc2396E" href="mailto:nshishkov@yahoo.com"><nshishkov@yahoo.com></a> wrote: </div>
<div><br>
</div>
<div><br>
</div>
<div>
<div id="yiv5468089902">
<div>
<div style="font-family:Helvetica Neue, Helvetica,
Arial, sans-serif;font-size:13px;">
<div style="font-family:Helvetica Neue, Helvetica,
Arial, sans-serif;font-size:13px;">
<div>Thank you!</div>
<div>Yes the carid is TC003. </div>
<div>I was not running anything extraordinary -
just followed the developer tutorial, but never
flashed directly - always flashed from edge
branch OTA. </div>
<div>I will run the commands and provide output,
but it will be with the newer firmware. </div>
<div>I will need to see if updating will have same
problems. </div>
<div><br clear="none">
</div>
<div><br clear="none">
</div>
<div><br clear="none">
</div>
</div>
<div class="yiv5468089902yahoo_quoted"
id="yiv5468089902yahoo_quoted_3111114729">
<div style="font-family:'Helvetica Neue',
Helvetica, Arial,
sans-serif;font-size:13px;color:#26282a;">
<div class="yiv5468089902yqt5671603422"
id="yiv5468089902yqt95983">
<div> On Friday, July 27, 2018, 3:07:09 AM
GMT+2, Mark Webb-Johnson
<a class="moz-txt-link-rfc2396E" href="mailto:mark@webb-johnson.net"><mark@webb-johnson.net></a> wrote: </div>
<div><br clear="none">
</div>
<div><br clear="none">
</div>
<div>
<div id="yiv5468089902">
<div>Note that I store the .elf files
alongside the .bin, for edge/eap/main
builds.
<div class="yiv5468089902"><br
class="yiv5468089902" clear="none">
</div>
<div class="yiv5468089902">For example:</div>
<div class="yiv5468089902"><br
class="yiv5468089902" clear="none">
</div>
<blockquote class="yiv5468089902"
style="margin:0 0 0
40px;border:none;padding:0px;">
<div class="yiv5468089902"><a
rel="nofollow" shape="rect"
class="yiv5468089902"
target="_blank"
href="http://api.openvehicles.com/firmware/ota/v3.1/edge/3.1.008-29-gaf41242.ovms3.elf"
moz-do-not-send="true">http://api.openvehicles.com/firmware/ota/v3.1/edge/3.1.008-29-gaf41242.ovms3.elf</a></div>
</blockquote>
<div class="yiv5468089902">
<div><br class="yiv5468089902"
clear="none">
</div>
<div>Regards, Mark.</div>
<div><br class="yiv5468089902"
clear="none">
<blockquote class="yiv5468089902"
type="cite">
<div
class="yiv5468089902yqt8106712013"
id="yiv5468089902yqtfd99015">
<div class="yiv5468089902">On 27
Jul 2018, at 5:51 AM, Michael
Balzer <<a rel="nofollow"
shape="rect"
class="yiv5468089902"
ymailto="mailto:dexter@expeedo.de"
target="_blank"
href="mailto:dexter@expeedo.de"
moz-do-not-send="true">dexter@expeedo.de</a>>
wrote:</div>
<br
class="yiv5468089902Apple-interchange-newline"
clear="none">
<div class="yiv5468089902"> </div>
</div>
</blockquote>
</div>
</div>
</div>
<div class="yiv5468089902yqt8106712013"
id="yiv5468089902yqtfd63836">
<div>
<div class="yiv5468089902"> Nikolay,<br
class="yiv5468089902" clear="none">
<br class="yiv5468089902"
clear="none">
you need to keep the .elf files for
your builds to be able to analyze a
backtrace. Do not use addr2line, it
shows wrong line numbers. Use the
script "a2l" I posted previously
(I'll include it again below). Just
feed it the .elf file and the
backtrace. Example:<br
class="yiv5468089902" clear="none">
<br class="yiv5468089902"
clear="none">
<tt class="yiv5468089902">a2l
tmp/3.1.008-32-g2fa3ab8-elf/ovms3.elf
0x400dc8ec 0x4008f43d 0x4008e181
0x400818cc 0x40082163 0x40083c4d
0x400dc8e9</tt><br
class="yiv5468089902" clear="none">
<br class="yiv5468089902"
clear="none">
(I don't have the -28- version, so
my output doesn't make sense)<br
class="yiv5468089902" clear="none">
<br class="yiv5468089902"
clear="none">
@Mark: spurious task WDT crashes and
heap corruption crashes still occur,
but it seems they have become less
often with the internal RAM rework.<br
class="yiv5468089902" clear="none">
<br class="yiv5468089902"
clear="none">
<blockquote class="yiv5468089902"
type="cite">
<div class="yiv5468089902">How is
performance and power usage
affected when using S<span
class="yiv5468089902">tandardMetrics.xxxxx->SetValue</span>
in the <span
class="yiv5468089902">IncomingFrameCan1
method?</span></div>
<div class="yiv5468089902">Most of
the messages update value every
100ms, and except maybe speed,
battery current and voltage,
most of the parameters are not
changing that often. And even
for the speed, current and
voltage, it is probably enough
to update StandardMetrics in the
1 second ticker... does this
make sense or is the difference
non-existing. </div>
</blockquote>
<br class="yiv5468089902"
clear="none">
Extending Mark's answer:<br
class="yiv5468089902" clear="none">
<br class="yiv5468089902"
clear="none">
It's normally OK to directly set
metrics from IncomingFrameCan1(),
but be aware metrics listeners will
be executed synchronously in the
context that changes the metric.<br
class="yiv5468089902" clear="none">
<br class="yiv5468089902"
clear="none">
Standard metrics listeners are now
for example the automatic
notification generators in the
vehicle base class. These may need
quite some stack and time.<br
class="yiv5468089902" clear="none">
<br class="yiv5468089902"
clear="none">
If you spend too much time handling
frames on a high volume bus, your
vehicle task may lose frames. It's
possible to raise the queue size
(currently 20 frames) and the
vehicle task stack size, but it's
better to keep the CAN processing
simple.<br class="yiv5468089902"
clear="none">
<br class="yiv5468089902"
clear="none">
TL;DR: if you need to handle many
CAN frames, I recommend changing
metrics that trigger notifications
or other complex actions from the
ticker. If you encounter crashes on
some CAN frames that may be due to
the vehicle task stack being too
small
(CONFIG_OVMS_VEHICLE_RXTASK_STACK=6144).<br
class="yiv5468089902" clear="none">
<br class="yiv5468089902"
clear="none">
Regards,<br class="yiv5468089902"
clear="none">
Michael<br class="yiv5468089902"
clear="none">
<br class="yiv5468089902"
clear="none">
<br class="yiv5468089902"
clear="none">
Script a2l:<br class="yiv5468089902"
clear="none">
<br class="yiv5468089902"
clear="none">
<tt class="yiv5468089902">#!/bin/bash</tt><tt
class="yiv5468089902"><br
class="yiv5468089902"
clear="none">
</tt><tt class="yiv5468089902">elf=~/esp/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/build/ovms3.elf</tt><tt
class="yiv5468089902"><br
class="yiv5468089902"
clear="none">
</tt><tt class="yiv5468089902">for
adr in $* ; do</tt><tt
class="yiv5468089902"><br
class="yiv5468089902"
clear="none">
</tt><tt class="yiv5468089902"> if
[[ "$adr" =~ "elf" ]] ; then</tt><tt
class="yiv5468089902"><br
class="yiv5468089902"
clear="none">
</tt><tt class="yiv5468089902">
elf="$adr"</tt><tt
class="yiv5468089902"><br
class="yiv5468089902"
clear="none">
</tt><tt class="yiv5468089902">
else</tt><tt class="yiv5468089902"><br
class="yiv5468089902"
clear="none">
</tt><tt class="yiv5468089902">
cmd+=" -ex 'l *$adr'"</tt><tt
class="yiv5468089902"><br
class="yiv5468089902"
clear="none">
</tt><tt class="yiv5468089902"> fi</tt><tt
class="yiv5468089902"><br
class="yiv5468089902"
clear="none">
</tt><tt class="yiv5468089902">done</tt><tt
class="yiv5468089902"><br
class="yiv5468089902"
clear="none">
</tt><tt class="yiv5468089902">cmd+="
-ex 'q'"</tt><tt
class="yiv5468089902"><br
class="yiv5468089902"
clear="none">
</tt><tt class="yiv5468089902">echo
"Using elf file: $elf"</tt><tt
class="yiv5468089902"><br
class="yiv5468089902"
clear="none">
</tt><tt class="yiv5468089902">eval
xtensa-esp32-elf-gdb -batch $elf
$cmd 2>/dev/null #| grep "^0x.*
is in "</tt><tt
class="yiv5468089902"><br
class="yiv5468089902"
clear="none">
</tt><br class="yiv5468089902"
clear="none">
<br class="yiv5468089902"
clear="none">
<br class="yiv5468089902"
clear="none">
<br class="yiv5468089902"
clear="none">
<div
class="yiv5468089902moz-cite-prefix">Am
26.07.2018 um 09:59 schrieb
Nikolay Shishkov:<br
class="yiv5468089902"
clear="none">
</div>
<blockquote class="yiv5468089902"
type="cite"> </blockquote>
</div>
</div>
<div>
<div class="yiv5468089902"
style="font-family:Helvetica Neue,
Helvetica, Arial,
sans-serif;font-size:13px;">
<div class="yiv5468089902">Quick
update:</div>
<div class="yiv5468089902">I managed
to do a not so quick update on one
of the ovms v.3 boxes that sits in
a Think and can confirm that the
porting seems to work. </div>
<div class="yiv5468089902">I could
see speed, parking time, ambient
temperature.</div>
<div class="yiv5468089902"><br
class="yiv5468089902"
clear="none">
</div>
<div class="yiv5468089902">I had
very strange problems doing the
OTA update. The firmware start
download and I can see the
messages progressing, but it would
halt in between 700kB and 1600kB
and then stay there until I
refresh the browser. </div>
<div class="yiv5468089902">And when
I refresh the browser I am asked
of my password which leads me to
that there must have been a crash
in the meantime. </div>
<div class="yiv5468089902"><br
class="yiv5468089902"
clear="none">
</div>
<div class="yiv5468089902">I was
finally able to get the OTA update
work by disconnecting the box from
the car and powering it via USB.
This is a single data point but it
kind of points to a problem with
the code that communicates with
the car. </div>
<div class="yiv5468089902"><br
class="yiv5468089902"
clear="none">
</div>
<div class="yiv5468089902">I was not
able to get a laptop connected to
checkout the console, but managed
to get the following log - not
sure how to interpret it. </div>
<div class="yiv5468089902"> <span
class="yiv5468089902"> </span>
<div class="yiv5468089902">Last
boot was 87 second(s) ago</div>
<div class="yiv5468089902">Time at
boot: 2018-07-25 18:07:43 GMT</div>
<div class="yiv5468089902">This is
reset #3 since last power cycle</div>
<div class="yiv5468089902">Detected
boot reason: Crash (12/12)</div>
<div class="yiv5468089902">Crash
counters: 3 total, 0 early</div>
<div class="yiv5468089902"><br
class="yiv5468089902"
clear="none">
</div>
<div class="yiv5468089902">Last
crash: Alloca exception on core
0</div>
<div class="yiv5468089902">Registers:</div>
<div class="yiv5468089902">PC :
0x400dc8ec PS : 0x00060234 A0 :
0x8008f440 A1 : 0x3ffc45b0</div>
<div class="yiv5468089902">A2 :
0x00000020 A3 : 0x00000001 A4 :
0x00000000 A5 : 0x3ffb44b8</div>
<div class="yiv5468089902">A6 :
0x3ffb47e4 A7 : 0x3ffb458c A8 :
0x3ffb44d4 A9 : 0x3ffc4590</div>
<div class="yiv5468089902">A10 :
0x00000000 A11 : 0x7fffffff A12
: 0x8008e65b A13 : 0x3ffcc450</div>
<div class="yiv5468089902">A14 :
0x00000003 A15 : 0x00060023 SAR
: 0x00000000 EXCCAUSE:
0x00000005</div>
<div class="yiv5468089902">EXCVADDR:
0x00000000 LBEG : 0x00000000
LEND : 0x00000000 LCOUNT :
0x00000000</div>
<div class="yiv5468089902">Backtrace:</div>
<div class="yiv5468089902">0x400dc8ec
0x4008f43d 0x4008e181 0x400818cc
0x40082163 0x40083c4d 0x400dc8e9</div>
<div class="yiv5468089902">Version:
3.1.008-29-gaf41242/ota_1/edge
(build idf v3.1-dev-987-g55d915e
Jul 6 2018 00:14:59)</div>
<div class="yiv5468089902">Running
partition: ota_1</div>
<div class="yiv5468089902">Boot
partition: ota_1</div>
<div class="yiv5468089902">Firmware:
3.1.008-29-gaf41242/ota_1/edge
(build idf v3.1-dev-987-g55d915e
Jul 6 2018 00:14:59)</div>
</div>
<div class="yiv5468089902"><br
class="yiv5468089902"
clear="none">
</div>
<div class="yiv5468089902">How is
performance and power usage
affected when using S<span
class="yiv5468089902">tandardMetrics.xxxxx->SetValue</span>
in the <span class="yiv5468089902">IncomingFrameCan1
method?</span></div>
<div class="yiv5468089902">Most of
the messages update value every
100ms, and except maybe speed,
battery current and voltage, most
of the parameters are not changing
that often. And even for the
speed, current and voltage, it is
probably enough to update
StandardMetrics in the 1 second
ticker... does this make sense or
is the difference non-existing. </div>
<div class="yiv5468089902"><br
class="yiv5468089902"
clear="none">
</div>
<div class="yiv5468089902">Thanks
for all the hand holding and
help, </div>
<div class="yiv5468089902">Nikolay </div>
<div class="yiv5468089902"><br
class="yiv5468089902"
clear="none">
</div>
</div>
<pre class="yiv5468089902moz-signature">--
Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal
Fon 02333 / 833 5735 * Handy 0176 / 206 989 26
</pre>
_______________________________________________<br class="yiv5468089902"
clear="none">
OvmsDev mailing list<br
class="yiv5468089902" clear="none">
<a rel="nofollow" shape="rect"
class="yiv5468089902"
ymailto="mailto:OvmsDev@lists.openvehicles.com"
target="_blank"
href="mailto:OvmsDev@lists.openvehicles.com"
moz-do-not-send="true">OvmsDev@lists.openvehicles.com</a><br
class="yiv5468089902" clear="none">
<a class="moz-txt-link-freetext" href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a><br
class="yiv5468089902" clear="none">
<br class="yiv5468089902" clear="none">
</div>
</div>
</div>
<div class="yiv5468089902yqt8106712013"
id="yiv5468089902yqtfd09108">_______________________________________________<br
clear="none">
OvmsDev mailing list<br clear="none">
<a rel="nofollow" shape="rect"
ymailto="mailto:OvmsDev@lists.openvehicles.com"
target="_blank"
href="mailto:OvmsDev@lists.openvehicles.com"
moz-do-not-send="true">OvmsDev@lists.openvehicles.com</a><br
clear="none">
<a rel="nofollow" shape="rect"
target="_blank"
href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev"
moz-do-not-send="true">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a><br
clear="none">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<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="160">--
Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal
Fon 02333 / 833 5735 * Handy 0176 / 206 989 26
</pre>
</body>
</html>