public static async Task Aggregator( FPGA.InputSignal <bool> RXD, FPGA.OutputSignal <bool> TXD ) { Controllers.eShiftCommand cmd = 0; Action readHandler = () => { byte data = 0; Drivers.UART.Read(RXD, out data); cmd = (Controllers.eShiftCommand)data; }; bool trigger = true; FPGA.Config.OnSignal(trigger, readHandler); byte write = 0; FPGA.Signal <bool> dataWritten = false; Action writeHandler = () => { Drivers.UART.Write(write, TXD); dataWritten = true; }; FPGA.Config.OnRegisterWritten(write, writeHandler); Action cmdHandler = () => { byte result = 0; Controllers.Math_Shifter.ValueForCommand(cmd, out result); write = result; FPGA.Runtime.WaitForAllConditions(dataWritten); }; FPGA.Config.OnRegisterWritten(cmd, cmdHandler); }
public static async Task Aggregator( FPGA.InputSignal <bool> RXD, FPGA.OutputSignal <bool> TXD ) { Controllers.eShiftCommand cmd = 0; Sequential readHandler = () => { byte data = 0; UART.Read(115200, RXD, out data); cmd = (eShiftCommand)data; }; const bool trigger = true; FPGA.Config.OnSignal(trigger, readHandler); byte write = 0; FPGA.Signal <bool> dataWritten = false; Sequential writeHandler = () => { UART.Write(115200, write, TXD); dataWritten = true; }; FPGA.Config.OnRegisterWritten(write, writeHandler); Sequential cmdHandler = () => { byte result = 0; ValueForCommand(cmd, out result); write = result; FPGA.Runtime.WaitForAllConditions(dataWritten); }; FPGA.Config.OnRegisterWritten(cmd, cmdHandler); }