api,sim: new 'Active' property

In preparation for the multi-SIM setup, we need a way to tell whether
a given SIM card is active or not in the system.

On systems with one single SIM slot, the available SIM card will
always be active.

On Multi-SIM Single-Standby setups we may have multiple SIM slots with
multiple SIM cards, but only one of them will be active at any given
time.

On Multi-SIM Multi-Standby setups we may have multiple SIM slots with
multiple SIM cards that may be active at the same time. E.g. the QMI
protocol allows up to 5 different active SIM cards (primary,
secondary, tertiary...).
This commit is contained in:
Aleksander Morgado
2020-08-01 09:59:13 +02:00
parent 48973e3d72
commit 86a183778b
18 changed files with 52 additions and 0 deletions

View File

@@ -264,6 +264,7 @@ static FieldInfo field_infos[] = {
[MMC_F_SMS_PROPERTIES_DELIVERY_STATE] = { "sms.properties.delivery-state", "delivery state", MMC_S_SMS_PROPERTIES, }, [MMC_F_SMS_PROPERTIES_DELIVERY_STATE] = { "sms.properties.delivery-state", "delivery state", MMC_S_SMS_PROPERTIES, },
[MMC_F_SMS_PROPERTIES_DISCH_TIMESTAMP] = { "sms.properties.discharge-timestamp", "discharge timestamp", MMC_S_SMS_PROPERTIES, }, [MMC_F_SMS_PROPERTIES_DISCH_TIMESTAMP] = { "sms.properties.discharge-timestamp", "discharge timestamp", MMC_S_SMS_PROPERTIES, },
[MMC_F_SIM_GENERAL_DBUS_PATH] = { "sim.dbus-path", "path", MMC_S_SIM_GENERAL, }, [MMC_F_SIM_GENERAL_DBUS_PATH] = { "sim.dbus-path", "path", MMC_S_SIM_GENERAL, },
[MMC_F_SIM_PROPERTIES_ACTIVE] = { "sim.properties.active", "active", MMC_S_SIM_PROPERTIES, },
[MMC_F_SIM_PROPERTIES_IMSI] = { "sim.properties.imsi", "imsi", MMC_S_SIM_PROPERTIES, }, [MMC_F_SIM_PROPERTIES_IMSI] = { "sim.properties.imsi", "imsi", MMC_S_SIM_PROPERTIES, },
[MMC_F_SIM_PROPERTIES_ICCID] = { "sim.properties.iccid", "iccid", MMC_S_SIM_PROPERTIES, }, [MMC_F_SIM_PROPERTIES_ICCID] = { "sim.properties.iccid", "iccid", MMC_S_SIM_PROPERTIES, },
[MMC_F_SIM_PROPERTIES_OPERATOR_ID] = { "sim.properties.operator-code", "operator id", MMC_S_SIM_PROPERTIES, }, [MMC_F_SIM_PROPERTIES_OPERATOR_ID] = { "sim.properties.operator-code", "operator id", MMC_S_SIM_PROPERTIES, },

View File

@@ -281,6 +281,7 @@ typedef enum {
MMC_F_SMS_PROPERTIES_DELIVERY_STATE, MMC_F_SMS_PROPERTIES_DELIVERY_STATE,
MMC_F_SMS_PROPERTIES_DISCH_TIMESTAMP, MMC_F_SMS_PROPERTIES_DISCH_TIMESTAMP,
MMC_F_SIM_GENERAL_DBUS_PATH, MMC_F_SIM_GENERAL_DBUS_PATH,
MMC_F_SIM_PROPERTIES_ACTIVE,
MMC_F_SIM_PROPERTIES_IMSI, MMC_F_SIM_PROPERTIES_IMSI,
MMC_F_SIM_PROPERTIES_ICCID, MMC_F_SIM_PROPERTIES_ICCID,
MMC_F_SIM_PROPERTIES_OPERATOR_ID, MMC_F_SIM_PROPERTIES_OPERATOR_ID,

View File

@@ -159,6 +159,7 @@ static void
print_sim_info (MMSim *sim) print_sim_info (MMSim *sim)
{ {
mmcli_output_string (MMC_F_SIM_GENERAL_DBUS_PATH, mm_sim_get_path (sim)); mmcli_output_string (MMC_F_SIM_GENERAL_DBUS_PATH, mm_sim_get_path (sim));
mmcli_output_string (MMC_F_SIM_PROPERTIES_ACTIVE, mm_sim_get_active (sim) ? "yes" : "no");
mmcli_output_string (MMC_F_SIM_PROPERTIES_IMSI, mm_sim_get_imsi (sim)); mmcli_output_string (MMC_F_SIM_PROPERTIES_IMSI, mm_sim_get_imsi (sim));
mmcli_output_string (MMC_F_SIM_PROPERTIES_ICCID, mm_sim_get_identifier (sim)); mmcli_output_string (MMC_F_SIM_PROPERTIES_ICCID, mm_sim_get_identifier (sim));
mmcli_output_string (MMC_F_SIM_PROPERTIES_OPERATOR_ID, mm_sim_get_operator_identifier (sim)); mmcli_output_string (MMC_F_SIM_PROPERTIES_OPERATOR_ID, mm_sim_get_operator_identifier (sim));

View File

@@ -1209,6 +1209,7 @@ MMSim
<SUBSECTION Getters> <SUBSECTION Getters>
mm_sim_get_path mm_sim_get_path
mm_sim_dup_path mm_sim_dup_path
mm_sim_get_active
mm_sim_get_identifier mm_sim_get_identifier
mm_sim_dup_identifier mm_sim_dup_identifier
mm_sim_get_imsi mm_sim_get_imsi
@@ -3088,6 +3089,7 @@ mm_gdbus_object_manager_client_get_type
MmGdbusSim MmGdbusSim
MmGdbusSimIface MmGdbusSimIface
<SUBSECTION Getters> <SUBSECTION Getters>
mm_gdbus_sim_get_active
mm_gdbus_sim_get_imsi mm_gdbus_sim_get_imsi
mm_gdbus_sim_dup_imsi mm_gdbus_sim_dup_imsi
mm_gdbus_sim_get_sim_identifier mm_gdbus_sim_get_sim_identifier
@@ -3112,6 +3114,7 @@ mm_gdbus_sim_call_change_pin
mm_gdbus_sim_call_change_pin_finish mm_gdbus_sim_call_change_pin_finish
mm_gdbus_sim_call_change_pin_sync mm_gdbus_sim_call_change_pin_sync
<SUBSECTION Private> <SUBSECTION Private>
mm_gdbus_sim_set_active
mm_gdbus_sim_set_imsi mm_gdbus_sim_set_imsi
mm_gdbus_sim_set_operator_identifier mm_gdbus_sim_set_operator_identifier
mm_gdbus_sim_set_operator_name mm_gdbus_sim_set_operator_name

View File

@@ -65,6 +65,19 @@
<arg name="new_pin" type="s" direction="in" /> <arg name="new_pin" type="s" direction="in" />
</method> </method>
<!--
Active:
Boolean indicating whether the SIM is currently active.
On systems that support Multi SIM Single Standby, only one SIM may be
active at any given time, which will be the one considered primary.
On systems that support Multi SIM Multi Standby, more than one SIM may
be active at any given time, but only one of them is considered primary.
-->
<property name="Active" type="b" access="read" />
<!-- <!--
SimIdentifier: SimIdentifier:

View File

@@ -86,6 +86,26 @@ mm_sim_dup_path (MMSim *self)
/*****************************************************************************/ /*****************************************************************************/
/**
* mm_sim_get_active:
* @self: A #MMSim.
*
* Checks whether the #MMSim is currently active.
*
* Returns: %TRUE if the SIM is active, %FALSE otherwise.
*
* Since: 1.16
*/
gboolean
mm_sim_get_active (MMSim *self)
{
g_return_val_if_fail (MM_IS_SIM (self), FALSE);
return mm_gdbus_sim_get_active (MM_GDBUS_SIM (self));
}
/*****************************************************************************/
/** /**
* mm_sim_get_identifier: * mm_sim_get_identifier:
* @self: A #MMSim. * @self: A #MMSim.

View File

@@ -67,6 +67,8 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC (MMSim, g_object_unref)
const gchar *mm_sim_get_path (MMSim *self); const gchar *mm_sim_get_path (MMSim *self);
gchar *mm_sim_dup_path (MMSim *self); gchar *mm_sim_dup_path (MMSim *self);
gboolean mm_sim_get_active (MMSim *self);
const gchar *mm_sim_get_identifier (MMSim *self); const gchar *mm_sim_get_identifier (MMSim *self);
gchar *mm_sim_dup_identifier (MMSim *self); gchar *mm_sim_dup_identifier (MMSim *self);

View File

@@ -148,6 +148,7 @@ mm_sim_huawei_new (MMBaseModem *modem,
callback, callback,
user_data, user_data,
MM_BASE_SIM_MODEM, modem, MM_BASE_SIM_MODEM, modem,
"active", TRUE, /* by default always active */
NULL); NULL);
} }

View File

@@ -63,6 +63,7 @@ mm_sim_iridium_new (MMBaseModem *modem,
callback, callback,
user_data, user_data,
MM_BASE_SIM_MODEM, modem, MM_BASE_SIM_MODEM, modem,
"active", TRUE, /* by default always active */
NULL); NULL);
} }

View File

@@ -221,6 +221,7 @@ mm_sim_mbm_new (MMBaseModem *modem,
callback, callback,
user_data, user_data,
MM_BASE_SIM_MODEM, modem, MM_BASE_SIM_MODEM, modem,
"active", TRUE, /* by default always active */
NULL); NULL);
} }

View File

@@ -62,6 +62,7 @@ mm_sim_nokia_new (MMBaseModem *modem,
callback, callback,
user_data, user_data,
MM_BASE_SIM_MODEM, modem, MM_BASE_SIM_MODEM, modem,
"active", TRUE, /* by default always active */
NULL); NULL);
} }

View File

@@ -215,6 +215,7 @@ mm_sim_novatel_lte_new (MMBaseModem *modem,
callback, callback,
user_data, user_data,
MM_BASE_SIM_MODEM, modem, MM_BASE_SIM_MODEM, modem,
"active", TRUE, /* by default always active */
NULL); NULL);
} }

View File

@@ -62,6 +62,7 @@ mm_sim_pantech_new (MMBaseModem *modem,
callback, callback,
user_data, user_data,
MM_BASE_SIM_MODEM, modem, MM_BASE_SIM_MODEM, modem,
"active", TRUE, /* by default always active */
NULL); NULL);
} }

View File

@@ -139,6 +139,7 @@ mm_sim_sierra_new (MMBaseModem *modem,
callback, callback,
user_data, user_data,
MM_BASE_SIM_MODEM, modem, MM_BASE_SIM_MODEM, modem,
"active", TRUE, /* by default always active */
NULL); NULL);
} }

View File

@@ -144,6 +144,7 @@ mm_sim_ublox_new (MMBaseModem *modem,
callback, callback,
user_data, user_data,
MM_BASE_SIM_MODEM, modem, MM_BASE_SIM_MODEM, modem,
"active", TRUE, /* by default always active */
NULL); NULL);
} }

View File

@@ -1715,6 +1715,7 @@ mm_base_sim_new (MMBaseModem *modem,
callback, callback,
user_data, user_data,
MM_BASE_SIM_MODEM, modem, MM_BASE_SIM_MODEM, modem,
"active", TRUE, /* by default always active */
NULL); NULL);
} }

View File

@@ -752,6 +752,7 @@ mm_sim_mbim_new (MMBaseModem *modem,
callback, callback,
user_data, user_data,
MM_BASE_SIM_MODEM, modem, MM_BASE_SIM_MODEM, modem,
"active", TRUE, /* by default always active */
NULL); NULL);
} }

View File

@@ -1315,6 +1315,7 @@ mm_sim_qmi_new (MMBaseModem *modem,
user_data, user_data,
MM_BASE_SIM_MODEM, modem, MM_BASE_SIM_MODEM, modem,
MM_SIM_QMI_DMS_UIM_DEPRECATED, dms_uim_deprecated, MM_SIM_QMI_DMS_UIM_DEPRECATED, dms_uim_deprecated,
"active", TRUE, /* by default always active */
NULL); NULL);
} }