run method
- Phase phase
override
Run function.
Implementation
@override
Future<void> run(Phase phase) async {
unawaited(super.run(phase));
final dataListRead = <LogicValue>[];
final dataListWrite = <LogicValue>[];
intf.sclk.posedge.listen((event) {
if (direction == null || direction == SpiDirection.main) {
dataListWrite.add(intf.mosi.previousValue!);
}
if (direction == null || direction == SpiDirection.sub) {
dataListRead.add(intf.miso.previousValue!);
}
if (dataListWrite.length == intf.dataLength) {
add(SpiPacket(
data: dataListWrite.swizzle(), direction: SpiDirection.main));
dataListWrite.clear();
}
if (dataListRead.length == intf.dataLength) {
add(SpiPacket(
data: dataListRead.swizzle(), direction: SpiDirection.sub));
dataListRead.clear();
}
});
}