Near-term improvements
This ticket is a continuation of https://gitlab.com/jlogan03/magnet/-/issues/10 after separating the more general DAQ module out to its own project.
High-level improvements
-
Command blocks & operations -
Command block graph visualization -
Command and read cycle -
Calcs -
Command aliasing -
Asynchronous memory allocation -
Conditional block transitions (requires calcs) -
Streaming mode -
Multiple control DAQs -
Integrate streaming DAQs with control DAQs -
Add parent class for interfaces
Command cycle improvements
-
Bundle read operations for speed -
Organize output by arbitrary index to allow block cycles -
Concatenate output -
Nan-pad block time channels & include in output -
Set target cycle time based on global time instead of block time in order to capture stutter across block transitions
Misc
-
Move command interpolation into Operation class; Interface should only need to know how to convert a single cycle's command to an assembled command -
Rethink channel list - it's hard for a user to know what are viable options -
Move handling of command rate to Operation class from DAQ class - if multiple rates are needed, then in general they will need to be on a separate process anyway -
Move device info and device calibrations to separate json file in outputs. config.json should be exclusively inputs that have physical effects
For implementing streaming mode again, the old repo at this commit might be handy: https://gitlab.com/jlogan03/magnet/-/blob/41a4699ffc43749523281486f7b8395124fef146/daq/daq/labjack_u3hv.py
Edited by James Logan