Sim state is already known after modem is enabled and there's no need to
query it again. Before this patch, query_sim_state() was called upon
huawei_enable() and huawei_pre_sim(). Both functions might call
notify_sim_state() with a valid state. Hence we could eventually end up
sending AT+CFUN=5 command twice.
If a "^SYSINFO" arrives after the timer for query_sim_locked() has been
set up, it'd would set a new timer, signaling a sim state change more
than once.
Check if there is a timer running already and remove it before
creating a new one. This will prevent calling reopen_callback() more
than if mbm_disconnect() is called more than once.
In case the modem is disconnected during enabling process, mbm_disconnect()
will set up data->reopen_source timer. This timer needs to be
removed in mbm_remove() to stop execution of reopen_callback() after
hardware disconnection.
This patch introduces auto discovery of ST-Ericsson modems.
ST-Ericsson modems (M57XX, M7XX, M74XX) are managed by a
Modem Init Daemon responsible for start, power cycles,
flashing etc. This STE plugin monitors the modem state exposed
from the Modem Init Daemon's Dbus API. When the modem is in state
"on" the STE modem is created and registered. Muliple modem
instances, and reset handling is supported.
It seesm that some networks send the push notifications with a source
port of 0 instead of 9200. Instead of accepting any source port, add
an additional datagram handler for the source port 0.
When SIM is locked, huawei modem does not send any notification about
SIM state change because it does not differentiate 'invalid' from
'locked'.
In order to be able to unlock the sim, this patch forces a notification
of a valid state after a timeout.