Support for acquisition board v3#35
Conversation
- Only check firmware version once while opening the board - Consolidate enable/disable methods into a single method that takes an array and enables/disables as needed
- Updates the BNO device indices and register locations - Adds I2C raw device indices and registers - During discovery, check if there is an I2C capable device on each port - Read the hardware ID from the EEPROM if an I2C capable device exists - Set the axis map for the BNO if one exists
- Reorder parameters to be consistent with oni_* calls - Before reading device IDs from an EEPROM, confirm that the first four bytes contain the characters "OESH" - Make readBytes() more flexible, and create readEepromBytes() specifically for EEPROM byte reads - Corrected logic for devices with a BNO but no EEPROM
- Modified Rhd2000ONIBoard::readByte to be more generalized and flexible - Expanded the EEPROM identifier to include "\x01", which is the spec version - Corrected a bug that was accessing the wrong device index when checking if a BNO is connected
- Check what version is returned, and confirm if it is I2C capable
Address initial comments on updates to firmware
- Sets the sample rate to be 100 Hz - Memory monitor is now the percent of total memory used
- Refactor how buffers are created and resized across all devices - Ensure that the editor is correctly updated if a BNO moves
- Update LOG output to include all version components
Add BNO functionality
- Add method to check the device ID when opening the board - For V3, modify how the ADC/DAC values are handled
Detect board version
- Add a `BoardType` member so that different boards can be easily identified - Shift the editor over if the board is of type `ONI`, so there is room for the memory monitor level component - Add error reporting to memory monitor read/writes
- Set isTransmitting to false during construction
Some extra fixes
Read EEPROM id in v1 and v2 of the format
Add BNO channels to stream, and update stream/channel identifiers
Separate calibration status into four distinct channels
|
@anjaldoshi I think the only thing missing from this PR is statically linking the liboni library instead of dynamically linking it. Can you provide any insight into the best way to implement this using cmake? We should implement this library change before we package the plugin and upload it. |
|
I'm testing this out now...I'm not seeing any data coming in on the memory usage stream (using OE FPGA acq board). Even if it were working, I'm not sure whether this is worth including as its own continuous data stream. What if instead the plugin sent a broadcast message every time the memory usage increased or decreased by 10%, e.g. |
|
@aacuevas can you point me to the latest firmware for pre-v3 boards? It sounds like I will need that for the memory monitor to work properly |
|
The memory monitor is in all versions, but there was a bug that made it look wrong. All boards, pre-v3 and v3 alike, can use the latest 1.5.1 firmware, we made it so it works across all boards with our FPGA, and should be the recommended fw (it does have some bugfixes). you can find it here for the time being, until that page goes live |
- For BNO devices, the wrong order of variables was used to check if a certain amount of time had passed
…upport Only enable memory monitor for firmware >= v1.5.1
jsiegle
left a comment
There was a problem hiding this comment.
Tested with OE FPGA and Opal Kelly acq boards, and everything looks good!
Adds support for new acquisition boards, that allow the use of BNO-capable headstages. Most changes are to the AcqBoardONI and related classes, with some changes on the editor when using this particular board.