open-ephys / liboni

API for controlling ONI-compliant hardware
https://open-ephys.github.io/onix-docs/API%20Reference/index.html
0 stars 5 forks source link

Update onidriver for ftd3xx driver version 1.0.0.2 #21

Open aacuevas opened 8 months ago

aacuevas commented 8 months ago

This PR is not expected to be directly merged at this point, but is a base from where to work.

The Linux/mac code for the ft600 onidriver was originally developed for version 0.5 of the ftdi driver, which had a completely different way of working than on Windows. A year ago, FTDI released the 1.x variant of their driver, which made the API closer to what it is on Windows. Unfortunately, by the time I wrote this, driver 1.0.0.2 had numerous bugs which I had to work with FTDI to resolve, which they were by 1.0.5.

We would need to take this code up to date, probably update it for 1.0.14 which is the latest D3xx FTDI driver. Related to #13 it would be nice it it could work on OSX as well.

The new API also supports notification callbacks on Linux/OSX, so it could be interesting to use them like in windows, instead of the different mechanism used now. However, from my last talk with FTDI people, the notification callback on Linux does not behave exactly like on windows and must act more like a IRQ, with very few and fast code being executed.