public void TestButtonPress() { var i2C = new FtdiI2cCore(0, Logger, (byte)GpioPin.Pin8); var mpsseInit = i2C.SetupMpsse(); Assert.IsTrue(mpsseInit, "Mpsse could not init!"); var statsUpdatedEvent = new ManualResetEvent(false); var buttonCore = new GpioButtonCore(new I2CWrapper2(i2C, Logger), GpioPin.Pin8); var pressed = false; buttonCore.PressState += (sender, state) => { pressed = state == GpioPressState.Pressed; if (pressed) { statsUpdatedEvent.Set(); } }; try { buttonCore.Initialize(); statsUpdatedEvent.WaitOne(10000, false); Assert.IsTrue(pressed, "Button was not pressed!"); } finally { buttonCore.UnInitialize(); } }
public void I2CScanDevices() { var i2C = new FtdiI2cCore(0, Logger); i2C.SetupMpsse(); i2C.ScanDevicesAndQuit(); }
public void GetDevices() { var ftdi = new FtdiI2cCore(0, _logger); if (!ftdi.GetDeviceByIndex(0, out var device)) { Assert.Fail("Failed searching for devices"); } //Assert.IsTrue(listOfDevices.Count > 0, "Device List had no elements and expected one. Is it plugged in?"); }
/// <summary> /// Get the Oled ready for testing. /// </summary> /// <returns></returns> private static OledCore GetOledForTesting() { // Create the I2C Controller var i2C = new FtdiI2cCore(DeviceIndexForTesting, Logger); // Init the Mpsse i2C.SetupMpsse(); // Create the Oled Object, with the wrapper for the I2C and the logger. // Set the defaults for the testing screen used var oled = new OledCore(new I2CWrapper2(i2C, Logger), 128, 64, logger: Logger, screenDriver: DefaultTestScreenDriver); // Init the Oled (setup params, clear display, etc) var init = oled.Initialise(); Assert.IsTrue(init, "Oled Failed Init."); return(oled); }
public async Task AutoReconnect() { // Create the I2C Controller var ftdi = new FtdiI2cCore(DeviceIndexForTesting, Logger); ftdi.InitCommandRegister(() => { if (!ftdi.SetupMpsse()) { Assert.Fail("Could not Init Mpsse on FTDI chip"); return(false); } return(true); }); var oled = new OledCore(new I2CWrapper2(ftdi, Logger), 128, 64, logger: Logger, screenDriver: DefaultTestScreenDriver); oled.InitCommandRegister(() => { var r = oled.Initialise(); Assert.IsTrue(r, "Failed to init oled"); return(r); }); oled.InitCommandRegister(() => { oled.WriteString(0, 0, "My Test 1", 1.6); oled.UpdateDirtyBytes(); return(true); }); ftdi.InitAutoReconnectStart(); Assert.IsTrue(ftdi.Ready, "Failed to init ftdi"); // Delay so it can be tested. await Task.Delay(TimeSpan.FromSeconds(10)); }
public async Task TestReconnect() { var ftdi = new FtdiI2cCore(0, _logger); // First have it connected in this test. if (!ftdi.GetDeviceByIndex(0, out var device)) { Assert.Fail("Failed searching for devices"); } Assert.IsNotNull(device, "Please plugin device for this test"); var checkCount = 0; while (true) { if (!ftdi.GetDeviceByIndex(0, out device)) { Assert.Fail("Failed searching for devices"); } // Wait for it have no devices if (device == null) { break; } await Task.Delay(500); checkCount++; if (checkCount == 20) { Assert.Fail("Never detected device disconnection"); } } checkCount = 0; while (true) { if (!ftdi.GetDeviceByIndex(0, out device)) { Assert.Fail("Failed searching for devices"); } // Wait for it have no devices if (device != null) { break; } await Task.Delay(500); checkCount++; if (checkCount == 20) { Assert.Fail("Never detected device reconnection"); } } }
public I2CWrapper2(FtdiI2cCore i2cWire, ILogger logger) { _i2CWire = i2cWire; _logger = logger; }