aboutsummaryrefslogtreecommitdiff
path: root/src/mm-iface-modem.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mm-iface-modem.c')
-rw-r--r--src/mm-iface-modem.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/mm-iface-modem.c b/src/mm-iface-modem.c
index 02849048..41f220b3 100644
--- a/src/mm-iface-modem.c
+++ b/src/mm-iface-modem.c
@@ -4711,6 +4711,7 @@ typedef enum {
INITIALIZATION_STEP_SIM,
INITIALIZATION_STEP_SETUP_CARRIER_CONFIG,
INITIALIZATION_STEP_OWN_NUMBERS,
+ INITIALIZATION_STEP_VALIDATE_ESIM_STATUS,
INITIALIZATION_STEP_LAST
} InitializationStep;
@@ -6011,6 +6012,24 @@ interface_initialization_step (GTask *task)
ctx->step++;
/* fall-through */
+ case INITIALIZATION_STEP_VALIDATE_ESIM_STATUS: {
+ g_autoptr(MMBaseSim) sim = NULL;
+
+ g_object_get (self,
+ MM_IFACE_MODEM_SIM, &sim,
+ NULL);
+
+ /* If the current SIM is an eSIM without profiles, we transition to FAILED
+ * status because the modem is really unusable. */
+ if (sim && mm_base_sim_is_esim_without_profiles (sim)) {
+ g_clear_error (&ctx->fatal_error);
+ ctx->fatal_error = g_error_new (MM_CORE_ERROR, MM_CORE_ERROR_WRONG_SIM_STATE,
+ "eSIM without profiles detected");
+ }
+
+ ctx->step++;
+ } /* fall-through */
+
case INITIALIZATION_STEP_LAST:
/* Setup all method handlers */
g_object_connect (ctx->skeleton,