예제 #1
0
        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();
            }
        }
예제 #2
0
        public void I2CScanDevices()
        {
            var i2C = new FtdiI2cCore(0, Logger);

            i2C.SetupMpsse();

            i2C.ScanDevicesAndQuit();
        }
예제 #3
0
        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?");
        }
예제 #4
0
        /// <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);
        }
예제 #5
0
        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));
        }
예제 #6
0
        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");
                }
            }
        }
예제 #7
0
 public I2CWrapper2(FtdiI2cCore i2cWire, ILogger logger)
 {
     _i2CWire = i2cWire;
     _logger  = logger;
 }