From 5f0f2cb9d97b28f873a521128393532c8524d054 Mon Sep 17 00:00:00 2001 From: Aleksander Morgado Date: Thu, 5 Dec 2019 15:04:02 +0100 Subject: base-call: do not require primary port to start a call If the modem is connected using the primary port, we can just rely on the secondary port. # mmcli --call 0 --start error: couldn't start the call: 'GDBus.Error:org.freedesktop.ModemManager1.Error.Core.Connected: Cannot run sequence: port is connected' --- src/mm-base-call.c | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/mm-base-call.c b/src/mm-base-call.c index c01ef463..6966e94a 100644 --- a/src/mm-base-call.c +++ b/src/mm-base-call.c @@ -1055,19 +1055,28 @@ call_start_ready (MMBaseModem *modem, } static void -call_start (MMBaseCall *self, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) +call_start (MMBaseCall *self, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) { - GTask *task; - gchar *cmd; + GError *error = NULL; + GTask *task; + gchar *cmd; + MMPortSerialAt *port; task = g_task_new (self, NULL, callback, user_data); + port = mm_base_modem_peek_best_at_port (MM_BASE_MODEM (self->priv->modem), &error); + if (!port) { + g_task_return_error (task, error); + g_object_unref (task); + return; + } + cmd = g_strdup_printf ("ATD%s;", mm_gdbus_call_get_number (MM_GDBUS_CALL (self))); mm_base_modem_at_command_full (self->priv->modem, - mm_base_modem_peek_port_primary (self->priv->modem), + port, cmd, 90, FALSE, /* no cached */ -- cgit v1.2.3-70-g09d2