public void BitBangSpiTest() { Console.WriteLine("Starting bit bang SPI functionality test..."); byte[] MISO; List <byte> MOSI = new List <byte>(); for (int i = 0; i < 1024; i++) { MOSI.Add((byte)(i & 0x7F)); } Console.WriteLine("Testing bit bang SPI word length..."); for (uint wordLen = 8; wordLen <= 512; wordLen += 8) { Console.WriteLine("Testing bit length of " + wordLen.ToString()); /* Override SPI pins */ FX3.BitBangSpiConfig = new BitBangSpiConfig(true); MISO = FX3.BitBangSpi(wordLen, 1, MOSI.ToArray(), 1000); Assert.AreEqual(Math.Ceiling(wordLen / 8.0), MISO.Count(), "ERROR: Invalid data count"); for (int i = 0; i < MISO.Count(); i++) { Assert.AreEqual(MOSI[i], MISO[i], "ERROR: Invalid echo data"); } /* Override DIO3/4 pins */ FX3.BitBangSpiConfig.MOSI = (FX3PinObject)FX3.DIO3; FX3.BitBangSpiConfig.MISO = (FX3PinObject)FX3.DIO4; MISO = FX3.BitBangSpi(wordLen, 1, MOSI.ToArray(), 1000); Assert.AreEqual(Math.Ceiling(wordLen / 8.0), MISO.Count(), "ERROR: Invalid data count"); for (int i = 0; i < MISO.Count(); i++) { Assert.AreEqual(MOSI[i], MISO[i], "ERROR: Invalid echo data"); } } Console.WriteLine("Testing restore hardware SPI functionality..."); FX3.RestoreHardwareSpi(); TestSpiFunctionality(); }