diff options
author | Lukas Voegl <lvoegl@tdt.de> | 2023-03-10 13:54:41 +0100 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2023-10-05 11:36:08 +0000 |
commit | fe0e6059ba53dbda1bc878372677b08887644db7 (patch) | |
tree | e32a2f06c9be778c12c2b29d8d609c2a81700ea8 | |
parent | 1341c65b5c9ebd8d3a2e21169e0a7f0cfe7a8972 (diff) |
cinterion: implement setting primary slot
Signed-off-by: Lukas Voegl <lvoegl@tdt.de>
-rw-r--r-- | src/plugins/cinterion/mm-broadband-modem-cinterion.c | 45 |
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 * |