Start developing ...
This commit is contained in:
commit
35e7999c3f
74
.gitignore
vendored
Normal file
74
.gitignore
vendored
Normal file
@ -0,0 +1,74 @@
|
||||
# This file is used to ignore files which are generated
|
||||
# ----------------------------------------------------------------------------
|
||||
|
||||
*~
|
||||
*.autosave
|
||||
*.a
|
||||
*.core
|
||||
*.moc
|
||||
*.o
|
||||
*.obj
|
||||
*.orig
|
||||
*.rej
|
||||
*.so
|
||||
*.so.*
|
||||
*_pch.h.cpp
|
||||
*_resource.rc
|
||||
*.qm
|
||||
.#*
|
||||
*.*#
|
||||
core
|
||||
!core/
|
||||
tags
|
||||
.DS_Store
|
||||
.directory
|
||||
*.debug
|
||||
Makefile*
|
||||
*.prl
|
||||
*.app
|
||||
moc_*.cpp
|
||||
ui_*.h
|
||||
qrc_*.cpp
|
||||
Thumbs.db
|
||||
*.res
|
||||
*.rc
|
||||
/.qmake.cache
|
||||
/.qmake.stash
|
||||
|
||||
# qtcreator generated files
|
||||
*.pro.user*
|
||||
CMakeLists.txt.user*
|
||||
|
||||
# xemacs temporary files
|
||||
*.flc
|
||||
|
||||
# Vim temporary files
|
||||
.*.swp
|
||||
|
||||
# Visual Studio generated files
|
||||
*.ib_pdb_index
|
||||
*.idb
|
||||
*.ilk
|
||||
*.pdb
|
||||
*.sln
|
||||
*.suo
|
||||
*.vcproj
|
||||
*vcproj.*.*.user
|
||||
*.ncb
|
||||
*.sdf
|
||||
*.opensdf
|
||||
*.vcxproj
|
||||
*vcxproj.*
|
||||
|
||||
# MinGW generated files
|
||||
*.Debug
|
||||
*.Release
|
||||
|
||||
# Python byte code
|
||||
*.pyc
|
||||
|
||||
# Binaries
|
||||
# --------
|
||||
*.dll
|
||||
*.exe
|
||||
|
||||
34
CMakeLists.txt
Normal file
34
CMakeLists.txt
Normal file
@ -0,0 +1,34 @@
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
|
||||
project(RaptorEagleV LANGUAGES CXX)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 20)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}")
|
||||
|
||||
find_package(spdlog REQUIRED)
|
||||
|
||||
find_package(CFITSIO REQUIRED)
|
||||
find_package(XCLIB REQUIRED)
|
||||
|
||||
set(RAPTOR_EAGLEV_LIB raptor_eaglev)
|
||||
add_library(${RAPTOR_EAGLEV_LIB} SHARED
|
||||
raptor_eagle_ccd.h raptor_eagle_ccd.cpp
|
||||
raptor_eagle_cameralink.h
|
||||
raptor_eagle_exception.h)
|
||||
|
||||
# to activate spdlog-library support in ADC-library
|
||||
target_compile_definitions(${RAPTOR_EAGLEV_LIB} PRIVATE USE_SPDLOG_LIBRARY)
|
||||
# !!!!! TEMPORARY !!!!!
|
||||
target_include_directories(${RAPTOR_EAGLEV_LIB} PRIVATE "../ADC/")
|
||||
target_include_directories(${RAPTOR_EAGLEV_LIB} PRIVATE ${XCLIB_INCLUDE_DIR})
|
||||
target_link_libraries(${RAPTOR_EAGLEV_LIB} PUPLIC spdlog::spdlog)
|
||||
|
||||
add_executable(RaptorEagleV main.cpp)
|
||||
|
||||
include(GNUInstallDirs)
|
||||
install(TARGETS RaptorEagleV
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
)
|
||||
35
FindCFITSIO.cmake
Normal file
35
FindCFITSIO.cmake
Normal file
@ -0,0 +1,35 @@
|
||||
#
|
||||
# Try to find CFITSIO library
|
||||
#
|
||||
# The module defines:
|
||||
# CFITSIO_FOUND - system has CFITSIO library
|
||||
# CFITSIO_LIBRARIES - libraries (cfitsio and m (if UNIX))
|
||||
# CFITSIO_INCLUDE_DIR - path to header file
|
||||
#
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
|
||||
if (UNIX) # assume on the UNIX platform the CFITSIO library was installed in standard way
|
||||
find_path (CFITSIO_INCLUDE_DIR fitsio.h)
|
||||
find_library (CFITSIO_LIBRARY NAMES cfitsio PATH_SUFFIXES lib lib64)
|
||||
# CFITSIO needs -lm
|
||||
find_library(MATH_LIBRARY m)
|
||||
find_package_handle_standard_args(CFITSIO DEFAULT_MSG
|
||||
CFITSIO_LIBRARY MATH_LIBRARY CFITSIO_INCLUDE_DIR)
|
||||
mark_as_advanced(CFITSIO_INCLUDE_DIR CFITSIO_LIBRARY MATH_LIBRARY)
|
||||
set(CFITSIO_LIBRARIES ${CFITSIO_LIBRARY} ${MATH_LIBRARY})
|
||||
elseif (WIN32) # user may set CFITSIO_INSTALL_DIR variable to detect header and library files
|
||||
set(CFITSIO_INSTALL_DIR "" CACHE STRING "CFITSIO install dir")
|
||||
set(CFITSIO_INSTALL_DIR_INTERNAL "" CACHE STRING "CFITSIO install dir")
|
||||
# set(CFITSIO_INSTALL_DIR_INTERNAL "g:/PROGRAMS/LIBS/CFITSIO/" CACHE STRING "CFITSIO install dir")
|
||||
if(NOT "${CFITSIO_INSTALL_DIR}" STREQUAL "${CFITSIO_INSTALL_DIR_INTERNAL}") # CFITSIO_INSTALL_DIR is given in command-line
|
||||
unset(CFITSIO_LIBRARY CACHE)
|
||||
unset(CFITSIO_INCLUDE_DIR CACHE)
|
||||
endif()
|
||||
find_path (CFITSIO_INCLUDE_DIR NAMES fitsio.h PATHS ${CFITSIO_INSTALL_DIR})
|
||||
find_library (CFITSIO_LIBRARY NAMES cfitsio PATHS ${CFITSIO_INSTALL_DIR})
|
||||
find_package_handle_standard_args(CFITSIO DEFAULT_MSG
|
||||
CFITSIO_LIBRARY CFITSIO_INCLUDE_DIR)
|
||||
mark_as_advanced(CFITSIO_INCLUDE_DIR CFITSIO_LIBRARY)
|
||||
set(CFITSIO_LIBRARIES ${CFITSIO_LIBRARY})
|
||||
endif ()
|
||||
32
FindXCLIB.cmake
Normal file
32
FindXCLIB.cmake
Normal file
@ -0,0 +1,32 @@
|
||||
#
|
||||
# Try to find or setup by user EPIX XClib library
|
||||
#
|
||||
# The module defines:
|
||||
# XCLIB_FOUND - system has XCLIB library
|
||||
# XCLIB_LIBRARIES - libraries
|
||||
# XCLIB_INCLUDE_DIR - path to header file
|
||||
#
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
|
||||
set(XCLIB_INSTALL_DIR "" CACHE STRING "XCLIB instalation path")
|
||||
set(XCLIB_INSTALL_DIR_INTERNAL "" CACHE STRING "XCLIB instalation path")
|
||||
|
||||
if (NOT "${XCLIB_INSTALL_DIR}" STREQUAL "${XCLIB_INSTALL_DIR_INTERNAL}")
|
||||
unset(XCLIB_INSTALL_DIR)
|
||||
unset(XCLIB_INSTALL_DIR_INTERNAL)
|
||||
find_path(XCLIB_INCLUDE_DIR NAMES xcliball.h PATHS ${XCLIB_INSTALL_DIR} ${XCLIB_INSTALL_DIR}/inc)
|
||||
# find_library(XCLIB_LIBRARY NAMES kxclib_x86_64 xclib_x86_64 libkxclib_x86_64.so libxclib_x86_64.so
|
||||
# xclibw64 PATHS ${XCLIB_INSTALL_DIR})
|
||||
# find_library(XCLIB_LIBRARY NAMES kxclib_x86_64 xclib_x86_64 xclibw64 PATHS ${XCLIB_INSTALL_DIR} ${XCLIB_INSTALL_DIR}/lib)
|
||||
find_library(XCLIB_LIBRARY NAMES xclib_x86_64.so xclib_x86_64 xclibw64 PATHS ${XCLIB_INSTALL_DIR} ${XCLIB_INSTALL_DIR}/lib)
|
||||
else() # try to find in system default paths
|
||||
find_path (XCLIB_INCLUDE_DIR xcliball.h)
|
||||
find_library (XCLIB_LIBRARY NAMES kxclib_x86_64 xclib_x86_64 xclibw64)
|
||||
endif()
|
||||
|
||||
find_package_handle_standard_args(XCLIB DEFAULT_MSG
|
||||
XCLIB_LIBRARY XCLIB_INCLUDE_DIR)
|
||||
mark_as_advanced(XCLIB_INCLUDE_DIR XCLIB_LIBRARY)
|
||||
set(XCLIB_LIBRARIES ${XCLIB_LIBRARY})
|
||||
|
||||
9
main.cpp
Normal file
9
main.cpp
Normal file
@ -0,0 +1,9 @@
|
||||
#include <iostream>
|
||||
|
||||
using namespace std;
|
||||
|
||||
int main()
|
||||
{
|
||||
cout << "Hello World!" << endl;
|
||||
return 0;
|
||||
}
|
||||
649
raptor_eagle-v.fmt
Normal file
649
raptor_eagle-v.fmt
Normal file
@ -0,0 +1,649 @@
|
||||
|
||||
/*
|
||||
* Structure: pxvidformat
|
||||
* Copyright: (C) EPIX, Inc. 2000-2016
|
||||
* Created: Thu Feb 23 13:04:13 2017
|
||||
* By: EPIX(r) XCAP V3.8
|
||||
* PIXCI(R) 64 Bit Library 3.08.01 [16.03.02]
|
||||
* PIXCI(R) 64 Bit Driver V3.8.013.18.25-gentoo-r1
|
||||
* OS: Linux 64 bit
|
||||
*/
|
||||
struct pxvidformat pxvidformat_561_id31232 =
|
||||
{
|
||||
1988, /* ddch.len */
|
||||
561, /* ddch.mos */
|
||||
0, /* ddch.id */
|
||||
0, /* ddch.op */
|
||||
0, /* ddch.un */
|
||||
0, /* ddch.rw */
|
||||
0, /* ddch.fu */
|
||||
0, /* ddch.rs */
|
||||
30819, /* fgfamily */
|
||||
38, /* fgmodel */
|
||||
16143, /* fgsubmodel */
|
||||
0, /* fgcustomid */
|
||||
2014, 2, 19, /* fgdefdate */
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, /* fgcamera */
|
||||
0, /* fgsignature */
|
||||
0, 0, 1, 0, /* fgcamdope */
|
||||
4, 2048, 0, 4, /* xviddim */
|
||||
4, 2048, 0, 4, /* xdatdim */
|
||||
1, 2048, 0, 0, /* yviddim */
|
||||
1, 2048, 0, 0, /* ydatdim */
|
||||
0, 2048, 0, 0, /* xvidoffset */
|
||||
0, 2048, 0, 0, /* yvidoffset */
|
||||
0, 0, 0, 0, /* xvidoffdim */
|
||||
0, 0, 0, 0, /* yvidoffdim */
|
||||
1, 1, 0, 0, /* datfields */
|
||||
1, 1, 0, 0, /* datchannels */
|
||||
1, 1, 0, 0, /* datphylds */
|
||||
0, 0, 0, 0, /* rsvd2 */
|
||||
1, 1, 1, 0, /* vidylaces */
|
||||
1, 1, 1, 0, /* vidchannels */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, /* inputmuxs */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, /* outputmuxs */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, /* splitscreens */
|
||||
2, 0, 0, 0, 0, 0, 0, 0, /* syncsources */
|
||||
31232, 25088, 0, 0, 0, 0, 0, 0, /* videomodes */
|
||||
1, 0, 0, 0, 0, 0, 0, 0, /* fieldmods */
|
||||
1, 2147483647, 0, 0, /* buffers */
|
||||
1, 1, 1, 0, /* vidxlaces */
|
||||
0, 0, 0, 0, /* rsvd3 */
|
||||
0, /* as.hoffset */
|
||||
0, /* as.voffset */
|
||||
0, /* as.fieldsperframe */
|
||||
0, /* as.pixelsperclock */
|
||||
0, /* as.pixiesperclock */
|
||||
0, /* as.linesperframe */
|
||||
0, /* as.pixelsperline */
|
||||
0, 0, /* as.pixelclkfreq */
|
||||
0, 0, /* as.vperiod */
|
||||
0, 0, /* as.hperiod */
|
||||
0, 0, /* as.framerate */
|
||||
0, /* as.fieldperiodicity */
|
||||
0, /* as.lineperiodicity */
|
||||
0, /* as.hscanorder */
|
||||
0, /* as.vscanorder */
|
||||
0, /* as.framespertrigger */
|
||||
0, /* as.scanclass */
|
||||
0, /* as.phyldsperframe */
|
||||
0, 0, 0, 0, 0, 0, 0, /* as.rsvd4 */
|
||||
0, /* is.hoffset */
|
||||
0, /* is.voffset */
|
||||
1, /* is.fieldsperframe */
|
||||
1, /* is.pixelsperclock */
|
||||
0, /* is.pixiesperclock */
|
||||
0, /* is.linesperframe */
|
||||
0, /* is.pixelsperline */
|
||||
40000, 1000, /* is.pixelclkfreq */
|
||||
1000, 420, /* is.vperiod */
|
||||
1000, 860160, /* is.hperiod */
|
||||
420, 1000, /* is.framerate */
|
||||
1, /* is.fieldperiodicity */
|
||||
1, /* is.lineperiodicity */
|
||||
108, /* is.hscanorder */
|
||||
116, /* is.vscanorder */
|
||||
1, /* is.framespertrigger */
|
||||
2, /* is.scanclass */
|
||||
1, /* is.phyldsperframe */
|
||||
0, 0, 0, 0, 0, 0, 0, /* is.rsvd4 */
|
||||
1, 1, /* pixelwidth */
|
||||
1, 1, /* pixelheight */
|
||||
0, 0, /* pixeldepth */
|
||||
114, /* widthunits */
|
||||
114, /* heightunits */
|
||||
0, /* depthunits */
|
||||
1, /* boardspercamera */
|
||||
0, /* linesyncupdelay */
|
||||
0, /* fieldsyncupdelay */
|
||||
0, /* framesyncupdelay */
|
||||
0, /* fieldflip */
|
||||
1000, /* nosynctimeout */
|
||||
0, /* phyldflip */
|
||||
0, /* prefixdata */
|
||||
0, /* postfixdata */
|
||||
0, /* imagesperframe */
|
||||
0x0, /* camlinkconfig */
|
||||
0, 0, 0, /* rsvd5 */
|
||||
1, 0, 0, 0, 0, 0, 0, 0, /* vid.pixhints */
|
||||
16, 16, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, /* vid.pixbits */
|
||||
2, 0, 0, 0, 0, 0, 0, 0, /* vid.pixmems */
|
||||
215012, 215016, 215020, 215024, 215028, 215032, 215036, 214976, /* vid.pixdopes */
|
||||
1, 0, 0, 0, 0, 0, 0, 0, /* dat.pixhints */
|
||||
16, 16, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, /* dat.pixbits */
|
||||
2, 0, 0, 0, 0, 0, 0, 0, /* dat.pixmems */
|
||||
6724, 6728, 6732, 6736, 6740, 6744, 6748, 7072, /* dat.pixdopes */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, /* img.pixhints */
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, /* img.pixbits */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, /* img.pixmems */
|
||||
624884, 624888, 624892, 624864, 624868, 624872, 624876, 624848, /* img.pixdopes */
|
||||
};
|
||||
|
||||
/*
|
||||
* Structure: pxvidres
|
||||
* Copyright: (C) EPIX, Inc. 2000-2016
|
||||
* Created: Thu Feb 23 13:04:13 2017
|
||||
* By: EPIX(r) XCAP V3.8
|
||||
* PIXCI(R) 64 Bit Library 3.08.01 [16.03.02]
|
||||
* PIXCI(R) 64 Bit Driver V3.8.013.18.25-gentoo-r1
|
||||
* OS: Linux 64 bit
|
||||
*/
|
||||
struct pxvidres pxvidres_125_id31232 =
|
||||
{
|
||||
492, /* ddch.len */
|
||||
125, /* ddch.mos */
|
||||
0, /* ddch.id */
|
||||
0, /* ddch.op */
|
||||
0, /* ddch.un */
|
||||
0, /* ddch.rw */
|
||||
0, /* ddch.fu */
|
||||
0, /* ddch.rs */
|
||||
2048, /* x.datsamples */
|
||||
2048, /* x.vidsamples */
|
||||
0, /* x.vidoffset */
|
||||
2047, /* x.vidoffsend */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, /* x.rsvd */
|
||||
3, /* x.setmaxdatsamples */
|
||||
3, /* x.setmaxvidsamples */
|
||||
1, /* x.setmidvidoffset */
|
||||
0, /* x.vs.on */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, /* x.vs.parm */
|
||||
0, /* x.sv.on */
|
||||
0, /* x.sv.pos */
|
||||
0, /* x.sv.spc */
|
||||
2048, /* y.datsamples */
|
||||
2048, /* y.vidsamples */
|
||||
0, /* y.vidoffset */
|
||||
2047, /* y.vidoffsend */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, /* y.rsvd */
|
||||
3, /* y.setmaxdatsamples */
|
||||
3, /* y.setmaxvidsamples */
|
||||
1, /* y.setmidvidoffset */
|
||||
0, /* y.vs.on */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, /* y.vs.parm */
|
||||
0, /* y.sv.on */
|
||||
0, /* y.sv.pos */
|
||||
0, /* y.sv.spc */
|
||||
1, /* datfields */
|
||||
1, /* datchannels */
|
||||
1, /* setmaxdatfields */
|
||||
1, /* setmaxdatchannels */
|
||||
1, /* datphylds */
|
||||
1, /* setmaxdatphylds */
|
||||
0, 0, 0, 0, 0, 0, /* rsvd1 */
|
||||
1, /* vid.pixies */
|
||||
16, 0, 0, 0, /* vid.pixiebits */
|
||||
1, /* vid.pixhint */
|
||||
2, /* vid.pixmem */
|
||||
215012, /* vid.pixdope */
|
||||
0, /* vid.setpixbits */
|
||||
1, /* dat.pixies */
|
||||
16, 0, 0, 0, /* dat.pixiebits */
|
||||
1, /* dat.pixhint */
|
||||
2, /* dat.pixmem */
|
||||
6724, /* dat.pixdope */
|
||||
0, /* dat.setpixbits */
|
||||
1, /* img.pixies */
|
||||
16, 0, 0, 0, /* img.pixiebits */
|
||||
1, /* img.pixhint */
|
||||
0, /* img.pixmem */
|
||||
624884, /* img.pixdope */
|
||||
0, /* img.setpixbits */
|
||||
4096, /* line.pd */
|
||||
4096, /* line.pdod */
|
||||
4096, /* line.pdodal */
|
||||
4096, /* line.pdodalsf */
|
||||
0, /* line.rsvd2 */
|
||||
8388608, /* field.pd */
|
||||
8388616, /* field.pdod */
|
||||
8388672, /* field.pdodal */
|
||||
8388672, /* field.pdodalsf */
|
||||
0, /* field.rsvd2 */
|
||||
8388608, /* frame.pd */
|
||||
8388616, /* frame.pdod */
|
||||
8388672, /* frame.pdodal */
|
||||
8388672, /* frame.pdodalsf */
|
||||
0, /* frame.rsvd2 */
|
||||
3, /* framebuffers */
|
||||
0, /* rsvdbuffers */
|
||||
0, 0, 0, 0, 0, 0, 0, /* rsvd3 */
|
||||
};
|
||||
|
||||
/*
|
||||
* Structure: pxvidmode
|
||||
* Copyright: (C) EPIX, Inc. 2000-2016
|
||||
* Created: Thu Feb 23 13:04:13 2017
|
||||
* By: EPIX(r) XCAP V3.8
|
||||
* PIXCI(R) 64 Bit Library 3.08.01 [16.03.02]
|
||||
* PIXCI(R) 64 Bit Driver V3.8.013.18.25-gentoo-r1
|
||||
* OS: Linux 64 bit
|
||||
*/
|
||||
struct pxvidmode pxvidmode_79_id31232 =
|
||||
{
|
||||
304, /* ddch.len */
|
||||
79, /* ddch.mos */
|
||||
0, /* ddch.id */
|
||||
0, /* ddch.op */
|
||||
0, /* ddch.un */
|
||||
0, /* ddch.rw */
|
||||
0, /* ddch.fu */
|
||||
0, /* ddch.rs */
|
||||
1, /* vidchannels */
|
||||
1, /* buffer */
|
||||
0, /* panxy.x */
|
||||
0, /* panxy.y */
|
||||
0, /* useimphys */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, /* rsvd2 */
|
||||
31232, 0, 0, 0, /* vidmode */
|
||||
1, 0, 0, 0, /* vidylace */
|
||||
2, 0, 0, 0, /* syncsource */
|
||||
0, 0, 0, 0, /* vidopt */
|
||||
0, 0, 0, 0, /* inputmux */
|
||||
0, 0, 0, 0, /* outputmux */
|
||||
0, 0, 0, 0, /* splitscreen */
|
||||
1, 0, 0, 0, /* fieldmod */
|
||||
1, 0, 0, 0, /* vidxlace */
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, /* rsvd1 */
|
||||
1, /* setmaxvidylace */
|
||||
1, /* setmaxvidchannels */
|
||||
1, /* setmaxvidxlace */
|
||||
0, 0, 0, 0, 0, 0, 0, /* rsvd3 */
|
||||
};
|
||||
|
||||
/*
|
||||
* Structure: pxvidphys
|
||||
* Copyright: (C) EPIX, Inc. 2000-2016
|
||||
* Created: Thu Feb 23 13:04:13 2017
|
||||
* By: EPIX(r) XCAP V3.8
|
||||
* PIXCI(R) 64 Bit Library 3.08.01 [16.03.02]
|
||||
* PIXCI(R) 64 Bit Driver V3.8.013.18.25-gentoo-r1
|
||||
* OS: Linux 64 bit
|
||||
*/
|
||||
struct pxvidphys pxvidphys_118_id31232 =
|
||||
{
|
||||
660, /* ddch.len */
|
||||
118, /* ddch.mos */
|
||||
0, /* ddch.id */
|
||||
0, /* ddch.op */
|
||||
0, /* ddch.un */
|
||||
0, /* ddch.rw */
|
||||
0, /* ddch.fu */
|
||||
0, /* ddch.rs */
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, /* startadrs */
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, /* endadrs */
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, /* linelength */
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, /* linestride */
|
||||
0x0, /* bufadrs */
|
||||
0x0, /* bufsize */
|
||||
0, /* bufxdim */
|
||||
0, /* bufydim */
|
||||
0, /* bufidim */
|
||||
0, /* bufzdim */
|
||||
0, /* upatita */
|
||||
0, /* bufjdim */
|
||||
0, 0, 0, /* rsvd */
|
||||
0, /* buffer */
|
||||
0, /* stateid */
|
||||
0, /* tracker */
|
||||
};
|
||||
|
||||
/*
|
||||
* Structure: pxvidimage
|
||||
* Copyright: (C) EPIX, Inc. 2000-2016
|
||||
* Created: Thu Feb 23 13:04:13 2017
|
||||
* By: EPIX(r) XCAP V3.8
|
||||
* PIXCI(R) 64 Bit Library 3.08.01 [16.03.02]
|
||||
* PIXCI(R) 64 Bit Driver V3.8.013.18.25-gentoo-r1
|
||||
* OS: Linux 64 bit
|
||||
*/
|
||||
struct pxvidimage pxvidimage_251_id31232 =
|
||||
{
|
||||
996, /* ddch.len */
|
||||
251, /* ddch.mos */
|
||||
0, /* ddch.id */
|
||||
0, /* ddch.op */
|
||||
0, /* ddch.un */
|
||||
0, /* ddch.rw */
|
||||
0, /* ddch.fu */
|
||||
0, /* ddch.rs */
|
||||
0, /* mt.order */
|
||||
0, /* mt.mode */
|
||||
0, 0, 0, 0, /* mt.arg */
|
||||
0, /* bp.order */
|
||||
0, /* bp.mode */
|
||||
0, 0, 0, 0, /* bp.arg */
|
||||
0, /* cs.order */
|
||||
0, /* cs.mode */
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, /* cs.intorgb */
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, /* cs.fromrgb */
|
||||
0, /* cs.scale */
|
||||
0, /* wb.order */
|
||||
0, /* wb.mode */
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, /* wb.darkreference */
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, /* wb.darktarget */
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, /* wb.brightreference */
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, /* wb.brighttarget */
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, /* wb.gamma */
|
||||
0, /* pc.order */
|
||||
0, /* pc.mode */
|
||||
0, 0, 0, 0, /* pc.arg */
|
||||
0, /* sc.order */
|
||||
0, /* sc.mode */
|
||||
0, 0, 0, 0, /* sc.arg */
|
||||
0, /* rz.order */
|
||||
0, /* rz.mode */
|
||||
0, /* rz.xdim */
|
||||
0, /* rz.ydim */
|
||||
0, 0, /* rz.arg */
|
||||
0, /* go.order */
|
||||
0, /* go.mode */
|
||||
0, 0, /* go.offsbuffer */
|
||||
0, 0, /* go.gainbuffer */
|
||||
0, 0, 0, 1020108808, 0, 0, /* go.arg */
|
||||
0, 0, /* go.dfctbuffer */
|
||||
0, /* no.order */
|
||||
0, /* no.mode */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, /* no.black */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, /* no.coef1 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, /* no.coef2 */
|
||||
0, /* no.scale */
|
||||
0, 0, 0, /* no.arg */
|
||||
0, /* sh.order */
|
||||
0, /* sh.mode */
|
||||
0, 0, 0, /* sh.into */
|
||||
0, 0, 0, /* sh.from */
|
||||
0, /* sh.scale */
|
||||
0, 0, /* sh.arg */
|
||||
0, 0, 0, 0, /* cs2.arg */
|
||||
0, /* pp.order */
|
||||
0, /* pp.mode */
|
||||
0, 0, 0, 0, /* pp.arg */
|
||||
0, /* rsvd1 */
|
||||
};
|
||||
|
||||
/*
|
||||
* Structure: pxvidopt
|
||||
* Copyright: (C) EPIX, Inc. 2000-2016
|
||||
* Created: Thu Feb 23 13:04:13 2017
|
||||
* By: EPIX(r) XCAP V3.8
|
||||
* PIXCI(R) 64 Bit Library 3.08.01 [16.03.02]
|
||||
* PIXCI(R) 64 Bit Driver V3.8.013.18.25-gentoo-r1
|
||||
* OS: Linux 64 bit
|
||||
*/
|
||||
struct pxvidopt pxvidopt_19_id31232 =
|
||||
{
|
||||
60, /* ddch.len */
|
||||
19, /* ddch.mos */
|
||||
0, /* ddch.id */
|
||||
0, /* ddch.op */
|
||||
0, /* ddch.un */
|
||||
0, /* ddch.rw */
|
||||
0, /* ddch.fu */
|
||||
0, /* ddch.rs */
|
||||
0, /* imopstate */
|
||||
0, /* imopmode */
|
||||
0, /* panwraprnd */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, /* rsvd */
|
||||
};
|
||||
|
||||
/*
|
||||
* Structure: pxvidmem
|
||||
* Copyright: (C) EPIX, Inc. 2000-2016
|
||||
* Created: Thu Feb 23 13:04:13 2017
|
||||
* By: EPIX(r) XCAP V3.8
|
||||
* PIXCI(R) 64 Bit Library 3.08.01 [16.03.02]
|
||||
* PIXCI(R) 64 Bit Driver V3.8.013.18.25-gentoo-r1
|
||||
* OS: Linux 64 bit
|
||||
*/
|
||||
struct pxvidmem pxvidmem_72_id31232 =
|
||||
{
|
||||
528, /* ddch.len */
|
||||
72, /* ddch.mos */
|
||||
0, /* ddch.id */
|
||||
0, /* ddch.op */
|
||||
0, /* ddch.un */
|
||||
0, /* ddch.rw */
|
||||
0, /* ddch.fu */
|
||||
0, /* ddch.rs */
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, /* space */
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, /* start */
|
||||
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
|
||||
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, /* length */
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, /* rsvd */
|
||||
};
|
||||
|
||||
/*
|
||||
* Structure: pxcamcntl
|
||||
* Copyright: (C) EPIX, Inc. 2000-2016
|
||||
* Created: Thu Feb 23 13:04:13 2017
|
||||
* By: EPIX(r) XCAP V3.8
|
||||
* PIXCI(R) 64 Bit Library 3.08.01 [16.03.02]
|
||||
* PIXCI(R) 64 Bit Driver V3.8.013.18.25-gentoo-r1
|
||||
* OS: Linux 64 bit
|
||||
*/
|
||||
struct pxcamcntl pxcamcntl_264_id31232 =
|
||||
{
|
||||
800, /* ddch.len */
|
||||
264, /* ddch.mos */
|
||||
0, /* ddch.id */
|
||||
0, /* ddch.op */
|
||||
0, /* ddch.un */
|
||||
0, /* ddch.rw */
|
||||
0, /* ddch.fu */
|
||||
0, /* ddch.rs */
|
||||
0, /* fgfamily */
|
||||
0, /* fgmodel */
|
||||
0, /* fgsubmodel */
|
||||
0, /* fgcustomid */
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, /* fgcamera */
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, /* rsvd1 */
|
||||
0, /* cntlmode */
|
||||
0, /* cntlcntinit */
|
||||
0, /* cntlcntadj */
|
||||
0, /* cntlcntdeinit */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, /* cntlparms */
|
||||
0, /* cntlcntxmteot */
|
||||
0, /* cntlcntrcveot */
|
||||
0, /* cntloptions */
|
||||
0, /* cntlcntreset */
|
||||
0, /* cntlrcvtout */
|
||||
0, /* cntlrsttout */
|
||||
0, /* cntlretries */
|
||||
0, /* cntlpause */
|
||||
0, /* cntlthrottle */
|
||||
0, /* cntladrs */
|
||||
0, /* cntlcntrcvmask */
|
||||
0, 0, 0, 0, 0, /* rsvd2 */
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* cntldata.data32 */
|
||||
};
|
||||
|
||||
/*
|
||||
* Structure: xcsv2format
|
||||
* Copyright: (C) EPIX, Inc. 2000-2016
|
||||
* Created: Thu Feb 23 13:04:13 2017
|
||||
* By: EPIX(r) XCAP V3.8
|
||||
* PIXCI(R) 64 Bit Library 3.08.01 [16.03.02]
|
||||
* PIXCI(R) 64 Bit Driver V3.8.013.18.25-gentoo-r1
|
||||
* OS: Linux 64 bit
|
||||
*/
|
||||
struct xcsv2format xcsv2format_32_id31232 =
|
||||
{
|
||||
48, /* ddch.len */
|
||||
32, /* ddch.mos */
|
||||
0, /* ddch.id */
|
||||
0, /* ddch.op */
|
||||
0, /* ddch.un */
|
||||
0, /* ddch.rw */
|
||||
0, /* ddch.fu */
|
||||
0, /* ddch.rs */
|
||||
0, /* Bt8x9format */
|
||||
0, /* Bt8x9xtal */
|
||||
0, /* Bt8x9control */
|
||||
0, /* Bt819oform */
|
||||
0, /* Bt819vscale */
|
||||
0, /* Bt819adc */
|
||||
0, /* Bt829oform */
|
||||
0, /* Bt829vscale */
|
||||
0, /* Bt829adc */
|
||||
0, /* Bt829vtc */
|
||||
0, /* Bt829scloop */
|
||||
0, /* Bt848adc */
|
||||
0, /* Bt848clrctl */
|
||||
0, /* Bt819options */
|
||||
0, /* Bt848faultmask */
|
||||
0, /* Bt848haltmask */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, /* rsvd */
|
||||
};
|
||||
|
||||
/*
|
||||
* Structure: xcsv2mode
|
||||
* Copyright: (C) EPIX, Inc. 2000-2016
|
||||
* Created: Thu Feb 23 13:04:13 2017
|
||||
* By: EPIX(r) XCAP V3.8
|
||||
* PIXCI(R) 64 Bit Library 3.08.01 [16.03.02]
|
||||
* PIXCI(R) 64 Bit Driver V3.8.013.18.25-gentoo-r1
|
||||
* OS: Linux 64 bit
|
||||
*/
|
||||
struct xcsv2mode xcsv2mode_21_id31232 =
|
||||
{
|
||||
40, /* ddch.len */
|
||||
21, /* ddch.mos */
|
||||
0, /* ddch.id */
|
||||
0, /* ddch.op */
|
||||
0, /* ddch.un */
|
||||
0, /* ddch.rw */
|
||||
0, /* ddch.fu */
|
||||
0, /* ddch.rs */
|
||||
0, /* brightness */
|
||||
0, /* hue */
|
||||
0, /* lumagain */
|
||||
0, /* chromaUgain */
|
||||
0, /* chromaVgain */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, /* rsvd */
|
||||
};
|
||||
|
||||
/*
|
||||
* Structure: xcdxxformat
|
||||
* Copyright: (C) EPIX, Inc. 2000-2016
|
||||
* Created: Thu Feb 23 13:04:13 2017
|
||||
* By: EPIX(r) XCAP V3.8
|
||||
* PIXCI(R) 64 Bit Library 3.08.01 [16.03.02]
|
||||
* PIXCI(R) 64 Bit Driver V3.8.013.18.25-gentoo-r1
|
||||
* OS: Linux 64 bit
|
||||
*/
|
||||
struct xcdxxformat xcdxxformat_45_id31232 =
|
||||
{
|
||||
124, /* ddch.len */
|
||||
45, /* ddch.mos */
|
||||
0, /* ddch.id */
|
||||
0, /* ddch.op */
|
||||
0, /* ddch.un */
|
||||
0, /* ddch.rw */
|
||||
0, /* ddch.fu */
|
||||
0, /* ddch.rs */
|
||||
0x0, /* PRINC */
|
||||
0x0, /* EXSYNC */
|
||||
0x0, /* exsync */
|
||||
0x0, /* prin */
|
||||
0x0, /* MWETS */
|
||||
0x0, /* LCD */
|
||||
0x0, /* PLLMX */
|
||||
0, /* clampreference */
|
||||
0, /* pixelclkreference */
|
||||
0, 0, /* sdclkfreq */
|
||||
0, /* SDIET */
|
||||
0x0, /* PCWD */
|
||||
0x2, /* CLCCSE */
|
||||
0x0, /* TEST */
|
||||
0x0, /* CLCCSEhi */
|
||||
0x0, /* MSSMUB */
|
||||
0x0, /* ToucanOpt */
|
||||
0x0, /* ToucanCoef1 */
|
||||
0x0, /* ToucanCoef2 */
|
||||
0x0, /* ToucanCoef3 */
|
||||
0, 0, 0, 0, /* exsyncinfo */
|
||||
0, 0, 0, 0, /* prininfo */
|
||||
0x0, /* XXX */
|
||||
0x0, /* CLCCGP */
|
||||
0x0, /* MSSMUBhi */
|
||||
0, 0, 0, 0, 0, /* rsvd2 */
|
||||
};
|
||||
108
raptor_eagle_cameralink.h
Normal file
108
raptor_eagle_cameralink.h
Normal file
@ -0,0 +1,108 @@
|
||||
#pragma once
|
||||
|
||||
#include <chrono>
|
||||
|
||||
/*
|
||||
CAMERALINK PROTOCOL DEFINITIONS
|
||||
TO MANAGE RAPTOR EAGLE V 4240 CAMERA
|
||||
|
||||
*/
|
||||
|
||||
|
||||
/* from EAGLE V 4240 Instruction Manual Revision 1.1 */
|
||||
|
||||
|
||||
// default port settings
|
||||
// the values are ones for EB1 grabber card (see XCLIB Reference manual)
|
||||
|
||||
// default read/write operation timeout in milliseconds (1 second)
|
||||
static constexpr std::chrono::duration CL_DEFAULT_TIMEOUT = std::chrono::milliseconds(1000);
|
||||
|
||||
|
||||
static constexpr int CL_DEFAULT_BAUD_RATE = 115200;
|
||||
static constexpr int CL_DEFAULT_START_BIT = 1;
|
||||
static constexpr int CL_DEFAULT_DATA_BITS = 8;
|
||||
static constexpr int CL_DEFAULT_STOP_BIT = 1;
|
||||
|
||||
static constexpr bool CL_DEFAULT_ACK_ENABLED = true;
|
||||
static constexpr bool CL_DEFAULT_CHK_SUM_ENABLED = true;
|
||||
|
||||
// ETX/ERROR codes
|
||||
|
||||
static constexpr char CL_ETX = 0x50;
|
||||
static constexpr char CL_ETX_SER_TIMEOUT = 0x51;
|
||||
static constexpr char CL_ETX_CK_SUM_ERR = 0x52;
|
||||
static constexpr char CL_ETXI2C_ERR = 0x53;
|
||||
static constexpr char CL_ETX_UNKNOWN_CMD = 0x54;
|
||||
static constexpr char CL_ETX_DONE_LOW = 0x55;
|
||||
|
||||
|
||||
/* BIT MASKS (0-7 bits) */
|
||||
|
||||
// system state
|
||||
|
||||
static constexpr char CL_SYSTEM_STATE_CK_SUM = 0x40; // 6-th bit
|
||||
static constexpr char CL_SYSTEM_STATE_ACK = 0x10; // 4-th bit
|
||||
static constexpr char CL_SYSTEM_STATE_FPGA_BOOT_OK = 0x4; // 2-nd bit
|
||||
static constexpr char CL_SYSTEM_STATE_FPGA_RST_HOLD = 0x2; // 1-st bit
|
||||
static constexpr char CL_SYSTEM_STATE_FPGA_EEPROM_COMMS = 0x1; // 0-th bit
|
||||
|
||||
// FPGA CTRL register
|
||||
|
||||
static constexpr char CL_FPGA_CTRL_REG_HIGH_GAIN = 0x80; // 7-th bit (0 if high pre-amp gain)
|
||||
static constexpr char CL_FPGA_CTRL_REG_TMP_TRIP_RST = 0x2; // 1-st bit
|
||||
static constexpr char CL_FPGA_CTRL_REG_ENABLE_TEC = 0x1; // 0-th bit
|
||||
|
||||
// trigger mode
|
||||
|
||||
static constexpr char CL_TRIGGER_MODE_ENABLE_RISING_EDGE = 0x80; // 7-th bit
|
||||
static constexpr char CL_TRIGGER_MODE_EXT_TRIGGER = 0x40; // 6-th bit
|
||||
static constexpr char CL_TRIGGER_MODE_ABORT_CURRENT_EXP = 0x8; // 3-rd bit
|
||||
static constexpr char CL_TRIGGER_MODE_CONTINUOUS_SEQ = 0x4; // 2-nd bit
|
||||
static constexpr char CL_TRIGGER_MODE_FIXED_FRAME_RATE = 0x2; // 1-st bit
|
||||
static constexpr char CL_TRIGGER_MODE_SNAPSHOT = 0x1; // 0-th bit
|
||||
|
||||
|
||||
/* SETUP CONTROL VALUES */
|
||||
|
||||
// shutter
|
||||
|
||||
static constexpr char CL_SHUTTER_CLOSED = 0x0;
|
||||
static constexpr char CL_SHUTTER_OPEN = 0x1;
|
||||
static constexpr char CL_SHUTTER_EXP = 0x2;
|
||||
|
||||
// readout rate (registers values)
|
||||
|
||||
static constexpr char CL_READOUT_CLOCK_RATE_A3_2MHZ = 0x02;
|
||||
static constexpr char CL_READOUT_CLOCK_RATE_A4_2MHZ = 0x02;
|
||||
static constexpr char CL_READOUT_CLOCK_RATE_A3_75KHZ = 0x43;
|
||||
static constexpr char CL_READOUT_CLOCK_RATE_A4_75KHZ = 0x80;
|
||||
|
||||
// readout mode
|
||||
|
||||
static constexpr char CL_READOUT_MODE_NORMAL = 0x01;
|
||||
static constexpr char CL_READOUT_MODE_TEST = 0x04;
|
||||
|
||||
|
||||
static constexpr double ADC_CALIBRATION_POINT_1 = 0.0; // at 0 Celcius degree
|
||||
static constexpr double ADC_CALIBRATION_POINT_2 = 40.0; // at +40 Celcius degree
|
||||
|
||||
static constexpr double DAC_CALIBRATION_POINT_1 = 0.0; // at 0 Celcius degree
|
||||
static constexpr double DAC_CALIBRATION_POINT_2 = 40.0; // at +40 Celcius degree
|
||||
|
||||
|
||||
/* COMMANDS */
|
||||
|
||||
static unsigned char CL_COMMAND_SET_ADDRESS[] = {
|
||||
0x53, 0xE0, 0x01, 0x00}; // set address given by the last byte. the last byte should be set by user)
|
||||
|
||||
static unsigned char CL_COMMAND_READ_VALUE[] = {0x53, 0xE1, 0x01}; // read a byte value
|
||||
|
||||
static unsigned char CL_COMMAND_WRITE_VALUE[] = {0x53, 0xE0, 0x02, 0x00,
|
||||
0x00}; // write a byte value given by the last byte
|
||||
// at address given by 3-rd byte (starting from 0)
|
||||
|
||||
static constexpr unsigned char CL_COMMAND_GET_MANUFACTURER_DATA_1[] = {
|
||||
0x53, 0xAE, 0x05, 0x01, 0x00, 0x00, 0x02, 0x00}; // 1st command to get manufacturer's data
|
||||
|
||||
static constexpr unsigned char CL_COMMAND_GET_MANUFACTURER_DATA_2[] = {0x53, 0xAF, 0x12}; // the second one
|
||||
83
raptor_eagle_ccd.cpp
Normal file
83
raptor_eagle_ccd.cpp
Normal file
@ -0,0 +1,83 @@
|
||||
#include <xcliball.h>
|
||||
#include <cstring>
|
||||
|
||||
#include "raptor_eagle_cameralink.h"
|
||||
#include "raptor_eagle_ccd.h"
|
||||
#include "raptor_eagle_exception.h"
|
||||
|
||||
|
||||
#define DEFAULT_EPIX_VIDEO_FMT_FILE "raptor_eagle-v.fmt"
|
||||
|
||||
/* CONSTRUCTORS AND DESTRUCTOR */
|
||||
|
||||
RaptorEagleCCD::RaptorEagleCCD(const adc::traits::adc_input_char_range auto& epix_video_fmt_filename,
|
||||
std::shared_ptr<spdlog::logger> logger)
|
||||
: base_t("EagleCCD"), adc::AdcSpdlogLogger(logger)
|
||||
{
|
||||
addMarkToPattern("EAGLE-CCD");
|
||||
|
||||
std::ranges::copy(epix_video_fmt_filename, std::back_inserter(_epixFmtVideoFilename));
|
||||
|
||||
logDebug("CTOR: Create RaptorEagleCCD class instance");
|
||||
if (_epixFmtVideoFilename.empty()) {
|
||||
logDebug("Video format filename is not set! Use of default: {}", DEFAULT_EPIX_VIDEO_FMT_FILE);
|
||||
} else {
|
||||
logDebug("Set video format filename: {}", _epixFmtVideoFilename);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
RaptorEagleCCD::RaptorEagleCCD(std::shared_ptr<spdlog::logger> logger)
|
||||
: RaptorEagleCCD(std::string_view(), std::move(logger))
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
RaptorEagleCCD::~RaptorEagleCCD()
|
||||
{
|
||||
logDebug("DTOR: Delete RaptorEagleCCD class instance");
|
||||
}
|
||||
|
||||
|
||||
/* PRIVATE METHODS */
|
||||
|
||||
void RaptorEagleCCD::initCamera(int unitmap)
|
||||
{
|
||||
logInfo("Try to init camera with unitmap: {} ...", unitmap);
|
||||
|
||||
if (unitmap < 0) {
|
||||
throw std::system_error(RaptorEagleCCDError::ERROR_INVALID_UNITMAP);
|
||||
}
|
||||
|
||||
_cameraUnitmap = unitmap;
|
||||
|
||||
logInfo("Camera with unit '{}' is initialized", _cameraUnitmap);
|
||||
}
|
||||
|
||||
|
||||
void RaptorEagleCCD::openPIXCI()
|
||||
{
|
||||
if (_epixFmtVideoFilename.size()) {
|
||||
xclibApiCall(pxd_PIXCIopen("", nullptr, _epixFmtVideoFilename.c_str()),
|
||||
std::format("pxd_PIXCIopen(\"\", NULL, {})", _epixFmtVideoFilename));
|
||||
} else {
|
||||
xclibApiCall(pxd_PIXCIopen("", "DEFAULT", ""), "pxd_PIXCIopen(\"\", \"DEFAULT\", \"\")");
|
||||
|
||||
#include DEFAULT_EPIX_VIDEO_FMT_FILE // exported from XCAP (Linux 64-bit!): bin 1x1, full CCD frame
|
||||
pxd_videoFormatAsIncludedInit(0);
|
||||
xclibApiCall(pxd_videoFormatAsIncluded(0), "pxd_videoFormatAsIncluded(0)");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void RaptorEagleCCD::closePIXCI()
|
||||
{
|
||||
// no exception here!!!
|
||||
xclibApiCall<true>(pxd_PIXCIclose(), "pxd_PIXCIclose()");
|
||||
}
|
||||
|
||||
|
||||
void RaptorEagleCCD::initAttrComm()
|
||||
{
|
||||
addAttribute(CAMERA_ATTR_EXPTIME, []() {});
|
||||
}
|
||||
88
raptor_eagle_ccd.h
Normal file
88
raptor_eagle_ccd.h
Normal file
@ -0,0 +1,88 @@
|
||||
#pragma once
|
||||
|
||||
#include <spdlog/sinks/null_sink.h>
|
||||
|
||||
#include <common/adc_spdlog.h>
|
||||
#include <device/adc_device.h>
|
||||
#include <device/adc_device_attribute.h>
|
||||
#include <device/adc_device_command.h>
|
||||
|
||||
#include <xcliball.h>
|
||||
|
||||
#include "raptor_eagle_exception.h"
|
||||
|
||||
|
||||
class RaptorEagleCCD : public adc::AdcGenericDevice<std::string, adc::AdcDeviceAttribute<>, adc::AdcDeviceCommand<>>,
|
||||
adc::AdcSpdlogLogger
|
||||
{
|
||||
typedef adc::AdcGenericDevice<std::string, adc::AdcDeviceAttribute<>, adc::AdcDeviceCommand<>> base_t;
|
||||
|
||||
public:
|
||||
static constexpr std::string_view CAMERA_ATTR_HBIN{"HBIN"};
|
||||
static constexpr std::string_view CAMERA_ATTR_VBIN{"VBIN"};
|
||||
static constexpr std::string_view CAMERA_ATTR_ROI_LEFT{"ROI_LEFT"};
|
||||
static constexpr std::string_view CAMERA_ATTR_ROI_TOP{"ROI_TOP"};
|
||||
static constexpr std::string_view CAMERA_ATTR_ROI_WIDTH{"ROI_WIDTH"};
|
||||
static constexpr std::string_view CAMERA_ATTR_ROI_HEIGHT{"ROI_HEIGHT"};
|
||||
static constexpr std::string_view CAMERA_ATTR_GAIN{"GAIN"};
|
||||
static constexpr std::string_view CAMERA_ATTR_READ_RATE{"READ_RATE"};
|
||||
static constexpr std::string_view CAMERA_ATTR_CCD_TEMP{"CCD_TEMP"};
|
||||
static constexpr std::string_view CAMERA_ATTR_PCB_TEMP{"PCB_TEMP"};
|
||||
static constexpr std::string_view CAMERA_ATTR_EXPTIME{"EXPTIME"};
|
||||
static constexpr std::string_view CAMERA_ATTR_FRAME_RATE{"FRAME_RATE"};
|
||||
static constexpr std::string_view CAMERA_ATTR_NEXP{"NEXP"};
|
||||
static constexpr std::string_view CAMERA_ATTR_SHUTTER_STATE{"SHUTTER_STATE"};
|
||||
static constexpr std::string_view CAMERA_ATTR_CCDDIM{"CCDDIM"};
|
||||
|
||||
static constexpr std::string_view CAMERA_CMD_START_EXP{"START_EXP"};
|
||||
static constexpr std::string_view CAMERA_CMD_STOP_EXP{"STOP_EXP"};
|
||||
// static constexpr std::string_view CAMERA_CMD_OPEN_SHUTTER{"OPEN_SHUTTER"};
|
||||
// static constexpr std::string_view CAMERA_CMD_CLOSE_SHUTTER{"CLOSE_SHUTTER"};
|
||||
|
||||
|
||||
|
||||
RaptorEagleCCD(const adc::traits::adc_input_char_range auto& epix_video_fmt_filename,
|
||||
std::shared_ptr<spdlog::logger> logger = spdlog::null_logger_mt("EAGLE_CCD_NULLLOGGER"));
|
||||
|
||||
RaptorEagleCCD(std::shared_ptr<spdlog::logger> logger = spdlog::null_logger_mt("EAGLE_CCD_NULLLOGGER"));
|
||||
|
||||
~RaptorEagleCCD();
|
||||
|
||||
private:
|
||||
std::string _epixFmtVideoFilename;
|
||||
int _cameraUnitmap;
|
||||
|
||||
void initAttrComm();
|
||||
|
||||
void initCamera(int unitmap);
|
||||
|
||||
void openPIXCI();
|
||||
void closePIXCI();
|
||||
|
||||
template <bool NOEXCEPT = false>
|
||||
void xclibApiCall(int err, const adc::traits::adc_input_char_range auto& func_name)
|
||||
{
|
||||
if (err) {
|
||||
if (std::ranges::size(func_name)) {
|
||||
logError("XCLIB API call ('{}') returns: {} ({})", func_name, err, pxd_mesgErrorCode(err));
|
||||
} else {
|
||||
logError("XCLIB API call returns: {} ({})", err, pxd_mesgErrorCode(err));
|
||||
}
|
||||
|
||||
if constexpr (!NOEXCEPT) {
|
||||
throw std::error_code(err, XCLIBErrorCategory::get());
|
||||
}
|
||||
} else {
|
||||
if (std::ranges::size(func_name)) {
|
||||
logDebug("XCLIB API call ('{}') finished successfully", func_name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
template <bool NOEXCEPT = false>
|
||||
void xclibApiCall(int err)
|
||||
{
|
||||
xclibApiCall<NOEXCEPT>(err, std::string_view(""));
|
||||
}
|
||||
};
|
||||
79
raptor_eagle_exception.h
Normal file
79
raptor_eagle_exception.h
Normal file
@ -0,0 +1,79 @@
|
||||
#pragma once
|
||||
|
||||
#include <xcliball.h>
|
||||
#include <system_error>
|
||||
|
||||
enum class RaptorEagleCCDError : int { ERROR_OK, ERROR_INVALID_UNITMAP };
|
||||
|
||||
|
||||
namespace std
|
||||
{
|
||||
template <>
|
||||
class is_error_code_enum<RaptorEagleCCDError> : public true_type
|
||||
{
|
||||
};
|
||||
|
||||
} // namespace std
|
||||
|
||||
|
||||
struct RaptorEagleCCDErrorCategory : std::error_category {
|
||||
RaptorEagleCCDErrorCategory() : std::error_category() {}
|
||||
|
||||
const char* name() const noexcept
|
||||
{
|
||||
return "EAGLE_CCD_ERROR_CATEGORY";
|
||||
}
|
||||
|
||||
std::string message(int ec) const
|
||||
{
|
||||
RaptorEagleCCDError err = static_cast<RaptorEagleCCDError>(ec);
|
||||
|
||||
switch (err) {
|
||||
case RaptorEagleCCDError::ERROR_OK:
|
||||
return "OK";
|
||||
case RaptorEagleCCDError::ERROR_INVALID_UNITMAP:
|
||||
return "invalid EPIX-library unitmap";
|
||||
default:
|
||||
return "UNKNOWN ERROR";
|
||||
}
|
||||
}
|
||||
|
||||
static const RaptorEagleCCDErrorCategory& get()
|
||||
{
|
||||
static const RaptorEagleCCDErrorCategory constInst;
|
||||
return constInst;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/* Error category for XCLIB errors */
|
||||
struct XCLIBErrorCategory : std::error_category {
|
||||
XCLIBErrorCategory() : std::error_category() {}
|
||||
|
||||
const char* name() const noexcept
|
||||
{
|
||||
return "XCLIB_Error_Category";
|
||||
}
|
||||
|
||||
std::string message(int ec) const
|
||||
{
|
||||
return pxd_mesgErrorCode(ec);
|
||||
}
|
||||
|
||||
static const XCLIBErrorCategory& get()
|
||||
{
|
||||
static const XCLIBErrorCategory constInst;
|
||||
return constInst;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
namespace std
|
||||
{
|
||||
|
||||
inline std::error_code make_error_code(RaptorEagleCCDError ec)
|
||||
{
|
||||
return std::error_code(static_cast<int>(ec), RaptorEagleCCDErrorCategory::get());
|
||||
}
|
||||
|
||||
} // namespace std
|
||||
Loading…
x
Reference in New Issue
Block a user