Hi Kalle,

> With Huawei E1552 I got sim busy errors when I plugged in the modem
> and ofono was already running:
> 
> May 24 17:02:04 tukki ofonod[7619]: > AT+CRC=1\r
> May 24 17:02:04 tukki ofonod[7619]: < \r\n+CME ERROR: SIM busy\r\n
> May 24 17:02:04 tukki ofonod[7619]: > AT+CLIP=1\r
> May 24 17:02:04 tukki ofonod[7619]: < \r\n+CME ERROR: SIM busy\r\n
> 
> Fix this by following sim state changes with ^SIMST notification and
> only enable modem after SIM is ready. In case SIM is already ready
> and we miss the notification for some reason, also use AT^SYSINFO
> to check the state during enable phase.
> 
> Also change huawei_enable() to return -EINPROGRESS to make sure that
> ofono modem is not powered too early. I believe this was a bug.
> ---
> 
>  plugins/huawei.c |   99 
> +++++++++++++++++++++++++++++++++++++++++++++++++++---
>  1 files changed, 93 insertions(+), 6 deletions(-)
> 
> diff --git a/plugins/huawei.c b/plugins/huawei.c
> index e1408bd..7d59a26 100644
> --- a/plugins/huawei.c
> +++ b/plugins/huawei.c
> @@ -47,9 +47,18 @@
>  #include <drivers/atmodem/atutil.h>
>  #include <drivers/atmodem/vendor.h>
>  
> +enum huawei_state {
> +     HUAWEI_DISABLED,
> +     HUAWEI_DISABLE,
> +     HUAWEI_ENABLE,
> +     HUAWEI_ENABLED,
> +};
> +

is this really needed? I don't see why you want it. Where is the race
condition that you are trying to fix with it.

>  struct huawei_data {
>       GAtChat *chat;
>       GAtChat *event;
> +     gint sim_state;
> +     enum huawei_state state;
>  };

I think the sim_state should be just enough.

Regards

Marcel


_______________________________________________
ofono mailing list
[email protected]
http://lists.ofono.org/listinfo/ofono

Reply via email to