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
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 */