<div dir="ltr"><div class="gmail_default" style=""><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">Hi Aleksander,</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">I had some time now to look at the changes for SIM hot insertion feature (QSS unsolicited in Telit modems), lot of doubts actually.</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">My idea is the following:</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">1. in modem iface initialization, ask the modem whether it supports or not SIM hot insertion (TBD: sync method? property?).</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">2. according to point 1, if initialization fails for MM_MOBILE_EQUIPMENT_ERROR_SIM_NOT_INSERTED, allow the modem enable command (I am not sure about this actually, see my note below).</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">3. In telit plugin, register an handler for QSS unsolicited (3gpp iface)</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">    a. when sim is removed</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">        - disable modem (mm_modem_disable) keeping the QSS handler (and the port open)</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">        - set modem in locked state (mm_iface_modem_update_state)</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">    b. when sim is inserted</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">        - start re-probe (mm_base_modem_set_valid(..., false))</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">There are still some open points, here are the most important IMO</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">A. The modem really needs to be enabled to get the the unsolicited?</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">B. How to keep the port open.</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">Point A</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">=======</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">I added a QSS handler in the plugin along with the other unsolicited in `modem_3gpp_setup/enable_unsolicited_events` functions, but this way I can register an handler only when modem is enabled, which is not something I would allow when SIM is not inserted. I also tried to move the handler registration logic inside a new modem-iface's function (namely, not in 3gpp iface), but did't work.</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">Am I missing something, or enabling the modem is really needed to listen to modem's unsolicited?</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">Point B</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">=======</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">I thought to solve this point adding a parameter "keep_open" to MMPortSerialPrivate along with a new function to set it to TRUE, in order to keep the port open when open_count==1, but it does not seems to be effective (the main issue now is a crash, that I am still debugging, when SIM is removed and then re-inserted, like if the port status is invalid, "partially" close). Do you think is a viable solution?</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">Best regards,<br>Carlo</font></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On 13 March 2016 at 12:46, Carlo Lobrano <span dir="ltr"><<a href="mailto:c.lobrano@gmail.com" target="_blank">c.lobrano@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p dir="ltr">Thanks a lot! I'll have a look at that</p><span class="HOEnZb"><font color="#888888">
<p dir="ltr">Carlo</p></font></span><div class="HOEnZb"><div class="h5">
<br><div class="gmail_quote"><div dir="ltr">Il dom 13 mar 2016 11:57 AM Aleksander Morgado <<a href="mailto:aleksander@aleksander.es" target="_blank">aleksander@aleksander.es</a>> ha scritto:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Sun, Mar 13, 2016 at 10:25 AM, Carlo Lobrano <<a href="mailto:c.lobrano@gmail.com" target="_blank">c.lobrano@gmail.com</a>> wrote:<br>
> That looks like a lot of work :D, better design all the changes before<br>
> starting.<br>
<br>
Well, maybe not much work, but probably a bit hard to get the logic right.<br>
<br>
> Brief recap<br>
> 1. Put the modem in failed state<br>
<br>
You may want to check what happens if you run<br>
mm_base_modem_set_valid(FALSE) whenever the SIM is lost. That method<br>
should flag the modem as invalid and reprobe from scratch, and that<br>
will itself end up going into failed state.<br>
<br>
> 2. Keep a port open when in failed state but with handlers still assigned to<br>
> unsolicited<br>
<br>
Only with the handler that you expect; not with all unsolicited<br>
message handlers.<br>
<br>
> 3. start a full reprobe<br>
><br>
> Another problem I saw is that when the SIM is not inserted from the start,<br>
> the modem is not initialized at all, so I cannot even set an handler to<br>
> watch for unsolicited events. Do you think that is something that can be<br>
> changed?<br>
<br>
That is equivalent to your step #2 above. When a modem starts without<br>
SIM, it goes to Failed state right away. In your case, your Failed<br>
state will be special, so that it really ends up keeping a port open<br>
to monitor for the unsolicited messages you need.<br>
<br>
--<br>
Aleksander<br>
<a href="https://aleksander.es" rel="noreferrer" target="_blank">https://aleksander.es</a><br>
</blockquote></div></div></div></blockquote></div><br></div>