Re: [MM/QMI] Unable to select firmware when there is no SIM



On 07/01/13 19:53, Ben Chan wrote:
> Do you have any preference/suggestion on how we should approach this
> problem? I guess we may need to add additional checks in the code where
> it currently assumes a modem object in a fully initialized state.
> 

I don't think there should be many Firmware-related code (if any) where
we require a specific modem state. The attached patch (untested!!)
should allow launching the Firmware interface when the modem is in
Failed state. It should at least give some hints of where to start.

-- 
Aleksander
>From 959bb9d2ffb8bd7a3d701c21ec2cb58cab3717d9 Mon Sep 17 00:00:00 2001
From: Aleksander Morgado <aleksander lanedo com>
Date: Mon, 7 Jan 2013 22:19:02 +0100
Subject: [PATCH] broadband-modem: launch the Firmware interface even on fatal
 errors

Even when there is a fatal error during initialization (e.g. missing PIN in a
3GPP modem), we should allow operations on the Firmware interface.
---
 src/mm-broadband-modem.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/mm-broadband-modem.c b/src/mm-broadband-modem.c
index 11bc279..6563b4e 100644
--- a/src/mm-broadband-modem.c
+++ b/src/mm-broadband-modem.c
@@ -7678,8 +7678,9 @@ iface_modem_initialize_ready (MMBroadbandModem *self,
                                      MM_MODEM_STATE_FAILED,
                                      MM_MODEM_STATE_CHANGE_REASON_UNKNOWN);
 
-        /* Just jump to the last step */
-        ctx->step = INITIALIZE_STEP_LAST;
+        /* Jump to the firmware step. We allow firmware switching even in failed
+         * state */
+        ctx->step = INITIALIZE_STEP_IFACE_FIRMWARE;
         initialize_step (ctx);
         return;
     }
@@ -7873,7 +7874,8 @@ initialize_step (InitializeContext *ctx)
         return;
 
     case INITIALIZE_STEP_IFACE_SIMPLE:
-        mm_iface_modem_simple_initialize (MM_IFACE_MODEM_SIMPLE (ctx->self));
+        if (ctx->self->priv->modem_state != MM_MODEM_STATE_FAILED)
+            mm_iface_modem_simple_initialize (MM_IFACE_MODEM_SIMPLE (ctx->self));
         /* Fall down to next step */
         ctx->step++;
 
-- 
1.8.0.2



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]