Skip to content

Fixes #423: P201 does not work in in InternalTriggerSingle with point_period below 200us

Jose Tiago Macara Coutinho requested to merge p201_high_freq into master

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

Merge request reports