aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Voegl <lvoegl@tdt.de>2023-03-10 13:54:41 +0100
committerAleksander Morgado <aleksander@aleksander.es>2023-10-05 11:36:08 +0000
commitfe0e6059ba53dbda1bc878372677b08887644db7 (patch)
treee32a2f06c9be778c12c2b29d8d609c2a81700ea8
parent1341c65b5c9ebd8d3a2e21169e0a7f0cfe7a8972 (diff)
cinterion: implement setting primary slot
Signed-off-by: Lukas Voegl <lvoegl@tdt.de>
-rw-r--r--src/plugins/cinterion/mm-broadband-modem-cinterion.c45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/plugins/cinterion/mm-broadband-modem-cinterion.c b/src/plugins/cinterion/mm-broadband-modem-cinterion.c
index 8573109d..4c0411f4 100644
--- a/src/plugins/cinterion/mm-broadband-modem-cinterion.c
+++ b/src/plugins/cinterion/mm-broadband-modem-cinterion.c
@@ -3405,6 +3405,49 @@ load_sim_slots (MMIfaceModem *self,
}
static void
+set_primary_sim_slot_ready (MMBaseModem *_self,
+ GAsyncResult *res,
+ GTask *task)
+{
+ GError *error = NULL;
+
+ if (error)
+ g_task_return_error (task, error);
+ else
+ g_task_return_boolean (task, TRUE);
+
+ g_object_unref (task);
+}
+
+static void
+set_primary_sim_slot (MMIfaceModem *self,
+ guint sim_slot,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GTask *task;
+ g_autofree gchar *cmd = NULL;
+
+ task = g_task_new (self, NULL, callback, user_data);
+ cmd = g_strdup_printf ("^SCFG=\"SIM/CS\",\"SIM_%i\"", sim_slot);
+
+ mm_base_modem_at_command (MM_BASE_MODEM (self),
+ cmd,
+ 10,
+ FALSE,
+ (GAsyncReadyCallback)set_primary_sim_slot_ready,
+ task);
+}
+
+static gboolean
+set_primary_sim_slot_finish (MMIfaceModem *self,
+ GAsyncResult *res,
+ GError **error)
+{
+ return g_task_propagate_boolean (G_TASK (res), error);
+}
+
+static void
iface_modem_init (MMIfaceModem *iface)
{
iface_modem_parent = g_type_interface_peek_parent (iface);
@@ -3440,6 +3483,8 @@ iface_modem_init (MMIfaceModem *iface)
iface->cleanup_sim_hot_swap = modem_cleanup_sim_hot_swap;
iface->load_sim_slots = load_sim_slots;
iface->load_sim_slots_finish = load_sim_slots_finish;
+ iface->set_primary_sim_slot = set_primary_sim_slot;
+ iface->set_primary_sim_slot_finish = set_primary_sim_slot_finish;
}
static MMIfaceModem *