pyobs-qhyccd 2.0.0.dev8__tar.gz → 2.0.0.dev9__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/PKG-INFO +1 -1
- pyobs_qhyccd-2.0.0.dev9/lib/usr/local/lib/libqhyccd.so.20 +0 -0
- pyobs_qhyccd-2.0.0.dev9/lib/usr/local/lib/libqhyccd.so.25.9.29.10 +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/pyobs_qhyccd/qhyccdcamera.py +177 -64
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/pyproject.toml +1 -1
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/uv.lock +1 -1
- pyobs_qhyccd-2.0.0.dev8/lib/usr/local/lib/libqhyccd.so +0 -1
- pyobs_qhyccd-2.0.0.dev8/lib/usr/local/lib/libqhyccd.so.20 +0 -1
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/.github/workflows/pypi.yml +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/.github/workflows/ruff.yml +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/.pre-commit-config.yaml +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/.readthedocs.yml +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/CMakeLists.txt +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/README.md +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/docs/Makefile +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/docs/make.bat +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/docs/requirements.txt +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/docs/source/_static/pyobs.gif +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/docs/source/conf.py +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/docs/source/index.rst +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/distclean.sh +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/etc/udev/rules.d/85-qhyccd.rules +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/install.sh +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/IC16200A.HEX +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/IC16803.HEX +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/IC8300.HEX +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/IC90A.HEX +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/IMG0H.HEX +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/IMG2P.HEX +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/IMG2S.HEX +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/IMG50.HEX +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/Origin678C.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/POLEMASTER.HEX +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY0204.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY09000A.HEX +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY10.HEX +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY10768.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY11.HEX +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY12.HEX +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY1253.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY128.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY128PRO.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY15.HEX +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY16.HEX +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY16000.HEX +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY160002AD.HEX +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY16200A.HEX +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY163.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY165.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY168.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY16803A.HEX +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY174.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY178.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY183.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY183A.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY1920.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY2.HEX +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY20.HEX +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY2020.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY21.HEX +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY22.HEX +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY224.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY23.HEX +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY247.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY268.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY27.HEX +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY28.HEX +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY29.HEX +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY290.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY294.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY294PRO.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY2E.HEX +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY2PRO.HEX +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY342.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY342PRO.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY367.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY367PRO.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY4040.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY4040PRO.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY410.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY411.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY411ERIS.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY411_1.3.3.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY42.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY42PRO.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY432.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY461.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY487.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY5.HEX +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY530.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY533.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY550.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY585.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY5II.HEX +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY5III174.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY5III178.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY5III185.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY5III200.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY5III224.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY5III290.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY5III334.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY5III415.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY5III462.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY5III482.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY5III485.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY5III568.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY5III585.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY5III678.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY5III715.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY5LOADER.HEX +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY6.HEX +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY600-9267-1203.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY600.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY600ERIS-12-qxx.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY6060.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY6060PRO.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY695A.HEX +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY7.HEX +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY8.HEX +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY811.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY814A.HEX +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY8L.HEX +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY8M.HEX +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY8PRO.HEX +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY90A.HEX +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY9701.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY990.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY991.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY992.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/QHY9S.HEX +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/miniCam5.HEX +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/firmware/qhy/miniCam8.img +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/lib/udev/rules.d/85-qhyccd.rules +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/sbin/fxload +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/uninstall.sh +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/cmake_modules/FindOpenCV.cmake +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/cmake_modules/FindUSB-1.cmake +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/cmake_modules/FindUSB-ARM.cmake +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/doc/HowTo_QHYCCD_SDK_CrossPlatform.pdf +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/fx3load/COPYING +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/fx3load/Makefile +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/fx3load/README.txt +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/fx3load/a3load.hex +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/fx3load/ezusb.c +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/fx3load/ezusb.h +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/fx3load/fxload +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/fx3load/fxload.8 +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/fx3load/fxload.spec +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/fx3load/main.c +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/include/config.h +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/include/qhyccd.h +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/include/qhyccdcamdef.h +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/include/qhyccderr.h +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/include/qhyccdstruct.h +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/lib/libqhyccd.a +0 -0
- /pyobs_qhyccd-2.0.0.dev8/lib/usr/local/lib/libqhyccd.so.25.9.29.10 → /pyobs_qhyccd-2.0.0.dev9/lib/usr/local/lib/libqhyccd.so +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/riffa_linux_driver/Makefile +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/riffa_linux_driver/README.txt +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/riffa_linux_driver/circ_queue.c +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/riffa_linux_driver/circ_queue.h +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/riffa_linux_driver/riffa_driver.c +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/riffa_linux_driver/riffa_driver.h +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/DownloadFirmware/.svn/entries +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/DownloadFirmware/.svn/format +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/DownloadFirmware/.svn/text-base/Makefile.svn-base +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/DownloadFirmware/.svn/text-base/downfirmware.cpp.svn-base +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/DownloadFirmware/Makefile +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/DownloadFirmware/downfirmware.cpp +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/LiveFrameMode/.svn/entries +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/LiveFrameMode/.svn/format +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/LiveFrameMode/.svn/text-base/LiveFrameSample.cpp.svn-base +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/LiveFrameMode/.svn/text-base/Makefile.svn-base +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/LiveFrameMode/LiveFrameSample +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/LiveFrameMode/LiveFrameSample.cpp +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/LiveFrameMode/LiveFrameSample.o +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/LiveFrameMode/Makefile +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/LiveFrameMode/qhyccd.ini +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/LiveFrameMode_PCIE_Raw_Riffa/LiveFrameSample.cpp +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/LiveFrameMode_PCIE_Raw_Riffa/Makefile +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/LiveFrameMode_PCIE_Raw_Riffa/qhyccd.ini +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/SingleFrameMode/.svn/entries +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/SingleFrameMode/.svn/format +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/SingleFrameMode/.svn/text-base/Makefile.svn-base +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/SingleFrameMode/.svn/text-base/SingleFrameMode.cpp.svn-base +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/SingleFrameMode/Makefile +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/SingleFrameMode/SingleFrameMode +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/SingleFrameMode/SingleFrameMode.cpp +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/SingleFrameMode/SingleFrameMode.o +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/SingleFrameMode/qhyccd.ini +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/cmake/FindLibQHYCCD.cmake +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_base/CMakeLists.txt +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_base/main.cpp +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_cfw/CMakeLists.txt +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_cfw/build/qhyccd.ini +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_cfw/main.cpp +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_indi_client/CMakeLists.txt +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_indi_client/cmake_modules/CMakeCommon.cmake +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_indi_client/cmake_modules/CMakeParseArguments.cmake +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_indi_client/cmake_modules/FindCFITSIO.cmake +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_indi_client/cmake_modules/FindDC1394.cmake +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_indi_client/cmake_modules/FindFFTW3.cmake +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_indi_client/cmake_modules/FindGMock.cmake +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_indi_client/cmake_modules/FindGSL.cmake +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_indi_client/cmake_modules/FindINDI.cmake +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_indi_client/cmake_modules/FindJPEG.cmake +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_indi_client/cmake_modules/FindLibXISF.cmake +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_indi_client/cmake_modules/FindLibev.cmake +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_indi_client/cmake_modules/FindNova.cmake +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_indi_client/cmake_modules/FindOggTheora.cmake +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_indi_client/cmake_modules/FindOpenAL.cmake +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_indi_client/cmake_modules/FindPackageHandleStandardArgs.cmake +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_indi_client/cmake_modules/FindPackageMessage.cmake +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_indi_client/cmake_modules/FindRTLSDR.cmake +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_indi_client/cmake_modules/FindUSB1.cmake +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_indi_client/cmake_modules/FindVorbis.cmake +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_indi_client/cmake_modules/UnityBuild.cmake +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_indi_client/main.cpp +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_indi_client/main.h +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_indi_focus/CMakeLists.txt +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_indi_focus/cmake_modules/CMakeCommon.cmake +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_indi_focus/cmake_modules/CMakeParseArguments.cmake +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_indi_focus/cmake_modules/FindCFITSIO.cmake +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_indi_focus/cmake_modules/FindDC1394.cmake +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_indi_focus/cmake_modules/FindFFTW3.cmake +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_indi_focus/cmake_modules/FindGMock.cmake +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_indi_focus/cmake_modules/FindGSL.cmake +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_indi_focus/cmake_modules/FindINDI.cmake +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_indi_focus/cmake_modules/FindJPEG.cmake +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_indi_focus/cmake_modules/FindLibXISF.cmake +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_indi_focus/cmake_modules/FindLibev.cmake +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_indi_focus/cmake_modules/FindNova.cmake +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_indi_focus/cmake_modules/FindOggTheora.cmake +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_indi_focus/cmake_modules/FindOpenAL.cmake +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_indi_focus/cmake_modules/FindPackageHandleStandardArgs.cmake +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_indi_focus/cmake_modules/FindPackageMessage.cmake +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_indi_focus/cmake_modules/FindRTLSDR.cmake +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_indi_focus/cmake_modules/FindUSB1.cmake +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_indi_focus/cmake_modules/FindVorbis.cmake +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_indi_focus/cmake_modules/UnityBuild.cmake +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_indi_focus/main.cpp +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_indi_focus/main.h +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_live_multicam_opencv/CMakeLists.txt +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_live_multicam_opencv/FindLibQHYCCD.cmake +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_live_multicam_opencv/README.md +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_live_multicam_opencv/include/CyAPI.h +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_live_multicam_opencv/include/CyUSB30_def.h +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_live_multicam_opencv/include/config.h +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_live_multicam_opencv/include/dllqhyccd.cpp +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_live_multicam_opencv/include/dllqhyccd.h +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_live_multicam_opencv/include/qhyccd.h +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_live_multicam_opencv/include/qhyccdcamdef.h +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_live_multicam_opencv/include/qhyccderr.h +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_live_multicam_opencv/include/qhyccdinternal.h +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_live_multicam_opencv/include/qhyccdstruct.h +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_live_multicam_opencv/lib/qhyccd.lib +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_live_multicam_opencv/main.cpp +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_live_opencv/CMakeLists.txt +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_live_opencv/main.cpp +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_single_opencv/CMakeLists.txt +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/cmake_demo/test_single_opencv/main.cpp +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/common/CMakeLists.txt +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/common/Capture.cpp +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/common/ControlCFW.cpp +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/common/ControlCool.cpp +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/common/ForceStop.cpp +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/common/GetCameraStatus.cpp +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/common/GetHistJPG.cpp +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/common/GetLastImageFIT.cpp +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/common/GetLastImageJPG.cpp +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/common/GetTemperature.cpp +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/common/LiveFrameSample.cpp +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/common/OSXDownloadFirmware2Camera.cpp +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/common/README +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/common/SetTemperature.cpp +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/testapp/common/SingleFrameSample.cpp +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/local/udev/85-qhyccd.rules +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/lib/usr/share/usb/a3load.hex +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/pyobs_qhyccd/__init__.py +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/pyobs_qhyccd/gui.py +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/pyobs_qhyccd/libqhyccd.pxd +0 -0
- {pyobs_qhyccd-2.0.0.dev8 → pyobs_qhyccd-2.0.0.dev9}/pyobs_qhyccd/qhyccddriver.pyx +0 -0
|
Binary file
|
|
Binary file
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import asyncio
|
|
2
2
|
import logging
|
|
3
3
|
import math
|
|
4
|
+
import threading
|
|
4
5
|
import time
|
|
6
|
+
from collections.abc import Callable
|
|
5
7
|
from datetime import UTC, datetime
|
|
6
|
-
from typing import Any
|
|
8
|
+
from typing import Any, TypeVar, cast
|
|
7
9
|
|
|
8
10
|
import numpy as np
|
|
9
11
|
from pyobs.images import Image
|
|
@@ -31,6 +33,13 @@ from .qhyccddriver import Control, QHYCCDDriver, set_log_level # type: ignore
|
|
|
31
33
|
|
|
32
34
|
log = logging.getLogger(__name__)
|
|
33
35
|
|
|
36
|
+
_T = TypeVar("_T")
|
|
37
|
+
|
|
38
|
+
# QHYCCD SDK calls are blocking and are made directly on the event loop thread (see
|
|
39
|
+
# _run_blocking). If the camera has gone unresponsive, they can hang indefinitely, so they're
|
|
40
|
+
# bounded with a timeout rather than let a single dead camera freeze the whole module.
|
|
41
|
+
_SDK_CALL_TIMEOUT = 5.0
|
|
42
|
+
|
|
34
43
|
|
|
35
44
|
class QHYCCDCamera(BaseCamera, ICamera, IWindow, IBinning, IAbortable, ICooling, IGain):
|
|
36
45
|
"""A pyobs module for QHYCCD cameras."""
|
|
@@ -61,41 +70,93 @@ class QHYCCDCamera(BaseCamera, ICamera, IWindow, IBinning, IAbortable, ICooling,
|
|
|
61
70
|
|
|
62
71
|
self.add_background_task(self._update_cooling)
|
|
63
72
|
|
|
73
|
+
@staticmethod
|
|
74
|
+
async def _run_blocking(func: Callable[[], None], timeout: float = _SDK_CALL_TIMEOUT) -> bool:
|
|
75
|
+
"""Run a blocking QHYCCD SDK call in a daemon thread, so a hung call can't freeze the module.
|
|
76
|
+
|
|
77
|
+
A plain executor isn't used here, since its worker threads are non-daemon and Python joins
|
|
78
|
+
them on interpreter shutdown -- a hung call would then just move the freeze to process exit.
|
|
79
|
+
|
|
80
|
+
Returns:
|
|
81
|
+
True if func completed within timeout, False if it's still running in the background.
|
|
82
|
+
"""
|
|
83
|
+
loop = asyncio.get_running_loop()
|
|
84
|
+
future: asyncio.Future[None] = loop.create_future()
|
|
85
|
+
|
|
86
|
+
def _wrapper() -> None:
|
|
87
|
+
try:
|
|
88
|
+
func()
|
|
89
|
+
finally:
|
|
90
|
+
loop.call_soon_threadsafe(future.set_result, None)
|
|
91
|
+
|
|
92
|
+
threading.Thread(target=_wrapper, daemon=True).start()
|
|
93
|
+
try:
|
|
94
|
+
await asyncio.wait_for(future, timeout=timeout)
|
|
95
|
+
return True
|
|
96
|
+
except TimeoutError:
|
|
97
|
+
return False
|
|
98
|
+
|
|
99
|
+
async def _run_blocking_or_raise(self, func: Callable[[], _T], timeout: float = _SDK_CALL_TIMEOUT) -> _T:
|
|
100
|
+
"""Run a blocking QHYCCD SDK call in a thread, returning its result or re-raising what it raised.
|
|
101
|
+
|
|
102
|
+
Unlike _run_blocking(), this also carries the callable's return value/exception back to the
|
|
103
|
+
caller -- several QHYCCD calls here drive control flow via their return value or a raised
|
|
104
|
+
ValueError (e.g. unsupported color cams), which a bare fire-and-forget thread call would
|
|
105
|
+
otherwise silently lose.
|
|
106
|
+
"""
|
|
107
|
+
outcome: list[Any] = []
|
|
108
|
+
|
|
109
|
+
def _wrapper() -> None:
|
|
110
|
+
try:
|
|
111
|
+
outcome.append(func())
|
|
112
|
+
except BaseException as e:
|
|
113
|
+
outcome.append(e)
|
|
114
|
+
|
|
115
|
+
if not await self._run_blocking(_wrapper, timeout=timeout):
|
|
116
|
+
raise TimeoutError(f"Timed out waiting for QHYCCD SDK call after {timeout}s.")
|
|
117
|
+
value = outcome[0]
|
|
118
|
+
if isinstance(value, BaseException):
|
|
119
|
+
raise value
|
|
120
|
+
return cast(_T, value)
|
|
121
|
+
|
|
64
122
|
async def open(self) -> None:
|
|
65
123
|
"""Open module."""
|
|
66
124
|
await BaseCamera.open(self)
|
|
67
125
|
|
|
68
|
-
|
|
126
|
+
def _connect() -> tuple[int, int]:
|
|
127
|
+
set_log_level(0)
|
|
128
|
+
|
|
129
|
+
devices = QHYCCDDriver.list_devices()
|
|
130
|
+
self._driver = QHYCCDDriver(devices[0])
|
|
131
|
+
self._driver.open()
|
|
69
132
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
self._driver.open()
|
|
133
|
+
if self._driver.is_control_available(Control.CAM_COLOR):
|
|
134
|
+
raise ValueError("Color cams are not supported.")
|
|
73
135
|
|
|
74
|
-
|
|
75
|
-
|
|
136
|
+
if self._driver.is_control_available(Control.CONTROL_USBTRAFFIC):
|
|
137
|
+
self._driver.set_param(Control.CONTROL_USBTRAFFIC, 60)
|
|
76
138
|
|
|
77
|
-
|
|
78
|
-
|
|
139
|
+
if self._driver.is_control_available(Control.CONTROL_GAIN):
|
|
140
|
+
self._driver.set_param(Control.CONTROL_GAIN, 10)
|
|
79
141
|
|
|
80
|
-
|
|
81
|
-
|
|
142
|
+
if self._driver.is_control_available(Control.CONTROL_OFFSET):
|
|
143
|
+
self._driver.set_param(Control.CONTROL_OFFSET, 140)
|
|
82
144
|
|
|
83
|
-
|
|
84
|
-
|
|
145
|
+
if self._driver.is_control_available(Control.CONTROL_TRANSFERBIT):
|
|
146
|
+
self._driver.set_bits_mode(16)
|
|
85
147
|
|
|
86
|
-
|
|
87
|
-
|
|
148
|
+
chip = self._driver.get_chip_info()
|
|
149
|
+
log.info("Chip size: %.3fx%.3f [mm]", chip[0], chip[1])
|
|
150
|
+
log.info("Pixel size: %.3fx %.3f [um]", chip[4], chip[5])
|
|
151
|
+
log.info("Image size: %dx%d", chip[2], chip[3])
|
|
152
|
+
overscan = self._driver.get_overscan_area()
|
|
153
|
+
log.info("Overscan Area: %dx%d from %d,%d", overscan[2], overscan[3], overscan[0], overscan[1])
|
|
154
|
+
effective = self._driver.get_effective_area()
|
|
155
|
+
log.info("Effective Area: %dx%d from %d,%d", effective[2], effective[3], effective[0], effective[1])
|
|
88
156
|
|
|
89
|
-
|
|
90
|
-
log.info("Chip size: %.3fx%.3f [mm]", chip[0], chip[1])
|
|
91
|
-
log.info("Pixel size: %.3fx %.3f [um]", chip[4], chip[5])
|
|
92
|
-
log.info("Image size: %dx%d", chip[2], chip[3])
|
|
93
|
-
overscan = self._driver.get_overscan_area()
|
|
94
|
-
log.info("Overscan Area: %dx%d from %d,%d", overscan[2], overscan[3], overscan[0], overscan[1])
|
|
95
|
-
effective = self._driver.get_effective_area()
|
|
96
|
-
log.info("Effective Area: %dx%d from %d,%d", effective[2], effective[3], effective[0], effective[1])
|
|
157
|
+
return chip[2], chip[3]
|
|
97
158
|
|
|
98
|
-
full_width, full_height =
|
|
159
|
+
full_width, full_height = await self._run_blocking_or_raise(_connect)
|
|
99
160
|
self._window = (0, 0, full_width, full_height)
|
|
100
161
|
|
|
101
162
|
# publish static capabilities
|
|
@@ -105,46 +166,64 @@ class QHYCCDCamera(BaseCamera, ICamera, IWindow, IBinning, IAbortable, ICooling,
|
|
|
105
166
|
full_frame_x=0, full_frame_y=0, full_frame_width=full_width, full_frame_height=full_height
|
|
106
167
|
),
|
|
107
168
|
)
|
|
108
|
-
await self.comm.set_capabilities(IBinning, BinningCapabilities(binnings=self._available_binnings()))
|
|
169
|
+
await self.comm.set_capabilities(IBinning, BinningCapabilities(binnings=await self._available_binnings()))
|
|
109
170
|
|
|
110
171
|
# publish initial states
|
|
111
172
|
await self.comm.set_state(IWindow, WindowState(x=0, y=0, width=full_width, height=full_height))
|
|
112
173
|
await self.comm.set_state(IBinning, BinningState(x=self._binning[0], y=self._binning[1]))
|
|
113
|
-
|
|
114
|
-
|
|
174
|
+
|
|
175
|
+
def _get_gain_offset() -> tuple[float, float]:
|
|
176
|
+
assert self._driver is not None
|
|
177
|
+
return float(self._driver.get_param(Control.CONTROL_GAIN)), float(
|
|
178
|
+
self._driver.get_param(Control.CONTROL_OFFSET)
|
|
179
|
+
)
|
|
180
|
+
|
|
181
|
+
gain, offset = await self._run_blocking_or_raise(_get_gain_offset)
|
|
115
182
|
await self.comm.set_state(IGain, GainState(gain=gain, offset=offset))
|
|
116
183
|
|
|
117
184
|
if self._setpoint is not None:
|
|
118
185
|
await self.set_cooling(True, self._setpoint)
|
|
119
186
|
|
|
120
187
|
if self._params is not None:
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
188
|
+
params = self._params
|
|
189
|
+
|
|
190
|
+
def _set_custom_params() -> None:
|
|
191
|
+
assert self._driver is not None
|
|
192
|
+
for key, value in params.items():
|
|
193
|
+
p = "CONTROL_" + key.upper()
|
|
194
|
+
if hasattr(Control, p):
|
|
195
|
+
control_param = getattr(Control, p)
|
|
196
|
+
log.info("Setting %s to %s.", control_param, value)
|
|
197
|
+
self._driver.set_param(control_param, value)
|
|
198
|
+
|
|
199
|
+
await self._run_blocking_or_raise(_set_custom_params)
|
|
200
|
+
|
|
201
|
+
async def _available_binnings(self) -> list[BinningState]:
|
|
129
202
|
if self._driver is None:
|
|
130
203
|
return []
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
204
|
+
driver = self._driver
|
|
205
|
+
|
|
206
|
+
def _get() -> list[BinningState]:
|
|
207
|
+
binnings = []
|
|
208
|
+
if driver.is_control_available(Control.CAM_BIN1X1MODE):
|
|
209
|
+
binnings.append(BinningState(x=1, y=1))
|
|
210
|
+
if driver.is_control_available(Control.CAM_BIN2X2MODE):
|
|
211
|
+
binnings.append(BinningState(x=2, y=2))
|
|
212
|
+
if driver.is_control_available(Control.CAM_BIN3X3MODE):
|
|
213
|
+
binnings.append(BinningState(x=3, y=3))
|
|
214
|
+
if driver.is_control_available(Control.CAM_BIN4X4MODE):
|
|
215
|
+
binnings.append(BinningState(x=4, y=4))
|
|
216
|
+
return binnings
|
|
217
|
+
|
|
218
|
+
return await self._run_blocking_or_raise(_get)
|
|
141
219
|
|
|
142
220
|
async def close(self) -> None:
|
|
143
221
|
"""Close the module."""
|
|
144
222
|
await BaseCamera.close(self)
|
|
145
223
|
|
|
146
224
|
if self._driver:
|
|
147
|
-
self._driver.close
|
|
225
|
+
if not await self._run_blocking(self._driver.close):
|
|
226
|
+
log.error("Timed out closing QHYCCD camera after %.1fs.", _SDK_CALL_TIMEOUT)
|
|
148
227
|
|
|
149
228
|
async def set_window(self, left: int, top: int, width: int, height: int, **kwargs: Any) -> None:
|
|
150
229
|
"""Set the camera window.
|
|
@@ -173,8 +252,9 @@ class QHYCCDCamera(BaseCamera, ICamera, IWindow, IBinning, IAbortable, ICooling,
|
|
|
173
252
|
async def _prepare_driver_for_exposure(self, exposure_time: float) -> None:
|
|
174
253
|
if self._driver is None:
|
|
175
254
|
raise ValueError("No camera driver.")
|
|
255
|
+
driver = self._driver
|
|
256
|
+
|
|
176
257
|
log.info("Set binning to %dx%d.", self._binning[0], self._binning[1])
|
|
177
|
-
self._driver.set_bin_mode(*self._binning)
|
|
178
258
|
|
|
179
259
|
width = int(math.floor(self._window[2]) / self._binning[0])
|
|
180
260
|
height = int(math.floor(self._window[3]) / self._binning[1])
|
|
@@ -187,10 +267,14 @@ class QHYCCDCamera(BaseCamera, ICamera, IWindow, IBinning, IAbortable, ICooling,
|
|
|
187
267
|
self._window[0],
|
|
188
268
|
self._window[1],
|
|
189
269
|
)
|
|
190
|
-
self._driver.set_resolution(self._window[0], self._window[1], width, height)
|
|
191
|
-
self._driver.set_param(Control.CONTROL_EXPOSURE, int(exposure_time * 1000.0 * 1000.0))
|
|
192
270
|
|
|
193
|
-
|
|
271
|
+
def _prepare() -> tuple[int, int, int, int]:
|
|
272
|
+
driver.set_bin_mode(*self._binning)
|
|
273
|
+
driver.set_resolution(self._window[0], self._window[1], width, height)
|
|
274
|
+
driver.set_param(Control.CONTROL_EXPOSURE, int(exposure_time * 1000.0 * 1000.0))
|
|
275
|
+
return driver.get_effective_area()
|
|
276
|
+
|
|
277
|
+
eff = await self._run_blocking_or_raise(_prepare)
|
|
194
278
|
self._effective_area = (eff[0], eff[1], eff[2] * self._binning[0], eff[3] * self._binning[1])
|
|
195
279
|
|
|
196
280
|
async def _get_image_with_header(self, image_data: Any, date_obs: str, exposure_time: float) -> Image:
|
|
@@ -228,16 +312,17 @@ class QHYCCDCamera(BaseCamera, ICamera, IWindow, IBinning, IAbortable, ICooling,
|
|
|
228
312
|
"""
|
|
229
313
|
if self._driver is None:
|
|
230
314
|
raise ValueError("No camera driver.")
|
|
315
|
+
driver = self._driver
|
|
231
316
|
|
|
232
317
|
await self._prepare_driver_for_exposure(exposure_time)
|
|
233
318
|
log.info(
|
|
234
319
|
"Starting exposure with %s shutter for %.2f seconds...", "open" if open_shutter else "closed", exposure_time
|
|
235
320
|
)
|
|
236
321
|
date_obs = datetime.now(UTC).strftime("%Y-%m-%dT%H:%M:%S.%f")
|
|
237
|
-
self.
|
|
322
|
+
await self._run_blocking_or_raise(driver.expose_single_frame)
|
|
238
323
|
await self._wait_exposure(abort_event, exposure_time, open_shutter)
|
|
239
324
|
loop = asyncio.get_running_loop()
|
|
240
|
-
image_data = await loop.run_in_executor(None,
|
|
325
|
+
image_data = await loop.run_in_executor(None, driver.get_single_frame)
|
|
241
326
|
return await self._get_image_with_header(image_data, date_obs, exposure_time)
|
|
242
327
|
|
|
243
328
|
async def _wait_exposure(self, abort_event: asyncio.Event, exposure_time: float, open_shutter: bool) -> None:
|
|
@@ -253,7 +338,12 @@ class QHYCCDCamera(BaseCamera, ICamera, IWindow, IBinning, IAbortable, ICooling,
|
|
|
253
338
|
async def _get_cooling_power(self) -> float:
|
|
254
339
|
if self._driver is None:
|
|
255
340
|
raise ValueError("No camera driver.")
|
|
256
|
-
|
|
341
|
+
driver = self._driver
|
|
342
|
+
|
|
343
|
+
def _get() -> float:
|
|
344
|
+
return float(driver.get_param(Control.CONTROL_CURPWM)) / 255 * 100 # TODO:
|
|
345
|
+
|
|
346
|
+
return await self._run_blocking_or_raise(_get)
|
|
257
347
|
|
|
258
348
|
async def set_cooling(self, enabled: bool, setpoint: float, **kwargs: Any) -> None:
|
|
259
349
|
if enabled:
|
|
@@ -270,33 +360,46 @@ class QHYCCDCamera(BaseCamera, ICamera, IWindow, IBinning, IAbortable, ICooling,
|
|
|
270
360
|
await asyncio.sleep(5)
|
|
271
361
|
if self._driver is None:
|
|
272
362
|
raise ValueError("No camera driver.")
|
|
363
|
+
driver = self._driver
|
|
273
364
|
|
|
274
365
|
start_time = 0.0
|
|
275
366
|
while True:
|
|
276
367
|
try:
|
|
277
368
|
await asyncio.sleep(1.0)
|
|
278
369
|
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
370
|
+
cooling_next = self._cooling_next
|
|
371
|
+
|
|
372
|
+
def _poll() -> tuple[float, float, bool, bool]:
|
|
373
|
+
if cooling_next is not None:
|
|
374
|
+
driver.set_temperature(cooling_next)
|
|
375
|
+
current_temp = float(driver.get_param(Control.CONTROL_CURTEMP))
|
|
376
|
+
power_raw = float(driver.get_param(Control.CONTROL_CURPWM))
|
|
377
|
+
cooler_available = driver.is_control_available(Control.CONTROL_COOLER)
|
|
378
|
+
# bug: QHY PWM wraps above 250 -- checked with a fresh read, same as the
|
|
379
|
+
# separate driver.get_param() call the original code made for this check
|
|
380
|
+
pwm_over_250 = float(driver.get_param(Control.CONTROL_CURPWM)) > 250
|
|
381
|
+
return current_temp, power_raw, cooler_available, pwm_over_250
|
|
382
|
+
|
|
383
|
+
self._current_temperature, power_raw, cooler_available, pwm_over_250 = (
|
|
384
|
+
await self._run_blocking_or_raise(_poll)
|
|
385
|
+
)
|
|
282
386
|
|
|
283
387
|
# publish live temperatures and cooling state
|
|
284
388
|
await self.comm.set_state(
|
|
285
389
|
ITemperatures,
|
|
286
390
|
TemperaturesState(readings=[SensorReading(name="CCD", value=self._current_temperature)]),
|
|
287
391
|
)
|
|
288
|
-
power = round(
|
|
392
|
+
power = round(power_raw / 255 * 100)
|
|
289
393
|
await self.comm.set_state(
|
|
290
394
|
ICooling,
|
|
291
395
|
CoolingState(
|
|
292
396
|
setpoint=self._setpoint,
|
|
293
397
|
power=power,
|
|
294
|
-
enabled=
|
|
398
|
+
enabled=cooler_available,
|
|
295
399
|
),
|
|
296
400
|
)
|
|
297
401
|
|
|
298
|
-
|
|
299
|
-
if self._driver.get_param(Control.CONTROL_CURPWM) > 250:
|
|
402
|
+
if pwm_over_250:
|
|
300
403
|
self._cooling_next = self._current_temperature + 5.0
|
|
301
404
|
log.warning(
|
|
302
405
|
"Cooling power seems to be bugged. Setting temperature to %.2f°. "
|
|
@@ -341,8 +444,13 @@ class QHYCCDCamera(BaseCamera, ICamera, IWindow, IBinning, IAbortable, ICooling,
|
|
|
341
444
|
"""
|
|
342
445
|
if self._driver is None:
|
|
343
446
|
raise ValueError("No camera driver.")
|
|
344
|
-
self._driver
|
|
345
|
-
|
|
447
|
+
driver = self._driver
|
|
448
|
+
|
|
449
|
+
def _set() -> float:
|
|
450
|
+
driver.set_param(Control.CONTROL_GAIN, gain)
|
|
451
|
+
return float(driver.get_param(Control.CONTROL_OFFSET))
|
|
452
|
+
|
|
453
|
+
offset = await self._run_blocking_or_raise(_set)
|
|
346
454
|
await self.comm.set_state(IGain, GainState(gain=gain, offset=offset))
|
|
347
455
|
|
|
348
456
|
async def set_offset(self, offset: float, **kwargs: Any) -> None:
|
|
@@ -353,8 +461,13 @@ class QHYCCDCamera(BaseCamera, ICamera, IWindow, IBinning, IAbortable, ICooling,
|
|
|
353
461
|
"""
|
|
354
462
|
if self._driver is None:
|
|
355
463
|
raise ValueError("No camera driver.")
|
|
356
|
-
self._driver
|
|
357
|
-
|
|
464
|
+
driver = self._driver
|
|
465
|
+
|
|
466
|
+
def _set() -> float:
|
|
467
|
+
driver.set_param(Control.CONTROL_OFFSET, offset)
|
|
468
|
+
return float(driver.get_param(Control.CONTROL_GAIN))
|
|
469
|
+
|
|
470
|
+
gain = await self._run_blocking_or_raise(_set)
|
|
358
471
|
await self.comm.set_state(IGain, GainState(gain=gain, offset=offset))
|
|
359
472
|
|
|
360
473
|
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
libqhyccd.so.20
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
libqhyccd.so.25.9.29.10
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|