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'
This commit is contained in:
Aleksander Morgado
2019-12-05 15:04:02 +01:00
parent 0660b6b162
commit 5f0f2cb9d9

View File

@@ -1055,19 +1055,28 @@ call_start_ready (MMBaseModem *modem,
} }
static void static void
call_start (MMBaseCall *self, call_start (MMBaseCall *self,
GCancellable *cancellable, GCancellable *cancellable,
GAsyncReadyCallback callback, GAsyncReadyCallback callback,
gpointer user_data) gpointer user_data)
{ {
GTask *task; GError *error = NULL;
gchar *cmd; GTask *task;
gchar *cmd;
MMPortSerialAt *port;
task = g_task_new (self, NULL, callback, user_data); 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))); 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_at_command_full (self->priv->modem,
mm_base_modem_peek_port_primary (self->priv->modem), port,
cmd, cmd,
90, 90,
FALSE, /* no cached */ FALSE, /* no cached */