run method

  1. @override
Future<void> run(
  1. 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();
    }
  });
}