Fixes #423: P201 does not work in in InternalTriggerSingle with point_period below 200us
Above 5 khz we were loosing IRQ which meant we lost some points. So now:
- we continuously read fifo and call select only when empty
- we also handle overrun error
- diagnostics: print acquisition error summary
- make unitests work on any PC with a P201 card installed
Thanks to @alejandro.homs for the help.
I ran the unittests and here is the result just to ease the mind of the reviewer of this PR (the SKIPPED tests are on purpose. It is just that by software it would take too long to run):
lid00c:~/workspace/bliss % pytest tests/controllers_hw/test_ct2_acq.py --ct2=/dev/ct2_0 --cov bliss.controllers.ct2 --cov-report html --cov-report term
================================================ test session starts ================================================
platform linux2 -- Python 2.7.14, pytest-3.2.1, py-1.4.34, pluggy-0.4.0 -- /users/coutinho/miniconda2/envs/bliss/bin/python
cachedir: .cache
rootdir: /users/coutinho/workspace/bliss, inifile: setup.cfg
plugins: mock-1.6.3, cov-2.5.1
collected 35 items
tests/controllers_hw/test_ct2_acq.py::test_internal_trigger_single_wrong_config[1 point] PASSED
tests/controllers_hw/test_ct2_acq.py::test_internal_trigger_single_wrong_config[30 points] PASSED
tests/controllers_hw/test_ct2_acq.py::test_internal_trigger_single_wrong_config[853 points] PASSED
tests/controllers_hw/test_ct2_acq.py::test_internal_trigger_single_wrong_config[9_293 points] PASSED
tests/controllers_hw/test_ct2_acq.py::test_internal_trigger_single_wrong_config[563_859 points] PASSED
tests/controllers_hw/test_ct2_acq.py::test_internal_trigger_single[1 point] PASSED
tests/controllers_hw/test_ct2_acq.py::test_internal_trigger_single[30 points] PASSED
tests/controllers_hw/test_ct2_acq.py::test_internal_trigger_single[853 points] PASSED
tests/controllers_hw/test_ct2_acq.py::test_internal_trigger_single[9_293 points] PASSED
tests/controllers_hw/test_ct2_acq.py::test_internal_trigger_single[563_859 points] PASSED
tests/controllers_hw/test_ct2_acq.py::test_internal_trigger_single_stop_acq[1 point] PASSED
tests/controllers_hw/test_ct2_acq.py::test_internal_trigger_single_stop_acq[30 points] PASSED
tests/controllers_hw/test_ct2_acq.py::test_internal_trigger_single_stop_acq[853 points] PASSED
tests/controllers_hw/test_ct2_acq.py::test_internal_trigger_single_stop_acq[9_293 points] PASSED
tests/controllers_hw/test_ct2_acq.py::test_internal_trigger_single_stop_acq[563_859 points] PASSED
tests/controllers_hw/test_ct2_acq.py::test_internal_trigger_multi_wrong_config[1 point] PASSED
tests/controllers_hw/test_ct2_acq.py::test_internal_trigger_multi_wrong_config[30 points] PASSED
tests/controllers_hw/test_ct2_acq.py::test_internal_trigger_multi_wrong_config[853 points] PASSED
tests/controllers_hw/test_ct2_acq.py::test_internal_trigger_multi_wrong_config[9_293 points] PASSED
tests/controllers_hw/test_ct2_acq.py::test_internal_trigger_multi_wrong_config[563_859 points] PASSED
tests/controllers_hw/test_ct2_acq.py::test_internal_trigger_multi[1 point] PASSED
tests/controllers_hw/test_ct2_acq.py::test_internal_trigger_multi[30 points] PASSED
tests/controllers_hw/test_ct2_acq.py::test_internal_trigger_multi[853 points] PASSED
tests/controllers_hw/test_ct2_acq.py::test_internal_trigger_multi[9_293 points] SKIPPED
tests/controllers_hw/test_ct2_acq.py::test_internal_trigger_multi[563_859 points] SKIPPED
tests/controllers_hw/test_ct2_acq.py::test_software_trigger_readout_wrong_config[1 point] PASSED
tests/controllers_hw/test_ct2_acq.py::test_software_trigger_readout_wrong_config[30 points] PASSED
tests/controllers_hw/test_ct2_acq.py::test_software_trigger_readout_wrong_config[853 points] PASSED
tests/controllers_hw/test_ct2_acq.py::test_software_trigger_readout_wrong_config[9_293 points] PASSED
tests/controllers_hw/test_ct2_acq.py::test_software_trigger_readout_wrong_config[563_859 points] PASSED
tests/controllers_hw/test_ct2_acq.py::test_software_trigger_readout[1 point] PASSED
tests/controllers_hw/test_ct2_acq.py::test_software_trigger_readout[30 points] PASSED
tests/controllers_hw/test_ct2_acq.py::test_software_trigger_readout[853 points] PASSED
tests/controllers_hw/test_ct2_acq.py::test_software_trigger_readout[9_293 points] SKIPPED
tests/controllers_hw/test_ct2_acq.py::test_software_trigger_readout[563_859 points] SKIPPED
---------- coverage: platform linux2, python 2.7.14-final-0 ----------
Name Stmts Miss Cover
-------------------------------------------------------
bliss/controllers/ct2/__init__.py 11 9 18%
bliss/controllers/ct2/__main__.py 198 198 0%
bliss/controllers/ct2/card.py 1651 1017 38%
bliss/controllers/ct2/client.py 91 60 34%
bliss/controllers/ct2/device.py 560 457 18%
bliss/controllers/ct2/server.py 49 49 0%
-------------------------------------------------------
TOTAL 2560 1790 30%
Coverage HTML written to dir htmlcov