public void SendPacket(int bank, CommandPacket commandPacket)
        {
            IOutputPort dataPort;
            switch (bank)
            {
                case 0:
                    dataPort = _portLayout.BankOneDataPort;
                    break;
                case 1:
                    dataPort = _portLayout.BankTwoDataPort;
                    break;
                default:
                    throw new Exception("invalid bank");
            }

            ulong command = commandPacket.GetCommand();

            ShiftOut(dataPort, _portLayout.ClockPort, BitOrder.MSBFirst, ((byte)(command >> 24)));
            ShiftOut(dataPort, _portLayout.ClockPort, BitOrder.MSBFirst, ((byte)(command >> 16)));
            ShiftOut(dataPort, _portLayout.ClockPort, BitOrder.MSBFirst, ((byte)(command >> 8)));
            ShiftOut(dataPort, _portLayout.ClockPort, BitOrder.MSBFirst, ((byte)command));

            _logger.Log("Shifted command packet:");
            _logger.Log(command.ToString()); //maybe?
        }
        public void RedValuePlacedCorrectly()
        {
            var packet = new CommandPacket {RedCommand = 1023};

            var command = packet.GetCommand();

            Assert.AreEqual("11111111110000000000", Convert.ToString(command, 2));
        }