Transport Layer API
Communication abstraction for serial, network, and other transport mechanisms.
ITransport Interface
Base interface for all transport implementations.
Copy
public interface ITransport : IDisposable
{
ConnectionState State { get; }
TransportStatistics Statistics { get; }
Task ConnectAsync(CancellationToken ct = default);
Task DisconnectAsync();
Task SendAsync(IMessage message, CancellationToken ct = default);
event EventHandler MessageReceived;
event EventHandler ConnectionStateChanged;
}
Serial Transport
Communicate with robots over COM ports at high baudrates.
Copy
var config = new SerialTransportConfig
{
PortName = "COM3",
BaudRate = 115200,
DataBits = 8,
StopBits = StopBits.One
};
using var transport = new SerialTransport(config);
await transport.ConnectAsync();
transport.MessageReceived += (sender, args) =>
{
Console.WriteLine($"Received: {args.Message}");
};
await transport.SendAsync(message);
UDP Transport
Network-based communication for wireless robots.
Copy
var config = new UdpTransportConfig
{
RemoteAddress = "192.168.1.100",
RemotePort = 5000,
LocalPort = 5001
};
using var transport = new UdpTransport(config);
await transport.ConnectAsync();
Mock Transport
Simulated transport for testing without hardware.
Copy
var transport = new MockTransport();
await transport.ConnectAsync();
// Simulate receiving messages
transport.InjectMessage(simulatedMessage);
Message Protocol
Binary protocol for high-speed telemetry (100+ Hz).
Copy
// Message structure
var message = new SystemStatusMessage
{
Timestamp = DateTime.UtcNow,
Uptime = TimeSpan.FromSeconds(elapsed),
Armed = true,
BatteryVoltage = 13.2
};
var encoded = MessageEncoder.Encode(message);
await transport.SendAsync(encoded);
// Receive and decode
var decoder = new MessageDecoder();
decoder.OnMessageDecoded += (msg) =>
{
if (msg is SystemStatusMessage status)
{
Console.WriteLine($"Battery: {status.BatteryVoltage}V");
}
};