<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <br>
    <div class="moz-cite-prefix">Am 12.12.2017 um 02:29 schrieb Mark
      Webb-Johnson:<br>
    </div>
    <blockquote type="cite"
      cite="mid:E4A94948-49F2-4304-8223-D0ECB33DCD35@webb-johnson.net">
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <div class="">I’ve had lwip pppos (via SIMCOM) running on my desk
        overnight, and it seems stable. Of course, we’ll need to do some
        fine tuning based on feedback in the field, but at least PPP
        connections can be brought up and down cleanly, and that is the
        base capability needed for more sophistication to be built on
        top.</div>
    </blockquote>
    <br>
    I did the same test since yesterday, but my ppp connection got lost
    somewhere and couldn't be reestablished, even after power simcom off
    / on.<br>
    <br>
    I missed keeping my PC on, so I've lost the critical log output. The
    last state was a loop:<br>
    <br>
    <tt>I (81512562) simcom: State: Enter NetStart state</tt><tt><br>
    </tt><tt>I (81541562) simcom: State timeout, transition to 7</tt><tt><br>
    </tt><tt>I (81541562) simcom: State: Enter NetLoss state</tt><tt><br>
    </tt><tt>I (81541562) gsm-ppp: Shutting down (hard)...</tt><tt><br>
    </tt><tt>I (81541562) gsm-ppp: StatusCallBack: User Interrupt</tt><tt><br>
    </tt><tt>E (81541562) gsm-ppp: status_cb: User interrupt|</tt><tt><br>
    </tt><tt>I (81541562) gsm-ppp: Shutdown (via status callback)</tt><tt><br>
    </tt><tt>I (81541562) events: Signal(system.modem.down)</tt><tt><br>
    </tt><tt>I (81551562) simcom: State timeout, transition to 5</tt><tt><br>
    </tt><tt>I (81551562) simcom: State: Enter NetWait state</tt><tt><br>
    </tt><tt>I (81551562) gsm-nmea: Startup</tt><tt><br>
    </tt><tt>I (81555562) simcom: State: Enter NetStart state</tt><tt><br>
    </tt><tt>I (81584562) simcom: State timeout, transition to 7</tt><tt><br>
    </tt><tt>I (81584562) simcom: State: Enter NetLoss state</tt><tt><br>
    </tt><tt>I (81584562) gsm-ppp: Shutting down (hard)...</tt><tt><br>
    </tt><tt>I (81584562) gsm-ppp: StatusCallBack: User Interrupt</tt><tt><br>
    </tt><tt>E (81584562) gsm-ppp: status_cb: User interrupt|</tt><tt><br>
    </tt><tt>I (81584562) gsm-ppp: Shutdown (via status callback)</tt><tt><br>
    </tt><tt>I (81584562) events: Signal(system.modem.down)</tt><tt><br>
    </tt><tt>I (81594562) simcom: State timeout, transition to 5</tt><tt><br>
    </tt><tt>I (81594562) simcom: State: Enter NetWait state</tt><tt><br>
    </tt><tt>I (81594562) gsm-nmea: Startup</tt><tt><br>
    </tt><tt>I (81598562) simcom: State: Enter NetStart state</tt><tt><br>
    </tt><tt>I (81627562) simcom: State timeout, transition to 7</tt><tt><br>
    </tt><tt>I (81627562) simcom: State: Enter NetLoss state</tt><tt><br>
    </tt><tt>I (81627562) gsm-ppp: Shutting down (hard)...</tt><tt><br>
    </tt><tt>I (81627562) gsm-ppp: StatusCallBack: User Interrupt</tt><tt><br>
    </tt><tt>E (81627562) gsm-ppp: status_cb: User interrupt|</tt><tt><br>
    </tt><tt>I (81627562) gsm-ppp: Shutdown (via status callback)</tt><tt><br>
    </tt><tt>I (81627562) events: Signal(system.modem.down)</tt><tt><br>
    </tt><tt>I (81637562) simcom: State timeout, transition to 5</tt><tt><br>
    </tt><tt>I (81637562) simcom: State: Enter NetWait state</tt><tt><br>
    </tt><tt>I (81637562) gsm-nmea: Startup</tt><tt><br>
    </tt><tt>I (81641562) simcom: State: Enter NetStart state</tt><tt><br>
    </tt><tt>I (81670562) simcom: State timeout, transition to 7</tt><tt><br>
    </tt><tt>I (81670562) simcom: State: Enter NetLoss state</tt><tt><br>
    </tt><tt>I (81670562) gsm-ppp: Shutting down (hard)...</tt><tt><br>
    </tt><tt>I (81670562) gsm-ppp: StatusCallBack: User Interrupt</tt><tt><br>
    </tt><tt>E (81670562) gsm-ppp: status_cb: User interrupt|</tt><tt><br>
    </tt><tt>I (81670562) gsm-ppp: Shutdown (via status callback)</tt><tt><br>
    </tt><tt>I (81670562) events: Signal(system.modem.down)</tt><tt><br>
    </tt><tt>I (81680562) simcom: State timeout, transition to 5</tt><tt><br>
    </tt><tt>I (81680562) simcom: State: Enter NetWait state</tt><tt><br>
    </tt><tt>I (81680562) gsm-nmea: Startup</tt><tt><br>
    </tt><br>
    … and so on.<br>
    <br>
    <br>
    <blockquote type="cite"
      cite="mid:E4A94948-49F2-4304-8223-D0ECB33DCD35@webb-johnson.net">So,
      now to think about how to manage this in general. To make it
      easier for the end user. Here are some notes/thoughts:
      <div class=""><br class="">
      </div>
      <div class="">
        <ol class="MailOutline">
          <li class="">We continue to use events and scripting for
            fine-tuned control.<br class="">
            <br class="">
          </li>
          <li class="">For configuration, we offer options to set values
            and have those automatically actioned at startup. Examples:</li>
          <ul class="">
            <li class="">If a vehicle type is configured, then
              automatically start a vehicle module of that type.</li>
            <li class="">If a v2 configuration is present, then
              automatically start a ovms server v2 connection.<br
                class="">
              <br class="">
            </li>
          </ul>
          <li class="">For networking, we have the network manager
            component. The idea here is to extend that to provide
            network link logic. Examples:<br class="">
          </li>
          <ul class="">
            <li class="">If wifi comes up, then sleep the simcom modem</li>
            <li class="">If wifi goes down, then wake up the simcom
              modem<br class="">
              <br class="">
            </li>
          </ul>
          <li class="">The above configuration settings can be simply
            mapped to v2 protocol features/parameters.<br class="">
            <br class="">
          </li>
          <li class="">While Config parameters are currently registered
            and visible (MyConfig.RegisterParam), instances are not.
            That makes it tricky to see what config instances are
            available. In some of the code, we document the instances as
            comments after the parameter is registered. My suggestion
            here is to add a MyConfig.RegisterInstance to allow for
            instance registration (with a default value). If the
            instance does not exist, then it would be created with the
            value set as per the default. That would then make it
            visible to the user. The only downside to this is that the
            default value can’t later be changed.</li>
        </ol>
      </div>
      <div class=""><br class="">
      </div>
      <div class="">What do people think? Does that make sense as an
        approach? Implementation should not be difficult.</div>
    </blockquote>
    <br>
    Re #2: yes, but we need some simple way to prevent the auto start,
    as the module may crash before interaction is possible.<br>
    <br>
    Re #5: definitely, that may also allow tab command expansion down to
    instances.<br>
    <br>
    Btw: I've always registered my config "x.rt" as readable, but
    "config list x.rt" will no longer show any values. I'm pretty sure
    it did before.<br>
    <br>
    Regards,<br>
    Michael<br>
    <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>