diff options
Diffstat (limited to 'src/mm-broadband-modem-mbim.c')
-rw-r--r-- | src/mm-broadband-modem-mbim.c | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/src/mm-broadband-modem-mbim.c b/src/mm-broadband-modem-mbim.c index 3a09257b..1b0b1cd6 100644 --- a/src/mm-broadband-modem-mbim.c +++ b/src/mm-broadband-modem-mbim.c @@ -5148,7 +5148,9 @@ update_sim_from_slot_status (MMBroadbandModemMbim *self, MbimUiccSlotState slot_status, guint slot_index) { - g_autoptr(MMBaseSim) sim = NULL; + g_autoptr(MMBaseSim) sim = NULL; + MMSimType sim_type = MM_SIM_TYPE_UNKNOWN; + MMSimEsimStatus esim_status = MM_SIM_ESIM_STATUS_UNKNOWN; mm_obj_dbg (self, "Updating sim at slot %d", slot_index + 1); @@ -5159,9 +5161,21 @@ update_sim_from_slot_status (MMBroadbandModemMbim *self, slot_status == MBIM_UICC_SLOT_STATE_ACTIVE_ESIM_NO_PROFILES || slot_status == MBIM_UICC_SLOT_STATE_NOT_READY || slot_status == MBIM_UICC_SLOT_STATE_ERROR) { + + if (slot_status == MBIM_UICC_SLOT_STATE_ACTIVE) + sim_type = MM_SIM_TYPE_PHYSICAL; + else if (slot_status == MBIM_UICC_SLOT_STATE_ACTIVE_ESIM) { + sim_type = MM_SIM_TYPE_ESIM; + esim_status = MM_SIM_ESIM_STATUS_WITH_PROFILES; + } else if (slot_status == MBIM_UICC_SLOT_STATE_ACTIVE_ESIM_NO_PROFILES) { + sim_type = MM_SIM_TYPE_ESIM; + esim_status = MM_SIM_ESIM_STATUS_NO_PROFILES; + } sim = mm_sim_mbim_new_initialized (MM_BASE_MODEM (self), slot_index, FALSE, + sim_type, + esim_status, NULL, NULL, NULL, @@ -8365,6 +8379,8 @@ query_slot_information_status_ready (MbimDevice *device, LoadSimSlotsContext *ctx; MMBaseSim *sim; gboolean sim_active = FALSE; + MMSimType sim_type = MM_SIM_TYPE_UNKNOWN; + MMSimEsimStatus esim_status = MM_SIM_ESIM_STATUS_UNKNOWN; self = g_task_get_source_object (task); ctx = g_task_get_task_data (task); @@ -8393,9 +8409,22 @@ query_slot_information_status_ready (MbimDevice *device, slot_state == MBIM_UICC_SLOT_STATE_ACTIVE_ESIM_NO_PROFILES || slot_state == MBIM_UICC_SLOT_STATE_NOT_READY || slot_state == MBIM_UICC_SLOT_STATE_ERROR) { + + if (slot_state == MBIM_UICC_SLOT_STATE_ACTIVE) + sim_type = MM_SIM_TYPE_PHYSICAL; + else if (slot_state == MBIM_UICC_SLOT_STATE_ACTIVE_ESIM) { + sim_type = MM_SIM_TYPE_ESIM; + esim_status = MM_SIM_ESIM_STATUS_WITH_PROFILES; + } else if (slot_state == MBIM_UICC_SLOT_STATE_ACTIVE_ESIM_NO_PROFILES) { + sim_type = MM_SIM_TYPE_ESIM; + esim_status = MM_SIM_ESIM_STATUS_NO_PROFILES; + } + sim = mm_sim_mbim_new_initialized (MM_BASE_MODEM (self), slot_index, sim_active, + sim_type, + esim_status, NULL, NULL, NULL, |