def test_default_gpio(self): """Check I/O. """ gpio_in, gpio_out = GpioMpsseController(), GpioMpsseController() gpio_in.configure(self.urls[0], direction=0x0000, frequency=10e6, debug=self.debug_mpsse) gpio_out.configure(self.urls[1], direction=0xFFFF, frequency=10e6, debug=self.debug_mpsse) for out in range(3, 0x10000, 29): gpio_out.write(out) outv = gpio_out.read()[0] inv = gpio_in.read()[0] # check inputs match outputs self.assertEqual(inv, out) # check level of outputs match the ones written self.assertEqual(outv, out) gpio_in.close() gpio_out.close()
def test_peek_gpio(self): """Check I/O peeking """ gpio_in, gpio_out = GpioMpsseController(), GpioMpsseController() gpio_in.configure(self.urls[0], direction=0xFF00, frequency=10e6, debug=self.debug) gpio_out.configure(self.urls[1], direction=0x00FF, frequency=10e6, debug=self.debug) for out in range(256): gpio_out.write(out) outv = gpio_out.read()[0] inv = gpio_in.read(peek=True) # check inputs match outputs self.assertEqual(inv, out) #print(f'{out} {inv}') # check level of outputs match the ones written self.assertEqual(outv, out) gpio_in.close() gpio_out.close()
def test_stream_gpio(self): """Check I/O streaming. Beware this test is CPU intensive w/ virtual framework """ gpio_in, gpio_out = GpioMpsseController(), GpioMpsseController() gpio_in.configure(self.urls[0], direction=0x0000, frequency=10e6, debug=self.debug) gpio_out.configure(self.urls[1], direction=0xFFFF, frequency=10e6, debug=self.debug) outv = list(range(0, 0x10000, 29)) max_count = min(gpio_out.ftdi.fifo_sizes[0], gpio_in.ftdi.fifo_sizes[1])//2 # 2 bytes/value outv = outv[:max_count] gpio_out.write(outv) inv = gpio_in.read(len(outv)) # for now, it is hard to test value exactness self.assertEqual(len(outv), len(inv)) gpio_in.close() gpio_out.close()