send method
Transmit a frame. Completes when the frame is handed off to the bus.
Implementation
@override
Future<void> send(CanFrame frame) async {
if (!isOpen) throw StateError('SocketCanTransport not open');
final bytes = frame.fd ? frame.encodeFd() : frame.encode();
final size = bytes.length;
final buf = malloc<Uint8>(size);
try {
for (var i = 0; i < size; i++) {
buf[i] = bytes[i];
}
final n = _bindings.write(_fd, buf, size);
if (n != size) {
throw StateError(
'write(${frame.fd ? "canfd_frame" : "can_frame"}) returned $n '
'(expected $size)',
);
}
} finally {
malloc.free(buf);
}
}