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);
        }