diff options
-rw-r--r-- | src/mm-base-modem.c | 30 | ||||
-rw-r--r-- | src/mm-broadband-modem.c | 32 |
2 files changed, 20 insertions, 42 deletions
diff --git a/src/mm-base-modem.c b/src/mm-base-modem.c index b8464414..13fe14dd 100644 --- a/src/mm-base-modem.c +++ b/src/mm-base-modem.c @@ -1233,29 +1233,21 @@ static void initialize_ready (MMBaseModem *self, GAsyncResult *res) { - GError *error = NULL; + g_autoptr(GError) error = NULL; - if (mm_base_modem_initialize_finish (self, res, &error)) { + if (!mm_base_modem_initialize_finish (self, res, &error)) { + if (g_error_matches (error, MM_CORE_ERROR, MM_CORE_ERROR_ABORTED)) { + /* FATAL error, won't even be exported in DBus */ + mm_obj_err (self, "fatal error initializing: %s", error->message); + } else { + /* non-fatal error */ + mm_obj_warn (self, "error initializing: %s", error->message); + mm_base_modem_set_valid (self, TRUE); + } + } else { mm_obj_dbg (self, "modem initialized"); mm_base_modem_set_valid (self, TRUE); - return; } - - /* Wrong state is returned when modem is found locked */ - if (g_error_matches (error, MM_CORE_ERROR, MM_CORE_ERROR_WRONG_STATE)) { - /* Even with initialization errors, we do set the state to valid, so - * that the modem gets exported and the failure notified to the user. - */ - mm_obj_dbg (self, "couldn't finish initialization in the current state: '%s'", error->message); - g_error_free (error); - mm_base_modem_set_valid (self, TRUE); - return; - } - - /* Really fatal, we cannot even export the failed modem (e.g. error before - * even trying to enable the Modem interface */ - mm_obj_warn (self, "couldn't initialize: '%s'", error->message); - g_error_free (error); } static inline void diff --git a/src/mm-broadband-modem.c b/src/mm-broadband-modem.c index 02fd0e2d..0cef006e 100644 --- a/src/mm-broadband-modem.c +++ b/src/mm-broadband-modem.c @@ -12665,28 +12665,19 @@ initialize_step (GTask *task) if (ctx->self->priv->modem_state == MM_MODEM_STATE_FAILED) { GError *error = NULL; - if (ctx->self->priv->modem_dbus_skeleton) { + if (!ctx->self->priv->modem_dbus_skeleton) { + /* ABORTED here specifies an extremely fatal error that will make the modem + * not even exported in DBus */ + error = g_error_new (MM_CORE_ERROR, MM_CORE_ERROR_ABORTED, + "Fatal error: modem is unusable"); + } else { /* Fatal SIM, firmware, or modem failure :-( */ - gboolean is_sim_hot_swap_supported = FALSE; MMModemStateFailedReason reason; reason = mm_gdbus_modem_get_state_failed_reason (MM_GDBUS_MODEM (ctx->self->priv->modem_dbus_skeleton)); - - g_object_get (ctx->self, - MM_IFACE_MODEM_SIM_HOT_SWAP_SUPPORTED, &is_sim_hot_swap_supported, - NULL); - - if (reason == MM_MODEM_STATE_FAILED_REASON_SIM_MISSING) { - if (!is_sim_hot_swap_supported) { - mm_obj_dbg (ctx->self, "SIM is missing, but this modem does not support SIM hot swap."); - } else { - mm_obj_dbg (ctx->self, "SIM is missing, but SIM hot swap is enabled; waiting for SIM..."); - error = g_error_new (MM_CORE_ERROR, - MM_CORE_ERROR_WRONG_STATE, - "Modem is unusable due to SIM missing, " - "cannot fully initialize, waiting for SIM insertion."); - } - } + error = g_error_new (MM_CORE_ERROR, MM_CORE_ERROR_WRONG_STATE, + "Modem in failed state: %s", + mm_modem_state_failed_reason_get_string (reason)); /* Ensure we only leave the Modem, Voice and Firmware interfaces * around. A failure could be caused by firmware issues, which @@ -12705,11 +12696,6 @@ initialize_step (GTask *task) mm_iface_modem_simple_shutdown (MM_IFACE_MODEM_SIMPLE (ctx->self)); } - if (!error) - error = g_error_new (MM_CORE_ERROR, - MM_CORE_ERROR_ABORTED, - "Modem is unusable, cannot fully initialize"); - g_task_return_error (task, error); g_object_unref (task); return; |