KVMote/Transport/IKvmTransport.cs

37 lines
1.1 KiB
C#

using System;
using System.Threading;
using System.Threading.Tasks;
namespace KVMote.Transport
{
internal interface IKvmTransport : IDisposable
{
/// <summary>Scans for the device and stores connection info internally.</summary>
Task<bool> DetectAsync(CancellationToken ct);
/// <summary>Human-readable device label, e.g. "COM5" or "KVMote (BLE)".</summary>
string DeviceLabel { get; }
/// <summary>Connect using info gathered by DetectAsync.</summary>
Task<bool> ConnectAsync();
void Disconnect();
bool IsConnected { get; }
/// <summary>Reliable send — keyboard, clicks, LED commands.</summary>
void Send(byte[] data);
/// <summary>Lossy send — drops if transport is busy. For mouse move.</summary>
void SendLossy(byte[] data);
event Action<string> DataReceived;
/// <summary>Maximum characters allowed in a single clipboard paste.</summary>
int ClipboardMaxChars { get; }
/// <summary>Delay in milliseconds between characters during clipboard paste.</summary>
int ClipboardDelayMs { get; }
}
}