<html><head></head><body><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 id="ydp2e5d43f3yiv3729249806"><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></div>
<div>That same module has not crashed in almost a week now. So maybe there was something that was not connected to Think City code and got fixed by some of the library fixes. </div><div><br></div><div>I noticed that it takes almost half a minute for the gps location to update in the app. The same goes for the speed and other parameters. Is there a setting to make that more frequent?</div><div> </div><div>Also - I can see speed, but I am not providing it - is it coming from the GPS?<br></div><div><br></div><div>Thanks again!</div><div><br><br clear="none"></div>
</div></div></div></div><div class="yiv3729249806yqt5207480982" id="yiv3729249806yqt89824"><div class="yiv3729249806yahoo_quoted" id="yiv3729249806yahoo_quoted_3929907698">
<div style="font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;color:#26282a;">
<div>
On Wednesday, August 1, 2018, 1:11:49 AM GMT+2, Nikolay Shishkov <nshishkov@yahoo.com> wrote:
</div>
<div><br clear="none"></div>
<div><br clear="none"></div>
<div><div id="yiv3729249806"><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></div>
<div>Thanks Michael, </div><div><br clear="none"></div><div>I did not refresh the mail thread and saw you answer after I posted my solution. </div><div>I see about the states and the timing now... I may need to adjust this accordingly. I thought it was in milliseconds...</div><div><br clear="none"></div><div>These are all temperatures that are changing quite slow. So every 1 second or 4 seconds is perfectly fine. </div><div>Hopefully I will have access to a car tomorrow and can test this. </div><div><br clear="none"></div><div>Thanks again,</div><div>Nikolay</div>
</div><div class="yiv3729249806yqt7402781736" id="yiv3729249806yqt96328"><div class="yiv3729249806yahoo_quoted" id="yiv3729249806yahoo_quoted_3110398003">
<div style="font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;color:#26282a;">
<div>
On Wednesday, August 1, 2018, 1:06:32 AM GMT+2, Nikolay Shishkov <nshishkov@yahoo.com> wrote:
</div>
<div><br clear="none"></div>
<div><br clear="none"></div>
<div><div id="yiv3729249806"><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></div>
<div>I think I found a solution. Have not tested it yet.</div><div><br clear="none"></div><div><span></span><div style="color:rgb(212, 212, 212);background-color:rgb(30, 30, 30);font-family:Consolas,;"><div><span style="color:#569cd6;">static</span> <span style="color:#569cd6;">const</span> OvmsVehicle::<span style="color:#4ec9b0;">poll_pid_t</span> obdii_polls[] =</div><div> {</div><div> <span style="color:#608b4e;">// 0x753 03 22 49 65 - charger temp</span></div><div> { <span style="color:#b5cea8;">0x753</span>, <span style="color:#b5cea8;">0x75B</span>, VEHICLE_POLL_TYPE_OBDIIEXTENDED, <span style="color:#b5cea8;">0x4965</span>, { <span style="color:#b5cea8;">0</span>, <span style="color:#b5cea8;">999</span>, <span style="color:#b5cea8;">999</span> } }, </div><div> <span style="color:#608b4e;">// 0x753 03 22 49 66 - pcu heat sink temp</span></div><div> { <span style="color:#b5cea8;">0x753</span>, <span style="color:#b5cea8;">0x75B</span>, VEHICLE_POLL_TYPE_OBDIIEXTENDED, <span style="color:#b5cea8;">0x4966</span>, { <span style="color:#b5cea8;">0</span>, <span style="color:#b5cea8;">999</span>, <span style="color:#b5cea8;">999</span> } }, </div><div> <span style="color:#608b4e;">// 0x753 03 22 49 67 - motor temp</span></div><div> { <span style="color:#b5cea8;">0x753</span>, <span style="color:#b5cea8;">0x75B</span>, VEHICLE_POLL_TYPE_OBDIIEXTENDED, <span style="color:#b5cea8;">0x4967</span>, { <span style="color:#b5cea8;">0</span>, <span style="color:#b5cea8;">999</span>, <span style="color:#b5cea8;">999</span> } }, </div><div> <span style="color:#608b4e;">// 0x753 03 22 49 68 - sli batt temp and volts</span></div><div> { <span style="color:#b5cea8;">0x753</span>, <span style="color:#b5cea8;">0x75B</span>, VEHICLE_POLL_TYPE_OBDIIEXTENDED, <span style="color:#b5cea8;">0x4968</span>, { <span style="color:#b5cea8;">0</span>, <span style="color:#b5cea8;">200</span>, <span style="color:#b5cea8;">200</span> } }, </div><div> { <span style="color:#b5cea8;">0</span>, <span style="color:#b5cea8;">0</span>, <span style="color:#b5cea8;">0x00</span>, <span style="color:#b5cea8;">0x00</span>, { <span style="color:#b5cea8;">0</span>, <span style="color:#b5cea8;">0</span>, <span style="color:#b5cea8;">0</span> } }</div><div> };</div></div><br clear="none"></div><div><br clear="none"></div>
</div><div class="yiv3729249806yqt4017306576" id="yiv3729249806yqt36985"><div class="yiv3729249806yahoo_quoted" id="yiv3729249806yahoo_quoted_3487159648">
<div style="font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;color:#26282a;">
<div>
On Tuesday, July 31, 2018, 8:57:51 PM GMT+2, Nikolay Shishkov <nshishkov@yahoo.com> wrote:
</div>
<div><br clear="none"></div>
<div><br clear="none"></div>
<div><div id="yiv3729249806"><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></div>
<div>Quick question.</div><div>How do I convert this: </div><div><br clear="none"></div><div><span></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 clear="none"></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 clear="none"></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 clear="none"></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 clear="none"></div><div>Thanks in advance,</div><div>Nikolay</div></div>
</div><div class="yiv3729249806yqt0583748646" id="yiv3729249806yqt28564"><div class="yiv3729249806yahoo_quoted" id="yiv3729249806yahoo_quoted_4015627491">
<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 <nshishkov@yahoo.com> wrote:
</div>
<div><br clear="none"></div>
<div><br clear="none"></div>
<div><div id="yiv3729249806"><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></div>
<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="yiv3729249806yahoo_quoted" id="yiv3729249806yahoo_quoted_3111114729">
<div style="font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;color:#26282a;">
<div class="yiv3729249806yqt5671603422" id="yiv3729249806yqt95983"><div>
On Friday, July 27, 2018, 3:07:09 AM GMT+2, Mark Webb-Johnson <mark@webb-johnson.net> wrote:
</div>
<div><br clear="none"></div>
<div><br clear="none"></div>
<div><div id="yiv3729249806"><div>Note that I store the .elf files alongside the .bin, for edge/eap/main builds.<div class="yiv3729249806"><br clear="none" class="yiv3729249806"></div><div class="yiv3729249806">For example:</div><div class="yiv3729249806"><br clear="none" class="yiv3729249806"></div><blockquote class="yiv3729249806" style="margin:0 0 0 40px;border:none;padding:0px;"><div class="yiv3729249806"><a rel="nofollow" shape="rect" class="yiv3729249806" target="_blank" href="http://api.openvehicles.com/firmware/ota/v3.1/edge/3.1.008-29-gaf41242.ovms3.elf">http://api.openvehicles.com/firmware/ota/v3.1/edge/3.1.008-29-gaf41242.ovms3.elf</a></div></blockquote><div class="yiv3729249806"><div><br clear="none" class="yiv3729249806"></div><div>Regards, Mark.</div><div><br clear="none" class="yiv3729249806"><blockquote class="yiv3729249806" type="cite"><div class="yiv3729249806yqt8106712013" id="yiv3729249806yqtfd99015"><div class="yiv3729249806">On 27 Jul 2018, at 5:51 AM, Michael Balzer <<a rel="nofollow" shape="rect" class="yiv3729249806" ymailto="mailto:dexter@expeedo.de" target="_blank" href="mailto:dexter@expeedo.de">dexter@expeedo.de</a>> wrote:</div><br clear="none" class="yiv3729249806Apple-interchange-newline"><div class="yiv3729249806">
</div></div></blockquote></div></div></div><div class="yiv3729249806yqt8106712013" id="yiv3729249806yqtfd63836"><div><div class="yiv3729249806">
Nikolay,<br clear="none" class="yiv3729249806">
<br clear="none" class="yiv3729249806">
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 clear="none" class="yiv3729249806">
<br clear="none" class="yiv3729249806">
<tt class="yiv3729249806">a2l tmp/3.1.008-32-g2fa3ab8-elf/ovms3.elf 0x400dc8ec 0x4008f43d
0x4008e181 0x400818cc 0x40082163 0x40083c4d 0x400dc8e9</tt><br clear="none" class="yiv3729249806">
<br clear="none" class="yiv3729249806">
(I don't have the -28- version, so my output doesn't make sense)<br clear="none" class="yiv3729249806">
<br clear="none" class="yiv3729249806">
@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 clear="none" class="yiv3729249806">
<br clear="none" class="yiv3729249806">
<blockquote class="yiv3729249806" type="cite">
<div class="yiv3729249806">How is performance and power usage affected when using S<span class="yiv3729249806">tandardMetrics.xxxxx->SetValue</span>
in the <span class="yiv3729249806">IncomingFrameCan1 method?</span></div>
<div class="yiv3729249806">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 clear="none" class="yiv3729249806">
Extending Mark's answer:<br clear="none" class="yiv3729249806">
<br clear="none" class="yiv3729249806">
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 clear="none" class="yiv3729249806">
<br clear="none" class="yiv3729249806">
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 clear="none" class="yiv3729249806">
<br clear="none" class="yiv3729249806">
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 clear="none" class="yiv3729249806">
<br clear="none" class="yiv3729249806">
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 clear="none" class="yiv3729249806">
<br clear="none" class="yiv3729249806">
Regards,<br clear="none" class="yiv3729249806">
Michael<br clear="none" class="yiv3729249806">
<br clear="none" class="yiv3729249806">
<br clear="none" class="yiv3729249806">
Script a2l:<br clear="none" class="yiv3729249806">
<br clear="none" class="yiv3729249806">
<tt class="yiv3729249806">#!/bin/bash</tt><tt class="yiv3729249806"><br clear="none" class="yiv3729249806">
</tt><tt class="yiv3729249806">elf=~/esp/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/build/ovms3.elf</tt><tt class="yiv3729249806"><br clear="none" class="yiv3729249806">
</tt><tt class="yiv3729249806">for adr in $* ; do</tt><tt class="yiv3729249806"><br clear="none" class="yiv3729249806">
</tt><tt class="yiv3729249806"> if [[ "$adr" =~ "elf" ]] ; then</tt><tt class="yiv3729249806"><br clear="none" class="yiv3729249806">
</tt><tt class="yiv3729249806"> elf="$adr"</tt><tt class="yiv3729249806"><br clear="none" class="yiv3729249806">
</tt><tt class="yiv3729249806"> else</tt><tt class="yiv3729249806"><br clear="none" class="yiv3729249806">
</tt><tt class="yiv3729249806"> cmd+=" -ex 'l *$adr'"</tt><tt class="yiv3729249806"><br clear="none" class="yiv3729249806">
</tt><tt class="yiv3729249806"> fi</tt><tt class="yiv3729249806"><br clear="none" class="yiv3729249806">
</tt><tt class="yiv3729249806">done</tt><tt class="yiv3729249806"><br clear="none" class="yiv3729249806">
</tt><tt class="yiv3729249806">cmd+=" -ex 'q'"</tt><tt class="yiv3729249806"><br clear="none" class="yiv3729249806">
</tt><tt class="yiv3729249806">echo "Using elf file: $elf"</tt><tt class="yiv3729249806"><br clear="none" class="yiv3729249806">
</tt><tt class="yiv3729249806">eval xtensa-esp32-elf-gdb -batch $elf $cmd 2>/dev/null
#| grep "^0x.* is in "</tt><tt class="yiv3729249806"><br clear="none" class="yiv3729249806">
</tt><br clear="none" class="yiv3729249806">
<br clear="none" class="yiv3729249806">
<br clear="none" class="yiv3729249806">
<br clear="none" class="yiv3729249806">
<div class="yiv3729249806moz-cite-prefix">Am 26.07.2018 um 09:59 schrieb Nikolay
Shishkov:<br clear="none" class="yiv3729249806">
</div>
<blockquote class="yiv3729249806" type="cite">
</blockquote></div></div><div><div class="yiv3729249806" style="font-family:Helvetica Neue, Helvetica, Arial, sans-serif;font-size:13px;">
<div class="yiv3729249806">Quick update:</div>
<div class="yiv3729249806">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="yiv3729249806">I could see speed, parking time, ambient temperature.</div>
<div class="yiv3729249806"><br clear="none" class="yiv3729249806">
</div>
<div class="yiv3729249806">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="yiv3729249806">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="yiv3729249806"><br clear="none" class="yiv3729249806">
</div>
<div class="yiv3729249806">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="yiv3729249806"><br clear="none" class="yiv3729249806">
</div>
<div class="yiv3729249806">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="yiv3729249806"> <span class="yiv3729249806">
</span><div class="yiv3729249806">Last boot was 87 second(s) ago</div>
<div class="yiv3729249806">Time at boot: 2018-07-25 18:07:43 GMT</div>
<div class="yiv3729249806">This is reset #3 since last power cycle</div>
<div class="yiv3729249806">Detected boot reason: Crash (12/12)</div>
<div class="yiv3729249806">Crash counters: 3 total, 0 early</div>
<div class="yiv3729249806"><br clear="none" class="yiv3729249806">
</div>
<div class="yiv3729249806">Last crash: Alloca exception on core 0</div>
<div class="yiv3729249806">Registers:</div>
<div class="yiv3729249806">PC : 0x400dc8ec PS : 0x00060234 A0 : 0x8008f440 A1 :
0x3ffc45b0</div>
<div class="yiv3729249806">A2 : 0x00000020 A3 : 0x00000001 A4 : 0x00000000 A5 :
0x3ffb44b8</div>
<div class="yiv3729249806">A6 : 0x3ffb47e4 A7 : 0x3ffb458c A8 : 0x3ffb44d4 A9 :
0x3ffc4590</div>
<div class="yiv3729249806">A10 : 0x00000000 A11 : 0x7fffffff A12 : 0x8008e65b A13
: 0x3ffcc450</div>
<div class="yiv3729249806">A14 : 0x00000003 A15 : 0x00060023 SAR : 0x00000000
EXCCAUSE: 0x00000005</div>
<div class="yiv3729249806">EXCVADDR: 0x00000000 LBEG : 0x00000000 LEND :
0x00000000 LCOUNT : 0x00000000</div>
<div class="yiv3729249806">Backtrace:</div>
<div class="yiv3729249806">0x400dc8ec 0x4008f43d 0x4008e181 0x400818cc 0x40082163
0x40083c4d 0x400dc8e9</div>
<div class="yiv3729249806">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="yiv3729249806">Running partition: ota_1</div>
<div class="yiv3729249806">Boot partition: ota_1</div>
<div class="yiv3729249806">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="yiv3729249806"><br clear="none" class="yiv3729249806">
</div>
<div class="yiv3729249806">How is performance and power usage affected when using S<span class="yiv3729249806">tandardMetrics.xxxxx->SetValue</span>
in the <span class="yiv3729249806">IncomingFrameCan1 method?</span></div>
<div class="yiv3729249806">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="yiv3729249806"><br clear="none" class="yiv3729249806">
</div>
<div class="yiv3729249806">Thanks for all the hand holding and help, </div>
<div class="yiv3729249806">Nikolay </div>
<div class="yiv3729249806"><br clear="none" class="yiv3729249806">
</div>
</div>
<pre class="yiv3729249806moz-signature">--
Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal
Fon 02333 / 833 5735 * Handy 0176 / 206 989 26
</pre>
_______________________________________________<br clear="none" class="yiv3729249806">OvmsDev mailing list<br clear="none" class="yiv3729249806"><a rel="nofollow" shape="rect" class="yiv3729249806" ymailto="mailto:OvmsDev@lists.openvehicles.com" target="_blank" href="mailto:OvmsDev@lists.openvehicles.com">OvmsDev@lists.openvehicles.com</a><br clear="none" class="yiv3729249806">http://lists.openvehicles.com/mailman/listinfo/ovmsdev<br clear="none" class="yiv3729249806"><br clear="none" class="yiv3729249806"></div></div></div><div class="yiv3729249806yqt8106712013" id="yiv3729249806yqtfd09108">_______________________________________________<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">OvmsDev@lists.openvehicles.com</a><br clear="none"><a rel="nofollow" shape="rect" target="_blank" href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a><br clear="none"></div></div></div>
</div>
</div></div></div></div></div>
</div>
</div></div></div></div></div></div>
</div>
</div></div></div></div></div></div>
</div>
</div></div></div></div></div></div>
</div>
</div></div></div></body></html>