aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mm-broadband-modem-mbim.c31
-rw-r--r--src/mm-sim-mbim.c20
-rw-r--r--src/mm-sim-mbim.h18
3 files changed, 52 insertions, 17 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,
diff --git a/src/mm-sim-mbim.c b/src/mm-sim-mbim.c
index b0addb2e..1500fd2c 100644
--- a/src/mm-sim-mbim.c
+++ b/src/mm-sim-mbim.c
@@ -1186,14 +1186,16 @@ mm_sim_mbim_new (MMBaseModem *modem,
MMBaseSim *
mm_sim_mbim_new_initialized (MMBaseModem *modem,
- guint slot_number,
- gboolean active,
- const gchar *sim_identifier,
- const gchar *imsi,
- const gchar *eid,
- const gchar *operator_identifier,
- const gchar *operator_name,
- const GStrv emergency_numbers)
+ guint slot_number,
+ gboolean active,
+ MMSimType sim_type,
+ MMSimEsimStatus esim_status,
+ const gchar *sim_identifier,
+ const gchar *imsi,
+ const gchar *eid,
+ const gchar *operator_identifier,
+ const gchar *operator_name,
+ const GStrv emergency_numbers)
{
MMBaseSim *sim;
@@ -1201,6 +1203,8 @@ mm_sim_mbim_new_initialized (MMBaseModem *modem,
MM_BASE_SIM_MODEM, modem,
MM_BASE_SIM_SLOT_NUMBER, slot_number,
"active", active,
+ "sim-type", sim_type,
+ "esim-status", esim_status,
"sim-identifier", sim_identifier,
"eid", eid,
"operator-identifier", operator_identifier,
diff --git a/src/mm-sim-mbim.h b/src/mm-sim-mbim.h
index 49aa5561..709c3d6d 100644
--- a/src/mm-sim-mbim.h
+++ b/src/mm-sim-mbim.h
@@ -51,12 +51,14 @@ void mm_sim_mbim_new (MMBaseModem *modem,
MMBaseSim *mm_sim_mbim_new_finish (GAsyncResult *res,
GError **error);
MMBaseSim *mm_sim_mbim_new_initialized (MMBaseModem *modem,
- guint slot_number,
- gboolean active,
- const gchar *sim_identifier,
- const gchar *imsi,
- const gchar *eid,
- const gchar *operator_identifier,
- const gchar *operator_name,
- const GStrv emergency_numbers);
+ guint slot_number,
+ gboolean active,
+ MMSimType sim_type,
+ MMSimEsimStatus esim_status,
+ const gchar *sim_identifier,
+ const gchar *imsi,
+ const gchar *eid,
+ const gchar *operator_identifier,
+ const gchar *operator_name,
+ const GStrv emergency_numbers);
#endif /* MM_SIM_MBIM_H */