<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    Side note: starting the RE server from the web shell currently
    consistently results in a crash from <tt>xQueueReceive()</tt> that
    looks like our "old friend", the memory corruption.<br>
    <br>
    Starting from the async console or ssh or via MP works. No idea yet
    how that could make a difference for xQueueReceive(), I'll assume
    it's the PSRAM bug for now.<br>
    <br>
    <br>
    <tt>D (38792) webcommand: HttpCommandStream[0x3fa2c358] init:
      handler=0x3fa2f6a0 command='re start' verbosity=65535</tt><tt><br>
    </tt><tt>I (38812) webcommand: HttpCommandStream[0x3fa2c358]:
      1996204 bytes free, executing: re start</tt><tt><br>
    </tt><b><tt>assertion "res == coreID || res == portMUX_FREE_VAL"
        failed: file
        "/home/balzer/esp/esp-idf/components/freertos/portmux_impl.inc.h",
        line 105, function: vPortCPUAcquireMutexIntsDisabledExtram</tt></b><tt><br>
    </tt><tt>abort() was called at PC 0x40112f67 on core 1</tt><tt><br>
    </tt><tt><br>
    </tt><tt>Backtrace: 0x40091188:0x3ffea650 0x40091383:0x3ffea670
      0x40112f67:0x3ffea690 0x40093ce3:0x3ffea6c0 0x40095ac0:0x3ffea6f0
      0x4016c08a:0x3ffea730 0x4016c0c1:0x3ffea770</tt><tt><br>
    </tt><tt><br>
    </tt><tt>Rebooting...</tt><tt><br>
    </tt><tt><br>
    </tt><tt><br>
    </tt><tt><a class="moz-txt-link-abbreviated" href="mailto:balzer@leela:~/esp/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3">balzer@leela:~/esp/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3</a>>
      a2l 0x40091188 0x40091383 0x40112f67 0x40093ce3 0x40095ac0
      0x4016c08a 0x4016c0c1</tt><tt><br>
    </tt><tt>Using elf file:
/home/balzer/esp/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/build/ovms3.elf</tt><tt><br>
    </tt><tt>0x40091188 is in invoke_abort
      (/home/balzer/esp/esp-idf/components/esp32/panic.c:140).</tt><tt><br>
    </tt><tt>135    #endif</tt><tt><br>
    </tt><tt>136        while (1) {</tt><tt><br>
    </tt><tt>137            if (esp_cpu_in_ocd_debug_mode()) {</tt><tt><br>
    </tt><tt>138                __asm__ ("break 0,0");</tt><tt><br>
    </tt><tt>139            }</tt><tt><br>
    </tt><tt>140            *((int *) 0) = 0;</tt><tt><br>
    </tt><tt>141        }</tt><tt><br>
    </tt><tt>142    }</tt><tt><br>
    </tt><tt>143    </tt><tt><br>
    </tt><tt>144    void abort()</tt><tt><br>
    </tt><tt>0x40091383 is in abort
      (/home/balzer/esp/esp-idf/components/esp32/panic.c:149).</tt><tt><br>
    </tt><tt>144    void abort()</tt><tt><br>
    </tt><tt>145    {</tt><tt><br>
    </tt><tt>146    #if !CONFIG_ESP32_PANIC_SILENT_REBOOT</tt><tt><br>
    </tt><tt>147        ets_printf("abort() was called at PC 0x%08x on
      core %d\r\n", (intptr_t)__builtin_return_address(0) - 3,
      xPortGetCoreID());</tt><tt><br>
    </tt><tt>148    #endif</tt><tt><br>
    </tt><tt>149        invoke_abort();</tt><tt><br>
    </tt><tt>150    }</tt><tt><br>
    </tt><tt>151    </tt><tt><br>
    </tt><tt>152    </tt><tt><br>
    </tt><tt>153    static const char *edesc[] = {</tt><tt><br>
    </tt><tt>0x40112f67 is in __assert_func
      (../../../.././newlib/libc/stdlib/assert.c:63).</tt><tt><br>
    </tt><tt>0x40093ce3 is in vTaskEnterCritical
      (/home/balzer/esp/esp-idf/components/freertos/portmux_impl.inc.h:105).</tt><tt><br>
    </tt><tt>100                    return false;</tt><tt><br>
    </tt><tt>101                }</tt><tt><br>
    </tt><tt>102            }</tt><tt><br>
    </tt><tt>103        } while (1);</tt><tt><br>
    </tt><tt>104    </tt><tt><br>
    </tt><b><tt>105        assert(res == coreID || res ==
        portMUX_FREE_VAL); /* any other value implies memory corruption
        or uninitialized mux */</tt></b><tt><br>
    </tt><tt>106        assert((res == portMUX_FREE_VAL) ==
      (mux->count == 0)); /* we're first to lock iff count is zero */</tt><tt><br>
    </tt><tt>107        assert(mux->count < 0xFF); /* Bad count
      value implies memory corruption */</tt><tt><br>
    </tt><tt>108    </tt><tt><br>
    </tt><tt>109        /* now we own it, we can increment the refcount
      */</tt><tt><br>
    </tt><tt>0x40095ac0 is in xQueueGenericReceive
      (/home/balzer/esp/esp-idf/components/freertos/queue.c:1455).</tt><tt><br>
    </tt><tt>1450        statements within the function itself.  This is
      done in the interest</tt><tt><br>
    </tt><tt>1451        of execution time efficiency. */</tt><tt><br>
    </tt><tt>1452    </tt><tt><br>
    </tt><tt>1453        for( ;; )</tt><tt><br>
    </tt><tt>1454        {</tt><tt><br>
    </tt><tt>1455            taskENTER_CRITICAL(&pxQueue->mux);</tt><tt><br>
    </tt><tt>1456            {</tt><tt><br>
    </tt><tt>1457                /* Is there data in the queue now?  To
      be running the calling task</tt><tt><br>
    </tt><tt>1458                must be    the highest priority task
      wanting to access the queue. */</tt><tt><br>
    </tt><tt>1459                if( pxQueue->uxMessagesWaiting >
      ( UBaseType_t ) 0 )</tt><tt><br>
    </tt><tt>0x4016c08a is in re::Task()
(/home/balzer/esp/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/components/retools/src/retools.cpp:243).</tt><tt><br>
    </tt><tt>238      {</tt><tt><br>
    </tt><tt>239      CAN_frame_t frame;</tt><tt><br>
    </tt><tt>240    </tt><tt><br>
    </tt><tt>241      while(1)</tt><tt><br>
    </tt><tt>242        {</tt><tt><br>
    </tt><tt>243        if (xQueueReceive(m_rxqueue, &frame,
      (portTickType)portMAX_DELAY)==pdTRUE)</tt><tt><br>
    </tt><tt>244          {</tt><tt><br>
    </tt><tt>245          if (MyRE != NULL) // Protect against MyRE not
      set (during init)</tt><tt><br>
    </tt><tt>246            {</tt><tt><br>
    </tt><tt>247            switch (m_mode)</tt><tt><br>
    </tt><tt>0x4016c0c1 is in RE_task(void*)
(/home/balzer/esp/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/components/retools/src/retools.cpp:234).</tt><tt><br>
    </tt><tt>229    #endif // #ifdef CONFIG_OVMS_SC_GPL_MONGOOSE</tt><tt><br>
    </tt><tt>230    </tt><tt><br>
    </tt><tt>231    static void RE_task(void *pvParameters)</tt><tt><br>
    </tt><tt>232      {</tt><tt><br>
    </tt><tt>233      re *me = (re*)pvParameters;</tt><tt><br>
    </tt><tt>234      me->Task();</tt><tt><br>
    </tt><tt>235      }</tt><tt><br>
    </tt><tt>236    </tt><tt><br>
    </tt><tt>237    void re::Task()</tt><tt><br>
    </tt><tt>238      {</tt><br>
    <br>
    <br>
    <br>
    <div class="moz-cite-prefix">Am 16.02.19 um 14:00 schrieb Mark
      Webb-Johnson:<br>
    </div>
    <blockquote type="cite"
      cite="mid:3700E7C1-6156-467F-8977-EC7AB5F06FD8@webb-johnson.net">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <div dir="ltr">Thanks, Michael.</div>
      <div dir="ltr"><br>
      </div>
      <div dir="ltr">I can handle the RE side of things - just haven’t
        done a lot of work in JavaScript (too many people better at it
        than me at my day job, so I leave it to them). I can also
        probably extend it once the basics are working.</div>
      <div dir="ltr"><br>
      </div>
      <div dir="ltr">Just need a basic UI framework, and some way to
        push the data from RE.</div>
      <div dir="ltr"><br>
      </div>
      <div dir="ltr">No hurry.</div>
      <div dir="ltr"><br>
      </div>
      <div dir="ltr">Regards, Mark</div>
      <div dir="ltr"><br>
      </div>
      <div dir="ltr">On 16 Feb 2019, at 8:43 PM, Michael Balzer <<a
          href="mailto:dexter@expeedo.de" moz-do-not-send="true">dexter@expeedo.de</a>>
        wrote:<br>
        <br>
      </div>
      <blockquote type="cite">
        <div dir="ltr">
          <meta http-equiv="Content-Type" content="text/html;
            charset=UTF-8">
          Mark,<br>
          <br>
          I haven't seen the necessity for a complex plugin just for
          table views up to now. Normally it's pretty simple to make
          dynamic tables just using HTML5 and jQuery. For example, see
          the file selector widget I created. That uses a table to
          display the file entries, it's dynamic, sortable &
          responsive with just a few lines of code.<br>
          <br>
          DataTables adds a lot of features and simplifies manipulations
          of the data. I like the automatic responsive drilldown shown
          here:<br>
          <a class="moz-txt-link-freetext"
href="https://datatables.net/extensions/responsive/examples/styling/bootstrap.html"
            moz-do-not-send="true">https://datatables.net/extensions/responsive/examples/styling/bootstrap.html</a><br>
          <br>
          It's got some weight of course (about half of the charts lib
          with just the most basic extensions), so we would add it as an
          optional asset. On a first look it will need some
          customization for us, as it uses the glyphicons for the
          bootstrap 3 variant, which we don't include for size reasons.<br>
          <br>
          What do others think? And which of the extensions should be
          included?<br>
          <br>
          Overall, the UI as drafted shouldn't be hard to implement.
          I'll see if I can create a first version, but probably won't
          have the time before next weekend.<br>
          <br>
          Regards,<br>
          Michael<br>
          <br>
          <br>
          <div class="moz-cite-prefix">Am 13.02.19 um 13:05 schrieb Mark
            Webb-Johnson:<br>
          </div>
          <blockquote type="cite"
            cite="mid:6468ACDE-F656-41BC-A868-92985B5DE2B8@webb-johnson.net">
            <meta http-equiv="Content-Type" content="text/html;
              charset=UTF-8">
            <div class=""><br class="">
            </div>
            <div class="">Michael, this is probably for you - but if
              anybody else can help please do…</div>
            <div class=""><br class="">
            </div>
            <div class="">I am trying to see how hard it would be to do
              a web based interface to the RETOOLS system. Presumably
              this would appear in the menu as Tools / Reverse
              Engineering (or some such abbreviation if that is too
              long). The basic screen would look something like this:</div>
            <div class=""><br class="">
            </div>
            <blockquote style="margin: 0 0 0 40px; border: none;
              padding:&#xA; 0px;" class="">
              <div class=""><font class="" face="Andale Mono"><span
                    style="font-size: 12px;" class="">+----------------------------------------------------------------------------------------------------+</span></font></div>
              <div class=""><font class="" face="Andale Mono"><span
                    style="font-size: 12px;" class="">|                
                                                                       
                                                   |</span></font></div>
              <div class=""><font class="" face="Andale Mono"><span
                    style="font-size: 12px;" class="">| +----------+
                     +------+-------+------------------------------------+------+
                     +--------------------+ |</span></font></div>
              <div class=""><font class="" face="Andale Mono"><span
                    style="font-size: 12px;" class="">| |          |  |
                    hdr1 |  hdr2 |                  hdr3              |
                    hdr4 |  |                    | |</span></font></div>
              <font class="" face="Andale Mono"><span style="font-size:
                  12px;" class="">| |          |
                   +------+-------+------------------------------------+------+
                   |     </span></font><span style="font-family:
                "Andale&#xA; Mono"; font-size: 12px;" class=""> 
                       </span><span style="font-family: "Andale
                Mono"; font-size: 12px;" class=""> </span><span
                style="font-size: 12px; font-family:&#xA; "Andale
                Mono";" class="">     |</span><span
                style="font-size: 12px; font-family: "Andale
                Mono";" class=""> |</span></blockquote>
            <blockquote style="margin: 0 0 0 40px; border: none;
              padding:&#xA; 0px;" class="">
              <div class=""><font class="" face="Andale Mono"><span
                    style="font-size: 12px;" class="">| | Controls |  |
                         |       |                                    |
                         |  |        Info        | |</span></font></div>
              <div class=""><font class="" face="Andale Mono"><span
                    style="font-size: 12px;" class="">| |          |  |
                    col1 |  col2 |                  col3              |
                    col4 |  |                    | |</span></font></div>
              <div class=""><font class="" face="Andale Mono"><span
                    style="font-size: 12px;" class="">| |          |  |
                         |       |                                    |
                         |  |                    | |</span></font></div>
              <div class=""><font class="" face="Andale Mono"><span
                    style="font-size: 12px;" class="">| |          |  |
                         |       |                                    |
                         |  |                    | |</span></font></div>
              <div class=""><font class="" face="Andale Mono"><span
                    style="font-size: 12px;" class="">| |          |  |
                         |       |                                    |
                         |  |                    | |</span></font></div>
              <div class=""><font class="" face="Andale Mono"><span
                    style="font-size: 12px;" class="">| +----------+  |
                         |       |                                    |
                         |  +--------------------+ |</span></font></div>
              <div class=""><font class="" face="Andale Mono"><span
                    style="font-size: 12px;" class="">|               |
                         |       |                                    |
                         |                         |</span></font></div>
              <div class=""><font class="" face="Andale Mono"><span
                    style="font-size: 12px;" class="">| +----------+  |
                         |       |                                    |
                         |  +--------------------+ |</span></font></div>
              <div class=""><font class="" face="Andale Mono"><span
                    style="font-size: 12px;" class="">| |          |  |
                         |       |                                    |
                         |  |                    | |</span></font></div>
              <div class=""><font class="" face="Andale Mono"><span
                    style="font-size: 12px;" class="">| |          |  |
                         |       |                                    |
                         |  |                    | |</span></font></div>
              <div class=""><font class="" face="Andale Mono"><span
                    style="font-size: 12px;" class="">| |          |  |
                         |       |                                    |
                         |  |                    | |</span></font></div>
              <div class=""><font class="" face="Andale Mono"><span
                    style="font-size: 12px;" class="">| |  Status  |  |
                         |       |                                    |
                         |  |                    | |</span></font></div>
              <div class=""><font class="" face="Andale Mono"><span
                    style="font-size: 12px;" class="">| |          |  |
                         |       |             TABLE                  |
                         |  |                    | |</span></font></div>
              <div class=""><font class="" face="Andale Mono"><span
                    style="font-size: 12px;" class="">| |          |  |
                         |       |                                    |
                         |  |        Extra       | |</span></font></div>
              <div class=""><font class="" face="Andale Mono"><span
                    style="font-size: 12px;" class="">| |          |  |
                         |       |                                    |
                         |  |                    | |</span></font></div>
              <div class=""><font class="" face="Andale Mono"><span
                    style="font-size: 12px;" class="">| |          |  |
                         |       |                                    |
                         |  |                    | |</span></font></div>
              <div class=""><font class="" face="Andale Mono"><span
                    style="font-size: 12px;" class="">| |          |  |
                         |       |                                    |
                         |  |                    | |</span></font></div>
              <div class=""><font class="" face="Andale Mono"><span
                    style="font-size: 12px;" class="">| |          |  |
                         |       |                                    |
                         |  |                    | |</span></font></div>
              <div class=""><font class="" face="Andale Mono"><span
                    style="font-size: 12px;" class="">| |          |  |
                         |       |                                    | 
                        |  |                    | |</span></font></div>
              <div class=""><font class="" face="Andale Mono"><span
                    style="font-size: 12px;" class="">| |          |  |
                         |       |                                    |
                         |  |                    | |</span></font></div>
              <div class=""><font class="" face="Andale Mono"><span
                    style="font-size: 12px;" class="">| +----------+  |
                         |       |                                    |
                         |  +--------------------+ |</span></font></div>
              <div class=""><font class="" face="Andale Mono"><span
                    style="font-size: 12px;" class="">|               |
                         |       |                                    |
                         |                         |</span></font></div>
              <font class="" face="Andale Mono"><span style="font-size:
                  12px;" class="">|               |      |       |      
                                               |      |                 
                         |</span></font></blockquote>
            <blockquote style="margin: 0 0 0 40px; border: none;
              padding:&#xA; 0px;" class=""><font class="" face="Andale
                Mono"><span style="font-size: 12px;" class="">|        
                        |      |       |                                
                     |      |                         |</span></font></blockquote>
            <blockquote style="margin: 0 0 0 40px; border: none;
              padding:&#xA; 0px;" class=""><font class="" face="Andale
                Mono"><span style="font-size: 12px;" class="">|        
                        |      |       |                                
                     |      |                         |</span></font></blockquote>
            <blockquote style="margin: 0 0 0 40px; border: none;
              padding:&#xA; 0px;" class=""><font class="" face="Andale
                Mono"><span style="font-size: 12px;" class="">|        
                        |      |       |                                
                     |      |                         |</span></font></blockquote>
            <blockquote style="margin: 0 0 0 40px; border: none;
              padding:&#xA; 0px;" class=""><font class="" face="Andale
                Mono"><span style="font-size: 12px;" class="">|        
                        |      |       |                                
                     |      |                         |</span></font></blockquote>
            <blockquote style="margin: 0 0 0 40px; border: none;
              padding:&#xA; 0px;" class=""><font class="" face="Andale
                Mono"><span style="font-size: 12px;" class="">|        
                        |      |       |                                
                     |      |                         |</span></font></blockquote>
            <blockquote style="margin: 0 0 0 40px; border: none;
              padding:&#xA; 0px;" class=""><font class="" face="Andale
                Mono"><span style="font-size: 12px;" class="">|        
                        |      |       |                                
                     |      |                         |</span></font></blockquote>
            <blockquote style="margin: 0 0 0 40px; border: none;
              padding:&#xA; 0px;" class=""><font class="" face="Andale
                Mono"><span style="font-size: 12px;" class="">|        
                        |      |       |                                
                     |      |                         |</span></font></blockquote>
            <blockquote style="margin: 0 0 0 40px; border: none;
              padding:&#xA; 0px;" class=""><font class="" face="Andale
                Mono"><span style="font-size: 12px;" class="">|        
                        |      |       |                                
                     |      |                         |</span></font></blockquote>
            <blockquote style="margin: 0 0 0 40px; border: none;
              padding:&#xA; 0px;" class="">
              <div class=""><font class="" face="Andale Mono"><span
                    style="font-size: 12px;" class="">|              
                    +------+-------+------------------------------------+------+
                                            |</span></font></div>
              <div class=""><font class="" face="Andale Mono"><span
                    style="font-size: 12px;" class="">|                
                                                                       
                                                   |</span></font></div>
              <div class=""><font class="" face="Andale Mono"><span
                    style="font-size: 12px;" class="">+----------------------------------------------------------------------------------------------------+</span></font></div>
            </blockquote>
            <div class=""><br class="">
            </div>
            <div class="">The controls are just a set of controls -
              things that bring up dialogs for more information or
              perform actions. Like start/stop RE, switch modes,
              manipulate DBC files, etc. Left justified in the frame,
              and perhaps 10% of the width. Height can dynamically
              adjust with the text content.</div>
            <div class=""><br class="">
            </div>
            <div class="">The Status, Info, and Extra panes are just a
              dynamically updated text panes. Main code needs to be able
              to send text here and have it shown in the appropriate
              pane. Right justified in the frame and perhaps 30% of the
              width. Height can dynamically adjust with the text
              content.</div>
            <div class=""><br class="">
            </div>
            <div class="">The TABLE is a table. Probably 5 columns by
              many rows (anywhere from 20 to 200 or so). Either paged,
              scrolling, or just very tall. Paged is probably
              preferable. Would need a simple mechanism to dynamically
              add/update a row (identified by ‘key’ column and in sorted
              order), presumably using the web socket. Also need
              something to be able to dynamically clear the entire
              table. The RETOOLS code would use this to update the table
              in realtime (presumably over a web socket). It would be
              good if the table could do things like search filtering of
              displayed rows, column sorting, etc (all client side -
              something like <a href="http://datatables.net" class=""
                moz-do-not-send="true">datatables.net</a>).</div>
            <div class=""><br class="">
            </div>
            <div class="">For example, look at this output:</div>
            <div class=""><br class="">
            </div>
            <blockquote style="margin: 0 0 0 40px; border: none;
              padding:&#xA; 0px;" class="">
              <div class="">
                <div class=""><font class="" face="Andale Mono"><span
                      style="font-size: 12px;" class="">OVMS# re dbc
                      list</span></font></div>
                <div class=""><font class="" face="Andale Mono"><span
                      style="font-size: 12px;" class="">key            
                              records     ms last</span></font></div>
                <div class=""><font class="" face="Andale Mono"><span
                      style="font-size: 12px;" class="">can1/100:0081  
                                    2  22000 01 02 03 04 05          |
                      .....</span></font></div>
                <div class=""><font class="" face="Andale Mono"><span
                      style="font-size: 12px;" class="">can1/101        
                                   1  44000 01 02 03 04             |
                      ....</span></font></div>
                <div class=""><font class="" face="Andale Mono"><span
                      style="font-size: 12px;" class=""> 
                      dbc/DI_Signal1: 129 km</span></font></div>
                <div class=""><font class="" face="Andale Mono"><span
                      style="font-size: 12px;" class=""> 
                      dbc/DI_Signal2: 1 km</span></font></div>
                <div class=""><font class="" face="Andale Mono"><span
                      style="font-size: 12px;" class=""> 
                      dbc/DI_Signal3: 130 kWh</span></font></div>
                <div class=""><font class="" face="Andale Mono"><span
                      style="font-size: 12px;" class=""> 
                      dbc/DI_Signal4: 122 Degrees</span></font></div>
              </div>
            </blockquote>
            <div class=""><br class="">
            </div>
            <div class="">The idea is to be able to show the key,
              records, ms, last, and ascii dump in the main table. Then,
              clicking on a row would show the statistics for that
              message in the Info pane, and DBC signals in the Extra
              pane.</div>
            <div class=""><br class="">
            </div>
            <div class="">I can handle the RETOOLS side, but the
              javascript is beyond me. I also had a look at the ovms web
              server framework, but it doesn’t seem to be able to do the
              table part (yet)?</div>
            <div class=""><br class="">
            </div>
            <div class="">Any idea how complex this is?</div>
            <div class=""><br class="">
            </div>
            <div class="">Regards, Mark.</div>
            <div class=""><br class="">
            </div>
            <br>
            <fieldset class="mimeAttachmentHeader"></fieldset>
            <pre class="moz-quote-pre" wrap="">_______________________________________________
OvmsDev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:OvmsDev@lists.openvehicles.com" moz-do-not-send="true">OvmsDev@lists.openvehicles.com</a>
<a class="moz-txt-link-freetext" href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" moz-do-not-send="true">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>
        </div>
      </blockquote>
      <blockquote type="cite">
        <div dir="ltr"><span>_______________________________________________</span><br>
          <span>OvmsDev mailing list</span><br>
          <span><a href="mailto:OvmsDev@lists.openvehicles.com"
              moz-do-not-send="true">OvmsDev@lists.openvehicles.com</a></span><br>
          <span><a
              href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev"
              moz-do-not-send="true">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a></span><br>
        </div>
      </blockquote>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <pre class="moz-quote-pre" wrap="">_______________________________________________
OvmsDev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:OvmsDev@lists.openvehicles.com">OvmsDev@lists.openvehicles.com</a>
<a class="moz-txt-link-freetext" href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a>
</pre>
    </blockquote>
    <br>
    <pre class="moz-signature" cols="160">-- 
Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal
Fon 02333 / 833 5735 * Handy 0176 / 206 989 26
</pre>
  </body>
</html>