diff --git a/debian/libaltaircam/changelog b/debian/libaltaircam/changelog index 099e4ca0b..2ab11802f 100644 --- a/debian/libaltaircam/changelog +++ b/debian/libaltaircam/changelog @@ -1,3 +1,15 @@ +libaltaircam (56.26054.20240714) jammy; urgency=medium + + * Upstream release + + -- altair; Mon, 15 Jul 2024 09:56:43 +0800 + +libaltaircam (56.25996.20240707) jammy; urgency=medium + + * Upstream release + + -- altair; Sun, 07 Jul 2024 20:30:55 +0800 + libaltaircam (55.25633.20240519) jammy; urgency=medium * Upstream release diff --git a/debian/libbressercam/changelog b/debian/libbressercam/changelog index ac65beb55..4e8aed9d5 100644 --- a/debian/libbressercam/changelog +++ b/debian/libbressercam/changelog @@ -1,3 +1,15 @@ +libbressercam (56.26054.20240714) jammy; urgency=medium + + * Upstream release + + -- bresser; Mon, 15 Jul 2024 09:56:47 +0800 + +libbressercam (56.25996.20240707) jammy; urgency=medium + + * Upstream release + + -- bresser; Sun, 07 Jul 2024 20:31:02 +0800 + libbressercam (55.25633.20240519) jammy; urgency=medium * Upstream release diff --git a/debian/libmallincam/changelog b/debian/libmallincam/changelog index b0963a9b0..b5f57aed8 100644 --- a/debian/libmallincam/changelog +++ b/debian/libmallincam/changelog @@ -1,3 +1,15 @@ +libmallincam (56.26054.20240714) jammy; urgency=medium + + * Upstream release + + -- procom; Mon, 15 Jul 2024 09:57:03 +0800 + +libmallincam (56.25996.20240707) jammy; urgency=medium + + * Upstream release + + -- procom; Sun, 07 Jul 2024 20:31:18 +0800 + libmallincam (55.25633.20240519) jammy; urgency=medium * Upstream release diff --git a/debian/libmeadecam/changelog b/debian/libmeadecam/changelog index 6dde7deef..55f7d9a60 100644 --- a/debian/libmeadecam/changelog +++ b/debian/libmeadecam/changelog @@ -1,3 +1,9 @@ +libmeadecam (56.26054.20240714) jammy; urgency=medium + + * Upstream release + + -- meade; Mon, 15 Jul 2024 09:56:38 +0800 + libmeadecam (1.54.2) jammy; urgency=medium * Upstream release diff --git a/debian/libnncam/changelog b/debian/libnncam/changelog index f44cb8d6a..e632de7cb 100644 --- a/debian/libnncam/changelog +++ b/debian/libnncam/changelog @@ -1,3 +1,15 @@ +libnncam (56.26054.20240714) jammy; urgency=medium + + * Upstream release + + -- nn; Mon, 15 Jul 2024 09:57:51 +0800 + +libnncam (56.25996.20240707) jammy; urgency=medium + + * Upstream release + + -- nn; Sun, 07 Jul 2024 20:31:36 +0800 + libnncam (55.25633.20240519) jammy; urgency=medium * Upstream release diff --git a/debian/libogmacam/changelog b/debian/libogmacam/changelog index 196add7e8..ab2fbc4d5 100644 --- a/debian/libogmacam/changelog +++ b/debian/libogmacam/changelog @@ -1,3 +1,15 @@ +libogmacam (56.26054.20240714) jammy; urgency=medium + + * Upstream release + + -- ogmavision; Mon, 15 Jul 2024 09:56:52 +0800 + +libogmacam (56.25996.20240707) jammy; urgency=medium + + * Upstream release + + -- ogmavision; Sun, 07 Jul 2024 20:31:07 +0800 + libogmacam (55.25633.20240519) jammy; urgency=medium * Upstream release diff --git a/debian/libomegonprocam/changelog b/debian/libomegonprocam/changelog index 4169b2404..d490efabf 100644 --- a/debian/libomegonprocam/changelog +++ b/debian/libomegonprocam/changelog @@ -1,3 +1,15 @@ +libomegonprocam (56.26054.20240714) jammy; urgency=medium + + * Upstream release + + -- nimax; Mon, 15 Jul 2024 09:57:19 +0800 + +libomegonprocam (56.25996.20240707) jammy; urgency=medium + + * Upstream release + + -- nimax; Sun, 07 Jul 2024 20:31:25 +0800 + libomegonprocam (55.25633.20240519) jammy; urgency=medium * Upstream release diff --git a/debian/libstarshootg/changelog b/debian/libstarshootg/changelog index e9e80aec8..9ff44d493 100644 --- a/debian/libstarshootg/changelog +++ b/debian/libstarshootg/changelog @@ -1,3 +1,15 @@ +libstarshootg (56.26054.20240714) jammy; urgency=medium + + * Upstream release + + -- orion; Mon, 15 Jul 2024 09:56:57 +0800 + +libstarshootg (56.25996.20240707) jammy; urgency=medium + + * Upstream release + + -- orion; Sun, 07 Jul 2024 20:31:12 +0800 + libstarshootg (55.25633.20240519) jammy; urgency=medium * Upstream release diff --git a/debian/libtoupcam/changelog b/debian/libtoupcam/changelog index 0a8bf2458..c1f4451c0 100644 --- a/debian/libtoupcam/changelog +++ b/debian/libtoupcam/changelog @@ -1,3 +1,15 @@ +libtoupcam (56.26054.20240714) jammy; urgency=medium + + * Upstream release + + -- touptek; Mon, 15 Jul 2024 09:56:31 +0800 + +libtoupcam (56.25996.20240707) jammy; urgency=medium + + * Upstream release + + -- touptek; Sun, 07 Jul 2024 20:30:47 +0800 + libtoupcam (55.25633.20240519) jammy; urgency=medium * Upstream release diff --git a/debian/libtscam/changelog b/debian/libtscam/changelog index b59933b1f..3410d0f10 100644 --- a/debian/libtscam/changelog +++ b/debian/libtscam/changelog @@ -1,3 +1,15 @@ +libtscam (56.26054.20240714) jammy; urgency=medium + + * Upstream release + + -- teleskop; Mon, 15 Jul 2024 09:57:56 +0800 + +libtscam (56.25996.20240707) jammy; urgency=medium + + * Upstream release + + -- teleskop; Sun, 07 Jul 2024 20:31:42 +0800 + libtscam (55.25633.20240519) jammy; urgency=medium * Upstream release diff --git a/indi-toupbase/CMakeLists.txt b/indi-toupbase/CMakeLists.txt index 26d91ea76..f0a1bce95 100644 --- a/indi-toupbase/CMakeLists.txt +++ b/indi-toupbase/CMakeLists.txt @@ -80,14 +80,6 @@ add_executable(indi_mallincam_wheel ${indi_wheel_SRCS}) target_compile_definitions(indi_mallincam_wheel PRIVATE "-DBUILD_MALLINCAM") target_link_libraries(indi_mallincam_wheel ${INDI_LIBRARIES} ${CFITSIO_LIBRARIES} ${MALLINCAM_LIBRARIES} ${ZLIB_LIBRARY} ${CMAKE_DL_LIBS} ${CMAKE_THREAD_LIBS_INIT}) -########### indi_meadecam_* ########### -add_executable(indi_meadecam_ccd ${indi_toupbase_SRCS}) -target_compile_definitions(indi_meadecam_ccd PRIVATE "-DBUILD_MEADECAM") -target_link_libraries(indi_meadecam_ccd ${INDI_LIBRARIES} ${CFITSIO_LIBRARIES} ${MEADECAM_LIBRARIES} ${ZLIB_LIBRARY} ${CMAKE_DL_LIBS} ${CMAKE_THREAD_LIBS_INIT}) -add_executable(indi_meadecam_wheel ${indi_wheel_SRCS}) -target_compile_definitions(indi_meadecam_wheel PRIVATE "-DBUILD_MEADECAM") -target_link_libraries(indi_meadecam_wheel ${INDI_LIBRARIES} ${CFITSIO_LIBRARIES} ${MEADECAM_LIBRARIES} ${ZLIB_LIBRARY} ${CMAKE_DL_LIBS} ${CMAKE_THREAD_LIBS_INIT}) - ########### indi_nncam_* ########### add_executable(indi_nncam_ccd ${indi_toupbase_SRCS}) target_compile_definitions(indi_nncam_ccd PRIVATE "-DBUILD_NNCAM") @@ -128,6 +120,14 @@ add_executable(indi_tscam_wheel ${indi_wheel_SRCS}) target_compile_definitions(indi_tscam_wheel PRIVATE "-DBUILD_TSCAM") target_link_libraries(indi_tscam_wheel ${INDI_LIBRARIES} ${CFITSIO_LIBRARIES} ${TSCAM_LIBRARIES} ${ZLIB_LIBRARY} ${CMAKE_DL_LIBS} ${CMAKE_THREAD_LIBS_INIT}) +########### indi_meadecam_* ########### +add_executable(indi_meadecam_ccd ${indi_toupbase_SRCS}) +target_compile_definitions(indi_meadecam_ccd PRIVATE "-DBUILD_MEADECAM") +target_link_libraries(indi_meadecam_ccd ${INDI_LIBRARIES} ${CFITSIO_LIBRARIES} ${MEADECAM_LIBRARIES} ${ZLIB_LIBRARY} ${CMAKE_DL_LIBS} ${CMAKE_THREAD_LIBS_INIT}) +add_executable(indi_meadecam_wheel ${indi_wheel_SRCS}) +target_compile_definitions(indi_meadecam_wheel PRIVATE "-DBUILD_MEADECAM") +target_link_libraries(indi_meadecam_wheel ${INDI_LIBRARIES} ${CFITSIO_LIBRARIES} ${MEADECAM_LIBRARIES} ${ZLIB_LIBRARY} ${CMAKE_DL_LIBS} ${CMAKE_THREAD_LIBS_INIT}) + ##################################### if (CMAKE_SYSTEM_PROCESSOR MATCHES "arm*") @@ -140,6 +140,7 @@ target_link_libraries(indi_ogmacam_ccd rt) target_link_libraries(indi_omegonprocam_ccd rt) target_link_libraries(indi_starshootg_ccd rt) target_link_libraries(indi_tscam_ccd rt) +target_link_libraries(indi_meadecam_ccd rt) target_link_libraries(indi_toupcam_wheel rt) target_link_libraries(indi_altair_wheel rt) target_link_libraries(indi_bressercam_wheel rt) @@ -149,6 +150,7 @@ target_link_libraries(indi_ogmacam_wheel rt) target_link_libraries(indi_omegonprocam_wheel rt) target_link_libraries(indi_starshootg_wheel rt) target_link_libraries(indi_tscam_wheel rt) +target_link_libraries(indi_meadecam_wheel rt) endif (CMAKE_SYSTEM_PROCESSOR MATCHES "arm*") install(TARGETS @@ -156,12 +158,12 @@ install(TARGETS indi_altair_ccd indi_bressercam_ccd indi_mallincam_ccd - indi_meadecam_ccd indi_nncam_ccd indi_ogmacam_ccd indi_omegonprocam_ccd indi_starshootg_ccd indi_tscam_ccd + indi_meadecam_ccd indi_toupcam_wheel indi_altair_wheel indi_bressercam_wheel @@ -171,6 +173,7 @@ install(TARGETS indi_omegonprocam_wheel indi_starshootg_wheel indi_tscam_wheel + indi_meadecam_wheel RUNTIME DESTINATION bin) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/indi_toupbase.xml DESTINATION ${INDI_DATA_DIR}) diff --git a/indi-toupbase/indi-toupbase.spec b/indi-toupbase/indi-toupbase.spec index 4e30004e7..69a2c0562 100644 --- a/indi-toupbase/indi-toupbase.spec +++ b/indi-toupbase/indi-toupbase.spec @@ -46,12 +46,12 @@ BuildRequires: libtoupcam BuildRequires: libaltaircam BuildRequires: libbressercam BuildRequires: libmallincam -BuildRequires: libmeadecam BuildRequires: libnncam BuildRequires: libogmacam BuildRequires: libomegonprocam BuildRequires: libstarshootg BuildRequires: libtscam +BuildRequires: libmeadecam %description @@ -86,4 +86,5 @@ make DESTDIR=%{buildroot} install * Sun Jul 19 2020 Jim Howard 1.8.7.git-1 - update to build from git for copr, credit to Sergio Pascual and Christian Dersch for prior work on spec files - added Omegon SDK based toupcam driver. 2022-05-27 +- added Meade SDK based toupcam driver. 2024-07-12 diff --git a/indi-toupbase/indi_toupbase.cpp b/indi-toupbase/indi_toupbase.cpp index d97e5844e..668c9d707 100644 --- a/indi-toupbase/indi_toupbase.cpp +++ b/indi-toupbase/indi_toupbase.cpp @@ -94,10 +94,6 @@ bool ToupBase::initProperties() if (m_Instance->model->flag & CP(FLAG_TEC_ONOFF)) { - TemperatureN[0].min = CP(TEC_TARGET_MIN); - TemperatureN[0].max = CP(TEC_TARGET_MAX); - TemperatureN[0].value = CP(TEC_TARGET_DEF); - /////////////////////////////////////////////////////////////////////////////////// /// Cooler Control /////////////////////////////////////////////////////////////////////////////////// @@ -247,6 +243,12 @@ bool ToupBase::initProperties() IUFillSwitchVector(&m_LowNoiseSP, m_LowNoiseS, 2, getDeviceName(), "TC_LOW_NOISE", "Low Noise Mode", CONTROL_TAB, IP_RW, ISR_1OFMANY, 60, IPS_IDLE); + // Tail Light + IUFillSwitch(&m_TailLightS[INDI_ENABLED], "INDI_ENABLED", "ON", ISS_OFF); + IUFillSwitch(&m_TailLightS[INDI_DISABLED], "INDI_DISABLED", "OFF", ISS_ON); + IUFillSwitchVector(&m_TailLightSP, m_TailLightS, 2, getDeviceName(), "TC_TAILLIGHT", "Tail Light", CONTROL_TAB, IP_RW, + ISR_1OFMANY, 60, IPS_IDLE); + /////////////////////////////////////////////////////////////////////////////////// /// High Fullwell /////////////////////////////////////////////////////////////////////////////////// @@ -330,7 +332,6 @@ bool ToupBase::updateProperties() defineProperty(&m_CoolerSP); defineProperty(m_CoolerNP); } - // Even if there is no cooler, we define temperature property as READ ONLY else if (m_Instance->model->flag & CP(FLAG_GETTEMPERATURE)) { @@ -358,6 +359,9 @@ bool ToupBase::updateProperties() if (m_Instance->model->flag & (CP(FLAG_CG) | CP(FLAG_CGHDR))) defineProperty(&m_GainConversionSP); + if (m_SupportTailLight) + defineProperty(&m_TailLightSP); + // Binning mode defineProperty(&m_BinningModeSP); if (m_MonoCamera == false) @@ -407,6 +411,9 @@ bool ToupBase::updateProperties() if (m_Instance->model->flag & (CP(FLAG_CG) | CP(FLAG_CGHDR))) deleteProperty(m_GainConversionSP.name); + if (m_SupportTailLight) + deleteProperty(m_TailLightSP.name); + deleteProperty(m_BinningModeSP.name); if (m_MonoCamera == false) { @@ -452,6 +459,20 @@ bool ToupBase::Connect() cap |= CCD_HAS_ST4_PORT; SetCCDCapability(cap); + if (m_Instance->model->flag & CP(FLAG_TEC_ONOFF)) + { + int tecRange = 0; + FP(get_Option(m_Handle, CP(OPTION_TECTARGET_RANGE), &tecRange)); + TemperatureN[0].min = TemperatureN[0].value = tecRange & 0xffff; + TemperatureN[0].max = (tecRange >> 16) & 0xffff; + } + + { + int taillight = 0; + HRESULT rc = FP(get_Option(m_Handle, CP(OPTION_TAILLIGHT), &taillight)); + m_SupportTailLight = SUCCEEDED(rc) ? true : false; + } + // Get min/max exposures uint32_t min = 0, max = 0, current = 0; FP(get_ExpTimeRange(m_Handle, &min, &max, ¤t)); @@ -1057,6 +1078,25 @@ bool ToupBase::ISNewSwitch(const char *dev, const char *name, ISState *states, c return true; } + // Tail Light + if (!strcmp(name, m_TailLightSP.name)) + { + int prevIndex = IUFindOnSwitchIndex(&m_TailLightSP); + IUUpdateSwitch(&m_TailLightSP, states, names, n); + HRESULT rc = FP(put_Option(m_Handle, CP(OPTION_TAILLIGHT), m_TailLightS[INDI_ENABLED].s)); + if (SUCCEEDED(rc)) + m_TailLightSP.s = IPS_OK; + else + { + LOGF_ERROR("Failed to set tail light %s. %s", m_TailLightS[INDI_ENABLED].s == ISS_ON ? "ON" : "OFF", errorCodes(rc).c_str()); + m_TailLightSP.s = IPS_ALERT; + IUResetSwitch(&m_TailLightSP); + m_TailLightS[prevIndex].s = ISS_ON; + } + IDSetSwitch(&m_TailLightSP, nullptr); + return true; + } + ////////////////////////////////////////////////////////////////////// /// Auto Exposure ////////////////////////////////////////////////////////////////////// diff --git a/indi-toupbase/indi_toupbase.h b/indi-toupbase/indi_toupbase.h index 3006fd736..28ce0f0ad 100644 --- a/indi-toupbase/indi_toupbase.h +++ b/indi-toupbase/indi_toupbase.h @@ -249,6 +249,10 @@ class ToupBase : public INDI::CCD ISwitchVectorProperty m_HeatSP; ISwitch *m_HeatS { nullptr }; + // Tail Light + ISwitchVectorProperty m_TailLightSP; + ISwitch m_TailLightS[2]; + // Camera Info ITextVectorProperty m_CameraTP; IText m_CameraT[6]; @@ -285,6 +289,7 @@ class ToupBase : public INDI::CCD eTriggerMode m_CurrentTriggerMode = TRIGGER_SOFTWARE; /* By default, we start the camera with software trigger mode, make it standby */ bool m_MonoCamera { false }; + bool m_SupportTailLight { false }; double m_LastTemperature {-100}; double m_LastCoolerPower {-1}; uint8_t m_BitsPerPixel { 8 }; diff --git a/indi-toupbase/indi_toupbase.xml.cmake b/indi-toupbase/indi_toupbase.xml.cmake index 33ddef870..cacdc22ab 100644 --- a/indi-toupbase/indi_toupbase.xml.cmake +++ b/indi-toupbase/indi_toupbase.xml.cmake @@ -17,10 +17,6 @@ indi_mallincam_ccd @TOUPBASE_VERSION_MAJOR@.@TOUPBASE_VERSION_MINOR@ - - indi_meadecam_ccd - @TOUPBASE_VERSION_MAJOR@.@TOUPBASE_VERSION_MINOR@ - indi_nncam_ccd @TOUPBASE_VERSION_MAJOR@.@TOUPBASE_VERSION_MINOR@ @@ -41,6 +37,10 @@ indi_tscam_ccd @TOUPBASE_VERSION_MAJOR@.@TOUPBASE_VERSION_MINOR@ + + indi_meadecam_ccd + @TOUPBASE_VERSION_MAJOR@.@TOUPBASE_VERSION_MINOR@ + @@ -79,5 +79,9 @@ indi_tscam_wheel @TOUPBASE_VERSION_MAJOR@.@TOUPBASE_VERSION_MINOR@ + + indi_meadecam_wheel + @TOUPBASE_VERSION_MAJOR@.@TOUPBASE_VERSION_MINOR@ + diff --git a/libaltaircam/CMakeLists.txt b/libaltaircam/CMakeLists.txt index eda6f2eab..7068d4cf7 100644 --- a/libaltaircam/CMakeLists.txt +++ b/libaltaircam/CMakeLists.txt @@ -1,8 +1,8 @@ cmake_minimum_required(VERSION 3.16) project (libaltaircam) -set (LIBALTAIRCAM_VERSION "55.25633") -set (LIBALTAIRCAM_SOVERSION "55") +set (LIBALTAIRCAM_VERSION "56.26054") +set (LIBALTAIRCAM_SOVERSION "56") list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules/") list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../cmake_modules/") diff --git a/libaltaircam/altaircam.h b/libaltaircam/altaircam.h index 8c9dac485..1b00c81c8 100644 --- a/libaltaircam/altaircam.h +++ b/libaltaircam/altaircam.h @@ -1,7 +1,7 @@ #ifndef __altaircam_h__ #define __altaircam_h__ -/* Version: 55.25633.20240519 */ +/* Version: 56.26054.20240715 */ /* Platform & Architecture: (1) Win32: @@ -92,21 +92,21 @@ extern "C" { /* */ /********************************************************************************/ #if defined(ALTAIRCAM_HRESULT_ERRORCODE_NEEDED) -#define S_OK 0x00000000 /* Success */ -#define S_FALSE 0x00000001 /* Yet another success */ -#define E_UNEXPECTED 0x8000ffff /* Catastrophic failure */ -#define E_NOTIMPL 0x80004001 /* Not supported or not implemented */ -#define E_NOINTERFACE 0x80004002 -#define E_ACCESSDENIED 0x80070005 /* Permission denied */ -#define E_OUTOFMEMORY 0x8007000e /* Out of memory */ -#define E_INVALIDARG 0x80070057 /* One or more arguments are not valid */ -#define E_POINTER 0x80004003 /* Pointer that is not valid */ -#define E_FAIL 0x80004005 /* Generic failure */ -#define E_WRONG_THREAD 0x8001010e /* Call function in the wrong thread */ -#define E_GEN_FAILURE 0x8007001f /* Device not functioning */ -#define E_BUSY 0x800700aa /* The requested resource is in use */ -#define E_PENDING 0x8000000a /* The data necessary to complete this operation is not yet available */ -#define E_TIMEOUT 0x8001011f /* This operation returned because the timeout period expired */ +#define S_OK (HRESULT)(0x00000000) /* Success */ +#define S_FALSE (HRESULT)(0x00000001) /* Yet another success */ +#define E_UNEXPECTED (HRESULT)(0x8000ffff) /* Catastrophic failure */ +#define E_NOTIMPL (HRESULT)(0x80004001) /* Not supported or not implemented */ +#define E_NOINTERFACE (HRESULT)(0x80004002) +#define E_ACCESSDENIED (HRESULT)(0x80070005) /* Permission denied */ +#define E_OUTOFMEMORY (HRESULT)(0x8007000e) /* Out of memory */ +#define E_INVALIDARG (HRESULT)(0x80070057) /* One or more arguments are not valid */ +#define E_POINTER (HRESULT)(0x80004003) /* Pointer that is not valid */ +#define E_FAIL (HRESULT)(0x80004005) /* Generic failure */ +#define E_WRONG_THREAD (HRESULT)(0x8001010e) /* Call function in the wrong thread */ +#define E_GEN_FAILURE (HRESULT)(0x8007001f) /* Device not functioning */ +#define E_BUSY (HRESULT)(0x800700aa) /* The requested resource is in use */ +#define E_PENDING (HRESULT)(0x8000000a) /* The data necessary to complete this operation is not yet available */ +#define E_TIMEOUT (HRESULT)(0x8001011f) /* This operation returned because the timeout period expired */ #endif /* handle */ @@ -229,9 +229,6 @@ typedef struct Altaircam_t { int unused; } *HAltaircam; #define ALTAIRCAM_DENOISE_DEF 0 /* denoise */ #define ALTAIRCAM_DENOISE_MIN 0 /* denoise */ #define ALTAIRCAM_DENOISE_MAX 100 /* denoise */ -#define ALTAIRCAM_TEC_TARGET_MIN (-500) /* TEC target: -50.0 degrees Celsius */ -#define ALTAIRCAM_TEC_TARGET_DEF 100 /* 10.0 degrees Celsius */ -#define ALTAIRCAM_TEC_TARGET_MAX 400 /* TEC target: 40.0 degrees Celsius */ #define ALTAIRCAM_HEARTBEAT_MIN 100 /* millisecond */ #define ALTAIRCAM_HEARTBEAT_MAX 10000 /* millisecond */ #define ALTAIRCAM_AE_PERCENT_MIN 0 /* auto exposure percent; 0 or 100 => full roi average, means "disabled" */ @@ -239,12 +236,12 @@ typedef struct Altaircam_t { int unused; } *HAltaircam; #define ALTAIRCAM_AE_PERCENT_DEF 10 /* auto exposure percent: enabled, percentage = 10% */ #define ALTAIRCAM_NOPACKET_TIMEOUT_MIN 500 /* no packet timeout minimum: 500ms */ #define ALTAIRCAM_NOFRAME_TIMEOUT_MIN 500 /* no frame timeout minimum: 500ms */ -#define ALTAIRCAM_DYNAMIC_DEFECT_T1_MIN 10 /* dynamic defect pixel correction, threshold, means: 1.0 */ -#define ALTAIRCAM_DYNAMIC_DEFECT_T1_MAX 100 /* means: 10.0 */ -#define ALTAIRCAM_DYNAMIC_DEFECT_T1_DEF 13 /* means: 1.3 */ -#define ALTAIRCAM_DYNAMIC_DEFECT_T2_MIN 0 /* dynamic defect pixel correction, value, means: 0.00 */ -#define ALTAIRCAM_DYNAMIC_DEFECT_T2_MAX 100 /* means: 1.00 */ -#define ALTAIRCAM_DYNAMIC_DEFECT_T2_DEF 100 +#define ALTAIRCAM_DYNAMIC_DEFECT_T1_MIN 0 /* dynamic defect pixel correction, dead pixel ratio: the smaller the dead ratio is, the more stringent the conditions for processing dead pixels are, and fewer pixels will be processed */ +#define ALTAIRCAM_DYNAMIC_DEFECT_T1_MAX 100 /* means: 1.0 */ +#define ALTAIRCAM_DYNAMIC_DEFECT_T1_DEF 90 /* means: 0.9 */ +#define ALTAIRCAM_DYNAMIC_DEFECT_T2_MIN 0 /* dynamic defect pixel correction, hot pixel ratio: the smaller the hot ratio is, the more stringent the conditions for processing hot pixels are, and fewer pixels will be processed */ +#define ALTAIRCAM_DYNAMIC_DEFECT_T2_MAX 100 +#define ALTAIRCAM_DYNAMIC_DEFECT_T2_DEF 90 #define ALTAIRCAM_HDR_K_MIN 1 /* HDR synthesize */ #define ALTAIRCAM_HDR_K_MAX 25500 #define ALTAIRCAM_HDR_B_MIN 0 @@ -289,7 +286,7 @@ typedef struct { } AltaircamDeviceV2; /* device instance for enumerating */ /* - get the version of this dll/so/dylib, which is: 55.25633.20240519 + get the version of this dll/so/dylib, which is: 56.26054.20240715 */ #if defined(_WIN32) ALTAIRCAM_API(const wchar_t*) Altaircam_Version(); @@ -821,7 +818,7 @@ ALTAIRCAM_API(HRESULT) Altaircam_read_EEPROM(HAltaircam h, unsigned addr, unsig ALTAIRCAM_API(HRESULT) Altaircam_read_Pipe(HAltaircam h, unsigned pipeId, void* pBuffer, unsigned nBufferLen); ALTAIRCAM_API(HRESULT) Altaircam_write_Pipe(HAltaircam h, unsigned pipeId, const void* pBuffer, unsigned nBufferLen); ALTAIRCAM_API(HRESULT) Altaircam_feed_Pipe(HAltaircam h, unsigned pipeId); - + #define ALTAIRCAM_OPTION_NOFRAME_TIMEOUT 0x01 /* no frame timeout: 0 => disable, positive value (>= ALTAIRCAM_NOFRAME_TIMEOUT_MIN) => timeout milliseconds. default: disable */ #define ALTAIRCAM_OPTION_THREAD_PRIORITY 0x02 /* set the priority of the internal thread which grab data from the usb device. Win: iValue: 0 => THREAD_PRIORITY_NORMAL; 1 => THREAD_PRIORITY_ABOVE_NORMAL; 2 => THREAD_PRIORITY_HIGHEST; 3 => THREAD_PRIORITY_TIME_CRITICAL; default: 1; see: https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-setthreadpriority @@ -847,7 +844,7 @@ ALTAIRCAM_API(HRESULT) Altaircam_feed_Pipe(HAltaircam h, unsigned pipeId); 3: Gain Preferred default value: 1 */ -#define ALTAIRCAM_OPTION_FRAMERATE 0x11 /* limit the frame rate, range=[0, 63], the default value 0 means no limit */ +#define ALTAIRCAM_OPTION_FRAMERATE 0x11 /* limit the frame rate, the default value 0 means no limit */ #define ALTAIRCAM_OPTION_DEMOSAIC 0x12 /* demosaic method for both video and still image: BILINEAR = 0, VNG(Variable Number of Gradients) = 1, PPG(Patterned Pixel Grouping) = 2, AHD(Adaptive Homogeneity Directed) = 3, EA(Edge Aware) = 4, see https://en.wikipedia.org/wiki/Demosaicing, default value: 0 */ #define ALTAIRCAM_OPTION_DEMOSAIC_VIDEO 0x13 /* demosaic method for video */ #define ALTAIRCAM_OPTION_DEMOSAIC_STILL 0x14 /* demosaic method for still image */ @@ -1007,8 +1004,8 @@ ALTAIRCAM_API(HRESULT) Altaircam_feed_Pipe(HAltaircam h, unsigned pipeId); */ #define ALTAIRCAM_OPTION_HIGH_FULLWELL 0x55 /* high fullwell capacity: 0 => disable, 1 => enable */ #define ALTAIRCAM_OPTION_DYNAMIC_DEFECT 0x56 /* dynamic defect pixel correction: - threshold, t1: (high 16 bits): [10, 100], means: [1.0, 10.0] - value, t2: (low 16 bits): [0, 100], means: [0.00, 1.00] + dead pixel ratio, t1: (high 16 bits): [0, 100], means: [0.0, 1.0] + hot pixel ratio, t2: (low 16 bits): [0, 100], means: [0.0, 1.0] */ #define ALTAIRCAM_OPTION_HDR_KB 0x57 /* HDR synthesize K (high 16 bits): [1, 25500] @@ -1021,8 +1018,8 @@ ALTAIRCAM_API(HRESULT) Altaircam_feed_Pipe(HAltaircam h, unsigned pipeId); */ #define ALTAIRCAM_OPTION_GIGETIMEOUT 0x5a /* For GigE cameras, the application periodically sends heartbeat signals to the camera to keep the connection to the camera alive. If the camera doesn't receive heartbeat signals within the time period specified by the heartbeat timeout counter, the camera resets the connection. - When the application is stopped by the debugger, the application cannot create the heartbeat signals - 0 => auto: when the camera is opened, disable if debugger is present or enable if no debugger is present + When the application is stopped by the debugger, the application cannot send the heartbeat signals + 0 => auto: when the camera is opened, enable if no debugger is present or disable if debugger is present 1 => enable 2 => disable default: auto @@ -1063,6 +1060,9 @@ ALTAIRCAM_API(HRESULT) Altaircam_feed_Pipe(HAltaircam h, unsigned pipeId); 21 => twilight 22 => twilight_shifted 23 => turbo + 24 => red + 25 => green + 26 => blue */ #define ALTAIRCAM_OPTION_LOW_POWERCONSUMPTION 0x66 /* Low Power Consumption: 0 => disable, 1 => enable */ #define ALTAIRCAM_OPTION_FPNC 0x67 /* Fix Pattern Noise Correction @@ -1092,6 +1092,7 @@ ALTAIRCAM_API(HRESULT) Altaircam_feed_Pipe(HAltaircam h, unsigned pipeId); n>0: every n millisecond(s) n<0: every -n frame */ +#define ALTAIRCAM_OPTION_TECTARGET_RANGE 0x6d /* TEC target range: min(low 16 bits) = (short)(val & 0xffff), max(high 16 bits) = (short)((val >> 16) & 0xffff) */ /* pixel format */ #define ALTAIRCAM_PIXELFORMAT_RAW8 0x00 @@ -1137,97 +1138,100 @@ ALTAIRCAM_API(HRESULT) Altaircam_put_RoiN(HAltaircam h, unsigned xOffset[], uns ALTAIRCAM_API(HRESULT) Altaircam_put_XY(HAltaircam h, int x, int y); -#define ALTAIRCAM_IOCONTROLTYPE_GET_SUPPORTEDMODE 0x01 /* 0x01 => Input, 0x02 => Output, (0x01 | 0x02) => support both Input and Output */ -#define ALTAIRCAM_IOCONTROLTYPE_GET_GPIODIR 0x03 /* 0x00 => Input, 0x01 => Output */ -#define ALTAIRCAM_IOCONTROLTYPE_SET_GPIODIR 0x04 -#define ALTAIRCAM_IOCONTROLTYPE_GET_FORMAT 0x05 /* - 0x00 => not connected - 0x01 => Tri-state: Tri-state mode (Not driven) - 0x02 => TTL: TTL level signals - 0x03 => LVDS: LVDS level signals - 0x04 => RS422: RS422 level signals - 0x05 => Opto-coupled - */ -#define ALTAIRCAM_IOCONTROLTYPE_SET_FORMAT 0x06 -#define ALTAIRCAM_IOCONTROLTYPE_GET_OUTPUTINVERTER 0x07 /* boolean, only support output signal */ -#define ALTAIRCAM_IOCONTROLTYPE_SET_OUTPUTINVERTER 0x08 -#define ALTAIRCAM_IOCONTROLTYPE_GET_INPUTACTIVATION 0x09 /* 0x00 => Rising edge, 0x01 => Falling edge, 0x02 => Level high, 0x03 => Level low */ -#define ALTAIRCAM_IOCONTROLTYPE_SET_INPUTACTIVATION 0x0a -#define ALTAIRCAM_IOCONTROLTYPE_GET_DEBOUNCERTIME 0x0b /* debouncer time in microseconds, range: [0, 20000] */ -#define ALTAIRCAM_IOCONTROLTYPE_SET_DEBOUNCERTIME 0x0c -#define ALTAIRCAM_IOCONTROLTYPE_GET_TRIGGERSOURCE 0x0d /* - 0x00 => Opto-isolated input - 0x01 => GPIO0 - 0x02 => GPIO1 - 0x03 => Counter - 0x04 => PWM - 0x05 => Software - */ -#define ALTAIRCAM_IOCONTROLTYPE_SET_TRIGGERSOURCE 0x0e -#define ALTAIRCAM_IOCONTROLTYPE_GET_TRIGGERDELAY 0x0f /* Trigger delay time in microseconds, range: [0, 5000000] */ -#define ALTAIRCAM_IOCONTROLTYPE_SET_TRIGGERDELAY 0x10 -#define ALTAIRCAM_IOCONTROLTYPE_GET_BURSTCOUNTER 0x11 /* Burst Counter, range: [1 ~ 65535] */ -#define ALTAIRCAM_IOCONTROLTYPE_SET_BURSTCOUNTER 0x12 -#define ALTAIRCAM_IOCONTROLTYPE_GET_COUNTERSOURCE 0x13 /* 0x00 => Opto-isolated input, 0x01 => GPIO0, 0x02 => GPIO1 */ -#define ALTAIRCAM_IOCONTROLTYPE_SET_COUNTERSOURCE 0x14 -#define ALTAIRCAM_IOCONTROLTYPE_GET_COUNTERVALUE 0x15 /* Counter Value, range: [1 ~ 65535] */ -#define ALTAIRCAM_IOCONTROLTYPE_SET_COUNTERVALUE 0x16 -#define ALTAIRCAM_IOCONTROLTYPE_SET_RESETCOUNTER 0x18 -#define ALTAIRCAM_IOCONTROLTYPE_GET_PWM_FREQ 0x19 -#define ALTAIRCAM_IOCONTROLTYPE_SET_PWM_FREQ 0x1a -#define ALTAIRCAM_IOCONTROLTYPE_GET_PWM_DUTYRATIO 0x1b -#define ALTAIRCAM_IOCONTROLTYPE_SET_PWM_DUTYRATIO 0x1c -#define ALTAIRCAM_IOCONTROLTYPE_GET_PWMSOURCE 0x1d /* 0x00 => Opto-isolated input, 0x01 => GPIO0, 0x02 => GPIO1 */ -#define ALTAIRCAM_IOCONTROLTYPE_SET_PWMSOURCE 0x1e -#define ALTAIRCAM_IOCONTROLTYPE_GET_OUTPUTMODE 0x1f /* - 0x00 => Frame Trigger Wait - 0x01 => Exposure Active - 0x02 => Strobe - 0x03 => User output - 0x04 => Counter Output - 0x05 => Timer Output - */ -#define ALTAIRCAM_IOCONTROLTYPE_SET_OUTPUTMODE 0x20 -#define ALTAIRCAM_IOCONTROLTYPE_GET_STROBEDELAYMODE 0x21 /* boolean, 0 => pre-delay, 1 => delay; compared to exposure active signal */ -#define ALTAIRCAM_IOCONTROLTYPE_SET_STROBEDELAYMODE 0x22 -#define ALTAIRCAM_IOCONTROLTYPE_GET_STROBEDELAYTIME 0x23 /* Strobe delay or pre-delay time in microseconds, range: [0, 5000000] */ -#define ALTAIRCAM_IOCONTROLTYPE_SET_STROBEDELAYTIME 0x24 -#define ALTAIRCAM_IOCONTROLTYPE_GET_STROBEDURATION 0x25 /* Strobe duration time in microseconds, range: [0, 5000000] */ -#define ALTAIRCAM_IOCONTROLTYPE_SET_STROBEDURATION 0x26 -#define ALTAIRCAM_IOCONTROLTYPE_GET_USERVALUE 0x27 /* - bit0 => Opto-isolated output - bit1 => GPIO0 output - bit2 => GPIO1 output - */ -#define ALTAIRCAM_IOCONTROLTYPE_SET_USERVALUE 0x28 -#define ALTAIRCAM_IOCONTROLTYPE_GET_UART_ENABLE 0x29 /* enable: 1 => on; 0 => off */ -#define ALTAIRCAM_IOCONTROLTYPE_SET_UART_ENABLE 0x2a -#define ALTAIRCAM_IOCONTROLTYPE_GET_UART_BAUDRATE 0x2b /* baud rate: 0 => 9600; 1 => 19200; 2 => 38400; 3 => 57600; 4 => 115200 */ -#define ALTAIRCAM_IOCONTROLTYPE_SET_UART_BAUDRATE 0x2c -#define ALTAIRCAM_IOCONTROLTYPE_GET_UART_LINEMODE 0x2d /* line mode: 0 => TX(GPIO_0)/RX(GPIO_1); 1 => TX(GPIO_1)/RX(GPIO_0) */ -#define ALTAIRCAM_IOCONTROLTYPE_SET_UART_LINEMODE 0x2e -#define ALTAIRCAM_IOCONTROLTYPE_GET_EXPO_ACTIVE_MODE 0x2f /* exposure time signal: 0 => specified line, 1 => common exposure time */ -#define ALTAIRCAM_IOCONTROLTYPE_SET_EXPO_ACTIVE_MODE 0x30 -#define ALTAIRCAM_IOCONTROLTYPE_GET_EXPO_START_LINE 0x31 /* exposure start line, default: 0 */ -#define ALTAIRCAM_IOCONTROLTYPE_SET_EXPO_START_LINE 0x32 -#define ALTAIRCAM_IOCONTROLTYPE_GET_EXPO_END_LINE 0x33 /* exposure end line, default: 0 - end line must be no less than start line - */ -#define ALTAIRCAM_IOCONTROLTYPE_SET_EXPO_END_LINE 0x34 -#define ALTAIRCAM_IOCONTROLTYPE_GET_EXEVT_ACTIVE_MODE 0x35 /* exposure event: 0 => specified line, 1 => common exposure time */ -#define ALTAIRCAM_IOCONTROLTYPE_SET_EXEVT_ACTIVE_MODE 0x36 -#define ALTAIRCAM_IOCONTROLTYPE_GET_OUTPUTCOUNTERVALUE 0x37 /* Output Counter Value, range: [0 ~ 65535] */ -#define ALTAIRCAM_IOCONTROLTYPE_SET_OUTPUTCOUNTERVALUE 0x38 -#define ALTAIRCAM_IOCONTROLTYPE_SET_OUTPUT_PAUSE 0x3a /* Output pause: 1 => puase, 0 => unpause */ -#define ALTAIRCAM_IOCONTROLTYPE_GET_INPUT_STATE 0x3c /* Input state: 0 (low level) or 1 (high level) */ -#define ALTAIRCAM_IOCONTROLTYPE_GET_USER_PULSE_HIGH 0x3e /* User pulse high level time: us */ -#define ALTAIRCAM_IOCONTROLTYPE_SET_USER_PULSE_HIGH 0x3f -#define ALTAIRCAM_IOCONTROLTYPE_GET_USER_PULSE_LOW 0x40 /* User pulse low level time: us */ -#define ALTAIRCAM_IOCONTROLTYPE_SET_USER_PULSE_LOW 0x41 -#define ALTAIRCAM_IOCONTROLTYPE_GET_USER_PULSE_NUMBER 0x42 /* User pulse number: default 0 */ -#define ALTAIRCAM_IOCONTROLTYPE_SET_USER_PULSE_NUMBER 0x43 - -#define ALTAIRCAM_IOCONTROL_DELAYTIME_MAX (5 * 1000 * 1000) +#define ALTAIRCAM_IOCONTROLTYPE_GET_SUPPORTEDMODE 0x01 /* 0x01 => Input, 0x02 => Output, (0x01 | 0x02) => support both Input and Output */ +#define ALTAIRCAM_IOCONTROLTYPE_GET_GPIODIR 0x03 /* 0x00 => Input, 0x01 => Output */ +#define ALTAIRCAM_IOCONTROLTYPE_SET_GPIODIR 0x04 +#define ALTAIRCAM_IOCONTROLTYPE_GET_FORMAT 0x05 /* + 0x00 => not connected + 0x01 => Tri-state: Tri-state mode (Not driven) + 0x02 => TTL: TTL level signals + 0x03 => LVDS: LVDS level signals + 0x04 => RS422: RS422 level signals + 0x05 => Opto-coupled + */ +#define ALTAIRCAM_IOCONTROLTYPE_SET_FORMAT 0x06 +#define ALTAIRCAM_IOCONTROLTYPE_GET_OUTPUTINVERTER 0x07 /* boolean, only support output signal */ +#define ALTAIRCAM_IOCONTROLTYPE_SET_OUTPUTINVERTER 0x08 +#define ALTAIRCAM_IOCONTROLTYPE_GET_INPUTACTIVATION 0x09 /* 0x00 => Rising edge, 0x01 => Falling edge, 0x02 => Level high, 0x03 => Level low */ +#define ALTAIRCAM_IOCONTROLTYPE_SET_INPUTACTIVATION 0x0a +#define ALTAIRCAM_IOCONTROLTYPE_GET_DEBOUNCERTIME 0x0b /* debouncer time in microseconds, range: [0, 20000] */ +#define ALTAIRCAM_IOCONTROLTYPE_SET_DEBOUNCERTIME 0x0c +#define ALTAIRCAM_IOCONTROLTYPE_GET_TRIGGERSOURCE 0x0d /* + 0x00 => Opto-isolated input + 0x01 => GPIO0 + 0x02 => GPIO1 + 0x03 => Counter + 0x04 => PWM + 0x05 => Software + */ +#define ALTAIRCAM_IOCONTROLTYPE_SET_TRIGGERSOURCE 0x0e +#define ALTAIRCAM_IOCONTROLTYPE_GET_TRIGGERDELAY 0x0f /* Trigger delay time in microseconds, range: [0, 5000000] */ +#define ALTAIRCAM_IOCONTROLTYPE_SET_TRIGGERDELAY 0x10 +#define ALTAIRCAM_IOCONTROLTYPE_GET_BURSTCOUNTER 0x11 /* Burst Counter, range: [1 ~ 65535] */ +#define ALTAIRCAM_IOCONTROLTYPE_SET_BURSTCOUNTER 0x12 +#define ALTAIRCAM_IOCONTROLTYPE_GET_COUNTERSOURCE 0x13 /* 0x00 => Opto-isolated input, 0x01 => GPIO0, 0x02 => GPIO1 */ +#define ALTAIRCAM_IOCONTROLTYPE_SET_COUNTERSOURCE 0x14 +#define ALTAIRCAM_IOCONTROLTYPE_GET_COUNTERVALUE 0x15 /* Counter Value, range: [1 ~ 65535] */ +#define ALTAIRCAM_IOCONTROLTYPE_SET_COUNTERVALUE 0x16 +#define ALTAIRCAM_IOCONTROLTYPE_SET_RESETCOUNTER 0x18 +#define ALTAIRCAM_IOCONTROLTYPE_GET_PWM_FREQ 0x19 +#define ALTAIRCAM_IOCONTROLTYPE_SET_PWM_FREQ 0x1a +#define ALTAIRCAM_IOCONTROLTYPE_GET_PWM_DUTYRATIO 0x1b +#define ALTAIRCAM_IOCONTROLTYPE_SET_PWM_DUTYRATIO 0x1c +#define ALTAIRCAM_IOCONTROLTYPE_GET_PWMSOURCE 0x1d /* 0x00 => Opto-isolated input, 0x01 => GPIO0, 0x02 => GPIO1 */ +#define ALTAIRCAM_IOCONTROLTYPE_SET_PWMSOURCE 0x1e +#define ALTAIRCAM_IOCONTROLTYPE_GET_OUTPUTMODE 0x1f /* + 0x00 => Frame Trigger Wait + 0x01 => Exposure Active + 0x02 => Strobe + 0x03 => User output + 0x04 => Counter Output + 0x05 => Timer Output + */ +#define ALTAIRCAM_IOCONTROLTYPE_SET_OUTPUTMODE 0x20 +#define ALTAIRCAM_IOCONTROLTYPE_GET_STROBEDELAYMODE 0x21 /* boolean, 0 => pre-delay, 1 => delay; compared to exposure active signal */ +#define ALTAIRCAM_IOCONTROLTYPE_SET_STROBEDELAYMODE 0x22 +#define ALTAIRCAM_IOCONTROLTYPE_GET_STROBEDELAYTIME 0x23 /* Strobe delay or pre-delay time in microseconds, range: [0, 5000000] */ +#define ALTAIRCAM_IOCONTROLTYPE_SET_STROBEDELAYTIME 0x24 +#define ALTAIRCAM_IOCONTROLTYPE_GET_STROBEDURATION 0x25 /* Strobe duration time in microseconds, range: [0, 5000000] */ +#define ALTAIRCAM_IOCONTROLTYPE_SET_STROBEDURATION 0x26 +#define ALTAIRCAM_IOCONTROLTYPE_GET_USERVALUE 0x27 /* + bit0 => Opto-isolated output + bit1 => GPIO0 output + bit2 => GPIO1 output + */ +#define ALTAIRCAM_IOCONTROLTYPE_SET_USERVALUE 0x28 +#define ALTAIRCAM_IOCONTROLTYPE_GET_UART_ENABLE 0x29 /* enable: 1 => on; 0 => off */ +#define ALTAIRCAM_IOCONTROLTYPE_SET_UART_ENABLE 0x2a +#define ALTAIRCAM_IOCONTROLTYPE_GET_UART_BAUDRATE 0x2b /* baud rate: 0 => 9600; 1 => 19200; 2 => 38400; 3 => 57600; 4 => 115200 */ +#define ALTAIRCAM_IOCONTROLTYPE_SET_UART_BAUDRATE 0x2c +#define ALTAIRCAM_IOCONTROLTYPE_GET_UART_LINEMODE 0x2d /* line mode: 0 => TX(GPIO_0)/RX(GPIO_1); 1 => TX(GPIO_1)/RX(GPIO_0) */ +#define ALTAIRCAM_IOCONTROLTYPE_SET_UART_LINEMODE 0x2e +#define ALTAIRCAM_IOCONTROLTYPE_GET_EXPO_ACTIVE_MODE 0x2f /* exposure time signal: 0 => specified line, 1 => common exposure time */ +#define ALTAIRCAM_IOCONTROLTYPE_SET_EXPO_ACTIVE_MODE 0x30 +#define ALTAIRCAM_IOCONTROLTYPE_GET_EXPO_START_LINE 0x31 /* exposure start line, default: 0 */ +#define ALTAIRCAM_IOCONTROLTYPE_SET_EXPO_START_LINE 0x32 +#define ALTAIRCAM_IOCONTROLTYPE_GET_EXPO_END_LINE 0x33 /* exposure end line, default: 0 + end line must be no less than start line + */ +#define ALTAIRCAM_IOCONTROLTYPE_SET_EXPO_END_LINE 0x34 +#define ALTAIRCAM_IOCONTROLTYPE_GET_EXEVT_ACTIVE_MODE 0x35 /* exposure event: 0 => specified line, 1 => common exposure time */ +#define ALTAIRCAM_IOCONTROLTYPE_SET_EXEVT_ACTIVE_MODE 0x36 +#define ALTAIRCAM_IOCONTROLTYPE_GET_OUTPUTCOUNTERVALUE 0x37 /* Output Counter Value, range: [0 ~ 65535] */ +#define ALTAIRCAM_IOCONTROLTYPE_SET_OUTPUTCOUNTERVALUE 0x38 +#define ALTAIRCAM_IOCONTROLTYPE_SET_OUTPUT_PAUSE 0x3a /* Output pause: 1 => puase, 0 => unpause */ +#define ALTAIRCAM_IOCONTROLTYPE_GET_INPUT_STATE 0x3b /* Input state: 0 (low level) or 1 (high level) */ +#define ALTAIRCAM_IOCONTROLTYPE_GET_USER_PULSE_HIGH 0x3d /* User pulse high level time: us */ +#define ALTAIRCAM_IOCONTROLTYPE_SET_USER_PULSE_HIGH 0x3e +#define ALTAIRCAM_IOCONTROLTYPE_GET_USER_PULSE_LOW 0x3f /* User pulse low level time: us */ +#define ALTAIRCAM_IOCONTROLTYPE_SET_USER_PULSE_LOW 0x40 +#define ALTAIRCAM_IOCONTROLTYPE_GET_USER_PULSE_NUMBER 0x41 /* User pulse number: default 0 */ +#define ALTAIRCAM_IOCONTROLTYPE_SET_USER_PULSE_NUMBER 0x42 +#define ALTAIRCAM_IOCONTROLTYPE_GET_EXTERNAL_TRIGGER_NUMBER 0x43 /* External trigger number */ +#define ALTAIRCAM_IOCONTROLTYPE_GET_DEBOUNCER_TRIGGER_NUMBER 0x45 /* Trigger signal number after debounce */ +#define ALTAIRCAM_IOCONTROLTYPE_GET_EFFECTIVE_TRIGGER_NUMBER 0x47 /* Effective trigger signal number */ + +#define ALTAIRCAM_IOCONTROL_DELAYTIME_MAX (5 * 1000 * 1000) /* ioLineNumber: diff --git a/libaltaircam/arm64/libaltaircam.bin b/libaltaircam/arm64/libaltaircam.bin index 9bde5e1a1..73f300008 100644 Binary files a/libaltaircam/arm64/libaltaircam.bin and b/libaltaircam/arm64/libaltaircam.bin differ diff --git a/libaltaircam/armhf/libaltaircam.bin b/libaltaircam/armhf/libaltaircam.bin index 1e20194bf..f41d20e93 100644 Binary files a/libaltaircam/armhf/libaltaircam.bin and b/libaltaircam/armhf/libaltaircam.bin differ diff --git a/libaltaircam/mac/libaltaircam.bin b/libaltaircam/mac/libaltaircam.bin index 3b99a22e7..bc29a4015 100644 Binary files a/libaltaircam/mac/libaltaircam.bin and b/libaltaircam/mac/libaltaircam.bin differ diff --git a/libaltaircam/x64/libaltaircam.bin b/libaltaircam/x64/libaltaircam.bin index 2c49c5b85..fefaf6205 100644 Binary files a/libaltaircam/x64/libaltaircam.bin and b/libaltaircam/x64/libaltaircam.bin differ diff --git a/libbressercam/CMakeLists.txt b/libbressercam/CMakeLists.txt index e48fcb4ed..392bd3821 100644 --- a/libbressercam/CMakeLists.txt +++ b/libbressercam/CMakeLists.txt @@ -1,8 +1,8 @@ cmake_minimum_required(VERSION 3.16) project (libbressercam) -set (LIBBRESSERCAM_VERSION "55.25633") -set (LIBBRESSERCAM_SOVERSION "55") +set (LIBBRESSERCAM_VERSION "56.26054") +set (LIBBRESSERCAM_SOVERSION "56") list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules/") list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../cmake_modules/") diff --git a/libbressercam/arm64/libbressercam.bin b/libbressercam/arm64/libbressercam.bin index f58622fee..5e87dd32f 100644 Binary files a/libbressercam/arm64/libbressercam.bin and b/libbressercam/arm64/libbressercam.bin differ diff --git a/libbressercam/armhf/libbressercam.bin b/libbressercam/armhf/libbressercam.bin index 0c614bcc5..b5059ee53 100644 Binary files a/libbressercam/armhf/libbressercam.bin and b/libbressercam/armhf/libbressercam.bin differ diff --git a/libbressercam/bressercam.h b/libbressercam/bressercam.h index d65ceae96..a28fe0389 100644 --- a/libbressercam/bressercam.h +++ b/libbressercam/bressercam.h @@ -1,7 +1,7 @@ #ifndef __bressercam_h__ #define __bressercam_h__ -/* Version: 55.25633.20240519 */ +/* Version: 56.26054.20240715 */ /* Platform & Architecture: (1) Win32: @@ -92,21 +92,21 @@ extern "C" { /* */ /********************************************************************************/ #if defined(BRESSERCAM_HRESULT_ERRORCODE_NEEDED) -#define S_OK 0x00000000 /* Success */ -#define S_FALSE 0x00000001 /* Yet another success */ -#define E_UNEXPECTED 0x8000ffff /* Catastrophic failure */ -#define E_NOTIMPL 0x80004001 /* Not supported or not implemented */ -#define E_NOINTERFACE 0x80004002 -#define E_ACCESSDENIED 0x80070005 /* Permission denied */ -#define E_OUTOFMEMORY 0x8007000e /* Out of memory */ -#define E_INVALIDARG 0x80070057 /* One or more arguments are not valid */ -#define E_POINTER 0x80004003 /* Pointer that is not valid */ -#define E_FAIL 0x80004005 /* Generic failure */ -#define E_WRONG_THREAD 0x8001010e /* Call function in the wrong thread */ -#define E_GEN_FAILURE 0x8007001f /* Device not functioning */ -#define E_BUSY 0x800700aa /* The requested resource is in use */ -#define E_PENDING 0x8000000a /* The data necessary to complete this operation is not yet available */ -#define E_TIMEOUT 0x8001011f /* This operation returned because the timeout period expired */ +#define S_OK (HRESULT)(0x00000000) /* Success */ +#define S_FALSE (HRESULT)(0x00000001) /* Yet another success */ +#define E_UNEXPECTED (HRESULT)(0x8000ffff) /* Catastrophic failure */ +#define E_NOTIMPL (HRESULT)(0x80004001) /* Not supported or not implemented */ +#define E_NOINTERFACE (HRESULT)(0x80004002) +#define E_ACCESSDENIED (HRESULT)(0x80070005) /* Permission denied */ +#define E_OUTOFMEMORY (HRESULT)(0x8007000e) /* Out of memory */ +#define E_INVALIDARG (HRESULT)(0x80070057) /* One or more arguments are not valid */ +#define E_POINTER (HRESULT)(0x80004003) /* Pointer that is not valid */ +#define E_FAIL (HRESULT)(0x80004005) /* Generic failure */ +#define E_WRONG_THREAD (HRESULT)(0x8001010e) /* Call function in the wrong thread */ +#define E_GEN_FAILURE (HRESULT)(0x8007001f) /* Device not functioning */ +#define E_BUSY (HRESULT)(0x800700aa) /* The requested resource is in use */ +#define E_PENDING (HRESULT)(0x8000000a) /* The data necessary to complete this operation is not yet available */ +#define E_TIMEOUT (HRESULT)(0x8001011f) /* This operation returned because the timeout period expired */ #endif /* handle */ @@ -229,9 +229,6 @@ typedef struct Bressercam_t { int unused; } *HBressercam; #define BRESSERCAM_DENOISE_DEF 0 /* denoise */ #define BRESSERCAM_DENOISE_MIN 0 /* denoise */ #define BRESSERCAM_DENOISE_MAX 100 /* denoise */ -#define BRESSERCAM_TEC_TARGET_MIN (-500) /* TEC target: -50.0 degrees Celsius */ -#define BRESSERCAM_TEC_TARGET_DEF 100 /* 10.0 degrees Celsius */ -#define BRESSERCAM_TEC_TARGET_MAX 400 /* TEC target: 40.0 degrees Celsius */ #define BRESSERCAM_HEARTBEAT_MIN 100 /* millisecond */ #define BRESSERCAM_HEARTBEAT_MAX 10000 /* millisecond */ #define BRESSERCAM_AE_PERCENT_MIN 0 /* auto exposure percent; 0 or 100 => full roi average, means "disabled" */ @@ -239,12 +236,12 @@ typedef struct Bressercam_t { int unused; } *HBressercam; #define BRESSERCAM_AE_PERCENT_DEF 10 /* auto exposure percent: enabled, percentage = 10% */ #define BRESSERCAM_NOPACKET_TIMEOUT_MIN 500 /* no packet timeout minimum: 500ms */ #define BRESSERCAM_NOFRAME_TIMEOUT_MIN 500 /* no frame timeout minimum: 500ms */ -#define BRESSERCAM_DYNAMIC_DEFECT_T1_MIN 10 /* dynamic defect pixel correction, threshold, means: 1.0 */ -#define BRESSERCAM_DYNAMIC_DEFECT_T1_MAX 100 /* means: 10.0 */ -#define BRESSERCAM_DYNAMIC_DEFECT_T1_DEF 13 /* means: 1.3 */ -#define BRESSERCAM_DYNAMIC_DEFECT_T2_MIN 0 /* dynamic defect pixel correction, value, means: 0.00 */ -#define BRESSERCAM_DYNAMIC_DEFECT_T2_MAX 100 /* means: 1.00 */ -#define BRESSERCAM_DYNAMIC_DEFECT_T2_DEF 100 +#define BRESSERCAM_DYNAMIC_DEFECT_T1_MIN 0 /* dynamic defect pixel correction, dead pixel ratio: the smaller the dead ratio is, the more stringent the conditions for processing dead pixels are, and fewer pixels will be processed */ +#define BRESSERCAM_DYNAMIC_DEFECT_T1_MAX 100 /* means: 1.0 */ +#define BRESSERCAM_DYNAMIC_DEFECT_T1_DEF 90 /* means: 0.9 */ +#define BRESSERCAM_DYNAMIC_DEFECT_T2_MIN 0 /* dynamic defect pixel correction, hot pixel ratio: the smaller the hot ratio is, the more stringent the conditions for processing hot pixels are, and fewer pixels will be processed */ +#define BRESSERCAM_DYNAMIC_DEFECT_T2_MAX 100 +#define BRESSERCAM_DYNAMIC_DEFECT_T2_DEF 90 #define BRESSERCAM_HDR_K_MIN 1 /* HDR synthesize */ #define BRESSERCAM_HDR_K_MAX 25500 #define BRESSERCAM_HDR_B_MIN 0 @@ -289,7 +286,7 @@ typedef struct { } BressercamDeviceV2; /* device instance for enumerating */ /* - get the version of this dll/so/dylib, which is: 55.25633.20240519 + get the version of this dll/so/dylib, which is: 56.26054.20240715 */ #if defined(_WIN32) BRESSERCAM_API(const wchar_t*) Bressercam_Version(); @@ -821,7 +818,7 @@ BRESSERCAM_API(HRESULT) Bressercam_read_EEPROM(HBressercam h, unsigned addr, un BRESSERCAM_API(HRESULT) Bressercam_read_Pipe(HBressercam h, unsigned pipeId, void* pBuffer, unsigned nBufferLen); BRESSERCAM_API(HRESULT) Bressercam_write_Pipe(HBressercam h, unsigned pipeId, const void* pBuffer, unsigned nBufferLen); BRESSERCAM_API(HRESULT) Bressercam_feed_Pipe(HBressercam h, unsigned pipeId); - + #define BRESSERCAM_OPTION_NOFRAME_TIMEOUT 0x01 /* no frame timeout: 0 => disable, positive value (>= BRESSERCAM_NOFRAME_TIMEOUT_MIN) => timeout milliseconds. default: disable */ #define BRESSERCAM_OPTION_THREAD_PRIORITY 0x02 /* set the priority of the internal thread which grab data from the usb device. Win: iValue: 0 => THREAD_PRIORITY_NORMAL; 1 => THREAD_PRIORITY_ABOVE_NORMAL; 2 => THREAD_PRIORITY_HIGHEST; 3 => THREAD_PRIORITY_TIME_CRITICAL; default: 1; see: https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-setthreadpriority @@ -847,7 +844,7 @@ BRESSERCAM_API(HRESULT) Bressercam_feed_Pipe(HBressercam h, unsigned pipeId); 3: Gain Preferred default value: 1 */ -#define BRESSERCAM_OPTION_FRAMERATE 0x11 /* limit the frame rate, range=[0, 63], the default value 0 means no limit */ +#define BRESSERCAM_OPTION_FRAMERATE 0x11 /* limit the frame rate, the default value 0 means no limit */ #define BRESSERCAM_OPTION_DEMOSAIC 0x12 /* demosaic method for both video and still image: BILINEAR = 0, VNG(Variable Number of Gradients) = 1, PPG(Patterned Pixel Grouping) = 2, AHD(Adaptive Homogeneity Directed) = 3, EA(Edge Aware) = 4, see https://en.wikipedia.org/wiki/Demosaicing, default value: 0 */ #define BRESSERCAM_OPTION_DEMOSAIC_VIDEO 0x13 /* demosaic method for video */ #define BRESSERCAM_OPTION_DEMOSAIC_STILL 0x14 /* demosaic method for still image */ @@ -1007,8 +1004,8 @@ BRESSERCAM_API(HRESULT) Bressercam_feed_Pipe(HBressercam h, unsigned pipeId); */ #define BRESSERCAM_OPTION_HIGH_FULLWELL 0x55 /* high fullwell capacity: 0 => disable, 1 => enable */ #define BRESSERCAM_OPTION_DYNAMIC_DEFECT 0x56 /* dynamic defect pixel correction: - threshold, t1: (high 16 bits): [10, 100], means: [1.0, 10.0] - value, t2: (low 16 bits): [0, 100], means: [0.00, 1.00] + dead pixel ratio, t1: (high 16 bits): [0, 100], means: [0.0, 1.0] + hot pixel ratio, t2: (low 16 bits): [0, 100], means: [0.0, 1.0] */ #define BRESSERCAM_OPTION_HDR_KB 0x57 /* HDR synthesize K (high 16 bits): [1, 25500] @@ -1021,8 +1018,8 @@ BRESSERCAM_API(HRESULT) Bressercam_feed_Pipe(HBressercam h, unsigned pipeId); */ #define BRESSERCAM_OPTION_GIGETIMEOUT 0x5a /* For GigE cameras, the application periodically sends heartbeat signals to the camera to keep the connection to the camera alive. If the camera doesn't receive heartbeat signals within the time period specified by the heartbeat timeout counter, the camera resets the connection. - When the application is stopped by the debugger, the application cannot create the heartbeat signals - 0 => auto: when the camera is opened, disable if debugger is present or enable if no debugger is present + When the application is stopped by the debugger, the application cannot send the heartbeat signals + 0 => auto: when the camera is opened, enable if no debugger is present or disable if debugger is present 1 => enable 2 => disable default: auto @@ -1063,6 +1060,9 @@ BRESSERCAM_API(HRESULT) Bressercam_feed_Pipe(HBressercam h, unsigned pipeId); 21 => twilight 22 => twilight_shifted 23 => turbo + 24 => red + 25 => green + 26 => blue */ #define BRESSERCAM_OPTION_LOW_POWERCONSUMPTION 0x66 /* Low Power Consumption: 0 => disable, 1 => enable */ #define BRESSERCAM_OPTION_FPNC 0x67 /* Fix Pattern Noise Correction @@ -1092,6 +1092,7 @@ BRESSERCAM_API(HRESULT) Bressercam_feed_Pipe(HBressercam h, unsigned pipeId); n>0: every n millisecond(s) n<0: every -n frame */ +#define BRESSERCAM_OPTION_TECTARGET_RANGE 0x6d /* TEC target range: min(low 16 bits) = (short)(val & 0xffff), max(high 16 bits) = (short)((val >> 16) & 0xffff) */ /* pixel format */ #define BRESSERCAM_PIXELFORMAT_RAW8 0x00 @@ -1137,97 +1138,100 @@ BRESSERCAM_API(HRESULT) Bressercam_put_RoiN(HBressercam h, unsigned xOffset[], BRESSERCAM_API(HRESULT) Bressercam_put_XY(HBressercam h, int x, int y); -#define BRESSERCAM_IOCONTROLTYPE_GET_SUPPORTEDMODE 0x01 /* 0x01 => Input, 0x02 => Output, (0x01 | 0x02) => support both Input and Output */ -#define BRESSERCAM_IOCONTROLTYPE_GET_GPIODIR 0x03 /* 0x00 => Input, 0x01 => Output */ -#define BRESSERCAM_IOCONTROLTYPE_SET_GPIODIR 0x04 -#define BRESSERCAM_IOCONTROLTYPE_GET_FORMAT 0x05 /* - 0x00 => not connected - 0x01 => Tri-state: Tri-state mode (Not driven) - 0x02 => TTL: TTL level signals - 0x03 => LVDS: LVDS level signals - 0x04 => RS422: RS422 level signals - 0x05 => Opto-coupled - */ -#define BRESSERCAM_IOCONTROLTYPE_SET_FORMAT 0x06 -#define BRESSERCAM_IOCONTROLTYPE_GET_OUTPUTINVERTER 0x07 /* boolean, only support output signal */ -#define BRESSERCAM_IOCONTROLTYPE_SET_OUTPUTINVERTER 0x08 -#define BRESSERCAM_IOCONTROLTYPE_GET_INPUTACTIVATION 0x09 /* 0x00 => Rising edge, 0x01 => Falling edge, 0x02 => Level high, 0x03 => Level low */ -#define BRESSERCAM_IOCONTROLTYPE_SET_INPUTACTIVATION 0x0a -#define BRESSERCAM_IOCONTROLTYPE_GET_DEBOUNCERTIME 0x0b /* debouncer time in microseconds, range: [0, 20000] */ -#define BRESSERCAM_IOCONTROLTYPE_SET_DEBOUNCERTIME 0x0c -#define BRESSERCAM_IOCONTROLTYPE_GET_TRIGGERSOURCE 0x0d /* - 0x00 => Opto-isolated input - 0x01 => GPIO0 - 0x02 => GPIO1 - 0x03 => Counter - 0x04 => PWM - 0x05 => Software - */ -#define BRESSERCAM_IOCONTROLTYPE_SET_TRIGGERSOURCE 0x0e -#define BRESSERCAM_IOCONTROLTYPE_GET_TRIGGERDELAY 0x0f /* Trigger delay time in microseconds, range: [0, 5000000] */ -#define BRESSERCAM_IOCONTROLTYPE_SET_TRIGGERDELAY 0x10 -#define BRESSERCAM_IOCONTROLTYPE_GET_BURSTCOUNTER 0x11 /* Burst Counter, range: [1 ~ 65535] */ -#define BRESSERCAM_IOCONTROLTYPE_SET_BURSTCOUNTER 0x12 -#define BRESSERCAM_IOCONTROLTYPE_GET_COUNTERSOURCE 0x13 /* 0x00 => Opto-isolated input, 0x01 => GPIO0, 0x02 => GPIO1 */ -#define BRESSERCAM_IOCONTROLTYPE_SET_COUNTERSOURCE 0x14 -#define BRESSERCAM_IOCONTROLTYPE_GET_COUNTERVALUE 0x15 /* Counter Value, range: [1 ~ 65535] */ -#define BRESSERCAM_IOCONTROLTYPE_SET_COUNTERVALUE 0x16 -#define BRESSERCAM_IOCONTROLTYPE_SET_RESETCOUNTER 0x18 -#define BRESSERCAM_IOCONTROLTYPE_GET_PWM_FREQ 0x19 -#define BRESSERCAM_IOCONTROLTYPE_SET_PWM_FREQ 0x1a -#define BRESSERCAM_IOCONTROLTYPE_GET_PWM_DUTYRATIO 0x1b -#define BRESSERCAM_IOCONTROLTYPE_SET_PWM_DUTYRATIO 0x1c -#define BRESSERCAM_IOCONTROLTYPE_GET_PWMSOURCE 0x1d /* 0x00 => Opto-isolated input, 0x01 => GPIO0, 0x02 => GPIO1 */ -#define BRESSERCAM_IOCONTROLTYPE_SET_PWMSOURCE 0x1e -#define BRESSERCAM_IOCONTROLTYPE_GET_OUTPUTMODE 0x1f /* - 0x00 => Frame Trigger Wait - 0x01 => Exposure Active - 0x02 => Strobe - 0x03 => User output - 0x04 => Counter Output - 0x05 => Timer Output - */ -#define BRESSERCAM_IOCONTROLTYPE_SET_OUTPUTMODE 0x20 -#define BRESSERCAM_IOCONTROLTYPE_GET_STROBEDELAYMODE 0x21 /* boolean, 0 => pre-delay, 1 => delay; compared to exposure active signal */ -#define BRESSERCAM_IOCONTROLTYPE_SET_STROBEDELAYMODE 0x22 -#define BRESSERCAM_IOCONTROLTYPE_GET_STROBEDELAYTIME 0x23 /* Strobe delay or pre-delay time in microseconds, range: [0, 5000000] */ -#define BRESSERCAM_IOCONTROLTYPE_SET_STROBEDELAYTIME 0x24 -#define BRESSERCAM_IOCONTROLTYPE_GET_STROBEDURATION 0x25 /* Strobe duration time in microseconds, range: [0, 5000000] */ -#define BRESSERCAM_IOCONTROLTYPE_SET_STROBEDURATION 0x26 -#define BRESSERCAM_IOCONTROLTYPE_GET_USERVALUE 0x27 /* - bit0 => Opto-isolated output - bit1 => GPIO0 output - bit2 => GPIO1 output - */ -#define BRESSERCAM_IOCONTROLTYPE_SET_USERVALUE 0x28 -#define BRESSERCAM_IOCONTROLTYPE_GET_UART_ENABLE 0x29 /* enable: 1 => on; 0 => off */ -#define BRESSERCAM_IOCONTROLTYPE_SET_UART_ENABLE 0x2a -#define BRESSERCAM_IOCONTROLTYPE_GET_UART_BAUDRATE 0x2b /* baud rate: 0 => 9600; 1 => 19200; 2 => 38400; 3 => 57600; 4 => 115200 */ -#define BRESSERCAM_IOCONTROLTYPE_SET_UART_BAUDRATE 0x2c -#define BRESSERCAM_IOCONTROLTYPE_GET_UART_LINEMODE 0x2d /* line mode: 0 => TX(GPIO_0)/RX(GPIO_1); 1 => TX(GPIO_1)/RX(GPIO_0) */ -#define BRESSERCAM_IOCONTROLTYPE_SET_UART_LINEMODE 0x2e -#define BRESSERCAM_IOCONTROLTYPE_GET_EXPO_ACTIVE_MODE 0x2f /* exposure time signal: 0 => specified line, 1 => common exposure time */ -#define BRESSERCAM_IOCONTROLTYPE_SET_EXPO_ACTIVE_MODE 0x30 -#define BRESSERCAM_IOCONTROLTYPE_GET_EXPO_START_LINE 0x31 /* exposure start line, default: 0 */ -#define BRESSERCAM_IOCONTROLTYPE_SET_EXPO_START_LINE 0x32 -#define BRESSERCAM_IOCONTROLTYPE_GET_EXPO_END_LINE 0x33 /* exposure end line, default: 0 - end line must be no less than start line - */ -#define BRESSERCAM_IOCONTROLTYPE_SET_EXPO_END_LINE 0x34 -#define BRESSERCAM_IOCONTROLTYPE_GET_EXEVT_ACTIVE_MODE 0x35 /* exposure event: 0 => specified line, 1 => common exposure time */ -#define BRESSERCAM_IOCONTROLTYPE_SET_EXEVT_ACTIVE_MODE 0x36 -#define BRESSERCAM_IOCONTROLTYPE_GET_OUTPUTCOUNTERVALUE 0x37 /* Output Counter Value, range: [0 ~ 65535] */ -#define BRESSERCAM_IOCONTROLTYPE_SET_OUTPUTCOUNTERVALUE 0x38 -#define BRESSERCAM_IOCONTROLTYPE_SET_OUTPUT_PAUSE 0x3a /* Output pause: 1 => puase, 0 => unpause */ -#define BRESSERCAM_IOCONTROLTYPE_GET_INPUT_STATE 0x3c /* Input state: 0 (low level) or 1 (high level) */ -#define BRESSERCAM_IOCONTROLTYPE_GET_USER_PULSE_HIGH 0x3e /* User pulse high level time: us */ -#define BRESSERCAM_IOCONTROLTYPE_SET_USER_PULSE_HIGH 0x3f -#define BRESSERCAM_IOCONTROLTYPE_GET_USER_PULSE_LOW 0x40 /* User pulse low level time: us */ -#define BRESSERCAM_IOCONTROLTYPE_SET_USER_PULSE_LOW 0x41 -#define BRESSERCAM_IOCONTROLTYPE_GET_USER_PULSE_NUMBER 0x42 /* User pulse number: default 0 */ -#define BRESSERCAM_IOCONTROLTYPE_SET_USER_PULSE_NUMBER 0x43 - -#define BRESSERCAM_IOCONTROL_DELAYTIME_MAX (5 * 1000 * 1000) +#define BRESSERCAM_IOCONTROLTYPE_GET_SUPPORTEDMODE 0x01 /* 0x01 => Input, 0x02 => Output, (0x01 | 0x02) => support both Input and Output */ +#define BRESSERCAM_IOCONTROLTYPE_GET_GPIODIR 0x03 /* 0x00 => Input, 0x01 => Output */ +#define BRESSERCAM_IOCONTROLTYPE_SET_GPIODIR 0x04 +#define BRESSERCAM_IOCONTROLTYPE_GET_FORMAT 0x05 /* + 0x00 => not connected + 0x01 => Tri-state: Tri-state mode (Not driven) + 0x02 => TTL: TTL level signals + 0x03 => LVDS: LVDS level signals + 0x04 => RS422: RS422 level signals + 0x05 => Opto-coupled + */ +#define BRESSERCAM_IOCONTROLTYPE_SET_FORMAT 0x06 +#define BRESSERCAM_IOCONTROLTYPE_GET_OUTPUTINVERTER 0x07 /* boolean, only support output signal */ +#define BRESSERCAM_IOCONTROLTYPE_SET_OUTPUTINVERTER 0x08 +#define BRESSERCAM_IOCONTROLTYPE_GET_INPUTACTIVATION 0x09 /* 0x00 => Rising edge, 0x01 => Falling edge, 0x02 => Level high, 0x03 => Level low */ +#define BRESSERCAM_IOCONTROLTYPE_SET_INPUTACTIVATION 0x0a +#define BRESSERCAM_IOCONTROLTYPE_GET_DEBOUNCERTIME 0x0b /* debouncer time in microseconds, range: [0, 20000] */ +#define BRESSERCAM_IOCONTROLTYPE_SET_DEBOUNCERTIME 0x0c +#define BRESSERCAM_IOCONTROLTYPE_GET_TRIGGERSOURCE 0x0d /* + 0x00 => Opto-isolated input + 0x01 => GPIO0 + 0x02 => GPIO1 + 0x03 => Counter + 0x04 => PWM + 0x05 => Software + */ +#define BRESSERCAM_IOCONTROLTYPE_SET_TRIGGERSOURCE 0x0e +#define BRESSERCAM_IOCONTROLTYPE_GET_TRIGGERDELAY 0x0f /* Trigger delay time in microseconds, range: [0, 5000000] */ +#define BRESSERCAM_IOCONTROLTYPE_SET_TRIGGERDELAY 0x10 +#define BRESSERCAM_IOCONTROLTYPE_GET_BURSTCOUNTER 0x11 /* Burst Counter, range: [1 ~ 65535] */ +#define BRESSERCAM_IOCONTROLTYPE_SET_BURSTCOUNTER 0x12 +#define BRESSERCAM_IOCONTROLTYPE_GET_COUNTERSOURCE 0x13 /* 0x00 => Opto-isolated input, 0x01 => GPIO0, 0x02 => GPIO1 */ +#define BRESSERCAM_IOCONTROLTYPE_SET_COUNTERSOURCE 0x14 +#define BRESSERCAM_IOCONTROLTYPE_GET_COUNTERVALUE 0x15 /* Counter Value, range: [1 ~ 65535] */ +#define BRESSERCAM_IOCONTROLTYPE_SET_COUNTERVALUE 0x16 +#define BRESSERCAM_IOCONTROLTYPE_SET_RESETCOUNTER 0x18 +#define BRESSERCAM_IOCONTROLTYPE_GET_PWM_FREQ 0x19 +#define BRESSERCAM_IOCONTROLTYPE_SET_PWM_FREQ 0x1a +#define BRESSERCAM_IOCONTROLTYPE_GET_PWM_DUTYRATIO 0x1b +#define BRESSERCAM_IOCONTROLTYPE_SET_PWM_DUTYRATIO 0x1c +#define BRESSERCAM_IOCONTROLTYPE_GET_PWMSOURCE 0x1d /* 0x00 => Opto-isolated input, 0x01 => GPIO0, 0x02 => GPIO1 */ +#define BRESSERCAM_IOCONTROLTYPE_SET_PWMSOURCE 0x1e +#define BRESSERCAM_IOCONTROLTYPE_GET_OUTPUTMODE 0x1f /* + 0x00 => Frame Trigger Wait + 0x01 => Exposure Active + 0x02 => Strobe + 0x03 => User output + 0x04 => Counter Output + 0x05 => Timer Output + */ +#define BRESSERCAM_IOCONTROLTYPE_SET_OUTPUTMODE 0x20 +#define BRESSERCAM_IOCONTROLTYPE_GET_STROBEDELAYMODE 0x21 /* boolean, 0 => pre-delay, 1 => delay; compared to exposure active signal */ +#define BRESSERCAM_IOCONTROLTYPE_SET_STROBEDELAYMODE 0x22 +#define BRESSERCAM_IOCONTROLTYPE_GET_STROBEDELAYTIME 0x23 /* Strobe delay or pre-delay time in microseconds, range: [0, 5000000] */ +#define BRESSERCAM_IOCONTROLTYPE_SET_STROBEDELAYTIME 0x24 +#define BRESSERCAM_IOCONTROLTYPE_GET_STROBEDURATION 0x25 /* Strobe duration time in microseconds, range: [0, 5000000] */ +#define BRESSERCAM_IOCONTROLTYPE_SET_STROBEDURATION 0x26 +#define BRESSERCAM_IOCONTROLTYPE_GET_USERVALUE 0x27 /* + bit0 => Opto-isolated output + bit1 => GPIO0 output + bit2 => GPIO1 output + */ +#define BRESSERCAM_IOCONTROLTYPE_SET_USERVALUE 0x28 +#define BRESSERCAM_IOCONTROLTYPE_GET_UART_ENABLE 0x29 /* enable: 1 => on; 0 => off */ +#define BRESSERCAM_IOCONTROLTYPE_SET_UART_ENABLE 0x2a +#define BRESSERCAM_IOCONTROLTYPE_GET_UART_BAUDRATE 0x2b /* baud rate: 0 => 9600; 1 => 19200; 2 => 38400; 3 => 57600; 4 => 115200 */ +#define BRESSERCAM_IOCONTROLTYPE_SET_UART_BAUDRATE 0x2c +#define BRESSERCAM_IOCONTROLTYPE_GET_UART_LINEMODE 0x2d /* line mode: 0 => TX(GPIO_0)/RX(GPIO_1); 1 => TX(GPIO_1)/RX(GPIO_0) */ +#define BRESSERCAM_IOCONTROLTYPE_SET_UART_LINEMODE 0x2e +#define BRESSERCAM_IOCONTROLTYPE_GET_EXPO_ACTIVE_MODE 0x2f /* exposure time signal: 0 => specified line, 1 => common exposure time */ +#define BRESSERCAM_IOCONTROLTYPE_SET_EXPO_ACTIVE_MODE 0x30 +#define BRESSERCAM_IOCONTROLTYPE_GET_EXPO_START_LINE 0x31 /* exposure start line, default: 0 */ +#define BRESSERCAM_IOCONTROLTYPE_SET_EXPO_START_LINE 0x32 +#define BRESSERCAM_IOCONTROLTYPE_GET_EXPO_END_LINE 0x33 /* exposure end line, default: 0 + end line must be no less than start line + */ +#define BRESSERCAM_IOCONTROLTYPE_SET_EXPO_END_LINE 0x34 +#define BRESSERCAM_IOCONTROLTYPE_GET_EXEVT_ACTIVE_MODE 0x35 /* exposure event: 0 => specified line, 1 => common exposure time */ +#define BRESSERCAM_IOCONTROLTYPE_SET_EXEVT_ACTIVE_MODE 0x36 +#define BRESSERCAM_IOCONTROLTYPE_GET_OUTPUTCOUNTERVALUE 0x37 /* Output Counter Value, range: [0 ~ 65535] */ +#define BRESSERCAM_IOCONTROLTYPE_SET_OUTPUTCOUNTERVALUE 0x38 +#define BRESSERCAM_IOCONTROLTYPE_SET_OUTPUT_PAUSE 0x3a /* Output pause: 1 => puase, 0 => unpause */ +#define BRESSERCAM_IOCONTROLTYPE_GET_INPUT_STATE 0x3b /* Input state: 0 (low level) or 1 (high level) */ +#define BRESSERCAM_IOCONTROLTYPE_GET_USER_PULSE_HIGH 0x3d /* User pulse high level time: us */ +#define BRESSERCAM_IOCONTROLTYPE_SET_USER_PULSE_HIGH 0x3e +#define BRESSERCAM_IOCONTROLTYPE_GET_USER_PULSE_LOW 0x3f /* User pulse low level time: us */ +#define BRESSERCAM_IOCONTROLTYPE_SET_USER_PULSE_LOW 0x40 +#define BRESSERCAM_IOCONTROLTYPE_GET_USER_PULSE_NUMBER 0x41 /* User pulse number: default 0 */ +#define BRESSERCAM_IOCONTROLTYPE_SET_USER_PULSE_NUMBER 0x42 +#define BRESSERCAM_IOCONTROLTYPE_GET_EXTERNAL_TRIGGER_NUMBER 0x43 /* External trigger number */ +#define BRESSERCAM_IOCONTROLTYPE_GET_DEBOUNCER_TRIGGER_NUMBER 0x45 /* Trigger signal number after debounce */ +#define BRESSERCAM_IOCONTROLTYPE_GET_EFFECTIVE_TRIGGER_NUMBER 0x47 /* Effective trigger signal number */ + +#define BRESSERCAM_IOCONTROL_DELAYTIME_MAX (5 * 1000 * 1000) /* ioLineNumber: diff --git a/libbressercam/mac/libbressercam.bin b/libbressercam/mac/libbressercam.bin index 0594040ca..4b794e935 100644 Binary files a/libbressercam/mac/libbressercam.bin and b/libbressercam/mac/libbressercam.bin differ diff --git a/libbressercam/x64/libbressercam.bin b/libbressercam/x64/libbressercam.bin index 2fbae3dfd..48af010a2 100644 Binary files a/libbressercam/x64/libbressercam.bin and b/libbressercam/x64/libbressercam.bin differ diff --git a/libmallincam/CMakeLists.txt b/libmallincam/CMakeLists.txt index cb5d14848..f9c506eed 100644 --- a/libmallincam/CMakeLists.txt +++ b/libmallincam/CMakeLists.txt @@ -1,8 +1,8 @@ cmake_minimum_required(VERSION 3.16) project (libmallincam) -set (LIBMALLINCAM_VERSION "55.25633") -set (LIBMALLINCAM_SOVERSION "55") +set (LIBMALLINCAM_VERSION "56.26054") +set (LIBMALLINCAM_SOVERSION "56") list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules/") list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../cmake_modules/") diff --git a/libmallincam/arm64/libmallincam.bin b/libmallincam/arm64/libmallincam.bin index 3b05e30e1..ab724b9cc 100644 Binary files a/libmallincam/arm64/libmallincam.bin and b/libmallincam/arm64/libmallincam.bin differ diff --git a/libmallincam/armhf/libmallincam.bin b/libmallincam/armhf/libmallincam.bin index 17ee54aeb..71f12dd6c 100644 Binary files a/libmallincam/armhf/libmallincam.bin and b/libmallincam/armhf/libmallincam.bin differ diff --git a/libmallincam/mac/libmallincam.bin b/libmallincam/mac/libmallincam.bin index 98e4d0f59..6f6bf56f8 100644 Binary files a/libmallincam/mac/libmallincam.bin and b/libmallincam/mac/libmallincam.bin differ diff --git a/libmallincam/mallincam.h b/libmallincam/mallincam.h index 39f101571..9067e5e01 100644 --- a/libmallincam/mallincam.h +++ b/libmallincam/mallincam.h @@ -1,7 +1,7 @@ #ifndef __mallincam_h__ #define __mallincam_h__ -/* Version: 55.25633.20240519 */ +/* Version: 56.26054.20240715 */ /* Platform & Architecture: (1) Win32: @@ -92,21 +92,21 @@ extern "C" { /* */ /********************************************************************************/ #if defined(MALLINCAM_HRESULT_ERRORCODE_NEEDED) -#define S_OK 0x00000000 /* Success */ -#define S_FALSE 0x00000001 /* Yet another success */ -#define E_UNEXPECTED 0x8000ffff /* Catastrophic failure */ -#define E_NOTIMPL 0x80004001 /* Not supported or not implemented */ -#define E_NOINTERFACE 0x80004002 -#define E_ACCESSDENIED 0x80070005 /* Permission denied */ -#define E_OUTOFMEMORY 0x8007000e /* Out of memory */ -#define E_INVALIDARG 0x80070057 /* One or more arguments are not valid */ -#define E_POINTER 0x80004003 /* Pointer that is not valid */ -#define E_FAIL 0x80004005 /* Generic failure */ -#define E_WRONG_THREAD 0x8001010e /* Call function in the wrong thread */ -#define E_GEN_FAILURE 0x8007001f /* Device not functioning */ -#define E_BUSY 0x800700aa /* The requested resource is in use */ -#define E_PENDING 0x8000000a /* The data necessary to complete this operation is not yet available */ -#define E_TIMEOUT 0x8001011f /* This operation returned because the timeout period expired */ +#define S_OK (HRESULT)(0x00000000) /* Success */ +#define S_FALSE (HRESULT)(0x00000001) /* Yet another success */ +#define E_UNEXPECTED (HRESULT)(0x8000ffff) /* Catastrophic failure */ +#define E_NOTIMPL (HRESULT)(0x80004001) /* Not supported or not implemented */ +#define E_NOINTERFACE (HRESULT)(0x80004002) +#define E_ACCESSDENIED (HRESULT)(0x80070005) /* Permission denied */ +#define E_OUTOFMEMORY (HRESULT)(0x8007000e) /* Out of memory */ +#define E_INVALIDARG (HRESULT)(0x80070057) /* One or more arguments are not valid */ +#define E_POINTER (HRESULT)(0x80004003) /* Pointer that is not valid */ +#define E_FAIL (HRESULT)(0x80004005) /* Generic failure */ +#define E_WRONG_THREAD (HRESULT)(0x8001010e) /* Call function in the wrong thread */ +#define E_GEN_FAILURE (HRESULT)(0x8007001f) /* Device not functioning */ +#define E_BUSY (HRESULT)(0x800700aa) /* The requested resource is in use */ +#define E_PENDING (HRESULT)(0x8000000a) /* The data necessary to complete this operation is not yet available */ +#define E_TIMEOUT (HRESULT)(0x8001011f) /* This operation returned because the timeout period expired */ #endif /* handle */ @@ -229,9 +229,6 @@ typedef struct Mallincam_t { int unused; } *HMallincam; #define MALLINCAM_DENOISE_DEF 0 /* denoise */ #define MALLINCAM_DENOISE_MIN 0 /* denoise */ #define MALLINCAM_DENOISE_MAX 100 /* denoise */ -#define MALLINCAM_TEC_TARGET_MIN (-500) /* TEC target: -50.0 degrees Celsius */ -#define MALLINCAM_TEC_TARGET_DEF 100 /* 10.0 degrees Celsius */ -#define MALLINCAM_TEC_TARGET_MAX 400 /* TEC target: 40.0 degrees Celsius */ #define MALLINCAM_HEARTBEAT_MIN 100 /* millisecond */ #define MALLINCAM_HEARTBEAT_MAX 10000 /* millisecond */ #define MALLINCAM_AE_PERCENT_MIN 0 /* auto exposure percent; 0 or 100 => full roi average, means "disabled" */ @@ -239,12 +236,12 @@ typedef struct Mallincam_t { int unused; } *HMallincam; #define MALLINCAM_AE_PERCENT_DEF 10 /* auto exposure percent: enabled, percentage = 10% */ #define MALLINCAM_NOPACKET_TIMEOUT_MIN 500 /* no packet timeout minimum: 500ms */ #define MALLINCAM_NOFRAME_TIMEOUT_MIN 500 /* no frame timeout minimum: 500ms */ -#define MALLINCAM_DYNAMIC_DEFECT_T1_MIN 10 /* dynamic defect pixel correction, threshold, means: 1.0 */ -#define MALLINCAM_DYNAMIC_DEFECT_T1_MAX 100 /* means: 10.0 */ -#define MALLINCAM_DYNAMIC_DEFECT_T1_DEF 13 /* means: 1.3 */ -#define MALLINCAM_DYNAMIC_DEFECT_T2_MIN 0 /* dynamic defect pixel correction, value, means: 0.00 */ -#define MALLINCAM_DYNAMIC_DEFECT_T2_MAX 100 /* means: 1.00 */ -#define MALLINCAM_DYNAMIC_DEFECT_T2_DEF 100 +#define MALLINCAM_DYNAMIC_DEFECT_T1_MIN 0 /* dynamic defect pixel correction, dead pixel ratio: the smaller the dead ratio is, the more stringent the conditions for processing dead pixels are, and fewer pixels will be processed */ +#define MALLINCAM_DYNAMIC_DEFECT_T1_MAX 100 /* means: 1.0 */ +#define MALLINCAM_DYNAMIC_DEFECT_T1_DEF 90 /* means: 0.9 */ +#define MALLINCAM_DYNAMIC_DEFECT_T2_MIN 0 /* dynamic defect pixel correction, hot pixel ratio: the smaller the hot ratio is, the more stringent the conditions for processing hot pixels are, and fewer pixels will be processed */ +#define MALLINCAM_DYNAMIC_DEFECT_T2_MAX 100 +#define MALLINCAM_DYNAMIC_DEFECT_T2_DEF 90 #define MALLINCAM_HDR_K_MIN 1 /* HDR synthesize */ #define MALLINCAM_HDR_K_MAX 25500 #define MALLINCAM_HDR_B_MIN 0 @@ -289,7 +286,7 @@ typedef struct { } MallincamDeviceV2; /* device instance for enumerating */ /* - get the version of this dll/so/dylib, which is: 55.25633.20240519 + get the version of this dll/so/dylib, which is: 56.26054.20240715 */ #if defined(_WIN32) MALLINCAM_API(const wchar_t*) Mallincam_Version(); @@ -821,7 +818,7 @@ MALLINCAM_API(HRESULT) Mallincam_read_EEPROM(HMallincam h, unsigned addr, unsig MALLINCAM_API(HRESULT) Mallincam_read_Pipe(HMallincam h, unsigned pipeId, void* pBuffer, unsigned nBufferLen); MALLINCAM_API(HRESULT) Mallincam_write_Pipe(HMallincam h, unsigned pipeId, const void* pBuffer, unsigned nBufferLen); MALLINCAM_API(HRESULT) Mallincam_feed_Pipe(HMallincam h, unsigned pipeId); - + #define MALLINCAM_OPTION_NOFRAME_TIMEOUT 0x01 /* no frame timeout: 0 => disable, positive value (>= MALLINCAM_NOFRAME_TIMEOUT_MIN) => timeout milliseconds. default: disable */ #define MALLINCAM_OPTION_THREAD_PRIORITY 0x02 /* set the priority of the internal thread which grab data from the usb device. Win: iValue: 0 => THREAD_PRIORITY_NORMAL; 1 => THREAD_PRIORITY_ABOVE_NORMAL; 2 => THREAD_PRIORITY_HIGHEST; 3 => THREAD_PRIORITY_TIME_CRITICAL; default: 1; see: https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-setthreadpriority @@ -847,7 +844,7 @@ MALLINCAM_API(HRESULT) Mallincam_feed_Pipe(HMallincam h, unsigned pipeId); 3: Gain Preferred default value: 1 */ -#define MALLINCAM_OPTION_FRAMERATE 0x11 /* limit the frame rate, range=[0, 63], the default value 0 means no limit */ +#define MALLINCAM_OPTION_FRAMERATE 0x11 /* limit the frame rate, the default value 0 means no limit */ #define MALLINCAM_OPTION_DEMOSAIC 0x12 /* demosaic method for both video and still image: BILINEAR = 0, VNG(Variable Number of Gradients) = 1, PPG(Patterned Pixel Grouping) = 2, AHD(Adaptive Homogeneity Directed) = 3, EA(Edge Aware) = 4, see https://en.wikipedia.org/wiki/Demosaicing, default value: 0 */ #define MALLINCAM_OPTION_DEMOSAIC_VIDEO 0x13 /* demosaic method for video */ #define MALLINCAM_OPTION_DEMOSAIC_STILL 0x14 /* demosaic method for still image */ @@ -1007,8 +1004,8 @@ MALLINCAM_API(HRESULT) Mallincam_feed_Pipe(HMallincam h, unsigned pipeId); */ #define MALLINCAM_OPTION_HIGH_FULLWELL 0x55 /* high fullwell capacity: 0 => disable, 1 => enable */ #define MALLINCAM_OPTION_DYNAMIC_DEFECT 0x56 /* dynamic defect pixel correction: - threshold, t1: (high 16 bits): [10, 100], means: [1.0, 10.0] - value, t2: (low 16 bits): [0, 100], means: [0.00, 1.00] + dead pixel ratio, t1: (high 16 bits): [0, 100], means: [0.0, 1.0] + hot pixel ratio, t2: (low 16 bits): [0, 100], means: [0.0, 1.0] */ #define MALLINCAM_OPTION_HDR_KB 0x57 /* HDR synthesize K (high 16 bits): [1, 25500] @@ -1021,8 +1018,8 @@ MALLINCAM_API(HRESULT) Mallincam_feed_Pipe(HMallincam h, unsigned pipeId); */ #define MALLINCAM_OPTION_GIGETIMEOUT 0x5a /* For GigE cameras, the application periodically sends heartbeat signals to the camera to keep the connection to the camera alive. If the camera doesn't receive heartbeat signals within the time period specified by the heartbeat timeout counter, the camera resets the connection. - When the application is stopped by the debugger, the application cannot create the heartbeat signals - 0 => auto: when the camera is opened, disable if debugger is present or enable if no debugger is present + When the application is stopped by the debugger, the application cannot send the heartbeat signals + 0 => auto: when the camera is opened, enable if no debugger is present or disable if debugger is present 1 => enable 2 => disable default: auto @@ -1063,6 +1060,9 @@ MALLINCAM_API(HRESULT) Mallincam_feed_Pipe(HMallincam h, unsigned pipeId); 21 => twilight 22 => twilight_shifted 23 => turbo + 24 => red + 25 => green + 26 => blue */ #define MALLINCAM_OPTION_LOW_POWERCONSUMPTION 0x66 /* Low Power Consumption: 0 => disable, 1 => enable */ #define MALLINCAM_OPTION_FPNC 0x67 /* Fix Pattern Noise Correction @@ -1092,6 +1092,7 @@ MALLINCAM_API(HRESULT) Mallincam_feed_Pipe(HMallincam h, unsigned pipeId); n>0: every n millisecond(s) n<0: every -n frame */ +#define MALLINCAM_OPTION_TECTARGET_RANGE 0x6d /* TEC target range: min(low 16 bits) = (short)(val & 0xffff), max(high 16 bits) = (short)((val >> 16) & 0xffff) */ /* pixel format */ #define MALLINCAM_PIXELFORMAT_RAW8 0x00 @@ -1137,97 +1138,100 @@ MALLINCAM_API(HRESULT) Mallincam_put_RoiN(HMallincam h, unsigned xOffset[], uns MALLINCAM_API(HRESULT) Mallincam_put_XY(HMallincam h, int x, int y); -#define MALLINCAM_IOCONTROLTYPE_GET_SUPPORTEDMODE 0x01 /* 0x01 => Input, 0x02 => Output, (0x01 | 0x02) => support both Input and Output */ -#define MALLINCAM_IOCONTROLTYPE_GET_GPIODIR 0x03 /* 0x00 => Input, 0x01 => Output */ -#define MALLINCAM_IOCONTROLTYPE_SET_GPIODIR 0x04 -#define MALLINCAM_IOCONTROLTYPE_GET_FORMAT 0x05 /* - 0x00 => not connected - 0x01 => Tri-state: Tri-state mode (Not driven) - 0x02 => TTL: TTL level signals - 0x03 => LVDS: LVDS level signals - 0x04 => RS422: RS422 level signals - 0x05 => Opto-coupled - */ -#define MALLINCAM_IOCONTROLTYPE_SET_FORMAT 0x06 -#define MALLINCAM_IOCONTROLTYPE_GET_OUTPUTINVERTER 0x07 /* boolean, only support output signal */ -#define MALLINCAM_IOCONTROLTYPE_SET_OUTPUTINVERTER 0x08 -#define MALLINCAM_IOCONTROLTYPE_GET_INPUTACTIVATION 0x09 /* 0x00 => Rising edge, 0x01 => Falling edge, 0x02 => Level high, 0x03 => Level low */ -#define MALLINCAM_IOCONTROLTYPE_SET_INPUTACTIVATION 0x0a -#define MALLINCAM_IOCONTROLTYPE_GET_DEBOUNCERTIME 0x0b /* debouncer time in microseconds, range: [0, 20000] */ -#define MALLINCAM_IOCONTROLTYPE_SET_DEBOUNCERTIME 0x0c -#define MALLINCAM_IOCONTROLTYPE_GET_TRIGGERSOURCE 0x0d /* - 0x00 => Opto-isolated input - 0x01 => GPIO0 - 0x02 => GPIO1 - 0x03 => Counter - 0x04 => PWM - 0x05 => Software - */ -#define MALLINCAM_IOCONTROLTYPE_SET_TRIGGERSOURCE 0x0e -#define MALLINCAM_IOCONTROLTYPE_GET_TRIGGERDELAY 0x0f /* Trigger delay time in microseconds, range: [0, 5000000] */ -#define MALLINCAM_IOCONTROLTYPE_SET_TRIGGERDELAY 0x10 -#define MALLINCAM_IOCONTROLTYPE_GET_BURSTCOUNTER 0x11 /* Burst Counter, range: [1 ~ 65535] */ -#define MALLINCAM_IOCONTROLTYPE_SET_BURSTCOUNTER 0x12 -#define MALLINCAM_IOCONTROLTYPE_GET_COUNTERSOURCE 0x13 /* 0x00 => Opto-isolated input, 0x01 => GPIO0, 0x02 => GPIO1 */ -#define MALLINCAM_IOCONTROLTYPE_SET_COUNTERSOURCE 0x14 -#define MALLINCAM_IOCONTROLTYPE_GET_COUNTERVALUE 0x15 /* Counter Value, range: [1 ~ 65535] */ -#define MALLINCAM_IOCONTROLTYPE_SET_COUNTERVALUE 0x16 -#define MALLINCAM_IOCONTROLTYPE_SET_RESETCOUNTER 0x18 -#define MALLINCAM_IOCONTROLTYPE_GET_PWM_FREQ 0x19 -#define MALLINCAM_IOCONTROLTYPE_SET_PWM_FREQ 0x1a -#define MALLINCAM_IOCONTROLTYPE_GET_PWM_DUTYRATIO 0x1b -#define MALLINCAM_IOCONTROLTYPE_SET_PWM_DUTYRATIO 0x1c -#define MALLINCAM_IOCONTROLTYPE_GET_PWMSOURCE 0x1d /* 0x00 => Opto-isolated input, 0x01 => GPIO0, 0x02 => GPIO1 */ -#define MALLINCAM_IOCONTROLTYPE_SET_PWMSOURCE 0x1e -#define MALLINCAM_IOCONTROLTYPE_GET_OUTPUTMODE 0x1f /* - 0x00 => Frame Trigger Wait - 0x01 => Exposure Active - 0x02 => Strobe - 0x03 => User output - 0x04 => Counter Output - 0x05 => Timer Output - */ -#define MALLINCAM_IOCONTROLTYPE_SET_OUTPUTMODE 0x20 -#define MALLINCAM_IOCONTROLTYPE_GET_STROBEDELAYMODE 0x21 /* boolean, 0 => pre-delay, 1 => delay; compared to exposure active signal */ -#define MALLINCAM_IOCONTROLTYPE_SET_STROBEDELAYMODE 0x22 -#define MALLINCAM_IOCONTROLTYPE_GET_STROBEDELAYTIME 0x23 /* Strobe delay or pre-delay time in microseconds, range: [0, 5000000] */ -#define MALLINCAM_IOCONTROLTYPE_SET_STROBEDELAYTIME 0x24 -#define MALLINCAM_IOCONTROLTYPE_GET_STROBEDURATION 0x25 /* Strobe duration time in microseconds, range: [0, 5000000] */ -#define MALLINCAM_IOCONTROLTYPE_SET_STROBEDURATION 0x26 -#define MALLINCAM_IOCONTROLTYPE_GET_USERVALUE 0x27 /* - bit0 => Opto-isolated output - bit1 => GPIO0 output - bit2 => GPIO1 output - */ -#define MALLINCAM_IOCONTROLTYPE_SET_USERVALUE 0x28 -#define MALLINCAM_IOCONTROLTYPE_GET_UART_ENABLE 0x29 /* enable: 1 => on; 0 => off */ -#define MALLINCAM_IOCONTROLTYPE_SET_UART_ENABLE 0x2a -#define MALLINCAM_IOCONTROLTYPE_GET_UART_BAUDRATE 0x2b /* baud rate: 0 => 9600; 1 => 19200; 2 => 38400; 3 => 57600; 4 => 115200 */ -#define MALLINCAM_IOCONTROLTYPE_SET_UART_BAUDRATE 0x2c -#define MALLINCAM_IOCONTROLTYPE_GET_UART_LINEMODE 0x2d /* line mode: 0 => TX(GPIO_0)/RX(GPIO_1); 1 => TX(GPIO_1)/RX(GPIO_0) */ -#define MALLINCAM_IOCONTROLTYPE_SET_UART_LINEMODE 0x2e -#define MALLINCAM_IOCONTROLTYPE_GET_EXPO_ACTIVE_MODE 0x2f /* exposure time signal: 0 => specified line, 1 => common exposure time */ -#define MALLINCAM_IOCONTROLTYPE_SET_EXPO_ACTIVE_MODE 0x30 -#define MALLINCAM_IOCONTROLTYPE_GET_EXPO_START_LINE 0x31 /* exposure start line, default: 0 */ -#define MALLINCAM_IOCONTROLTYPE_SET_EXPO_START_LINE 0x32 -#define MALLINCAM_IOCONTROLTYPE_GET_EXPO_END_LINE 0x33 /* exposure end line, default: 0 - end line must be no less than start line - */ -#define MALLINCAM_IOCONTROLTYPE_SET_EXPO_END_LINE 0x34 -#define MALLINCAM_IOCONTROLTYPE_GET_EXEVT_ACTIVE_MODE 0x35 /* exposure event: 0 => specified line, 1 => common exposure time */ -#define MALLINCAM_IOCONTROLTYPE_SET_EXEVT_ACTIVE_MODE 0x36 -#define MALLINCAM_IOCONTROLTYPE_GET_OUTPUTCOUNTERVALUE 0x37 /* Output Counter Value, range: [0 ~ 65535] */ -#define MALLINCAM_IOCONTROLTYPE_SET_OUTPUTCOUNTERVALUE 0x38 -#define MALLINCAM_IOCONTROLTYPE_SET_OUTPUT_PAUSE 0x3a /* Output pause: 1 => puase, 0 => unpause */ -#define MALLINCAM_IOCONTROLTYPE_GET_INPUT_STATE 0x3c /* Input state: 0 (low level) or 1 (high level) */ -#define MALLINCAM_IOCONTROLTYPE_GET_USER_PULSE_HIGH 0x3e /* User pulse high level time: us */ -#define MALLINCAM_IOCONTROLTYPE_SET_USER_PULSE_HIGH 0x3f -#define MALLINCAM_IOCONTROLTYPE_GET_USER_PULSE_LOW 0x40 /* User pulse low level time: us */ -#define MALLINCAM_IOCONTROLTYPE_SET_USER_PULSE_LOW 0x41 -#define MALLINCAM_IOCONTROLTYPE_GET_USER_PULSE_NUMBER 0x42 /* User pulse number: default 0 */ -#define MALLINCAM_IOCONTROLTYPE_SET_USER_PULSE_NUMBER 0x43 - -#define MALLINCAM_IOCONTROL_DELAYTIME_MAX (5 * 1000 * 1000) +#define MALLINCAM_IOCONTROLTYPE_GET_SUPPORTEDMODE 0x01 /* 0x01 => Input, 0x02 => Output, (0x01 | 0x02) => support both Input and Output */ +#define MALLINCAM_IOCONTROLTYPE_GET_GPIODIR 0x03 /* 0x00 => Input, 0x01 => Output */ +#define MALLINCAM_IOCONTROLTYPE_SET_GPIODIR 0x04 +#define MALLINCAM_IOCONTROLTYPE_GET_FORMAT 0x05 /* + 0x00 => not connected + 0x01 => Tri-state: Tri-state mode (Not driven) + 0x02 => TTL: TTL level signals + 0x03 => LVDS: LVDS level signals + 0x04 => RS422: RS422 level signals + 0x05 => Opto-coupled + */ +#define MALLINCAM_IOCONTROLTYPE_SET_FORMAT 0x06 +#define MALLINCAM_IOCONTROLTYPE_GET_OUTPUTINVERTER 0x07 /* boolean, only support output signal */ +#define MALLINCAM_IOCONTROLTYPE_SET_OUTPUTINVERTER 0x08 +#define MALLINCAM_IOCONTROLTYPE_GET_INPUTACTIVATION 0x09 /* 0x00 => Rising edge, 0x01 => Falling edge, 0x02 => Level high, 0x03 => Level low */ +#define MALLINCAM_IOCONTROLTYPE_SET_INPUTACTIVATION 0x0a +#define MALLINCAM_IOCONTROLTYPE_GET_DEBOUNCERTIME 0x0b /* debouncer time in microseconds, range: [0, 20000] */ +#define MALLINCAM_IOCONTROLTYPE_SET_DEBOUNCERTIME 0x0c +#define MALLINCAM_IOCONTROLTYPE_GET_TRIGGERSOURCE 0x0d /* + 0x00 => Opto-isolated input + 0x01 => GPIO0 + 0x02 => GPIO1 + 0x03 => Counter + 0x04 => PWM + 0x05 => Software + */ +#define MALLINCAM_IOCONTROLTYPE_SET_TRIGGERSOURCE 0x0e +#define MALLINCAM_IOCONTROLTYPE_GET_TRIGGERDELAY 0x0f /* Trigger delay time in microseconds, range: [0, 5000000] */ +#define MALLINCAM_IOCONTROLTYPE_SET_TRIGGERDELAY 0x10 +#define MALLINCAM_IOCONTROLTYPE_GET_BURSTCOUNTER 0x11 /* Burst Counter, range: [1 ~ 65535] */ +#define MALLINCAM_IOCONTROLTYPE_SET_BURSTCOUNTER 0x12 +#define MALLINCAM_IOCONTROLTYPE_GET_COUNTERSOURCE 0x13 /* 0x00 => Opto-isolated input, 0x01 => GPIO0, 0x02 => GPIO1 */ +#define MALLINCAM_IOCONTROLTYPE_SET_COUNTERSOURCE 0x14 +#define MALLINCAM_IOCONTROLTYPE_GET_COUNTERVALUE 0x15 /* Counter Value, range: [1 ~ 65535] */ +#define MALLINCAM_IOCONTROLTYPE_SET_COUNTERVALUE 0x16 +#define MALLINCAM_IOCONTROLTYPE_SET_RESETCOUNTER 0x18 +#define MALLINCAM_IOCONTROLTYPE_GET_PWM_FREQ 0x19 +#define MALLINCAM_IOCONTROLTYPE_SET_PWM_FREQ 0x1a +#define MALLINCAM_IOCONTROLTYPE_GET_PWM_DUTYRATIO 0x1b +#define MALLINCAM_IOCONTROLTYPE_SET_PWM_DUTYRATIO 0x1c +#define MALLINCAM_IOCONTROLTYPE_GET_PWMSOURCE 0x1d /* 0x00 => Opto-isolated input, 0x01 => GPIO0, 0x02 => GPIO1 */ +#define MALLINCAM_IOCONTROLTYPE_SET_PWMSOURCE 0x1e +#define MALLINCAM_IOCONTROLTYPE_GET_OUTPUTMODE 0x1f /* + 0x00 => Frame Trigger Wait + 0x01 => Exposure Active + 0x02 => Strobe + 0x03 => User output + 0x04 => Counter Output + 0x05 => Timer Output + */ +#define MALLINCAM_IOCONTROLTYPE_SET_OUTPUTMODE 0x20 +#define MALLINCAM_IOCONTROLTYPE_GET_STROBEDELAYMODE 0x21 /* boolean, 0 => pre-delay, 1 => delay; compared to exposure active signal */ +#define MALLINCAM_IOCONTROLTYPE_SET_STROBEDELAYMODE 0x22 +#define MALLINCAM_IOCONTROLTYPE_GET_STROBEDELAYTIME 0x23 /* Strobe delay or pre-delay time in microseconds, range: [0, 5000000] */ +#define MALLINCAM_IOCONTROLTYPE_SET_STROBEDELAYTIME 0x24 +#define MALLINCAM_IOCONTROLTYPE_GET_STROBEDURATION 0x25 /* Strobe duration time in microseconds, range: [0, 5000000] */ +#define MALLINCAM_IOCONTROLTYPE_SET_STROBEDURATION 0x26 +#define MALLINCAM_IOCONTROLTYPE_GET_USERVALUE 0x27 /* + bit0 => Opto-isolated output + bit1 => GPIO0 output + bit2 => GPIO1 output + */ +#define MALLINCAM_IOCONTROLTYPE_SET_USERVALUE 0x28 +#define MALLINCAM_IOCONTROLTYPE_GET_UART_ENABLE 0x29 /* enable: 1 => on; 0 => off */ +#define MALLINCAM_IOCONTROLTYPE_SET_UART_ENABLE 0x2a +#define MALLINCAM_IOCONTROLTYPE_GET_UART_BAUDRATE 0x2b /* baud rate: 0 => 9600; 1 => 19200; 2 => 38400; 3 => 57600; 4 => 115200 */ +#define MALLINCAM_IOCONTROLTYPE_SET_UART_BAUDRATE 0x2c +#define MALLINCAM_IOCONTROLTYPE_GET_UART_LINEMODE 0x2d /* line mode: 0 => TX(GPIO_0)/RX(GPIO_1); 1 => TX(GPIO_1)/RX(GPIO_0) */ +#define MALLINCAM_IOCONTROLTYPE_SET_UART_LINEMODE 0x2e +#define MALLINCAM_IOCONTROLTYPE_GET_EXPO_ACTIVE_MODE 0x2f /* exposure time signal: 0 => specified line, 1 => common exposure time */ +#define MALLINCAM_IOCONTROLTYPE_SET_EXPO_ACTIVE_MODE 0x30 +#define MALLINCAM_IOCONTROLTYPE_GET_EXPO_START_LINE 0x31 /* exposure start line, default: 0 */ +#define MALLINCAM_IOCONTROLTYPE_SET_EXPO_START_LINE 0x32 +#define MALLINCAM_IOCONTROLTYPE_GET_EXPO_END_LINE 0x33 /* exposure end line, default: 0 + end line must be no less than start line + */ +#define MALLINCAM_IOCONTROLTYPE_SET_EXPO_END_LINE 0x34 +#define MALLINCAM_IOCONTROLTYPE_GET_EXEVT_ACTIVE_MODE 0x35 /* exposure event: 0 => specified line, 1 => common exposure time */ +#define MALLINCAM_IOCONTROLTYPE_SET_EXEVT_ACTIVE_MODE 0x36 +#define MALLINCAM_IOCONTROLTYPE_GET_OUTPUTCOUNTERVALUE 0x37 /* Output Counter Value, range: [0 ~ 65535] */ +#define MALLINCAM_IOCONTROLTYPE_SET_OUTPUTCOUNTERVALUE 0x38 +#define MALLINCAM_IOCONTROLTYPE_SET_OUTPUT_PAUSE 0x3a /* Output pause: 1 => puase, 0 => unpause */ +#define MALLINCAM_IOCONTROLTYPE_GET_INPUT_STATE 0x3b /* Input state: 0 (low level) or 1 (high level) */ +#define MALLINCAM_IOCONTROLTYPE_GET_USER_PULSE_HIGH 0x3d /* User pulse high level time: us */ +#define MALLINCAM_IOCONTROLTYPE_SET_USER_PULSE_HIGH 0x3e +#define MALLINCAM_IOCONTROLTYPE_GET_USER_PULSE_LOW 0x3f /* User pulse low level time: us */ +#define MALLINCAM_IOCONTROLTYPE_SET_USER_PULSE_LOW 0x40 +#define MALLINCAM_IOCONTROLTYPE_GET_USER_PULSE_NUMBER 0x41 /* User pulse number: default 0 */ +#define MALLINCAM_IOCONTROLTYPE_SET_USER_PULSE_NUMBER 0x42 +#define MALLINCAM_IOCONTROLTYPE_GET_EXTERNAL_TRIGGER_NUMBER 0x43 /* External trigger number */ +#define MALLINCAM_IOCONTROLTYPE_GET_DEBOUNCER_TRIGGER_NUMBER 0x45 /* Trigger signal number after debounce */ +#define MALLINCAM_IOCONTROLTYPE_GET_EFFECTIVE_TRIGGER_NUMBER 0x47 /* Effective trigger signal number */ + +#define MALLINCAM_IOCONTROL_DELAYTIME_MAX (5 * 1000 * 1000) /* ioLineNumber: diff --git a/libmallincam/x64/libmallincam.bin b/libmallincam/x64/libmallincam.bin index a07dec2a5..ae3399893 100644 Binary files a/libmallincam/x64/libmallincam.bin and b/libmallincam/x64/libmallincam.bin differ diff --git a/libmeadecam/99-meadecam.rules b/libmeadecam/99-meadecam.rules index c237cae1e..5aad73b70 100644 --- a/libmeadecam/99-meadecam.rules +++ b/libmeadecam/99-meadecam.rules @@ -8,4 +8,3 @@ # grained permission setting. SUBSYSTEM=="usb", ATTRS{idVendor}=="0547", MODE="0666" -SUBSYSTEM=="usb", ATTRS{idVendor}=="0549", MODE="0666" diff --git a/libmeadecam/CMakeLists.txt b/libmeadecam/CMakeLists.txt index 27ac5a616..bec2d0611 100644 --- a/libmeadecam/CMakeLists.txt +++ b/libmeadecam/CMakeLists.txt @@ -1,31 +1,44 @@ cmake_minimum_required(VERSION 3.16) project (libmeadecam) -set (LIBMEADECAM_VERSION "1.0") -set (LIBMEADECAM_SOVERSION "1") +set (LIBMEADECAM_VERSION "56.26054") +set (LIBMEADECAM_SOVERSION "56") list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules/") list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../cmake_modules/") -find_package(USB1 REQUIRED) - include (GNUInstallDirs) include (InstallImported) -include(CMakeCommon) +add_library (meadecam SHARED IMPORTED) + +set_target_properties (meadecam PROPERTIES VERSION ${LIBMEADECAM_VERSION} SOVERSION ${LIBMEADECAM_SOVERSION}) + +if (APPLE) -set(meadecam_LIB_SRCS meadecam.c) -add_library(meadecam SHARED ${meadecam_LIB_SRCS}) -set_target_properties(meadecam PROPERTIES VERSION ${LIBMEADECAM_VERSION} SOVERSION ${LIBMEADECAM_SOVERSION}) -target_link_libraries(meadecam ${USB1_LIBRARIES}) -install(TARGETS meadecam LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) + set_property (TARGET meadecam PROPERTY IMPORTED_LOCATION "mac/libmeadecam.bin") -if (UNIX AND NOT APPLE) + FIX_MACOS_LIBRARIES("libmeadecam" "mac/libmeadecam.bin" "MEADECAM") + +elseif (UNIX AND NOT WIN32) + + if (CMAKE_SYSTEM_PROCESSOR MATCHES "armv+") + set_property (TARGET meadecam PROPERTY IMPORTED_LOCATION "armhf/libmeadecam.bin") + elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64") + set_property (TARGET meadecam PROPERTY IMPORTED_LOCATION "arm64/libmeadecam.bin") + elseif (CMAKE_SIZEOF_VOID_P MATCHES "8") + set_property (TARGET meadecam PROPERTY IMPORTED_LOCATION "x64/libmeadecam.bin") + else () + message (FATAL_ERROR "unsupported architecture.") + endif () # Install udev rules set (UDEVRULES_INSTALL_DIR "/lib/udev/rules.d" CACHE STRING "Base directory for udev rules") - install (FILES 99-meadecam.rules DESTINATION ${UDEVRULES_INSTALL_DIR}) + install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/99-meadecam.rules DESTINATION ${UDEVRULES_INSTALL_DIR}) endif () # Install header files install (FILES meadecam.h DESTINATION include/libmeadecam) + +# Install library +install_imported (TARGETS meadecam DESTINATION ${CMAKE_INSTALL_LIBDIR}) diff --git a/libmeadecam/gen_func_table b/libmeadecam/gen_func_table deleted file mode 100755 index a16da4a8a..000000000 --- a/libmeadecam/gen_func_table +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash -# Parse a toupcam header file to get symbol info -# This isn't perfect and the output requires some manual fixes - -while read line; do - if grep -q wchar <<< "$line"; then - continue - fi - args=$(echo $line | cut -d '(' -f2 | cut -d ')' -f1) - OLDIFS=$IFS - IFS=$'\n' - params="" - while read f; do - #echo f is $f - params+="$(echo $f | rev | cut -d' ' -f1 | rev | cut -d'[' -f1), " - done <<< $(echo $args | tr ',' '\n') - IFS=$OLDIFS - params=$(echo $params | sed 's/,$//') - line="$(echo $line | sed 's/^C /C(/' | cut -d';' -f1)" - echo "$line, ($params)) \\" -done <<< $(grep -E "^TOUPCAM_API" $1 | sed 's/^TOUPCAM_API(/C /' | sed 's/) /, /' | sed 's/(/, (/') diff --git a/libmeadecam/libmeadecam.spec b/libmeadecam/libmeadecam.spec index 7ae5b8083..6936a6a75 100644 --- a/libmeadecam/libmeadecam.spec +++ b/libmeadecam/libmeadecam.spec @@ -80,5 +80,5 @@ make DESTDIR=%{buildroot} install %changelog -* initial release 2022-05-27 +* Touptek, xiangqianyong@hotmail.com diff --git a/libmeadecam/meadecam.c b/libmeadecam/meadecam.c deleted file mode 100644 index 4744946a5..000000000 --- a/libmeadecam/meadecam.c +++ /dev/null @@ -1,1663 +0,0 @@ -#include -#include -#include -#include -#include -#include "meadecam.h" - -#if defined(__APPLE__) -#define LIBTOUPCAM_NAME "libtoupcam.dylib" -#else -#define LIBTOUPCAM_NAME "libtoupcam.so" -#endif - -static void *libtoupcam; - -/* Create a function pointer for a given toupcam function. */ -#define C_PTR(RET, DEC, PARAM, ARG) static TOUPCAM_API(RET) (*Meade_ ## DEC) PARAM; - -/* Define a function that calls the corresponding toupcam function */ -#define C_DEF(RET, DEC, PARAM, ARG) TOUPCAM_API(RET) DEC PARAM \ -{ \ - return Meade_ ## DEC ARG; \ -} - -#define MYDLSYM(X, Y) dlsym(X, #Y) -#define C_ASSIGN(RET, DEC, PARAM, ARG) Meade_ ## DEC = MYDLSYM(libtoupcam, DEC ); - -#define TOUPCAM_LIST \ -C(const char*, Toupcam_Version, (), ()) \ -C(HToupcam, Toupcam_Open, (const char* camId), (camId)) \ -C(HToupcam, Toupcam_OpenByIndex, (unsigned index), (index)) \ -C(void, Toupcam_Close, (HToupcam h), (h)) \ -C(HRESULT, Toupcam_StartPullModeWithCallback, (HToupcam h, PTOUPCAM_EVENT_CALLBACK funEvent, void* ctxEvent), (h, funEvent, ctxEvent)) \ -C(HRESULT, Toupcam_PullImageV3, (HToupcam h, void* pImageData, int bStill, int bits, int rowPitch, ToupcamFrameInfoV3* pInfo), (h, pImageData, bStill, bits, rowPitch, pInfo)) \ -C(HRESULT, Toupcam_WaitImageV3, (HToupcam h, unsigned nWaitMS, void* pImageData, int bStill, int bits, int rowPitch, ToupcamFrameInfoV3* pInfo), (h, nWaitMS, pImageData, bStill, bits, rowPitch, pInfo)) \ -C(HRESULT, Toupcam_PullImageV2, (HToupcam h, void* pImageData, int bits, ToupcamFrameInfoV2* pInfo), (h, pImageData, bits, pInfo)) \ -C(HRESULT, Toupcam_PullStillImageV2, (HToupcam h, void* pImageData, int bits, ToupcamFrameInfoV2* pInfo), (h, pImageData, bits, pInfo)) \ -C(HRESULT, Toupcam_PullImageWithRowPitchV2, (HToupcam h, void* pImageData, int bits, int rowPitch, ToupcamFrameInfoV2* pInfo), (h, pImageData, bits, rowPitch, pInfo)) \ -C(HRESULT, Toupcam_PullStillImageWithRowPitchV2, (HToupcam h, void* pImageData, int bits, int rowPitch, ToupcamFrameInfoV2* pInfo), (h, pImageData, bits, rowPitch, pInfo)) \ -C(HRESULT, Toupcam_PullImage, (HToupcam h, void* pImageData, int bits, unsigned* pnWidth, unsigned* pnHeight), (h, pImageData, bits, pnWidth, pnHeight)) \ -C(HRESULT, Toupcam_PullStillImage, (HToupcam h, void* pImageData, int bits, unsigned* pnWidth, unsigned* pnHeight), (h, pImageData, bits, pnWidth, pnHeight)) \ -C(HRESULT, Toupcam_PullImageWithRowPitch, (HToupcam h, void* pImageData, int bits, int rowPitch, unsigned* pnWidth, unsigned* pnHeight), (h, pImageData, bits, rowPitch, pnWidth, pnHeight)) \ -C(HRESULT, Toupcam_PullStillImageWithRowPitch, (HToupcam h, void* pImageData, int bits, int rowPitch, unsigned* pnWidth, unsigned* pnHeight), (h, pImageData, bits, rowPitch, pnWidth, pnHeight)) \ -C(HRESULT, Toupcam_StartPushModeV4, (HToupcam h, PTOUPCAM_DATA_CALLBACK_V4 funData, void* ctxData, PTOUPCAM_EVENT_CALLBACK funEvent, void* ctxEvent), (h, funData, ctxData, funEvent, ctxEvent)) \ -C(HRESULT, Toupcam_StartPushModeV3, (HToupcam h, PTOUPCAM_DATA_CALLBACK_V3 funData, void* ctxData, PTOUPCAM_EVENT_CALLBACK funEvent, void* ctxEvent), (h, funData, ctxData, funEvent, ctxEvent)) \ -C(HRESULT, Toupcam_Stop, (HToupcam h), (h)) \ -C(HRESULT, Toupcam_Pause, (HToupcam h, int bPause), (h, bPause)) \ -C(HRESULT, Toupcam_Snap, (HToupcam h, unsigned nResolutionIndex), (h, nResolutionIndex)) \ -C(HRESULT, Toupcam_SnapN, (HToupcam h, unsigned nResolutionIndex, unsigned nNumber), (h, nResolutionIndex, nNumber)) \ -C(HRESULT, Toupcam_SnapR, (HToupcam h, unsigned nResolutionIndex, unsigned nNumber), (h, nResolutionIndex, nNumber)) \ -C(HRESULT, Toupcam_Trigger, (HToupcam h, unsigned short nNumber), (h, nNumber)) \ -C(HRESULT, Toupcam_TriggerSync, (HToupcam h, unsigned nTimeout, void* pImageData, int bits, int rowPitch, ToupcamFrameInfoV3* pInfo), (h, nTimeout, pImageData, bits, rowPitch, pInfo)) \ -C(HRESULT, Toupcam_put_Size, (HToupcam h, int nWidth, int nHeight), (h, nWidth, nHeight)) \ -C(HRESULT, Toupcam_get_Size, (HToupcam h, int* pWidth, int* pHeight), (h, pWidth, pHeight)) \ -C(HRESULT, Toupcam_put_eSize, (HToupcam h, unsigned nResolutionIndex), (h, nResolutionIndex)) \ -C(HRESULT, Toupcam_get_eSize, (HToupcam h, unsigned* pnResolutionIndex), (h, pnResolutionIndex)) \ -C(HRESULT, Toupcam_get_FinalSize, (HToupcam h, int* pWidth, int* pHeight), (h, pWidth, pHeight)) \ -C(HRESULT, Toupcam_get_ResolutionNumber, (HToupcam h), (h)) \ -C(HRESULT, Toupcam_get_Resolution, (HToupcam h, unsigned nResolutionIndex, int* pWidth, int* pHeight), (h, nResolutionIndex, pWidth, pHeight)) \ -C(HRESULT, Toupcam_get_ResolutionRatio, (HToupcam h, unsigned nResolutionIndex, int* pNumerator, int* pDenominator), (h, nResolutionIndex, pNumerator, pDenominator)) \ -C(HRESULT, Toupcam_get_Field, (HToupcam h), (h)) \ -C(HRESULT, Toupcam_get_RawFormat, (HToupcam h, unsigned* pFourCC, unsigned* pBitsPerPixel), (h, pFourCC, pBitsPerPixel)) \ -C(HRESULT, Toupcam_get_AutoExpoEnable, (HToupcam h, int* bAutoExposure), (h, bAutoExposure)) \ -C(HRESULT, Toupcam_put_AutoExpoEnable, (HToupcam h, int bAutoExposure), (h, bAutoExposure)) \ -C(HRESULT, Toupcam_get_AutoExpoTarget, (HToupcam h, unsigned short* Target), (h, Target)) \ -C(HRESULT, Toupcam_put_AutoExpoTarget, (HToupcam h, unsigned short Target), (h, Target)) \ -C(HRESULT, Toupcam_put_AutoExpoRange, (HToupcam h, unsigned maxTime, unsigned minTime, unsigned short maxGain, unsigned short minGain), (h, maxTime, minTime, maxGain, minGain)) \ -C(HRESULT, Toupcam_get_AutoExpoRange, (HToupcam h, unsigned* maxTime, unsigned* minTime, unsigned short* maxGain, unsigned short* minGain), (h, maxTime, minTime, maxGain, minGain)) \ -C(HRESULT, Toupcam_put_MaxAutoExpoTimeAGain, (HToupcam h, unsigned maxTime, unsigned short maxGain), (h, maxTime, maxGain)) \ -C(HRESULT, Toupcam_get_MaxAutoExpoTimeAGain, (HToupcam h, unsigned* maxTime, unsigned short* maxGain), (h, maxTime, maxGain)) \ -C(HRESULT, Toupcam_put_MinAutoExpoTimeAGain, (HToupcam h, unsigned minTime, unsigned short minGain), (h, minTime, minGain)) \ -C(HRESULT, Toupcam_get_MinAutoExpoTimeAGain, (HToupcam h, unsigned* minTime, unsigned short* minGain), (h, minTime, minGain)) \ -C(HRESULT, Toupcam_get_ExpoTime, (HToupcam h, unsigned* Time), (h, Time)) \ -C(HRESULT, Toupcam_put_ExpoTime, (HToupcam h, unsigned Time), (h, Time)) \ -C(HRESULT, Toupcam_get_RealExpoTime, (HToupcam h, unsigned* Time), (h, Time)) \ -C(HRESULT, Toupcam_get_ExpTimeRange, (HToupcam h, unsigned* nMin, unsigned* nMax, unsigned* nDef), (h, nMin, nMax, nDef)) \ -C(HRESULT, Toupcam_get_ExpoAGain, (HToupcam h, unsigned short* Gain), (h, Gain)) \ -C(HRESULT, Toupcam_put_ExpoAGain, (HToupcam h, unsigned short Gain), (h, Gain)) \ -C(HRESULT, Toupcam_get_ExpoAGainRange, (HToupcam h, unsigned short* nMin, unsigned short* nMax, unsigned short* nDef), (h, nMin, nMax, nDef)) \ -C(HRESULT, Toupcam_AwbOnce, (HToupcam h, PITOUPCAM_TEMPTINT_CALLBACK funTT, void* ctxTT), (h, funTT, ctxTT)) \ -C(HRESULT, Toupcam_AwbInit, (HToupcam h, PITOUPCAM_WHITEBALANCE_CALLBACK funWB, void* ctxWB), (h, funWB, ctxWB)) \ -C(HRESULT, Toupcam_put_TempTint, (HToupcam h, int nTemp, int nTint), (h, nTemp, nTint)) \ -C(HRESULT, Toupcam_get_TempTint, (HToupcam h, int* nTemp, int* nTint), (h, nTemp, nTint)) \ -C(HRESULT, Toupcam_put_WhiteBalanceGain, (HToupcam h, int aGain[3]), (h, aGain)) \ -C(HRESULT, Toupcam_get_WhiteBalanceGain, (HToupcam h, int aGain[3]), (h, aGain)) \ -C(HRESULT, Toupcam_AbbOnce, (HToupcam h, PITOUPCAM_BLACKBALANCE_CALLBACK funBB, void* ctxBB), (h, funBB, ctxBB)) \ -C(HRESULT, Toupcam_put_BlackBalance, (HToupcam h, unsigned short aSub[3]), (h, aSub)) \ -C(HRESULT, Toupcam_get_BlackBalance, (HToupcam h, unsigned short aSub[3]), (h, aSub)) \ -C(HRESULT, Toupcam_FfcOnce, (HToupcam h), (h)) \ -C(HRESULT, Toupcam_FfcExport, (HToupcam h, const char* filepath), (h, filepath)) \ -C(HRESULT, Toupcam_FfcImport, (HToupcam h, const char* filepath), (h, filepath)) \ -C(HRESULT, Toupcam_DfcOnce, (HToupcam h), (h)) \ -C(HRESULT, Toupcam_DfcExport, (HToupcam h, const char* filepath), (h, filepath)) \ -C(HRESULT, Toupcam_DfcImport, (HToupcam h, const char* filepath), (h, filepath)) \ -C(HRESULT, Toupcam_put_Hue, (HToupcam h, int Hue), (h, Hue)) \ -C(HRESULT, Toupcam_get_Hue, (HToupcam h, int* Hue), (h, Hue)) \ -C(HRESULT, Toupcam_put_Saturation, (HToupcam h, int Saturation), (h, Saturation)) \ -C(HRESULT, Toupcam_get_Saturation, (HToupcam h, int* Saturation), (h, Saturation)) \ -C(HRESULT, Toupcam_put_Brightness, (HToupcam h, int Brightness), (h, Brightness)) \ -C(HRESULT, Toupcam_get_Brightness, (HToupcam h, int* Brightness), (h, Brightness)) \ -C(HRESULT, Toupcam_get_Contrast, (HToupcam h, int* Contrast), (h, Contrast)) \ -C(HRESULT, Toupcam_put_Contrast, (HToupcam h, int Contrast), (h, Contrast)) \ -C(HRESULT, Toupcam_get_Gamma, (HToupcam h, int* Gamma), (h, Gamma)) \ -C(HRESULT, Toupcam_put_Gamma, (HToupcam h, int Gamma), (h, Gamma)) \ -C(HRESULT, Toupcam_get_Chrome, (HToupcam h, int* bChrome), (h, bChrome)) \ -C(HRESULT, Toupcam_put_Chrome, (HToupcam h, int bChrome), (h, bChrome)) \ -C(HRESULT, Toupcam_get_VFlip, (HToupcam h, int* bVFlip), (h, bVFlip)) \ -C(HRESULT, Toupcam_put_VFlip, (HToupcam h, int bVFlip), (h, bVFlip)) \ -C(HRESULT, Toupcam_get_HFlip, (HToupcam h, int* bHFlip), (h, bHFlip)) \ -C(HRESULT, Toupcam_put_HFlip, (HToupcam h, int bHFlip), (h, bHFlip)) \ -C(HRESULT, Toupcam_get_Negative, (HToupcam h, int* bNegative), (h, bNegative)) \ -C(HRESULT, Toupcam_put_Negative, (HToupcam h, int bNegative), (h, bNegative)) \ -C(HRESULT, Toupcam_put_Speed, (HToupcam h, unsigned short nSpeed), (h, nSpeed)) \ -C(HRESULT, Toupcam_get_Speed, (HToupcam h, unsigned short* pSpeed), (h, pSpeed)) \ -C(HRESULT, Toupcam_get_MaxSpeed, (HToupcam h), (h)) \ -C(HRESULT, Toupcam_get_FanMaxSpeed, (HToupcam h), (h)) \ -C(HRESULT, Toupcam_get_MaxBitDepth, (HToupcam h), (h)) \ -C(HRESULT, Toupcam_put_HZ, (HToupcam h, int nHZ), (h, nHZ)) \ -C(HRESULT, Toupcam_get_HZ, (HToupcam h, int* nHZ), (h, nHZ)) \ -C(HRESULT, Toupcam_put_Mode, (HToupcam h, int bSkip), (h, bSkip)) \ -C(HRESULT, Toupcam_get_Mode, (HToupcam h, int* bSkip), (h, bSkip)) \ -C(HRESULT, Toupcam_put_AWBAuxRect, (HToupcam h, const RECT* pAuxRect), (h, pAuxRect)) \ -C(HRESULT, Toupcam_get_AWBAuxRect, (HToupcam h, RECT* pAuxRect), (h, pAuxRect)) \ -C(HRESULT, Toupcam_put_AEAuxRect, (HToupcam h, const RECT* pAuxRect), (h, pAuxRect)) \ -C(HRESULT, Toupcam_get_AEAuxRect, (HToupcam h, RECT* pAuxRect), (h, pAuxRect)) \ -C(HRESULT, Toupcam_put_ABBAuxRect, (HToupcam h, const RECT* pAuxRect), (h, pAuxRect)) \ -C(HRESULT, Toupcam_get_ABBAuxRect, (HToupcam h, RECT* pAuxRect), (h, pAuxRect)) \ -C(HRESULT, Toupcam_get_MonoMode, (HToupcam h), (h)) \ -C(HRESULT, Toupcam_get_StillResolutionNumber, (HToupcam h), (h)) \ -C(HRESULT, Toupcam_get_StillResolution, (HToupcam h, unsigned nResolutionIndex, int* pWidth, int* pHeight), (h, nResolutionIndex, pWidth, pHeight)) \ -C(HRESULT, Toupcam_put_RealTime, (HToupcam h, int val), (h, val)) \ -C(HRESULT, Toupcam_get_RealTime, (HToupcam h, int* val), (h, val)) \ -C(HRESULT, Toupcam_Flush, (HToupcam h), (h)) \ -C(HRESULT, Toupcam_get_Temperature, (HToupcam h, short* pTemperature), (h, pTemperature)) \ -C(HRESULT, Toupcam_put_Temperature, (HToupcam h, short nTemperature), (h, nTemperature)) \ -C(HRESULT, Toupcam_get_Revision, (HToupcam h, unsigned short* pRevision), (h, pRevision)) \ -C(HRESULT, Toupcam_get_SerialNumber, (HToupcam h, char sn[32]), (h, sn)) \ -C(HRESULT, Toupcam_get_FwVersion, (HToupcam h, char fwver[16]), (h, fwver)) \ -C(HRESULT, Toupcam_get_HwVersion, (HToupcam h, char hwver[16]), (h, hwver)) \ -C(HRESULT, Toupcam_get_ProductionDate, (HToupcam h, char pdate[10]), (h, pdate)) \ -C(HRESULT, Toupcam_get_FpgaVersion, (HToupcam h, char fpgaver[16]), (h, fpgaver)) \ -C(HRESULT, Toupcam_get_PixelSize, (HToupcam h, unsigned nResolutionIndex, float* x, float* y), (h, nResolutionIndex, x, y)) \ -C(HRESULT, Toupcam_put_LevelRange, (HToupcam h, unsigned short aLow[4], unsigned short aHigh[4]), (h, aLow, aHigh)) \ -C(HRESULT, Toupcam_get_LevelRange, (HToupcam h, unsigned short aLow[4], unsigned short aHigh[4]), (h, aLow, aHigh)) \ -C(HRESULT, Toupcam_put_LevelRangeV2, (HToupcam h, unsigned short mode, const RECT* pRoiRect, unsigned short aLow[4], unsigned short aHigh[4]), (h, mode, pRoiRect, aLow, aHigh)) \ -C(HRESULT, Toupcam_get_LevelRangeV2, (HToupcam h, unsigned short* pMode, RECT* pRoiRect, unsigned short aLow[4], unsigned short aHigh[4]), (h, pMode, pRoiRect, aLow, aHigh)) \ -C(HRESULT, Toupcam_LevelRangeAuto, (HToupcam h), (h)) \ -C(HRESULT, Toupcam_GetHistogram, (HToupcam h, PITOUPCAM_HISTOGRAM_CALLBACK funHistogram, void* ctxHistogram), (h, funHistogram, ctxHistogram)) \ -C(HRESULT, Toupcam_GetHistogramV2, (HToupcam h, PITOUPCAM_HISTOGRAM_CALLBACKV2 funHistogramV2, void* ctxHistogramV2), (h, funHistogramV2, ctxHistogramV2)) \ -C(HRESULT, Toupcam_put_LEDState, (HToupcam h, unsigned short iLed, unsigned short iState, unsigned short iPeriod), (h, iLed, iState, iPeriod)) \ -C(HRESULT, Toupcam_write_EEPROM, (HToupcam h, unsigned addr, const unsigned char* pBuffer, unsigned nBufferLen), (h, addr, pBuffer, nBufferLen)) \ -C(HRESULT, Toupcam_read_EEPROM, (HToupcam h, unsigned addr, unsigned char* pBuffer, unsigned nBufferLen), (h, addr, pBuffer, nBufferLen)) \ -C(HRESULT, Toupcam_read_Pipe, (HToupcam h, unsigned pipeId, void* pBuffer, unsigned nBufferLen), (h, pipeId, pBuffer, nBufferLen)) \ -C(HRESULT, Toupcam_write_Pipe, (HToupcam h, unsigned pipeId, const void* pBuffer, unsigned nBufferLen), (h, pipeId, pBuffer, nBufferLen)) \ -C(HRESULT, Toupcam_feed_Pipe, (HToupcam h, unsigned pipeId), (h, pipeId)) \ -C(HRESULT, Toupcam_put_Option, (HToupcam h, unsigned iOption, int iValue), (h, iOption, iValue)) \ -C(HRESULT, Toupcam_get_Option, (HToupcam h, unsigned iOption, int* piValue), (h, iOption, piValue)) \ -C(HRESULT, Toupcam_put_Roi, (HToupcam h, unsigned xOffset, unsigned yOffset, unsigned xWidth, unsigned yHeight), (h, xOffset, yOffset, xWidth, yHeight)) \ -C(HRESULT, Toupcam_get_Roi, (HToupcam h, unsigned* pxOffset, unsigned* pyOffset, unsigned* pxWidth, unsigned* pyHeight), (h, pxOffset, pyOffset, pxWidth, pyHeight)) \ -C(HRESULT, Toupcam_Replug, (const char* camId), (camId)) \ -C(HRESULT, Toupcam_get_AfParam, (HToupcam h, ToupcamAfParam* pAfParam), (h, pAfParam)) \ -C(HRESULT, Toupcam_IoControl, (HToupcam h, unsigned ioLineNumber, unsigned nType, int outVal, int* inVal), (h, ioLineNumber, nType, outVal, inVal)) \ -C(HRESULT, Toupcam_rwc_Flash, (HToupcam h, unsigned action, unsigned addr, unsigned len, void* pData), (h, action, addr, len, pData)) \ -C(HRESULT, Toupcam_write_UART, (HToupcam h, const unsigned char* pData, unsigned nDataLen), (h, pData, nDataLen)) \ -C(HRESULT, Toupcam_read_UART, (HToupcam h, unsigned char* pBuffer, unsigned nBufferLen), (h, pBuffer, nBufferLen)) \ -C(const ToupcamModelV2**, Toupcam_all_Model, (), ()) \ -C(const ToupcamModelV2*, Toupcam_query_Model, (HToupcam h), (h)) \ -C(const ToupcamModelV2*, Toupcam_get_Model, (unsigned short idVendor, unsigned short idProduct), (idVendor, idProduct)) \ -C(HRESULT, Toupcam_Update, (const char* camId, const char* filePath, PITOUPCAM_PROGRESS funProgress, void* ctxProgress), (camId, filePath, funProgress, ctxProgress)) \ -C(HRESULT, Toupcam_put_Linear, (HToupcam h, const unsigned char* v8, const unsigned short* v16), (h, v8, v16)) \ -C(HRESULT, Toupcam_put_Curve, (HToupcam h, const unsigned char* v8, const unsigned short* v16), (h, v8, v16)) \ -C(HRESULT, Toupcam_put_ColorMatrix, (HToupcam h, const double v[9]), (h, v)) \ -C(HRESULT, Toupcam_put_InitWBGain, (HToupcam h, const unsigned short v[3]), (h, v)) \ -C(HRESULT, Toupcam_get_FrameRate, (HToupcam h, unsigned* nFrame, unsigned* nTime, unsigned* nTotalFrame), (h, nFrame, nTime, nTotalFrame)) \ -C(HRESULT, Toupcam_ST4PlusGuide, (HToupcam h, unsigned nDirect, unsigned nDuration), (h, nDirect, nDuration)) \ -C(HRESULT, Toupcam_ST4PlusGuideState, (HToupcam h), (h)) \ -C(HRESULT, Toupcam_Gain2TempTint, (const int gain[3], int* temp, int* tint), (gain, temp, tint)) \ -C(void, Toupcam_TempTint2Gain, (const int temp, const int tint, int gain[3]), (temp, tint, gain)) \ -C(double, Toupcam_calc_ClarityFactor, (const void* pImageData, int bits, unsigned nImgWidth, unsigned nImgHeight), (pImageData, bits, nImgWidth, nImgHeight)) \ -C(double, Toupcam_calc_ClarityFactorV2, (const void* pImageData, int bits, unsigned nImgWidth, unsigned nImgHeight, unsigned xOffset, unsigned yOffset, unsigned xWidth, unsigned yHeight), (pImageData, bits, nImgWidth, nImgHeight, xOffset, yOffset, xWidth, yHeight)) \ -C(void, Toupcam_deBayerV2, (unsigned nFourCC, int nW, int nH, const void* input, void* output, unsigned char nBitDepth, unsigned char nBitCount), (nFourCC, nW, nH, input, output, nBitDepth, nBitCount)) \ -C(void, Toupcam_deBayer, (unsigned nFourCC, int nW, int nH, const void* input, void* output, unsigned char nBitDepth), (nFourCC, nW, nH, input, output, nBitDepth)) \ -C(HRESULT, Toupcam_put_Demosaic, (HToupcam h, PTOUPCAM_DEMOSAIC_CALLBACK funDemosaic, void* ctxDemosaic), (h, funDemosaic, ctxDemosaic)) \ -C(unsigned, Toupcam_Enum, (ToupcamDevice arr[TOUPCAM_MAX]), (arr)) \ -C(HRESULT, Toupcam_StartPushModeV2, (HToupcam h, PTOUPCAM_DATA_CALLBACK_V2 funData, void* ctxData), (h, funData, ctxData)) \ -C(HRESULT, Toupcam_StartPushMode, (HToupcam h, PTOUPCAM_DATA_CALLBACK funData, void* ctxData), (h, funData, ctxData)) \ -C(HRESULT, Toupcam_put_ExpoCallback, (HToupcam h, PITOUPCAM_EXPOSURE_CALLBACK funExpo, void* ctxExpo), (h, funExpo, ctxExpo)) \ -C(HRESULT, Toupcam_put_ChromeCallback, (HToupcam h, PITOUPCAM_CHROME_CALLBACK funChrome, void* ctxChrome), (h, funChrome, ctxChrome)) \ -C(HRESULT, Toupcam_FfcOnePush, (HToupcam h), (h)) \ -C(HRESULT, Toupcam_DfcOnePush, (HToupcam h), (h)) \ -C(HRESULT, Toupcam_AwbOnePush, (HToupcam h, PITOUPCAM_TEMPTINT_CALLBACK funTT, void* ctxTT), (h, funTT, ctxTT)) \ -C(HRESULT, Toupcam_AbbOnePush, (HToupcam h, PITOUPCAM_BLACKBALANCE_CALLBACK funBB, void* ctxBB), (h, funBB, ctxBB)) \ -C(HRESULT, Toupcam_GigeEnable, (PTOUPCAM_HOTPLUG funHotPlug, void* ctxHotPlug), (funHotPlug, ctxHotPlug)) \ -C(void, Toupcam_HotPlug, (PTOUPCAM_HOTPLUG funHotPlug, void* ctxHotPlug), (funHotPlug, ctxHotPlug)) \ -C(HRESULT, Toupcam_AAF, (HToupcam h, int action, int outVal, int* inVal), (h, action, outVal, inVal)) \ -C(HRESULT, Toupcam_put_TempTintInit, (HToupcam h, PITOUPCAM_TEMPTINT_CALLBACK funTT, void* ctxTT), (h, funTT, ctxTT)) \ -C(HRESULT, Toupcam_put_ProcessMode, (HToupcam h, unsigned nProcessMode), (h, nProcessMode)) \ -C(HRESULT, Toupcam_get_ProcessMode, (HToupcam h, unsigned* pnProcessMode), (h, pnProcessMode)) \ -C(HRESULT, Toupcam_put_RoiMode, (HToupcam h, int bRoiMode, int xOffset, int yOffset), (h, bRoiMode, xOffset, yOffset)) \ -C(HRESULT, Toupcam_get_RoiMode, (HToupcam h, int* pbRoiMode, int* pxOffset, int* pyOffset), (h, pbRoiMode, pxOffset, pyOffset)) \ -C(HRESULT, Toupcam_put_VignetEnable, (HToupcam h, int bEnable), (h, bEnable)) \ -C(HRESULT, Toupcam_get_VignetEnable, (HToupcam h, int* bEnable), (h, bEnable)) \ -C(HRESULT, Toupcam_put_VignetAmountInt, (HToupcam h, int nAmount), (h, nAmount)) \ -C(HRESULT, Toupcam_get_VignetAmountInt, (HToupcam h, int* nAmount), (h, nAmount)) \ -C(HRESULT, Toupcam_put_VignetMidPointInt, (HToupcam h, int nMidPoint), (h, nMidPoint)) \ -C(HRESULT, Toupcam_get_VignetMidPointInt, (HToupcam h, int* nMidPoint), (h, nMidPoint)) \ -C(HRESULT, Toupcam_set_Name, (HToupcam h, const char* name), (h, name)) \ -C(HRESULT, Toupcam_query_Name, (HToupcam h, char name[64]), (h, name)) \ -C(HRESULT, Toupcam_put_Name, (const char* camId, const char* name), (camId, name)) \ -C(HRESULT, Toupcam_get_Name, (const char* camId, char name[64]), (camId, name)) \ -C(unsigned, Toupcam_EnumWithName, (ToupcamDeviceV2 pti[TOUPCAM_MAX]), (pti)) \ -C(HRESULT, Toupcam_put_RoiN, (HToupcam h, unsigned xOffset[], unsigned yOffset[], unsigned xWidth[], unsigned yHeight[], unsigned Num), (h, xOffset, yOffset, xWidth, yHeight, Num)) \ -C(HRESULT, Toupcam_log_File, (const char *filepath), (filepath)) \ -C(HRESULT, Toupcam_log_Level, (unsigned level), (level)) - - -#define C C_PTR -TOUPCAM_LIST -#undef C - -#define C C_DEF -TOUPCAM_LIST -#undef C - -const char *err; -static __attribute__((constructor)) void con() { - libtoupcam = dlopen(LIBTOUPCAM_NAME, RTLD_LAZY); -#define C C_ASSIGN -TOUPCAM_LIST -#undef C -} - -#if 0 -/* These are the cameras that are supported by the Touptek driver. */ -enum { - TOUPCAM_MODEL_UA130CA, - TOUPCAM_MODEL_G3CMOS10300KPA, - TOUPCAM_MODEL_G3CMOS10300KPA_USB2, - TOUPCAM_MODEL_E3CMOS01500KMA, - TOUPCAM_MODEL_E3CMOS01500KMA_USB2, - TOUPCAM_MODEL_MTR3CCD01400KPB, - TOUPCAM_MODEL_MTR3CCD01400KPB_USB2, - TOUPCAM_MODEL_UA1600CA, - TOUPCAM_MODEL_MTR3CCD09000KPA, - TOUPCAM_MODEL_MTR3CCD09000KPA_USB2, - TOUPCAM_MODEL_G3M178M, - TOUPCAM_MODEL_G3M178M_USB2, - TOUPCAM_MODEL_G3M178C, - TOUPCAM_MODEL_G3M178C_USB2, - TOUPCAM_MODEL_U3CMOS16000KPB, - TOUPCAM_MODEL_U3CMOS16000KPB_USB2, - TOUPCAM_MODEL_E3ISPM02000KPA, - TOUPCAM_MODEL_E3ISPM02000KPA_USB2, - TOUPCAM_MODEL_G3CMOS20000KMA, - TOUPCAM_MODEL_G3CMOS20000KMA_USB2, - TOUPCAM_MODEL_U3CCD12000KPA, - TOUPCAM_MODEL_U3CCD12000KPA_USB2, - TOUPCAM_MODEL_ATR3CMOS16000KMA, - TOUPCAM_MODEL_ATR3CMOS16000KMA_USB2, - TOUPCAM_MODEL_G3CMOS20000KPA, - TOUPCAM_MODEL_G3CMOS20000KPA_USB2, - TOUPCAM_MODEL_G3CMOS02300KPA, - TOUPCAM_MODEL_G3CMOS02300KPA_USB2, - TOUPCAM_MODEL_I3ISPM12000KPA, - TOUPCAM_MODEL_I3ISPM12000KPA_USB2, - TOUPCAM_MODEL_U3CCD09000KPA, - TOUPCAM_MODEL_U3CCD09000KPA_USB2, - TOUPCAM_MODEL_G3CMOS02300KMC, - TOUPCAM_MODEL_G3CMOS02300KMC_USB2, - TOUPCAM_MODEL_E3ISPM12300KPA, - TOUPCAM_MODEL_E3ISPM12300KPA_USB2, - TOUPCAM_MODEL_ECMOS06600KPA, - TOUPCAM_MODEL_ECMOS08300KPA, - TOUPCAM_MODEL_UA1000CA, - TOUPCAM_MODEL_UA1000CA_2, - TOUPCAM_MODEL_UA510CA, - TOUPCAM_MODEL_UA510CA_2, - TOUPCAM_MODEL_UA310CA, - TOUPCAM_MODEL_UA310CA_2, - TOUPCAM_MODEL_E3ISPM08300KPA, - TOUPCAM_MODEL_E3ISPM08300KPA_USB2, - TOUPCAM_MODEL_G3CMOS16000KMA, - TOUPCAM_MODEL_G3CMOS16000KMA_USB2, - TOUPCAM_MODEL_G3CMOS16000KPA, - TOUPCAM_MODEL_G3CMOS16000KPA_USB2, - TOUPCAM_MODEL_G3M287M, - TOUPCAM_MODEL_G3M287M_USB2, - TOUPCAM_MODEL_G3M385C, - TOUPCAM_MODEL_G3M385C_USB2, - TOUPCAM_MODEL_EP3CMOS00400KMA, - TOUPCAM_MODEL_EP3CMOS00400KMA_USB2, - TOUPCAM_MODEL_EP3CMOS00400KPA, - TOUPCAM_MODEL_EP3CMOS00400KPA_USB2, - TOUPCAM_MODEL_E3CMOS00400KMA, - TOUPCAM_MODEL_E3CMOS00400KMA_USB2, - TOUPCAM_MODEL_E3CMOS00400KPA, - TOUPCAM_MODEL_E3CMOS00400KPA_USB2, - TOUPCAM_MODEL_G3M290C, - TOUPCAM_MODEL_G3M290C_USB2, - TOUPCAM_MODEL_G3M290M, - TOUPCAM_MODEL_G3M290M_USB2, - TOUPCAM_MODEL_G3M224C, - TOUPCAM_MODEL_G3M224C_USB2, - TOUPCAM_MODEL_U3ISPM16000KPB, - TOUPCAM_MODEL_U3ISPM16000KPB_USB2, - TOUPCAM_MODEL_E3CMOS05000KMA, - TOUPCAM_MODEL_E3CMOS05000KMA_USB2, - TOUPCAM_MODEL_E3CMOS03100KMC, - TOUPCAM_MODEL_E3CMOS03100KMC_USB2, - TOUPCAM_MODEL_E3ISPM09000KPA, - TOUPCAM_MODEL_E3ISPM09000KPA_USB2, - TOUPCAM_MODEL_I3CMOS01200KPA, - TOUPCAM_MODEL_I3CMOS01200KPA_USB2, - TOUPCAM_MODEL_U3ISPM16000KPA, - TOUPCAM_MODEL_U3ISPM16000KPA_USB2, - TOUPCAM_MODEL_U3CMOS16000KMB, - TOUPCAM_MODEL_U3CMOS16000KMB_USB2, - TOUPCAM_MODEL_G3CMOS02300KPC, - TOUPCAM_MODEL_G3CMOS02300KPC_USB2, - TOUPCAM_MODEL_G3M178M_2, - TOUPCAM_MODEL_G3M178M_USB2_2, - TOUPCAM_MODEL_G3M178C_2, - TOUPCAM_MODEL_G3M178C_USB2_2, - TOUPCAM_MODEL_E3ISPM03100KPA, - TOUPCAM_MODEL_E3ISPM03100KPA_USB2, - TOUPCAM_MODEL_E3ISPM05000KPA, - TOUPCAM_MODEL_E3ISPM05000KPA_USB2, - TOUPCAM_MODEL_MG3CMOS16000KPA, - TOUPCAM_MODEL_MG3CMOS16000KPA_USB2, - TOUPCAM_MODEL_MG3CMOS02300KPA, - TOUPCAM_MODEL_MG3CMOS02300KPA_USB2, - TOUPCAM_MODEL_U3ISPM18000KPA, - TOUPCAM_MODEL_U3ISPM18000KPA_USB2, - TOUPCAM_MODEL_E3ISPM03100KPB, - TOUPCAM_MODEL_E3ISPM03100KPB_USB2, - TOUPCAM_MODEL_EP3CMOS02300KPC, - TOUPCAM_MODEL_EP3CMOS02300KPC_USB2, - TOUPCAM_MODEL_EP3CMOS02300KMC, - TOUPCAM_MODEL_EP3CMOS02300KMC_USB2, - TOUPCAM_MODEL_EP3CMOS06300KMA, - TOUPCAM_MODEL_EP3CMOS06300KMA_USB2, - TOUPCAM_MODEL_EP3CMOS20000KPA, - TOUPCAM_MODEL_EP3CMOS20000KPA_USB2, - TOUPCAM_MODEL_GPCMOS02000KMA, - TOUPCAM_MODEL_EXCCD01400KPA, - TOUPCAM_MODEL_I3CMOS03100KPA, - TOUPCAM_MODEL_I3CMOS03100KPA_USB2, - TOUPCAM_MODEL_U3CMOS10000KMA, - TOUPCAM_MODEL_U3CMOS10000KMA_USB2, - TOUPCAM_MODEL_E3ISPM12000KPA, - TOUPCAM_MODEL_E3ISPM12000KPA_USB2, - TOUPCAM_MODEL_E3ISPM05000KPA_2, - TOUPCAM_MODEL_E3ISPM05000KPA_USB2_2, - TOUPCAM_MODEL_AF3CMOS06300KPA, - TOUPCAM_MODEL_AF3CMOS06300KPA_USB2, - TOUPCAM_MODEL_E3ISPM20000KPA, - TOUPCAM_MODEL_E3ISPM20000KPA_USB2, - TOUPCAM_MODEL_G3CMOS20000KPA_2, - TOUPCAM_MODEL_G3CMOS20000KPA_USB2_2, - TOUPCAM_MODEL_E3CMOS02300KMC, - TOUPCAM_MODEL_E3CMOS02300KMC_USB2, - TOUPCAM_MODEL_ATR3CMOS02300KMB, - TOUPCAM_MODEL_ATR3CMOS02300KMB_USB2, - TOUPCAM_MODEL_E3CMOS20000KPA, - TOUPCAM_MODEL_E3CMOS20000KPA_USB2, - TOUPCAM_MODEL_MTR3CMOS16000KPA, - TOUPCAM_MODEL_MTR3CMOS16000KPA_USB2, - TOUPCAM_MODEL_MTR3CMOS16000KMA, - TOUPCAM_MODEL_MTR3CMOS16000KMA_USB2, - TOUPCAM_MODEL_ECMOS05300KPA, - TOUPCAM_MODEL_ECMOS03100KPA, - TOUPCAM_MODEL_E3ISPM06300KPA, - TOUPCAM_MODEL_E3ISPM06300KPA_USB2, - TOUPCAM_MODEL_ECMOS01200KPA, - TOUPCAM_MODEL_E3CMOS01200KPA, - TOUPCAM_MODEL_E3CMOS01200KPA_USB2, - TOUPCAM_MODEL_G3CMOS16000KMA_2, - TOUPCAM_MODEL_G3CMOS16000KMA_USB2_2, - TOUPCAM_MODEL_ATR3CMOS02300KPB, - TOUPCAM_MODEL_ATR3CMOS02300KPB_USB2, - TOUPCAM_MODEL_ATR3CMOS06300KPA, - TOUPCAM_MODEL_ATR3CMOS06300KPA_USB2, - TOUPCAM_MODEL_ATR3CMOS16000KPA, - TOUPCAM_MODEL_ATR3CMOS16000KPA_USB2, - TOUPCAM_MODEL_G3CMOS16000KPA_2, - TOUPCAM_MODEL_G3CMOS16000KPA_USB2_2, - TOUPCAM_MODEL_ECMOS02000KPA, - TOUPCAM_MODEL_EP3CMOS06300KPA, - TOUPCAM_MODEL_EP3CMOS06300KPA_USB2, - TOUPCAM_MODEL_E3CMOS05000KMA_2, - TOUPCAM_MODEL_E3CMOS05000KMA_USB2_2, - TOUPCAM_MODEL_E3CMOS05000KPA, - TOUPCAM_MODEL_E3CMOS05000KPA_USB2, - TOUPCAM_MODEL_GPCMOS02000KPA, - TOUPCAM_MODEL_EXCCD00440KPB, - TOUPCAM_MODEL_GPCMOS01200KMA, - TOUPCAM_MODEL_EXCCD00300KPA, - TOUPCAM_MODEL_U3CMOS16000KMB_2, - TOUPCAM_MODEL_U3CMOS16000KMB_USB2_2, - TOUPCAM_MODEL_U3CCD01400KPB, - TOUPCAM_MODEL_U3CCD01400KPB_USB2, - TOUPCAM_MODEL_U3CCD01400KMB, - TOUPCAM_MODEL_U3CCD01400KMB_USB2, - TOUPCAM_MODEL_G3CMOS06300KMA, - TOUPCAM_MODEL_G3CMOS06300KMA_USB2, - TOUPCAM_MODEL_MTR3CCD01400KMB, - TOUPCAM_MODEL_MTR3CCD01400KMB_USB2, - TOUPCAM_MODEL_MTR3CCD01400KPB_2, - TOUPCAM_MODEL_MTR3CCD01400KPB_USB2_2, - TOUPCAM_MODEL_GPCMOS01200KMB, - TOUPCAM_MODEL_U3CMOS16000KPB_2, - TOUPCAM_MODEL_U3CMOS16000KPB_USB2_2, - TOUPCAM_MODEL_GPCMOS01200KPB, - TOUPCAM_MODEL_G3CMOS01200KPA, - TOUPCAM_MODEL_G3CMOS01200KPA_USB2, - TOUPCAM_MODEL_G3CMOS06300KPA, - TOUPCAM_MODEL_G3CMOS06300KPA_USB2, - TOUPCAM_MODEL_E3CMOS06300KMA, - TOUPCAM_MODEL_E3CMOS06300KMA_USB2, - TOUPCAM_MODEL_X05100KPA, - TOUPCAM_MODEL_X01200KPA, - TOUPCAM_MODEL_GPCMOS01200KPC, - TOUPCAM_MODEL_ATR3CCD06000KPA, - TOUPCAM_MODEL_ATR3CCD06000KPA_USB2, - TOUPCAM_MODEL_ATR3CCD06000KMA, - TOUPCAM_MODEL_ATR3CCD06000KMA_USB2, - TOUPCAM_MODEL_MTR3CCD02800KMA, - TOUPCAM_MODEL_MTR3CCD02800KMA_USB2, - TOUPCAM_MODEL_MTR3CCD02800KPA, - TOUPCAM_MODEL_MTR3CCD02800KPA_USB2, - TOUPCAM_MODEL_U3CCD06000KMA, - TOUPCAM_MODEL_U3CCD06000KMA_USB2, - TOUPCAM_MODEL_MTR3CCD01400KMA, - TOUPCAM_MODEL_MTR3CCD01400KMA_USB2, - TOUPCAM_MODEL_G3CMOS02300KMC_2, - TOUPCAM_MODEL_G3CMOS02300KMC_USB2_2, - TOUPCAM_MODEL_MTR3CCD06000KMA, - TOUPCAM_MODEL_MTR3CCD06000KMA_USB2, - TOUPCAM_MODEL_U3CCD02800KMA, - TOUPCAM_MODEL_U3CCD02800KMA_USB2, - TOUPCAM_MODEL_GCMOS01200KMA, - TOUPCAM_MODEL_GCMOS01200KMB, - TOUPCAM_MODEL_G3CMOS02300KPB, - TOUPCAM_MODEL_G3CMOS02300KPB_USB2, - TOUPCAM_MODEL_GCMOS01200KPB, - TOUPCAM_MODEL_U3CCD02800KPA, - TOUPCAM_MODEL_U3CCD02800KPA_USB2, - TOUPCAM_MODEL_MTR3CCD01400KPA, - TOUPCAM_MODEL_MTR3CCD01400KPA_USB2, - TOUPCAM_MODEL_U3CMOS16000KPA, - TOUPCAM_MODEL_U3CMOS16000KPA_USB2, - TOUPCAM_MODEL_U3CCD06000KPA, - TOUPCAM_MODEL_U3CCD06000KPA_USB2, - TOUPCAM_MODEL_EXCCD00300KMA, - TOUPCAM_MODEL_EXCCD00300KMA_2, - TOUPCAM_MODEL_EP3CMOS02300KPA, - TOUPCAM_MODEL_EP3CMOS02300KPA_USB2, - TOUPCAM_MODEL_EXCCD00440KPA, - TOUPCAM_MODEL_EXCCD00440KMB, - TOUPCAM_MODEL_EXCCD00440KMA, - TOUPCAM_MODEL_MTR3CCD06000KPA, - TOUPCAM_MODEL_MTR3CCD06000KPA_USB2, - TOUPCAM_MODEL_EXCCD00440KPB_2, - TOUPCAM_MODEL_ICMOS03100KPA, - TOUPCAM_MODEL_E3CMOS12000KPA, - TOUPCAM_MODEL_E3CMOS12000KPA_USB2, - TOUPCAM_MODEL_E3CMOS03100KPB, - TOUPCAM_MODEL_E3CMOS03100KPB_USB2, - TOUPCAM_MODEL_UCMOS05100KPC, - TOUPCAM_MODEL_E3CMOS02300KPB, - TOUPCAM_MODEL_E3CMOS02300KPB_USB2, - TOUPCAM_MODEL_UHCCD05200KMA, - TOUPCAM_MODEL_G3CMOS02300KPA_2, - TOUPCAM_MODEL_G3CMOS02300KPA_USB2_2, - TOUPCAM_MODEL_GCMOS01200KMA_2, - TOUPCAM_MODEL_E3CMOS06300KPA, - TOUPCAM_MODEL_E3CMOS06300KPA_USB2, - TOUPCAM_MODEL_ICMOS14000KPC, - TOUPCAM_MODEL_EXCCD00300KMA_2_2, - TOUPCAM_MODEL_E3CMOS02300KPA, - TOUPCAM_MODEL_E3CMOS02300KPA_USB2, - TOUPCAM_MODEL_E3CMOS03100KPA, - TOUPCAM_MODEL_E3CMOS03100KPA_USB2, - TOUPCAM_MODEL_EXCCD00440KMB_2, - TOUPCAM_MODEL_EXCCD00440KPB_2_2, - TOUPCAM_MODEL_EXCCD00440KMA_2, - TOUPCAM_MODEL_AAICX429C, - TOUPCAM_MODEL_U3CMOS18000KPA, - TOUPCAM_MODEL_U3CMOS18000KPA_USB2, - TOUPCAM_MODEL_U3CMOS03100KPC, - TOUPCAM_MODEL_U3CMOS03100KPC_USB2, - TOUPCAM_MODEL_L3CMOS03100KPB, - TOUPCAM_MODEL_L3CMOS03100KPB_USB2, - TOUPCAM_MODEL_GCMOS03100KPA, - TOUPCAM_MODEL_UHCCD05200KPA, - TOUPCAM_MODEL_UHCCD05000KPA, - TOUPCAM_MODEL_UHCCD03100KPB, - TOUPCAM_MODEL_UHCCD02000KPA, - TOUPCAM_MODEL_UHCCD01400KPB, - TOUPCAM_MODEL_UHCCD01400KMB, - TOUPCAM_MODEL_EXCCD01400KPA_2, - TOUPCAM_MODEL_EXCCD01400KMA, - TOUPCAM_MODEL_ICMOS10000KPA, - TOUPCAM_MODEL_ICMOS14000KPA, - TOUPCAM_MODEL_LCMOS03100KPB, - TOUPCAM_MODEL_UCMOS02000KPC, - TOUPCAM_MODEL_WCMOS10000KPA, - TOUPCAM_MODEL_UCMOS03100KPB, - TOUPCAM_MODEL_GCMOS01200KMB_2, - TOUPCAM_MODEL_GCMOS01200KPB_2, - TOUPCAM_MODEL_GCMOS01200KPB_2_2, - TOUPCAM_MODEL_UCMOS01200KPB, - TOUPCAM_MODEL_U3CMOS14000KPB, - TOUPCAM_MODEL_U3CMOS14000KPB_USB2, - TOUPCAM_MODEL_LCMOS01200KPB, - TOUPCAM_MODEL_LCMOS14000KPA, - TOUPCAM_MODEL_LCMOS10000KPA, - TOUPCAM_MODEL_LCMOS09000KPA, - TOUPCAM_MODEL_LCMOS08000KPA, - TOUPCAM_MODEL_LCMOS05100KPA, - TOUPCAM_MODEL_LCMOS03100KPA, - TOUPCAM_MODEL_LCMOS02000KPA, - TOUPCAM_MODEL_LCMOS01300KPA, - TOUPCAM_MODEL_SCCCD01400KMB, - TOUPCAM_MODEL_UHCCD05200KPA_2, - TOUPCAM_MODEL_UHCCD05100KPA, - TOUPCAM_MODEL_UHCCD05100KPA_2, - TOUPCAM_MODEL_UHCCD05000KPA_2, - TOUPCAM_MODEL_UHCCD03100KPB_2, - TOUPCAM_MODEL_UHCCD02000KPA_2, - TOUPCAM_MODEL_UHCCD01400KPB_2, - TOUPCAM_MODEL_UHCCD01400KPA, - TOUPCAM_MODEL_UHCCD01400KMB_2, - TOUPCAM_MODEL_UHCCD01400KMA, - TOUPCAM_MODEL_UHCCD00800KPA, - TOUPCAM_MODEL_UCMOS05100KMA, - TOUPCAM_MODEL_UCMOS14000KPA, - TOUPCAM_MODEL_UCMOS10000KPA, - TOUPCAM_MODEL_UCMOS09000KPB, - TOUPCAM_MODEL_UCMOS09000KPA, - TOUPCAM_MODEL_UCMOS08000KPB, - TOUPCAM_MODEL_UCMOS08000KPA, - TOUPCAM_MODEL_UCMOS05100KPA, - TOUPCAM_MODEL_UCMOS03100KPA, - TOUPCAM_MODEL_UCMOS02000KPB, - TOUPCAM_MODEL_UCMOS02000KPA, - TOUPCAM_MODEL_UCMOS01300KPA, - TOUPCAM_MODEL_UCMOS01300KMA, - TOUPCAM_MODEL_UCMOS00350KPA, - TOUPCAM_MODEL_U3CMOS14000KPA, - TOUPCAM_MODEL_U3CMOS14000KPA_USB2, - TOUPCAM_MODEL_U3CMOS10000KPA, - TOUPCAM_MODEL_U3CMOS10000KPA_USB2, - TOUPCAM_MODEL_U3CMOS08500KPA, - TOUPCAM_MODEL_U3CMOS08500KPA_USB2, - TOUPCAM_MODEL_U3CMOS05100KPA, - TOUPCAM_MODEL_U3CMOS05100KPA_USB2, - TOUPCAM_MODEL_U3CMOS03100KPB, - TOUPCAM_MODEL_U3CMOS03100KPB_USB2, - TOUPCAM_MODEL_U3CMOS03100KPA, - TOUPCAM_MODEL_U3CMOS03100KPA_USB2, - TOUPCAM_MODEL_SCCCD05200KPA, - TOUPCAM_MODEL_SCCCD01400KMA, - TOUPCAM_MODEL_SCCCD01400KPB, - TOUPCAM_MODEL_SCCCD01400KPA, - TOUPCAM_MODEL_EXCCD01400KPA_2_2, - TOUPCAM_MODEL_EXCCD01400KMA_2, - TOUPCAM_MODEL_EXCCD00300KMA_2_2_2, - TOUPCAM_MODEL_ICMOS03100KPA_2, - TOUPCAM_MODEL_ICMOS01300KMA, - TOUPCAM_MODEL_UCMOS01200KMA, - TOUPCAM_MODEL_L3CMOS14000KPA, - TOUPCAM_MODEL_L3CMOS14000KPA_USB2, - TOUPCAM_MODEL_L3CMOS10000KPA, - TOUPCAM_MODEL_L3CMOS10000KPA_USB2, - TOUPCAM_MODEL_L3CMOS05100KPA, - TOUPCAM_MODEL_L3CMOS05100KPA_USB2, - TOUPCAM_MODEL_L3CMOS03100KPA, - TOUPCAM_MODEL_L3CMOS03100KPA_USB2, - TOUPCAM_MODEL_MTR3CMOS20000KPA, - TOUPCAM_MODEL_MTR3CMOS20000KPA_USB2, - TOUPCAM_MODEL_ATR3CMOS20000KPA, - TOUPCAM_MODEL_ATR3CMOS20000KPA_USB2, - TOUPCAM_MODEL_MTR3CCD12000KPA, - TOUPCAM_MODEL_MTR3CCD12000KPA_USB2, - TOUPCAM_MODEL_E3ISPM01500KPA, - TOUPCAM_MODEL_E3ISPM01500KPA_USB2, - TOUPCAM_MODEL_E3CMOS20000KMA, - TOUPCAM_MODEL_E3CMOS20000KMA_USB2, - TOUPCAM_MODEL_G3CMOS20000KPA_2_2, - TOUPCAM_MODEL_G3CMOS20000KPA_USB2_2_2, - TOUPCAM_MODEL_BIGEYE10000KPA, - TOUPCAM_MODEL_BIGEYE10000KPA_USB2, - TOUPCAM_MODEL_BIGEYE4200KMB, - TOUPCAM_MODEL_BIGEYE4200KMB_USB2, - TOUPCAM_MODEL_G3CMOS20000KMA_2, - TOUPCAM_MODEL_G3CMOS20000KMA_USB2_2, - TOUPCAM_MODEL_ATR3CMOS20000KMA, - TOUPCAM_MODEL_ATR3CMOS20000KMA_USB2, - TOUPCAM_MODEL_MTR3CMOS20000KMA, - TOUPCAM_MODEL_MTR3CMOS20000KMA_USB2, - TOUPCAM_MODEL_MTR3CMOS16000KPA_2, - TOUPCAM_MODEL_MTR3CMOS16000KPA_USB2_2, - TOUPCAM_MODEL_E3CMOS01200KPA_2, - TOUPCAM_MODEL_E3CMOS01200KPA_USB2_2, - TOUPCAM_MODEL_UCMOS01300KPA_2, - TOUPCAM_MODEL_ATR3CMOS16000KPA_2, - TOUPCAM_MODEL_ATR3CMOS16000KPA_USB2_2, - TOUPCAM_MODEL_E3CMOS12300KMA, - TOUPCAM_MODEL_E3CMOS12300KMA_USB2, - TOUPCAM_MODEL_E3ISPM08300KPB, - TOUPCAM_MODEL_E3ISPM08300KPB_USB2, - TOUPCAM_MODEL_ATR3CMOS16000KMA_2, - TOUPCAM_MODEL_ATR3CMOS16000KMA_USB2_2, - TOUPCAM_MODEL_ATR3CMOS10300KPA, - TOUPCAM_MODEL_ATR3CMOS10300KPA_USB2, - TOUPCAM_MODEL_LCMOS01300KPA_2, - TOUPCAM_MODEL_MTR3CCD12000KMA, - TOUPCAM_MODEL_MTR3CCD12000KMA_USB2, - TOUPCAM_MODEL_I3ISPM01500KPA, - TOUPCAM_MODEL_I3ISPM01500KPA_USB2, - TOUPCAM_MODEL_I3ISPM01500KPA_2, - TOUPCAM_MODEL_I3ISPM01500KPA_USB2_2, - TOUPCAM_MODEL_MTR3CMOS10300KPA, - TOUPCAM_MODEL_MTR3CMOS10300KPA_USB2, - TOUPCAM_MODEL_I3ISPM02000KPA, - TOUPCAM_MODEL_I3ISPM02000KPA_USB2, - TOUPCAM_MODEL_ECMOS05000KPA, - TOUPCAM_MODEL_G3CMOS16000KPA_2_2, - TOUPCAM_MODEL_G3CMOS16000KPA_USB2_2_2, - TOUPCAM_MODEL_G3CMOS16000KMA_2_2, - TOUPCAM_MODEL_G3CMOS16000KMA_USB2_2_2, - TOUPCAM_MODEL_E3ISPM06300KPB, - TOUPCAM_MODEL_E3ISPM06300KPB_USB2, - TOUPCAM_MODEL_G3CMOS10300KPA_2, - TOUPCAM_MODEL_G3CMOS10300KPA_USB2_2, - TOUPCAM_MODEL_C3CMOS05100KPA, - TOUPCAM_MODEL_C3CMOS05100KPA_USB2, - TOUPCAM_MODEL_MTR3CMOS16000KMA_2, - TOUPCAM_MODEL_MTR3CMOS16000KMA_USB2_2, - TOUPCAM_MODEL_MTR3CMOS16000KPA_2_2, - TOUPCAM_MODEL_MTR3CMOS16000KPA_USB2_2_2, - TOUPCAM_MODEL_I3CMOS01500KMA, - TOUPCAM_MODEL_I3CMOS01500KMA_USB2, - TOUPCAM_MODEL_I3CMOS01500KMA_2, - TOUPCAM_MODEL_I3CMOS01500KMA_USB2_2, - TOUPCAM_MODEL_BIGEYE4200KMA, - TOUPCAM_MODEL_BIGEYE4200KMA_USB2, - TOUPCAM_MODEL_E3CMOS20000KPB, - TOUPCAM_MODEL_E3CMOS20000KPB_USB2, - TOUPCAM_MODEL_ATR3CMOS01700KMA, - TOUPCAM_MODEL_ATR3CMOS01700KMA_USB2, - TOUPCAM_MODEL_ATR3CMOS01700KPA, - TOUPCAM_MODEL_ATR3CMOS01700KPA_USB2, - TOUPCAM_MODEL_ATR3CMOS07100KMA, - TOUPCAM_MODEL_ATR3CMOS07100KMA_USB2, - TOUPCAM_MODEL_ATR3CMOS07100KPA, - TOUPCAM_MODEL_ATR3CMOS07100KPA_USB2, - TOUPCAM_MODEL_MTR3CMOS07100KPA, - TOUPCAM_MODEL_MTR3CMOS07100KPA_USB2, - TOUPCAM_MODEL_MTR3CMOS07100KMA, - TOUPCAM_MODEL_MTR3CMOS07100KMA_USB2, - TOUPCAM_MODEL_MTR3CMOS01700KPA, - TOUPCAM_MODEL_MTR3CMOS01700KPA_USB2, - TOUPCAM_MODEL_MTR3CMOS01700KMA, - TOUPCAM_MODEL_MTR3CMOS01700KMA_USB2, - TOUPCAM_MODEL_SL170_C_M, - TOUPCAM_MODEL_SL170_C_M_USB2, - TOUPCAM_MODEL_PUM02000KPA, - TOUPCAM_MODEL_GPCMOS02000KPB, - TOUPCAM_MODEL_I3CMOS03100KMA, - TOUPCAM_MODEL_I3CMOS03100KMA_USB2, - TOUPCAM_MODEL_I3CMOS03100KMA_2, - TOUPCAM_MODEL_I3CMOS03100KMA_USB2_2, - TOUPCAM_MODEL_I3CMOS05000KMA, - TOUPCAM_MODEL_I3CMOS05000KMA_USB2, - TOUPCAM_MODEL_I3CMOS05000KMA_2, - TOUPCAM_MODEL_I3CMOS05000KMA_USB2_2, - TOUPCAM_MODEL_C3CMOS10000KPA, - TOUPCAM_MODEL_C3CMOS10000KPA_USB2, - TOUPCAM_MODEL_I3ISPM05000KPA, - TOUPCAM_MODEL_I3ISPM05000KPA_USB2, - TOUPCAM_MODEL_I3ISPM05000KPA_2, - TOUPCAM_MODEL_I3ISPM05000KPA_USB2_2, - TOUPCAM_MODEL_I3ISPM03100KPA, - TOUPCAM_MODEL_I3ISPM03100KPA_USB2, - TOUPCAM_MODEL_I3ISPM03100KPA_2, - TOUPCAM_MODEL_I3ISPM03100KPA_USB2_2, - TOUPCAM_MODEL_E3ISPM18000KPA, - TOUPCAM_MODEL_E3ISPM18000KPA_USB2, - TOUPCAM_MODEL_E3ISPM20000KPB, - TOUPCAM_MODEL_E3ISPM20000KPB_USB2, - TOUPCAM_MODEL_I3ISPM05000KPB, - TOUPCAM_MODEL_I3ISPM05000KPB_USB2, - TOUPCAM_MODEL_I3ISPM05000KPB_2, - TOUPCAM_MODEL_I3ISPM05000KPB_USB2_2, - TOUPCAM_MODEL_I3ISPM03100KPB, - TOUPCAM_MODEL_I3ISPM03100KPB_USB2, - TOUPCAM_MODEL_I3ISPM03100KPB_2, - TOUPCAM_MODEL_I3ISPM03100KPB_USB2_2, - TOUPCAM_MODEL_I3CMOS05000KMB, - TOUPCAM_MODEL_I3CMOS05000KMB_USB2, - TOUPCAM_MODEL_I3CMOS05000KMB_2, - TOUPCAM_MODEL_I3CMOS05000KMB_USB2_2, - TOUPCAM_MODEL_I3CMOS03100KMB, - TOUPCAM_MODEL_I3CMOS03100KMB_USB2, - TOUPCAM_MODEL_I3CMOS03100KMB_2, - TOUPCAM_MODEL_I3CMOS03100KMB_USB2_2, - TOUPCAM_MODEL_E3ISPM21000KPA, - TOUPCAM_MODEL_E3ISPM21000KPA_USB2, - TOUPCAM_MODEL_ECMOS05100KPA, - TOUPCAM_MODEL_E3ISPM15600KPA, - TOUPCAM_MODEL_E3ISPM15600KPA_USB2, - TOUPCAM_MODEL_I3CMOS00500KMA, - TOUPCAM_MODEL_I3CMOS00500KMA_USB2, - TOUPCAM_MODEL_I3ISPM00500KPA, - TOUPCAM_MODEL_I3ISPM00500KPA_USB2, - TOUPCAM_MODEL_IUA6300KPA, - TOUPCAM_MODEL_IUA6300KPA_USB2, - TOUPCAM_MODEL_IUB4200KMB, - TOUPCAM_MODEL_IUB4200KMB_USB2, - TOUPCAM_MODEL_IUC31000KMA, - TOUPCAM_MODEL_IUC31000KMA_USB2, - TOUPCAM_MODEL_IUA6300KMA, - TOUPCAM_MODEL_IUA6300KMA_USB2, - TOUPCAM_MODEL_IUA1700KPA, - TOUPCAM_MODEL_IUA1700KPA_USB2, - TOUPCAM_MODEL_IUA7100KPA, - TOUPCAM_MODEL_IUA7100KPA_USB2, - TOUPCAM_MODEL_IUC31000KPA, - TOUPCAM_MODEL_IUC31000KPA_USB2, - TOUPCAM_MODEL_ATR3CMOS21000KPA, - TOUPCAM_MODEL_ATR3CMOS21000KPA_USB2, - TOUPCAM_MODEL_IUA20000KPA, - TOUPCAM_MODEL_IUA20000KPA_USB2, - TOUPCAM_MODEL_T3CMOS20000KPA, - TOUPCAM_MODEL_T3CMOS20000KPA_USB2, - TOUPCAM_MODEL_MTR3CMOS21000KPA, - TOUPCAM_MODEL_MTR3CMOS21000KPA_USB2, - TOUPCAM_MODEL_GPCMOS01200KPF, - TOUPCAM_MODEL_I3CMOS06300KMA, - TOUPCAM_MODEL_I3CMOS06300KMA_USB2, - TOUPCAM_MODEL_I3ISPM06300KPA, - TOUPCAM_MODEL_I3ISPM06300KPA_USB2, - TOUPCAM_MODEL_IUA20000KMA, - TOUPCAM_MODEL_IUA20000KMA_USB2, - TOUPCAM_MODEL_IUB43000KMA, - TOUPCAM_MODEL_IUB43000KMA_USB2, - TOUPCAM_MODEL_IUC60000KMA, - TOUPCAM_MODEL_IUC60000KMA_USB2, - TOUPCAM_MODEL_IUC60000KPA, - TOUPCAM_MODEL_IUC60000KPA_USB2, - TOUPCAM_MODEL_IUA2300KPB, - TOUPCAM_MODEL_IUA2300KPB_USB2, - TOUPCAM_MODEL_IUC26000KPA, - TOUPCAM_MODEL_IUC26000KPA_USB2, - TOUPCAM_MODEL_MTR3CMOS45000KMA, - TOUPCAM_MODEL_MTR3CMOS45000KMA_USB2, - TOUPCAM_MODEL_C3CMOS05100KPB, - TOUPCAM_MODEL_C3CMOS05100KPB_USB2, - TOUPCAM_MODEL_C3CMOS03500KPA, - TOUPCAM_MODEL_C3CMOS03500KPA_USB2, - TOUPCAM_MODEL_MAX60000KPA, - TOUPCAM_MODEL_MAX60000KPA_USB2, - TOUPCAM_MODEL_BIGEYE4200KMB_2, - TOUPCAM_MODEL_BIGEYE4200KMB_USB2_2, - TOUPCAM_MODEL_IUA1700KMA, - TOUPCAM_MODEL_IUA1700KMA_USB2, - TOUPCAM_MODEL_IUA7100KMA, - TOUPCAM_MODEL_IUA7100KMA_USB2, - TOUPCAM_MODEL_ATR3CMOS26000KPA, - TOUPCAM_MODEL_ATR3CMOS26000KPA_USB2, - TOUPCAM_MODEL_E3ISPM09000KPB, - TOUPCAM_MODEL_E3ISPM09000KPB_USB2, - TOUPCAM_MODEL_ATR3CMOS09000KPA, - TOUPCAM_MODEL_ATR3CMOS09000KPA_USB2, - TOUPCAM_MODEL_G3CMOS21000KPA, - TOUPCAM_MODEL_G3CMOS21000KPA_USB2, - TOUPCAM_MODEL_ITR3CMOS16000KMA, - TOUPCAM_MODEL_ITR3CMOS16000KMA_USB2, - TOUPCAM_MODEL_MTR3CMOS26000KPA, - TOUPCAM_MODEL_MTR3CMOS26000KPA_USB2, - TOUPCAM_MODEL_BIGEYE4200KMB_2_2, - TOUPCAM_MODEL_BIGEYE4200KMB_USB2_2_2, - TOUPCAM_MODEL_SKYEYE62AM, - TOUPCAM_MODEL_SKYEYE62AM_USB2, - TOUPCAM_MODEL_MTR3CMOS09000KPA, - TOUPCAM_MODEL_MTR3CMOS09000KPA_USB2, - TOUPCAM_MODEL_BIGEYE4200KMD, - TOUPCAM_MODEL_BIGEYE4200KMD_USB2, - TOUPCAM_MODEL_IUA4100KPA, - TOUPCAM_MODEL_IUA4100KPA_USB2, - TOUPCAM_MODEL_IUA2100KPA, - TOUPCAM_MODEL_IUA2100KPA_USB2, - TOUPCAM_MODEL_E3CMOS45000KMA, - TOUPCAM_MODEL_E3CMOS45000KMA_USB2, - TOUPCAM_MODEL_SKYEYE62AC, - TOUPCAM_MODEL_SKYEYE62AC_USB2, - TOUPCAM_MODEL_SKYEYE24AC, - TOUPCAM_MODEL_SKYEYE24AC_USB2, - TOUPCAM_MODEL_MAX62AM, - TOUPCAM_MODEL_MAX62AM_USB2, - TOUPCAM_MODEL_MTR3CMOS08300KPA, - TOUPCAM_MODEL_MTR3CMOS08300KPA_USB2, - TOUPCAM_MODEL_G3M462C, - TOUPCAM_MODEL_G3M462C_USB2, - TOUPCAM_MODEL_E3ISPM08300KPC, - TOUPCAM_MODEL_E3ISPM08300KPC_USB2, - TOUPCAM_MODEL_BIGEYE4200KMA_2, - TOUPCAM_MODEL_BIGEYE4200KMA_USB2_2, - TOUPCAM_MODEL_ATR3CMOS10300KMA, - TOUPCAM_MODEL_ATR3CMOS10300KMA_USB2, - TOUPCAM_MODEL_E3ISPM45000KPA, - TOUPCAM_MODEL_E3ISPM45000KPA_USB2, - TOUPCAM_MODEL_E3ISPM02100KPA, - TOUPCAM_MODEL_E3ISPM02100KPA_USB2, - TOUPCAM_MODEL_G3CMOS08300KPA, - TOUPCAM_MODEL_G3CMOS08300KPA_USB2, - TOUPCAM_MODEL_BIGEYE4200KME, - TOUPCAM_MODEL_BIGEYE4200KME_USB2, - TOUPCAM_MODEL_ITR3CMOS08300KPA, - TOUPCAM_MODEL_ITR3CMOS08300KPA_USB2, - TOUPCAM_MODEL_MAX04AM, - TOUPCAM_MODEL_MAX04AM_USB2, - TOUPCAM_MODEL_G3M287C, - TOUPCAM_MODEL_G3M287C_USB2, - TOUPCAM_MODEL_ATR3CMOS16000KPB, - TOUPCAM_MODEL_ATR3CMOS16000KPB_USB2, - TOUPCAM_MODEL_ATR3CMOS10300KPA_2, - TOUPCAM_MODEL_ATR3CMOS10300KPA_USB2_2, - TOUPCAM_MODEL_L3CMOS08500KPA, - TOUPCAM_MODEL_L3CMOS08500KPA_USB2, -}; - -/* This table was dumped from the touptek library */ -static const struct toupcam_model_pid toupcam_models[] = { - [TOUPCAM_MODEL_UA130CA ] = { 0x1238, { "UA130CA ", 0x0000000081000001, 2, 2, 0, 0, 0, 3.750000, 3.750000, {{1280, 960},{1280, 720},}}}, - [TOUPCAM_MODEL_G3CMOS10300KPA ] = { 0x11c6, { "G3CMOS10300KPA ", 0x0000000087694649, 2, 4, 4, 1, 0, 4.630000, 4.630000, {{3704, 2778},{4096, 2160},{2048, 1080},{1360, 720},}}}, - [TOUPCAM_MODEL_G3CMOS10300KPA_USB2 ] = { 0x11c7, { "G3CMOS10300KPA(USB2.0) ", 0x0000000087694709, 2, 4, 4, 1, 0, 4.630000, 4.630000, {{3704, 2778},{4096, 2160},{2048, 1080},{1360, 720},}}}, - [TOUPCAM_MODEL_E3CMOS01500KMA ] = { 0x11ce, { "E3CMOS01500KMA ", 0x0000001081002459, 2, 2, 2, 0, 0, 3.450000, 3.450000, {{1440, 1080},{720, 540},}}}, - [TOUPCAM_MODEL_E3CMOS01500KMA_USB2 ] = { 0x11cf, { "E3CMOS01500KMA(USB2.0) ", 0x0000001081002519, 2, 2, 2, 0, 0, 3.450000, 3.450000, {{1440, 1080},{720, 540},}}}, - [TOUPCAM_MODEL_MTR3CCD01400KPB ] = { 0x11d4, { "MTR3CCD01400KPB ", 0x00000010811b44c2, 2, 2, 0, 4, 0, 6.450000, 6.450000, {{1376, 1040},{688, 520},}}}, - [TOUPCAM_MODEL_MTR3CCD01400KPB_USB2 ] = { 0x11d5, { "MTR3CCD01400KPB(USB2.0) ", 0x00000010811b4582, 2, 2, 0, 4, 0, 6.450000, 6.450000, {{1376, 1040},{688, 520},}}}, - [TOUPCAM_MODEL_UA1600CA ] = { 0x1189, { "UA1600CA ", 0x0000000081000001, 2, 3, 3, 0, 0, 1.335000, 1.335000, {{4632, 3488},{2320, 1740},{1536, 1160},}}}, - [TOUPCAM_MODEL_MTR3CCD09000KPA ] = { 0x101d, { "MTR3CCD09000KPA ", 0x00000010811b44c2, 1, 2, 0, 4, 0, 3.690000, 3.690000, {{3388, 2712},{1694, 1356},}}}, - [TOUPCAM_MODEL_MTR3CCD09000KPA_USB2 ] = { 0x1031, { "MTR3CCD09000KPA(USB2.0) ", 0x00000010811b4582, 1, 2, 0, 4, 0, 3.690000, 3.690000, {{3388, 2712},{1694, 1356},}}}, - [TOUPCAM_MODEL_G3M178M ] = { 0x11cc, { "G3M178M ", 0x0000000081484659, 2, 2, 0, 0, 0, 2.400000, 2.400000, {{3040, 2048},{1520, 1024},}}}, - [TOUPCAM_MODEL_G3M178M_USB2 ] = { 0x11cd, { "G3M178M(USB2.0) ", 0x0000000081484719, 2, 2, 0, 0, 0, 2.400000, 2.400000, {{3040, 2048},{1520, 1024},}}}, - [TOUPCAM_MODEL_G3M178C ] = { 0x11ca, { "G3M178C ", 0x0000000081484649, 2, 2, 0, 0, 0, 2.400000, 2.400000, {{3040, 2048},{1520, 1024},}}}, - [TOUPCAM_MODEL_G3M178C_USB2 ] = { 0x11cb, { "G3M178C(USB2.0) ", 0x0000000081484709, 2, 2, 0, 0, 0, 2.400000, 2.400000, {{3040, 2048},{1520, 1024},}}}, - [TOUPCAM_MODEL_U3CMOS16000KPB ] = { 0x11c8, { "U3CMOS16000KPB ", 0x0000000081002049, 3, 5, 5, 0, 0, 3.800000, 3.800000, {{4640, 3506},{3840, 2160},{2304, 1750},{1920, 1080},{1536, 1168},}}}, - [TOUPCAM_MODEL_U3CMOS16000KPB_USB2 ] = { 0x11c9, { "U3CMOS16000KPB(USB2.0) ", 0x0000000081002109, 3, 5, 5, 0, 0, 3.800000, 3.800000, {{4640, 3506},{3840, 2160},{2304, 1750},{1920, 1080},{1536, 1168},}}}, - [TOUPCAM_MODEL_E3ISPM02000KPA ] = { 0x11c0, { "E3ISPM02000KPA ", 0x0000000081041449, 2, 1, 0, 0, 0, 3.750000, 3.750000, {{1920, 1080},}}}, - [TOUPCAM_MODEL_E3ISPM02000KPA_USB2 ] = { 0x11c1, { "E3ISPM02000KPA(USB2.0) ", 0x0000000081041509, 2, 1, 0, 0, 0, 3.750000, 3.750000, {{1920, 1080},}}}, - [TOUPCAM_MODEL_G3CMOS20000KMA ] = { 0x11a0, { "G3CMOS20000KMA ", 0x0000000081492659, 2, 4, 4, 2, 0, 2.400000, 2.400000, {{5440, 3648},{4080, 2160},{2736, 1824},{1824, 1216},}}}, - [TOUPCAM_MODEL_G3CMOS20000KMA_USB2 ] = { 0x11a1, { "G3CMOS20000KMA(USB2.0) ", 0x0000000081492719, 2, 4, 4, 2, 0, 2.400000, 2.400000, {{5440, 3648},{4080, 2160},{2736, 1824},{1824, 1216},}}}, - [TOUPCAM_MODEL_U3CCD12000KPA ] = { 0x1090, { "U3CCD12000KPA ", 0x0000001081084042, 1, 2, 0, 0, 0, 3.100000, 3.100000, {{4248, 2836},{2124, 1418},}}}, - [TOUPCAM_MODEL_U3CCD12000KPA_USB2 ] = { 0x10a4, { "U3CCD12000KPA(USB2.0) ", 0x0000001081084102, 1, 2, 0, 0, 0, 3.100000, 3.100000, {{4248, 2836},{2124, 1418},}}}, - [TOUPCAM_MODEL_ATR3CMOS16000KMA ] = { 0x106d, { "ATR3CMOS16000KMA ", 0x00000000816b24d9, 3, 3, 0, 1, 0, 3.800000, 3.800000, {{4640, 3506},{2304, 1750},{1536, 1160},}}}, - [TOUPCAM_MODEL_ATR3CMOS16000KMA_USB2 ] = { 0x1076, { "ATR3CMOS16000KMA(USB2.0) ", 0x00000000816b2599, 3, 3, 0, 1, 0, 3.800000, 3.800000, {{4640, 3506},{2304, 1750},{1536, 1160},}}}, - [TOUPCAM_MODEL_G3CMOS20000KPA ] = { 0x11a2, { "G3CMOS20000KPA ", 0x0000000081492649, 2, 4, 4, 2, 0, 2.400000, 2.400000, {{5440, 3648},{4080, 2160},{2736, 1824},{1824, 1216},}}}, - [TOUPCAM_MODEL_G3CMOS20000KPA_USB2 ] = { 0x11a3, { "G3CMOS20000KPA(USB2.0) ", 0x0000000081492709, 2, 4, 4, 2, 0, 2.400000, 2.400000, {{5440, 3648},{4080, 2160},{2736, 1824},{1824, 1216},}}}, - [TOUPCAM_MODEL_G3CMOS02300KPA ] = { 0x11c2, { "G3CMOS02300KPA ", 0x0000000081492249, 2, 2, 0, 1, 0, 3.750000, 3.750000, {{1920, 1200},{960, 600},}}}, - [TOUPCAM_MODEL_G3CMOS02300KPA_USB2 ] = { 0x11c3, { "G3CMOS02300KPA(USB2.0) ", 0x0000000081492309, 2, 2, 0, 1, 0, 3.750000, 3.750000, {{1920, 1200},{960, 600},}}}, - [TOUPCAM_MODEL_I3ISPM12000KPA ] = { 0x11c4, { "I3ISPM12000KPA ", 0x00000000810c2041, 3, 4, 4, 0, 0, 1.850000, 1.850000, {{4000, 3000},{2048, 1080},{2000, 1500},{1280, 1000},}}}, - [TOUPCAM_MODEL_I3ISPM12000KPA_USB2 ] = { 0x11c5, { "I3ISPM12000KPA(USB2.0) ", 0x00000000810c2101, 3, 4, 4, 0, 0, 1.850000, 1.850000, {{4000, 3000},{2048, 1080},{2000, 1500},{1280, 1000},}}}, - [TOUPCAM_MODEL_U3CCD09000KPA ] = { 0x108c, { "U3CCD09000KPA ", 0x0000001081084042, 1, 2, 0, 0, 0, 3.690000, 3.690000, {{3388, 2712},{1694, 1356},}}}, - [TOUPCAM_MODEL_U3CCD09000KPA_USB2 ] = { 0x10a0, { "U3CCD09000KPA(USB2.0) ", 0x0000001081084102, 1, 2, 0, 0, 0, 3.690000, 3.690000, {{3388, 2712},{1694, 1356},}}}, - [TOUPCAM_MODEL_G3CMOS02300KMC ] = { 0x119c, { "G3CMOS02300KMC ", 0x0000001081492259, 2, 1, 0, 1, 0, 5.860000, 5.860000, {{1920, 1200},}}}, - [TOUPCAM_MODEL_G3CMOS02300KMC_USB2 ] = { 0x119d, { "G3CMOS02300KMC(USB2.0) ", 0x0000001081492319, 2, 1, 0, 1, 0, 5.860000, 5.860000, {{1920, 1200},}}}, - [TOUPCAM_MODEL_E3ISPM12300KPA ] = { 0x118a, { "E3ISPM12300KPA ", 0x0000001081042449, 2, 2, 2, 0, 0, 3.450000, 3.450000, {{4096, 3000},{2048, 1500},}}}, - [TOUPCAM_MODEL_E3ISPM12300KPA_USB2 ] = { 0x118b, { "E3ISPM12300KPA(USB2.0) ", 0x0000001081042509, 2, 2, 2, 0, 0, 3.450000, 3.450000, {{4096, 3000},{2048, 1500},}}}, - [TOUPCAM_MODEL_ECMOS06600KPA ] = { 0x117d, { "ECMOS06600KPA ", 0x0000000081000009, 2, 4, 4, 0, 0, 1.620000, 1.620000, {{3072, 2160},{2592, 1944},{3072, 1728},{2160, 2160},}}}, - [TOUPCAM_MODEL_ECMOS08300KPA ] = { 0x117c, { "ECMOS08300KPA ", 0x0000000081000009, 2, 2, 2, 0, 0, 1.620000, 1.620000, {{3840, 2160},{1920, 1080},}}}, - [TOUPCAM_MODEL_UA1000CA ] = { 0x1237, { "UA1000CA ", 0x0000000081000029, 3, 3, 3, 0, 0, 1.670000, 1.670000, {{3664, 2748},{1832, 1374},{912, 686},}}}, - [TOUPCAM_MODEL_UA1000CA_2 ] = { 0x1188, { "UA1000CA ", 0x0000000081000029, 5, 3, 3, 0, 0, 1.670000, 1.670000, {{3584, 2748},{1792, 1374},{896, 684},}}}, - [TOUPCAM_MODEL_UA510CA ] = { 0x1236, { "UA510CA ", 0x0000000081000029, 6, 3, 3, 0, 0, 2.200000, 2.200000, {{2592, 1944},{1280, 960},{640, 480},}}}, - [TOUPCAM_MODEL_UA510CA_2 ] = { 0x1187, { "UA510CA ", 0x0000000081000029, 6, 3, 3, 0, 0, 2.200000, 2.200000, {{2592, 1944},{1280, 960},{640, 480},}}}, - [TOUPCAM_MODEL_UA310CA ] = { 0x1235, { "UA310CA ", 0x0000000081000009, 5, 3, 3, 0, 0, 3.200000, 3.200000, {{2048, 1536},{1024, 768},{680, 510},}}}, - [TOUPCAM_MODEL_UA310CA_2 ] = { 0x1186, { "UA310CA ", 0x0000000081000009, 5, 3, 3, 0, 0, 3.200000, 3.200000, {{2048, 1536},{1024, 768},{680, 510},}}}, - [TOUPCAM_MODEL_E3ISPM08300KPA ] = { 0x116c, { "E3ISPM08300KPA ", 0x0000000081042049, 2, 2, 2, 0, 0, 1.620000, 1.620000, {{3840, 2160},{1920, 1080},}}}, - [TOUPCAM_MODEL_E3ISPM08300KPA_USB2 ] = { 0x116d, { "E3ISPM08300KPA(USB2.0) ", 0x0000000081042109, 2, 2, 2, 0, 0, 1.620000, 1.620000, {{3840, 2160},{1920, 1080},}}}, - [TOUPCAM_MODEL_G3CMOS16000KMA ] = { 0x1184, { "G3CMOS16000KMA ", 0x0000000081692259, 3, 3, 0, 1, 0, 3.800000, 3.800000, {{4640, 3506},{2304, 1750},{1536, 1160},}}}, - [TOUPCAM_MODEL_G3CMOS16000KMA_USB2 ] = { 0x1185, { "G3CMOS16000KMA(USB2.0) ", 0x0000000081692319, 3, 3, 0, 1, 0, 3.800000, 3.800000, {{4640, 3506},{2304, 1750},{1536, 1160},}}}, - [TOUPCAM_MODEL_G3CMOS16000KPA ] = { 0x1182, { "G3CMOS16000KPA ", 0x0000000081692249, 3, 3, 0, 1, 0, 3.800000, 3.800000, {{4640, 3506},{2304, 1750},{1536, 1160},}}}, - [TOUPCAM_MODEL_G3CMOS16000KPA_USB2 ] = { 0x1183, { "G3CMOS16000KPA(USB2.0) ", 0x0000000081692309, 3, 3, 0, 1, 0, 3.800000, 3.800000, {{4640, 3506},{2304, 1750},{1536, 1160},}}}, - [TOUPCAM_MODEL_G3M287M ] = { 0x1178, { "G3M287M ", 0x0000001081482659, 2, 1, 0, 0, 0, 6.900000, 6.900000, {{720, 540},}}}, - [TOUPCAM_MODEL_G3M287M_USB2 ] = { 0x1179, { "G3M287M(USB2.0) ", 0x0000001081482719, 2, 1, 0, 0, 0, 6.900000, 6.900000, {{720, 540},}}}, - [TOUPCAM_MODEL_G3M385C ] = { 0x117a, { "G3M385C ", 0x0000000085482649, 2, 1, 0, 0, 0, 3.750000, 3.750000, {{1920, 1080},}}}, - [TOUPCAM_MODEL_G3M385C_USB2 ] = { 0x117b, { "G3M385C(USB2.0) ", 0x0000000085482709, 2, 1, 0, 0, 0, 3.750000, 3.750000, {{1920, 1080},}}}, - [TOUPCAM_MODEL_EP3CMOS00400KMA ] = { 0x117e, { "EP3CMOS00400KMA ", 0x0000001081482459, 2, 1, 0, 0, 0, 6.900000, 6.900000, {{720, 540},}}}, - [TOUPCAM_MODEL_EP3CMOS00400KMA_USB2 ] = { 0x117f, { "EP3CMOS00400KMA(USB2.0) ", 0x0000001081482519, 2, 1, 0, 0, 0, 6.900000, 6.900000, {{720, 540},}}}, - [TOUPCAM_MODEL_EP3CMOS00400KPA ] = { 0x1180, { "EP3CMOS00400KPA ", 0x0000001081482449, 2, 1, 0, 0, 0, 6.900000, 6.900000, {{720, 540},}}}, - [TOUPCAM_MODEL_EP3CMOS00400KPA_USB2 ] = { 0x1181, { "EP3CMOS00400KPA(USB2.0) ", 0x0000001081482509, 2, 1, 0, 0, 0, 6.900000, 6.900000, {{720, 540},}}}, - [TOUPCAM_MODEL_E3CMOS00400KMA ] = { 0x116e, { "E3CMOS00400KMA ", 0x0000001081002459, 2, 1, 0, 0, 0, 6.900000, 6.900000, {{720, 540},}}}, - [TOUPCAM_MODEL_E3CMOS00400KMA_USB2 ] = { 0x116f, { "E3CMOS00400KMA(USB2.0) ", 0x0000001081002519, 2, 1, 0, 0, 0, 6.900000, 6.900000, {{720, 540},}}}, - [TOUPCAM_MODEL_E3CMOS00400KPA ] = { 0x1170, { "E3CMOS00400KPA ", 0x0000001081002449, 2, 1, 0, 0, 0, 6.900000, 6.900000, {{720, 540},}}}, - [TOUPCAM_MODEL_E3CMOS00400KPA_USB2 ] = { 0x1171, { "E3CMOS00400KPA(USB2.0) ", 0x0000001081002509, 2, 1, 0, 0, 0, 6.900000, 6.900000, {{720, 540},}}}, - [TOUPCAM_MODEL_G3M290C ] = { 0x115e, { "G3M290C ", 0x0000000085482649, 2, 1, 0, 0, 0, 2.900000, 2.900000, {{1920, 1080},}}}, - [TOUPCAM_MODEL_G3M290C_USB2 ] = { 0x115f, { "G3M290C(USB2.0) ", 0x0000000085482709, 2, 1, 0, 0, 0, 2.900000, 2.900000, {{1920, 1080},}}}, - [TOUPCAM_MODEL_G3M290M ] = { 0x1160, { "G3M290M ", 0x0000000085482659, 2, 1, 0, 0, 0, 2.900000, 2.900000, {{1920, 1080},}}}, - [TOUPCAM_MODEL_G3M290M_USB2 ] = { 0x1161, { "G3M290M(USB2.0) ", 0x0000000085482719, 2, 1, 0, 0, 0, 2.900000, 2.900000, {{1920, 1080},}}}, - [TOUPCAM_MODEL_G3M224C ] = { 0x1162, { "G3M224C ", 0x0000000085482669, 2, 2, 0, 0, 0, 3.750000, 3.750000, {{1280, 960},{640, 480},}}}, - [TOUPCAM_MODEL_G3M224C_USB2 ] = { 0x1163, { "G3M224C(USB2.0) ", 0x0000000085482729, 2, 2, 0, 0, 0, 3.750000, 3.750000, {{1280, 960},{640, 480},}}}, - [TOUPCAM_MODEL_U3ISPM16000KPB ] = { 0x113e, { "U3ISPM16000KPB ", 0x0000000081041049, 3, 4, 4, 0, 0, 3.800000, 3.800000, {{4640, 3506},{3360, 2526},{2304, 1750},{1536, 1168},}}}, - [TOUPCAM_MODEL_U3ISPM16000KPB_USB2 ] = { 0x113f, { "U3ISPM16000KPB(USB2.0) ", 0x0000000081041109, 3, 4, 4, 0, 0, 3.800000, 3.800000, {{4640, 3506},{3360, 2526},{2304, 1750},{1536, 1168},}}}, - [TOUPCAM_MODEL_E3CMOS05000KMA ] = { 0x1172, { "E3CMOS05000KMA ", 0x0000001081002459, 2, 2, 2, 0, 0, 3.450000, 3.450000, {{2448, 2048},{1224, 1024},}}}, - [TOUPCAM_MODEL_E3CMOS05000KMA_USB2 ] = { 0x1173, { "E3CMOS05000KMA(USB2.0) ", 0x0000001081002519, 2, 2, 2, 0, 0, 3.450000, 3.450000, {{2448, 2048},{1224, 1024},}}}, - [TOUPCAM_MODEL_E3CMOS03100KMC ] = { 0x1174, { "E3CMOS03100KMC ", 0x0000001081002459, 2, 2, 2, 0, 0, 3.450000, 3.450000, {{2048, 1536},{1024, 768},}}}, - [TOUPCAM_MODEL_E3CMOS03100KMC_USB2 ] = { 0x1175, { "E3CMOS03100KMC(USB2.0) ", 0x0000001081002519, 2, 2, 2, 0, 0, 3.450000, 3.450000, {{2048, 1536},{1024, 768},}}}, - [TOUPCAM_MODEL_E3ISPM09000KPA ] = { 0x116a, { "E3ISPM09000KPA ", 0x0000001081042449, 2, 2, 2, 0, 0, 3.450000, 3.450000, {{4096, 2160},{2048, 1080},}}}, - [TOUPCAM_MODEL_E3ISPM09000KPA_USB2 ] = { 0x116b, { "E3ISPM09000KPA(USB2.0) ", 0x0000001081042509, 2, 2, 2, 0, 0, 3.450000, 3.450000, {{4096, 2160},{2048, 1080},}}}, - [TOUPCAM_MODEL_I3CMOS01200KPA ] = { 0x10c1, { "I3CMOS01200KPA ", 0x0000000081002069, 2, 2, 0, 0, 0, 3.750000, 3.750000, {{1280, 960},{640, 480},}}}, - [TOUPCAM_MODEL_I3CMOS01200KPA_USB2 ] = { 0x10ce, { "I3CMOS01200KPA(USB2.0) ", 0x0000000081002129, 2, 2, 0, 0, 0, 3.750000, 3.750000, {{1280, 960},{640, 480},}}}, - [TOUPCAM_MODEL_U3ISPM16000KPA ] = { 0x113c, { "U3ISPM16000KPA ", 0x0000000081042041, 2, 3, 3, 0, 0, 1.335000, 1.335000, {{4632, 3488},{2320, 1740},{1536, 1160},}}}, - [TOUPCAM_MODEL_U3ISPM16000KPA_USB2 ] = { 0x113d, { "U3ISPM16000KPA(USB2.0) ", 0x0000000081042101, 2, 3, 3, 0, 0, 1.335000, 1.335000, {{4632, 3488},{2320, 1740},{1536, 1160},}}}, - [TOUPCAM_MODEL_U3CMOS16000KMB ] = { 0x1168, { "U3CMOS16000KMB ", 0x0000000081002059, 3, 5, 5, 0, 0, 3.800000, 3.800000, {{4640, 3506},{3840, 2160},{2304, 1750},{1920, 1080},{1536, 1168},}}}, - [TOUPCAM_MODEL_U3CMOS16000KMB_USB2 ] = { 0x1169, { "U3CMOS16000KMB(USB2.0) ", 0x0000000081002119, 3, 5, 5, 0, 0, 3.800000, 3.800000, {{4640, 3506},{3840, 2160},{2304, 1750},{1920, 1080},{1536, 1168},}}}, - [TOUPCAM_MODEL_G3CMOS02300KPC ] = { 0x1009, { "G3CMOS02300KPC ", 0x0000001081492249, 2, 1, 0, 1, 0, 5.860000, 5.860000, {{1920, 1200},}}}, - [TOUPCAM_MODEL_G3CMOS02300KPC_USB2 ] = { 0x100e, { "G3CMOS02300KPC(USB2.0) ", 0x0000001081492309, 2, 1, 0, 1, 0, 5.860000, 5.860000, {{1920, 1200},}}}, - [TOUPCAM_MODEL_G3M178M_2 ] = { 0x115c, { "G3M178M ", 0x0000000081484259, 2, 2, 0, 0, 0, 2.400000, 2.400000, {{3040, 2048},{1520, 1024},}}}, - [TOUPCAM_MODEL_G3M178M_USB2_2 ] = { 0x115d, { "G3M178M(USB2.0) ", 0x0000000081484319, 2, 2, 0, 0, 0, 2.400000, 2.400000, {{3040, 2048},{1520, 1024},}}}, - [TOUPCAM_MODEL_G3M178C_2 ] = { 0x115a, { "G3M178C ", 0x0000000081484249, 2, 2, 0, 0, 0, 2.400000, 2.400000, {{3040, 2048},{1520, 1024},}}}, - [TOUPCAM_MODEL_G3M178C_USB2_2 ] = { 0x115b, { "G3M178C(USB2.0) ", 0x0000000081484309, 2, 2, 0, 0, 0, 2.400000, 2.400000, {{3040, 2048},{1520, 1024},}}}, - [TOUPCAM_MODEL_E3ISPM03100KPA ] = { 0x1138, { "E3ISPM03100KPA ", 0x0000001081042449, 2, 2, 2, 0, 0, 3.450000, 3.450000, {{2048, 1536},{1024, 768},}}}, - [TOUPCAM_MODEL_E3ISPM03100KPA_USB2 ] = { 0x1139, { "E3ISPM03100KPA(USB2.0) ", 0x0000001081042509, 2, 2, 2, 0, 0, 3.450000, 3.450000, {{2048, 1536},{1024, 768},}}}, - [TOUPCAM_MODEL_E3ISPM05000KPA ] = { 0x114c, { "E3ISPM05000KPA ", 0x0000001081042449, 2, 2, 2, 0, 0, 3.450000, 3.450000, {{2448, 2048},{1224, 1024},}}}, - [TOUPCAM_MODEL_E3ISPM05000KPA_USB2 ] = { 0x114d, { "E3ISPM05000KPA(USB2.0) ", 0x0000001081042509, 2, 2, 2, 0, 0, 3.450000, 3.450000, {{2448, 2048},{1224, 1024},}}}, - [TOUPCAM_MODEL_MG3CMOS16000KPA ] = { 0x1158, { "MG3CMOS16000KPA ", 0x0000000081012041, 2, 3, 3, 1, 0, 3.800000, 3.800000, {{4640, 3506},{2304, 1750},{1536, 1168},}}}, - [TOUPCAM_MODEL_MG3CMOS16000KPA_USB2 ] = { 0x1159, { "MG3CMOS16000KPA(USB2.0) ", 0x0000000081012101, 2, 3, 3, 1, 0, 3.800000, 3.800000, {{4640, 3506},{2304, 1750},{1536, 1168},}}}, - [TOUPCAM_MODEL_MG3CMOS02300KPA ] = { 0x1156, { "MG3CMOS02300KPA ", 0x0000000081012041, 2, 2, 2, 1, 0, 3.750000, 3.750000, {{1920, 1200},{960, 600},}}}, - [TOUPCAM_MODEL_MG3CMOS02300KPA_USB2 ] = { 0x1157, { "MG3CMOS02300KPA(USB2.0) ", 0x0000000081012101, 2, 2, 2, 1, 0, 3.750000, 3.750000, {{1920, 1200},{960, 600},}}}, - [TOUPCAM_MODEL_U3ISPM18000KPA ] = { 0x1142, { "U3ISPM18000KPA ", 0x0000000081042469, 3, 3, 3, 0, 0, 1.250000, 1.250000, {{4912, 3684},{2456, 1842},{1228, 922},}}}, - [TOUPCAM_MODEL_U3ISPM18000KPA_USB2 ] = { 0x1143, { "U3ISPM18000KPA(USB2.0) ", 0x0000000081042529, 3, 3, 3, 0, 0, 1.250000, 1.250000, {{4912, 3684},{2456, 1842},{1228, 922},}}}, - [TOUPCAM_MODEL_E3ISPM03100KPB ] = { 0x113a, { "E3ISPM03100KPB ", 0x0000000081042049, 2, 2, 0, 0, 0, 2.500000, 2.500000, {{2048, 1536},{1920, 1080},}}}, - [TOUPCAM_MODEL_E3ISPM03100KPB_USB2 ] = { 0x113b, { "E3ISPM03100KPB(USB2.0) ", 0x0000000081042109, 2, 2, 0, 0, 0, 2.500000, 2.500000, {{2048, 1536},{1920, 1080},}}}, - [TOUPCAM_MODEL_EP3CMOS02300KPC ] = { 0x1154, { "EP3CMOS02300KPC ", 0x0000001081082049, 2, 1, 0, 0, 0, 5.860000, 5.860000, {{1920, 1200},}}}, - [TOUPCAM_MODEL_EP3CMOS02300KPC_USB2 ] = { 0x1155, { "EP3CMOS02300KPC(USB2.0) ", 0x0000001081082109, 2, 1, 0, 0, 0, 5.860000, 5.860000, {{1920, 1200},}}}, - [TOUPCAM_MODEL_EP3CMOS02300KMC ] = { 0x1152, { "EP3CMOS02300KMC ", 0x0000001081082059, 2, 1, 0, 0, 0, 5.860000, 5.860000, {{1920, 1200},}}}, - [TOUPCAM_MODEL_EP3CMOS02300KMC_USB2 ] = { 0x1153, { "EP3CMOS02300KMC(USB2.0) ", 0x0000001081082119, 2, 1, 0, 0, 0, 5.860000, 5.860000, {{1920, 1200},}}}, - [TOUPCAM_MODEL_EP3CMOS06300KMA ] = { 0x1150, { "EP3CMOS06300KMA ", 0x0000000081084051, 2, 2, 0, 0, 0, 2.400000, 2.400000, {{3072, 2048},{1536, 1024},}}}, - [TOUPCAM_MODEL_EP3CMOS06300KMA_USB2 ] = { 0x1151, { "EP3CMOS06300KMA(USB2.0) ", 0x0000000081084111, 2, 2, 0, 0, 0, 2.400000, 2.400000, {{3072, 2048},{1536, 1024},}}}, - [TOUPCAM_MODEL_EP3CMOS20000KPA ] = { 0x114e, { "EP3CMOS20000KPA ", 0x0000000081492241, 2, 3, 3, 1, 0, 2.400000, 2.400000, {{5440, 3648},{2736, 1824},{1824, 1216},}}}, - [TOUPCAM_MODEL_EP3CMOS20000KPA_USB2 ] = { 0x114f, { "EP3CMOS20000KPA(USB2.0) ", 0x0000000081492301, 2, 3, 3, 1, 0, 2.400000, 2.400000, {{5440, 3648},{2736, 1824},{1824, 1216},}}}, - [TOUPCAM_MODEL_GPCMOS02000KMA ] = { 0x10ff, { "GPCMOS02000KMA ", 0x0000000085482219, 2, 1, 0, 0, 0, 2.900000, 2.900000, {{1920, 1080},}}}, - [TOUPCAM_MODEL_EXCCD01400KPA ] = { 0x814d, { "EXCCD01400KPA ", 0x0000001080082002, 3, 1, 0, 0, 0, 6.450000, 6.450000, {{1360, 1024},}}}, - [TOUPCAM_MODEL_I3CMOS03100KPA ] = { 0x10c7, { "I3CMOS03100KPA ", 0x0000001081004041, 2, 2, 0, 0, 0, 2.500000, 2.500000, {{2048, 1536},{1920, 1080},}}}, - [TOUPCAM_MODEL_I3CMOS03100KPA_USB2 ] = { 0x10d4, { "I3CMOS03100KPA(USB2.0) ", 0x0000001081004101, 2, 2, 0, 0, 0, 2.500000, 2.500000, {{2048, 1536},{1920, 1080},}}}, - [TOUPCAM_MODEL_U3CMOS10000KMA ] = { 0x1148, { "U3CMOS10000KMA ", 0x0000000081000071, 3, 3, 3, 0, 0, 1.670000, 1.670000, {{3584, 2746},{1792, 1372},{896, 680},}}}, - [TOUPCAM_MODEL_U3CMOS10000KMA_USB2 ] = { 0x1149, { "U3CMOS10000KMA(USB2.0) ", 0x0000000081000131, 3, 3, 3, 0, 0, 1.670000, 1.670000, {{3584, 2746},{1792, 1372},{896, 680},}}}, - [TOUPCAM_MODEL_E3ISPM12000KPA ] = { 0x1134, { "E3ISPM12000KPA ", 0x0000000081042041, 3, 2, 2, 0, 0, 1.850000, 1.850000, {{4000, 3000},{2048, 1080},}}}, - [TOUPCAM_MODEL_E3ISPM12000KPA_USB2 ] = { 0x1135, { "E3ISPM12000KPA(USB2.0) ", 0x0000000081042101, 3, 2, 2, 0, 0, 1.850000, 1.850000, {{4000, 3000},{2048, 1080},}}}, - [TOUPCAM_MODEL_E3ISPM05000KPA_2 ] = { 0x111c, { "E3ISPM05000KPA ", 0x0000001081042449, 2, 2, 2, 0, 0, 3.450000, 3.450000, {{2448, 2048},{1216, 1024},}}}, - [TOUPCAM_MODEL_E3ISPM05000KPA_USB2_2 ] = { 0x111d, { "E3ISPM05000KPA(USB2.0) ", 0x0000001081042509, 2, 2, 2, 0, 0, 3.450000, 3.450000, {{2448, 2048},{1216, 1024},}}}, - [TOUPCAM_MODEL_AF3CMOS06300KPA ] = { 0x1146, { "AF3CMOS06300KPA ", 0x00000420930c2049, 2, 2, 2, 0, 0, 2.400000, 2.400000, {{3080, 2048},{1520, 1024},}}}, - [TOUPCAM_MODEL_AF3CMOS06300KPA_USB2 ] = { 0x1147, { "AF3CMOS06300KPA(USB2.0) ", 0x00000420930c2109, 2, 2, 2, 0, 0, 2.400000, 2.400000, {{3080, 2048},{1520, 1024},}}}, - [TOUPCAM_MODEL_E3ISPM20000KPA ] = { 0x1122, { "E3ISPM20000KPA ", 0x0000000081042041, 2, 3, 3, 0, 0, 2.400000, 2.400000, {{5440, 3648},{2736, 1824},{1824, 1216},}}}, - [TOUPCAM_MODEL_E3ISPM20000KPA_USB2 ] = { 0x1123, { "E3ISPM20000KPA(USB2.0) ", 0x0000000081042101, 2, 3, 3, 0, 0, 2.400000, 2.400000, {{5440, 3648},{2736, 1824},{1824, 1216},}}}, - [TOUPCAM_MODEL_G3CMOS20000KPA_2 ] = { 0x1112, { "G3CMOS20000KPA ", 0x0000000081492241, 2, 3, 3, 1, 0, 2.400000, 2.400000, {{5440, 3648},{2736, 1824},{1824, 1216},}}}, - [TOUPCAM_MODEL_G3CMOS20000KPA_USB2_2 ] = { 0x1113, { "G3CMOS20000KPA(USB2.0) ", 0x0000000081492301, 2, 3, 3, 1, 0, 2.400000, 2.400000, {{5440, 3648},{2736, 1824},{1824, 1216},}}}, - [TOUPCAM_MODEL_E3CMOS02300KMC ] = { 0x1144, { "E3CMOS02300KMC ", 0x0000001081002059, 2, 1, 0, 0, 0, 5.860000, 5.860000, {{1920, 1200},}}}, - [TOUPCAM_MODEL_E3CMOS02300KMC_USB2 ] = { 0x1145, { "E3CMOS02300KMC(USB2.0) ", 0x0000001081002119, 2, 1, 0, 0, 0, 5.860000, 5.860000, {{1920, 1200},}}}, - [TOUPCAM_MODEL_ATR3CMOS02300KMB ] = { 0x1071, { "ATR3CMOS02300KMB ", 0x00000010814b26d9, 2, 1, 0, 1, 0, 5.860000, 5.860000, {{1920, 1200},}}}, - [TOUPCAM_MODEL_ATR3CMOS02300KMB_USB2 ] = { 0x107a, { "ATR3CMOS02300KMB(USB2.0) ", 0x00000010814b2799, 2, 1, 0, 1, 0, 5.860000, 5.860000, {{1920, 1200},}}}, - [TOUPCAM_MODEL_E3CMOS20000KPA ] = { 0x1110, { "E3CMOS20000KPA ", 0x0000000081002041, 2, 3, 3, 0, 0, 2.400000, 2.400000, {{5440, 3648},{2736, 1824},{1824, 1216},}}}, - [TOUPCAM_MODEL_E3CMOS20000KPA_USB2 ] = { 0x1111, { "E3CMOS20000KPA(USB2.0) ", 0x0000000081002101, 2, 3, 3, 0, 0, 2.400000, 2.400000, {{5440, 3648},{2736, 1824},{1824, 1216},}}}, - [TOUPCAM_MODEL_MTR3CMOS16000KPA ] = { 0x1063, { "MTR3CMOS16000KPA ", 0x00000000810b24c9, 2, 3, 0, 1, 0, 3.800000, 3.800000, {{4632, 3506},{2304, 1750},{1536, 1168},}}}, - [TOUPCAM_MODEL_MTR3CMOS16000KPA_USB2 ] = { 0x1067, { "MTR3CMOS16000KPA(USB2.0) ", 0x00000000810b2589, 2, 3, 0, 1, 0, 3.800000, 3.800000, {{4632, 3506},{2304, 1750},{1536, 1168},}}}, - [TOUPCAM_MODEL_MTR3CMOS16000KMA ] = { 0x1064, { "MTR3CMOS16000KMA ", 0x00000000810b24d9, 3, 3, 0, 1, 0, 3.800000, 3.800000, {{4632, 3506},{2304, 1750},{1536, 1168},}}}, - [TOUPCAM_MODEL_MTR3CMOS16000KMA_USB2 ] = { 0x1068, { "MTR3CMOS16000KMA(USB2.0) ", 0x00000000810b2599, 3, 3, 0, 1, 0, 3.800000, 3.800000, {{4632, 3506},{2304, 1750},{1536, 1168},}}}, - [TOUPCAM_MODEL_ECMOS05300KPA ] = { 0x1108, { "ECMOS05300KPA ", 0x0000000080000009, 2, 2, 2, 0, 0, 2.400000, 2.400000, {{3072, 1728},{1280, 720},}}}, - [TOUPCAM_MODEL_ECMOS03100KPA ] = { 0x1107, { "ECMOS03100KPA ", 0x0000000080000009, 2, 2, 2, 0, 0, 2.500000, 2.500000, {{2048, 1536},{1920, 1080},}}}, - [TOUPCAM_MODEL_E3ISPM06300KPA ] = { 0x111a, { "E3ISPM06300KPA ", 0x0000000081042049, 2, 2, 2, 0, 0, 2.400000, 2.400000, {{3072, 2048},{1536, 1024},}}}, - [TOUPCAM_MODEL_E3ISPM06300KPA_USB2 ] = { 0x111b, { "E3ISPM06300KPA(USB2.0) ", 0x0000000081042109, 2, 2, 2, 0, 0, 2.400000, 2.400000, {{3072, 2048},{1536, 1024},}}}, - [TOUPCAM_MODEL_ECMOS01200KPA ] = { 0x110f, { "ECMOS01200KPA ", 0x0000000081000029, 2, 2, 0, 0, 0, 3.750000, 3.750000, {{1280, 960},{640, 480},}}}, - [TOUPCAM_MODEL_E3CMOS01200KPA ] = { 0x110d, { "E3CMOS01200KPA ", 0x0000000081002069, 2, 2, 0, 0, 0, 3.750000, 3.750000, {{1280, 960},{640, 480},}}}, - [TOUPCAM_MODEL_E3CMOS01200KPA_USB2 ] = { 0x110e, { "E3CMOS01200KPA(USB2.0) ", 0x0000000081002129, 2, 2, 0, 0, 0, 3.750000, 3.750000, {{1280, 960},{640, 480},}}}, - [TOUPCAM_MODEL_G3CMOS16000KMA_2 ] = { 0x1104, { "G3CMOS16000KMA ", 0x0000000081492251, 3, 3, 0, 1, 0, 3.800000, 3.800000, {{4640, 3506},{2304, 1750},{1536, 1168},}}}, - [TOUPCAM_MODEL_G3CMOS16000KMA_USB2_2 ] = { 0x1105, { "G3CMOS16000KMA(USB2.0) ", 0x0000000081492311, 3, 3, 0, 1, 0, 3.800000, 3.800000, {{4640, 3506},{2304, 1750},{1536, 1168},}}}, - [TOUPCAM_MODEL_ATR3CMOS02300KPB ] = { 0x1070, { "ATR3CMOS02300KPB ", 0x00000010814b26c9, 3, 1, 0, 1, 0, 5.860000, 5.860000, {{1920, 1200},}}}, - [TOUPCAM_MODEL_ATR3CMOS02300KPB_USB2 ] = { 0x1079, { "ATR3CMOS02300KPB(USB2.0) ", 0x00000010814b2789, 3, 1, 0, 1, 0, 5.860000, 5.860000, {{1920, 1200},}}}, - [TOUPCAM_MODEL_ATR3CMOS06300KPA ] = { 0x1072, { "ATR3CMOS06300KPA ", 0x00000000814b44c9, 2, 2, 0, 1, 0, 2.400000, 2.400000, {{3072, 2048},{1536, 1024},}}}, - [TOUPCAM_MODEL_ATR3CMOS06300KPA_USB2 ] = { 0x107b, { "ATR3CMOS06300KPA(USB2.0) ", 0x00000000814b4589, 2, 2, 0, 1, 0, 2.400000, 2.400000, {{3072, 2048},{1536, 1024},}}}, - [TOUPCAM_MODEL_ATR3CMOS16000KPA ] = { 0x106b, { "ATR3CMOS16000KPA ", 0x00000000816b24c9, 3, 3, 0, 1, 0, 3.800000, 3.800000, {{4640, 3506},{2304, 1750},{1536, 1160},}}}, - [TOUPCAM_MODEL_ATR3CMOS16000KPA_USB2 ] = { 0x1075, { "ATR3CMOS16000KPA(USB2.0) ", 0x00000000816b2589, 3, 3, 0, 1, 0, 3.800000, 3.800000, {{4640, 3506},{2304, 1750},{1536, 1160},}}}, - [TOUPCAM_MODEL_G3CMOS16000KPA_2 ] = { 0x1102, { "G3CMOS16000KPA ", 0x0000000081492241, 3, 3, 0, 1, 0, 3.800000, 3.800000, {{4640, 3506},{2304, 1750},{1536, 1168},}}}, - [TOUPCAM_MODEL_G3CMOS16000KPA_USB2_2 ] = { 0x1103, { "G3CMOS16000KPA(USB2.0) ", 0x0000000081492301, 3, 3, 0, 1, 0, 3.800000, 3.800000, {{4640, 3506},{2304, 1750},{1536, 1168},}}}, - [TOUPCAM_MODEL_ECMOS02000KPA ] = { 0x1106, { "ECMOS02000KPA ", 0x0000000080000009, 2, 1, 0, 0, 0, 2.900000, 2.900000, {{1920, 1080},}}}, - [TOUPCAM_MODEL_EP3CMOS06300KPA ] = { 0x1100, { "EP3CMOS06300KPA ", 0x0000000081084041, 2, 2, 0, 0, 0, 2.400000, 2.400000, {{3072, 2048},{1536, 1024},}}}, - [TOUPCAM_MODEL_EP3CMOS06300KPA_USB2 ] = { 0x1101, { "EP3CMOS06300KPA(USB2.0) ", 0x0000000081084101, 2, 2, 0, 0, 0, 2.400000, 2.400000, {{3072, 2048},{1536, 1024},}}}, - [TOUPCAM_MODEL_E3CMOS05000KMA_2 ] = { 0x10a9, { "E3CMOS05000KMA ", 0x0000001081002479, 4, 2, 2, 0, 0, 3.450000, 3.450000, {{2448, 2048},{1224, 1024},}}}, - [TOUPCAM_MODEL_E3CMOS05000KMA_USB2_2 ] = { 0x10ab, { "E3CMOS05000KMA(USB2.0) ", 0x0000001081002539, 4, 2, 2, 0, 0, 3.450000, 3.450000, {{2448, 2048},{1224, 1024},}}}, - [TOUPCAM_MODEL_E3CMOS05000KPA ] = { 0x10a8, { "E3CMOS05000KPA ", 0x0000001081002449, 2, 2, 2, 0, 0, 3.450000, 3.450000, {{2448, 2048},{1224, 1024},}}}, - [TOUPCAM_MODEL_E3CMOS05000KPA_USB2 ] = { 0x10aa, { "E3CMOS05000KPA(USB2.0) ", 0x0000001081002509, 2, 2, 2, 0, 0, 3.450000, 3.450000, {{2448, 2048},{1224, 1024},}}}, - [TOUPCAM_MODEL_GPCMOS02000KPA ] = { 0x10fe, { "GPCMOS02000KPA ", 0x0000000085482209, 2, 1, 0, 0, 0, 2.900000, 2.900000, {{1920, 1080},}}}, - [TOUPCAM_MODEL_EXCCD00440KPB ] = { 0x805a, { "EXCCD00440KPB ", 0x0000001300080004, 3, 1, 0, 0, 0, 8.600000, 8.300000, {{748, 576},}}}, - [TOUPCAM_MODEL_GPCMOS01200KMA ] = { 0x1002, { "GPCMOS01200KMA ", 0x0000000080682219, 4, 2, 0, 0, 0, 3.750000, 3.750000, {{1280, 960},{640, 480},}}}, - [TOUPCAM_MODEL_EXCCD00300KPA ] = { 0x830a, { "EXCCD00300KPA ", 0x0000001080082002, 3, 1, 0, 0, 0, 5.600000, 5.600000, {{640, 480},}}}, - [TOUPCAM_MODEL_U3CMOS16000KMB_2 ] = { 0x107d, { "U3CMOS16000KMB ", 0x0000000081001051, 2, 3, 3, 0, 0, 3.800000, 3.800000, {{4648, 3506},{2304, 1750},{1536, 1168},}}}, - [TOUPCAM_MODEL_U3CMOS16000KMB_USB2_2 ] = { 0x107f, { "U3CMOS16000KMB(USB2.0) ", 0x0000000081001111, 2, 3, 3, 0, 0, 3.800000, 3.800000, {{4648, 3506},{2304, 1750},{1536, 1168},}}}, - [TOUPCAM_MODEL_U3CCD01400KPB ] = { 0x1082, { "U3CCD01400KPB ", 0x0000001081084042, 2, 1, 0, 0, 0, 6.450000, 6.450000, {{1376, 1040},}}}, - [TOUPCAM_MODEL_U3CCD01400KPB_USB2 ] = { 0x1096, { "U3CCD01400KPB(USB2.0) ", 0x0000001081084102, 2, 1, 0, 0, 0, 6.450000, 6.450000, {{1376, 1040},}}}, - [TOUPCAM_MODEL_U3CCD01400KMB ] = { 0x1083, { "U3CCD01400KMB ", 0x0000001081084052, 2, 1, 0, 0, 0, 6.450000, 6.450000, {{1376, 1040},}}}, - [TOUPCAM_MODEL_U3CCD01400KMB_USB2 ] = { 0x1097, { "U3CCD01400KMB(USB2.0) ", 0x0000001081084112, 2, 1, 0, 0, 0, 6.450000, 6.450000, {{1376, 1040},}}}, - [TOUPCAM_MODEL_G3CMOS06300KMA ] = { 0x10f6, { "G3CMOS06300KMA ", 0x0000000081494259, 2, 2, 0, 1, 0, 2.400000, 2.400000, {{3040, 2048},{1520, 1024},}}}, - [TOUPCAM_MODEL_G3CMOS06300KMA_USB2 ] = { 0x10f7, { "G3CMOS06300KMA(USB2.0) ", 0x0000000081494319, 2, 2, 0, 1, 0, 2.400000, 2.400000, {{3040, 2048},{1520, 1024},}}}, - [TOUPCAM_MODEL_MTR3CCD01400KMB ] = { 0x101c, { "MTR3CCD01400KMB ", 0x00000010811b44d2, 2, 1, 0, 4, 2, 6.450000, 6.450000, {{1376, 1040},}}}, - [TOUPCAM_MODEL_MTR3CCD01400KMB_USB2 ] = { 0x1030, { "MTR3CCD01400KMB(USB2.0) ", 0x00000010811b4592, 2, 1, 0, 4, 2, 6.450000, 6.450000, {{1376, 1040},}}}, - [TOUPCAM_MODEL_MTR3CCD01400KPB_2 ] = { 0x101b, { "MTR3CCD01400KPB ", 0x00000010811b44c2, 2, 1, 0, 4, 0, 6.450000, 6.450000, {{1376, 1040},}}}, - [TOUPCAM_MODEL_MTR3CCD01400KPB_USB2_2] = { 0x102f, { "MTR3CCD01400KPB(USB2.0) ", 0x00000010811b4582, 2, 1, 0, 4, 0, 6.450000, 6.450000, {{1376, 1040},}}}, - [TOUPCAM_MODEL_GPCMOS01200KMB ] = { 0x1004, { "GPCMOS01200KMB ", 0x0000000080682219, 4, 2, 0, 0, 0, 3.750000, 3.750000, {{1280, 960},{640, 480},}}}, - [TOUPCAM_MODEL_U3CMOS16000KPB_2 ] = { 0x107c, { "U3CMOS16000KPB ", 0x0000000081001041, 2, 3, 3, 0, 0, 3.800000, 3.800000, {{4648, 3506},{2304, 1750},{1536, 1168},}}}, - [TOUPCAM_MODEL_U3CMOS16000KPB_USB2_2 ] = { 0x107e, { "U3CMOS16000KPB(USB2.0) ", 0x0000000081001101, 2, 3, 3, 0, 0, 3.800000, 3.800000, {{4648, 3506},{2304, 1750},{1536, 1168},}}}, - [TOUPCAM_MODEL_GPCMOS01200KPB ] = { 0x1003, { "GPCMOS01200KPB ", 0x0000000080682209, 4, 2, 0, 0, 0, 3.750000, 3.750000, {{1280, 960},{640, 480},}}}, - [TOUPCAM_MODEL_G3CMOS01200KPA ] = { 0x1007, { "G3CMOS01200KPA ", 0x0000000085492269, 2, 2, 0, 1, 0, 3.750000, 3.750000, {{1280, 960},{640, 480},}}}, - [TOUPCAM_MODEL_G3CMOS01200KPA_USB2 ] = { 0x100c, { "G3CMOS01200KPA(USB2.0) ", 0x0000000085492329, 2, 2, 0, 1, 0, 3.750000, 3.750000, {{1280, 960},{640, 480},}}}, - [TOUPCAM_MODEL_G3CMOS06300KPA ] = { 0x100b, { "G3CMOS06300KPA ", 0x0000000081494249, 2, 2, 0, 1, 0, 2.400000, 2.400000, {{3040, 2048},{1520, 1024},}}}, - [TOUPCAM_MODEL_G3CMOS06300KPA_USB2 ] = { 0x1010, { "G3CMOS06300KPA(USB2.0) ", 0x0000000081494309, 2, 2, 0, 1, 0, 2.400000, 2.400000, {{3040, 2048},{1520, 1024},}}}, - [TOUPCAM_MODEL_E3CMOS06300KMA ] = { 0x10f8, { "E3CMOS06300KMA ", 0x0000000081004051, 2, 2, 2, 0, 0, 2.400000, 2.400000, {{3072, 2048},{1536, 1024},}}}, - [TOUPCAM_MODEL_E3CMOS06300KMA_USB2 ] = { 0x10f9, { "E3CMOS06300KMA(USB2.0) ", 0x0000000081004111, 2, 2, 2, 0, 0, 2.400000, 2.400000, {{3072, 2048},{1536, 1024},}}}, - [TOUPCAM_MODEL_X05100KPA ] = { 0x0a51, { "X05100KPA ", 0x0000000080000029, 6, 3, 3, 0, 0, 2.200000, 2.200000, {{2592, 1944},{1280, 960},{640, 480},}}}, - [TOUPCAM_MODEL_X01200KPA ] = { 0x0a12, { "X01200KPA ", 0x0000000080000209, 4, 2, 0, 0, 0, 3.750000, 3.750000, {{1280, 960},{640, 480},}}}, - [TOUPCAM_MODEL_GPCMOS01200KPC ] = { 0x1005, { "GPCMOS01200KPC ", 0x0000000084482229, 2, 2, 0, 0, 0, 3.750000, 3.750000, {{1280, 960},{640, 480},}}}, - [TOUPCAM_MODEL_ATR3CCD06000KPA ] = { 0x1039, { "ATR3CCD06000KPA ", 0x00000010815b44c2, 1, 2, 0, 4, 0, 4.540000, 4.540000, {{2748, 2200},{2748, 1092},}}}, - [TOUPCAM_MODEL_ATR3CCD06000KPA_USB2 ] = { 0x104d, { "ATR3CCD06000KPA(USB2.0) ", 0x00000010815b4582, 1, 2, 0, 4, 0, 4.540000, 4.540000, {{2748, 2200},{2748, 1092},}}}, - [TOUPCAM_MODEL_ATR3CCD06000KMA ] = { 0x103a, { "ATR3CCD06000KMA ", 0x00000010815b44d2, 1, 2, 0, 4, 0, 4.540000, 4.540000, {{2748, 2200},{2748, 1092},}}}, - [TOUPCAM_MODEL_ATR3CCD06000KMA_USB2 ] = { 0x104e, { "ATR3CCD06000KMA(USB2.0) ", 0x00000010815b4592, 1, 2, 0, 4, 0, 4.540000, 4.540000, {{2748, 2200},{2748, 1092},}}}, - [TOUPCAM_MODEL_MTR3CCD02800KMA ] = { 0x1016, { "MTR3CCD02800KMA ", 0x00000010811b44d2, 1, 3, 0, 4, 0, 4.540000, 4.540000, {{1938, 1460},{1610, 1212},{1930, 1092},}}}, - [TOUPCAM_MODEL_MTR3CCD02800KMA_USB2 ] = { 0x102a, { "MTR3CCD02800KMA(USB2.0) ", 0x00000010811b4592, 1, 3, 0, 4, 0, 4.540000, 4.540000, {{1938, 1460},{1610, 1212},{1930, 1092},}}}, - [TOUPCAM_MODEL_MTR3CCD02800KPA ] = { 0x1015, { "MTR3CCD02800KPA ", 0x00000010811b44c2, 1, 3, 0, 4, 0, 4.540000, 4.540000, {{1938, 1460},{1610, 1212},{1930, 1092},}}}, - [TOUPCAM_MODEL_MTR3CCD02800KPA_USB2 ] = { 0x1029, { "MTR3CCD02800KPA(USB2.0) ", 0x00000010811b4582, 1, 3, 0, 4, 0, 4.540000, 4.540000, {{1938, 1460},{1610, 1212},{1930, 1092},}}}, - [TOUPCAM_MODEL_U3CCD06000KMA ] = { 0x1089, { "U3CCD06000KMA ", 0x0000001081084052, 1, 2, 0, 0, 0, 4.540000, 4.540000, {{2748, 2200},{2748, 1092},}}}, - [TOUPCAM_MODEL_U3CCD06000KMA_USB2 ] = { 0x109d, { "U3CCD06000KMA(USB2.0) ", 0x0000001081084112, 1, 2, 0, 0, 0, 4.540000, 4.540000, {{2748, 2200},{2748, 1092},}}}, - [TOUPCAM_MODEL_MTR3CCD01400KMA ] = { 0x101a, { "MTR3CCD01400KMA ", 0x00000010811b44d2, 1, 1, 0, 4, 0, 6.450000, 6.450000, {{1360, 1024},}}}, - [TOUPCAM_MODEL_MTR3CCD01400KMA_USB2 ] = { 0x102e, { "MTR3CCD01400KMA(USB2.0) ", 0x00000010811b4592, 1, 1, 0, 4, 0, 6.450000, 6.450000, {{1360, 1024},}}}, - [TOUPCAM_MODEL_G3CMOS02300KMC_2 ] = { 0x100a, { "G3CMOS02300KMC ", 0x0000001081492259, 2, 1, 0, 1, 0, 5.860000, 5.860000, {{1920, 1200},}}}, - [TOUPCAM_MODEL_G3CMOS02300KMC_USB2_2 ] = { 0x100f, { "G3CMOS02300KMC(USB2.0) ", 0x0000001081492319, 2, 1, 0, 1, 0, 5.860000, 5.860000, {{1920, 1200},}}}, - [TOUPCAM_MODEL_MTR3CCD06000KMA ] = { 0x1012, { "MTR3CCD06000KMA ", 0x00000010811b44d2, 1, 2, 0, 4, 0, 4.540000, 4.540000, {{2748, 2200},{2748, 1092},}}}, - [TOUPCAM_MODEL_MTR3CCD06000KMA_USB2 ] = { 0x1026, { "MTR3CCD06000KMA(USB2.0) ", 0x00000010811b4592, 1, 2, 0, 4, 0, 4.540000, 4.540000, {{2748, 2200},{2748, 1092},}}}, - [TOUPCAM_MODEL_U3CCD02800KMA ] = { 0x1085, { "U3CCD02800KMA ", 0x0000001081084052, 1, 3, 0, 0, 0, 4.540000, 4.540000, {{1938, 1460},{1610, 1212},{1930, 1092},}}}, - [TOUPCAM_MODEL_U3CCD02800KMA_USB2 ] = { 0x1099, { "U3CCD02800KMA(USB2.0) ", 0x0000001081084112, 1, 3, 0, 0, 0, 4.540000, 4.540000, {{1938, 1460},{1610, 1212},{1930, 1092},}}}, - [TOUPCAM_MODEL_GCMOS01200KMA ] = { 0xb135, { "GCMOS01200KMA ", 0x0000000080682219, 4, 2, 0, 0, 0, 3.750000, 3.750000, {{1280, 960},{640, 480},}}}, - [TOUPCAM_MODEL_GCMOS01200KMB ] = { 0xb134, { "GCMOS01200KMB ", 0x0000000080682219, 4, 2, 0, 0, 0, 3.750000, 3.750000, {{1280, 960},{640, 480},}}}, - [TOUPCAM_MODEL_G3CMOS02300KPB ] = { 0x1008, { "G3CMOS02300KPB ", 0x0000001081492241, 2, 1, 0, 1, 0, 5.860000, 5.860000, {{1920, 1200},}}}, - [TOUPCAM_MODEL_G3CMOS02300KPB_USB2 ] = { 0x100d, { "G3CMOS02300KPB(USB2.0) ", 0x0000001081492301, 2, 1, 0, 1, 0, 5.860000, 5.860000, {{1920, 1200},}}}, - [TOUPCAM_MODEL_GCMOS01200KPB ] = { 0xb133, { "GCMOS01200KPB ", 0x0000000080682209, 4, 2, 0, 0, 0, 3.750000, 3.750000, {{1280, 960},{640, 480},}}}, - [TOUPCAM_MODEL_U3CCD02800KPA ] = { 0x4004, { "U3CCD02800KPA ", 0x0000001081084042, 1, 3, 0, 0, 0, 4.540000, 4.540000, {{1938, 1460},{1610, 1212},{1930, 1092},}}}, - [TOUPCAM_MODEL_U3CCD02800KPA_USB2 ] = { 0x4005, { "U3CCD02800KPA(USB2.0) ", 0x0000001081084102, 1, 3, 0, 0, 0, 4.540000, 4.540000, {{1938, 1460},{1610, 1212},{1930, 1092},}}}, - [TOUPCAM_MODEL_MTR3CCD01400KPA ] = { 0x4020, { "MTR3CCD01400KPA ", 0x00000010811b44c2, 1, 1, 0, 4, 0, 6.450000, 6.450000, {{1360, 1024},}}}, - [TOUPCAM_MODEL_MTR3CCD01400KPA_USB2 ] = { 0x4021, { "MTR3CCD01400KPA(USB2.0) ", 0x00000010811b4582, 1, 1, 0, 4, 0, 6.450000, 6.450000, {{1360, 1024},}}}, - [TOUPCAM_MODEL_U3CMOS16000KPA ] = { 0x3016, { "U3CMOS16000KPA ", 0x0000000081002041, 2, 3, 3, 0, 0, 1.335000, 1.335000, {{4632, 3488},{2320, 1740},{1536, 1160},}}}, - [TOUPCAM_MODEL_U3CMOS16000KPA_USB2 ] = { 0x4016, { "U3CMOS16000KPA(USB2.0) ", 0x0000000081002101, 2, 3, 3, 0, 0, 1.335000, 1.335000, {{4632, 3488},{2320, 1740},{1536, 1160},}}}, - [TOUPCAM_MODEL_U3CCD06000KPA ] = { 0x2106, { "U3CCD06000KPA ", 0x0000001081084042, 1, 2, 0, 0, 0, 4.540000, 4.540000, {{2748, 2200},{2748, 1092},}}}, - [TOUPCAM_MODEL_U3CCD06000KPA_USB2 ] = { 0x2107, { "U3CCD06000KPA(USB2.0) ", 0x0000001081084102, 1, 2, 0, 0, 0, 4.540000, 4.540000, {{2748, 2200},{2748, 1092},}}}, - [TOUPCAM_MODEL_EXCCD00300KMA ] = { 0x8309, { "EXCCD00300KMA ", 0x0000001080082012, 3, 1, 0, 0, 0, 5.600000, 5.600000, {{640, 480},}}}, - [TOUPCAM_MODEL_EXCCD00300KMA_2 ] = { 0x8307, { "EXCCD00300KMA ", 0x0000001080080012, 1, 1, 0, 0, 0, 5.600000, 5.600000, {{640, 480},}}}, - [TOUPCAM_MODEL_EP3CMOS02300KPA ] = { 0x400c, { "EP3CMOS02300KPA ", 0x0000000081082041, 2, 2, 0, 0, 0, 3.750000, 3.750000, {{1920, 1200},{960, 600},}}}, - [TOUPCAM_MODEL_EP3CMOS02300KPA_USB2 ] = { 0x400d, { "EP3CMOS02300KPA(USB2.0) ", 0x0000000081082101, 2, 2, 0, 0, 0, 3.750000, 3.750000, {{1920, 1200},{960, 600},}}}, - [TOUPCAM_MODEL_EXCCD00440KPA ] = { 0x804b, { "EXCCD00440KPA ", 0x0000001100080004, 1, 1, 0, 0, 0, 8.600000, 8.300000, {{748, 576},}}}, - [TOUPCAM_MODEL_EXCCD00440KMB ] = { 0x804c, { "EXCCD00440KMB ", 0x0000001080080014, 1, 1, 0, 0, 0, 8.600000, 8.300000, {{748, 578},}}}, - [TOUPCAM_MODEL_EXCCD00440KMA ] = { 0x804d, { "EXCCD00440KMA ", 0x0000001080080014, 1, 1, 0, 0, 0, 8.600000, 8.300000, {{748, 578},}}}, - [TOUPCAM_MODEL_MTR3CCD06000KPA ] = { 0x400a, { "MTR3CCD06000KPA ", 0x00000010811b44c2, 1, 2, 0, 4, 0, 4.540000, 4.540000, {{2748, 2200},{2748, 1092},}}}, - [TOUPCAM_MODEL_MTR3CCD06000KPA_USB2 ] = { 0x400b, { "MTR3CCD06000KPA(USB2.0) ", 0x00000010811b4582, 1, 2, 0, 4, 0, 4.540000, 4.540000, {{2748, 2200},{2748, 1092},}}}, - [TOUPCAM_MODEL_EXCCD00440KPB_2 ] = { 0x804a, { "EXCCD00440KPB ", 0x0000001100080004, 1, 1, 0, 0, 0, 8.600000, 8.300000, {{748, 576},}}}, - [TOUPCAM_MODEL_ICMOS03100KPA ] = { 0xa312, { "ICMOS03100KPA ", 0x0000000080380009, 5, 3, 0, 0, 0, 3.200000, 3.200000, {{2048, 1536},{1024, 768},{680, 510},}}}, - [TOUPCAM_MODEL_E3CMOS12000KPA ] = { 0x4002, { "E3CMOS12000KPA ", 0x0000000081002041, 2, 2, 2, 0, 0, 1.850000, 1.850000, {{4000, 3000},{2048, 1080},}}}, - [TOUPCAM_MODEL_E3CMOS12000KPA_USB2 ] = { 0x4003, { "E3CMOS12000KPA(USB2.0) ", 0x0000000081002101, 2, 2, 2, 0, 0, 1.850000, 1.850000, {{4000, 3000},{2048, 1080},}}}, - [TOUPCAM_MODEL_E3CMOS03100KPB ] = { 0x4008, { "E3CMOS03100KPB ", 0x0000000081004041, 2, 2, 0, 0, 0, 2.500000, 2.500000, {{2048, 1536},{1920, 1080},}}}, - [TOUPCAM_MODEL_E3CMOS03100KPB_USB2 ] = { 0x4009, { "E3CMOS03100KPB(USB2.0) ", 0x0000000081004101, 2, 2, 0, 0, 0, 2.500000, 2.500000, {{2048, 1536},{1920, 1080},}}}, - [TOUPCAM_MODEL_UCMOS05100KPC ] = { 0x6518, { "UCMOS05100KPC ", 0x0000000080000029, 6, 3, 3, 0, 0, 2.200000, 2.200000, {{2592, 1944},{1280, 960},{640, 480},}}}, - [TOUPCAM_MODEL_E3CMOS02300KPB ] = { 0x4006, { "E3CMOS02300KPB ", 0x0000001081002041, 2, 1, 0, 0, 0, 5.860000, 5.860000, {{1920, 1200},}}}, - [TOUPCAM_MODEL_E3CMOS02300KPB_USB2 ] = { 0x4007, { "E3CMOS02300KPB(USB2.0) ", 0x0000001081002101, 2, 1, 0, 0, 0, 5.860000, 5.860000, {{1920, 1200},}}}, - [TOUPCAM_MODEL_UHCCD05200KMA ] = { 0x8527, { "UHCCD05200KMA ", 0x0000001080000012, 1, 2, 2, 0, 0, 3.450000, 3.450000, {{2448, 2040},{816, 680},}}}, - [TOUPCAM_MODEL_G3CMOS02300KPA_2 ] = { 0xe317, { "G3CMOS02300KPA ", 0x0000000081492241, 2, 2, 0, 1, 0, 3.750000, 3.750000, {{1920, 1200},{960, 600},}}}, - [TOUPCAM_MODEL_G3CMOS02300KPA_USB2_2 ] = { 0xe217, { "G3CMOS02300KPA(USB2.0) ", 0x0000000081492301, 2, 2, 0, 1, 0, 3.750000, 3.750000, {{1920, 1200},{960, 600},}}}, - [TOUPCAM_MODEL_GCMOS01200KMA_2 ] = { 0xb121, { "GCMOS01200KMA ", 0x0000000080402219, 4, 2, 0, 0, 0, 3.750000, 3.750000, {{1280, 960},{640, 480},}}}, - [TOUPCAM_MODEL_E3CMOS06300KPA ] = { 0x4000, { "E3CMOS06300KPA ", 0x0000000081004041, 2, 2, 2, 0, 0, 2.400000, 2.400000, {{3072, 2048},{1536, 1024},}}}, - [TOUPCAM_MODEL_E3CMOS06300KPA_USB2 ] = { 0x4001, { "E3CMOS06300KPA(USB2.0) ", 0x0000000081004101, 2, 2, 2, 0, 0, 2.400000, 2.400000, {{3072, 2048},{1536, 1024},}}}, - [TOUPCAM_MODEL_ICMOS14000KPC ] = { 0xfc15, { "ICMOS14000KPC ", 0x0000000081000001, 1, 8, 0, 0, 0, 1.400000, 1.400000, {{1280, 720},{1280, 720},{1100, 800},{1100, 800},{1100, 800},{1024, 768},{1024, 768},{1024, 768},}}}, - [TOUPCAM_MODEL_EXCCD00300KMA_2_2 ] = { 0x8306, { "EXCCD00300KMA ", 0x0000001080000012, 1, 1, 0, 0, 0, 5.600000, 5.600000, {{640, 480},}}}, - [TOUPCAM_MODEL_E3CMOS02300KPA ] = { 0x3723, { "E3CMOS02300KPA ", 0x0000000081002041, 2, 2, 2, 0, 0, 3.750000, 3.750000, {{1920, 1200},{960, 600},}}}, - [TOUPCAM_MODEL_E3CMOS02300KPA_USB2 ] = { 0x4723, { "E3CMOS02300KPA(USB2.0) ", 0x0000000081002101, 2, 2, 2, 0, 0, 3.750000, 3.750000, {{1920, 1200},{960, 600},}}}, - [TOUPCAM_MODEL_E3CMOS03100KPA ] = { 0x3731, { "E3CMOS03100KPA ", 0x0000000081002041, 2, 2, 2, 0, 0, 2.500000, 2.500000, {{2048, 1536},{1024, 768},}}}, - [TOUPCAM_MODEL_E3CMOS03100KPA_USB2 ] = { 0x4731, { "E3CMOS03100KPA(USB2.0) ", 0x0000000081002101, 2, 2, 2, 0, 0, 2.500000, 2.500000, {{2048, 1536},{1024, 768},}}}, - [TOUPCAM_MODEL_EXCCD00440KMB_2 ] = { 0x8047, { "EXCCD00440KMB ", 0x0000001080000014, 1, 1, 0, 0, 0, 8.600000, 8.300000, {{748, 578},}}}, - [TOUPCAM_MODEL_EXCCD00440KPB_2_2 ] = { 0x8046, { "EXCCD00440KPB ", 0x0000001100000004, 1, 1, 0, 0, 0, 8.600000, 8.300000, {{748, 576},}}}, - [TOUPCAM_MODEL_EXCCD00440KMA_2 ] = { 0x8045, { "EXCCD00440KMA ", 0x0000001080000014, 1, 1, 0, 0, 0, 8.600000, 8.300000, {{748, 578},}}}, - [TOUPCAM_MODEL_AAICX429C ] = { 0x8044, { "AAICX429C ", 0x0000001080000004, 1, 1, 0, 0, 0, 8.600000, 8.300000, {{748, 578},}}}, - [TOUPCAM_MODEL_U3CMOS18000KPA ] = { 0x3018, { "U3CMOS18000KPA ", 0x0000000081000461, 3, 3, 3, 0, 0, 1.250000, 1.250000, {{4912, 3684},{2456, 1842},{1228, 922},}}}, - [TOUPCAM_MODEL_U3CMOS18000KPA_USB2 ] = { 0x4018, { "U3CMOS18000KPA(USB2.0) ", 0x0000000081000521, 3, 3, 3, 0, 0, 1.250000, 1.250000, {{4912, 3684},{2456, 1842},{1228, 922},}}}, - [TOUPCAM_MODEL_U3CMOS03100KPC ] = { 0x3314, { "U3CMOS03100KPC ", 0x0000000081000041, 2, 2, 2, 0, 0, 2.500000, 2.500000, {{2048, 1536},{1024, 768},}}}, - [TOUPCAM_MODEL_U3CMOS03100KPC_USB2 ] = { 0x4314, { "U3CMOS03100KPC(USB2.0) ", 0x0000000081000101, 2, 2, 2, 0, 0, 2.500000, 2.500000, {{2048, 1536},{1024, 768},}}}, - [TOUPCAM_MODEL_L3CMOS03100KPB ] = { 0xc312, { "L3CMOS03100KPB ", 0x0000000081000041, 2, 2, 2, 0, 0, 2.500000, 2.500000, {{2048, 1536},{1024, 768},}}}, - [TOUPCAM_MODEL_L3CMOS03100KPB_USB2 ] = { 0xd312, { "L3CMOS03100KPB(USB2.0) ", 0x0000000081000101, 2, 2, 2, 0, 0, 2.500000, 2.500000, {{2048, 1536},{1024, 768},}}}, - [TOUPCAM_MODEL_GCMOS03100KPA ] = { 0xb310, { "GCMOS03100KPA ", 0x0000000080400201, 2, 2, 0, 0, 0, 2.200000, 2.200000, {{2048, 1536},{1024, 768},}}}, - [TOUPCAM_MODEL_UHCCD05200KPA ] = { 0x8526, { "UHCCD05200KPA ", 0x0000001080000002, 1, 2, 2, 0, 0, 3.450000, 3.450000, {{2448, 2040},{816, 680},}}}, - [TOUPCAM_MODEL_UHCCD05000KPA ] = { 0x8506, { "UHCCD05000KPA ", 0x0000001080000004, 1, 2, 1, 0, 0, 3.400000, 3.400000, {{2560, 1920},{1280, 960},}}}, - [TOUPCAM_MODEL_UHCCD03100KPB ] = { 0x8316, { "UHCCD03100KPB ", 0x0000001080000004, 1, 2, 1, 0, 0, 3.450000, 3.450000, {{2048, 1536},{640, 480},}}}, - [TOUPCAM_MODEL_UHCCD02000KPA ] = { 0x8206, { "UHCCD02000KPA ", 0x0000001080000002, 1, 1, 0, 0, 0, 4.400000, 4.400000, {{1600, 1200},}}}, - [TOUPCAM_MODEL_UHCCD01400KPB ] = { 0x8148, { "UHCCD01400KPB ", 0x0000001080000002, 1, 1, 0, 0, 0, 4.650000, 4.650000, {{1360, 1024},}}}, - [TOUPCAM_MODEL_UHCCD01400KMB ] = { 0x8149, { "UHCCD01400KMB ", 0x0000001080000012, 1, 1, 0, 0, 0, 4.650000, 4.650000, {{1360, 1024},}}}, - [TOUPCAM_MODEL_EXCCD01400KPA_2 ] = { 0x814e, { "EXCCD01400KPA ", 0x0000001080000002, 1, 1, 0, 0, 0, 6.450000, 6.450000, {{1360, 1024},}}}, - [TOUPCAM_MODEL_EXCCD01400KMA ] = { 0x814f, { "EXCCD01400KMA ", 0x0000001080000012, 1, 1, 0, 0, 0, 6.450000, 6.450000, {{1360, 1024},}}}, - [TOUPCAM_MODEL_ICMOS10000KPA ] = { 0xa010, { "ICMOS10000KPA ", 0x0000000080000029, 5, 3, 3, 0, 0, 1.670000, 1.670000, {{3584, 2748},{1792, 1374},{896, 684},}}}, - [TOUPCAM_MODEL_ICMOS14000KPA ] = { 0xa014, { "ICMOS14000KPA ", 0x0000000080000021, 5, 3, 3, 0, 0, 1.400000, 1.400000, {{4096, 3288},{2048, 1644},{1024, 822},}}}, - [TOUPCAM_MODEL_LCMOS03100KPB ] = { 0xf312, { "LCMOS03100KPB ", 0x0000000081000001, 2, 3, 3, 0, 0, 2.500000, 2.500000, {{2048, 1536},{1024, 768},{684, 512},}}}, - [TOUPCAM_MODEL_UCMOS02000KPC ] = { 0x5002, { "UCMOS02000KPC ", 0x0000000080000001, 5, 3, 3, 0, 0, 3.200000, 3.200000, {{1600, 1200},{800, 600},{400, 300},}}}, - [TOUPCAM_MODEL_WCMOS10000KPA ] = { 0x6b10, { "WCMOS10000KPA ", 0x0000000080000021, 5, 3, 3, 0, 0, 1.670000, 1.670000, {{3584, 2748},{1792, 1374},{896, 684},}}}, - [TOUPCAM_MODEL_UCMOS03100KPB ] = { 0x5003, { "UCMOS03100KPB ", 0x0000000080000001, 5, 3, 3, 0, 0, 3.200000, 3.200000, {{2048, 1536},{1024, 768},{512, 384},}}}, - [TOUPCAM_MODEL_GCMOS01200KMB_2 ] = { 0xb124, { "GCMOS01200KMB ", 0x0000000080402219, 4, 2, 0, 0, 0, 3.750000, 3.750000, {{1280, 960},{640, 480},}}}, - [TOUPCAM_MODEL_GCMOS01200KPB_2 ] = { 0xb123, { "GCMOS01200KPB ", 0x0000000080402209, 4, 2, 0, 0, 0, 3.750000, 3.750000, {{1280, 960},{640, 480},}}}, - [TOUPCAM_MODEL_GCMOS01200KPB_2_2 ] = { 0xb122, { "GCMOS01200KPB ", 0x0000000080400209, 4, 2, 0, 0, 0, 3.750000, 3.750000, {{1280, 960},{640, 480},}}}, - [TOUPCAM_MODEL_UCMOS01200KPB ] = { 0x6122, { "UCMOS01200KPB ", 0x0000000080000001, 4, 2, 2, 0, 0, 3.750000, 3.750000, {{1280, 960},{640, 480},}}}, - [TOUPCAM_MODEL_U3CMOS14000KPB ] = { 0x3bb4, { "U3CMOS14000KPB ", 0x0000000081000061, 3, 3, 3, 0, 0, 1.400000, 1.400000, {{4096, 3286},{2048, 1644},{1024, 822},}}}, - [TOUPCAM_MODEL_U3CMOS14000KPB_USB2 ] = { 0x4bb4, { "U3CMOS14000KPB(USB2.0) ", 0x0000000081000121, 3, 3, 3, 0, 0, 1.400000, 1.400000, {{4096, 3286},{2048, 1644},{1024, 822},}}}, - [TOUPCAM_MODEL_LCMOS01200KPB ] = { 0xf132, { "LCMOS01200KPB ", 0x0000000080000001, 5, 2, 2, 0, 0, 3.750000, 3.750000, {{1280, 960},{640, 480},}}}, - [TOUPCAM_MODEL_LCMOS14000KPA ] = { 0xf014, { "LCMOS14000KPA ", 0x0000000081000021, 5, 3, 3, 0, 0, 1.400000, 1.400000, {{4096, 3288},{2048, 1644},{1024, 822},}}}, - [TOUPCAM_MODEL_LCMOS10000KPA ] = { 0xf010, { "LCMOS10000KPA ", 0x0000000081000029, 5, 3, 3, 0, 0, 1.670000, 1.670000, {{3584, 2748},{1792, 1374},{896, 684},}}}, - [TOUPCAM_MODEL_LCMOS09000KPA ] = { 0xf900, { "LCMOS09000KPA ", 0x0000000081000029, 5, 3, 3, 0, 0, 1.670000, 1.670000, {{3488, 2616},{1744, 1308},{872, 654},}}}, - [TOUPCAM_MODEL_LCMOS08000KPA ] = { 0xf800, { "LCMOS08000KPA ", 0x0000000081000029, 5, 3, 3, 0, 0, 1.670000, 1.670000, {{3264, 2448},{1600, 1200},{800, 600},}}}, - [TOUPCAM_MODEL_LCMOS05100KPA ] = { 0xf510, { "LCMOS05100KPA ", 0x0000000081000029, 6, 3, 3, 0, 0, 2.200000, 2.200000, {{2592, 1944},{1280, 960},{640, 480},}}}, - [TOUPCAM_MODEL_LCMOS03100KPA ] = { 0xf310, { "LCMOS03100KPA ", 0x0000000081000009, 5, 3, 3, 0, 0, 3.200000, 3.200000, {{2048, 1536},{1024, 768},{680, 510},}}}, - [TOUPCAM_MODEL_LCMOS02000KPA ] = { 0xf200, { "LCMOS02000KPA ", 0x0000000080000001, 5, 2, 2, 0, 0, 3.200000, 3.200000, {{1600, 1200},{800, 600},}}}, - [TOUPCAM_MODEL_LCMOS01300KPA ] = { 0xf130, { "LCMOS01300KPA ", 0x0000000080000001, 2, 3, 0, 0, 0, 3.600000, 3.600000, {{1280, 1024},{640, 512},{320, 256},}}}, - [TOUPCAM_MODEL_SCCCD01400KMB ] = { 0x9143, { "SCCCD01400KMB ", 0x0000001080000092, 1, 1, 0, 0, 0, 4.650000, 4.650000, {{1360, 1024},}}}, - [TOUPCAM_MODEL_UHCCD05200KPA_2 ] = { 0x8520, { "UHCCD05200KPA ", 0x0000001080000002, 1, 2, 1, 0, 0, 3.450000, 3.450000, {{2448, 2040},{816, 680},}}}, - [TOUPCAM_MODEL_UHCCD05100KPA ] = { 0x8516, { "UHCCD05100KPA ", 0x0000001080000004, 1, 2, 1, 0, 0, 2.775000, 2.775000, {{2592, 1944},{560, 420},}}}, - [TOUPCAM_MODEL_UHCCD05100KPA_2 ] = { 0x8510, { "UHCCD05100KPA ", 0x0000001080000004, 1, 2, 1, 0, 0, 2.775000, 2.775000, {{2592, 1944},{560, 420},}}}, - [TOUPCAM_MODEL_UHCCD05000KPA_2 ] = { 0x8500, { "UHCCD05000KPA ", 0x0000001080000004, 1, 2, 1, 0, 0, 3.400000, 3.400000, {{2560, 1920},{1280, 960},}}}, - [TOUPCAM_MODEL_UHCCD03100KPB_2 ] = { 0x8311, { "UHCCD03100KPB ", 0x0000001080000004, 1, 2, 1, 0, 0, 3.450000, 3.450000, {{2048, 1536},{640, 480},}}}, - [TOUPCAM_MODEL_UHCCD02000KPA_2 ] = { 0x8200, { "UHCCD02000KPA ", 0x0000001080000002, 1, 1, 0, 0, 0, 4.400000, 4.400000, {{1600, 1200},}}}, - [TOUPCAM_MODEL_UHCCD01400KPB_2 ] = { 0x8146, { "UHCCD01400KPB ", 0x0000001080000002, 1, 1, 0, 0, 0, 4.650000, 4.650000, {{1360, 1024},}}}, - [TOUPCAM_MODEL_UHCCD01400KPA ] = { 0x8140, { "UHCCD01400KPA ", 0x0000001080000002, 1, 1, 0, 0, 0, 4.650000, 4.650000, {{1360, 1024},}}}, - [TOUPCAM_MODEL_UHCCD01400KMB_2 ] = { 0x7141, { "UHCCD01400KMB ", 0x0000001080000012, 1, 1, 0, 0, 0, 4.650000, 4.650000, {{1360, 1024},}}}, - [TOUPCAM_MODEL_UHCCD01400KMA ] = { 0x7140, { "UHCCD01400KMA ", 0x0000001080000012, 1, 1, 0, 0, 0, 4.650000, 4.650000, {{1360, 1024},}}}, - [TOUPCAM_MODEL_UHCCD00800KPA ] = { 0x8080, { "UHCCD00800KPA ", 0x0000001080000002, 1, 1, 0, 0, 0, 4.650000, 4.650000, {{1024, 768},}}}, - [TOUPCAM_MODEL_UCMOS05100KMA ] = { 0x6511, { "UCMOS05100KMA ", 0x0000000080000039, 6, 3, 3, 0, 0, 2.200000, 2.200000, {{2592, 1944},{1280, 960},{640, 480},}}}, - [TOUPCAM_MODEL_UCMOS14000KPA ] = { 0x6014, { "UCMOS14000KPA ", 0x0000000080000021, 5, 3, 3, 0, 0, 1.400000, 1.400000, {{4096, 3288},{2048, 1644},{1024, 822},}}}, - [TOUPCAM_MODEL_UCMOS10000KPA ] = { 0x6010, { "UCMOS10000KPA ", 0x0000000080000029, 5, 3, 3, 0, 0, 1.670000, 1.670000, {{3584, 2748},{1792, 1374},{896, 684},}}}, - [TOUPCAM_MODEL_UCMOS09000KPB ] = { 0x6901, { "UCMOS09000KPB ", 0x0000000080000029, 5, 3, 3, 0, 0, 1.670000, 1.670000, {{3488, 2616},{1744, 1308},{872, 654},}}}, - [TOUPCAM_MODEL_UCMOS09000KPA ] = { 0x6900, { "UCMOS09000KPA ", 0x0000000080000021, 6, 3, 3, 0, 0, 1.750000, 1.750000, {{3488, 2616},{1744, 1308},{872, 654},}}}, - [TOUPCAM_MODEL_UCMOS08000KPB ] = { 0x6801, { "UCMOS08000KPB ", 0x0000000080000029, 5, 3, 3, 0, 0, 1.670000, 1.670000, {{3264, 2448},{1600, 1200},{800, 600},}}}, - [TOUPCAM_MODEL_UCMOS08000KPA ] = { 0x6800, { "UCMOS08000KPA ", 0x0000000080000021, 6, 3, 3, 0, 0, 1.750000, 1.750000, {{3264, 2448},{1600, 1200},{800, 600},}}}, - [TOUPCAM_MODEL_UCMOS05100KPA ] = { 0x6510, { "UCMOS05100KPA ", 0x0000000080000029, 6, 3, 3, 0, 0, 2.200000, 2.200000, {{2592, 1944},{1280, 960},{640, 480},}}}, - [TOUPCAM_MODEL_UCMOS03100KPA ] = { 0x6310, { "UCMOS03100KPA ", 0x0000000080000009, 5, 3, 3, 0, 0, 3.200000, 3.200000, {{2048, 1536},{1024, 768},{680, 510},}}}, - [TOUPCAM_MODEL_UCMOS02000KPB ] = { 0x6201, { "UCMOS02000KPB ", 0x0000000080000001, 5, 2, 2, 0, 0, 3.200000, 3.200000, {{1600, 1200},{800, 600},}}}, - [TOUPCAM_MODEL_UCMOS02000KPA ] = { 0x6200, { "UCMOS02000KPA ", 0x0000000400000001, 6, 2, 0, 0, 0, 2.800000, 2.800000, {{1600, 1200},{800, 600},}}}, - [TOUPCAM_MODEL_UCMOS01300KPA ] = { 0x6130, { "UCMOS01300KPA ", 0x0000000080000001, 1, 3, 0, 0, 0, 3.600000, 3.600000, {{1280, 1024},{640, 512},{320, 256},}}}, - [TOUPCAM_MODEL_UCMOS01300KMA ] = { 0x6131, { "UCMOS01300KMA ", 0x0000000080000011, 1, 1, 0, 0, 0, 5.200000, 5.200000, {{1280, 1024},}}}, - [TOUPCAM_MODEL_UCMOS00350KPA ] = { 0x6035, { "UCMOS00350KPA ", 0x0000000080000001, 2, 2, 0, 0, 0, 5.600000, 5.600000, {{640, 480},{320, 240},}}}, - [TOUPCAM_MODEL_U3CMOS14000KPA ] = { 0x3014, { "U3CMOS14000KPA ", 0x0000000081000061, 3, 3, 3, 0, 0, 1.400000, 1.400000, {{4096, 3286},{2048, 1644},{1024, 822},}}}, - [TOUPCAM_MODEL_U3CMOS14000KPA_USB2 ] = { 0x4014, { "U3CMOS14000KPA(USB2.0) ", 0x0000000081000121, 3, 3, 3, 0, 0, 1.400000, 1.400000, {{4096, 3286},{2048, 1644},{1024, 822},}}}, - [TOUPCAM_MODEL_U3CMOS10000KPA ] = { 0x3010, { "U3CMOS10000KPA ", 0x0000000081000061, 3, 3, 3, 0, 0, 1.670000, 1.670000, {{3584, 2746},{1792, 1372},{896, 680},}}}, - [TOUPCAM_MODEL_U3CMOS10000KPA_USB2 ] = { 0x4010, { "U3CMOS10000KPA(USB2.0) ", 0x0000000081000121, 3, 3, 3, 0, 0, 1.670000, 1.670000, {{3584, 2746},{1792, 1372},{896, 680},}}}, - [TOUPCAM_MODEL_U3CMOS08500KPA ] = { 0x3850, { "U3CMOS08500KPA ", 0x0000000081000061, 3, 2, 2, 0, 0, 1.670000, 1.670000, {{3328, 2548},{1664, 1272},}}}, - [TOUPCAM_MODEL_U3CMOS08500KPA_USB2 ] = { 0x4850, { "U3CMOS08500KPA(USB2.0) ", 0x0000000081000121, 3, 2, 2, 0, 0, 1.670000, 1.670000, {{3328, 2548},{1664, 1272},}}}, - [TOUPCAM_MODEL_U3CMOS05100KPA ] = { 0x3510, { "U3CMOS05100KPA ", 0x0000000081000061, 6, 3, 3, 0, 0, 2.200000, 2.200000, {{2560, 1922},{1280, 960},{640, 480},}}}, - [TOUPCAM_MODEL_U3CMOS05100KPA_USB2 ] = { 0x4510, { "U3CMOS05100KPA(USB2.0) ", 0x0000000081000121, 6, 3, 3, 0, 0, 2.200000, 2.200000, {{2560, 1922},{1280, 960},{640, 480},}}}, - [TOUPCAM_MODEL_U3CMOS03100KPB ] = { 0x3312, { "U3CMOS03100KPB ", 0x0000000081000041, 2, 2, 2, 0, 0, 2.200000, 2.200000, {{1920, 1080},{1280, 720},}}}, - [TOUPCAM_MODEL_U3CMOS03100KPB_USB2 ] = { 0x4312, { "U3CMOS03100KPB(USB2.0) ", 0x0000000081000101, 2, 2, 2, 0, 0, 2.200000, 2.200000, {{1920, 1080},{1280, 720},}}}, - [TOUPCAM_MODEL_U3CMOS03100KPA ] = { 0x3310, { "U3CMOS03100KPA ", 0x0000000081000041, 2, 2, 2, 0, 0, 2.200000, 2.200000, {{2048, 1534},{1024, 770},}}}, - [TOUPCAM_MODEL_U3CMOS03100KPA_USB2 ] = { 0x4310, { "U3CMOS03100KPA(USB2.0) ", 0x0000000081000101, 2, 2, 2, 0, 0, 2.200000, 2.200000, {{2048, 1534},{1024, 770},}}}, - [TOUPCAM_MODEL_SCCCD05200KPA ] = { 0x9520, { "SCCCD05200KPA ", 0x0000001080000082, 1, 2, 1, 0, 0, 3.450000, 3.450000, {{2448, 2040},{816, 680},}}}, - [TOUPCAM_MODEL_SCCCD01400KMA ] = { 0x9142, { "SCCCD01400KMA ", 0x0000001080000092, 1, 1, 0, 0, 0, 6.450000, 6.450000, {{1360, 1024},}}}, - [TOUPCAM_MODEL_SCCCD01400KPB ] = { 0x9146, { "SCCCD01400KPB ", 0x0000001080000082, 1, 1, 0, 0, 0, 4.650000, 4.650000, {{1360, 1024},}}}, - [TOUPCAM_MODEL_SCCCD01400KPA ] = { 0x9141, { "SCCCD01400KPA ", 0x0000001080000082, 1, 1, 0, 0, 0, 6.450000, 6.450000, {{1360, 1024},}}}, - [TOUPCAM_MODEL_EXCCD01400KPA_2_2 ] = { 0x8141, { "EXCCD01400KPA ", 0x0000001080000002, 1, 1, 0, 0, 0, 6.450000, 6.450000, {{1360, 1024},}}}, - [TOUPCAM_MODEL_EXCCD01400KMA_2 ] = { 0x8142, { "EXCCD01400KMA ", 0x0000001080000012, 1, 1, 0, 0, 0, 6.450000, 6.450000, {{1360, 1024},}}}, - [TOUPCAM_MODEL_EXCCD00300KMA_2_2_2 ] = { 0x8031, { "EXCCD00300KMA ", 0x0000001080000012, 1, 1, 0, 0, 0, 5.600000, 5.600000, {{640, 480},}}}, - [TOUPCAM_MODEL_ICMOS03100KPA_2 ] = { 0xa310, { "ICMOS03100KPA ", 0x0000000080000009, 5, 3, 3, 0, 0, 3.200000, 3.200000, {{2048, 1536},{1024, 768},{680, 510},}}}, - [TOUPCAM_MODEL_ICMOS01300KMA ] = { 0xa131, { "ICMOS01300KMA ", 0x0000000080000011, 1, 1, 0, 0, 0, 5.200000, 5.200000, {{1280, 1024},}}}, - [TOUPCAM_MODEL_UCMOS01200KMA ] = { 0x6121, { "UCMOS01200KMA ", 0x0000000080000011, 1, 1, 0, 0, 0, 3.750000, 3.750000, {{1280, 960},}}}, - [TOUPCAM_MODEL_L3CMOS14000KPA ] = { 0xc014, { "L3CMOS14000KPA ", 0x0000000081000061, 3, 3, 3, 0, 0, 1.400000, 1.400000, {{4096, 3286},{2048, 1644},{1024, 822},}}}, - [TOUPCAM_MODEL_L3CMOS14000KPA_USB2 ] = { 0xd014, { "L3CMOS14000KPA(USB2.0) ", 0x0000000081000121, 3, 3, 3, 0, 0, 1.400000, 1.400000, {{4096, 3286},{2048, 1644},{1024, 822},}}}, - [TOUPCAM_MODEL_L3CMOS10000KPA ] = { 0xc010, { "L3CMOS10000KPA ", 0x0000000081000061, 3, 3, 3, 0, 0, 1.670000, 1.670000, {{3584, 2746},{1792, 1372},{896, 680},}}}, - [TOUPCAM_MODEL_L3CMOS10000KPA_USB2 ] = { 0xd010, { "L3CMOS10000KPA(USB2.0) ", 0x0000000081000121, 3, 3, 3, 0, 0, 1.670000, 1.670000, {{3584, 2746},{1792, 1372},{896, 680},}}}, - [TOUPCAM_MODEL_L3CMOS05100KPA ] = { 0xc510, { "L3CMOS05100KPA ", 0x0000000081000061, 6, 3, 3, 0, 0, 2.200000, 2.200000, {{2560, 1922},{1280, 960},{640, 480},}}}, - [TOUPCAM_MODEL_L3CMOS05100KPA_USB2 ] = { 0xd510, { "L3CMOS05100KPA(USB2.0) ", 0x0000000081000121, 6, 3, 3, 0, 0, 2.200000, 2.200000, {{2560, 1922},{1280, 960},{640, 480},}}}, - [TOUPCAM_MODEL_L3CMOS03100KPA ] = { 0xc310, { "L3CMOS03100KPA ", 0x0000000081000041, 2, 2, 2, 0, 0, 2.200000, 2.200000, {{2048, 1534},{1024, 770},}}}, - [TOUPCAM_MODEL_L3CMOS03100KPA_USB2 ] = { 0xd310, { "L3CMOS03100KPA(USB2.0) ", 0x0000000081000101, 2, 2, 2, 0, 0, 2.200000, 2.200000, {{2048, 1534},{1024, 770},}}}, - [TOUPCAM_MODEL_MTR3CMOS20000KPA ] = { 0x1116, { "MTR3CMOS20000KPA ", 0x00000000836b24c9, 3, 4, 4, 1, 0, 2.400000, 2.400000, {{5440, 3648},{4096, 2160},{2736, 1824},{1824, 1216},}}}, - [TOUPCAM_MODEL_MTR3CMOS20000KPA_USB2 ] = { 0x1117, { "MTR3CMOS20000KPA(USB2.0) ", 0x00000000836b2589, 3, 4, 4, 1, 0, 2.400000, 2.400000, {{5440, 3648},{4096, 2160},{2736, 1824},{1824, 1216},}}}, - [TOUPCAM_MODEL_ATR3CMOS20000KPA ] = { 0x1114, { "ATR3CMOS20000KPA ", 0x00000000836b24c9, 3, 4, 0, 1, 0, 2.400000, 2.400000, {{5440, 3648},{4096, 2160},{2736, 1824},{1824, 1216},}}}, - [TOUPCAM_MODEL_ATR3CMOS20000KPA_USB2 ] = { 0x1115, { "ATR3CMOS20000KPA(USB2.0) ", 0x00000000836b2589, 3, 4, 0, 1, 0, 2.400000, 2.400000, {{5440, 3648},{4096, 2160},{2736, 1824},{1824, 1216},}}}, - [TOUPCAM_MODEL_MTR3CCD12000KPA ] = { 0x1021, { "MTR3CCD12000KPA ", 0x00000010811b44c2, 1, 2, 0, 4, 0, 3.100000, 3.100000, {{4248, 2836},{2124, 1418},}}}, - [TOUPCAM_MODEL_MTR3CCD12000KPA_USB2 ] = { 0x1035, { "MTR3CCD12000KPA(USB2.0) ", 0x00000010811b4582, 1, 2, 0, 4, 0, 3.100000, 3.100000, {{4248, 2836},{2124, 1418},}}}, - [TOUPCAM_MODEL_E3ISPM01500KPA ] = { 0x11d0, { "E3ISPM01500KPA ", 0x0000001081042449, 2, 2, 2, 0, 0, 3.450000, 3.450000, {{1440, 1080},{720, 540},}}}, - [TOUPCAM_MODEL_E3ISPM01500KPA_USB2 ] = { 0x11d1, { "E3ISPM01500KPA(USB2.0) ", 0x0000001081042509, 2, 2, 2, 0, 0, 3.450000, 3.450000, {{1440, 1080},{720, 540},}}}, - [TOUPCAM_MODEL_E3CMOS20000KMA ] = { 0x11de, { "E3CMOS20000KMA ", 0x0000000081002059, 2, 4, 4, 0, 0, 2.400000, 2.400000, {{5440, 3648},{4080, 2160},{2736, 1824},{1824, 1216},}}}, - [TOUPCAM_MODEL_E3CMOS20000KMA_USB2 ] = { 0x11df, { "E3CMOS20000KMA(USB2.0) ", 0x0000000081002119, 2, 4, 4, 0, 0, 2.400000, 2.400000, {{5440, 3648},{4080, 2160},{2736, 1824},{1824, 1216},}}}, - [TOUPCAM_MODEL_G3CMOS20000KPA_2_2 ] = { 0x11e6, { "G3CMOS20000KPA ", 0x0000000083492649, 3, 4, 4, 2, 0, 2.400000, 2.400000, {{5440, 3648},{4096, 2160},{2736, 1824},{1824, 1216},}}}, - [TOUPCAM_MODEL_G3CMOS20000KPA_USB2_2_2] = { 0x11e7, { "G3CMOS20000KPA(USB2.0) ", 0x0000000083492709, 3, 4, 4, 2, 0, 2.400000, 2.400000, {{5440, 3648},{4096, 2160},{2736, 1824},{1824, 1216},}}}, - [TOUPCAM_MODEL_BIGEYE10000KPA ] = { 0x11e4, { "BigEye10000KPA ", 0x0000000081042449, 2, 5, 5, 0, 0, 4.630000, 4.630000, {{3704, 2778},{4096, 2160},{2760, 2072},{2048, 1080},{1360, 720},}}}, - [TOUPCAM_MODEL_BIGEYE10000KPA_USB2 ] = { 0x11e5, { "BigEye10000KPA(USB2.0) ", 0x0000000081042509, 2, 5, 5, 0, 0, 4.630000, 4.630000, {{3704, 2778},{4096, 2160},{2760, 2072},{2048, 1080},{1360, 720},}}}, - [TOUPCAM_MODEL_BIGEYE4200KMB ] = { 0x1203, { "BigEye4200KMB ", 0x0000000887002051, 3, 2, 0, 0, 0, 6.500000, 6.500000, {{2048, 2046},{1024, 1022},}}}, - [TOUPCAM_MODEL_BIGEYE4200KMB_USB2 ] = { 0x1204, { "BigEye4200KMB(USB2.0) ", 0x0000000887002111, 3, 2, 0, 0, 0, 6.500000, 6.500000, {{2048, 2046},{1024, 1022},}}}, - [TOUPCAM_MODEL_G3CMOS20000KMA_2 ] = { 0x11ec, { "G3CMOS20000KMA ", 0x0000000083492659, 3, 4, 4, 2, 0, 2.400000, 2.400000, {{5440, 3648},{4096, 2160},{2736, 1824},{1824, 1216},}}}, - [TOUPCAM_MODEL_G3CMOS20000KMA_USB2_2 ] = { 0x11ed, { "G3CMOS20000KMA(USB2.0) ", 0x0000000083492719, 3, 4, 4, 2, 0, 2.400000, 2.400000, {{5440, 3648},{4096, 2160},{2736, 1824},{1824, 1216},}}}, - [TOUPCAM_MODEL_ATR3CMOS20000KMA ] = { 0x11d2, { "ATR3CMOS20000KMA ", 0x00000000836b24d9, 3, 4, 0, 1, 0, 2.400000, 2.400000, {{5440, 3648},{4096, 2160},{2736, 1824},{1824, 1216},}}}, - [TOUPCAM_MODEL_ATR3CMOS20000KMA_USB2 ] = { 0x11d3, { "ATR3CMOS20000KMA(USB2.0) ", 0x00000000836b2599, 3, 4, 0, 1, 0, 2.400000, 2.400000, {{5440, 3648},{4096, 2160},{2736, 1824},{1824, 1216},}}}, - [TOUPCAM_MODEL_MTR3CMOS20000KMA ] = { 0x11ee, { "MTR3CMOS20000KMA ", 0x00000000836b24d9, 3, 4, 4, 1, 0, 2.400000, 2.400000, {{5440, 3648},{4096, 2160},{2736, 1824},{1824, 1216},}}}, - [TOUPCAM_MODEL_MTR3CMOS20000KMA_USB2 ] = { 0x11ef, { "MTR3CMOS20000KMA(USB2.0) ", 0x00000000836b2599, 3, 4, 4, 1, 0, 2.400000, 2.400000, {{5440, 3648},{4096, 2160},{2736, 1824},{1824, 1216},}}}, - [TOUPCAM_MODEL_MTR3CMOS16000KPA_2 ] = { 0x11f0, { "MTR3CMOS16000KPA ", 0x00000000812b24c9, 2, 3, 0, 1, 0, 3.800000, 3.800000, {{4640, 3506},{2304, 1750},{1536, 1160},}}}, - [TOUPCAM_MODEL_MTR3CMOS16000KPA_USB2_2] = { 0x11f1, { "MTR3CMOS16000KPA(USB2.0) ", 0x00000000812b2589, 2, 3, 0, 1, 0, 3.800000, 3.800000, {{4640, 3506},{2304, 1750},{1536, 1160},}}}, - [TOUPCAM_MODEL_E3CMOS01200KPA_2 ] = { 0x11f8, { "E3CMOS01200KPA ", 0x0000000081001049, 2, 2, 0, 0, 0, 3.750000, 3.750000, {{1280, 960},{640, 480},}}}, - [TOUPCAM_MODEL_E3CMOS01200KPA_USB2_2 ] = { 0x11f9, { "E3CMOS01200KPA(USB2.0) ", 0x0000000081001109, 2, 2, 0, 0, 0, 3.750000, 3.750000, {{1280, 960},{640, 480},}}}, - [TOUPCAM_MODEL_UCMOS01300KPA_2 ] = { 0x11fc, { "UCMOS01300KPA ", 0x0000000080000001, 2, 2, 0, 0, 0, 3.750000, 3.750000, {{1280, 960},{1280, 720},}}}, - [TOUPCAM_MODEL_ATR3CMOS16000KPA_2 ] = { 0x11ea, { "ATR3CMOS16000KPA ", 0x00000000836b24c9, 3, 3, 0, 1, 0, 3.800000, 3.800000, {{4640, 3506},{2304, 1750},{1536, 1160},}}}, - [TOUPCAM_MODEL_ATR3CMOS16000KPA_USB2_2] = { 0x11eb, { "ATR3CMOS16000KPA(USB2.0) ", 0x00000000836b2589, 3, 3, 0, 1, 0, 3.800000, 3.800000, {{4640, 3506},{2304, 1750},{1536, 1160},}}}, - [TOUPCAM_MODEL_E3CMOS12300KMA ] = { 0x1201, { "E3CMOS12300KMA ", 0x0000001081002459, 2, 2, 2, 0, 0, 3.450000, 3.450000, {{4096, 3000},{2048, 1500},}}}, - [TOUPCAM_MODEL_E3CMOS12300KMA_USB2 ] = { 0x1202, { "E3CMOS12300KMA(USB2.0) ", 0x0000001081002519, 2, 2, 2, 0, 0, 3.450000, 3.450000, {{4096, 3000},{2048, 1500},}}}, - [TOUPCAM_MODEL_E3ISPM08300KPB ] = { 0x11fa, { "E3ISPM08300KPB ", 0x0000000081042449, 2, 2, 2, 0, 0, 2.000000, 2.000000, {{3840, 2160},{1920, 1080},}}}, - [TOUPCAM_MODEL_E3ISPM08300KPB_USB2 ] = { 0x11fb, { "E3ISPM08300KPB(USB2.0) ", 0x0000000081042509, 2, 2, 2, 0, 0, 2.000000, 2.000000, {{3840, 2160},{1920, 1080},}}}, - [TOUPCAM_MODEL_ATR3CMOS16000KMA_2 ] = { 0x11f6, { "ATR3CMOS16000KMA ", 0x00000000836b24d9, 3, 3, 0, 1, 0, 3.800000, 3.800000, {{4640, 3506},{2304, 1750},{1536, 1160},}}}, - [TOUPCAM_MODEL_ATR3CMOS16000KMA_USB2_2] = { 0x11f7, { "ATR3CMOS16000KMA(USB2.0) ", 0x00000000836b2599, 3, 3, 0, 1, 0, 3.800000, 3.800000, {{4640, 3506},{2304, 1750},{1536, 1160},}}}, - [TOUPCAM_MODEL_ATR3CMOS10300KPA ] = { 0x11fd, { "ATR3CMOS10300KPA ", 0x00000000876b44c9, 2, 4, 4, 1, 0, 4.630000, 4.630000, {{3704, 2778},{4096, 2160},{2048, 1080},{1360, 720},}}}, - [TOUPCAM_MODEL_ATR3CMOS10300KPA_USB2 ] = { 0x11fe, { "ATR3CMOS10300KPA(USB2.0) ", 0x00000000876b4589, 2, 4, 4, 1, 0, 4.630000, 4.630000, {{3704, 2778},{4096, 2160},{2048, 1080},{1360, 720},}}}, - [TOUPCAM_MODEL_LCMOS01300KPA_2 ] = { 0x1207, { "LCMOS01300KPA ", 0x0000000080000001, 2, 2, 0, 0, 0, 3.750000, 3.750000, {{1280, 960},{1280, 720},}}}, - [TOUPCAM_MODEL_MTR3CCD12000KMA ] = { 0x1022, { "MTR3CCD12000KMA ", 0x00000010811b44d2, 1, 2, 0, 4, 0, 3.100000, 3.100000, {{4248, 2836},{2124, 1418},}}}, - [TOUPCAM_MODEL_MTR3CCD12000KMA_USB2 ] = { 0x1036, { "MTR3CCD12000KMA(USB2.0) ", 0x00000010811b4592, 1, 2, 0, 4, 0, 3.100000, 3.100000, {{4248, 2836},{2124, 1418},}}}, - [TOUPCAM_MODEL_I3ISPM01500KPA ] = { 0x1209, { "I3ISPM01500KPA ", 0x00000050811c1449, 9, 2, 0, 0, 4, 3.450000, 3.450000, {{1440, 1080},{720, 540},}}}, - [TOUPCAM_MODEL_I3ISPM01500KPA_USB2 ] = { 0x120a, { "I3ISPM01500KPA(USB2.0) ", 0x00000050811c1509, 9, 2, 0, 0, 4, 3.450000, 3.450000, {{1440, 1080},{720, 540},}}}, - [TOUPCAM_MODEL_I3ISPM01500KPA_2 ] = { 0x127a, { "I3ISPM01500KPA ", 0x00000050831c1449, 9, 2, 0, 0, 3, 3.450000, 3.450000, {{1440, 1080},{720, 540},}}}, - [TOUPCAM_MODEL_I3ISPM01500KPA_USB2_2 ] = { 0x127b, { "I3ISPM01500KPA(USB2.0) ", 0x00000050831c1509, 9, 2, 0, 0, 3, 3.450000, 3.450000, {{1440, 1080},{720, 540},}}}, - [TOUPCAM_MODEL_MTR3CMOS10300KPA ] = { 0x11ff, { "MTR3CMOS10300KPA ", 0x00000000876b44c9, 2, 4, 4, 1, 0, 4.630000, 4.630000, {{3704, 2778},{4096, 2160},{2048, 1080},{1360, 720},}}}, - [TOUPCAM_MODEL_MTR3CMOS10300KPA_USB2 ] = { 0x1200, { "MTR3CMOS10300KPA(USB2.0) ", 0x00000000876b4589, 2, 4, 4, 1, 0, 4.630000, 4.630000, {{3704, 2778},{4096, 2160},{2048, 1080},{1360, 720},}}}, - [TOUPCAM_MODEL_I3ISPM02000KPA ] = { 0x120d, { "I3ISPM02000KPA ", 0x00000000810c1449, 2, 1, 0, 0, 0, 3.750000, 3.750000, {{1920, 1080},}}}, - [TOUPCAM_MODEL_I3ISPM02000KPA_USB2 ] = { 0x120e, { "I3ISPM02000KPA(USB2.0) ", 0x00000000810c1509, 2, 1, 0, 0, 0, 3.750000, 3.750000, {{1920, 1080},}}}, - [TOUPCAM_MODEL_ECMOS05000KPA ] = { 0x1208, { "ECMOS05000KPA ", 0x0000000081000009, 2, 2, 2, 0, 0, 2.000000, 2.000000, {{2592, 1944},{1296, 972},}}}, - [TOUPCAM_MODEL_G3CMOS16000KPA_2_2 ] = { 0x1213, { "G3CMOS16000KPA ", 0x0000000083692249, 3, 3, 0, 2, 0, 3.800000, 3.800000, {{4640, 3506},{2304, 1750},{1536, 1160},}}}, - [TOUPCAM_MODEL_G3CMOS16000KPA_USB2_2_2] = { 0x1214, { "G3CMOS16000KPA(USB2.0) ", 0x0000000083692309, 3, 3, 0, 2, 0, 3.800000, 3.800000, {{4640, 3506},{2304, 1750},{1536, 1160},}}}, - [TOUPCAM_MODEL_G3CMOS16000KMA_2_2 ] = { 0x1215, { "G3CMOS16000KMA ", 0x0000000083692259, 3, 3, 0, 2, 0, 3.800000, 3.800000, {{4640, 3506},{2304, 1750},{1536, 1160},}}}, - [TOUPCAM_MODEL_G3CMOS16000KMA_USB2_2_2] = { 0x1216, { "G3CMOS16000KMA(USB2.0) ", 0x0000000083692319, 3, 3, 0, 2, 0, 3.800000, 3.800000, {{4640, 3506},{2304, 1750},{1536, 1160},}}}, - [TOUPCAM_MODEL_E3ISPM06300KPB ] = { 0x1217, { "E3ISPM06300KPB ", 0x0000000083041049, 2, 2, 2, 0, 0, 2.400000, 2.400000, {{3072, 2048},{1536, 1024},}}}, - [TOUPCAM_MODEL_E3ISPM06300KPB_USB2 ] = { 0x1218, { "E3ISPM06300KPB(USB2.0) ", 0x0000000083041109, 2, 2, 2, 0, 0, 2.400000, 2.400000, {{3072, 2048},{1536, 1024},}}}, - [TOUPCAM_MODEL_G3CMOS10300KPA_2 ] = { 0x121e, { "G3CMOS10300KPA ", 0x0000000087694649, 2, 4, 4, 1, 0, 4.630000, 4.630000, {{4128, 2808},{4096, 2160},{2048, 1080},{1360, 720},}}}, - [TOUPCAM_MODEL_G3CMOS10300KPA_USB2_2 ] = { 0x121f, { "G3CMOS10300KPA(USB2.0) ", 0x0000000087694709, 2, 4, 4, 1, 0, 4.630000, 4.630000, {{4128, 2808},{4096, 2160},{2048, 1080},{1360, 720},}}}, - [TOUPCAM_MODEL_C3CMOS05100KPA ] = { 0x120f, { "C3CMOS05100KPA ", 0x0000000081000069, 6, 3, 3, 0, 0, 2.200000, 2.200000, {{2592, 1944},{1280, 960},{640, 480},}}}, - [TOUPCAM_MODEL_C3CMOS05100KPA_USB2 ] = { 0x1210, { "C3CMOS05100KPA(USB2.0) ", 0x0000000081000129, 6, 3, 3, 0, 0, 2.200000, 2.200000, {{2592, 1944},{1280, 960},{640, 480},}}}, - [TOUPCAM_MODEL_MTR3CMOS16000KMA_2 ] = { 0x11f4, { "MTR3CMOS16000KMA ", 0x00000000836b24d9, 3, 3, 3, 1, 0, 3.800000, 3.800000, {{4640, 3506},{2304, 1750},{1536, 1160},}}}, - [TOUPCAM_MODEL_MTR3CMOS16000KMA_USB2_2] = { 0x11f5, { "MTR3CMOS16000KMA(USB2.0) ", 0x00000000836b2599, 3, 3, 3, 1, 0, 3.800000, 3.800000, {{4640, 3506},{2304, 1750},{1536, 1160},}}}, - [TOUPCAM_MODEL_MTR3CMOS16000KPA_2_2 ] = { 0x11f2, { "MTR3CMOS16000KPA ", 0x00000000836b24c9, 3, 3, 3, 1, 0, 3.800000, 3.800000, {{4640, 3506},{2304, 1750},{1536, 1160},}}}, - [TOUPCAM_MODEL_MTR3CMOS16000KPA_USB2_2_2] = { 0x11f3, { "MTR3CMOS16000KPA(USB2.0) ", 0x00000000836b2589, 3, 3, 3, 1, 0, 3.800000, 3.800000, {{4640, 3506},{2304, 1750},{1536, 1160},}}}, - [TOUPCAM_MODEL_I3CMOS01500KMA ] = { 0x120b, { "I3CMOS01500KMA ", 0x0000005081182459, 9, 2, 0, 0, 4, 3.450000, 3.450000, {{1440, 1080},{720, 540},}}}, - [TOUPCAM_MODEL_I3CMOS01500KMA_USB2 ] = { 0x120c, { "I3CMOS01500KMA(USB2.0) ", 0x0000005081182519, 9, 2, 0, 0, 4, 3.450000, 3.450000, {{1440, 1080},{720, 540},}}}, - [TOUPCAM_MODEL_I3CMOS01500KMA_2 ] = { 0x126e, { "I3CMOS01500KMA ", 0x0000005083182459, 9, 2, 0, 0, 3, 3.450000, 3.450000, {{1440, 1080},{720, 540},}}}, - [TOUPCAM_MODEL_I3CMOS01500KMA_USB2_2 ] = { 0x126f, { "I3CMOS01500KMA(USB2.0) ", 0x0000005083182519, 9, 2, 0, 0, 3, 3.450000, 3.450000, {{1440, 1080},{720, 540},}}}, - [TOUPCAM_MODEL_BIGEYE4200KMA ] = { 0x1205, { "BigEye4200KMA ", 0x0000000887002059, 3, 2, 0, 0, 0, 6.500000, 6.500000, {{2048, 2046},{1024, 1022},}}}, - [TOUPCAM_MODEL_BIGEYE4200KMA_USB2 ] = { 0x1206, { "BigEye4200KMA(USB2.0) ", 0x0000000887002119, 3, 2, 0, 0, 0, 6.500000, 6.500000, {{2048, 2046},{1024, 1022},}}}, - [TOUPCAM_MODEL_E3CMOS20000KPB ] = { 0x1233, { "E3CMOS20000KPB ", 0x0000000081002041, 2, 3, 3, 0, 0, 1.200000, 1.200000, {{5200, 3888},{2592, 1944},{1728, 1296},}}}, - [TOUPCAM_MODEL_E3CMOS20000KPB_USB2 ] = { 0x1234, { "E3CMOS20000KPB(USB2.0) ", 0x0000000081002101, 2, 3, 3, 0, 0, 1.200000, 1.200000, {{5200, 3888},{2592, 1944},{1728, 1296},}}}, - [TOUPCAM_MODEL_ATR3CMOS01700KMA ] = { 0x124d, { "ATR3CMOS01700KMA ", 0x00000010876b24d9, 2, 1, 0, 1, 0, 9.000000, 9.000000, {{1600, 1100},}}}, - [TOUPCAM_MODEL_ATR3CMOS01700KMA_USB2 ] = { 0x124e, { "ATR3CMOS01700KMA(USB2.0) ", 0x00000010876b2599, 2, 1, 0, 1, 0, 9.000000, 9.000000, {{1600, 1100},}}}, - [TOUPCAM_MODEL_ATR3CMOS01700KPA ] = { 0x1249, { "ATR3CMOS01700KPA ", 0x00000010876b24c9, 2, 1, 0, 1, 0, 9.000000, 9.000000, {{1600, 1100},}}}, - [TOUPCAM_MODEL_ATR3CMOS01700KPA_USB2 ] = { 0x124a, { "ATR3CMOS01700KPA(USB2.0) ", 0x00000010876b2589, 2, 1, 0, 1, 0, 9.000000, 9.000000, {{1600, 1100},}}}, - [TOUPCAM_MODEL_ATR3CMOS07100KMA ] = { 0x1245, { "ATR3CMOS07100KMA ", 0x00000010876b24d9, 2, 2, 0, 1, 0, 4.500000, 4.500000, {{3200, 2200},{1600, 1100},}}}, - [TOUPCAM_MODEL_ATR3CMOS07100KMA_USB2 ] = { 0x1246, { "ATR3CMOS07100KMA(USB2.0) ", 0x00000010876b2599, 2, 2, 0, 1, 0, 4.500000, 4.500000, {{3200, 2200},{1600, 1100},}}}, - [TOUPCAM_MODEL_ATR3CMOS07100KPA ] = { 0x1241, { "ATR3CMOS07100KPA ", 0x00000010876b24c9, 2, 2, 0, 1, 0, 4.500000, 4.500000, {{3200, 2200},{1600, 1100},}}}, - [TOUPCAM_MODEL_ATR3CMOS07100KPA_USB2 ] = { 0x1242, { "ATR3CMOS07100KPA(USB2.0) ", 0x00000010876b2589, 2, 2, 0, 1, 0, 4.500000, 4.500000, {{3200, 2200},{1600, 1100},}}}, - [TOUPCAM_MODEL_MTR3CMOS07100KPA ] = { 0x1243, { "MTR3CMOS07100KPA ", 0x00000010876b24c9, 2, 2, 2, 1, 0, 4.500000, 4.500000, {{3200, 2200},{1600, 1100},}}}, - [TOUPCAM_MODEL_MTR3CMOS07100KPA_USB2 ] = { 0x1244, { "MTR3CMOS07100KPA(USB2.0) ", 0x00000010876b2589, 2, 2, 2, 1, 0, 4.500000, 4.500000, {{3200, 2200},{1600, 1100},}}}, - [TOUPCAM_MODEL_MTR3CMOS07100KMA ] = { 0x1247, { "MTR3CMOS07100KMA ", 0x00000010876b24d9, 2, 2, 2, 1, 0, 4.500000, 4.500000, {{3200, 2200},{1600, 1100},}}}, - [TOUPCAM_MODEL_MTR3CMOS07100KMA_USB2 ] = { 0x1248, { "MTR3CMOS07100KMA(USB2.0) ", 0x00000010876b2599, 2, 2, 2, 1, 0, 4.500000, 4.500000, {{3200, 2200},{1600, 1100},}}}, - [TOUPCAM_MODEL_MTR3CMOS01700KPA ] = { 0x124b, { "MTR3CMOS01700KPA ", 0x00000010876b24c9, 2, 1, 0, 1, 0, 9.000000, 9.000000, {{1600, 1100},}}}, - [TOUPCAM_MODEL_MTR3CMOS01700KPA_USB2 ] = { 0x124c, { "MTR3CMOS01700KPA(USB2.0) ", 0x00000010876b2589, 2, 1, 0, 1, 0, 9.000000, 9.000000, {{1600, 1100},}}}, - [TOUPCAM_MODEL_MTR3CMOS01700KMA ] = { 0x124f, { "MTR3CMOS01700KMA ", 0x00000010876b24d9, 2, 1, 0, 1, 0, 9.000000, 9.000000, {{1600, 1100},}}}, - [TOUPCAM_MODEL_MTR3CMOS01700KMA_USB2 ] = { 0x1250, { "MTR3CMOS01700KMA(USB2.0) ", 0x00000010876b2599, 2, 1, 0, 1, 0, 9.000000, 9.000000, {{1600, 1100},}}}, - [TOUPCAM_MODEL_SL170_C_M ] = { 0x129f, { "SL170-C-M ", 0x00000010876b24d9, 2, 1, 0, 1, 0, 9.000000, 9.000000, {{1600, 1100},}}}, - [TOUPCAM_MODEL_SL170_C_M_USB2 ] = { 0x12a0, { "SL170-C-M(USB2.0) ", 0x00000010876b2599, 2, 1, 0, 1, 0, 9.000000, 9.000000, {{1600, 1100},}}}, - [TOUPCAM_MODEL_PUM02000KPA ] = { 0x1251, { "PUM02000KPA ", 0x0000000081000001, 2, 1, 0, 0, 0, 2.900000, 2.900000, {{1920, 1080},}}}, - [TOUPCAM_MODEL_GPCMOS02000KPB ] = { 0x1219, { "GPCMOS02000KPB ", 0x0000000084482209, 2, 1, 0, 0, 0, 2.900000, 2.900000, {{1920, 1080},}}}, - [TOUPCAM_MODEL_I3CMOS03100KMA ] = { 0x10c8, { "I3CMOS03100KMA ", 0x0000005081182459, 9, 2, 0, 0, 4, 3.450000, 3.450000, {{2048, 1536},{1024, 768},}}}, - [TOUPCAM_MODEL_I3CMOS03100KMA_USB2 ] = { 0x10d5, { "I3CMOS03100KMA(USB2.0) ", 0x0000005081182519, 9, 2, 0, 0, 4, 3.450000, 3.450000, {{2048, 1536},{1024, 768},}}}, - [TOUPCAM_MODEL_I3CMOS03100KMA_2 ] = { 0x1270, { "I3CMOS03100KMA ", 0x0000005083182459, 9, 2, 0, 0, 3, 3.450000, 3.450000, {{2048, 1536},{1024, 768},}}}, - [TOUPCAM_MODEL_I3CMOS03100KMA_USB2_2 ] = { 0x1271, { "I3CMOS03100KMA(USB2.0) ", 0x0000005083182519, 9, 2, 0, 0, 3, 3.450000, 3.450000, {{2048, 1536},{1024, 768},}}}, - [TOUPCAM_MODEL_I3CMOS05000KMA ] = { 0x10ca, { "I3CMOS05000KMA ", 0x0000005081182459, 9, 2, 0, 0, 4, 3.450000, 3.450000, {{2448, 2048},{1224, 1024},}}}, - [TOUPCAM_MODEL_I3CMOS05000KMA_USB2 ] = { 0x10d7, { "I3CMOS05000KMA(USB2.0) ", 0x0000005081182519, 9, 2, 0, 0, 4, 3.450000, 3.450000, {{2448, 2048},{1224, 1024},}}}, - [TOUPCAM_MODEL_I3CMOS05000KMA_2 ] = { 0x1274, { "I3CMOS05000KMA ", 0x0000005083182459, 9, 2, 0, 0, 3, 3.450000, 3.450000, {{2448, 2048},{1224, 1024},}}}, - [TOUPCAM_MODEL_I3CMOS05000KMA_USB2_2 ] = { 0x1275, { "I3CMOS05000KMA(USB2.0) ", 0x0000005083182519, 9, 2, 0, 0, 3, 3.450000, 3.450000, {{2448, 2048},{1224, 1024},}}}, - [TOUPCAM_MODEL_C3CMOS10000KPA ] = { 0x123b, { "C3CMOS10000KPA ", 0x0000000081000069, 3, 3, 3, 0, 0, 1.670000, 1.670000, {{3664, 2748},{1832, 1374},{912, 686},}}}, - [TOUPCAM_MODEL_C3CMOS10000KPA_USB2 ] = { 0x123c, { "C3CMOS10000KPA(USB2.0) ", 0x0000000081000129, 3, 3, 3, 0, 0, 1.670000, 1.670000, {{3664, 2748},{1832, 1374},{912, 686},}}}, - [TOUPCAM_MODEL_I3ISPM05000KPA ] = { 0x123d, { "I3ISPM05000KPA ", 0x00000050811c2449, 9, 2, 0, 0, 4, 3.450000, 3.450000, {{2448, 2048},{1224, 1024},}}}, - [TOUPCAM_MODEL_I3ISPM05000KPA_USB2 ] = { 0x123e, { "I3ISPM05000KPA(USB2.0) ", 0x00000050811c2509, 9, 2, 0, 0, 4, 3.450000, 3.450000, {{2448, 2048},{1224, 1024},}}}, - [TOUPCAM_MODEL_I3ISPM05000KPA_2 ] = { 0x1280, { "I3ISPM05000KPA ", 0x00000050831c2449, 9, 2, 0, 0, 3, 3.450000, 3.450000, {{2448, 2048},{1224, 1024},}}}, - [TOUPCAM_MODEL_I3ISPM05000KPA_USB2_2 ] = { 0x1281, { "I3ISPM05000KPA(USB2.0) ", 0x00000050831c2509, 9, 2, 0, 0, 3, 3.450000, 3.450000, {{2448, 2048},{1224, 1024},}}}, - [TOUPCAM_MODEL_I3ISPM03100KPA ] = { 0x123f, { "I3ISPM03100KPA ", 0x00000050811c2449, 9, 2, 0, 0, 4, 3.450000, 3.450000, {{2048, 1536},{1024, 768},}}}, - [TOUPCAM_MODEL_I3ISPM03100KPA_USB2 ] = { 0x1240, { "I3ISPM03100KPA(USB2.0) ", 0x00000050811c2509, 9, 2, 0, 0, 4, 3.450000, 3.450000, {{2048, 1536},{1024, 768},}}}, - [TOUPCAM_MODEL_I3ISPM03100KPA_2 ] = { 0x127c, { "I3ISPM03100KPA ", 0x00000050831c2449, 9, 2, 0, 0, 3, 3.450000, 3.450000, {{2048, 1536},{1024, 768},}}}, - [TOUPCAM_MODEL_I3ISPM03100KPA_USB2_2 ] = { 0x127d, { "I3ISPM03100KPA(USB2.0) ", 0x00000050831c2509, 9, 2, 0, 0, 3, 3.450000, 3.450000, {{2048, 1536},{1024, 768},}}}, - [TOUPCAM_MODEL_E3ISPM18000KPA ] = { 0x1252, { "E3ISPM18000KPA ", 0x0000000081042041, 2, 3, 3, 0, 0, 1.200000, 1.200000, {{4880, 3720},{2448, 1836},{1632, 1224},}}}, - [TOUPCAM_MODEL_E3ISPM18000KPA_USB2 ] = { 0x1253, { "E3ISPM18000KPA(USB2.0) ", 0x0000000081042101, 2, 3, 3, 0, 0, 1.200000, 1.200000, {{4880, 3720},{2448, 1836},{1632, 1224},}}}, - [TOUPCAM_MODEL_E3ISPM20000KPB ] = { 0x1254, { "E3ISPM20000KPB ", 0x0000000081042041, 2, 3, 3, 0, 0, 1.200000, 1.200000, {{5200, 3888},{2592, 1944},{1728, 1296},}}}, - [TOUPCAM_MODEL_E3ISPM20000KPB_USB2 ] = { 0x1255, { "E3ISPM20000KPB(USB2.0) ", 0x0000000081042101, 2, 3, 3, 0, 0, 1.200000, 1.200000, {{5200, 3888},{2592, 1944},{1728, 1296},}}}, - [TOUPCAM_MODEL_I3ISPM05000KPB ] = { 0x1262, { "I3ISPM05000KPB ", 0x00000050811c2449, 9, 2, 0, 0, 4, 3.450000, 3.450000, {{2448, 2048},{1224, 1024},}}}, - [TOUPCAM_MODEL_I3ISPM05000KPB_USB2 ] = { 0x1263, { "I3ISPM05000KPB(USB2.0) ", 0x00000050811c2509, 9, 2, 0, 0, 4, 3.450000, 3.450000, {{2448, 2048},{1224, 1024},}}}, - [TOUPCAM_MODEL_I3ISPM05000KPB_2 ] = { 0x1282, { "I3ISPM05000KPB ", 0x00000050831c2449, 9, 2, 0, 0, 3, 3.450000, 3.450000, {{2448, 2048},{1224, 1024},}}}, - [TOUPCAM_MODEL_I3ISPM05000KPB_USB2_2 ] = { 0x1283, { "I3ISPM05000KPB(USB2.0) ", 0x00000050831c2509, 9, 2, 0, 0, 3, 3.450000, 3.450000, {{2448, 2048},{1224, 1024},}}}, - [TOUPCAM_MODEL_I3ISPM03100KPB ] = { 0x1260, { "I3ISPM03100KPB ", 0x00000050811c2449, 9, 2, 0, 0, 4, 3.450000, 3.450000, {{2048, 1536},{1024, 768},}}}, - [TOUPCAM_MODEL_I3ISPM03100KPB_USB2 ] = { 0x1261, { "I3ISPM03100KPB(USB2.0) ", 0x00000050811c2509, 9, 2, 0, 0, 4, 3.450000, 3.450000, {{2048, 1536},{1024, 768},}}}, - [TOUPCAM_MODEL_I3ISPM03100KPB_2 ] = { 0x127e, { "I3ISPM03100KPB ", 0x00000050831c2449, 9, 2, 0, 0, 3, 3.450000, 3.450000, {{2048, 1536},{1024, 768},}}}, - [TOUPCAM_MODEL_I3ISPM03100KPB_USB2_2 ] = { 0x127f, { "I3ISPM03100KPB(USB2.0) ", 0x00000050831c2509, 9, 2, 0, 0, 3, 3.450000, 3.450000, {{2048, 1536},{1024, 768},}}}, - [TOUPCAM_MODEL_I3CMOS05000KMB ] = { 0x125e, { "I3CMOS05000KMB ", 0x0000005081182459, 9, 2, 0, 0, 4, 3.450000, 3.450000, {{2448, 2048},{1224, 1024},}}}, - [TOUPCAM_MODEL_I3CMOS05000KMB_USB2 ] = { 0x125f, { "I3CMOS05000KMB(USB2.0) ", 0x0000005081182519, 9, 2, 0, 0, 4, 3.450000, 3.450000, {{2448, 2048},{1224, 1024},}}}, - [TOUPCAM_MODEL_I3CMOS05000KMB_2 ] = { 0x1276, { "I3CMOS05000KMB ", 0x0000005083182459, 9, 2, 0, 0, 3, 3.450000, 3.450000, {{2448, 2048},{1224, 1024},}}}, - [TOUPCAM_MODEL_I3CMOS05000KMB_USB2_2 ] = { 0x1277, { "I3CMOS05000KMB(USB2.0) ", 0x0000005083182519, 9, 2, 0, 0, 3, 3.450000, 3.450000, {{2448, 2048},{1224, 1024},}}}, - [TOUPCAM_MODEL_I3CMOS03100KMB ] = { 0x125c, { "I3CMOS03100KMB ", 0x0000005081182459, 9, 2, 0, 0, 4, 3.450000, 3.450000, {{2048, 1536},{1024, 768},}}}, - [TOUPCAM_MODEL_I3CMOS03100KMB_USB2 ] = { 0x125d, { "I3CMOS03100KMB(USB2.0) ", 0x0000005081182519, 9, 2, 0, 0, 4, 3.450000, 3.450000, {{2048, 1536},{1024, 768},}}}, - [TOUPCAM_MODEL_I3CMOS03100KMB_2 ] = { 0x1272, { "I3CMOS03100KMB ", 0x0000005083182459, 9, 2, 0, 0, 3, 3.450000, 3.450000, {{2048, 1536},{1024, 768},}}}, - [TOUPCAM_MODEL_I3CMOS03100KMB_USB2_2 ] = { 0x1273, { "I3CMOS03100KMB(USB2.0) ", 0x0000005083182519, 9, 2, 0, 0, 3, 3.450000, 3.450000, {{2048, 1536},{1024, 768},}}}, - [TOUPCAM_MODEL_E3ISPM21000KPA ] = { 0x1256, { "E3ISPM21000KPA ", 0x0000000085042049, 3, 5, 5, 0, 0, 3.300000, 3.300000, {{5280, 3954},{3952, 3952},{2640, 1976},{1760, 1316},{584, 438},}}}, - [TOUPCAM_MODEL_E3ISPM21000KPA_USB2 ] = { 0x1257, { "E3ISPM21000KPA(USB2.0) ", 0x0000000085042109, 3, 5, 5, 0, 0, 3.300000, 3.300000, {{5280, 3954},{3952, 3952},{2640, 1976},{1760, 1316},{584, 438},}}}, - [TOUPCAM_MODEL_ECMOS05100KPA ] = { 0x128c, { "ECMOS05100KPA ", 0x0000000080000009, 2, 3, 3, 0, 0, 2.400000, 2.400000, {{2592, 1944},{1280, 960},{640, 480},}}}, - [TOUPCAM_MODEL_E3ISPM15600KPA ] = { 0x128d, { "E3ISPM15600KPA ", 0x0000000085042049, 3, 3, 3, 0, 0, 3.300000, 3.300000, {{3952, 3952},{1976, 1976},{1316, 1316},}}}, - [TOUPCAM_MODEL_E3ISPM15600KPA_USB2 ] = { 0x128e, { "E3ISPM15600KPA(USB2.0) ", 0x0000000085042109, 3, 3, 3, 0, 0, 3.300000, 3.300000, {{3952, 3952},{1976, 1976},{1316, 1316},}}}, - [TOUPCAM_MODEL_I3CMOS00500KMA ] = { 0x1264, { "I3CMOS00500KMA ", 0x0000005081182459, 9, 1, 0, 0, 4, 9.000000, 9.000000, {{800, 620},}}}, - [TOUPCAM_MODEL_I3CMOS00500KMA_USB2 ] = { 0x1265, { "I3CMOS00500KMA(USB2.0) ", 0x0000005081182519, 9, 1, 0, 0, 4, 9.000000, 9.000000, {{800, 620},}}}, - [TOUPCAM_MODEL_I3ISPM00500KPA ] = { 0x1266, { "I3ISPM00500KPA ", 0x00000050811c2449, 9, 1, 0, 0, 4, 9.000000, 9.000000, {{800, 620},}}}, - [TOUPCAM_MODEL_I3ISPM00500KPA_USB2 ] = { 0x1267, { "I3ISPM00500KPA(USB2.0) ", 0x00000050811c2509, 9, 1, 0, 0, 4, 9.000000, 9.000000, {{800, 620},}}}, - [TOUPCAM_MODEL_IUA6300KPA ] = { 0x1221, { "IUA6300KPA ", 0x00000040831c2049, 9, 2, 0, 0, 4, 2.400000, 2.400000, {{3072, 2048},{1536, 1024},}}}, - [TOUPCAM_MODEL_IUA6300KPA_USB2 ] = { 0x1222, { "IUA6300KPA(USB2.0) ", 0x00000040831c2109, 9, 2, 0, 0, 4, 2.400000, 2.400000, {{3072, 2048},{1536, 1024},}}}, - [TOUPCAM_MODEL_IUB4200KMB ] = { 0x122b, { "IUB4200KMB ", 0x0000000887182059, 3, 2, 0, 0, 4, 6.500000, 6.500000, {{2048, 2046},{1024, 1022},}}}, - [TOUPCAM_MODEL_IUB4200KMB_USB2 ] = { 0x122c, { "IUB4200KMB(USB2.0) ", 0x0000000887182119, 3, 2, 0, 0, 4, 6.500000, 6.500000, {{2048, 2046},{1024, 1022},}}}, - [TOUPCAM_MODEL_IUC31000KMA ] = { 0x122f, { "IUC31000KMA ", 0x0000005083182459, 9, 2, 0, 0, 4, 3.450000, 3.450000, {{6464, 4852},{3216, 2426},}}}, - [TOUPCAM_MODEL_IUC31000KMA_USB2 ] = { 0x1230, { "IUC31000KMA(USB2.0) ", 0x0000005083182519, 9, 2, 0, 0, 4, 3.450000, 3.450000, {{6464, 4852},{3216, 2426},}}}, - [TOUPCAM_MODEL_IUA6300KMA ] = { 0x1223, { "IUA6300KMA ", 0x0000004083182059, 9, 2, 0, 0, 4, 2.400000, 2.400000, {{3072, 2048},{1536, 1024},}}}, - [TOUPCAM_MODEL_IUA6300KMA_USB2 ] = { 0x1224, { "IUA6300KMA(USB2.0) ", 0x0000004083182119, 9, 2, 0, 0, 4, 2.400000, 2.400000, {{3072, 2048},{1536, 1024},}}}, - [TOUPCAM_MODEL_IUA1700KPA ] = { 0x1288, { "IUA1700KPA ", 0x00000450831c2449, 9, 1, 0, 0, 4, 9.000000, 9.000000, {{1600, 1100},}}}, - [TOUPCAM_MODEL_IUA1700KPA_USB2 ] = { 0x1289, { "IUA1700KPA(USB2.0) ", 0x00000450831c2509, 9, 1, 0, 0, 4, 9.000000, 9.000000, {{1600, 1100},}}}, - [TOUPCAM_MODEL_IUA7100KPA ] = { 0x1284, { "IUA7100KPA ", 0x00000450831c2449, 9, 2, 0, 0, 4, 4.500000, 4.500000, {{3200, 2200},{1584, 1100},}}}, - [TOUPCAM_MODEL_IUA7100KPA_USB2 ] = { 0x1285, { "IUA7100KPA(USB2.0) ", 0x00000450831c2509, 9, 2, 0, 0, 4, 4.500000, 4.500000, {{3200, 2200},{1584, 1100},}}}, - [TOUPCAM_MODEL_IUC31000KPA ] = { 0x1231, { "IUC31000KPA ", 0x00000050831c2449, 9, 2, 0, 0, 4, 3.450000, 3.450000, {{6464, 4852},{3216, 2426},}}}, - [TOUPCAM_MODEL_IUC31000KPA_USB2 ] = { 0x1232, { "IUC31000KPA(USB2.0) ", 0x00000050831c2509, 9, 2, 0, 0, 4, 3.450000, 3.450000, {{6464, 4852},{3216, 2426},}}}, - [TOUPCAM_MODEL_ATR3CMOS21000KPA ] = { 0x1258, { "ATR3CMOS21000KPA ", 0x00000000876b24c9, 3, 5, 0, 1, 0, 3.300000, 3.300000, {{5280, 3956},{3952, 3952},{2640, 1978},{1760, 1318},{584, 440},}}}, - [TOUPCAM_MODEL_ATR3CMOS21000KPA_USB2 ] = { 0x1259, { "ATR3CMOS21000KPA(USB2.0) ", 0x00000000876b2589, 3, 5, 0, 1, 0, 3.300000, 3.300000, {{5280, 3956},{3952, 3952},{2640, 1978},{1760, 1318},{584, 440},}}}, - [TOUPCAM_MODEL_IUA20000KPA ] = { 0x1225, { "IUA20000KPA ", 0x00000040831c2049, 9, 3, 0, 0, 4, 2.400000, 2.400000, {{5440, 3648},{2736, 1824},{1824, 1216},}}}, - [TOUPCAM_MODEL_IUA20000KPA_USB2 ] = { 0x1226, { "IUA20000KPA(USB2.0) ", 0x00000040831c2109, 9, 3, 0, 0, 4, 2.400000, 2.400000, {{5440, 3648},{2736, 1824},{1824, 1216},}}}, - [TOUPCAM_MODEL_T3CMOS20000KPA ] = { 0x1295, { "T3CMOS20000KPA ", 0x00000000836f24c9, 2, 3, 3, 1, 0, 2.400000, 2.400000, {{5440, 3648},{2736, 1824},{1824, 1216},}}}, - [TOUPCAM_MODEL_T3CMOS20000KPA_USB2 ] = { 0x1296, { "T3CMOS20000KPA(USB2.0) ", 0x00000000836f2589, 2, 3, 3, 1, 0, 2.400000, 2.400000, {{5440, 3648},{2736, 1824},{1824, 1216},}}}, - [TOUPCAM_MODEL_MTR3CMOS21000KPA ] = { 0x125a, { "MTR3CMOS21000KPA ", 0x00000000876b24c9, 3, 5, 0, 1, 0, 3.300000, 3.300000, {{5280, 3956},{3952, 3952},{2640, 1978},{1760, 1318},{584, 440},}}}, - [TOUPCAM_MODEL_MTR3CMOS21000KPA_USB2 ] = { 0x125b, { "MTR3CMOS21000KPA(USB2.0) ", 0x00000000876b2589, 3, 5, 0, 1, 0, 3.300000, 3.300000, {{5280, 3956},{3952, 3952},{2640, 1978},{1760, 1318},{584, 440},}}}, - [TOUPCAM_MODEL_GPCMOS01200KPF ] = { 0x129e, { "GPCMOS01200KPF ", 0x0000000084482229, 2, 2, 0, 0, 0, 3.750000, 3.750000, {{1280, 960},{640, 480},}}}, - [TOUPCAM_MODEL_I3CMOS06300KMA ] = { 0x1268, { "I3CMOS06300KMA ", 0x0000004083182059, 9, 2, 0, 0, 3, 2.400000, 2.400000, {{3072, 2048},{1536, 1024},}}}, - [TOUPCAM_MODEL_I3CMOS06300KMA_USB2 ] = { 0x1269, { "I3CMOS06300KMA(USB2.0) ", 0x0000004083182119, 9, 2, 0, 0, 3, 2.400000, 2.400000, {{3072, 2048},{1536, 1024},}}}, - [TOUPCAM_MODEL_I3ISPM06300KPA ] = { 0x126a, { "I3ISPM06300KPA ", 0x00000040831c2049, 9, 2, 0, 0, 3, 2.400000, 2.400000, {{3072, 2048},{1536, 1024},}}}, - [TOUPCAM_MODEL_I3ISPM06300KPA_USB2 ] = { 0x126b, { "I3ISPM06300KPA(USB2.0) ", 0x00000040831c2109, 9, 2, 0, 0, 3, 2.400000, 2.400000, {{3072, 2048},{1536, 1024},}}}, - [TOUPCAM_MODEL_IUA20000KMA ] = { 0x1227, { "IUA20000KMA ", 0x0000004083182059, 9, 3, 0, 0, 4, 2.400000, 2.400000, {{5440, 3648},{2736, 1824},{1824, 1216},}}}, - [TOUPCAM_MODEL_IUA20000KMA_USB2 ] = { 0x1228, { "IUA20000KMA(USB2.0) ", 0x0000004083182119, 9, 3, 0, 0, 4, 2.400000, 2.400000, {{5440, 3648},{2736, 1824},{1824, 1216},}}}, - [TOUPCAM_MODEL_IUB43000KMA ] = { 0x122d, { "IUB43000KMA ", 0x0000000083182059, 3, 1, 0, 0, 4, 2.800000, 2.800000, {{7904, 5432},}}}, - [TOUPCAM_MODEL_IUB43000KMA_USB2 ] = { 0x122e, { "IUB43000KMA(USB2.0) ", 0x0000000083182119, 3, 1, 0, 0, 4, 2.800000, 2.800000, {{7904, 5432},}}}, - [TOUPCAM_MODEL_IUC60000KMA ] = { 0x128f, { "IUC60000KMA ", 0x0000004083188059, 9, 4, 4, 0, 4, 3.760000, 3.760000, {{9568, 6380},{4784, 3190},{3184, 2124},{1040, 706},}}}, - [TOUPCAM_MODEL_IUC60000KMA_USB2 ] = { 0x1290, { "IUC60000KMA(USB2.0) ", 0x0000004083188119, 9, 4, 4, 0, 4, 3.760000, 3.760000, {{9568, 6380},{4784, 3190},{3184, 2124},{1040, 706},}}}, - [TOUPCAM_MODEL_IUC60000KPA ] = { 0x1291, { "IUC60000KPA ", 0x00000040831c8049, 9, 4, 4, 0, 4, 3.760000, 3.760000, {{9568, 6380},{4784, 3190},{3184, 2124},{1040, 706},}}}, - [TOUPCAM_MODEL_IUC60000KPA_USB2 ] = { 0x1292, { "IUC60000KPA(USB2.0) ", 0x00000040831c8109, 9, 4, 4, 0, 4, 3.760000, 3.760000, {{9568, 6380},{4784, 3190},{3184, 2124},{1040, 706},}}}, - [TOUPCAM_MODEL_IUA2300KPB ] = { 0x12a5, { "IUA2300KPB ", 0x00000050831c2049, 9, 1, 0, 0, 4, 5.860000, 5.860000, {{1920, 1200},}}}, - [TOUPCAM_MODEL_IUA2300KPB_USB2 ] = { 0x12a6, { "IUA2300KPB(USB2.0) ", 0x00000050831c2109, 9, 1, 0, 0, 4, 5.860000, 5.860000, {{1920, 1200},}}}, - [TOUPCAM_MODEL_IUC26000KPA ] = { 0x1293, { "IUC26000KPA ", 0x00000040831c8049, 9, 3, 3, 0, 4, 3.760000, 3.760000, {{6224, 4168},{3104, 2084},{2064, 1386},}}}, - [TOUPCAM_MODEL_IUC26000KPA_USB2 ] = { 0x1294, { "IUC26000KPA(USB2.0) ", 0x00000040831c8109, 9, 3, 3, 0, 4, 3.760000, 3.760000, {{6224, 4168},{3104, 2084},{2064, 1386},}}}, - [TOUPCAM_MODEL_MTR3CMOS45000KMA ] = { 0x12ab, { "MTR3CMOS45000KMA ", 0x00000000834b24d9, 2, 2, 0, 1, 0, 2.315000, 2.315000, {{8256, 5616},{4128, 2808},}}}, - [TOUPCAM_MODEL_MTR3CMOS45000KMA_USB2 ] = { 0x12ac, { "MTR3CMOS45000KMA(USB2.0) ", 0x00000000834b2599, 2, 2, 0, 1, 0, 2.315000, 2.315000, {{8256, 5616},{4128, 2808},}}}, - [TOUPCAM_MODEL_C3CMOS05100KPB ] = { 0x12ad, { "C3CMOS05100KPB ", 0x0000000081000049, 2, 2, 2, 0, 0, 2.000000, 2.000000, {{2592, 1944},{1296, 972},}}}, - [TOUPCAM_MODEL_C3CMOS05100KPB_USB2 ] = { 0x12ae, { "C3CMOS05100KPB(USB2.0) ", 0x0000000081000109, 2, 2, 2, 0, 0, 2.000000, 2.000000, {{2592, 1944},{1296, 972},}}}, - [TOUPCAM_MODEL_C3CMOS03500KPA ] = { 0x1239, { "C3CMOS03500KPA ", 0x0000000081000041, 2, 2, 2, 0, 0, 2.500000, 2.500000, {{2304, 1536},{1152, 768},}}}, - [TOUPCAM_MODEL_C3CMOS03500KPA_USB2 ] = { 0x123a, { "C3CMOS03500KPA(USB2.0) ", 0x0000000081000101, 2, 2, 2, 0, 0, 2.500000, 2.500000, {{2304, 1536},{1152, 768},}}}, - [TOUPCAM_MODEL_MAX60000KPA ] = { 0x12b1, { "MAX60000KPA ", 0x000000c0835f84c9, 9, 4, 4, 4, 4, 3.760000, 3.760000, {{9568, 6380},{4784, 3190},{3184, 2124},{1040, 706},}}}, - [TOUPCAM_MODEL_MAX60000KPA_USB2 ] = { 0x12b2, { "MAX60000KPA(USB2.0) ", 0x000000c0835f8589, 9, 4, 4, 4, 4, 3.760000, 3.760000, {{9568, 6380},{4784, 3190},{3184, 2124},{1040, 706},}}}, - [TOUPCAM_MODEL_BIGEYE4200KMB_2 ] = { 0x12af, { "BigEye4200KMB ", 0x0000000887182051, 3, 2, 0, 0, 4, 6.500000, 6.500000, {{2048, 2048},{1024, 1024},}}}, - [TOUPCAM_MODEL_BIGEYE4200KMB_USB2_2 ] = { 0x12b0, { "BigEye4200KMB(USB2.0) ", 0x0000000887182111, 3, 2, 0, 0, 4, 6.500000, 6.500000, {{2048, 2048},{1024, 1024},}}}, - [TOUPCAM_MODEL_IUA1700KMA ] = { 0x128a, { "IUA1700KMA ", 0x0000045083182459, 9, 1, 0, 0, 4, 9.000000, 9.000000, {{1600, 1100},}}}, - [TOUPCAM_MODEL_IUA1700KMA_USB2 ] = { 0x128b, { "IUA1700KMA(USB2.0) ", 0x0000045083182519, 9, 1, 0, 0, 4, 9.000000, 9.000000, {{1600, 1100},}}}, - [TOUPCAM_MODEL_IUA7100KMA ] = { 0x1286, { "IUA7100KMA ", 0x0000045083182459, 9, 2, 0, 0, 4, 4.500000, 4.500000, {{3200, 2200},{1584, 1100},}}}, - [TOUPCAM_MODEL_IUA7100KMA_USB2 ] = { 0x1287, { "IUA7100KMA(USB2.0) ", 0x0000045083182519, 9, 2, 0, 0, 4, 4.500000, 4.500000, {{3200, 2200},{1584, 1100},}}}, - [TOUPCAM_MODEL_ATR3CMOS26000KPA ] = { 0x12b7, { "ATR3CMOS26000KPA ", 0x00000180876b84c9, 2, 3, 0, 1, 0, 3.760000, 3.760000, {{6224, 4168},{3104, 2084},{2064, 1386},}}}, - [TOUPCAM_MODEL_ATR3CMOS26000KPA_USB2 ] = { 0x12b8, { "ATR3CMOS26000KPA(USB2.0) ", 0x00000180876b8589, 2, 3, 0, 1, 0, 3.760000, 3.760000, {{6224, 4168},{3104, 2084},{2064, 1386},}}}, - [TOUPCAM_MODEL_E3ISPM09000KPB ] = { 0x12c7, { "E3ISPM09000KPB ", 0x0000010087044069, 3, 3, 3, 0, 0, 3.760000, 3.760000, {{3008, 3000},{1488, 1500},{992, 998},}}}, - [TOUPCAM_MODEL_E3ISPM09000KPB_USB2 ] = { 0x12c8, { "E3ISPM09000KPB(USB2.0) ", 0x0000010087044129, 3, 3, 3, 0, 0, 3.760000, 3.760000, {{3008, 3000},{1488, 1500},{992, 998},}}}, - [TOUPCAM_MODEL_ATR3CMOS09000KPA ] = { 0x12bb, { "ATR3CMOS09000KPA ", 0x00000180876b44c9, 2, 3, 0, 1, 0, 3.760000, 3.760000, {{3008, 3000},{1488, 1500},{992, 998},}}}, - [TOUPCAM_MODEL_ATR3CMOS09000KPA_USB2 ] = { 0x12bc, { "ATR3CMOS09000KPA(USB2.0) ", 0x00000180876b4589, 2, 3, 0, 1, 0, 3.760000, 3.760000, {{3008, 3000},{1488, 1500},{992, 998},}}}, - [TOUPCAM_MODEL_G3CMOS21000KPA ] = { 0x12cd, { "G3CMOS21000KPA ", 0x0000000087692649, 3, 5, 0, 1, 0, 3.300000, 3.300000, {{5280, 3956},{3952, 3952},{2640, 1978},{1760, 1318},{584, 440},}}}, - [TOUPCAM_MODEL_G3CMOS21000KPA_USB2 ] = { 0x12ce, { "G3CMOS21000KPA(USB2.0) ", 0x0000000087692709, 3, 5, 0, 1, 0, 3.300000, 3.300000, {{5280, 3956},{3952, 3952},{2640, 1978},{1760, 1318},{584, 440},}}}, - [TOUPCAM_MODEL_ITR3CMOS16000KMA ] = { 0x12d4, { "ITR3CMOS16000KMA ", 0x00000000832b24d9, 3, 3, 0, 1, 0, 3.800000, 3.800000, {{4640, 3506},{2304, 1750},{1536, 1160},}}}, - [TOUPCAM_MODEL_ITR3CMOS16000KMA_USB2 ] = { 0x12d5, { "ITR3CMOS16000KMA(USB2.0) ", 0x00000000832b2599, 3, 3, 0, 1, 0, 3.800000, 3.800000, {{4640, 3506},{2304, 1750},{1536, 1160},}}}, - [TOUPCAM_MODEL_MTR3CMOS26000KPA ] = { 0x12b9, { "MTR3CMOS26000KPA ", 0x00000180876f84c9, 2, 3, 3, 1, 0, 3.760000, 3.760000, {{6224, 4168},{3104, 2084},{2064, 1386},}}}, - [TOUPCAM_MODEL_MTR3CMOS26000KPA_USB2 ] = { 0x12ba, { "MTR3CMOS26000KPA(USB2.0) ", 0x00000180876f8589, 2, 3, 3, 1, 0, 3.760000, 3.760000, {{6224, 4168},{3104, 2084},{2064, 1386},}}}, - [TOUPCAM_MODEL_BIGEYE4200KMB_2_2 ] = { 0x12d6, { "BigEye4200KMB ", 0x0000020887182059, 3, 2, 0, 0, 4, 6.500000, 6.500000, {{2048, 2048},{1024, 1024},}}}, - [TOUPCAM_MODEL_BIGEYE4200KMB_USB2_2_2] = { 0x12d7, { "BigEye4200KMB(USB2.0) ", 0x0000020887182119, 3, 2, 0, 0, 4, 6.500000, 6.500000, {{2048, 2048},{1024, 1024},}}}, - [TOUPCAM_MODEL_SKYEYE62AM ] = { 0x12e2, { "SkyEye62AM ", 0x00000180876b84d9, 2, 3, 0, 1, 0, 3.760000, 3.760000, {{9568, 6380},{4784, 3190},{3184, 2124},}}}, - [TOUPCAM_MODEL_SKYEYE62AM_USB2 ] = { 0x12e3, { "SkyEye62AM(USB2.0) ", 0x00000180876b8599, 2, 3, 0, 1, 0, 3.760000, 3.760000, {{9568, 6380},{4784, 3190},{3184, 2124},}}}, - [TOUPCAM_MODEL_MTR3CMOS09000KPA ] = { 0x12bd, { "MTR3CMOS09000KPA ", 0x00000180876f44c9, 2, 3, 3, 1, 0, 3.760000, 3.760000, {{2992, 3000},{1488, 1500},{992, 998},}}}, - [TOUPCAM_MODEL_MTR3CMOS09000KPA_USB2 ] = { 0x12be, { "MTR3CMOS09000KPA(USB2.0) ", 0x00000180876f4589, 2, 3, 3, 1, 0, 3.760000, 3.760000, {{2992, 3000},{1488, 1500},{992, 998},}}}, - [TOUPCAM_MODEL_BIGEYE4200KMD ] = { 0x12f4, { "BigEye4200KMD ", 0x0000000887188059, 3, 2, 0, 0, 4, 6.500000, 6.500000, {{2048, 2048},{1024, 1024},}}}, - [TOUPCAM_MODEL_BIGEYE4200KMD_USB2 ] = { 0x12f5, { "BigEye4200KMD(USB2.0) ", 0x0000000887188119, 3, 2, 0, 0, 4, 6.500000, 6.500000, {{2048, 2048},{1024, 1024},}}}, - [TOUPCAM_MODEL_IUA4100KPA ] = { 0x12d8, { "IUA4100KPA ", 0x00000040871c2449, 9, 1, 0, 0, 4, 2.900000, 2.900000, {{2688, 1520},}}}, - [TOUPCAM_MODEL_IUA4100KPA_USB2 ] = { 0x12d9, { "IUA4100KPA(USB2.0) ", 0x00000040871c2509, 9, 1, 0, 0, 4, 2.900000, 2.900000, {{2688, 1520},}}}, - [TOUPCAM_MODEL_IUA2100KPA ] = { 0x12da, { "IUA2100KPA ", 0x00000040871c2449, 9, 1, 0, 0, 4, 2.900000, 2.900000, {{1920, 1080},}}}, - [TOUPCAM_MODEL_IUA2100KPA_USB2 ] = { 0x12db, { "IUA2100KPA(USB2.0) ", 0x00000040871c2509, 9, 1, 0, 0, 4, 2.900000, 2.900000, {{1920, 1080},}}}, - [TOUPCAM_MODEL_E3CMOS45000KMA ] = { 0x12e6, { "E3CMOS45000KMA ", 0x0000000083002459, 2, 2, 2, 0, 0, 2.315000, 2.315000, {{8256, 5616},{4128, 2808},}}}, - [TOUPCAM_MODEL_E3CMOS45000KMA_USB2 ] = { 0x12e7, { "E3CMOS45000KMA(USB2.0) ", 0x0000000083002519, 2, 2, 2, 0, 0, 2.315000, 2.315000, {{8256, 5616},{4128, 2808},}}}, - [TOUPCAM_MODEL_SKYEYE62AC ] = { 0x12e0, { "SkyEye62AC ", 0x00000180876b84c9, 2, 3, 0, 1, 0, 3.760000, 3.760000, {{9568, 6380},{4784, 3190},{3184, 2124},}}}, - [TOUPCAM_MODEL_SKYEYE62AC_USB2 ] = { 0x12e1, { "SkyEye62AC(USB2.0) ", 0x00000180876b8589, 2, 3, 0, 1, 0, 3.760000, 3.760000, {{9568, 6380},{4784, 3190},{3184, 2124},}}}, - [TOUPCAM_MODEL_SKYEYE24AC ] = { 0x12e4, { "SkyEye24AC ", 0x00000080876b44c9, 2, 3, 0, 1, 0, 5.940000, 5.940000, {{6064, 4040},{3024, 2012},{2016, 1342},}}}, - [TOUPCAM_MODEL_SKYEYE24AC_USB2 ] = { 0x12e5, { "SkyEye24AC(USB2.0) ", 0x00000080876b4589, 2, 3, 0, 1, 0, 5.940000, 5.940000, {{6064, 4040},{3024, 2012},{2016, 1342},}}}, - [TOUPCAM_MODEL_MAX62AM ] = { 0x12ea, { "MAX62AM ", 0x00000180875f84d9, 2, 4, 4, 4, 4, 3.760000, 3.760000, {{9568, 6380},{4784, 3190},{3184, 2124},{1040, 706},}}}, - [TOUPCAM_MODEL_MAX62AM_USB2 ] = { 0x12eb, { "MAX62AM(USB2.0) ", 0x00000180875f8599, 2, 4, 4, 4, 4, 3.760000, 3.760000, {{9568, 6380},{4784, 3190},{3184, 2124},{1040, 706},}}}, - [TOUPCAM_MODEL_MTR3CMOS08300KPA ] = { 0x12f6, { "MTR3CMOS08300KPA ", 0x00000000876f24c9, 2, 2, 2, 1, 0, 2.900000, 2.900000, {{3840, 2160},{1920, 1080},}}}, - [TOUPCAM_MODEL_MTR3CMOS08300KPA_USB2 ] = { 0x12f7, { "MTR3CMOS08300KPA(USB2.0) ", 0x00000000876f2589, 2, 2, 2, 1, 0, 2.900000, 2.900000, {{3840, 2160},{1920, 1080},}}}, - [TOUPCAM_MODEL_G3M462C ] = { 0x12de, { "G3M462C ", 0x0000000085482649, 2, 1, 0, 0, 0, 2.900000, 2.900000, {{1920, 1080},}}}, - [TOUPCAM_MODEL_G3M462C_USB2 ] = { 0x12df, { "G3M462C(USB2.0) ", 0x0000000085482709, 2, 1, 0, 0, 0, 2.900000, 2.900000, {{1920, 1080},}}}, - [TOUPCAM_MODEL_E3ISPM08300KPC ] = { 0x12cb, { "E3ISPM08300KPC ", 0x0000000085042449, 2, 2, 2, 0, 0, 2.900000, 2.900000, {{3840, 2160},{1920, 1080},}}}, - [TOUPCAM_MODEL_E3ISPM08300KPC_USB2 ] = { 0x12cc, { "E3ISPM08300KPC(USB2.0) ", 0x0000000085042509, 2, 2, 2, 0, 0, 2.900000, 2.900000, {{3840, 2160},{1920, 1080},}}}, - [TOUPCAM_MODEL_BIGEYE4200KMA_2 ] = { 0x12fe, { "BigEye4200KMA ", 0x0000020887182059, 3, 2, 0, 0, 4, 6.500000, 6.500000, {{2048, 2048},{1024, 1024},}}}, - [TOUPCAM_MODEL_BIGEYE4200KMA_USB2_2 ] = { 0x12ff, { "BigEye4200KMA(USB2.0) ", 0x0000020887182119, 3, 2, 0, 0, 4, 6.500000, 6.500000, {{2048, 2048},{1024, 1024},}}}, - [TOUPCAM_MODEL_ATR3CMOS10300KMA ] = { 0x12cf, { "ATR3CMOS10300KMA ", 0x00000000876b44d9, 2, 4, 0, 1, 0, 4.630000, 4.630000, {{4128, 2808},{8184, 5616},{2048, 1080},{1360, 720},}}}, - [TOUPCAM_MODEL_ATR3CMOS10300KMA_USB2 ] = { 0x12d0, { "ATR3CMOS10300KMA(USB2.0) ", 0x00000000876b4599, 2, 4, 0, 1, 0, 4.630000, 4.630000, {{4128, 2808},{8184, 5616},{2048, 1080},{1360, 720},}}}, - [TOUPCAM_MODEL_E3ISPM45000KPA ] = { 0x1300, { "E3ISPM45000KPA ", 0x0000000083042449, 2, 8, 8, 0, 0, 4.630000, 4.630000, {{8176, 5616},{4088, 2808},{7408, 5556},{3704, 2778},{8176, 4320},{4096, 2160},{2048, 1080},{1360, 720},}}}, - [TOUPCAM_MODEL_E3ISPM45000KPA_USB2 ] = { 0x1301, { "E3ISPM45000KPA(USB2.0) ", 0x0000000083042509, 2, 8, 8, 0, 0, 4.630000, 4.630000, {{8176, 5616},{4088, 2808},{7408, 5556},{3704, 2778},{8176, 4320},{4096, 2160},{2048, 1080},{1360, 720},}}}, - [TOUPCAM_MODEL_E3ISPM02100KPA ] = { 0x1304, { "E3ISPM02100KPA ", 0x0000000085042449, 2, 1, 0, 0, 0, 5.800000, 5.800000, {{1920, 1080},}}}, - [TOUPCAM_MODEL_E3ISPM02100KPA_USB2 ] = { 0x1305, { "E3ISPM02100KPA(USB2.0) ", 0x0000000085042509, 2, 1, 0, 0, 0, 5.800000, 5.800000, {{1920, 1080},}}}, - [TOUPCAM_MODEL_G3CMOS08300KPA ] = { 0x1302, { "G3CMOS08300KPA ", 0x0000000087692649, 2, 2, 0, 1, 0, 2.900000, 2.900000, {{3840, 2160},{1920, 1080},}}}, - [TOUPCAM_MODEL_G3CMOS08300KPA_USB2 ] = { 0x1303, { "G3CMOS08300KPA(USB2.0) ", 0x0000000087692709, 2, 2, 0, 1, 0, 2.900000, 2.900000, {{3840, 2160},{1920, 1080},}}}, - [TOUPCAM_MODEL_BIGEYE4200KME ] = { 0x12fc, { "BigEye4200KME ", 0x0000020887182059, 3, 2, 0, 0, 4, 11.000000, 11.000000, {{2048, 2048},{1024, 1024},}}}, - [TOUPCAM_MODEL_BIGEYE4200KME_USB2 ] = { 0x12fd, { "BigEye4200KME(USB2.0) ", 0x0000020887182119, 3, 2, 0, 0, 4, 11.000000, 11.000000, {{2048, 2048},{1024, 1024},}}}, - [TOUPCAM_MODEL_ITR3CMOS08300KPA ] = { 0x1310, { "ITR3CMOS08300KPA ", 0x00000400875f24c9, 2, 2, 2, 1, 4, 2.900000, 2.900000, {{3840, 2160},{1920, 1080},}}}, - [TOUPCAM_MODEL_ITR3CMOS08300KPA_USB2 ] = { 0x1311, { "ITR3CMOS08300KPA(USB2.0) ", 0x00000400875f2589, 2, 2, 2, 1, 4, 2.900000, 2.900000, {{3840, 2160},{1920, 1080},}}}, - [TOUPCAM_MODEL_MAX04AM ] = { 0x12ee, { "MAX04AM ", 0x00000088871b24d9, 3, 2, 0, 4, 4, 6.500000, 6.500000, {{2048, 2048},{1024, 1024},}}}, - [TOUPCAM_MODEL_MAX04AM_USB2 ] = { 0x12ef, { "MAX04AM(USB2.0) ", 0x00000088871b2599, 3, 2, 0, 4, 4, 6.500000, 6.500000, {{2048, 2048},{1024, 1024},}}}, - [TOUPCAM_MODEL_G3M287C ] = { 0x1176, { "G3M287C ", 0x0000001081482649, 2, 1, 0, 0, 0, 6.900000, 6.900000, {{720, 540},}}}, - [TOUPCAM_MODEL_G3M287C_USB2 ] = { 0x1177, { "G3M287C(USB2.0) ", 0x0000001081482709, 2, 1, 0, 0, 0, 6.900000, 6.900000, {{720, 540},}}}, - [TOUPCAM_MODEL_ATR3CMOS16000KPB ] = { 0x11e0, { "ATR3CMOS16000KPB ", 0x00000000836b44e1, 2, 2, 0, 1, 0, 4.780000, 4.780000, {{4944, 3260},{1640, 1060},}}}, - [TOUPCAM_MODEL_ATR3CMOS16000KPB_USB2 ] = { 0x11e1, { "ATR3CMOS16000KPB(USB2.0) ", 0x00000000836b45a1, 2, 2, 0, 1, 0, 4.780000, 4.780000, {{4944, 3260},{1640, 1060},}}}, - [TOUPCAM_MODEL_ATR3CMOS10300KPA_2 ] = { 0x121a, { "ATR3CMOS10300KPA ", 0x00000000876b44c9, 2, 4, 0, 1, 0, 4.630000, 4.630000, {{4128, 2808},{4096, 2160},{2048, 1080},{1360, 720},}}}, - [TOUPCAM_MODEL_ATR3CMOS10300KPA_USB2_2] = { 0x121b, { "ATR3CMOS10300KPA(USB2.0) ", 0x00000000876b4589, 2, 4, 0, 1, 0, 4.630000, 4.630000, {{4128, 2808},{4096, 2160},{2048, 1080},{1360, 720},}}}, - [TOUPCAM_MODEL_L3CMOS08500KPA ] = { 0xc850, { "L3CMOS08500KPA ", 0x0000000081000061, 3, 2, 2, 0, 0, 1.670000, 1.670000, {{3328, 2548},{1664, 1272},}}}, - [TOUPCAM_MODEL_L3CMOS08500KPA_USB2 ] = { 0xd850, { "L3CMOS08500KPA(USB2.0) ", 0x0000000081000121, 3, 2, 2, 0, 0, 1.670000, 1.670000, {{3328, 2548},{1664, 1272},}}}, -}; -#endif - -#define XP(x) Toupcam##x - -struct toupcam_model_pid { - uint16_t pid; - XP(ModelV2) model; -}; - -enum { - TOUPCAM_MODEL_ATR3CMOS16000KMA_2, - TOUPCAM_MODEL_ATR3CMOS16000KMA_USB2_2, - TOUPCAM_MODEL_ATR3CMOS16000KPA_2, - TOUPCAM_MODEL_ATR3CMOS16000KPA_USB2_2, - TOUPCAM_MODEL_ATR3CMOS16000KMA, - TOUPCAM_MODEL_ATR3CMOS16000KMA_USB2, - TOUPCAM_MODEL_ATR3CMOS16000KPA, - TOUPCAM_MODEL_ATR3CMOS16000KPA_USB2, - TOUPCAM_MODEL_G3M178M, - TOUPCAM_MODEL_G3M178M_USB2, - TOUPCAM_MODEL_G3M178C, - TOUPCAM_MODEL_G3M178C_USB2, - TOUPCAM_MODEL_G3M178M_2, - TOUPCAM_MODEL_G3M178M_USB2_2, - TOUPCAM_MODEL_G3M178C_2, - TOUPCAM_MODEL_G3M178C_USB2_2, - TOUPCAM_MODEL_GPCMOS01200KMB, - TOUPCAM_MODEL_GPCMOS01200KPB, -}; -static const struct toupcam_model_pid toupcam_models[] = { - [TOUPCAM_MODEL_ATR3CMOS16000KMA_2 ] = { 0x11f6, { "DSI IV Mono", 0x00000000836b24d9, 3, 3, 0, 1, 0, 3.800000, 3.800000, {{4640, 3506},{2304, 1750},{1536, 1160},}}}, - [TOUPCAM_MODEL_ATR3CMOS16000KMA_USB2_2] = { 0x11f7, { "DSI IV Mono (USB2.0)", 0x00000000836b2599, 3, 3, 0, 1, 0, 3.800000, 3.800000, {{4640, 3506},{2304, 1750},{1536, 1160},}}}, - [TOUPCAM_MODEL_ATR3CMOS16000KPA_2 ] = { 0x11ea, { "DSI IV Color", 0x00000000836b24c9, 3, 3, 0, 1, 0, 3.800000, 3.800000, {{4640, 3506},{2304, 1750},{1536, 1160},}}}, - [TOUPCAM_MODEL_ATR3CMOS16000KPA_USB2_2] = { 0x11eb, { "DSI IV Color (USB2.0)", 0x00000000836b2589, 3, 3, 0, 1, 0, 3.800000, 3.800000, {{4640, 3506},{2304, 1750},{1536, 1160},}}}, - [TOUPCAM_MODEL_ATR3CMOS16000KMA ] = { 0x106d, { "DSI IV Mono", 0x00000000816b24d9, 3, 3, 0, 1, 0, 3.800000, 3.800000, {{4640, 3506},{2304, 1750},{1536, 1160},}}}, - [TOUPCAM_MODEL_ATR3CMOS16000KMA_USB2 ] = { 0x1076, { "DSI IV Mono (USB2.0)", 0x00000000816b2599, 3, 3, 0, 1, 0, 3.800000, 3.800000, {{4640, 3506},{2304, 1750},{1536, 1160},}}}, - [TOUPCAM_MODEL_ATR3CMOS16000KPA ] = { 0x106b, { "DSI IV Color", 0x00000000816b24c9, 3, 3, 0, 1, 0, 3.800000, 3.800000, {{4640, 3506},{2304, 1750},{1536, 1160},}}}, - [TOUPCAM_MODEL_ATR3CMOS16000KPA_USB2 ] = { 0x1075, { "DSI IV Color (USB2.0)", 0x00000000816b2589, 3, 3, 0, 1, 0, 3.800000, 3.800000, {{4640, 3506},{2304, 1750},{1536, 1160},}}}, - [TOUPCAM_MODEL_G3M178M ] = { 0x11cc, { "LPI-GM Advanced", 0x0000000081484659, 2, 2, 0, 0, 0, 2.400000, 2.400000, {{3040, 2048},{1520, 1024},}}}, - [TOUPCAM_MODEL_G3M178M_USB2 ] = { 0x11cd, { "LPI-GM Advanced (USB2.0)", 0x0000000081484719, 2, 2, 0, 0, 0, 2.400000, 2.400000, {{3040, 2048},{1520, 1024},}}}, - [TOUPCAM_MODEL_G3M178C ] = { 0x11ca, { "LPI-GC Advanced", 0x0000000081484649, 2, 2, 0, 0, 0, 2.400000, 2.400000, {{3040, 2048},{1520, 1024},}}}, - [TOUPCAM_MODEL_G3M178C_USB2 ] = { 0x11cb, { "LPI-GC Advanced (USB2.0)", 0x0000000081484709, 2, 2, 0, 0, 0, 2.400000, 2.400000, {{3040, 2048},{1520, 1024},}}}, - [TOUPCAM_MODEL_G3M178M_2 ] = { 0x115c, { "LPI-GM Advanced", 0x0000000081484259, 2, 2, 0, 0, 0, 2.400000, 2.400000, {{3040, 2048},{1520, 1024},}}}, - [TOUPCAM_MODEL_G3M178M_USB2_2 ] = { 0x115d, { "LPI-GM Advanced (USB2.0)", 0x0000000081484319, 2, 2, 0, 0, 0, 2.400000, 2.400000, {{3040, 2048},{1520, 1024},}}}, - [TOUPCAM_MODEL_G3M178C_2 ] = { 0x115a, { "LPI-GC Advanced", 0x0000000081484249, 2, 2, 0, 0, 0, 2.400000, 2.400000, {{3040, 2048},{1520, 1024},}}}, - [TOUPCAM_MODEL_G3M178C_USB2_2 ] = { 0x115b, { "LPI-GC Advanced (USB2.0)", 0x0000000081484309, 2, 2, 0, 0, 0, 2.400000, 2.400000, {{3040, 2048},{1520, 1024},}}}, - [TOUPCAM_MODEL_GPCMOS01200KMB ] = { 0x1004, { "LPI-GM", 0x0000000080682219, 4, 2, 0, 0, 0, 3.750000, 3.750000, {{1280, 960},{640, 480},}}}, - [TOUPCAM_MODEL_GPCMOS01200KPB ] = { 0x1003, { "LPI-GC", 0x0000000080682209, 4, 2, 0, 0, 0, 3.750000, 3.750000, {{1280, 960},{640, 480},}}}, -}; - -struct oem_camera { - const char *name; /* The OEM camera name */ - uint16_t vid; /* The OEM vendor ID */ - uint16_t pid; /* The OEM product ID */ - const struct toupcam_model_pid *toupcam; /* Pointer to the Toupcam equivalent */ -}; - -static const struct oem_camera oem_cameras[] = { - /* DSI IV */ - { - .name = "Meade DSI IV Mono", - .vid = 0x547, - .pid = 0xe079, - .toupcam = &toupcam_models[TOUPCAM_MODEL_ATR3CMOS16000KMA_2], - }, - { - .name = "Meade DSI IV Mono (USB2.0)", - .vid = 0x547, - .pid = 0xe07a, - .toupcam = &toupcam_models[TOUPCAM_MODEL_ATR3CMOS16000KMA_USB2_2], - }, - { - .name = "Meade DSI IV Color", - .vid = 0x547, - .pid = 0xe077, - .toupcam = &toupcam_models[TOUPCAM_MODEL_ATR3CMOS16000KPA_2], - }, - { - .name = "Meade DSI IV Color (USB2.0)", - .vid = 0x547, - .pid = 0xe078, - .toupcam = &toupcam_models[TOUPCAM_MODEL_ATR3CMOS16000KPA_USB2_2], - }, - /* DSI IV without DDR buffer */ - { - .name = "Meade DSI IV Mono", - .vid = 0x547, - .pid = 0xe06d, - .toupcam = &toupcam_models[TOUPCAM_MODEL_ATR3CMOS16000KMA], - }, - { - .name = "Meade DSI IV Mono (USB2.0)", - .vid = 0x547, - .pid = 0xe076, - .toupcam = &toupcam_models[TOUPCAM_MODEL_ATR3CMOS16000KMA_USB2], - }, - { - .name = "Meade DSI IV Color", - .vid = 0x547, - .pid = 0xe06b, - .toupcam = &toupcam_models[TOUPCAM_MODEL_ATR3CMOS16000KPA], - }, - { - .name = "Meade DSI IV Color (USB2.0)", - .vid = 0x547, - .pid = 0xe075, - .toupcam = &toupcam_models[TOUPCAM_MODEL_ATR3CMOS16000KPA_USB2], - }, - /* LPI-G Advanced */ - { - .name = "Meade LPI-GM Advanced", - .vid = 0x547, - .pid = 0xe00d, - .toupcam = &toupcam_models[TOUPCAM_MODEL_G3M178M], - }, - { - .name = "Meade LPI-GM Advanced (USB2.0)", - .vid = 0x547, - .pid = 0xe00e, - .toupcam = &toupcam_models[TOUPCAM_MODEL_G3M178M_USB2], - }, - { - .name = "Meade LPI-GC Advanced", - .vid = 0x547, - .pid = 0xe00b, - .toupcam = &toupcam_models[TOUPCAM_MODEL_G3M178C], - }, - { - .name = "Meade LPI-GC Advanced (USB2.0)", - .vid = 0x547, - .pid = 0xe00e, - .toupcam = &toupcam_models[TOUPCAM_MODEL_G3M178C_USB2], - }, - /* LPI-G Advanced with temperature sensor */ - { - .name = "Meade LPI-GM Advanced", - .vid = 0x547, - .pid = 0xe009, - .toupcam = &toupcam_models[TOUPCAM_MODEL_G3M178M_2], - }, - { - .name = "Meade LPI-GM Advanced (USB2.0)", - .vid = 0x547, - .pid = 0xe00a, - .toupcam = &toupcam_models[TOUPCAM_MODEL_G3M178M_USB2_2], - }, - { - .name = "Meade LPI-GC Advanced", - .vid = 0x547, - .pid = 0xe007, - .toupcam = &toupcam_models[TOUPCAM_MODEL_G3M178C_2], - }, - { - .name = "Meade LPI-GC Advanced (USB2.0)", - .vid = 0x547, - .pid = 0xe008, - .toupcam = &toupcam_models[TOUPCAM_MODEL_G3M178C_USB2_2], - }, - /* LPI-G */ - { - .name = "Meade LPI-GM", - .vid = 0x549, - .pid = 0xe004, - .toupcam = &toupcam_models[TOUPCAM_MODEL_GPCMOS01200KMB], - }, - { - .name = "Meade LPI-GC", - .vid = 0x549, - .pid = 0xe003, - .toupcam = &toupcam_models[TOUPCAM_MODEL_GPCMOS01200KPB], - } -}; -#ifndef countof -#define countof(x) (sizeof(x)/sizeof(x[0])) -#endif -static const struct oem_camera *vid_pid_to_oem_cam(int vid, int pid) -{ - unsigned i; - for (i = 0; i < countof(oem_cameras); i++) { - if ((oem_cameras[i].vid == vid) && - (oem_cameras[i].pid == pid)) { - return &oem_cameras[i]; - } - } - - return NULL; -} - -int OEMCamEnum(XP(DeviceV2) *cam_infos, int cam_infos_count) -{ - int cnt = 0; - libusb_device **list; - ssize_t usb_cnt; - ssize_t i = 0; - - libusb_init(NULL); - usb_cnt = libusb_get_device_list(NULL, &list); - if (usb_cnt < 0) - return 0; - - for (i = 0; (i < usb_cnt) && (cnt < cam_infos_count); i++) { - libusb_device *dev = list[i]; - const struct oem_camera *cam; - struct libusb_device_descriptor desc; - - libusb_get_device_descriptor(dev, &desc); - cam = vid_pid_to_oem_cam(desc.idVendor, desc.idProduct); - if (!cam) - continue; - - cam_infos[cnt].model = &cam->toupcam->model; - strcpy(cam_infos[cnt].displayname, cam->name); - sprintf(cam_infos[cnt].id, "tp-%d-%d-%d-%d", libusb_get_bus_number(dev), - libusb_get_device_address(dev), 0x547, cam->toupcam->pid); - cnt++; - } - libusb_free_device_list(list, 1); - - return cnt; -} - -/** - * This is the entire point of this library. We need to find the Meade-branded - * toupcams and enumerate them. - */ -TOUPCAM_API(unsigned) Toupcam_EnumV2(ToupcamDeviceV2 arr[TOUPCAM_MAX]) -{ - return OEMCamEnum(arr, TOUPCAM_MAX); -} diff --git a/libmeadecam/meadecam.h b/libmeadecam/meadecam.h index 4ae6c6019..f1a7c9b95 100644 --- a/libmeadecam/meadecam.h +++ b/libmeadecam/meadecam.h @@ -1,7 +1,7 @@ -#ifndef __toupcam_h__ -#define __toupcam_h__ +#ifndef __meadecam_h__ +#define __meadecam_h__ -/* Version: 54.23231.20230823 */ +/* Version: 56.26054.20240715 */ /* Platform & Architecture: (1) Win32: @@ -92,21 +92,21 @@ extern "C" { /* */ /********************************************************************************/ #if defined(TOUPCAM_HRESULT_ERRORCODE_NEEDED) -#define S_OK 0x00000000 /* Success */ -#define S_FALSE 0x00000001 /* Yet another success */ -#define E_UNEXPECTED 0x8000ffff /* Catastrophic failure */ -#define E_NOTIMPL 0x80004001 /* Not supported or not implemented */ -#define E_NOINTERFACE 0x80004002 -#define E_ACCESSDENIED 0x80070005 /* Permission denied */ -#define E_OUTOFMEMORY 0x8007000e /* Out of memory */ -#define E_INVALIDARG 0x80070057 /* One or more arguments are not valid */ -#define E_POINTER 0x80004003 /* Pointer that is not valid */ -#define E_FAIL 0x80004005 /* Generic failure */ -#define E_WRONG_THREAD 0x8001010e /* Call function in the wrong thread */ -#define E_GEN_FAILURE 0x8007001f /* Device not functioning */ -#define E_BUSY 0x800700aa /* The requested resource is in use */ -#define E_PENDING 0x8000000a /* The data necessary to complete this operation is not yet available */ -#define E_TIMEOUT 0x8001011f /* This operation returned because the timeout period expired */ +#define S_OK (HRESULT)(0x00000000) /* Success */ +#define S_FALSE (HRESULT)(0x00000001) /* Yet another success */ +#define E_UNEXPECTED (HRESULT)(0x8000ffff) /* Catastrophic failure */ +#define E_NOTIMPL (HRESULT)(0x80004001) /* Not supported or not implemented */ +#define E_NOINTERFACE (HRESULT)(0x80004002) +#define E_ACCESSDENIED (HRESULT)(0x80070005) /* Permission denied */ +#define E_OUTOFMEMORY (HRESULT)(0x8007000e) /* Out of memory */ +#define E_INVALIDARG (HRESULT)(0x80070057) /* One or more arguments are not valid */ +#define E_POINTER (HRESULT)(0x80004003) /* Pointer that is not valid */ +#define E_FAIL (HRESULT)(0x80004005) /* Generic failure */ +#define E_WRONG_THREAD (HRESULT)(0x8001010e) /* Call function in the wrong thread */ +#define E_GEN_FAILURE (HRESULT)(0x8007001f) /* Device not functioning */ +#define E_BUSY (HRESULT)(0x800700aa) /* The requested resource is in use */ +#define E_PENDING (HRESULT)(0x8000000a) /* The data necessary to complete this operation is not yet available */ +#define E_TIMEOUT (HRESULT)(0x8001011f) /* This operation returned because the timeout period expired */ #endif /* handle */ @@ -167,6 +167,10 @@ typedef struct Toupcam_t { int unused; } *HToupcam, *HToupCam; #define TOUPCAM_FLAG_LIGHT_SOURCE 0x0004000000000000 /* stand alone light source */ #define TOUPCAM_FLAG_CAMERALINK 0x0008000000000000 /* camera link */ #define TOUPCAM_FLAG_CXP 0x0010000000000000 /* CXP: CoaXPress */ +#define TOUPCAM_FLAG_RAW12PACK 0x0020000000000000 /* pixel format, RAW 12bits packed */ +#define TOUPCAM_FLAG_SELFTRIGGER 0x0040000000000000 /* self trigger */ +#define TOUPCAM_FLAG_RAW11 0x0080000000000000 /* pixel format, RAW 11bits */ +#define TOUPCAM_FLAG_GHOPTO 0x0100000000000000 /* ghopto sensor */ #define TOUPCAM_EXPOGAIN_DEF 100 /* exposure gain, default value */ #define TOUPCAM_EXPOGAIN_MIN 100 /* exposure gain, minimum value */ @@ -183,11 +187,11 @@ typedef struct Toupcam_t { int unused; } *HToupcam, *HToupCam; #define TOUPCAM_SATURATION_MIN 0 /* saturation */ #define TOUPCAM_SATURATION_MAX 255 /* saturation */ #define TOUPCAM_BRIGHTNESS_DEF 0 /* brightness */ -#define TOUPCAM_BRIGHTNESS_MIN (-64) /* brightness */ -#define TOUPCAM_BRIGHTNESS_MAX 64 /* brightness */ +#define TOUPCAM_BRIGHTNESS_MIN (-128) /* brightness */ +#define TOUPCAM_BRIGHTNESS_MAX 128 /* brightness */ #define TOUPCAM_CONTRAST_DEF 0 /* contrast */ -#define TOUPCAM_CONTRAST_MIN (-100) /* contrast */ -#define TOUPCAM_CONTRAST_MAX 100 /* contrast */ +#define TOUPCAM_CONTRAST_MIN (-150) /* contrast */ +#define TOUPCAM_CONTRAST_MAX 150 /* contrast */ #define TOUPCAM_GAMMA_DEF 100 /* gamma */ #define TOUPCAM_GAMMA_MIN 20 /* gamma */ #define TOUPCAM_GAMMA_MAX 180 /* gamma */ @@ -198,11 +202,12 @@ typedef struct Toupcam_t { int unused; } *HToupcam, *HToupCam; #define TOUPCAM_WBGAIN_MIN (-127) /* white balance gain */ #define TOUPCAM_WBGAIN_MAX 127 /* white balance gain */ #define TOUPCAM_BLACKLEVEL_MIN 0 /* minimum black level */ -#define TOUPCAM_BLACKLEVEL8_MAX 31 /* maximum black level for bit depth = 8 */ -#define TOUPCAM_BLACKLEVEL10_MAX (31 * 4) /* maximum black level for bit depth = 10 */ -#define TOUPCAM_BLACKLEVEL12_MAX (31 * 16) /* maximum black level for bit depth = 12 */ -#define TOUPCAM_BLACKLEVEL14_MAX (31 * 64) /* maximum black level for bit depth = 14 */ -#define TOUPCAM_BLACKLEVEL16_MAX (31 * 256) /* maximum black level for bit depth = 16 */ +#define TOUPCAM_BLACKLEVEL8_MAX 31 /* maximum black level for bitdepth = 8 */ +#define TOUPCAM_BLACKLEVEL10_MAX (31 * 4) /* maximum black level for bitdepth = 10 */ +#define TOUPCAM_BLACKLEVEL11_MAX (31 * 8) /* maximum black level for bitdepth = 11 */ +#define TOUPCAM_BLACKLEVEL12_MAX (31 * 16) /* maximum black level for bitdepth = 12 */ +#define TOUPCAM_BLACKLEVEL14_MAX (31 * 64) /* maximum black level for bitdepth = 14 */ +#define TOUPCAM_BLACKLEVEL16_MAX (31 * 256) /* maximum black level for bitdepth = 16 */ #define TOUPCAM_SHARPENING_STRENGTH_DEF 0 /* sharpening strength */ #define TOUPCAM_SHARPENING_STRENGTH_MIN 0 /* sharpening strength */ #define TOUPCAM_SHARPENING_STRENGTH_MAX 500 /* sharpening strength */ @@ -215,28 +220,28 @@ typedef struct Toupcam_t { int unused; } *HToupcam, *HToupCam; #define TOUPCAM_AUTOEXPO_THRESHOLD_DEF 5 /* auto exposure threshold */ #define TOUPCAM_AUTOEXPO_THRESHOLD_MIN 2 /* auto exposure threshold */ #define TOUPCAM_AUTOEXPO_THRESHOLD_MAX 15 /* auto exposure threshold */ +#define TOUPCAM_AUTOEXPO_DAMP_DEF 0 /* auto exposure damping coefficient: thousandths */ +#define TOUPCAM_AUTOEXPO_DAMP_MIN 0 /* auto exposure damping coefficient: thousandths */ +#define TOUPCAM_AUTOEXPO_DAMP_MAX 1000 /* auto exposure damping coefficient: thousandths */ #define TOUPCAM_BANDWIDTH_DEF 100 /* bandwidth */ #define TOUPCAM_BANDWIDTH_MIN 1 /* bandwidth */ #define TOUPCAM_BANDWIDTH_MAX 100 /* bandwidth */ #define TOUPCAM_DENOISE_DEF 0 /* denoise */ #define TOUPCAM_DENOISE_MIN 0 /* denoise */ #define TOUPCAM_DENOISE_MAX 100 /* denoise */ -#define TOUPCAM_TEC_TARGET_MIN (-500) /* TEC target: -50.0 degrees Celsius */ -#define TOUPCAM_TEC_TARGET_DEF 100 /* 0.0 degrees Celsius */ -#define TOUPCAM_TEC_TARGET_MAX 400 /* TEC target: 40.0 degrees Celsius */ #define TOUPCAM_HEARTBEAT_MIN 100 /* millisecond */ #define TOUPCAM_HEARTBEAT_MAX 10000 /* millisecond */ -#define TOUPCAM_AE_PERCENT_MIN 0 /* auto exposure percent, 0 => full roi average */ +#define TOUPCAM_AE_PERCENT_MIN 0 /* auto exposure percent; 0 or 100 => full roi average, means "disabled" */ #define TOUPCAM_AE_PERCENT_MAX 100 -#define TOUPCAM_AE_PERCENT_DEF 10 +#define TOUPCAM_AE_PERCENT_DEF 10 /* auto exposure percent: enabled, percentage = 10% */ #define TOUPCAM_NOPACKET_TIMEOUT_MIN 500 /* no packet timeout minimum: 500ms */ #define TOUPCAM_NOFRAME_TIMEOUT_MIN 500 /* no frame timeout minimum: 500ms */ -#define TOUPCAM_DYNAMIC_DEFECT_T1_MIN 10 /* dynamic defect pixel correction, threshold, means: 1.0 */ -#define TOUPCAM_DYNAMIC_DEFECT_T1_MAX 100 /* means: 10.0 */ -#define TOUPCAM_DYNAMIC_DEFECT_T1_DEF 13 /* means: 1.3 */ -#define TOUPCAM_DYNAMIC_DEFECT_T2_MIN 0 /* dynamic defect pixel correction, value, means: 0.00 */ -#define TOUPCAM_DYNAMIC_DEFECT_T2_MAX 100 /* means: 1.00 */ -#define TOUPCAM_DYNAMIC_DEFECT_T2_DEF 100 +#define TOUPCAM_DYNAMIC_DEFECT_T1_MIN 0 /* dynamic defect pixel correction, dead pixel ratio: the smaller the dead ratio is, the more stringent the conditions for processing dead pixels are, and fewer pixels will be processed */ +#define TOUPCAM_DYNAMIC_DEFECT_T1_MAX 100 /* means: 1.0 */ +#define TOUPCAM_DYNAMIC_DEFECT_T1_DEF 90 /* means: 0.9 */ +#define TOUPCAM_DYNAMIC_DEFECT_T2_MIN 0 /* dynamic defect pixel correction, hot pixel ratio: the smaller the hot ratio is, the more stringent the conditions for processing hot pixels are, and fewer pixels will be processed */ +#define TOUPCAM_DYNAMIC_DEFECT_T2_MAX 100 +#define TOUPCAM_DYNAMIC_DEFECT_T2_DEF 90 #define TOUPCAM_HDR_K_MIN 1 /* HDR synthesize */ #define TOUPCAM_HDR_K_MAX 25500 #define TOUPCAM_HDR_B_MIN 0 @@ -267,21 +272,21 @@ typedef struct { float xpixsz; /* physical pixel size in micrometer */ float ypixsz; /* physical pixel size in micrometer */ ToupcamResolution res[16]; -} ToupcamModelV2; /* camera model v2 */ +} ToupcamModelV2; /* device model v2 */ typedef struct { #if defined(_WIN32) - wchar_t displayname[64]; /* display name */ + wchar_t displayname[64]; /* display name: model name or user-defined name (if any and Toupcam_EnumWithName) */ wchar_t id[64]; /* unique and opaque id of a connected camera, for Toupcam_Open */ #else - char displayname[64]; /* display name */ + char displayname[64]; /* display name: model name or user-defined name (if any and Toupcam_EnumWithName) */ char id[64]; /* unique and opaque id of a connected camera, for Toupcam_Open */ #endif const ToupcamModelV2* model; -} ToupcamDeviceV2; /* camera instance for enumerating */ +} ToupcamDeviceV2; /* device instance for enumerating */ /* - get the version of this dll/so/dylib, which is: 54.23231.20230823 + get the version of this dll/so/dylib, which is: 56.26054.20240715 */ #if defined(_WIN32) TOUPCAM_API(const wchar_t*) Toupcam_Version(); @@ -336,10 +341,10 @@ TOUPCAM_API(void) Toupcam_Close(HToupcam h); #define TOUPCAM_EVENT_LEVELRANGE 0x000c /* level range changed */ #define TOUPCAM_EVENT_AUTOEXPO_CONV 0x000d /* auto exposure convergence */ #define TOUPCAM_EVENT_AUTOEXPO_CONVFAIL 0x000e /* auto exposure once mode convergence failed */ +#define TOUPCAM_EVENT_FPNC 0x000f /* fix pattern noise correction status changed */ #define TOUPCAM_EVENT_ERROR 0x0080 /* generic error */ #define TOUPCAM_EVENT_DISCONNECTED 0x0081 /* camera disconnected */ #define TOUPCAM_EVENT_NOFRAMETIMEOUT 0x0082 /* no frame timeout error */ -#define TOUPCAM_EVENT_AFFEEDBACK 0x0083 /* auto focus feedback information */ #define TOUPCAM_EVENT_FOCUSPOS 0x0084 /* focus positon */ #define TOUPCAM_EVENT_NOPACKETTIMEOUT 0x0085 /* no packet timeout */ #define TOUPCAM_EVENT_EXPO_START 0x4000 /* hardware event: exposure start */ @@ -358,13 +363,13 @@ TOUPCAM_API(HRESULT) Toupcam_StartPullModeWithWndMsg(HToupcam h, HWND hWnd, UIN typedef void (__stdcall* PTOUPCAM_EVENT_CALLBACK)(unsigned nEvent, void* ctxEvent); TOUPCAM_API(HRESULT) Toupcam_StartPullModeWithCallback(HToupcam h, PTOUPCAM_EVENT_CALLBACK funEvent, void* ctxEvent); -#define TOUPCAM_FRAMEINFO_FLAG_SEQ 0x0001 /* frame sequence number */ -#define TOUPCAM_FRAMEINFO_FLAG_TIMESTAMP 0x0002 /* timestamp */ -#define TOUPCAM_FRAMEINFO_FLAG_EXPOTIME 0x0004 /* exposure time */ -#define TOUPCAM_FRAMEINFO_FLAG_EXPOGAIN 0x0008 /* exposure gain */ -#define TOUPCAM_FRAMEINFO_FLAG_BLACKLEVEL 0x0010 /* black level */ -#define TOUPCAM_FRAMEINFO_FLAG_SHUTTERSEQ 0x0020 /* sequence shutter counter */ -#define TOUPCAM_FRAMEINFO_FLAG_STILL 0x8000 /* still image */ +#define TOUPCAM_FRAMEINFO_FLAG_SEQ 0x00000001 /* frame sequence number */ +#define TOUPCAM_FRAMEINFO_FLAG_TIMESTAMP 0x00000002 /* timestamp */ +#define TOUPCAM_FRAMEINFO_FLAG_EXPOTIME 0x00000004 /* exposure time */ +#define TOUPCAM_FRAMEINFO_FLAG_EXPOGAIN 0x00000008 /* exposure gain */ +#define TOUPCAM_FRAMEINFO_FLAG_BLACKLEVEL 0x00000010 /* black level */ +#define TOUPCAM_FRAMEINFO_FLAG_SHUTTERSEQ 0x00000020 /* sequence shutter counter */ +#define TOUPCAM_FRAMEINFO_FLAG_STILL 0x00008000 /* still image */ typedef struct { unsigned width; @@ -401,7 +406,7 @@ typedef struct { | bits = 8 | Convert to 8 | NA | Convert to 8 | 8 | NA | NA | |--------------------|---------------|---------------|---------------|---------------|---------------|---------------| | bits = 16 | NA | Convert to 16 | NA | NA | 16 | Convert to 16 | - |--------------------|---------------|-----------|-------------------|---------------|---------------|---------------| + |--------------------|---------------|---------------|---------------|---------------|---------------|---------------| | bits = 64 | NA | Convert to 64 | NA | NA | Convert to 64 | 64 | |--------------------|---------------|---------------|---------------|---------------|---------------|---------------| @@ -446,7 +451,7 @@ TOUPCAM_API(HRESULT) Toupcam_PullStillImageWithRowPitch(HToupcam h, void* pImag ctxData is the callback context which is passed by Toupcam_StartPushModeV3 bSnap: TRUE if Toupcam_Snap - funData is callbacked by an internal thread of toupcam.dll, so please pay attention to multithread problem. + funData is callbacked by an internal thread of meadecam.dll, so please pay attention to multithread problem. Do NOT call Toupcam_Close, Toupcam_Stop in this callback context, it deadlocks. */ typedef void (__stdcall* PTOUPCAM_DATA_CALLBACK_V4)(const void* pData, const ToupcamFrameInfoV3* pInfo, int bSnap, void* ctxData); @@ -473,13 +478,13 @@ TOUPCAM_API(HRESULT) Toupcam_SnapR(HToupcam h, unsigned nResolutionIndex, unsig */ TOUPCAM_API(HRESULT) Toupcam_Trigger(HToupcam h, unsigned short nNumber); -/* +/* trigger synchronously - nTimeout: 0: by default, exposure * 102% + 4000 milliseconds + nWaitMS: 0: by default, exposure * 102% + 4000 milliseconds 0xffffffff: wait infinite other: milliseconds to wait */ -TOUPCAM_API(HRESULT) Toupcam_TriggerSync(HToupcam h, unsigned nTimeout, void* pImageData, int bits, int rowPitch, ToupcamFrameInfoV3* pInfo); +TOUPCAM_API(HRESULT) Toupcam_TriggerSync(HToupcam h, unsigned nWaitMS, void* pImageData, int bits, int rowPitch, ToupcamFrameInfoV3* pInfo); /* put_Size, put_eSize, can be used to set the video output resolution BEFORE Toupcam_StartXXXX. @@ -534,10 +539,10 @@ TOUPCAM_API(HRESULT) Toupcam_get_RawFormat(HToupcam h, unsigned* pFourCC, unsig |-----------------------------------------------------------------| | Auto Exposure Target | 10~220 | 120 | | Exposure Gain | 100~ | 100 | - | Temp | 2000~15000 | 6503 | - | Tint | 200~2500 | 1000 | + | Temp | 1000~25000 | 6503 | + | Tint | 100~2500 | 1000 | | LevelRange | 0~255 | Low = 0, High = 255 | - | Contrast | -100~100 | 0 | + | Contrast | -150~150 | 0 | | Hue | -180~180 | 0 | | Saturation | 0~255 | 128 | | Brightness | -64~64 | 0 | @@ -556,6 +561,7 @@ typedef void (__stdcall* PITOUPCAM_HISTOGRAM_CALLBACK)(const float aHistY[256], typedef void (__stdcall* PITOUPCAM_CHROME_CALLBACK)(void* ctxChrome); typedef void (__stdcall* PITOUPCAM_PROGRESS)(int percent, void* ctxProgress); #endif + /* * nFlag & 0x00008000: mono or color * nFlag & 0x0f: bitdepth @@ -578,7 +584,7 @@ TOUPCAM_API(HRESULT) Toupcam_put_AutoExpoEnable(HToupcam h, int bAutoExposure); TOUPCAM_API(HRESULT) Toupcam_get_AutoExpoTarget(HToupcam h, unsigned short* Target); TOUPCAM_API(HRESULT) Toupcam_put_AutoExpoTarget(HToupcam h, unsigned short Target); -/*set the maximum/minimal auto exposure time and agin. The default maximum auto exposure time is 350ms */ +/* set the maximum/minimal auto exposure time and agin. The default maximum auto exposure time is 350ms */ TOUPCAM_API(HRESULT) Toupcam_put_AutoExpoRange(HToupcam h, unsigned maxTime, unsigned minTime, unsigned short maxGain, unsigned short minGain); TOUPCAM_API(HRESULT) Toupcam_get_AutoExpoRange(HToupcam h, unsigned* maxTime, unsigned* minTime, unsigned short* maxGain, unsigned short* minGain); TOUPCAM_API(HRESULT) Toupcam_put_MaxAutoExpoTimeAGain(HToupcam h, unsigned maxTime, unsigned short maxGain); @@ -617,22 +623,33 @@ TOUPCAM_API(HRESULT) Toupcam_get_BlackBalance(HToupcam h, unsigned short aSub[3 /* Flat Field Correction */ TOUPCAM_API(HRESULT) Toupcam_FfcOnce(HToupcam h); #if defined(_WIN32) -TOUPCAM_API(HRESULT) Toupcam_FfcExport(HToupcam h, const wchar_t* filepath); -TOUPCAM_API(HRESULT) Toupcam_FfcImport(HToupcam h, const wchar_t* filepath); +TOUPCAM_API(HRESULT) Toupcam_FfcExport(HToupcam h, const wchar_t* filePath); +TOUPCAM_API(HRESULT) Toupcam_FfcImport(HToupcam h, const wchar_t* filePath); #else -TOUPCAM_API(HRESULT) Toupcam_FfcExport(HToupcam h, const char* filepath); -TOUPCAM_API(HRESULT) Toupcam_FfcImport(HToupcam h, const char* filepath); +TOUPCAM_API(HRESULT) Toupcam_FfcExport(HToupcam h, const char* filePath); +TOUPCAM_API(HRESULT) Toupcam_FfcImport(HToupcam h, const char* filePath); #endif /* Dark Field Correction */ TOUPCAM_API(HRESULT) Toupcam_DfcOnce(HToupcam h); #if defined(_WIN32) -TOUPCAM_API(HRESULT) Toupcam_DfcExport(HToupcam h, const wchar_t* filepath); -TOUPCAM_API(HRESULT) Toupcam_DfcImport(HToupcam h, const wchar_t* filepath); +TOUPCAM_API(HRESULT) Toupcam_DfcExport(HToupcam h, const wchar_t* filePath); +TOUPCAM_API(HRESULT) Toupcam_DfcImport(HToupcam h, const wchar_t* filePath); #else -TOUPCAM_API(HRESULT) Toupcam_DfcExport(HToupcam h, const char* filepath); -TOUPCAM_API(HRESULT) Toupcam_DfcImport(HToupcam h, const char* filepath); +TOUPCAM_API(HRESULT) Toupcam_DfcExport(HToupcam h, const char* filePath); +TOUPCAM_API(HRESULT) Toupcam_DfcImport(HToupcam h, const char* filePath); +#endif + +/* Fix Pattern Noise Correction */ +TOUPCAM_API(HRESULT) Toupcam_FpncOnce(HToupcam h); + +#if defined(_WIN32) +TOUPCAM_API(HRESULT) Toupcam_FpncExport(HToupcam h, const wchar_t* filePath); +TOUPCAM_API(HRESULT) Toupcam_FpncImport(HToupcam h, const wchar_t* filePath); +#else +TOUPCAM_API(HRESULT) Toupcam_FpncExport(HToupcam h, const char* filePath); +TOUPCAM_API(HRESULT) Toupcam_FpncImport(HToupcam h, const char* filePath); #endif TOUPCAM_API(HRESULT) Toupcam_put_Hue(HToupcam h, int Hue); @@ -663,7 +680,7 @@ TOUPCAM_API(HRESULT) Toupcam_get_MaxSpeed(HToupcam h); /* get the maximum speed TOUPCAM_API(HRESULT) Toupcam_get_FanMaxSpeed(HToupcam h); /* get the maximum fan speed, the fan speed range = [0, max], closed interval */ -TOUPCAM_API(HRESULT) Toupcam_get_MaxBitDepth(HToupcam h); /* get the max bit depth of this camera, such as 8, 10, 12, 14, 16 */ +TOUPCAM_API(HRESULT) Toupcam_get_MaxBitDepth(HToupcam h); /* get the max bitdepth of this camera, such as 8, 10, 12, 14, 16 */ /* power supply of lighting: 0 => 60HZ AC @@ -729,6 +746,7 @@ TOUPCAM_API(HRESULT) Toupcam_Flush(HToupcam h); TOUPCAM_API(HRESULT) Toupcam_get_Temperature(HToupcam h, short* pTemperature); /* set the target temperature of the sensor or TEC, in 0.1 degrees Celsius (32 means 3.2 degrees Celsius, -35 means -3.5 degree Celsius) + set "-2730" or below means using the default value of this model return E_NOTIMPL if not supported */ TOUPCAM_API(HRESULT) Toupcam_put_Temperature(HToupcam h, short nTemperature); @@ -800,7 +818,7 @@ TOUPCAM_API(HRESULT) Toupcam_read_EEPROM(HToupcam h, unsigned addr, unsigned ch TOUPCAM_API(HRESULT) Toupcam_read_Pipe(HToupcam h, unsigned pipeId, void* pBuffer, unsigned nBufferLen); TOUPCAM_API(HRESULT) Toupcam_write_Pipe(HToupcam h, unsigned pipeId, const void* pBuffer, unsigned nBufferLen); TOUPCAM_API(HRESULT) Toupcam_feed_Pipe(HToupcam h, unsigned pipeId); - + #define TOUPCAM_OPTION_NOFRAME_TIMEOUT 0x01 /* no frame timeout: 0 => disable, positive value (>= TOUPCAM_NOFRAME_TIMEOUT_MIN) => timeout milliseconds. default: disable */ #define TOUPCAM_OPTION_THREAD_PRIORITY 0x02 /* set the priority of the internal thread which grab data from the usb device. Win: iValue: 0 => THREAD_PRIORITY_NORMAL; 1 => THREAD_PRIORITY_ABOVE_NORMAL; 2 => THREAD_PRIORITY_HIGHEST; 3 => THREAD_PRIORITY_TIME_CRITICAL; default: 1; see: https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-setthreadpriority @@ -810,15 +828,15 @@ TOUPCAM_API(HRESULT) Toupcam_feed_Pipe(HToupcam h, unsigned pipeId); #define TOUPCAM_OPTION_RAW 0x04 /* raw data mode, read the sensor "raw" data. This can be set only while camea is NOT running. 0 = rgb, 1 = raw, default value: 0 */ #define TOUPCAM_OPTION_HISTOGRAM 0x05 /* 0 = only one, 1 = continue mode */ #define TOUPCAM_OPTION_BITDEPTH 0x06 /* 0 = 8 bits mode, 1 = 16 bits mode, subset of TOUPCAM_OPTION_PIXEL_FORMAT */ -#define TOUPCAM_OPTION_FAN 0x07 /* 0 = turn off the cooling fan, [1, max] = fan speed */ +#define TOUPCAM_OPTION_FAN 0x07 /* 0 = turn off the cooling fan, [1, max] = fan speed, , set to "-1" means to use default fan speed */ #define TOUPCAM_OPTION_TEC 0x08 /* 0 = turn off the thermoelectric cooler, 1 = turn on the thermoelectric cooler */ #define TOUPCAM_OPTION_LINEAR 0x09 /* 0 = turn off the builtin linear tone mapping, 1 = turn on the builtin linear tone mapping, default value: 1 */ #define TOUPCAM_OPTION_CURVE 0x0a /* 0 = turn off the builtin curve tone mapping, 1 = turn on the builtin polynomial curve tone mapping, 2 = logarithmic curve tone mapping, default value: 2 */ -#define TOUPCAM_OPTION_TRIGGER 0x0b /* 0 = video mode, 1 = software or simulated trigger mode, 2 = external trigger mode, 3 = external + software trigger, default value = 0 */ +#define TOUPCAM_OPTION_TRIGGER 0x0b /* 0 = video mode, 1 = software or simulated trigger mode, 2 = external trigger mode, 3 = external + software trigger, 4 = self trigger, default value = 0 */ #define TOUPCAM_OPTION_RGB 0x0c /* 0 => RGB24; 1 => enable RGB48 format when bitdepth > 8; 2 => RGB32; 3 => 8 Bits Grey (only for mono camera); 4 => 16 Bits Grey (only for mono camera when bitdepth > 8); 5 => 64(RGB64) */ #define TOUPCAM_OPTION_COLORMATIX 0x0d /* enable or disable the builtin color matrix, default value: 1 */ #define TOUPCAM_OPTION_WBGAIN 0x0e /* enable or disable the builtin white balance gain, default value: 1 */ -#define TOUPCAM_OPTION_TECTARGET 0x0f /* get or set the target temperature of the thermoelectric cooler, in 0.1 degree Celsius. For example, 125 means 12.5 degree Celsius, -35 means -3.5 degree Celsius */ +#define TOUPCAM_OPTION_TECTARGET 0x0f /* get or set the target temperature of the thermoelectric cooler, in 0.1 degree Celsius. For example, 125 means 12.5 degree Celsius, -35 means -3.5 degree Celsius. Set "-2730" or below means using the default for that model */ #define TOUPCAM_OPTION_AUTOEXP_POLICY 0x10 /* auto exposure policy: 0: Exposure Only 1: Exposure Preferred @@ -826,7 +844,7 @@ TOUPCAM_API(HRESULT) Toupcam_feed_Pipe(HToupcam h, unsigned pipeId); 3: Gain Preferred default value: 1 */ -#define TOUPCAM_OPTION_FRAMERATE 0x11 /* limit the frame rate, range=[0, 63], the default value 0 means no limit */ +#define TOUPCAM_OPTION_FRAMERATE 0x11 /* limit the frame rate, the default value 0 means no limit */ #define TOUPCAM_OPTION_DEMOSAIC 0x12 /* demosaic method for both video and still image: BILINEAR = 0, VNG(Variable Number of Gradients) = 1, PPG(Patterned Pixel Grouping) = 2, AHD(Adaptive Homogeneity Directed) = 3, EA(Edge Aware) = 4, see https://en.wikipedia.org/wiki/Demosaicing, default value: 0 */ #define TOUPCAM_OPTION_DEMOSAIC_VIDEO 0x13 /* demosaic method for video */ #define TOUPCAM_OPTION_DEMOSAIC_STILL 0x14 /* demosaic method for still image */ @@ -840,7 +858,12 @@ TOUPCAM_API(HRESULT) Toupcam_feed_Pipe(HToupcam h, unsigned pipeId); The final image size is rounded down to an even number, such as 640/3 to get 212 */ #define TOUPCAM_OPTION_ROTATE 0x18 /* rotate clockwise: 0, 90, 180, 270 */ -#define TOUPCAM_OPTION_CG 0x19 /* Conversion Gain: 0 = LCG, 1 = HCG, 2 = HDR */ +#define TOUPCAM_OPTION_CG 0x19 /* Conversion Gain: + 0 = LCG + 1 = HCG + 2 = HDR (for camera with flag TOUPCAM_FLAG_CGHDR) + 2 = MCG (for camera with flag TOUPCAM_FLAG_GHOPTO) + */ #define TOUPCAM_OPTION_PIXEL_FORMAT 0x1a /* pixel format, TOUPCAM_PIXELFORMAT_xxxx */ #define TOUPCAM_OPTION_FFC 0x1b /* flat field correction set: @@ -886,9 +909,8 @@ TOUPCAM_API(HRESULT) Toupcam_feed_Pipe(HToupcam h, unsigned pipeId); default: 1 (win), 0 (linux/macos) */ #define TOUPCAM_OPTION_FOCUSPOS 0x24 /* focus positon */ -#define TOUPCAM_OPTION_AFMODE 0x25 /* auto focus mode (0:manul focus; 1:auto focus; 2:once focus; 3:conjugate calibration) */ -#define TOUPCAM_OPTION_AFZONE 0x26 /* auto focus zone */ -#define TOUPCAM_OPTION_AFFEEDBACK 0x27 /* auto focus information feedback; 0:unknown; 1:focused; 2:focusing; 3:defocus; 4:up; 5:down */ +#define TOUPCAM_OPTION_AFMODE 0x25 /* auto focus mode, see ToupcamAFMode */ +#define TOUPCAM_OPTION_AFSTATUS 0x27 /* auto focus status, see ToupcamAFStaus */ #define TOUPCAM_OPTION_TESTPATTERN 0x28 /* test pattern: 0: off 3: monochrome diagonal stripes @@ -903,7 +925,7 @@ TOUPCAM_API(HRESULT) Toupcam_feed_Pipe(HToupcam h, unsigned pipeId); #define TOUPCAM_OPTION_PRECISE_FRAMERATE 0x2d /* precise frame rate current value in 0.1 fps */ #define TOUPCAM_OPTION_BANDWIDTH 0x2e /* bandwidth, [1-100]% */ #define TOUPCAM_OPTION_RELOAD 0x2f /* reload the last frame in trigger mode */ -#define TOUPCAM_OPTION_CALLBACK_THREAD 0x30 /* dedicated thread for callback */ +#define TOUPCAM_OPTION_CALLBACK_THREAD 0x30 /* dedicated thread for callback: 0 => disable, 1 => enable, default: 0 */ #define TOUPCAM_OPTION_FRONTEND_DEQUE_LENGTH 0x31 /* frontend (raw) frame buffer deque length, range: [2, 1024], default: 4 All the memory will be pre-allocated when the camera starts, so, please attention to memory usage */ @@ -924,7 +946,7 @@ TOUPCAM_API(HRESULT) Toupcam_feed_Pipe(HToupcam h, unsigned pipeId); #define TOUPCAM_OPTION_GLOBAL_RESET_MODE 0x3a /* global reset mode */ #define TOUPCAM_OPTION_OPEN_ERRORCODE 0x3b /* get the open camera error code */ #define TOUPCAM_OPTION_FLUSH 0x3d /* 1 = hard flush, discard frames cached by camera DDR (if any) - 2 = soft flush, discard frames cached by toupcam.dll (if any) + 2 = soft flush, discard frames cached by meadecam.dll (if any) 3 = both flush Toupcam_Flush means 'both flush' return the number of soft flushed frames if successful, HRESULT if failed @@ -962,9 +984,9 @@ TOUPCAM_API(HRESULT) Toupcam_feed_Pipe(HToupcam h, unsigned pipeId); */ #define TOUPCAM_OPTION_AUTOEXPOSURE_PERCENT 0x4a /* auto exposure percent to average: 1~99: peak percent average - 0 or 100: full roi average + 0 or 100: full roi average, means "disabled" */ -#define TOUPCAM_OPTION_ANTI_SHUTTER_EFFECT 0x4b /* anti shutter effect: 1 => disable, 0 => disable; default: 1 */ +#define TOUPCAM_OPTION_ANTI_SHUTTER_EFFECT 0x4b /* anti shutter effect: 1 => disable, 0 => disable; default: 0 */ #define TOUPCAM_OPTION_CHAMBER_HT 0x4c /* get chamber humidity & temperature: high 16 bits: humidity, in 0.1%, such as: 325 means humidity is 32.5% low 16 bits: temperature, in 0.1 degrees Celsius, such as: 32 means 3.2 degrees Celsius @@ -982,8 +1004,8 @@ TOUPCAM_API(HRESULT) Toupcam_feed_Pipe(HToupcam h, unsigned pipeId); */ #define TOUPCAM_OPTION_HIGH_FULLWELL 0x55 /* high fullwell capacity: 0 => disable, 1 => enable */ #define TOUPCAM_OPTION_DYNAMIC_DEFECT 0x56 /* dynamic defect pixel correction: - threshold, t1: (high 16 bits): [10, 100], means: [1.0, 10.0] - value, t2: (low 16 bits): [0, 100], means: [0.00, 1.00] + dead pixel ratio, t1: (high 16 bits): [0, 100], means: [0.0, 1.0] + hot pixel ratio, t2: (low 16 bits): [0, 100], means: [0.0, 1.0] */ #define TOUPCAM_OPTION_HDR_KB 0x57 /* HDR synthesize K (high 16 bits): [1, 25500] @@ -996,8 +1018,8 @@ TOUPCAM_API(HRESULT) Toupcam_feed_Pipe(HToupcam h, unsigned pipeId); */ #define TOUPCAM_OPTION_GIGETIMEOUT 0x5a /* For GigE cameras, the application periodically sends heartbeat signals to the camera to keep the connection to the camera alive. If the camera doesn't receive heartbeat signals within the time period specified by the heartbeat timeout counter, the camera resets the connection. - When the application is stopped by the debugger, the application cannot create the heartbeat signals - 0 => auto: when the camera is opened, disable if debugger is present or enable if no debugger is present + When the application is stopped by the debugger, the application cannot send the heartbeat signals + 0 => auto: when the camera is opened, enable if no debugger is present or disable if debugger is present 1 => enable 2 => disable default: auto @@ -1006,13 +1028,71 @@ TOUPCAM_API(HRESULT) Toupcam_feed_Pipe(HToupcam h, unsigned pipeId); #define TOUPCAM_OPTION_OVERCLOCK_MAX 0x5c /* get overclock range: [0, max] */ #define TOUPCAM_OPTION_OVERCLOCK 0x5d /* overclock, default: 0 */ #define TOUPCAM_OPTION_RESET_SENSOR 0x5e /* reset sensor */ -#define TOUPCAM_OPTION_ADC 0x08000000 /* Analog-Digital Conversion: - get: - (option | 'C'): get the current value - (option | 'N'): get the supported ADC number - (option | n): get the nth supported ADC value, such as 11bits, 12bits, etc; the first value is the default - set: val = ADC value, such as 11bits, 12bits, etc +#define TOUPCAM_OPTION_ISP 0x5f /* Enable hardware ISP: 0 => auto (disable in RAW mode, otherwise enable), 1 => enable, -1 => disable; default: 0 */ +#define TOUPCAM_OPTION_AUTOEXP_EXPOTIME_DAMP 0x60 /* Auto exposure damping coefficient: time (thousandths). The larger the damping coefficient, the smoother and slower the exposure time changes */ +#define TOUPCAM_OPTION_AUTOEXP_GAIN_DAMP 0x61 /* Auto exposure damping coefficient: gain (thousandths). The larger the damping coefficient, the smoother and slower the gain changes */ +#define TOUPCAM_OPTION_MOTOR_NUMBER 0x62 /* range: [1, 20] */ +#define TOUPCAM_OPTION_MOTOR_POS 0x10000000 /* range: [1, 702] */ +#define TOUPCAM_OPTION_PSEUDO_COLOR_START 0x63 /* Pseudo: start color, BGR format */ +#define TOUPCAM_OPTION_PSEUDO_COLOR_END 0x64 /* Pseudo: end color, BGR format */ +#define TOUPCAM_OPTION_PSEUDO_COLOR_ENABLE 0x65 /* Pseudo: -1 => custom: use startcolor & endcolor to generate the colormap + 0 => disable + 1 => spot + 2 => spring + 3 => summer + 4 => autumn + 5 => winter + 6 => bone + 7 => jet + 8 => rainbow + 9 => deepgreen + 10 => ocean + 11 => cool + 12 => hsv + 13 => pink + 14 => hot + 15 => parula + 16 => magma + 17 => inferno + 18 => plasma + 19 => viridis + 20 => cividis + 21 => twilight + 22 => twilight_shifted + 23 => turbo + 24 => red + 25 => green + 26 => blue */ +#define TOUPCAM_OPTION_LOW_POWERCONSUMPTION 0x66 /* Low Power Consumption: 0 => disable, 1 => enable */ +#define TOUPCAM_OPTION_FPNC 0x67 /* Fix Pattern Noise Correction + set: + 0: disable + 1: enable + -1: reset + (0xff000000 | n): set the average number to n, [1~255] + get: + (val & 0xff): 0 => disable, 1 => enable, 2 => inited + ((val & 0xff00) >> 8): sequence + ((val & 0xff0000) >> 16): average number + */ +#define TOUPCAM_OPTION_OVEREXP_POLICY 0x68 /* Auto exposure over exposure policy: when overexposed, + 0 => directly reduce the exposure time/gain to the minimum value; or + 1 => reduce exposure time/gain in proportion to current and target brightness. + n(n>1) => first adjust the exposure time to (maximum automatic exposure time * maximum automatic exposure gain) * n / 1000, and then adjust according to the strategy of 1 + The advantage of policy 0 is that the convergence speed is faster, but there is black screen. + Policy 1 avoids the black screen, but the convergence speed is slower. + Default: 0 + */ +#define TOUPCAM_OPTION_READOUT_MODE 0x69 /* Readout mode: 0 = IWR (Integrate While Read), 1 = ITR (Integrate Then Read) */ +#define TOUPCAM_OPTION_TAILLIGHT 0x6a /* Turn on/off tail Led light: 0 => off, 1 => on; default: on */ +#define TOUPCAM_OPTION_LENSSTATE 0x6b /* Load/Save lens state to EEPROM: 0 => load, 1 => save */ +#define TOUPCAM_OPTION_AWB_CONTINUOUS 0x6c /* Auto White Balance: continuous mode + 0: disable (default) + n>0: every n millisecond(s) + n<0: every -n frame + */ +#define TOUPCAM_OPTION_TECTARGET_RANGE 0x6d /* TEC target range: min(low 16 bits) = (short)(val & 0xffff), max(high 16 bits) = (short)((val >> 16) & 0xffff) */ /* pixel format */ #define TOUPCAM_PIXELFORMAT_RAW8 0x00 @@ -1027,6 +1107,22 @@ TOUPCAM_API(HRESULT) Toupcam_feed_Pipe(HToupcam h, unsigned pipeId); #define TOUPCAM_PIXELFORMAT_GMCY8 0x09 /* map to RGGB 8 bits */ #define TOUPCAM_PIXELFORMAT_GMCY12 0x0a /* map to RGGB 12 bits */ #define TOUPCAM_PIXELFORMAT_UYVY 0x0b +#define TOUPCAM_PIXELFORMAT_RAW12PACK 0x0c +#define TOUPCAM_PIXELFORMAT_RAW11 0x0d +#define TOUPCAM_PIXELFORMAT_HDR8HL 0x0e /* HDR, Bitdepth: 8, Conversion Gain: High + Low */ +#define TOUPCAM_PIXELFORMAT_HDR10HL 0x0f /* HDR, Bitdepth: 10, Conversion Gain: High + Low */ +#define TOUPCAM_PIXELFORMAT_HDR11HL 0x10 /* HDR, Bitdepth: 11, Conversion Gain: High + Low */ +#define TOUPCAM_PIXELFORMAT_HDR12HL 0x11 /* HDR, Bitdepth: 12, Conversion Gain: High + Low */ +#define TOUPCAM_PIXELFORMAT_HDR14HL 0x12 /* HDR, Bitdepth: 14, Conversion Gain: High + Low */ + +/* +* cmd: input +* -1: query the number +* 0~number: query the nth pixel format +* piValue: output, TOUPCAM_PIXELFORMAT_xxxx +*/ +TOUPCAM_API(HRESULT) Toupcam_get_PixelFormatSupport(HToupcam h, char cmd, int* piValue); +TOUPCAM_API(const char*) Toupcam_get_PixelFormatName(int val); TOUPCAM_API(HRESULT) Toupcam_put_Option(HToupcam h, unsigned iOption, int iValue); TOUPCAM_API(HRESULT) Toupcam_get_Option(HToupcam h, unsigned iOption, int* piValue); @@ -1037,117 +1133,105 @@ TOUPCAM_API(HRESULT) Toupcam_get_Option(HToupcam h, unsigned iOption, int* piVa TOUPCAM_API(HRESULT) Toupcam_put_Roi(HToupcam h, unsigned xOffset, unsigned yOffset, unsigned xWidth, unsigned yHeight); TOUPCAM_API(HRESULT) Toupcam_get_Roi(HToupcam h, unsigned* pxOffset, unsigned* pyOffset, unsigned* pxWidth, unsigned* pyHeight); -/* simulate replug: - return > 0, the number of device has been replug - return = 0, no device found - return E_ACCESSDENIED if without UAC Administrator privileges - for each device found, it will take about 3 seconds -*/ -#if defined(_WIN32) -TOUPCAM_API(HRESULT) Toupcam_Replug(const wchar_t* camId); -#else -TOUPCAM_API(HRESULT) Toupcam_Replug(const char* camId); -#endif - -#ifndef __TOUPCAMAFPARAM_DEFINED__ -#define __TOUPCAMAFPARAM_DEFINED__ -typedef struct { - int imax; /* maximum auto focus sensor board positon */ - int imin; /* minimum auto focus sensor board positon */ - int idef; /* conjugate calibration positon */ - int imaxabs; /* maximum absolute auto focus sensor board positon, micrometer */ - int iminabs; /* maximum absolute auto focus sensor board positon, micrometer */ - int zoneh; /* zone horizontal */ - int zonev; /* zone vertical */ -} ToupcamAfParam; -#endif +/* multiple Roi */ +TOUPCAM_API(HRESULT) Toupcam_put_RoiN(HToupcam h, unsigned xOffset[], unsigned yOffset[], unsigned xWidth[], unsigned yHeight[], unsigned Num); -TOUPCAM_API(HRESULT) Toupcam_get_AfParam(HToupcam h, ToupcamAfParam* pAfParam); - -#define TOUPCAM_IOCONTROLTYPE_GET_SUPPORTEDMODE 0x01 /* 0x01 => Input, 0x02 => Output, (0x01 | 0x02) => support both Input and Output */ -#define TOUPCAM_IOCONTROLTYPE_GET_GPIODIR 0x03 /* 0x00 => Input, 0x01 => Output */ -#define TOUPCAM_IOCONTROLTYPE_SET_GPIODIR 0x04 -#define TOUPCAM_IOCONTROLTYPE_GET_FORMAT 0x05 /* - 0x00 => not connected - 0x01 => Tri-state: Tri-state mode (Not driven) - 0x02 => TTL: TTL level signals - 0x03 => LVDS: LVDS level signals - 0x04 => RS422: RS422 level signals - 0x05 => Opto-coupled - */ -#define TOUPCAM_IOCONTROLTYPE_SET_FORMAT 0x06 -#define TOUPCAM_IOCONTROLTYPE_GET_OUTPUTINVERTER 0x07 /* boolean, only support output signal */ -#define TOUPCAM_IOCONTROLTYPE_SET_OUTPUTINVERTER 0x08 -#define TOUPCAM_IOCONTROLTYPE_GET_INPUTACTIVATION 0x09 /* 0x00 => Rising edge, 0x01 => Falling edge, 0x02 => Level high, 0x03 => Level low */ -#define TOUPCAM_IOCONTROLTYPE_SET_INPUTACTIVATION 0x0a -#define TOUPCAM_IOCONTROLTYPE_GET_DEBOUNCERTIME 0x0b /* debouncer time in microseconds, range: [0, 20000] */ -#define TOUPCAM_IOCONTROLTYPE_SET_DEBOUNCERTIME 0x0c -#define TOUPCAM_IOCONTROLTYPE_GET_TRIGGERSOURCE 0x0d /* - 0x00 => Opto-isolated input - 0x01 => GPIO0 - 0x02 => GPIO1 - 0x03 => Counter - 0x04 => PWM - 0x05 => Software - */ -#define TOUPCAM_IOCONTROLTYPE_SET_TRIGGERSOURCE 0x0e -#define TOUPCAM_IOCONTROLTYPE_GET_TRIGGERDELAY 0x0f /* Trigger delay time in microseconds, range: [0, 5000000] */ -#define TOUPCAM_IOCONTROLTYPE_SET_TRIGGERDELAY 0x10 -#define TOUPCAM_IOCONTROLTYPE_GET_BURSTCOUNTER 0x11 /* Burst Counter, range: [1 ~ 65535] */ -#define TOUPCAM_IOCONTROLTYPE_SET_BURSTCOUNTER 0x12 -#define TOUPCAM_IOCONTROLTYPE_GET_COUNTERSOURCE 0x13 /* 0x00 => Opto-isolated input, 0x01 => GPIO0, 0x02 => GPIO1 */ -#define TOUPCAM_IOCONTROLTYPE_SET_COUNTERSOURCE 0x14 -#define TOUPCAM_IOCONTROLTYPE_GET_COUNTERVALUE 0x15 /* Counter Value, range: [1 ~ 65535] */ -#define TOUPCAM_IOCONTROLTYPE_SET_COUNTERVALUE 0x16 -#define TOUPCAM_IOCONTROLTYPE_SET_RESETCOUNTER 0x18 -#define TOUPCAM_IOCONTROLTYPE_GET_PWM_FREQ 0x19 -#define TOUPCAM_IOCONTROLTYPE_SET_PWM_FREQ 0x1a -#define TOUPCAM_IOCONTROLTYPE_GET_PWM_DUTYRATIO 0x1b -#define TOUPCAM_IOCONTROLTYPE_SET_PWM_DUTYRATIO 0x1c -#define TOUPCAM_IOCONTROLTYPE_GET_PWMSOURCE 0x1d /* 0x00 => Opto-isolated input, 0x01 => GPIO0, 0x02 => GPIO1 */ -#define TOUPCAM_IOCONTROLTYPE_SET_PWMSOURCE 0x1e -#define TOUPCAM_IOCONTROLTYPE_GET_OUTPUTMODE 0x1f /* - 0x00 => Frame Trigger Wait - 0x01 => Exposure Active - 0x02 => Strobe - 0x03 => User output - 0x04 => Counter Output - 0x05 => Timer Output - */ -#define TOUPCAM_IOCONTROLTYPE_SET_OUTPUTMODE 0x20 -#define TOUPCAM_IOCONTROLTYPE_GET_STROBEDELAYMODE 0x21 /* boolean, 0 => pre-delay, 1 => delay; compared to exposure active signal */ -#define TOUPCAM_IOCONTROLTYPE_SET_STROBEDELAYMODE 0x22 -#define TOUPCAM_IOCONTROLTYPE_GET_STROBEDELAYTIME 0x23 /* Strobe delay or pre-delay time in microseconds, range: [0, 5000000] */ -#define TOUPCAM_IOCONTROLTYPE_SET_STROBEDELAYTIME 0x24 -#define TOUPCAM_IOCONTROLTYPE_GET_STROBEDURATION 0x25 /* Strobe duration time in microseconds, range: [0, 5000000] */ -#define TOUPCAM_IOCONTROLTYPE_SET_STROBEDURATION 0x26 -#define TOUPCAM_IOCONTROLTYPE_GET_USERVALUE 0x27 /* - bit0 => Opto-isolated output - bit1 => GPIO0 output - bit2 => GPIO1 output - */ -#define TOUPCAM_IOCONTROLTYPE_SET_USERVALUE 0x28 -#define TOUPCAM_IOCONTROLTYPE_GET_UART_ENABLE 0x29 /* enable: 1 => on; 0 => off */ -#define TOUPCAM_IOCONTROLTYPE_SET_UART_ENABLE 0x2a -#define TOUPCAM_IOCONTROLTYPE_GET_UART_BAUDRATE 0x2b /* baud rate: 0 => 9600; 1 => 19200; 2 => 38400; 3 => 57600; 4 => 115200 */ -#define TOUPCAM_IOCONTROLTYPE_SET_UART_BAUDRATE 0x2c -#define TOUPCAM_IOCONTROLTYPE_GET_UART_LINEMODE 0x2d /* line mode: 0 => TX(GPIO_0)/RX(GPIO_1); 1 => TX(GPIO_1)/RX(GPIO_0) */ -#define TOUPCAM_IOCONTROLTYPE_SET_UART_LINEMODE 0x2e -#define TOUPCAM_IOCONTROLTYPE_GET_EXPO_ACTIVE_MODE 0x2f /* exposure time signal: 0 => specified line, 1 => common exposure time */ -#define TOUPCAM_IOCONTROLTYPE_SET_EXPO_ACTIVE_MODE 0x30 -#define TOUPCAM_IOCONTROLTYPE_GET_EXPO_START_LINE 0x31 /* exposure start line, default: 0 */ -#define TOUPCAM_IOCONTROLTYPE_SET_EXPO_START_LINE 0x32 -#define TOUPCAM_IOCONTROLTYPE_GET_EXPO_END_LINE 0x33 /* exposure end line, default: 0 - end line must be no less than start line - */ -#define TOUPCAM_IOCONTROLTYPE_SET_EXPO_END_LINE 0x34 -#define TOUPCAM_IOCONTROLTYPE_GET_EXEVT_ACTIVE_MODE 0x35 /* exposure event: 0 => specified line, 1 => common exposure time */ -#define TOUPCAM_IOCONTROLTYPE_SET_EXEVT_ACTIVE_MODE 0x36 -#define TOUPCAM_IOCONTROLTYPE_GET_OUTPUTCOUNTERVALUE 0x37 /* Output Counter Value, range: [0 ~ 65535] */ -#define TOUPCAM_IOCONTROLTYPE_SET_OUTPUTCOUNTERVALUE 0x38 -#define TOUPCAM_IOCONTROLTYPE_SET_OUTPUT_PAUSE 0x3a /* Output pause: 1 => puase, 0 => unpause */ - -#define TOUPCAM_IOCONTROL_DELAYTIME_MAX (5 * 1000 * 1000) +TOUPCAM_API(HRESULT) Toupcam_put_XY(HToupcam h, int x, int y); + +#define TOUPCAM_IOCONTROLTYPE_GET_SUPPORTEDMODE 0x01 /* 0x01 => Input, 0x02 => Output, (0x01 | 0x02) => support both Input and Output */ +#define TOUPCAM_IOCONTROLTYPE_GET_GPIODIR 0x03 /* 0x00 => Input, 0x01 => Output */ +#define TOUPCAM_IOCONTROLTYPE_SET_GPIODIR 0x04 +#define TOUPCAM_IOCONTROLTYPE_GET_FORMAT 0x05 /* + 0x00 => not connected + 0x01 => Tri-state: Tri-state mode (Not driven) + 0x02 => TTL: TTL level signals + 0x03 => LVDS: LVDS level signals + 0x04 => RS422: RS422 level signals + 0x05 => Opto-coupled + */ +#define TOUPCAM_IOCONTROLTYPE_SET_FORMAT 0x06 +#define TOUPCAM_IOCONTROLTYPE_GET_OUTPUTINVERTER 0x07 /* boolean, only support output signal */ +#define TOUPCAM_IOCONTROLTYPE_SET_OUTPUTINVERTER 0x08 +#define TOUPCAM_IOCONTROLTYPE_GET_INPUTACTIVATION 0x09 /* 0x00 => Rising edge, 0x01 => Falling edge, 0x02 => Level high, 0x03 => Level low */ +#define TOUPCAM_IOCONTROLTYPE_SET_INPUTACTIVATION 0x0a +#define TOUPCAM_IOCONTROLTYPE_GET_DEBOUNCERTIME 0x0b /* debouncer time in microseconds, range: [0, 20000] */ +#define TOUPCAM_IOCONTROLTYPE_SET_DEBOUNCERTIME 0x0c +#define TOUPCAM_IOCONTROLTYPE_GET_TRIGGERSOURCE 0x0d /* + 0x00 => Opto-isolated input + 0x01 => GPIO0 + 0x02 => GPIO1 + 0x03 => Counter + 0x04 => PWM + 0x05 => Software + */ +#define TOUPCAM_IOCONTROLTYPE_SET_TRIGGERSOURCE 0x0e +#define TOUPCAM_IOCONTROLTYPE_GET_TRIGGERDELAY 0x0f /* Trigger delay time in microseconds, range: [0, 5000000] */ +#define TOUPCAM_IOCONTROLTYPE_SET_TRIGGERDELAY 0x10 +#define TOUPCAM_IOCONTROLTYPE_GET_BURSTCOUNTER 0x11 /* Burst Counter, range: [1 ~ 65535] */ +#define TOUPCAM_IOCONTROLTYPE_SET_BURSTCOUNTER 0x12 +#define TOUPCAM_IOCONTROLTYPE_GET_COUNTERSOURCE 0x13 /* 0x00 => Opto-isolated input, 0x01 => GPIO0, 0x02 => GPIO1 */ +#define TOUPCAM_IOCONTROLTYPE_SET_COUNTERSOURCE 0x14 +#define TOUPCAM_IOCONTROLTYPE_GET_COUNTERVALUE 0x15 /* Counter Value, range: [1 ~ 65535] */ +#define TOUPCAM_IOCONTROLTYPE_SET_COUNTERVALUE 0x16 +#define TOUPCAM_IOCONTROLTYPE_SET_RESETCOUNTER 0x18 +#define TOUPCAM_IOCONTROLTYPE_GET_PWM_FREQ 0x19 +#define TOUPCAM_IOCONTROLTYPE_SET_PWM_FREQ 0x1a +#define TOUPCAM_IOCONTROLTYPE_GET_PWM_DUTYRATIO 0x1b +#define TOUPCAM_IOCONTROLTYPE_SET_PWM_DUTYRATIO 0x1c +#define TOUPCAM_IOCONTROLTYPE_GET_PWMSOURCE 0x1d /* 0x00 => Opto-isolated input, 0x01 => GPIO0, 0x02 => GPIO1 */ +#define TOUPCAM_IOCONTROLTYPE_SET_PWMSOURCE 0x1e +#define TOUPCAM_IOCONTROLTYPE_GET_OUTPUTMODE 0x1f /* + 0x00 => Frame Trigger Wait + 0x01 => Exposure Active + 0x02 => Strobe + 0x03 => User output + 0x04 => Counter Output + 0x05 => Timer Output + */ +#define TOUPCAM_IOCONTROLTYPE_SET_OUTPUTMODE 0x20 +#define TOUPCAM_IOCONTROLTYPE_GET_STROBEDELAYMODE 0x21 /* boolean, 0 => pre-delay, 1 => delay; compared to exposure active signal */ +#define TOUPCAM_IOCONTROLTYPE_SET_STROBEDELAYMODE 0x22 +#define TOUPCAM_IOCONTROLTYPE_GET_STROBEDELAYTIME 0x23 /* Strobe delay or pre-delay time in microseconds, range: [0, 5000000] */ +#define TOUPCAM_IOCONTROLTYPE_SET_STROBEDELAYTIME 0x24 +#define TOUPCAM_IOCONTROLTYPE_GET_STROBEDURATION 0x25 /* Strobe duration time in microseconds, range: [0, 5000000] */ +#define TOUPCAM_IOCONTROLTYPE_SET_STROBEDURATION 0x26 +#define TOUPCAM_IOCONTROLTYPE_GET_USERVALUE 0x27 /* + bit0 => Opto-isolated output + bit1 => GPIO0 output + bit2 => GPIO1 output + */ +#define TOUPCAM_IOCONTROLTYPE_SET_USERVALUE 0x28 +#define TOUPCAM_IOCONTROLTYPE_GET_UART_ENABLE 0x29 /* enable: 1 => on; 0 => off */ +#define TOUPCAM_IOCONTROLTYPE_SET_UART_ENABLE 0x2a +#define TOUPCAM_IOCONTROLTYPE_GET_UART_BAUDRATE 0x2b /* baud rate: 0 => 9600; 1 => 19200; 2 => 38400; 3 => 57600; 4 => 115200 */ +#define TOUPCAM_IOCONTROLTYPE_SET_UART_BAUDRATE 0x2c +#define TOUPCAM_IOCONTROLTYPE_GET_UART_LINEMODE 0x2d /* line mode: 0 => TX(GPIO_0)/RX(GPIO_1); 1 => TX(GPIO_1)/RX(GPIO_0) */ +#define TOUPCAM_IOCONTROLTYPE_SET_UART_LINEMODE 0x2e +#define TOUPCAM_IOCONTROLTYPE_GET_EXPO_ACTIVE_MODE 0x2f /* exposure time signal: 0 => specified line, 1 => common exposure time */ +#define TOUPCAM_IOCONTROLTYPE_SET_EXPO_ACTIVE_MODE 0x30 +#define TOUPCAM_IOCONTROLTYPE_GET_EXPO_START_LINE 0x31 /* exposure start line, default: 0 */ +#define TOUPCAM_IOCONTROLTYPE_SET_EXPO_START_LINE 0x32 +#define TOUPCAM_IOCONTROLTYPE_GET_EXPO_END_LINE 0x33 /* exposure end line, default: 0 + end line must be no less than start line + */ +#define TOUPCAM_IOCONTROLTYPE_SET_EXPO_END_LINE 0x34 +#define TOUPCAM_IOCONTROLTYPE_GET_EXEVT_ACTIVE_MODE 0x35 /* exposure event: 0 => specified line, 1 => common exposure time */ +#define TOUPCAM_IOCONTROLTYPE_SET_EXEVT_ACTIVE_MODE 0x36 +#define TOUPCAM_IOCONTROLTYPE_GET_OUTPUTCOUNTERVALUE 0x37 /* Output Counter Value, range: [0 ~ 65535] */ +#define TOUPCAM_IOCONTROLTYPE_SET_OUTPUTCOUNTERVALUE 0x38 +#define TOUPCAM_IOCONTROLTYPE_SET_OUTPUT_PAUSE 0x3a /* Output pause: 1 => puase, 0 => unpause */ +#define TOUPCAM_IOCONTROLTYPE_GET_INPUT_STATE 0x3b /* Input state: 0 (low level) or 1 (high level) */ +#define TOUPCAM_IOCONTROLTYPE_GET_USER_PULSE_HIGH 0x3d /* User pulse high level time: us */ +#define TOUPCAM_IOCONTROLTYPE_SET_USER_PULSE_HIGH 0x3e +#define TOUPCAM_IOCONTROLTYPE_GET_USER_PULSE_LOW 0x3f /* User pulse low level time: us */ +#define TOUPCAM_IOCONTROLTYPE_SET_USER_PULSE_LOW 0x40 +#define TOUPCAM_IOCONTROLTYPE_GET_USER_PULSE_NUMBER 0x41 /* User pulse number: default 0 */ +#define TOUPCAM_IOCONTROLTYPE_SET_USER_PULSE_NUMBER 0x42 +#define TOUPCAM_IOCONTROLTYPE_GET_EXTERNAL_TRIGGER_NUMBER 0x43 /* External trigger number */ +#define TOUPCAM_IOCONTROLTYPE_GET_DEBOUNCER_TRIGGER_NUMBER 0x45 /* Trigger signal number after debounce */ +#define TOUPCAM_IOCONTROLTYPE_GET_EFFECTIVE_TRIGGER_NUMBER 0x47 /* Effective trigger signal number */ + +#define TOUPCAM_IOCONTROL_DELAYTIME_MAX (5 * 1000 * 1000) /* ioLineNumber: @@ -1158,6 +1242,20 @@ TOUPCAM_API(HRESULT) Toupcam_get_AfParam(HToupcam h, ToupcamAfParam* pAfParam); */ TOUPCAM_API(HRESULT) Toupcam_IoControl(HToupcam h, unsigned ioLineNumber, unsigned nType, int outVal, int* inVal); +#ifndef __TOUPCAMSELFTRIGGER_DEFINED__ +#define __TOUPCAMSELFTRIGGER_DEFINED__ +typedef struct { + unsigned sensingLeft, sensingTop, sensingWidth, sensingHeight; /* Sensing Area */ + unsigned hThreshold, lThreshold; /* threshold High side, threshold Low side */ + unsigned expoTime; /* Exposure Time */ + unsigned short expoGain; /* Exposure Gain */ + unsigned short hCount, lCount; /* Count threshold High side, Count threshold Low side, thousandths of Sensing Area */ + unsigned short reserved; +} ToupcamSelfTrigger; +#endif +TOUPCAM_API(HRESULT) Toupcam_put_SelfTrigger(HToupcam h, const ToupcamSelfTrigger* pSt); +TOUPCAM_API(HRESULT) Toupcam_get_SelfTrigger(HToupcam h, ToupcamSelfTrigger* pSt); + #define TOUPCAM_FLASH_SIZE 0x00 /* query total size */ #define TOUPCAM_FLASH_EBLOCK 0x01 /* query erase block size */ #define TOUPCAM_FLASH_RWBLOCK 0x02 /* query read/write block size */ @@ -1175,6 +1273,125 @@ TOUPCAM_API(HRESULT) Toupcam_rwc_Flash(HToupcam h, unsigned action, unsigned ad TOUPCAM_API(HRESULT) Toupcam_write_UART(HToupcam h, const unsigned char* pData, unsigned nDataLen); TOUPCAM_API(HRESULT) Toupcam_read_UART(HToupcam h, unsigned char* pBuffer, unsigned nBufferLen); +/* Initialize support for GigE cameras. If online/offline notifications are not required, the callback function can be set to NULL */ +typedef void (__stdcall* PTOUPCAM_HOTPLUG)(void* ctxHotPlug); +TOUPCAM_API(HRESULT) Toupcam_GigeEnable(PTOUPCAM_HOTPLUG funHotPlug, void* ctxHotPlug); + +/* + filePath: + "*": export to EEPROM + "0x????" or "0X????": export to EEPROM specified address + file path: export to file in ini format +*/ +TOUPCAM_API(HRESULT) Toupcam_export_Cfg(HToupcam h, const char* filePath); + +/* +This function is only available on macOS and Linux, it's unnecessary on Windows & Android. To process the device plug in / pull out: + (1) On Windows, please refer to the MSDN + (a) Device Management, https://docs.microsoft.com/en-us/windows/win32/devio/device-management + (b) Detecting Media Insertion or Removal, https://docs.microsoft.com/en-us/windows/win32/devio/detecting-media-insertion-or-removal + (2) On Android, please refer to https://developer.android.com/guide/topics/connectivity/usb/host + (3) On Linux / macOS, please call this function to register the callback function. + When the device is inserted or pulled out, you will be notified by the callback funcion, and then call Toupcam_EnumV2(...) again to enum the cameras. + (4) On macOS, IONotificationPortCreate series APIs can also be used as an alternative. +Recommendation: for better rubustness, when notify of device insertion arrives, don't open handle of this device immediately, but open it after delaying a short time (e.g., 200 milliseconds). +*/ +#if !defined(_WIN32) && !defined(__ANDROID__) +TOUPCAM_API(void) Toupcam_HotPlug(PTOUPCAM_HOTPLUG funHotPlug, void* ctxHotPlug); +#endif + +TOUPCAM_API(unsigned) Toupcam_EnumWithName(ToupcamDeviceV2 pti[TOUPCAM_MAX]); +TOUPCAM_API(HRESULT) Toupcam_set_Name(HToupcam h, const char* name); +TOUPCAM_API(HRESULT) Toupcam_query_Name(HToupcam h, char name[64]); +#if defined(_WIN32) +TOUPCAM_API(HRESULT) Toupcam_put_Name(const wchar_t* camId, const char* name); +TOUPCAM_API(HRESULT) Toupcam_get_Name(const wchar_t* camId, char name[64]); +#else +TOUPCAM_API(HRESULT) Toupcam_put_Name(const char* camId, const char* name); +TOUPCAM_API(HRESULT) Toupcam_get_Name(const char* camId, char name[64]); +#endif + +typedef struct { + unsigned short lensID; + unsigned char lensType; + unsigned char statusAfmf; /* LENS_AF = 0x00, LENS_MF = 0x80 */ + + unsigned short maxFocalLength; + unsigned short curFocalLength; + unsigned short minFocalLength; + + short farFM; /* focus motor, absolute value */ + short curFM; /* current focus motor */ + short nearFM; + + unsigned short maxFocusDistance; + unsigned short minFocusDistance; + + char curAM; + unsigned char maxAM; /* maximum Aperture, mimimum F# */ + unsigned char minAM; /* mimimum Aperture, maximum F# */ + unsigned char posAM; /* used for set aperture motor to posAM, it is an index */ + int posFM; /* used for set focus motor to posFM */ + + unsigned sizeFN; + const char** arrayFN; + const char* lensName; /* lens Name */ +} ToupcamLensInfo; + +TOUPCAM_API(HRESULT) Toupcam_get_LensInfo(HToupcam h, ToupcamLensInfo* pInfo); + +typedef enum +{ + ToupcamAFMode_CALIBRATE = 0x0,/* lens calibration mode */ + ToupcamAFMode_MANUAL = 0x1,/* manual focus mode */ + ToupcamAFMode_ONCE = 0x2,/* onepush focus mode */ + ToupcamAFMode_AUTO = 0x3,/* autofocus mode */ + ToupcamAFMode_NONE = 0x4,/* no active selection of focus mode */ + ToupcamAFMode_IDLE = 0x5, + ToupcamAFMode_UNUSED = 0xffffffff +} ToupcamAFMode; + +typedef enum +{ + ToupcamAFStatus_NA = 0x0,/* Not available */ + ToupcamAFStatus_PEAKPOINT = 0x1,/* Focus completed, find the focus position */ + ToupcamAFStatus_DEFOCUS = 0x2,/* End of focus, defocus */ + ToupcamAFStatus_NEAR = 0x3,/* Focusing ended, object too close */ + ToupcamAFStatus_FAR = 0x4,/* Focusing ended, object too far */ + ToupcamAFStatus_ROICHANGED = 0x5,/* Focusing ends, roi changes */ + ToupcamAFStatus_SCENECHANGED = 0x6,/* Focusing ends, scene changes */ + ToupcamAFStatus_MODECHANGED = 0x7,/* The end of focusing and the change in focusing mode is usually determined by the user moderator */ + ToupcamAFStatus_UNFINISH = 0x8,/* The focus is not complete. At the beginning of focusing, it will be set as incomplete */ + ToupcamAfStatus_UNUSED = 0xffffffff +} ToupcamAFStatus;/* Focus Status */ + +typedef struct { + ToupcamAFMode AF_Mode; + ToupcamAFStatus AF_Status; + unsigned char AF_LensAP_Update_Flag; /* mark for whether the lens aperture is calibrated */ + unsigned char Reserved[3]; +} ToupcamAFState; + +TOUPCAM_API(HRESULT) Toupcam_get_AFState(HToupcam h, ToupcamAFState* pState); + +TOUPCAM_API(HRESULT) Toupcam_put_AFMode(HToupcam h, ToupcamAFMode mode, int bFixedWD, unsigned uiNear, unsigned uiFar); +TOUPCAM_API(HRESULT) Toupcam_put_AFRoi(HToupcam h, unsigned xOffset, unsigned yOffset, unsigned xWidth, unsigned yHeight); +TOUPCAM_API(HRESULT) Toupcam_get_AFRoi(HToupcam h, unsigned* pxOffset, unsigned* pyOffset, unsigned* pxWidth, unsigned* pyHeight); +TOUPCAM_API(HRESULT) Toupcam_put_AFAperture(HToupcam h, int iAperture); +TOUPCAM_API(HRESULT) Toupcam_put_AFFMPos(HToupcam h, int iFMPos); + +/* simulate replug: + return > 0, the number of device has been replug + return = 0, no device found + return E_ACCESSDENIED if without UAC Administrator privileges + for each device found, it will take about 3 seconds +*/ +#if defined(_WIN32) +TOUPCAM_API(HRESULT) Toupcam_Replug(const wchar_t* camId); +#else +TOUPCAM_API(HRESULT) Toupcam_Replug(const char* camId); +#endif + TOUPCAM_API(const ToupcamModelV2**) Toupcam_all_Model(); /* return all supported USB model array */ TOUPCAM_API(const ToupcamModelV2*) Toupcam_query_Model(HToupcam h); TOUPCAM_API(const ToupcamModelV2*) Toupcam_get_Model(unsigned short idVendor, unsigned short idProduct); @@ -1192,8 +1409,8 @@ TOUPCAM_API(HRESULT) Toupcam_Update(const wchar_t* camId, const wchar_t* filePa TOUPCAM_API(HRESULT) Toupcam_Update(const char* camId, const char* filePath, PITOUPCAM_PROGRESS funProgress, void* ctxProgress); #endif -TOUPCAM_API(HRESULT) Toupcam_put_Linear(HToupcam h, const unsigned char* v8, const unsigned short* v16); /* v8, v16 pointer must remains valid */ -TOUPCAM_API(HRESULT) Toupcam_put_Curve(HToupcam h, const unsigned char* v8, const unsigned short* v16); /* v8, v16 pointer must remains valid */ +TOUPCAM_API(HRESULT) Toupcam_put_Linear(HToupcam h, const unsigned char* v8, const unsigned short* v16); /* v8, v16 pointer must remains valid while camera running */ +TOUPCAM_API(HRESULT) Toupcam_put_Curve(HToupcam h, const unsigned char* v8, const unsigned short* v16); /* v8, v16 pointer must remains valid while camera running */ TOUPCAM_API(HRESULT) Toupcam_put_ColorMatrix(HToupcam h, const double v[9]); /* null => revert to model default */ TOUPCAM_API(HRESULT) Toupcam_put_InitWBGain(HToupcam h, const unsigned short v[3]); /* null => revert to model default */ @@ -1202,6 +1419,34 @@ TOUPCAM_API(HRESULT) Toupcam_put_InitWBGain(HToupcam h, const unsigned short v[ */ TOUPCAM_API(HRESULT) Toupcam_get_FrameRate(HToupcam h, unsigned* nFrame, unsigned* nTime, unsigned* nTotalFrame); +/* AAF: Astro Auto Focuser */ +#define TOUPCAM_AAF_SETPOSITION 0x01 +#define TOUPCAM_AAF_GETPOSITION 0x02 +#define TOUPCAM_AAF_SETZERO 0x03 +#define TOUPCAM_AAF_SETDIRECTION 0x05 +#define TOUPCAM_AAF_GETDIRECTION 0x06 +#define TOUPCAM_AAF_SETMAXINCREMENT 0x07 +#define TOUPCAM_AAF_GETMAXINCREMENT 0x08 +#define TOUPCAM_AAF_SETFINE 0x09 +#define TOUPCAM_AAF_GETFINE 0x0a +#define TOUPCAM_AAF_SETCOARSE 0x0b +#define TOUPCAM_AAF_GETCOARSE 0x0c +#define TOUPCAM_AAF_SETBUZZER 0x0d +#define TOUPCAM_AAF_GETBUZZER 0x0e +#define TOUPCAM_AAF_SETBACKLASH 0x0f +#define TOUPCAM_AAF_GETBACKLASH 0x10 +#define TOUPCAM_AAF_GETAMBIENTTEMP 0x12 +#define TOUPCAM_AAF_GETTEMP 0x14 /* in 0.1 degrees Celsius, such as: 32 means 3.2 degrees Celsius */ +#define TOUPCAM_AAF_ISMOVING 0x16 +#define TOUPCAM_AAF_HALT 0x17 +#define TOUPCAM_AAF_SETMAXSTEP 0x1b +#define TOUPCAM_AAF_GETMAXSTEP 0x1c +#define TOUPCAM_AAF_GETSTEPSIZE 0x1e +#define TOUPCAM_AAF_RANGEMIN 0xfd /* Range: min value */ +#define TOUPCAM_AAF_RANGEMAX 0xfe /* Range: max value */ +#define TOUPCAM_AAF_RANGEDEF 0xff /* Range: default value */ +TOUPCAM_API(HRESULT) Toupcam_AAF(HToupcam h, int action, int outVal, int* inVal); + /* astronomy: for ST4 guide, please see: ASCOM Platform Help ICameraV2. nDirect: 0 = North, 1 = South, 2 = East, 3 = West, 4 = Stop nDuration: in milliseconds @@ -1238,6 +1483,23 @@ TOUPCAM_API(double) Toupcam_calc_ClarityFactorV2(const void* pImageData, int b */ TOUPCAM_API(void) Toupcam_deBayerV2(unsigned nFourCC, int nW, int nH, const void* input, void* output, unsigned char nBitDepth, unsigned char nBitCount); + +#ifndef __TOUPCAMFOCUSMOTOR_DEFINED__ +#define __TOUPCAMFOCUSMOTOR_DEFINED__ +typedef struct { + int imax; /* maximum auto focus sensor board positon */ + int imin; /* minimum auto focus sensor board positon */ + int idef; /* conjugate calibration positon */ + int imaxabs; /* maximum absolute auto focus sensor board positon, micrometer */ + int iminabs; /* maximum absolute auto focus sensor board positon, micrometer */ + int zoneh; /* zone horizontal */ + int zonev; /* zone vertical */ +} ToupcamFocusMotor; +#endif + +TOUPCAM_DEPRECATED +TOUPCAM_API(HRESULT) Toupcam_get_FocusMotor(HToupcam h, ToupcamFocusMotor* pFocusMotor); + /* obsolete, please use Toupcam_deBayerV2 */ @@ -1331,55 +1593,8 @@ TOUPCAM_API(HRESULT) Toupcam_AwbOnePush(HToupcam h, PITOUPCAM_TEMPTINT_CALLBACK TOUPCAM_DEPRECATED TOUPCAM_API(HRESULT) Toupcam_AbbOnePush(HToupcam h, PITOUPCAM_BLACKBALANCE_CALLBACK funBB, void* ctxBB); -/* Initialize support for GigE cameras. If online/offline notifications are not required, the callback function can be set to NULL */ -typedef void (__stdcall* PTOUPCAM_HOTPLUG)(void* ctxHotPlug); -TOUPCAM_API(HRESULT) Toupcam_GigeEnable(PTOUPCAM_HOTPLUG funHotPlug, void* ctxHotPlug); - -/* -USB hotplug is only available on macOS and Linux, it's unnecessary on Windows & Android. To process the device plug in / pull out: - (1) On Windows, please refer to the MSDN - (a) Device Management, https://docs.microsoft.com/en-us/windows/win32/devio/device-management - (b) Detecting Media Insertion or Removal, https://docs.microsoft.com/en-us/windows/win32/devio/detecting-media-insertion-or-removal - (2) On Android, please refer to https://developer.android.com/guide/topics/connectivity/usb/host - (3) On Linux / macOS, please call this function to register the callback function. - When the device is inserted or pulled out, you will be notified by the callback funcion, and then call Toupcam_EnumV2(...) again to enum the cameras. - (4) On macOS, IONotificationPortCreate series APIs can also be used as an alternative. -Recommendation: for better rubustness, when notify of device insertion arrives, don't open handle of this device immediately, but open it after delaying a short time (e.g., 200 milliseconds). -*/ -#if !defined(_WIN32) && !defined(__ANDROID__) -TOUPCAM_API(void) Toupcam_HotPlug(PTOUPCAM_HOTPLUG funHotPlug, void* ctxHotPlug); -#endif - -/* AAF: Astro Auto Focuser */ -#define TOUPCAM_AAF_SETPOSITION 0x01 -#define TOUPCAM_AAF_GETPOSITION 0x02 -#define TOUPCAM_AAF_SETZERO 0x03 -#define TOUPCAM_AAF_GETZERO 0x04 -#define TOUPCAM_AAF_SETDIRECTION 0x05 -#define TOUPCAM_AAF_GETDIRECTION 0x06 -#define TOUPCAM_AAF_SETMAXINCREMENT 0x07 -#define TOUPCAM_AAF_GETMAXINCREMENT 0x08 -#define TOUPCAM_AAF_SETFINE 0x09 -#define TOUPCAM_AAF_GETFINE 0x0a -#define TOUPCAM_AAF_SETCOARSE 0x0b -#define TOUPCAM_AAF_GETCOARSE 0x0c -#define TOUPCAM_AAF_SETBUZZER 0x0d -#define TOUPCAM_AAF_GETBUZZER 0x0e -#define TOUPCAM_AAF_SETBACKLASH 0x0f -#define TOUPCAM_AAF_GETBACKLASH 0x10 -#define TOUPCAM_AAF_GETAMBIENTTEMP 0x12 -#define TOUPCAM_AAF_GETTEMP 0x14 -#define TOUPCAM_AAF_ISMOVING 0x16 -#define TOUPCAM_AAF_HALT 0x17 -#define TOUPCAM_AAF_SETMAXSTEP 0x1b -#define TOUPCAM_AAF_GETMAXSTEP 0x1c -#define TOUPCAM_AAF_RANGEMIN 0xfd /* Range: min value */ -#define TOUPCAM_AAF_RANGEMAX 0xfe /* Range: max value */ -#define TOUPCAM_AAF_RANGEDEF 0xff /* Range: default value */ -TOUPCAM_API(HRESULT) Toupcam_AAF(HToupcam h, int action, int outVal, int* inVal); - #if defined(_WIN32) -/* Toupcam_put_TempTintInit is obsolete, recommend using Toupcam_AwbOnce. */ +/* Toupcam_put_TempTintInit is obsolete, recommend using Toupcam_AwbOnce */ TOUPCAM_DEPRECATED TOUPCAM_API(HRESULT) Toupcam_put_TempTintInit(HToupcam h, PITOUPCAM_TEMPTINT_CALLBACK funTT, void* ctxTT); @@ -1422,29 +1637,13 @@ TOUPCAM_API(HRESULT) Toupcam_get_VignetMidPointInt(HToupcam h, int* nMidPoint); #define TOUPCAM_FLAG_BITDEPTH14 TOUPCAM_FLAG_RAW14 /* pixel format, RAW 14bits */ #define TOUPCAM_FLAG_BITDEPTH16 TOUPCAM_FLAG_RAW16 /* pixel format, RAW 16bits */ -#if defined(_WIN32) -TOUPCAM_API(HRESULT) Toupcam_set_Name(HToupcam h, const char* name); -TOUPCAM_API(HRESULT) Toupcam_query_Name(HToupcam h, char name[64]); -TOUPCAM_API(HRESULT) Toupcam_put_Name(const wchar_t* camId, const char* name); -TOUPCAM_API(HRESULT) Toupcam_get_Name(const wchar_t* camId, char name[64]); -#else -TOUPCAM_API(HRESULT) Toupcam_set_Name(HToupcam h, const char* name); -TOUPCAM_API(HRESULT) Toupcam_query_Name(HToupcam h, char name[64]); -TOUPCAM_API(HRESULT) Toupcam_put_Name(const char* camId, const char* name); -TOUPCAM_API(HRESULT) Toupcam_get_Name(const char* camId, char name[64]); -#endif -TOUPCAM_API(unsigned) Toupcam_EnumWithName(ToupcamDeviceV2 pti[TOUPCAM_MAX]); - -TOUPCAM_API(HRESULT) Toupcam_put_RoiN(HToupcam h, unsigned xOffset[], unsigned yOffset[], unsigned xWidth[], unsigned yHeight[], unsigned Num); - TOUPCAM_API(HRESULT) Toupcam_log_File(const #if defined(_WIN32) wchar_t* #else char* #endif - filepath -); + filePath); TOUPCAM_API(HRESULT) Toupcam_log_Level(unsigned level); /* 0 => none; 1 => error; 2 => debug; 3 => verbose */ #if defined(_WIN32) diff --git a/libnncam/CMakeLists.txt b/libnncam/CMakeLists.txt index 665c91916..8f4020f82 100644 --- a/libnncam/CMakeLists.txt +++ b/libnncam/CMakeLists.txt @@ -1,8 +1,8 @@ cmake_minimum_required(VERSION 3.16) project (libnncam) -set (LIBNNCAM_VERSION "55.25633") -set (LIBNNCAM_SOVERSION "55") +set (LIBNNCAM_VERSION "56.26054") +set (LIBNNCAM_SOVERSION "56") list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules/") list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../cmake_modules/") diff --git a/libnncam/arm64/libnncam.bin b/libnncam/arm64/libnncam.bin index 85a194e09..b00714667 100644 Binary files a/libnncam/arm64/libnncam.bin and b/libnncam/arm64/libnncam.bin differ diff --git a/libnncam/armhf/libnncam.bin b/libnncam/armhf/libnncam.bin index 988b554d0..83030200d 100644 Binary files a/libnncam/armhf/libnncam.bin and b/libnncam/armhf/libnncam.bin differ diff --git a/libnncam/mac/libnncam.bin b/libnncam/mac/libnncam.bin index 094f4f7cb..00796d02e 100644 Binary files a/libnncam/mac/libnncam.bin and b/libnncam/mac/libnncam.bin differ diff --git a/libnncam/nncam.h b/libnncam/nncam.h index a65ad22dd..839da4040 100644 --- a/libnncam/nncam.h +++ b/libnncam/nncam.h @@ -1,7 +1,7 @@ #ifndef __nncam_h__ #define __nncam_h__ -/* Version: 55.25633.20240519 */ +/* Version: 56.26054.20240715 */ /* Platform & Architecture: (1) Win32: @@ -92,21 +92,21 @@ extern "C" { /* */ /********************************************************************************/ #if defined(NNCAM_HRESULT_ERRORCODE_NEEDED) -#define S_OK 0x00000000 /* Success */ -#define S_FALSE 0x00000001 /* Yet another success */ -#define E_UNEXPECTED 0x8000ffff /* Catastrophic failure */ -#define E_NOTIMPL 0x80004001 /* Not supported or not implemented */ -#define E_NOINTERFACE 0x80004002 -#define E_ACCESSDENIED 0x80070005 /* Permission denied */ -#define E_OUTOFMEMORY 0x8007000e /* Out of memory */ -#define E_INVALIDARG 0x80070057 /* One or more arguments are not valid */ -#define E_POINTER 0x80004003 /* Pointer that is not valid */ -#define E_FAIL 0x80004005 /* Generic failure */ -#define E_WRONG_THREAD 0x8001010e /* Call function in the wrong thread */ -#define E_GEN_FAILURE 0x8007001f /* Device not functioning */ -#define E_BUSY 0x800700aa /* The requested resource is in use */ -#define E_PENDING 0x8000000a /* The data necessary to complete this operation is not yet available */ -#define E_TIMEOUT 0x8001011f /* This operation returned because the timeout period expired */ +#define S_OK (HRESULT)(0x00000000) /* Success */ +#define S_FALSE (HRESULT)(0x00000001) /* Yet another success */ +#define E_UNEXPECTED (HRESULT)(0x8000ffff) /* Catastrophic failure */ +#define E_NOTIMPL (HRESULT)(0x80004001) /* Not supported or not implemented */ +#define E_NOINTERFACE (HRESULT)(0x80004002) +#define E_ACCESSDENIED (HRESULT)(0x80070005) /* Permission denied */ +#define E_OUTOFMEMORY (HRESULT)(0x8007000e) /* Out of memory */ +#define E_INVALIDARG (HRESULT)(0x80070057) /* One or more arguments are not valid */ +#define E_POINTER (HRESULT)(0x80004003) /* Pointer that is not valid */ +#define E_FAIL (HRESULT)(0x80004005) /* Generic failure */ +#define E_WRONG_THREAD (HRESULT)(0x8001010e) /* Call function in the wrong thread */ +#define E_GEN_FAILURE (HRESULT)(0x8007001f) /* Device not functioning */ +#define E_BUSY (HRESULT)(0x800700aa) /* The requested resource is in use */ +#define E_PENDING (HRESULT)(0x8000000a) /* The data necessary to complete this operation is not yet available */ +#define E_TIMEOUT (HRESULT)(0x8001011f) /* This operation returned because the timeout period expired */ #endif /* handle */ @@ -229,9 +229,6 @@ typedef struct Nncam_t { int unused; } *HNncam; #define NNCAM_DENOISE_DEF 0 /* denoise */ #define NNCAM_DENOISE_MIN 0 /* denoise */ #define NNCAM_DENOISE_MAX 100 /* denoise */ -#define NNCAM_TEC_TARGET_MIN (-500) /* TEC target: -50.0 degrees Celsius */ -#define NNCAM_TEC_TARGET_DEF 100 /* 10.0 degrees Celsius */ -#define NNCAM_TEC_TARGET_MAX 400 /* TEC target: 40.0 degrees Celsius */ #define NNCAM_HEARTBEAT_MIN 100 /* millisecond */ #define NNCAM_HEARTBEAT_MAX 10000 /* millisecond */ #define NNCAM_AE_PERCENT_MIN 0 /* auto exposure percent; 0 or 100 => full roi average, means "disabled" */ @@ -239,12 +236,12 @@ typedef struct Nncam_t { int unused; } *HNncam; #define NNCAM_AE_PERCENT_DEF 10 /* auto exposure percent: enabled, percentage = 10% */ #define NNCAM_NOPACKET_TIMEOUT_MIN 500 /* no packet timeout minimum: 500ms */ #define NNCAM_NOFRAME_TIMEOUT_MIN 500 /* no frame timeout minimum: 500ms */ -#define NNCAM_DYNAMIC_DEFECT_T1_MIN 10 /* dynamic defect pixel correction, threshold, means: 1.0 */ -#define NNCAM_DYNAMIC_DEFECT_T1_MAX 100 /* means: 10.0 */ -#define NNCAM_DYNAMIC_DEFECT_T1_DEF 13 /* means: 1.3 */ -#define NNCAM_DYNAMIC_DEFECT_T2_MIN 0 /* dynamic defect pixel correction, value, means: 0.00 */ -#define NNCAM_DYNAMIC_DEFECT_T2_MAX 100 /* means: 1.00 */ -#define NNCAM_DYNAMIC_DEFECT_T2_DEF 100 +#define NNCAM_DYNAMIC_DEFECT_T1_MIN 0 /* dynamic defect pixel correction, dead pixel ratio: the smaller the dead ratio is, the more stringent the conditions for processing dead pixels are, and fewer pixels will be processed */ +#define NNCAM_DYNAMIC_DEFECT_T1_MAX 100 /* means: 1.0 */ +#define NNCAM_DYNAMIC_DEFECT_T1_DEF 90 /* means: 0.9 */ +#define NNCAM_DYNAMIC_DEFECT_T2_MIN 0 /* dynamic defect pixel correction, hot pixel ratio: the smaller the hot ratio is, the more stringent the conditions for processing hot pixels are, and fewer pixels will be processed */ +#define NNCAM_DYNAMIC_DEFECT_T2_MAX 100 +#define NNCAM_DYNAMIC_DEFECT_T2_DEF 90 #define NNCAM_HDR_K_MIN 1 /* HDR synthesize */ #define NNCAM_HDR_K_MAX 25500 #define NNCAM_HDR_B_MIN 0 @@ -289,7 +286,7 @@ typedef struct { } NncamDeviceV2; /* device instance for enumerating */ /* - get the version of this dll/so/dylib, which is: 55.25633.20240519 + get the version of this dll/so/dylib, which is: 56.26054.20240715 */ #if defined(_WIN32) NNCAM_API(const wchar_t*) Nncam_Version(); @@ -821,7 +818,7 @@ NNCAM_API(HRESULT) Nncam_read_EEPROM(HNncam h, unsigned addr, unsigned char* pB NNCAM_API(HRESULT) Nncam_read_Pipe(HNncam h, unsigned pipeId, void* pBuffer, unsigned nBufferLen); NNCAM_API(HRESULT) Nncam_write_Pipe(HNncam h, unsigned pipeId, const void* pBuffer, unsigned nBufferLen); NNCAM_API(HRESULT) Nncam_feed_Pipe(HNncam h, unsigned pipeId); - + #define NNCAM_OPTION_NOFRAME_TIMEOUT 0x01 /* no frame timeout: 0 => disable, positive value (>= NNCAM_NOFRAME_TIMEOUT_MIN) => timeout milliseconds. default: disable */ #define NNCAM_OPTION_THREAD_PRIORITY 0x02 /* set the priority of the internal thread which grab data from the usb device. Win: iValue: 0 => THREAD_PRIORITY_NORMAL; 1 => THREAD_PRIORITY_ABOVE_NORMAL; 2 => THREAD_PRIORITY_HIGHEST; 3 => THREAD_PRIORITY_TIME_CRITICAL; default: 1; see: https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-setthreadpriority @@ -847,7 +844,7 @@ NNCAM_API(HRESULT) Nncam_feed_Pipe(HNncam h, unsigned pipeId); 3: Gain Preferred default value: 1 */ -#define NNCAM_OPTION_FRAMERATE 0x11 /* limit the frame rate, range=[0, 63], the default value 0 means no limit */ +#define NNCAM_OPTION_FRAMERATE 0x11 /* limit the frame rate, the default value 0 means no limit */ #define NNCAM_OPTION_DEMOSAIC 0x12 /* demosaic method for both video and still image: BILINEAR = 0, VNG(Variable Number of Gradients) = 1, PPG(Patterned Pixel Grouping) = 2, AHD(Adaptive Homogeneity Directed) = 3, EA(Edge Aware) = 4, see https://en.wikipedia.org/wiki/Demosaicing, default value: 0 */ #define NNCAM_OPTION_DEMOSAIC_VIDEO 0x13 /* demosaic method for video */ #define NNCAM_OPTION_DEMOSAIC_STILL 0x14 /* demosaic method for still image */ @@ -1007,8 +1004,8 @@ NNCAM_API(HRESULT) Nncam_feed_Pipe(HNncam h, unsigned pipeId); */ #define NNCAM_OPTION_HIGH_FULLWELL 0x55 /* high fullwell capacity: 0 => disable, 1 => enable */ #define NNCAM_OPTION_DYNAMIC_DEFECT 0x56 /* dynamic defect pixel correction: - threshold, t1: (high 16 bits): [10, 100], means: [1.0, 10.0] - value, t2: (low 16 bits): [0, 100], means: [0.00, 1.00] + dead pixel ratio, t1: (high 16 bits): [0, 100], means: [0.0, 1.0] + hot pixel ratio, t2: (low 16 bits): [0, 100], means: [0.0, 1.0] */ #define NNCAM_OPTION_HDR_KB 0x57 /* HDR synthesize K (high 16 bits): [1, 25500] @@ -1021,8 +1018,8 @@ NNCAM_API(HRESULT) Nncam_feed_Pipe(HNncam h, unsigned pipeId); */ #define NNCAM_OPTION_GIGETIMEOUT 0x5a /* For GigE cameras, the application periodically sends heartbeat signals to the camera to keep the connection to the camera alive. If the camera doesn't receive heartbeat signals within the time period specified by the heartbeat timeout counter, the camera resets the connection. - When the application is stopped by the debugger, the application cannot create the heartbeat signals - 0 => auto: when the camera is opened, disable if debugger is present or enable if no debugger is present + When the application is stopped by the debugger, the application cannot send the heartbeat signals + 0 => auto: when the camera is opened, enable if no debugger is present or disable if debugger is present 1 => enable 2 => disable default: auto @@ -1063,6 +1060,9 @@ NNCAM_API(HRESULT) Nncam_feed_Pipe(HNncam h, unsigned pipeId); 21 => twilight 22 => twilight_shifted 23 => turbo + 24 => red + 25 => green + 26 => blue */ #define NNCAM_OPTION_LOW_POWERCONSUMPTION 0x66 /* Low Power Consumption: 0 => disable, 1 => enable */ #define NNCAM_OPTION_FPNC 0x67 /* Fix Pattern Noise Correction @@ -1092,6 +1092,7 @@ NNCAM_API(HRESULT) Nncam_feed_Pipe(HNncam h, unsigned pipeId); n>0: every n millisecond(s) n<0: every -n frame */ +#define NNCAM_OPTION_TECTARGET_RANGE 0x6d /* TEC target range: min(low 16 bits) = (short)(val & 0xffff), max(high 16 bits) = (short)((val >> 16) & 0xffff) */ /* pixel format */ #define NNCAM_PIXELFORMAT_RAW8 0x00 @@ -1137,97 +1138,100 @@ NNCAM_API(HRESULT) Nncam_put_RoiN(HNncam h, unsigned xOffset[], unsigned yOffse NNCAM_API(HRESULT) Nncam_put_XY(HNncam h, int x, int y); -#define NNCAM_IOCONTROLTYPE_GET_SUPPORTEDMODE 0x01 /* 0x01 => Input, 0x02 => Output, (0x01 | 0x02) => support both Input and Output */ -#define NNCAM_IOCONTROLTYPE_GET_GPIODIR 0x03 /* 0x00 => Input, 0x01 => Output */ -#define NNCAM_IOCONTROLTYPE_SET_GPIODIR 0x04 -#define NNCAM_IOCONTROLTYPE_GET_FORMAT 0x05 /* - 0x00 => not connected - 0x01 => Tri-state: Tri-state mode (Not driven) - 0x02 => TTL: TTL level signals - 0x03 => LVDS: LVDS level signals - 0x04 => RS422: RS422 level signals - 0x05 => Opto-coupled - */ -#define NNCAM_IOCONTROLTYPE_SET_FORMAT 0x06 -#define NNCAM_IOCONTROLTYPE_GET_OUTPUTINVERTER 0x07 /* boolean, only support output signal */ -#define NNCAM_IOCONTROLTYPE_SET_OUTPUTINVERTER 0x08 -#define NNCAM_IOCONTROLTYPE_GET_INPUTACTIVATION 0x09 /* 0x00 => Rising edge, 0x01 => Falling edge, 0x02 => Level high, 0x03 => Level low */ -#define NNCAM_IOCONTROLTYPE_SET_INPUTACTIVATION 0x0a -#define NNCAM_IOCONTROLTYPE_GET_DEBOUNCERTIME 0x0b /* debouncer time in microseconds, range: [0, 20000] */ -#define NNCAM_IOCONTROLTYPE_SET_DEBOUNCERTIME 0x0c -#define NNCAM_IOCONTROLTYPE_GET_TRIGGERSOURCE 0x0d /* - 0x00 => Opto-isolated input - 0x01 => GPIO0 - 0x02 => GPIO1 - 0x03 => Counter - 0x04 => PWM - 0x05 => Software - */ -#define NNCAM_IOCONTROLTYPE_SET_TRIGGERSOURCE 0x0e -#define NNCAM_IOCONTROLTYPE_GET_TRIGGERDELAY 0x0f /* Trigger delay time in microseconds, range: [0, 5000000] */ -#define NNCAM_IOCONTROLTYPE_SET_TRIGGERDELAY 0x10 -#define NNCAM_IOCONTROLTYPE_GET_BURSTCOUNTER 0x11 /* Burst Counter, range: [1 ~ 65535] */ -#define NNCAM_IOCONTROLTYPE_SET_BURSTCOUNTER 0x12 -#define NNCAM_IOCONTROLTYPE_GET_COUNTERSOURCE 0x13 /* 0x00 => Opto-isolated input, 0x01 => GPIO0, 0x02 => GPIO1 */ -#define NNCAM_IOCONTROLTYPE_SET_COUNTERSOURCE 0x14 -#define NNCAM_IOCONTROLTYPE_GET_COUNTERVALUE 0x15 /* Counter Value, range: [1 ~ 65535] */ -#define NNCAM_IOCONTROLTYPE_SET_COUNTERVALUE 0x16 -#define NNCAM_IOCONTROLTYPE_SET_RESETCOUNTER 0x18 -#define NNCAM_IOCONTROLTYPE_GET_PWM_FREQ 0x19 -#define NNCAM_IOCONTROLTYPE_SET_PWM_FREQ 0x1a -#define NNCAM_IOCONTROLTYPE_GET_PWM_DUTYRATIO 0x1b -#define NNCAM_IOCONTROLTYPE_SET_PWM_DUTYRATIO 0x1c -#define NNCAM_IOCONTROLTYPE_GET_PWMSOURCE 0x1d /* 0x00 => Opto-isolated input, 0x01 => GPIO0, 0x02 => GPIO1 */ -#define NNCAM_IOCONTROLTYPE_SET_PWMSOURCE 0x1e -#define NNCAM_IOCONTROLTYPE_GET_OUTPUTMODE 0x1f /* - 0x00 => Frame Trigger Wait - 0x01 => Exposure Active - 0x02 => Strobe - 0x03 => User output - 0x04 => Counter Output - 0x05 => Timer Output - */ -#define NNCAM_IOCONTROLTYPE_SET_OUTPUTMODE 0x20 -#define NNCAM_IOCONTROLTYPE_GET_STROBEDELAYMODE 0x21 /* boolean, 0 => pre-delay, 1 => delay; compared to exposure active signal */ -#define NNCAM_IOCONTROLTYPE_SET_STROBEDELAYMODE 0x22 -#define NNCAM_IOCONTROLTYPE_GET_STROBEDELAYTIME 0x23 /* Strobe delay or pre-delay time in microseconds, range: [0, 5000000] */ -#define NNCAM_IOCONTROLTYPE_SET_STROBEDELAYTIME 0x24 -#define NNCAM_IOCONTROLTYPE_GET_STROBEDURATION 0x25 /* Strobe duration time in microseconds, range: [0, 5000000] */ -#define NNCAM_IOCONTROLTYPE_SET_STROBEDURATION 0x26 -#define NNCAM_IOCONTROLTYPE_GET_USERVALUE 0x27 /* - bit0 => Opto-isolated output - bit1 => GPIO0 output - bit2 => GPIO1 output - */ -#define NNCAM_IOCONTROLTYPE_SET_USERVALUE 0x28 -#define NNCAM_IOCONTROLTYPE_GET_UART_ENABLE 0x29 /* enable: 1 => on; 0 => off */ -#define NNCAM_IOCONTROLTYPE_SET_UART_ENABLE 0x2a -#define NNCAM_IOCONTROLTYPE_GET_UART_BAUDRATE 0x2b /* baud rate: 0 => 9600; 1 => 19200; 2 => 38400; 3 => 57600; 4 => 115200 */ -#define NNCAM_IOCONTROLTYPE_SET_UART_BAUDRATE 0x2c -#define NNCAM_IOCONTROLTYPE_GET_UART_LINEMODE 0x2d /* line mode: 0 => TX(GPIO_0)/RX(GPIO_1); 1 => TX(GPIO_1)/RX(GPIO_0) */ -#define NNCAM_IOCONTROLTYPE_SET_UART_LINEMODE 0x2e -#define NNCAM_IOCONTROLTYPE_GET_EXPO_ACTIVE_MODE 0x2f /* exposure time signal: 0 => specified line, 1 => common exposure time */ -#define NNCAM_IOCONTROLTYPE_SET_EXPO_ACTIVE_MODE 0x30 -#define NNCAM_IOCONTROLTYPE_GET_EXPO_START_LINE 0x31 /* exposure start line, default: 0 */ -#define NNCAM_IOCONTROLTYPE_SET_EXPO_START_LINE 0x32 -#define NNCAM_IOCONTROLTYPE_GET_EXPO_END_LINE 0x33 /* exposure end line, default: 0 - end line must be no less than start line - */ -#define NNCAM_IOCONTROLTYPE_SET_EXPO_END_LINE 0x34 -#define NNCAM_IOCONTROLTYPE_GET_EXEVT_ACTIVE_MODE 0x35 /* exposure event: 0 => specified line, 1 => common exposure time */ -#define NNCAM_IOCONTROLTYPE_SET_EXEVT_ACTIVE_MODE 0x36 -#define NNCAM_IOCONTROLTYPE_GET_OUTPUTCOUNTERVALUE 0x37 /* Output Counter Value, range: [0 ~ 65535] */ -#define NNCAM_IOCONTROLTYPE_SET_OUTPUTCOUNTERVALUE 0x38 -#define NNCAM_IOCONTROLTYPE_SET_OUTPUT_PAUSE 0x3a /* Output pause: 1 => puase, 0 => unpause */ -#define NNCAM_IOCONTROLTYPE_GET_INPUT_STATE 0x3c /* Input state: 0 (low level) or 1 (high level) */ -#define NNCAM_IOCONTROLTYPE_GET_USER_PULSE_HIGH 0x3e /* User pulse high level time: us */ -#define NNCAM_IOCONTROLTYPE_SET_USER_PULSE_HIGH 0x3f -#define NNCAM_IOCONTROLTYPE_GET_USER_PULSE_LOW 0x40 /* User pulse low level time: us */ -#define NNCAM_IOCONTROLTYPE_SET_USER_PULSE_LOW 0x41 -#define NNCAM_IOCONTROLTYPE_GET_USER_PULSE_NUMBER 0x42 /* User pulse number: default 0 */ -#define NNCAM_IOCONTROLTYPE_SET_USER_PULSE_NUMBER 0x43 - -#define NNCAM_IOCONTROL_DELAYTIME_MAX (5 * 1000 * 1000) +#define NNCAM_IOCONTROLTYPE_GET_SUPPORTEDMODE 0x01 /* 0x01 => Input, 0x02 => Output, (0x01 | 0x02) => support both Input and Output */ +#define NNCAM_IOCONTROLTYPE_GET_GPIODIR 0x03 /* 0x00 => Input, 0x01 => Output */ +#define NNCAM_IOCONTROLTYPE_SET_GPIODIR 0x04 +#define NNCAM_IOCONTROLTYPE_GET_FORMAT 0x05 /* + 0x00 => not connected + 0x01 => Tri-state: Tri-state mode (Not driven) + 0x02 => TTL: TTL level signals + 0x03 => LVDS: LVDS level signals + 0x04 => RS422: RS422 level signals + 0x05 => Opto-coupled + */ +#define NNCAM_IOCONTROLTYPE_SET_FORMAT 0x06 +#define NNCAM_IOCONTROLTYPE_GET_OUTPUTINVERTER 0x07 /* boolean, only support output signal */ +#define NNCAM_IOCONTROLTYPE_SET_OUTPUTINVERTER 0x08 +#define NNCAM_IOCONTROLTYPE_GET_INPUTACTIVATION 0x09 /* 0x00 => Rising edge, 0x01 => Falling edge, 0x02 => Level high, 0x03 => Level low */ +#define NNCAM_IOCONTROLTYPE_SET_INPUTACTIVATION 0x0a +#define NNCAM_IOCONTROLTYPE_GET_DEBOUNCERTIME 0x0b /* debouncer time in microseconds, range: [0, 20000] */ +#define NNCAM_IOCONTROLTYPE_SET_DEBOUNCERTIME 0x0c +#define NNCAM_IOCONTROLTYPE_GET_TRIGGERSOURCE 0x0d /* + 0x00 => Opto-isolated input + 0x01 => GPIO0 + 0x02 => GPIO1 + 0x03 => Counter + 0x04 => PWM + 0x05 => Software + */ +#define NNCAM_IOCONTROLTYPE_SET_TRIGGERSOURCE 0x0e +#define NNCAM_IOCONTROLTYPE_GET_TRIGGERDELAY 0x0f /* Trigger delay time in microseconds, range: [0, 5000000] */ +#define NNCAM_IOCONTROLTYPE_SET_TRIGGERDELAY 0x10 +#define NNCAM_IOCONTROLTYPE_GET_BURSTCOUNTER 0x11 /* Burst Counter, range: [1 ~ 65535] */ +#define NNCAM_IOCONTROLTYPE_SET_BURSTCOUNTER 0x12 +#define NNCAM_IOCONTROLTYPE_GET_COUNTERSOURCE 0x13 /* 0x00 => Opto-isolated input, 0x01 => GPIO0, 0x02 => GPIO1 */ +#define NNCAM_IOCONTROLTYPE_SET_COUNTERSOURCE 0x14 +#define NNCAM_IOCONTROLTYPE_GET_COUNTERVALUE 0x15 /* Counter Value, range: [1 ~ 65535] */ +#define NNCAM_IOCONTROLTYPE_SET_COUNTERVALUE 0x16 +#define NNCAM_IOCONTROLTYPE_SET_RESETCOUNTER 0x18 +#define NNCAM_IOCONTROLTYPE_GET_PWM_FREQ 0x19 +#define NNCAM_IOCONTROLTYPE_SET_PWM_FREQ 0x1a +#define NNCAM_IOCONTROLTYPE_GET_PWM_DUTYRATIO 0x1b +#define NNCAM_IOCONTROLTYPE_SET_PWM_DUTYRATIO 0x1c +#define NNCAM_IOCONTROLTYPE_GET_PWMSOURCE 0x1d /* 0x00 => Opto-isolated input, 0x01 => GPIO0, 0x02 => GPIO1 */ +#define NNCAM_IOCONTROLTYPE_SET_PWMSOURCE 0x1e +#define NNCAM_IOCONTROLTYPE_GET_OUTPUTMODE 0x1f /* + 0x00 => Frame Trigger Wait + 0x01 => Exposure Active + 0x02 => Strobe + 0x03 => User output + 0x04 => Counter Output + 0x05 => Timer Output + */ +#define NNCAM_IOCONTROLTYPE_SET_OUTPUTMODE 0x20 +#define NNCAM_IOCONTROLTYPE_GET_STROBEDELAYMODE 0x21 /* boolean, 0 => pre-delay, 1 => delay; compared to exposure active signal */ +#define NNCAM_IOCONTROLTYPE_SET_STROBEDELAYMODE 0x22 +#define NNCAM_IOCONTROLTYPE_GET_STROBEDELAYTIME 0x23 /* Strobe delay or pre-delay time in microseconds, range: [0, 5000000] */ +#define NNCAM_IOCONTROLTYPE_SET_STROBEDELAYTIME 0x24 +#define NNCAM_IOCONTROLTYPE_GET_STROBEDURATION 0x25 /* Strobe duration time in microseconds, range: [0, 5000000] */ +#define NNCAM_IOCONTROLTYPE_SET_STROBEDURATION 0x26 +#define NNCAM_IOCONTROLTYPE_GET_USERVALUE 0x27 /* + bit0 => Opto-isolated output + bit1 => GPIO0 output + bit2 => GPIO1 output + */ +#define NNCAM_IOCONTROLTYPE_SET_USERVALUE 0x28 +#define NNCAM_IOCONTROLTYPE_GET_UART_ENABLE 0x29 /* enable: 1 => on; 0 => off */ +#define NNCAM_IOCONTROLTYPE_SET_UART_ENABLE 0x2a +#define NNCAM_IOCONTROLTYPE_GET_UART_BAUDRATE 0x2b /* baud rate: 0 => 9600; 1 => 19200; 2 => 38400; 3 => 57600; 4 => 115200 */ +#define NNCAM_IOCONTROLTYPE_SET_UART_BAUDRATE 0x2c +#define NNCAM_IOCONTROLTYPE_GET_UART_LINEMODE 0x2d /* line mode: 0 => TX(GPIO_0)/RX(GPIO_1); 1 => TX(GPIO_1)/RX(GPIO_0) */ +#define NNCAM_IOCONTROLTYPE_SET_UART_LINEMODE 0x2e +#define NNCAM_IOCONTROLTYPE_GET_EXPO_ACTIVE_MODE 0x2f /* exposure time signal: 0 => specified line, 1 => common exposure time */ +#define NNCAM_IOCONTROLTYPE_SET_EXPO_ACTIVE_MODE 0x30 +#define NNCAM_IOCONTROLTYPE_GET_EXPO_START_LINE 0x31 /* exposure start line, default: 0 */ +#define NNCAM_IOCONTROLTYPE_SET_EXPO_START_LINE 0x32 +#define NNCAM_IOCONTROLTYPE_GET_EXPO_END_LINE 0x33 /* exposure end line, default: 0 + end line must be no less than start line + */ +#define NNCAM_IOCONTROLTYPE_SET_EXPO_END_LINE 0x34 +#define NNCAM_IOCONTROLTYPE_GET_EXEVT_ACTIVE_MODE 0x35 /* exposure event: 0 => specified line, 1 => common exposure time */ +#define NNCAM_IOCONTROLTYPE_SET_EXEVT_ACTIVE_MODE 0x36 +#define NNCAM_IOCONTROLTYPE_GET_OUTPUTCOUNTERVALUE 0x37 /* Output Counter Value, range: [0 ~ 65535] */ +#define NNCAM_IOCONTROLTYPE_SET_OUTPUTCOUNTERVALUE 0x38 +#define NNCAM_IOCONTROLTYPE_SET_OUTPUT_PAUSE 0x3a /* Output pause: 1 => puase, 0 => unpause */ +#define NNCAM_IOCONTROLTYPE_GET_INPUT_STATE 0x3b /* Input state: 0 (low level) or 1 (high level) */ +#define NNCAM_IOCONTROLTYPE_GET_USER_PULSE_HIGH 0x3d /* User pulse high level time: us */ +#define NNCAM_IOCONTROLTYPE_SET_USER_PULSE_HIGH 0x3e +#define NNCAM_IOCONTROLTYPE_GET_USER_PULSE_LOW 0x3f /* User pulse low level time: us */ +#define NNCAM_IOCONTROLTYPE_SET_USER_PULSE_LOW 0x40 +#define NNCAM_IOCONTROLTYPE_GET_USER_PULSE_NUMBER 0x41 /* User pulse number: default 0 */ +#define NNCAM_IOCONTROLTYPE_SET_USER_PULSE_NUMBER 0x42 +#define NNCAM_IOCONTROLTYPE_GET_EXTERNAL_TRIGGER_NUMBER 0x43 /* External trigger number */ +#define NNCAM_IOCONTROLTYPE_GET_DEBOUNCER_TRIGGER_NUMBER 0x45 /* Trigger signal number after debounce */ +#define NNCAM_IOCONTROLTYPE_GET_EFFECTIVE_TRIGGER_NUMBER 0x47 /* Effective trigger signal number */ + +#define NNCAM_IOCONTROL_DELAYTIME_MAX (5 * 1000 * 1000) /* ioLineNumber: diff --git a/libnncam/x64/libnncam.bin b/libnncam/x64/libnncam.bin index 080b9adeb..82fa4ff03 100644 Binary files a/libnncam/x64/libnncam.bin and b/libnncam/x64/libnncam.bin differ diff --git a/libogmacam/CMakeLists.txt b/libogmacam/CMakeLists.txt index 18c5c960f..beab414a7 100644 --- a/libogmacam/CMakeLists.txt +++ b/libogmacam/CMakeLists.txt @@ -1,8 +1,8 @@ cmake_minimum_required(VERSION 3.16) project (libogmacam) -set (LIBOGMACAM_VERSION "55.25633") -set (LIBOGMACAM_SOVERSION "55") +set (LIBOGMACAM_VERSION "56.26054") +set (LIBOGMACAM_SOVERSION "56") list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules/") list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../cmake_modules/") diff --git a/libogmacam/arm64/libogmacam.bin b/libogmacam/arm64/libogmacam.bin index 4c4b2dcf3..d04e28f56 100644 Binary files a/libogmacam/arm64/libogmacam.bin and b/libogmacam/arm64/libogmacam.bin differ diff --git a/libogmacam/armhf/libogmacam.bin b/libogmacam/armhf/libogmacam.bin index 509b73eb0..1da330d57 100644 Binary files a/libogmacam/armhf/libogmacam.bin and b/libogmacam/armhf/libogmacam.bin differ diff --git a/libogmacam/mac/libogmacam.bin b/libogmacam/mac/libogmacam.bin index b95840edf..bf4c2eaae 100644 Binary files a/libogmacam/mac/libogmacam.bin and b/libogmacam/mac/libogmacam.bin differ diff --git a/libogmacam/ogmacam.h b/libogmacam/ogmacam.h index 24557d6ae..3bf6bfde8 100644 --- a/libogmacam/ogmacam.h +++ b/libogmacam/ogmacam.h @@ -1,7 +1,7 @@ #ifndef __ogmacam_h__ #define __ogmacam_h__ -/* Version: 55.25633.20240519 */ +/* Version: 56.26054.20240715 */ /* Platform & Architecture: (1) Win32: @@ -92,21 +92,21 @@ extern "C" { /* */ /********************************************************************************/ #if defined(OGMACAM_HRESULT_ERRORCODE_NEEDED) -#define S_OK 0x00000000 /* Success */ -#define S_FALSE 0x00000001 /* Yet another success */ -#define E_UNEXPECTED 0x8000ffff /* Catastrophic failure */ -#define E_NOTIMPL 0x80004001 /* Not supported or not implemented */ -#define E_NOINTERFACE 0x80004002 -#define E_ACCESSDENIED 0x80070005 /* Permission denied */ -#define E_OUTOFMEMORY 0x8007000e /* Out of memory */ -#define E_INVALIDARG 0x80070057 /* One or more arguments are not valid */ -#define E_POINTER 0x80004003 /* Pointer that is not valid */ -#define E_FAIL 0x80004005 /* Generic failure */ -#define E_WRONG_THREAD 0x8001010e /* Call function in the wrong thread */ -#define E_GEN_FAILURE 0x8007001f /* Device not functioning */ -#define E_BUSY 0x800700aa /* The requested resource is in use */ -#define E_PENDING 0x8000000a /* The data necessary to complete this operation is not yet available */ -#define E_TIMEOUT 0x8001011f /* This operation returned because the timeout period expired */ +#define S_OK (HRESULT)(0x00000000) /* Success */ +#define S_FALSE (HRESULT)(0x00000001) /* Yet another success */ +#define E_UNEXPECTED (HRESULT)(0x8000ffff) /* Catastrophic failure */ +#define E_NOTIMPL (HRESULT)(0x80004001) /* Not supported or not implemented */ +#define E_NOINTERFACE (HRESULT)(0x80004002) +#define E_ACCESSDENIED (HRESULT)(0x80070005) /* Permission denied */ +#define E_OUTOFMEMORY (HRESULT)(0x8007000e) /* Out of memory */ +#define E_INVALIDARG (HRESULT)(0x80070057) /* One or more arguments are not valid */ +#define E_POINTER (HRESULT)(0x80004003) /* Pointer that is not valid */ +#define E_FAIL (HRESULT)(0x80004005) /* Generic failure */ +#define E_WRONG_THREAD (HRESULT)(0x8001010e) /* Call function in the wrong thread */ +#define E_GEN_FAILURE (HRESULT)(0x8007001f) /* Device not functioning */ +#define E_BUSY (HRESULT)(0x800700aa) /* The requested resource is in use */ +#define E_PENDING (HRESULT)(0x8000000a) /* The data necessary to complete this operation is not yet available */ +#define E_TIMEOUT (HRESULT)(0x8001011f) /* This operation returned because the timeout period expired */ #endif /* handle */ @@ -229,9 +229,6 @@ typedef struct Ogmacam_t { int unused; } *HOgmacam; #define OGMACAM_DENOISE_DEF 0 /* denoise */ #define OGMACAM_DENOISE_MIN 0 /* denoise */ #define OGMACAM_DENOISE_MAX 100 /* denoise */ -#define OGMACAM_TEC_TARGET_MIN (-500) /* TEC target: -50.0 degrees Celsius */ -#define OGMACAM_TEC_TARGET_DEF 100 /* 10.0 degrees Celsius */ -#define OGMACAM_TEC_TARGET_MAX 400 /* TEC target: 40.0 degrees Celsius */ #define OGMACAM_HEARTBEAT_MIN 100 /* millisecond */ #define OGMACAM_HEARTBEAT_MAX 10000 /* millisecond */ #define OGMACAM_AE_PERCENT_MIN 0 /* auto exposure percent; 0 or 100 => full roi average, means "disabled" */ @@ -239,12 +236,12 @@ typedef struct Ogmacam_t { int unused; } *HOgmacam; #define OGMACAM_AE_PERCENT_DEF 10 /* auto exposure percent: enabled, percentage = 10% */ #define OGMACAM_NOPACKET_TIMEOUT_MIN 500 /* no packet timeout minimum: 500ms */ #define OGMACAM_NOFRAME_TIMEOUT_MIN 500 /* no frame timeout minimum: 500ms */ -#define OGMACAM_DYNAMIC_DEFECT_T1_MIN 10 /* dynamic defect pixel correction, threshold, means: 1.0 */ -#define OGMACAM_DYNAMIC_DEFECT_T1_MAX 100 /* means: 10.0 */ -#define OGMACAM_DYNAMIC_DEFECT_T1_DEF 13 /* means: 1.3 */ -#define OGMACAM_DYNAMIC_DEFECT_T2_MIN 0 /* dynamic defect pixel correction, value, means: 0.00 */ -#define OGMACAM_DYNAMIC_DEFECT_T2_MAX 100 /* means: 1.00 */ -#define OGMACAM_DYNAMIC_DEFECT_T2_DEF 100 +#define OGMACAM_DYNAMIC_DEFECT_T1_MIN 0 /* dynamic defect pixel correction, dead pixel ratio: the smaller the dead ratio is, the more stringent the conditions for processing dead pixels are, and fewer pixels will be processed */ +#define OGMACAM_DYNAMIC_DEFECT_T1_MAX 100 /* means: 1.0 */ +#define OGMACAM_DYNAMIC_DEFECT_T1_DEF 90 /* means: 0.9 */ +#define OGMACAM_DYNAMIC_DEFECT_T2_MIN 0 /* dynamic defect pixel correction, hot pixel ratio: the smaller the hot ratio is, the more stringent the conditions for processing hot pixels are, and fewer pixels will be processed */ +#define OGMACAM_DYNAMIC_DEFECT_T2_MAX 100 +#define OGMACAM_DYNAMIC_DEFECT_T2_DEF 90 #define OGMACAM_HDR_K_MIN 1 /* HDR synthesize */ #define OGMACAM_HDR_K_MAX 25500 #define OGMACAM_HDR_B_MIN 0 @@ -289,7 +286,7 @@ typedef struct { } OgmacamDeviceV2; /* device instance for enumerating */ /* - get the version of this dll/so/dylib, which is: 55.25633.20240519 + get the version of this dll/so/dylib, which is: 56.26054.20240715 */ #if defined(_WIN32) OGMACAM_API(const wchar_t*) Ogmacam_Version(); @@ -821,7 +818,7 @@ OGMACAM_API(HRESULT) Ogmacam_read_EEPROM(HOgmacam h, unsigned addr, unsigned ch OGMACAM_API(HRESULT) Ogmacam_read_Pipe(HOgmacam h, unsigned pipeId, void* pBuffer, unsigned nBufferLen); OGMACAM_API(HRESULT) Ogmacam_write_Pipe(HOgmacam h, unsigned pipeId, const void* pBuffer, unsigned nBufferLen); OGMACAM_API(HRESULT) Ogmacam_feed_Pipe(HOgmacam h, unsigned pipeId); - + #define OGMACAM_OPTION_NOFRAME_TIMEOUT 0x01 /* no frame timeout: 0 => disable, positive value (>= OGMACAM_NOFRAME_TIMEOUT_MIN) => timeout milliseconds. default: disable */ #define OGMACAM_OPTION_THREAD_PRIORITY 0x02 /* set the priority of the internal thread which grab data from the usb device. Win: iValue: 0 => THREAD_PRIORITY_NORMAL; 1 => THREAD_PRIORITY_ABOVE_NORMAL; 2 => THREAD_PRIORITY_HIGHEST; 3 => THREAD_PRIORITY_TIME_CRITICAL; default: 1; see: https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-setthreadpriority @@ -847,7 +844,7 @@ OGMACAM_API(HRESULT) Ogmacam_feed_Pipe(HOgmacam h, unsigned pipeId); 3: Gain Preferred default value: 1 */ -#define OGMACAM_OPTION_FRAMERATE 0x11 /* limit the frame rate, range=[0, 63], the default value 0 means no limit */ +#define OGMACAM_OPTION_FRAMERATE 0x11 /* limit the frame rate, the default value 0 means no limit */ #define OGMACAM_OPTION_DEMOSAIC 0x12 /* demosaic method for both video and still image: BILINEAR = 0, VNG(Variable Number of Gradients) = 1, PPG(Patterned Pixel Grouping) = 2, AHD(Adaptive Homogeneity Directed) = 3, EA(Edge Aware) = 4, see https://en.wikipedia.org/wiki/Demosaicing, default value: 0 */ #define OGMACAM_OPTION_DEMOSAIC_VIDEO 0x13 /* demosaic method for video */ #define OGMACAM_OPTION_DEMOSAIC_STILL 0x14 /* demosaic method for still image */ @@ -1007,8 +1004,8 @@ OGMACAM_API(HRESULT) Ogmacam_feed_Pipe(HOgmacam h, unsigned pipeId); */ #define OGMACAM_OPTION_HIGH_FULLWELL 0x55 /* high fullwell capacity: 0 => disable, 1 => enable */ #define OGMACAM_OPTION_DYNAMIC_DEFECT 0x56 /* dynamic defect pixel correction: - threshold, t1: (high 16 bits): [10, 100], means: [1.0, 10.0] - value, t2: (low 16 bits): [0, 100], means: [0.00, 1.00] + dead pixel ratio, t1: (high 16 bits): [0, 100], means: [0.0, 1.0] + hot pixel ratio, t2: (low 16 bits): [0, 100], means: [0.0, 1.0] */ #define OGMACAM_OPTION_HDR_KB 0x57 /* HDR synthesize K (high 16 bits): [1, 25500] @@ -1021,8 +1018,8 @@ OGMACAM_API(HRESULT) Ogmacam_feed_Pipe(HOgmacam h, unsigned pipeId); */ #define OGMACAM_OPTION_GIGETIMEOUT 0x5a /* For GigE cameras, the application periodically sends heartbeat signals to the camera to keep the connection to the camera alive. If the camera doesn't receive heartbeat signals within the time period specified by the heartbeat timeout counter, the camera resets the connection. - When the application is stopped by the debugger, the application cannot create the heartbeat signals - 0 => auto: when the camera is opened, disable if debugger is present or enable if no debugger is present + When the application is stopped by the debugger, the application cannot send the heartbeat signals + 0 => auto: when the camera is opened, enable if no debugger is present or disable if debugger is present 1 => enable 2 => disable default: auto @@ -1063,6 +1060,9 @@ OGMACAM_API(HRESULT) Ogmacam_feed_Pipe(HOgmacam h, unsigned pipeId); 21 => twilight 22 => twilight_shifted 23 => turbo + 24 => red + 25 => green + 26 => blue */ #define OGMACAM_OPTION_LOW_POWERCONSUMPTION 0x66 /* Low Power Consumption: 0 => disable, 1 => enable */ #define OGMACAM_OPTION_FPNC 0x67 /* Fix Pattern Noise Correction @@ -1092,6 +1092,7 @@ OGMACAM_API(HRESULT) Ogmacam_feed_Pipe(HOgmacam h, unsigned pipeId); n>0: every n millisecond(s) n<0: every -n frame */ +#define OGMACAM_OPTION_TECTARGET_RANGE 0x6d /* TEC target range: min(low 16 bits) = (short)(val & 0xffff), max(high 16 bits) = (short)((val >> 16) & 0xffff) */ /* pixel format */ #define OGMACAM_PIXELFORMAT_RAW8 0x00 @@ -1137,97 +1138,100 @@ OGMACAM_API(HRESULT) Ogmacam_put_RoiN(HOgmacam h, unsigned xOffset[], unsigned OGMACAM_API(HRESULT) Ogmacam_put_XY(HOgmacam h, int x, int y); -#define OGMACAM_IOCONTROLTYPE_GET_SUPPORTEDMODE 0x01 /* 0x01 => Input, 0x02 => Output, (0x01 | 0x02) => support both Input and Output */ -#define OGMACAM_IOCONTROLTYPE_GET_GPIODIR 0x03 /* 0x00 => Input, 0x01 => Output */ -#define OGMACAM_IOCONTROLTYPE_SET_GPIODIR 0x04 -#define OGMACAM_IOCONTROLTYPE_GET_FORMAT 0x05 /* - 0x00 => not connected - 0x01 => Tri-state: Tri-state mode (Not driven) - 0x02 => TTL: TTL level signals - 0x03 => LVDS: LVDS level signals - 0x04 => RS422: RS422 level signals - 0x05 => Opto-coupled - */ -#define OGMACAM_IOCONTROLTYPE_SET_FORMAT 0x06 -#define OGMACAM_IOCONTROLTYPE_GET_OUTPUTINVERTER 0x07 /* boolean, only support output signal */ -#define OGMACAM_IOCONTROLTYPE_SET_OUTPUTINVERTER 0x08 -#define OGMACAM_IOCONTROLTYPE_GET_INPUTACTIVATION 0x09 /* 0x00 => Rising edge, 0x01 => Falling edge, 0x02 => Level high, 0x03 => Level low */ -#define OGMACAM_IOCONTROLTYPE_SET_INPUTACTIVATION 0x0a -#define OGMACAM_IOCONTROLTYPE_GET_DEBOUNCERTIME 0x0b /* debouncer time in microseconds, range: [0, 20000] */ -#define OGMACAM_IOCONTROLTYPE_SET_DEBOUNCERTIME 0x0c -#define OGMACAM_IOCONTROLTYPE_GET_TRIGGERSOURCE 0x0d /* - 0x00 => Opto-isolated input - 0x01 => GPIO0 - 0x02 => GPIO1 - 0x03 => Counter - 0x04 => PWM - 0x05 => Software - */ -#define OGMACAM_IOCONTROLTYPE_SET_TRIGGERSOURCE 0x0e -#define OGMACAM_IOCONTROLTYPE_GET_TRIGGERDELAY 0x0f /* Trigger delay time in microseconds, range: [0, 5000000] */ -#define OGMACAM_IOCONTROLTYPE_SET_TRIGGERDELAY 0x10 -#define OGMACAM_IOCONTROLTYPE_GET_BURSTCOUNTER 0x11 /* Burst Counter, range: [1 ~ 65535] */ -#define OGMACAM_IOCONTROLTYPE_SET_BURSTCOUNTER 0x12 -#define OGMACAM_IOCONTROLTYPE_GET_COUNTERSOURCE 0x13 /* 0x00 => Opto-isolated input, 0x01 => GPIO0, 0x02 => GPIO1 */ -#define OGMACAM_IOCONTROLTYPE_SET_COUNTERSOURCE 0x14 -#define OGMACAM_IOCONTROLTYPE_GET_COUNTERVALUE 0x15 /* Counter Value, range: [1 ~ 65535] */ -#define OGMACAM_IOCONTROLTYPE_SET_COUNTERVALUE 0x16 -#define OGMACAM_IOCONTROLTYPE_SET_RESETCOUNTER 0x18 -#define OGMACAM_IOCONTROLTYPE_GET_PWM_FREQ 0x19 -#define OGMACAM_IOCONTROLTYPE_SET_PWM_FREQ 0x1a -#define OGMACAM_IOCONTROLTYPE_GET_PWM_DUTYRATIO 0x1b -#define OGMACAM_IOCONTROLTYPE_SET_PWM_DUTYRATIO 0x1c -#define OGMACAM_IOCONTROLTYPE_GET_PWMSOURCE 0x1d /* 0x00 => Opto-isolated input, 0x01 => GPIO0, 0x02 => GPIO1 */ -#define OGMACAM_IOCONTROLTYPE_SET_PWMSOURCE 0x1e -#define OGMACAM_IOCONTROLTYPE_GET_OUTPUTMODE 0x1f /* - 0x00 => Frame Trigger Wait - 0x01 => Exposure Active - 0x02 => Strobe - 0x03 => User output - 0x04 => Counter Output - 0x05 => Timer Output - */ -#define OGMACAM_IOCONTROLTYPE_SET_OUTPUTMODE 0x20 -#define OGMACAM_IOCONTROLTYPE_GET_STROBEDELAYMODE 0x21 /* boolean, 0 => pre-delay, 1 => delay; compared to exposure active signal */ -#define OGMACAM_IOCONTROLTYPE_SET_STROBEDELAYMODE 0x22 -#define OGMACAM_IOCONTROLTYPE_GET_STROBEDELAYTIME 0x23 /* Strobe delay or pre-delay time in microseconds, range: [0, 5000000] */ -#define OGMACAM_IOCONTROLTYPE_SET_STROBEDELAYTIME 0x24 -#define OGMACAM_IOCONTROLTYPE_GET_STROBEDURATION 0x25 /* Strobe duration time in microseconds, range: [0, 5000000] */ -#define OGMACAM_IOCONTROLTYPE_SET_STROBEDURATION 0x26 -#define OGMACAM_IOCONTROLTYPE_GET_USERVALUE 0x27 /* - bit0 => Opto-isolated output - bit1 => GPIO0 output - bit2 => GPIO1 output - */ -#define OGMACAM_IOCONTROLTYPE_SET_USERVALUE 0x28 -#define OGMACAM_IOCONTROLTYPE_GET_UART_ENABLE 0x29 /* enable: 1 => on; 0 => off */ -#define OGMACAM_IOCONTROLTYPE_SET_UART_ENABLE 0x2a -#define OGMACAM_IOCONTROLTYPE_GET_UART_BAUDRATE 0x2b /* baud rate: 0 => 9600; 1 => 19200; 2 => 38400; 3 => 57600; 4 => 115200 */ -#define OGMACAM_IOCONTROLTYPE_SET_UART_BAUDRATE 0x2c -#define OGMACAM_IOCONTROLTYPE_GET_UART_LINEMODE 0x2d /* line mode: 0 => TX(GPIO_0)/RX(GPIO_1); 1 => TX(GPIO_1)/RX(GPIO_0) */ -#define OGMACAM_IOCONTROLTYPE_SET_UART_LINEMODE 0x2e -#define OGMACAM_IOCONTROLTYPE_GET_EXPO_ACTIVE_MODE 0x2f /* exposure time signal: 0 => specified line, 1 => common exposure time */ -#define OGMACAM_IOCONTROLTYPE_SET_EXPO_ACTIVE_MODE 0x30 -#define OGMACAM_IOCONTROLTYPE_GET_EXPO_START_LINE 0x31 /* exposure start line, default: 0 */ -#define OGMACAM_IOCONTROLTYPE_SET_EXPO_START_LINE 0x32 -#define OGMACAM_IOCONTROLTYPE_GET_EXPO_END_LINE 0x33 /* exposure end line, default: 0 - end line must be no less than start line - */ -#define OGMACAM_IOCONTROLTYPE_SET_EXPO_END_LINE 0x34 -#define OGMACAM_IOCONTROLTYPE_GET_EXEVT_ACTIVE_MODE 0x35 /* exposure event: 0 => specified line, 1 => common exposure time */ -#define OGMACAM_IOCONTROLTYPE_SET_EXEVT_ACTIVE_MODE 0x36 -#define OGMACAM_IOCONTROLTYPE_GET_OUTPUTCOUNTERVALUE 0x37 /* Output Counter Value, range: [0 ~ 65535] */ -#define OGMACAM_IOCONTROLTYPE_SET_OUTPUTCOUNTERVALUE 0x38 -#define OGMACAM_IOCONTROLTYPE_SET_OUTPUT_PAUSE 0x3a /* Output pause: 1 => puase, 0 => unpause */ -#define OGMACAM_IOCONTROLTYPE_GET_INPUT_STATE 0x3c /* Input state: 0 (low level) or 1 (high level) */ -#define OGMACAM_IOCONTROLTYPE_GET_USER_PULSE_HIGH 0x3e /* User pulse high level time: us */ -#define OGMACAM_IOCONTROLTYPE_SET_USER_PULSE_HIGH 0x3f -#define OGMACAM_IOCONTROLTYPE_GET_USER_PULSE_LOW 0x40 /* User pulse low level time: us */ -#define OGMACAM_IOCONTROLTYPE_SET_USER_PULSE_LOW 0x41 -#define OGMACAM_IOCONTROLTYPE_GET_USER_PULSE_NUMBER 0x42 /* User pulse number: default 0 */ -#define OGMACAM_IOCONTROLTYPE_SET_USER_PULSE_NUMBER 0x43 - -#define OGMACAM_IOCONTROL_DELAYTIME_MAX (5 * 1000 * 1000) +#define OGMACAM_IOCONTROLTYPE_GET_SUPPORTEDMODE 0x01 /* 0x01 => Input, 0x02 => Output, (0x01 | 0x02) => support both Input and Output */ +#define OGMACAM_IOCONTROLTYPE_GET_GPIODIR 0x03 /* 0x00 => Input, 0x01 => Output */ +#define OGMACAM_IOCONTROLTYPE_SET_GPIODIR 0x04 +#define OGMACAM_IOCONTROLTYPE_GET_FORMAT 0x05 /* + 0x00 => not connected + 0x01 => Tri-state: Tri-state mode (Not driven) + 0x02 => TTL: TTL level signals + 0x03 => LVDS: LVDS level signals + 0x04 => RS422: RS422 level signals + 0x05 => Opto-coupled + */ +#define OGMACAM_IOCONTROLTYPE_SET_FORMAT 0x06 +#define OGMACAM_IOCONTROLTYPE_GET_OUTPUTINVERTER 0x07 /* boolean, only support output signal */ +#define OGMACAM_IOCONTROLTYPE_SET_OUTPUTINVERTER 0x08 +#define OGMACAM_IOCONTROLTYPE_GET_INPUTACTIVATION 0x09 /* 0x00 => Rising edge, 0x01 => Falling edge, 0x02 => Level high, 0x03 => Level low */ +#define OGMACAM_IOCONTROLTYPE_SET_INPUTACTIVATION 0x0a +#define OGMACAM_IOCONTROLTYPE_GET_DEBOUNCERTIME 0x0b /* debouncer time in microseconds, range: [0, 20000] */ +#define OGMACAM_IOCONTROLTYPE_SET_DEBOUNCERTIME 0x0c +#define OGMACAM_IOCONTROLTYPE_GET_TRIGGERSOURCE 0x0d /* + 0x00 => Opto-isolated input + 0x01 => GPIO0 + 0x02 => GPIO1 + 0x03 => Counter + 0x04 => PWM + 0x05 => Software + */ +#define OGMACAM_IOCONTROLTYPE_SET_TRIGGERSOURCE 0x0e +#define OGMACAM_IOCONTROLTYPE_GET_TRIGGERDELAY 0x0f /* Trigger delay time in microseconds, range: [0, 5000000] */ +#define OGMACAM_IOCONTROLTYPE_SET_TRIGGERDELAY 0x10 +#define OGMACAM_IOCONTROLTYPE_GET_BURSTCOUNTER 0x11 /* Burst Counter, range: [1 ~ 65535] */ +#define OGMACAM_IOCONTROLTYPE_SET_BURSTCOUNTER 0x12 +#define OGMACAM_IOCONTROLTYPE_GET_COUNTERSOURCE 0x13 /* 0x00 => Opto-isolated input, 0x01 => GPIO0, 0x02 => GPIO1 */ +#define OGMACAM_IOCONTROLTYPE_SET_COUNTERSOURCE 0x14 +#define OGMACAM_IOCONTROLTYPE_GET_COUNTERVALUE 0x15 /* Counter Value, range: [1 ~ 65535] */ +#define OGMACAM_IOCONTROLTYPE_SET_COUNTERVALUE 0x16 +#define OGMACAM_IOCONTROLTYPE_SET_RESETCOUNTER 0x18 +#define OGMACAM_IOCONTROLTYPE_GET_PWM_FREQ 0x19 +#define OGMACAM_IOCONTROLTYPE_SET_PWM_FREQ 0x1a +#define OGMACAM_IOCONTROLTYPE_GET_PWM_DUTYRATIO 0x1b +#define OGMACAM_IOCONTROLTYPE_SET_PWM_DUTYRATIO 0x1c +#define OGMACAM_IOCONTROLTYPE_GET_PWMSOURCE 0x1d /* 0x00 => Opto-isolated input, 0x01 => GPIO0, 0x02 => GPIO1 */ +#define OGMACAM_IOCONTROLTYPE_SET_PWMSOURCE 0x1e +#define OGMACAM_IOCONTROLTYPE_GET_OUTPUTMODE 0x1f /* + 0x00 => Frame Trigger Wait + 0x01 => Exposure Active + 0x02 => Strobe + 0x03 => User output + 0x04 => Counter Output + 0x05 => Timer Output + */ +#define OGMACAM_IOCONTROLTYPE_SET_OUTPUTMODE 0x20 +#define OGMACAM_IOCONTROLTYPE_GET_STROBEDELAYMODE 0x21 /* boolean, 0 => pre-delay, 1 => delay; compared to exposure active signal */ +#define OGMACAM_IOCONTROLTYPE_SET_STROBEDELAYMODE 0x22 +#define OGMACAM_IOCONTROLTYPE_GET_STROBEDELAYTIME 0x23 /* Strobe delay or pre-delay time in microseconds, range: [0, 5000000] */ +#define OGMACAM_IOCONTROLTYPE_SET_STROBEDELAYTIME 0x24 +#define OGMACAM_IOCONTROLTYPE_GET_STROBEDURATION 0x25 /* Strobe duration time in microseconds, range: [0, 5000000] */ +#define OGMACAM_IOCONTROLTYPE_SET_STROBEDURATION 0x26 +#define OGMACAM_IOCONTROLTYPE_GET_USERVALUE 0x27 /* + bit0 => Opto-isolated output + bit1 => GPIO0 output + bit2 => GPIO1 output + */ +#define OGMACAM_IOCONTROLTYPE_SET_USERVALUE 0x28 +#define OGMACAM_IOCONTROLTYPE_GET_UART_ENABLE 0x29 /* enable: 1 => on; 0 => off */ +#define OGMACAM_IOCONTROLTYPE_SET_UART_ENABLE 0x2a +#define OGMACAM_IOCONTROLTYPE_GET_UART_BAUDRATE 0x2b /* baud rate: 0 => 9600; 1 => 19200; 2 => 38400; 3 => 57600; 4 => 115200 */ +#define OGMACAM_IOCONTROLTYPE_SET_UART_BAUDRATE 0x2c +#define OGMACAM_IOCONTROLTYPE_GET_UART_LINEMODE 0x2d /* line mode: 0 => TX(GPIO_0)/RX(GPIO_1); 1 => TX(GPIO_1)/RX(GPIO_0) */ +#define OGMACAM_IOCONTROLTYPE_SET_UART_LINEMODE 0x2e +#define OGMACAM_IOCONTROLTYPE_GET_EXPO_ACTIVE_MODE 0x2f /* exposure time signal: 0 => specified line, 1 => common exposure time */ +#define OGMACAM_IOCONTROLTYPE_SET_EXPO_ACTIVE_MODE 0x30 +#define OGMACAM_IOCONTROLTYPE_GET_EXPO_START_LINE 0x31 /* exposure start line, default: 0 */ +#define OGMACAM_IOCONTROLTYPE_SET_EXPO_START_LINE 0x32 +#define OGMACAM_IOCONTROLTYPE_GET_EXPO_END_LINE 0x33 /* exposure end line, default: 0 + end line must be no less than start line + */ +#define OGMACAM_IOCONTROLTYPE_SET_EXPO_END_LINE 0x34 +#define OGMACAM_IOCONTROLTYPE_GET_EXEVT_ACTIVE_MODE 0x35 /* exposure event: 0 => specified line, 1 => common exposure time */ +#define OGMACAM_IOCONTROLTYPE_SET_EXEVT_ACTIVE_MODE 0x36 +#define OGMACAM_IOCONTROLTYPE_GET_OUTPUTCOUNTERVALUE 0x37 /* Output Counter Value, range: [0 ~ 65535] */ +#define OGMACAM_IOCONTROLTYPE_SET_OUTPUTCOUNTERVALUE 0x38 +#define OGMACAM_IOCONTROLTYPE_SET_OUTPUT_PAUSE 0x3a /* Output pause: 1 => puase, 0 => unpause */ +#define OGMACAM_IOCONTROLTYPE_GET_INPUT_STATE 0x3b /* Input state: 0 (low level) or 1 (high level) */ +#define OGMACAM_IOCONTROLTYPE_GET_USER_PULSE_HIGH 0x3d /* User pulse high level time: us */ +#define OGMACAM_IOCONTROLTYPE_SET_USER_PULSE_HIGH 0x3e +#define OGMACAM_IOCONTROLTYPE_GET_USER_PULSE_LOW 0x3f /* User pulse low level time: us */ +#define OGMACAM_IOCONTROLTYPE_SET_USER_PULSE_LOW 0x40 +#define OGMACAM_IOCONTROLTYPE_GET_USER_PULSE_NUMBER 0x41 /* User pulse number: default 0 */ +#define OGMACAM_IOCONTROLTYPE_SET_USER_PULSE_NUMBER 0x42 +#define OGMACAM_IOCONTROLTYPE_GET_EXTERNAL_TRIGGER_NUMBER 0x43 /* External trigger number */ +#define OGMACAM_IOCONTROLTYPE_GET_DEBOUNCER_TRIGGER_NUMBER 0x45 /* Trigger signal number after debounce */ +#define OGMACAM_IOCONTROLTYPE_GET_EFFECTIVE_TRIGGER_NUMBER 0x47 /* Effective trigger signal number */ + +#define OGMACAM_IOCONTROL_DELAYTIME_MAX (5 * 1000 * 1000) /* ioLineNumber: diff --git a/libogmacam/x64/libogmacam.bin b/libogmacam/x64/libogmacam.bin index d69a98eac..a667c0f87 100644 Binary files a/libogmacam/x64/libogmacam.bin and b/libogmacam/x64/libogmacam.bin differ diff --git a/libomegonprocam/CMakeLists.txt b/libomegonprocam/CMakeLists.txt index 18d79b4db..7d6431cd3 100644 --- a/libomegonprocam/CMakeLists.txt +++ b/libomegonprocam/CMakeLists.txt @@ -1,8 +1,8 @@ cmake_minimum_required(VERSION 3.16) project (libomegonprocam) -set (LIBOMEGONPROCAM_VERSION "55.25633") -set (LIBOMEGONPROCAM_SOVERSION "55") +set (LIBOMEGONPROCAM_VERSION "56.26054") +set (LIBOMEGONPROCAM_SOVERSION "56") list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules/") list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../cmake_modules/") diff --git a/libomegonprocam/arm64/libomegonprocam.bin b/libomegonprocam/arm64/libomegonprocam.bin index 38b676290..02185f53a 100644 Binary files a/libomegonprocam/arm64/libomegonprocam.bin and b/libomegonprocam/arm64/libomegonprocam.bin differ diff --git a/libomegonprocam/armhf/libomegonprocam.bin b/libomegonprocam/armhf/libomegonprocam.bin index 43e0fd669..0639ba0b5 100644 Binary files a/libomegonprocam/armhf/libomegonprocam.bin and b/libomegonprocam/armhf/libomegonprocam.bin differ diff --git a/libomegonprocam/mac/libomegonprocam.bin b/libomegonprocam/mac/libomegonprocam.bin index 6124e98a3..c183ede98 100644 Binary files a/libomegonprocam/mac/libomegonprocam.bin and b/libomegonprocam/mac/libomegonprocam.bin differ diff --git a/libomegonprocam/omegonprocam.h b/libomegonprocam/omegonprocam.h index 422cd3957..5ff12b61a 100644 --- a/libomegonprocam/omegonprocam.h +++ b/libomegonprocam/omegonprocam.h @@ -1,7 +1,7 @@ #ifndef __omegonprocam_h__ #define __omegonprocam_h__ -/* Version: 55.25633.20240519 */ +/* Version: 56.26054.20240715 */ /* Platform & Architecture: (1) Win32: @@ -92,21 +92,21 @@ extern "C" { /* */ /********************************************************************************/ #if defined(OMEGONPROCAM_HRESULT_ERRORCODE_NEEDED) -#define S_OK 0x00000000 /* Success */ -#define S_FALSE 0x00000001 /* Yet another success */ -#define E_UNEXPECTED 0x8000ffff /* Catastrophic failure */ -#define E_NOTIMPL 0x80004001 /* Not supported or not implemented */ -#define E_NOINTERFACE 0x80004002 -#define E_ACCESSDENIED 0x80070005 /* Permission denied */ -#define E_OUTOFMEMORY 0x8007000e /* Out of memory */ -#define E_INVALIDARG 0x80070057 /* One or more arguments are not valid */ -#define E_POINTER 0x80004003 /* Pointer that is not valid */ -#define E_FAIL 0x80004005 /* Generic failure */ -#define E_WRONG_THREAD 0x8001010e /* Call function in the wrong thread */ -#define E_GEN_FAILURE 0x8007001f /* Device not functioning */ -#define E_BUSY 0x800700aa /* The requested resource is in use */ -#define E_PENDING 0x8000000a /* The data necessary to complete this operation is not yet available */ -#define E_TIMEOUT 0x8001011f /* This operation returned because the timeout period expired */ +#define S_OK (HRESULT)(0x00000000) /* Success */ +#define S_FALSE (HRESULT)(0x00000001) /* Yet another success */ +#define E_UNEXPECTED (HRESULT)(0x8000ffff) /* Catastrophic failure */ +#define E_NOTIMPL (HRESULT)(0x80004001) /* Not supported or not implemented */ +#define E_NOINTERFACE (HRESULT)(0x80004002) +#define E_ACCESSDENIED (HRESULT)(0x80070005) /* Permission denied */ +#define E_OUTOFMEMORY (HRESULT)(0x8007000e) /* Out of memory */ +#define E_INVALIDARG (HRESULT)(0x80070057) /* One or more arguments are not valid */ +#define E_POINTER (HRESULT)(0x80004003) /* Pointer that is not valid */ +#define E_FAIL (HRESULT)(0x80004005) /* Generic failure */ +#define E_WRONG_THREAD (HRESULT)(0x8001010e) /* Call function in the wrong thread */ +#define E_GEN_FAILURE (HRESULT)(0x8007001f) /* Device not functioning */ +#define E_BUSY (HRESULT)(0x800700aa) /* The requested resource is in use */ +#define E_PENDING (HRESULT)(0x8000000a) /* The data necessary to complete this operation is not yet available */ +#define E_TIMEOUT (HRESULT)(0x8001011f) /* This operation returned because the timeout period expired */ #endif /* handle */ @@ -229,9 +229,6 @@ typedef struct Omegonprocam_t { int unused; } *HOmegonprocam; #define OMEGONPROCAM_DENOISE_DEF 0 /* denoise */ #define OMEGONPROCAM_DENOISE_MIN 0 /* denoise */ #define OMEGONPROCAM_DENOISE_MAX 100 /* denoise */ -#define OMEGONPROCAM_TEC_TARGET_MIN (-500) /* TEC target: -50.0 degrees Celsius */ -#define OMEGONPROCAM_TEC_TARGET_DEF 100 /* 10.0 degrees Celsius */ -#define OMEGONPROCAM_TEC_TARGET_MAX 400 /* TEC target: 40.0 degrees Celsius */ #define OMEGONPROCAM_HEARTBEAT_MIN 100 /* millisecond */ #define OMEGONPROCAM_HEARTBEAT_MAX 10000 /* millisecond */ #define OMEGONPROCAM_AE_PERCENT_MIN 0 /* auto exposure percent; 0 or 100 => full roi average, means "disabled" */ @@ -239,12 +236,12 @@ typedef struct Omegonprocam_t { int unused; } *HOmegonprocam; #define OMEGONPROCAM_AE_PERCENT_DEF 10 /* auto exposure percent: enabled, percentage = 10% */ #define OMEGONPROCAM_NOPACKET_TIMEOUT_MIN 500 /* no packet timeout minimum: 500ms */ #define OMEGONPROCAM_NOFRAME_TIMEOUT_MIN 500 /* no frame timeout minimum: 500ms */ -#define OMEGONPROCAM_DYNAMIC_DEFECT_T1_MIN 10 /* dynamic defect pixel correction, threshold, means: 1.0 */ -#define OMEGONPROCAM_DYNAMIC_DEFECT_T1_MAX 100 /* means: 10.0 */ -#define OMEGONPROCAM_DYNAMIC_DEFECT_T1_DEF 13 /* means: 1.3 */ -#define OMEGONPROCAM_DYNAMIC_DEFECT_T2_MIN 0 /* dynamic defect pixel correction, value, means: 0.00 */ -#define OMEGONPROCAM_DYNAMIC_DEFECT_T2_MAX 100 /* means: 1.00 */ -#define OMEGONPROCAM_DYNAMIC_DEFECT_T2_DEF 100 +#define OMEGONPROCAM_DYNAMIC_DEFECT_T1_MIN 0 /* dynamic defect pixel correction, dead pixel ratio: the smaller the dead ratio is, the more stringent the conditions for processing dead pixels are, and fewer pixels will be processed */ +#define OMEGONPROCAM_DYNAMIC_DEFECT_T1_MAX 100 /* means: 1.0 */ +#define OMEGONPROCAM_DYNAMIC_DEFECT_T1_DEF 90 /* means: 0.9 */ +#define OMEGONPROCAM_DYNAMIC_DEFECT_T2_MIN 0 /* dynamic defect pixel correction, hot pixel ratio: the smaller the hot ratio is, the more stringent the conditions for processing hot pixels are, and fewer pixels will be processed */ +#define OMEGONPROCAM_DYNAMIC_DEFECT_T2_MAX 100 +#define OMEGONPROCAM_DYNAMIC_DEFECT_T2_DEF 90 #define OMEGONPROCAM_HDR_K_MIN 1 /* HDR synthesize */ #define OMEGONPROCAM_HDR_K_MAX 25500 #define OMEGONPROCAM_HDR_B_MIN 0 @@ -289,7 +286,7 @@ typedef struct { } OmegonprocamDeviceV2; /* device instance for enumerating */ /* - get the version of this dll/so/dylib, which is: 55.25633.20240519 + get the version of this dll/so/dylib, which is: 56.26054.20240715 */ #if defined(_WIN32) OMEGONPROCAM_API(const wchar_t*) Omegonprocam_Version(); @@ -821,7 +818,7 @@ OMEGONPROCAM_API(HRESULT) Omegonprocam_read_EEPROM(HOmegonprocam h, unsigned ad OMEGONPROCAM_API(HRESULT) Omegonprocam_read_Pipe(HOmegonprocam h, unsigned pipeId, void* pBuffer, unsigned nBufferLen); OMEGONPROCAM_API(HRESULT) Omegonprocam_write_Pipe(HOmegonprocam h, unsigned pipeId, const void* pBuffer, unsigned nBufferLen); OMEGONPROCAM_API(HRESULT) Omegonprocam_feed_Pipe(HOmegonprocam h, unsigned pipeId); - + #define OMEGONPROCAM_OPTION_NOFRAME_TIMEOUT 0x01 /* no frame timeout: 0 => disable, positive value (>= OMEGONPROCAM_NOFRAME_TIMEOUT_MIN) => timeout milliseconds. default: disable */ #define OMEGONPROCAM_OPTION_THREAD_PRIORITY 0x02 /* set the priority of the internal thread which grab data from the usb device. Win: iValue: 0 => THREAD_PRIORITY_NORMAL; 1 => THREAD_PRIORITY_ABOVE_NORMAL; 2 => THREAD_PRIORITY_HIGHEST; 3 => THREAD_PRIORITY_TIME_CRITICAL; default: 1; see: https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-setthreadpriority @@ -847,7 +844,7 @@ OMEGONPROCAM_API(HRESULT) Omegonprocam_feed_Pipe(HOmegonprocam h, unsigned pipe 3: Gain Preferred default value: 1 */ -#define OMEGONPROCAM_OPTION_FRAMERATE 0x11 /* limit the frame rate, range=[0, 63], the default value 0 means no limit */ +#define OMEGONPROCAM_OPTION_FRAMERATE 0x11 /* limit the frame rate, the default value 0 means no limit */ #define OMEGONPROCAM_OPTION_DEMOSAIC 0x12 /* demosaic method for both video and still image: BILINEAR = 0, VNG(Variable Number of Gradients) = 1, PPG(Patterned Pixel Grouping) = 2, AHD(Adaptive Homogeneity Directed) = 3, EA(Edge Aware) = 4, see https://en.wikipedia.org/wiki/Demosaicing, default value: 0 */ #define OMEGONPROCAM_OPTION_DEMOSAIC_VIDEO 0x13 /* demosaic method for video */ #define OMEGONPROCAM_OPTION_DEMOSAIC_STILL 0x14 /* demosaic method for still image */ @@ -1007,8 +1004,8 @@ OMEGONPROCAM_API(HRESULT) Omegonprocam_feed_Pipe(HOmegonprocam h, unsigned pipe */ #define OMEGONPROCAM_OPTION_HIGH_FULLWELL 0x55 /* high fullwell capacity: 0 => disable, 1 => enable */ #define OMEGONPROCAM_OPTION_DYNAMIC_DEFECT 0x56 /* dynamic defect pixel correction: - threshold, t1: (high 16 bits): [10, 100], means: [1.0, 10.0] - value, t2: (low 16 bits): [0, 100], means: [0.00, 1.00] + dead pixel ratio, t1: (high 16 bits): [0, 100], means: [0.0, 1.0] + hot pixel ratio, t2: (low 16 bits): [0, 100], means: [0.0, 1.0] */ #define OMEGONPROCAM_OPTION_HDR_KB 0x57 /* HDR synthesize K (high 16 bits): [1, 25500] @@ -1021,8 +1018,8 @@ OMEGONPROCAM_API(HRESULT) Omegonprocam_feed_Pipe(HOmegonprocam h, unsigned pipe */ #define OMEGONPROCAM_OPTION_GIGETIMEOUT 0x5a /* For GigE cameras, the application periodically sends heartbeat signals to the camera to keep the connection to the camera alive. If the camera doesn't receive heartbeat signals within the time period specified by the heartbeat timeout counter, the camera resets the connection. - When the application is stopped by the debugger, the application cannot create the heartbeat signals - 0 => auto: when the camera is opened, disable if debugger is present or enable if no debugger is present + When the application is stopped by the debugger, the application cannot send the heartbeat signals + 0 => auto: when the camera is opened, enable if no debugger is present or disable if debugger is present 1 => enable 2 => disable default: auto @@ -1063,6 +1060,9 @@ OMEGONPROCAM_API(HRESULT) Omegonprocam_feed_Pipe(HOmegonprocam h, unsigned pipe 21 => twilight 22 => twilight_shifted 23 => turbo + 24 => red + 25 => green + 26 => blue */ #define OMEGONPROCAM_OPTION_LOW_POWERCONSUMPTION 0x66 /* Low Power Consumption: 0 => disable, 1 => enable */ #define OMEGONPROCAM_OPTION_FPNC 0x67 /* Fix Pattern Noise Correction @@ -1092,6 +1092,7 @@ OMEGONPROCAM_API(HRESULT) Omegonprocam_feed_Pipe(HOmegonprocam h, unsigned pipe n>0: every n millisecond(s) n<0: every -n frame */ +#define OMEGONPROCAM_OPTION_TECTARGET_RANGE 0x6d /* TEC target range: min(low 16 bits) = (short)(val & 0xffff), max(high 16 bits) = (short)((val >> 16) & 0xffff) */ /* pixel format */ #define OMEGONPROCAM_PIXELFORMAT_RAW8 0x00 @@ -1137,97 +1138,100 @@ OMEGONPROCAM_API(HRESULT) Omegonprocam_put_RoiN(HOmegonprocam h, unsigned xOffs OMEGONPROCAM_API(HRESULT) Omegonprocam_put_XY(HOmegonprocam h, int x, int y); -#define OMEGONPROCAM_IOCONTROLTYPE_GET_SUPPORTEDMODE 0x01 /* 0x01 => Input, 0x02 => Output, (0x01 | 0x02) => support both Input and Output */ -#define OMEGONPROCAM_IOCONTROLTYPE_GET_GPIODIR 0x03 /* 0x00 => Input, 0x01 => Output */ -#define OMEGONPROCAM_IOCONTROLTYPE_SET_GPIODIR 0x04 -#define OMEGONPROCAM_IOCONTROLTYPE_GET_FORMAT 0x05 /* - 0x00 => not connected - 0x01 => Tri-state: Tri-state mode (Not driven) - 0x02 => TTL: TTL level signals - 0x03 => LVDS: LVDS level signals - 0x04 => RS422: RS422 level signals - 0x05 => Opto-coupled - */ -#define OMEGONPROCAM_IOCONTROLTYPE_SET_FORMAT 0x06 -#define OMEGONPROCAM_IOCONTROLTYPE_GET_OUTPUTINVERTER 0x07 /* boolean, only support output signal */ -#define OMEGONPROCAM_IOCONTROLTYPE_SET_OUTPUTINVERTER 0x08 -#define OMEGONPROCAM_IOCONTROLTYPE_GET_INPUTACTIVATION 0x09 /* 0x00 => Rising edge, 0x01 => Falling edge, 0x02 => Level high, 0x03 => Level low */ -#define OMEGONPROCAM_IOCONTROLTYPE_SET_INPUTACTIVATION 0x0a -#define OMEGONPROCAM_IOCONTROLTYPE_GET_DEBOUNCERTIME 0x0b /* debouncer time in microseconds, range: [0, 20000] */ -#define OMEGONPROCAM_IOCONTROLTYPE_SET_DEBOUNCERTIME 0x0c -#define OMEGONPROCAM_IOCONTROLTYPE_GET_TRIGGERSOURCE 0x0d /* - 0x00 => Opto-isolated input - 0x01 => GPIO0 - 0x02 => GPIO1 - 0x03 => Counter - 0x04 => PWM - 0x05 => Software - */ -#define OMEGONPROCAM_IOCONTROLTYPE_SET_TRIGGERSOURCE 0x0e -#define OMEGONPROCAM_IOCONTROLTYPE_GET_TRIGGERDELAY 0x0f /* Trigger delay time in microseconds, range: [0, 5000000] */ -#define OMEGONPROCAM_IOCONTROLTYPE_SET_TRIGGERDELAY 0x10 -#define OMEGONPROCAM_IOCONTROLTYPE_GET_BURSTCOUNTER 0x11 /* Burst Counter, range: [1 ~ 65535] */ -#define OMEGONPROCAM_IOCONTROLTYPE_SET_BURSTCOUNTER 0x12 -#define OMEGONPROCAM_IOCONTROLTYPE_GET_COUNTERSOURCE 0x13 /* 0x00 => Opto-isolated input, 0x01 => GPIO0, 0x02 => GPIO1 */ -#define OMEGONPROCAM_IOCONTROLTYPE_SET_COUNTERSOURCE 0x14 -#define OMEGONPROCAM_IOCONTROLTYPE_GET_COUNTERVALUE 0x15 /* Counter Value, range: [1 ~ 65535] */ -#define OMEGONPROCAM_IOCONTROLTYPE_SET_COUNTERVALUE 0x16 -#define OMEGONPROCAM_IOCONTROLTYPE_SET_RESETCOUNTER 0x18 -#define OMEGONPROCAM_IOCONTROLTYPE_GET_PWM_FREQ 0x19 -#define OMEGONPROCAM_IOCONTROLTYPE_SET_PWM_FREQ 0x1a -#define OMEGONPROCAM_IOCONTROLTYPE_GET_PWM_DUTYRATIO 0x1b -#define OMEGONPROCAM_IOCONTROLTYPE_SET_PWM_DUTYRATIO 0x1c -#define OMEGONPROCAM_IOCONTROLTYPE_GET_PWMSOURCE 0x1d /* 0x00 => Opto-isolated input, 0x01 => GPIO0, 0x02 => GPIO1 */ -#define OMEGONPROCAM_IOCONTROLTYPE_SET_PWMSOURCE 0x1e -#define OMEGONPROCAM_IOCONTROLTYPE_GET_OUTPUTMODE 0x1f /* - 0x00 => Frame Trigger Wait - 0x01 => Exposure Active - 0x02 => Strobe - 0x03 => User output - 0x04 => Counter Output - 0x05 => Timer Output - */ -#define OMEGONPROCAM_IOCONTROLTYPE_SET_OUTPUTMODE 0x20 -#define OMEGONPROCAM_IOCONTROLTYPE_GET_STROBEDELAYMODE 0x21 /* boolean, 0 => pre-delay, 1 => delay; compared to exposure active signal */ -#define OMEGONPROCAM_IOCONTROLTYPE_SET_STROBEDELAYMODE 0x22 -#define OMEGONPROCAM_IOCONTROLTYPE_GET_STROBEDELAYTIME 0x23 /* Strobe delay or pre-delay time in microseconds, range: [0, 5000000] */ -#define OMEGONPROCAM_IOCONTROLTYPE_SET_STROBEDELAYTIME 0x24 -#define OMEGONPROCAM_IOCONTROLTYPE_GET_STROBEDURATION 0x25 /* Strobe duration time in microseconds, range: [0, 5000000] */ -#define OMEGONPROCAM_IOCONTROLTYPE_SET_STROBEDURATION 0x26 -#define OMEGONPROCAM_IOCONTROLTYPE_GET_USERVALUE 0x27 /* - bit0 => Opto-isolated output - bit1 => GPIO0 output - bit2 => GPIO1 output - */ -#define OMEGONPROCAM_IOCONTROLTYPE_SET_USERVALUE 0x28 -#define OMEGONPROCAM_IOCONTROLTYPE_GET_UART_ENABLE 0x29 /* enable: 1 => on; 0 => off */ -#define OMEGONPROCAM_IOCONTROLTYPE_SET_UART_ENABLE 0x2a -#define OMEGONPROCAM_IOCONTROLTYPE_GET_UART_BAUDRATE 0x2b /* baud rate: 0 => 9600; 1 => 19200; 2 => 38400; 3 => 57600; 4 => 115200 */ -#define OMEGONPROCAM_IOCONTROLTYPE_SET_UART_BAUDRATE 0x2c -#define OMEGONPROCAM_IOCONTROLTYPE_GET_UART_LINEMODE 0x2d /* line mode: 0 => TX(GPIO_0)/RX(GPIO_1); 1 => TX(GPIO_1)/RX(GPIO_0) */ -#define OMEGONPROCAM_IOCONTROLTYPE_SET_UART_LINEMODE 0x2e -#define OMEGONPROCAM_IOCONTROLTYPE_GET_EXPO_ACTIVE_MODE 0x2f /* exposure time signal: 0 => specified line, 1 => common exposure time */ -#define OMEGONPROCAM_IOCONTROLTYPE_SET_EXPO_ACTIVE_MODE 0x30 -#define OMEGONPROCAM_IOCONTROLTYPE_GET_EXPO_START_LINE 0x31 /* exposure start line, default: 0 */ -#define OMEGONPROCAM_IOCONTROLTYPE_SET_EXPO_START_LINE 0x32 -#define OMEGONPROCAM_IOCONTROLTYPE_GET_EXPO_END_LINE 0x33 /* exposure end line, default: 0 - end line must be no less than start line - */ -#define OMEGONPROCAM_IOCONTROLTYPE_SET_EXPO_END_LINE 0x34 -#define OMEGONPROCAM_IOCONTROLTYPE_GET_EXEVT_ACTIVE_MODE 0x35 /* exposure event: 0 => specified line, 1 => common exposure time */ -#define OMEGONPROCAM_IOCONTROLTYPE_SET_EXEVT_ACTIVE_MODE 0x36 -#define OMEGONPROCAM_IOCONTROLTYPE_GET_OUTPUTCOUNTERVALUE 0x37 /* Output Counter Value, range: [0 ~ 65535] */ -#define OMEGONPROCAM_IOCONTROLTYPE_SET_OUTPUTCOUNTERVALUE 0x38 -#define OMEGONPROCAM_IOCONTROLTYPE_SET_OUTPUT_PAUSE 0x3a /* Output pause: 1 => puase, 0 => unpause */ -#define OMEGONPROCAM_IOCONTROLTYPE_GET_INPUT_STATE 0x3c /* Input state: 0 (low level) or 1 (high level) */ -#define OMEGONPROCAM_IOCONTROLTYPE_GET_USER_PULSE_HIGH 0x3e /* User pulse high level time: us */ -#define OMEGONPROCAM_IOCONTROLTYPE_SET_USER_PULSE_HIGH 0x3f -#define OMEGONPROCAM_IOCONTROLTYPE_GET_USER_PULSE_LOW 0x40 /* User pulse low level time: us */ -#define OMEGONPROCAM_IOCONTROLTYPE_SET_USER_PULSE_LOW 0x41 -#define OMEGONPROCAM_IOCONTROLTYPE_GET_USER_PULSE_NUMBER 0x42 /* User pulse number: default 0 */ -#define OMEGONPROCAM_IOCONTROLTYPE_SET_USER_PULSE_NUMBER 0x43 - -#define OMEGONPROCAM_IOCONTROL_DELAYTIME_MAX (5 * 1000 * 1000) +#define OMEGONPROCAM_IOCONTROLTYPE_GET_SUPPORTEDMODE 0x01 /* 0x01 => Input, 0x02 => Output, (0x01 | 0x02) => support both Input and Output */ +#define OMEGONPROCAM_IOCONTROLTYPE_GET_GPIODIR 0x03 /* 0x00 => Input, 0x01 => Output */ +#define OMEGONPROCAM_IOCONTROLTYPE_SET_GPIODIR 0x04 +#define OMEGONPROCAM_IOCONTROLTYPE_GET_FORMAT 0x05 /* + 0x00 => not connected + 0x01 => Tri-state: Tri-state mode (Not driven) + 0x02 => TTL: TTL level signals + 0x03 => LVDS: LVDS level signals + 0x04 => RS422: RS422 level signals + 0x05 => Opto-coupled + */ +#define OMEGONPROCAM_IOCONTROLTYPE_SET_FORMAT 0x06 +#define OMEGONPROCAM_IOCONTROLTYPE_GET_OUTPUTINVERTER 0x07 /* boolean, only support output signal */ +#define OMEGONPROCAM_IOCONTROLTYPE_SET_OUTPUTINVERTER 0x08 +#define OMEGONPROCAM_IOCONTROLTYPE_GET_INPUTACTIVATION 0x09 /* 0x00 => Rising edge, 0x01 => Falling edge, 0x02 => Level high, 0x03 => Level low */ +#define OMEGONPROCAM_IOCONTROLTYPE_SET_INPUTACTIVATION 0x0a +#define OMEGONPROCAM_IOCONTROLTYPE_GET_DEBOUNCERTIME 0x0b /* debouncer time in microseconds, range: [0, 20000] */ +#define OMEGONPROCAM_IOCONTROLTYPE_SET_DEBOUNCERTIME 0x0c +#define OMEGONPROCAM_IOCONTROLTYPE_GET_TRIGGERSOURCE 0x0d /* + 0x00 => Opto-isolated input + 0x01 => GPIO0 + 0x02 => GPIO1 + 0x03 => Counter + 0x04 => PWM + 0x05 => Software + */ +#define OMEGONPROCAM_IOCONTROLTYPE_SET_TRIGGERSOURCE 0x0e +#define OMEGONPROCAM_IOCONTROLTYPE_GET_TRIGGERDELAY 0x0f /* Trigger delay time in microseconds, range: [0, 5000000] */ +#define OMEGONPROCAM_IOCONTROLTYPE_SET_TRIGGERDELAY 0x10 +#define OMEGONPROCAM_IOCONTROLTYPE_GET_BURSTCOUNTER 0x11 /* Burst Counter, range: [1 ~ 65535] */ +#define OMEGONPROCAM_IOCONTROLTYPE_SET_BURSTCOUNTER 0x12 +#define OMEGONPROCAM_IOCONTROLTYPE_GET_COUNTERSOURCE 0x13 /* 0x00 => Opto-isolated input, 0x01 => GPIO0, 0x02 => GPIO1 */ +#define OMEGONPROCAM_IOCONTROLTYPE_SET_COUNTERSOURCE 0x14 +#define OMEGONPROCAM_IOCONTROLTYPE_GET_COUNTERVALUE 0x15 /* Counter Value, range: [1 ~ 65535] */ +#define OMEGONPROCAM_IOCONTROLTYPE_SET_COUNTERVALUE 0x16 +#define OMEGONPROCAM_IOCONTROLTYPE_SET_RESETCOUNTER 0x18 +#define OMEGONPROCAM_IOCONTROLTYPE_GET_PWM_FREQ 0x19 +#define OMEGONPROCAM_IOCONTROLTYPE_SET_PWM_FREQ 0x1a +#define OMEGONPROCAM_IOCONTROLTYPE_GET_PWM_DUTYRATIO 0x1b +#define OMEGONPROCAM_IOCONTROLTYPE_SET_PWM_DUTYRATIO 0x1c +#define OMEGONPROCAM_IOCONTROLTYPE_GET_PWMSOURCE 0x1d /* 0x00 => Opto-isolated input, 0x01 => GPIO0, 0x02 => GPIO1 */ +#define OMEGONPROCAM_IOCONTROLTYPE_SET_PWMSOURCE 0x1e +#define OMEGONPROCAM_IOCONTROLTYPE_GET_OUTPUTMODE 0x1f /* + 0x00 => Frame Trigger Wait + 0x01 => Exposure Active + 0x02 => Strobe + 0x03 => User output + 0x04 => Counter Output + 0x05 => Timer Output + */ +#define OMEGONPROCAM_IOCONTROLTYPE_SET_OUTPUTMODE 0x20 +#define OMEGONPROCAM_IOCONTROLTYPE_GET_STROBEDELAYMODE 0x21 /* boolean, 0 => pre-delay, 1 => delay; compared to exposure active signal */ +#define OMEGONPROCAM_IOCONTROLTYPE_SET_STROBEDELAYMODE 0x22 +#define OMEGONPROCAM_IOCONTROLTYPE_GET_STROBEDELAYTIME 0x23 /* Strobe delay or pre-delay time in microseconds, range: [0, 5000000] */ +#define OMEGONPROCAM_IOCONTROLTYPE_SET_STROBEDELAYTIME 0x24 +#define OMEGONPROCAM_IOCONTROLTYPE_GET_STROBEDURATION 0x25 /* Strobe duration time in microseconds, range: [0, 5000000] */ +#define OMEGONPROCAM_IOCONTROLTYPE_SET_STROBEDURATION 0x26 +#define OMEGONPROCAM_IOCONTROLTYPE_GET_USERVALUE 0x27 /* + bit0 => Opto-isolated output + bit1 => GPIO0 output + bit2 => GPIO1 output + */ +#define OMEGONPROCAM_IOCONTROLTYPE_SET_USERVALUE 0x28 +#define OMEGONPROCAM_IOCONTROLTYPE_GET_UART_ENABLE 0x29 /* enable: 1 => on; 0 => off */ +#define OMEGONPROCAM_IOCONTROLTYPE_SET_UART_ENABLE 0x2a +#define OMEGONPROCAM_IOCONTROLTYPE_GET_UART_BAUDRATE 0x2b /* baud rate: 0 => 9600; 1 => 19200; 2 => 38400; 3 => 57600; 4 => 115200 */ +#define OMEGONPROCAM_IOCONTROLTYPE_SET_UART_BAUDRATE 0x2c +#define OMEGONPROCAM_IOCONTROLTYPE_GET_UART_LINEMODE 0x2d /* line mode: 0 => TX(GPIO_0)/RX(GPIO_1); 1 => TX(GPIO_1)/RX(GPIO_0) */ +#define OMEGONPROCAM_IOCONTROLTYPE_SET_UART_LINEMODE 0x2e +#define OMEGONPROCAM_IOCONTROLTYPE_GET_EXPO_ACTIVE_MODE 0x2f /* exposure time signal: 0 => specified line, 1 => common exposure time */ +#define OMEGONPROCAM_IOCONTROLTYPE_SET_EXPO_ACTIVE_MODE 0x30 +#define OMEGONPROCAM_IOCONTROLTYPE_GET_EXPO_START_LINE 0x31 /* exposure start line, default: 0 */ +#define OMEGONPROCAM_IOCONTROLTYPE_SET_EXPO_START_LINE 0x32 +#define OMEGONPROCAM_IOCONTROLTYPE_GET_EXPO_END_LINE 0x33 /* exposure end line, default: 0 + end line must be no less than start line + */ +#define OMEGONPROCAM_IOCONTROLTYPE_SET_EXPO_END_LINE 0x34 +#define OMEGONPROCAM_IOCONTROLTYPE_GET_EXEVT_ACTIVE_MODE 0x35 /* exposure event: 0 => specified line, 1 => common exposure time */ +#define OMEGONPROCAM_IOCONTROLTYPE_SET_EXEVT_ACTIVE_MODE 0x36 +#define OMEGONPROCAM_IOCONTROLTYPE_GET_OUTPUTCOUNTERVALUE 0x37 /* Output Counter Value, range: [0 ~ 65535] */ +#define OMEGONPROCAM_IOCONTROLTYPE_SET_OUTPUTCOUNTERVALUE 0x38 +#define OMEGONPROCAM_IOCONTROLTYPE_SET_OUTPUT_PAUSE 0x3a /* Output pause: 1 => puase, 0 => unpause */ +#define OMEGONPROCAM_IOCONTROLTYPE_GET_INPUT_STATE 0x3b /* Input state: 0 (low level) or 1 (high level) */ +#define OMEGONPROCAM_IOCONTROLTYPE_GET_USER_PULSE_HIGH 0x3d /* User pulse high level time: us */ +#define OMEGONPROCAM_IOCONTROLTYPE_SET_USER_PULSE_HIGH 0x3e +#define OMEGONPROCAM_IOCONTROLTYPE_GET_USER_PULSE_LOW 0x3f /* User pulse low level time: us */ +#define OMEGONPROCAM_IOCONTROLTYPE_SET_USER_PULSE_LOW 0x40 +#define OMEGONPROCAM_IOCONTROLTYPE_GET_USER_PULSE_NUMBER 0x41 /* User pulse number: default 0 */ +#define OMEGONPROCAM_IOCONTROLTYPE_SET_USER_PULSE_NUMBER 0x42 +#define OMEGONPROCAM_IOCONTROLTYPE_GET_EXTERNAL_TRIGGER_NUMBER 0x43 /* External trigger number */ +#define OMEGONPROCAM_IOCONTROLTYPE_GET_DEBOUNCER_TRIGGER_NUMBER 0x45 /* Trigger signal number after debounce */ +#define OMEGONPROCAM_IOCONTROLTYPE_GET_EFFECTIVE_TRIGGER_NUMBER 0x47 /* Effective trigger signal number */ + +#define OMEGONPROCAM_IOCONTROL_DELAYTIME_MAX (5 * 1000 * 1000) /* ioLineNumber: diff --git a/libomegonprocam/x64/libomegonprocam.bin b/libomegonprocam/x64/libomegonprocam.bin index 9d1450b4d..08a8aa20b 100644 Binary files a/libomegonprocam/x64/libomegonprocam.bin and b/libomegonprocam/x64/libomegonprocam.bin differ diff --git a/libstarshootg/CMakeLists.txt b/libstarshootg/CMakeLists.txt index bed54d68b..860a4aaa5 100644 --- a/libstarshootg/CMakeLists.txt +++ b/libstarshootg/CMakeLists.txt @@ -1,8 +1,8 @@ cmake_minimum_required(VERSION 3.16) project (libstarshootg) -set (LIBSTARSHOOTG_VERSION "55.25633") -set (LIBSTARSHOOTG_SOVERSION "55") +set (LIBSTARSHOOTG_VERSION "56.26054") +set (LIBSTARSHOOTG_SOVERSION "56") list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules/") list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../cmake_modules/") diff --git a/libstarshootg/arm64/libstarshootg.bin b/libstarshootg/arm64/libstarshootg.bin index 07dac4370..3731dc65c 100644 Binary files a/libstarshootg/arm64/libstarshootg.bin and b/libstarshootg/arm64/libstarshootg.bin differ diff --git a/libstarshootg/armhf/libstarshootg.bin b/libstarshootg/armhf/libstarshootg.bin index 583b46742..6174a264d 100644 Binary files a/libstarshootg/armhf/libstarshootg.bin and b/libstarshootg/armhf/libstarshootg.bin differ diff --git a/libstarshootg/mac/libstarshootg.bin b/libstarshootg/mac/libstarshootg.bin index 70e80e6a5..6ccef9ebd 100644 Binary files a/libstarshootg/mac/libstarshootg.bin and b/libstarshootg/mac/libstarshootg.bin differ diff --git a/libstarshootg/starshootg.h b/libstarshootg/starshootg.h index f7ce99fa8..e52434586 100644 --- a/libstarshootg/starshootg.h +++ b/libstarshootg/starshootg.h @@ -1,7 +1,7 @@ #ifndef __starshootg_h__ #define __starshootg_h__ -/* Version: 55.25633.20240519 */ +/* Version: 56.26054.20240715 */ /* Platform & Architecture: (1) Win32: @@ -92,21 +92,21 @@ extern "C" { /* */ /********************************************************************************/ #if defined(STARSHOOTG_HRESULT_ERRORCODE_NEEDED) -#define S_OK 0x00000000 /* Success */ -#define S_FALSE 0x00000001 /* Yet another success */ -#define E_UNEXPECTED 0x8000ffff /* Catastrophic failure */ -#define E_NOTIMPL 0x80004001 /* Not supported or not implemented */ -#define E_NOINTERFACE 0x80004002 -#define E_ACCESSDENIED 0x80070005 /* Permission denied */ -#define E_OUTOFMEMORY 0x8007000e /* Out of memory */ -#define E_INVALIDARG 0x80070057 /* One or more arguments are not valid */ -#define E_POINTER 0x80004003 /* Pointer that is not valid */ -#define E_FAIL 0x80004005 /* Generic failure */ -#define E_WRONG_THREAD 0x8001010e /* Call function in the wrong thread */ -#define E_GEN_FAILURE 0x8007001f /* Device not functioning */ -#define E_BUSY 0x800700aa /* The requested resource is in use */ -#define E_PENDING 0x8000000a /* The data necessary to complete this operation is not yet available */ -#define E_TIMEOUT 0x8001011f /* This operation returned because the timeout period expired */ +#define S_OK (HRESULT)(0x00000000) /* Success */ +#define S_FALSE (HRESULT)(0x00000001) /* Yet another success */ +#define E_UNEXPECTED (HRESULT)(0x8000ffff) /* Catastrophic failure */ +#define E_NOTIMPL (HRESULT)(0x80004001) /* Not supported or not implemented */ +#define E_NOINTERFACE (HRESULT)(0x80004002) +#define E_ACCESSDENIED (HRESULT)(0x80070005) /* Permission denied */ +#define E_OUTOFMEMORY (HRESULT)(0x8007000e) /* Out of memory */ +#define E_INVALIDARG (HRESULT)(0x80070057) /* One or more arguments are not valid */ +#define E_POINTER (HRESULT)(0x80004003) /* Pointer that is not valid */ +#define E_FAIL (HRESULT)(0x80004005) /* Generic failure */ +#define E_WRONG_THREAD (HRESULT)(0x8001010e) /* Call function in the wrong thread */ +#define E_GEN_FAILURE (HRESULT)(0x8007001f) /* Device not functioning */ +#define E_BUSY (HRESULT)(0x800700aa) /* The requested resource is in use */ +#define E_PENDING (HRESULT)(0x8000000a) /* The data necessary to complete this operation is not yet available */ +#define E_TIMEOUT (HRESULT)(0x8001011f) /* This operation returned because the timeout period expired */ #endif /* handle */ @@ -229,9 +229,6 @@ typedef struct Starshootg_t { int unused; } *HStarshootg; #define STARSHOOTG_DENOISE_DEF 0 /* denoise */ #define STARSHOOTG_DENOISE_MIN 0 /* denoise */ #define STARSHOOTG_DENOISE_MAX 100 /* denoise */ -#define STARSHOOTG_TEC_TARGET_MIN (-500) /* TEC target: -50.0 degrees Celsius */ -#define STARSHOOTG_TEC_TARGET_DEF 100 /* 10.0 degrees Celsius */ -#define STARSHOOTG_TEC_TARGET_MAX 400 /* TEC target: 40.0 degrees Celsius */ #define STARSHOOTG_HEARTBEAT_MIN 100 /* millisecond */ #define STARSHOOTG_HEARTBEAT_MAX 10000 /* millisecond */ #define STARSHOOTG_AE_PERCENT_MIN 0 /* auto exposure percent; 0 or 100 => full roi average, means "disabled" */ @@ -239,12 +236,12 @@ typedef struct Starshootg_t { int unused; } *HStarshootg; #define STARSHOOTG_AE_PERCENT_DEF 10 /* auto exposure percent: enabled, percentage = 10% */ #define STARSHOOTG_NOPACKET_TIMEOUT_MIN 500 /* no packet timeout minimum: 500ms */ #define STARSHOOTG_NOFRAME_TIMEOUT_MIN 500 /* no frame timeout minimum: 500ms */ -#define STARSHOOTG_DYNAMIC_DEFECT_T1_MIN 10 /* dynamic defect pixel correction, threshold, means: 1.0 */ -#define STARSHOOTG_DYNAMIC_DEFECT_T1_MAX 100 /* means: 10.0 */ -#define STARSHOOTG_DYNAMIC_DEFECT_T1_DEF 13 /* means: 1.3 */ -#define STARSHOOTG_DYNAMIC_DEFECT_T2_MIN 0 /* dynamic defect pixel correction, value, means: 0.00 */ -#define STARSHOOTG_DYNAMIC_DEFECT_T2_MAX 100 /* means: 1.00 */ -#define STARSHOOTG_DYNAMIC_DEFECT_T2_DEF 100 +#define STARSHOOTG_DYNAMIC_DEFECT_T1_MIN 0 /* dynamic defect pixel correction, dead pixel ratio: the smaller the dead ratio is, the more stringent the conditions for processing dead pixels are, and fewer pixels will be processed */ +#define STARSHOOTG_DYNAMIC_DEFECT_T1_MAX 100 /* means: 1.0 */ +#define STARSHOOTG_DYNAMIC_DEFECT_T1_DEF 90 /* means: 0.9 */ +#define STARSHOOTG_DYNAMIC_DEFECT_T2_MIN 0 /* dynamic defect pixel correction, hot pixel ratio: the smaller the hot ratio is, the more stringent the conditions for processing hot pixels are, and fewer pixels will be processed */ +#define STARSHOOTG_DYNAMIC_DEFECT_T2_MAX 100 +#define STARSHOOTG_DYNAMIC_DEFECT_T2_DEF 90 #define STARSHOOTG_HDR_K_MIN 1 /* HDR synthesize */ #define STARSHOOTG_HDR_K_MAX 25500 #define STARSHOOTG_HDR_B_MIN 0 @@ -289,7 +286,7 @@ typedef struct { } StarshootgDeviceV2; /* device instance for enumerating */ /* - get the version of this dll/so/dylib, which is: 55.25633.20240519 + get the version of this dll/so/dylib, which is: 56.26054.20240715 */ #if defined(_WIN32) STARSHOOTG_API(const wchar_t*) Starshootg_Version(); @@ -821,7 +818,7 @@ STARSHOOTG_API(HRESULT) Starshootg_read_EEPROM(HStarshootg h, unsigned addr, un STARSHOOTG_API(HRESULT) Starshootg_read_Pipe(HStarshootg h, unsigned pipeId, void* pBuffer, unsigned nBufferLen); STARSHOOTG_API(HRESULT) Starshootg_write_Pipe(HStarshootg h, unsigned pipeId, const void* pBuffer, unsigned nBufferLen); STARSHOOTG_API(HRESULT) Starshootg_feed_Pipe(HStarshootg h, unsigned pipeId); - + #define STARSHOOTG_OPTION_NOFRAME_TIMEOUT 0x01 /* no frame timeout: 0 => disable, positive value (>= STARSHOOTG_NOFRAME_TIMEOUT_MIN) => timeout milliseconds. default: disable */ #define STARSHOOTG_OPTION_THREAD_PRIORITY 0x02 /* set the priority of the internal thread which grab data from the usb device. Win: iValue: 0 => THREAD_PRIORITY_NORMAL; 1 => THREAD_PRIORITY_ABOVE_NORMAL; 2 => THREAD_PRIORITY_HIGHEST; 3 => THREAD_PRIORITY_TIME_CRITICAL; default: 1; see: https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-setthreadpriority @@ -847,7 +844,7 @@ STARSHOOTG_API(HRESULT) Starshootg_feed_Pipe(HStarshootg h, unsigned pipeId); 3: Gain Preferred default value: 1 */ -#define STARSHOOTG_OPTION_FRAMERATE 0x11 /* limit the frame rate, range=[0, 63], the default value 0 means no limit */ +#define STARSHOOTG_OPTION_FRAMERATE 0x11 /* limit the frame rate, the default value 0 means no limit */ #define STARSHOOTG_OPTION_DEMOSAIC 0x12 /* demosaic method for both video and still image: BILINEAR = 0, VNG(Variable Number of Gradients) = 1, PPG(Patterned Pixel Grouping) = 2, AHD(Adaptive Homogeneity Directed) = 3, EA(Edge Aware) = 4, see https://en.wikipedia.org/wiki/Demosaicing, default value: 0 */ #define STARSHOOTG_OPTION_DEMOSAIC_VIDEO 0x13 /* demosaic method for video */ #define STARSHOOTG_OPTION_DEMOSAIC_STILL 0x14 /* demosaic method for still image */ @@ -1007,8 +1004,8 @@ STARSHOOTG_API(HRESULT) Starshootg_feed_Pipe(HStarshootg h, unsigned pipeId); */ #define STARSHOOTG_OPTION_HIGH_FULLWELL 0x55 /* high fullwell capacity: 0 => disable, 1 => enable */ #define STARSHOOTG_OPTION_DYNAMIC_DEFECT 0x56 /* dynamic defect pixel correction: - threshold, t1: (high 16 bits): [10, 100], means: [1.0, 10.0] - value, t2: (low 16 bits): [0, 100], means: [0.00, 1.00] + dead pixel ratio, t1: (high 16 bits): [0, 100], means: [0.0, 1.0] + hot pixel ratio, t2: (low 16 bits): [0, 100], means: [0.0, 1.0] */ #define STARSHOOTG_OPTION_HDR_KB 0x57 /* HDR synthesize K (high 16 bits): [1, 25500] @@ -1021,8 +1018,8 @@ STARSHOOTG_API(HRESULT) Starshootg_feed_Pipe(HStarshootg h, unsigned pipeId); */ #define STARSHOOTG_OPTION_GIGETIMEOUT 0x5a /* For GigE cameras, the application periodically sends heartbeat signals to the camera to keep the connection to the camera alive. If the camera doesn't receive heartbeat signals within the time period specified by the heartbeat timeout counter, the camera resets the connection. - When the application is stopped by the debugger, the application cannot create the heartbeat signals - 0 => auto: when the camera is opened, disable if debugger is present or enable if no debugger is present + When the application is stopped by the debugger, the application cannot send the heartbeat signals + 0 => auto: when the camera is opened, enable if no debugger is present or disable if debugger is present 1 => enable 2 => disable default: auto @@ -1063,6 +1060,9 @@ STARSHOOTG_API(HRESULT) Starshootg_feed_Pipe(HStarshootg h, unsigned pipeId); 21 => twilight 22 => twilight_shifted 23 => turbo + 24 => red + 25 => green + 26 => blue */ #define STARSHOOTG_OPTION_LOW_POWERCONSUMPTION 0x66 /* Low Power Consumption: 0 => disable, 1 => enable */ #define STARSHOOTG_OPTION_FPNC 0x67 /* Fix Pattern Noise Correction @@ -1092,6 +1092,7 @@ STARSHOOTG_API(HRESULT) Starshootg_feed_Pipe(HStarshootg h, unsigned pipeId); n>0: every n millisecond(s) n<0: every -n frame */ +#define STARSHOOTG_OPTION_TECTARGET_RANGE 0x6d /* TEC target range: min(low 16 bits) = (short)(val & 0xffff), max(high 16 bits) = (short)((val >> 16) & 0xffff) */ /* pixel format */ #define STARSHOOTG_PIXELFORMAT_RAW8 0x00 @@ -1137,97 +1138,100 @@ STARSHOOTG_API(HRESULT) Starshootg_put_RoiN(HStarshootg h, unsigned xOffset[], STARSHOOTG_API(HRESULT) Starshootg_put_XY(HStarshootg h, int x, int y); -#define STARSHOOTG_IOCONTROLTYPE_GET_SUPPORTEDMODE 0x01 /* 0x01 => Input, 0x02 => Output, (0x01 | 0x02) => support both Input and Output */ -#define STARSHOOTG_IOCONTROLTYPE_GET_GPIODIR 0x03 /* 0x00 => Input, 0x01 => Output */ -#define STARSHOOTG_IOCONTROLTYPE_SET_GPIODIR 0x04 -#define STARSHOOTG_IOCONTROLTYPE_GET_FORMAT 0x05 /* - 0x00 => not connected - 0x01 => Tri-state: Tri-state mode (Not driven) - 0x02 => TTL: TTL level signals - 0x03 => LVDS: LVDS level signals - 0x04 => RS422: RS422 level signals - 0x05 => Opto-coupled - */ -#define STARSHOOTG_IOCONTROLTYPE_SET_FORMAT 0x06 -#define STARSHOOTG_IOCONTROLTYPE_GET_OUTPUTINVERTER 0x07 /* boolean, only support output signal */ -#define STARSHOOTG_IOCONTROLTYPE_SET_OUTPUTINVERTER 0x08 -#define STARSHOOTG_IOCONTROLTYPE_GET_INPUTACTIVATION 0x09 /* 0x00 => Rising edge, 0x01 => Falling edge, 0x02 => Level high, 0x03 => Level low */ -#define STARSHOOTG_IOCONTROLTYPE_SET_INPUTACTIVATION 0x0a -#define STARSHOOTG_IOCONTROLTYPE_GET_DEBOUNCERTIME 0x0b /* debouncer time in microseconds, range: [0, 20000] */ -#define STARSHOOTG_IOCONTROLTYPE_SET_DEBOUNCERTIME 0x0c -#define STARSHOOTG_IOCONTROLTYPE_GET_TRIGGERSOURCE 0x0d /* - 0x00 => Opto-isolated input - 0x01 => GPIO0 - 0x02 => GPIO1 - 0x03 => Counter - 0x04 => PWM - 0x05 => Software - */ -#define STARSHOOTG_IOCONTROLTYPE_SET_TRIGGERSOURCE 0x0e -#define STARSHOOTG_IOCONTROLTYPE_GET_TRIGGERDELAY 0x0f /* Trigger delay time in microseconds, range: [0, 5000000] */ -#define STARSHOOTG_IOCONTROLTYPE_SET_TRIGGERDELAY 0x10 -#define STARSHOOTG_IOCONTROLTYPE_GET_BURSTCOUNTER 0x11 /* Burst Counter, range: [1 ~ 65535] */ -#define STARSHOOTG_IOCONTROLTYPE_SET_BURSTCOUNTER 0x12 -#define STARSHOOTG_IOCONTROLTYPE_GET_COUNTERSOURCE 0x13 /* 0x00 => Opto-isolated input, 0x01 => GPIO0, 0x02 => GPIO1 */ -#define STARSHOOTG_IOCONTROLTYPE_SET_COUNTERSOURCE 0x14 -#define STARSHOOTG_IOCONTROLTYPE_GET_COUNTERVALUE 0x15 /* Counter Value, range: [1 ~ 65535] */ -#define STARSHOOTG_IOCONTROLTYPE_SET_COUNTERVALUE 0x16 -#define STARSHOOTG_IOCONTROLTYPE_SET_RESETCOUNTER 0x18 -#define STARSHOOTG_IOCONTROLTYPE_GET_PWM_FREQ 0x19 -#define STARSHOOTG_IOCONTROLTYPE_SET_PWM_FREQ 0x1a -#define STARSHOOTG_IOCONTROLTYPE_GET_PWM_DUTYRATIO 0x1b -#define STARSHOOTG_IOCONTROLTYPE_SET_PWM_DUTYRATIO 0x1c -#define STARSHOOTG_IOCONTROLTYPE_GET_PWMSOURCE 0x1d /* 0x00 => Opto-isolated input, 0x01 => GPIO0, 0x02 => GPIO1 */ -#define STARSHOOTG_IOCONTROLTYPE_SET_PWMSOURCE 0x1e -#define STARSHOOTG_IOCONTROLTYPE_GET_OUTPUTMODE 0x1f /* - 0x00 => Frame Trigger Wait - 0x01 => Exposure Active - 0x02 => Strobe - 0x03 => User output - 0x04 => Counter Output - 0x05 => Timer Output - */ -#define STARSHOOTG_IOCONTROLTYPE_SET_OUTPUTMODE 0x20 -#define STARSHOOTG_IOCONTROLTYPE_GET_STROBEDELAYMODE 0x21 /* boolean, 0 => pre-delay, 1 => delay; compared to exposure active signal */ -#define STARSHOOTG_IOCONTROLTYPE_SET_STROBEDELAYMODE 0x22 -#define STARSHOOTG_IOCONTROLTYPE_GET_STROBEDELAYTIME 0x23 /* Strobe delay or pre-delay time in microseconds, range: [0, 5000000] */ -#define STARSHOOTG_IOCONTROLTYPE_SET_STROBEDELAYTIME 0x24 -#define STARSHOOTG_IOCONTROLTYPE_GET_STROBEDURATION 0x25 /* Strobe duration time in microseconds, range: [0, 5000000] */ -#define STARSHOOTG_IOCONTROLTYPE_SET_STROBEDURATION 0x26 -#define STARSHOOTG_IOCONTROLTYPE_GET_USERVALUE 0x27 /* - bit0 => Opto-isolated output - bit1 => GPIO0 output - bit2 => GPIO1 output - */ -#define STARSHOOTG_IOCONTROLTYPE_SET_USERVALUE 0x28 -#define STARSHOOTG_IOCONTROLTYPE_GET_UART_ENABLE 0x29 /* enable: 1 => on; 0 => off */ -#define STARSHOOTG_IOCONTROLTYPE_SET_UART_ENABLE 0x2a -#define STARSHOOTG_IOCONTROLTYPE_GET_UART_BAUDRATE 0x2b /* baud rate: 0 => 9600; 1 => 19200; 2 => 38400; 3 => 57600; 4 => 115200 */ -#define STARSHOOTG_IOCONTROLTYPE_SET_UART_BAUDRATE 0x2c -#define STARSHOOTG_IOCONTROLTYPE_GET_UART_LINEMODE 0x2d /* line mode: 0 => TX(GPIO_0)/RX(GPIO_1); 1 => TX(GPIO_1)/RX(GPIO_0) */ -#define STARSHOOTG_IOCONTROLTYPE_SET_UART_LINEMODE 0x2e -#define STARSHOOTG_IOCONTROLTYPE_GET_EXPO_ACTIVE_MODE 0x2f /* exposure time signal: 0 => specified line, 1 => common exposure time */ -#define STARSHOOTG_IOCONTROLTYPE_SET_EXPO_ACTIVE_MODE 0x30 -#define STARSHOOTG_IOCONTROLTYPE_GET_EXPO_START_LINE 0x31 /* exposure start line, default: 0 */ -#define STARSHOOTG_IOCONTROLTYPE_SET_EXPO_START_LINE 0x32 -#define STARSHOOTG_IOCONTROLTYPE_GET_EXPO_END_LINE 0x33 /* exposure end line, default: 0 - end line must be no less than start line - */ -#define STARSHOOTG_IOCONTROLTYPE_SET_EXPO_END_LINE 0x34 -#define STARSHOOTG_IOCONTROLTYPE_GET_EXEVT_ACTIVE_MODE 0x35 /* exposure event: 0 => specified line, 1 => common exposure time */ -#define STARSHOOTG_IOCONTROLTYPE_SET_EXEVT_ACTIVE_MODE 0x36 -#define STARSHOOTG_IOCONTROLTYPE_GET_OUTPUTCOUNTERVALUE 0x37 /* Output Counter Value, range: [0 ~ 65535] */ -#define STARSHOOTG_IOCONTROLTYPE_SET_OUTPUTCOUNTERVALUE 0x38 -#define STARSHOOTG_IOCONTROLTYPE_SET_OUTPUT_PAUSE 0x3a /* Output pause: 1 => puase, 0 => unpause */ -#define STARSHOOTG_IOCONTROLTYPE_GET_INPUT_STATE 0x3c /* Input state: 0 (low level) or 1 (high level) */ -#define STARSHOOTG_IOCONTROLTYPE_GET_USER_PULSE_HIGH 0x3e /* User pulse high level time: us */ -#define STARSHOOTG_IOCONTROLTYPE_SET_USER_PULSE_HIGH 0x3f -#define STARSHOOTG_IOCONTROLTYPE_GET_USER_PULSE_LOW 0x40 /* User pulse low level time: us */ -#define STARSHOOTG_IOCONTROLTYPE_SET_USER_PULSE_LOW 0x41 -#define STARSHOOTG_IOCONTROLTYPE_GET_USER_PULSE_NUMBER 0x42 /* User pulse number: default 0 */ -#define STARSHOOTG_IOCONTROLTYPE_SET_USER_PULSE_NUMBER 0x43 - -#define STARSHOOTG_IOCONTROL_DELAYTIME_MAX (5 * 1000 * 1000) +#define STARSHOOTG_IOCONTROLTYPE_GET_SUPPORTEDMODE 0x01 /* 0x01 => Input, 0x02 => Output, (0x01 | 0x02) => support both Input and Output */ +#define STARSHOOTG_IOCONTROLTYPE_GET_GPIODIR 0x03 /* 0x00 => Input, 0x01 => Output */ +#define STARSHOOTG_IOCONTROLTYPE_SET_GPIODIR 0x04 +#define STARSHOOTG_IOCONTROLTYPE_GET_FORMAT 0x05 /* + 0x00 => not connected + 0x01 => Tri-state: Tri-state mode (Not driven) + 0x02 => TTL: TTL level signals + 0x03 => LVDS: LVDS level signals + 0x04 => RS422: RS422 level signals + 0x05 => Opto-coupled + */ +#define STARSHOOTG_IOCONTROLTYPE_SET_FORMAT 0x06 +#define STARSHOOTG_IOCONTROLTYPE_GET_OUTPUTINVERTER 0x07 /* boolean, only support output signal */ +#define STARSHOOTG_IOCONTROLTYPE_SET_OUTPUTINVERTER 0x08 +#define STARSHOOTG_IOCONTROLTYPE_GET_INPUTACTIVATION 0x09 /* 0x00 => Rising edge, 0x01 => Falling edge, 0x02 => Level high, 0x03 => Level low */ +#define STARSHOOTG_IOCONTROLTYPE_SET_INPUTACTIVATION 0x0a +#define STARSHOOTG_IOCONTROLTYPE_GET_DEBOUNCERTIME 0x0b /* debouncer time in microseconds, range: [0, 20000] */ +#define STARSHOOTG_IOCONTROLTYPE_SET_DEBOUNCERTIME 0x0c +#define STARSHOOTG_IOCONTROLTYPE_GET_TRIGGERSOURCE 0x0d /* + 0x00 => Opto-isolated input + 0x01 => GPIO0 + 0x02 => GPIO1 + 0x03 => Counter + 0x04 => PWM + 0x05 => Software + */ +#define STARSHOOTG_IOCONTROLTYPE_SET_TRIGGERSOURCE 0x0e +#define STARSHOOTG_IOCONTROLTYPE_GET_TRIGGERDELAY 0x0f /* Trigger delay time in microseconds, range: [0, 5000000] */ +#define STARSHOOTG_IOCONTROLTYPE_SET_TRIGGERDELAY 0x10 +#define STARSHOOTG_IOCONTROLTYPE_GET_BURSTCOUNTER 0x11 /* Burst Counter, range: [1 ~ 65535] */ +#define STARSHOOTG_IOCONTROLTYPE_SET_BURSTCOUNTER 0x12 +#define STARSHOOTG_IOCONTROLTYPE_GET_COUNTERSOURCE 0x13 /* 0x00 => Opto-isolated input, 0x01 => GPIO0, 0x02 => GPIO1 */ +#define STARSHOOTG_IOCONTROLTYPE_SET_COUNTERSOURCE 0x14 +#define STARSHOOTG_IOCONTROLTYPE_GET_COUNTERVALUE 0x15 /* Counter Value, range: [1 ~ 65535] */ +#define STARSHOOTG_IOCONTROLTYPE_SET_COUNTERVALUE 0x16 +#define STARSHOOTG_IOCONTROLTYPE_SET_RESETCOUNTER 0x18 +#define STARSHOOTG_IOCONTROLTYPE_GET_PWM_FREQ 0x19 +#define STARSHOOTG_IOCONTROLTYPE_SET_PWM_FREQ 0x1a +#define STARSHOOTG_IOCONTROLTYPE_GET_PWM_DUTYRATIO 0x1b +#define STARSHOOTG_IOCONTROLTYPE_SET_PWM_DUTYRATIO 0x1c +#define STARSHOOTG_IOCONTROLTYPE_GET_PWMSOURCE 0x1d /* 0x00 => Opto-isolated input, 0x01 => GPIO0, 0x02 => GPIO1 */ +#define STARSHOOTG_IOCONTROLTYPE_SET_PWMSOURCE 0x1e +#define STARSHOOTG_IOCONTROLTYPE_GET_OUTPUTMODE 0x1f /* + 0x00 => Frame Trigger Wait + 0x01 => Exposure Active + 0x02 => Strobe + 0x03 => User output + 0x04 => Counter Output + 0x05 => Timer Output + */ +#define STARSHOOTG_IOCONTROLTYPE_SET_OUTPUTMODE 0x20 +#define STARSHOOTG_IOCONTROLTYPE_GET_STROBEDELAYMODE 0x21 /* boolean, 0 => pre-delay, 1 => delay; compared to exposure active signal */ +#define STARSHOOTG_IOCONTROLTYPE_SET_STROBEDELAYMODE 0x22 +#define STARSHOOTG_IOCONTROLTYPE_GET_STROBEDELAYTIME 0x23 /* Strobe delay or pre-delay time in microseconds, range: [0, 5000000] */ +#define STARSHOOTG_IOCONTROLTYPE_SET_STROBEDELAYTIME 0x24 +#define STARSHOOTG_IOCONTROLTYPE_GET_STROBEDURATION 0x25 /* Strobe duration time in microseconds, range: [0, 5000000] */ +#define STARSHOOTG_IOCONTROLTYPE_SET_STROBEDURATION 0x26 +#define STARSHOOTG_IOCONTROLTYPE_GET_USERVALUE 0x27 /* + bit0 => Opto-isolated output + bit1 => GPIO0 output + bit2 => GPIO1 output + */ +#define STARSHOOTG_IOCONTROLTYPE_SET_USERVALUE 0x28 +#define STARSHOOTG_IOCONTROLTYPE_GET_UART_ENABLE 0x29 /* enable: 1 => on; 0 => off */ +#define STARSHOOTG_IOCONTROLTYPE_SET_UART_ENABLE 0x2a +#define STARSHOOTG_IOCONTROLTYPE_GET_UART_BAUDRATE 0x2b /* baud rate: 0 => 9600; 1 => 19200; 2 => 38400; 3 => 57600; 4 => 115200 */ +#define STARSHOOTG_IOCONTROLTYPE_SET_UART_BAUDRATE 0x2c +#define STARSHOOTG_IOCONTROLTYPE_GET_UART_LINEMODE 0x2d /* line mode: 0 => TX(GPIO_0)/RX(GPIO_1); 1 => TX(GPIO_1)/RX(GPIO_0) */ +#define STARSHOOTG_IOCONTROLTYPE_SET_UART_LINEMODE 0x2e +#define STARSHOOTG_IOCONTROLTYPE_GET_EXPO_ACTIVE_MODE 0x2f /* exposure time signal: 0 => specified line, 1 => common exposure time */ +#define STARSHOOTG_IOCONTROLTYPE_SET_EXPO_ACTIVE_MODE 0x30 +#define STARSHOOTG_IOCONTROLTYPE_GET_EXPO_START_LINE 0x31 /* exposure start line, default: 0 */ +#define STARSHOOTG_IOCONTROLTYPE_SET_EXPO_START_LINE 0x32 +#define STARSHOOTG_IOCONTROLTYPE_GET_EXPO_END_LINE 0x33 /* exposure end line, default: 0 + end line must be no less than start line + */ +#define STARSHOOTG_IOCONTROLTYPE_SET_EXPO_END_LINE 0x34 +#define STARSHOOTG_IOCONTROLTYPE_GET_EXEVT_ACTIVE_MODE 0x35 /* exposure event: 0 => specified line, 1 => common exposure time */ +#define STARSHOOTG_IOCONTROLTYPE_SET_EXEVT_ACTIVE_MODE 0x36 +#define STARSHOOTG_IOCONTROLTYPE_GET_OUTPUTCOUNTERVALUE 0x37 /* Output Counter Value, range: [0 ~ 65535] */ +#define STARSHOOTG_IOCONTROLTYPE_SET_OUTPUTCOUNTERVALUE 0x38 +#define STARSHOOTG_IOCONTROLTYPE_SET_OUTPUT_PAUSE 0x3a /* Output pause: 1 => puase, 0 => unpause */ +#define STARSHOOTG_IOCONTROLTYPE_GET_INPUT_STATE 0x3b /* Input state: 0 (low level) or 1 (high level) */ +#define STARSHOOTG_IOCONTROLTYPE_GET_USER_PULSE_HIGH 0x3d /* User pulse high level time: us */ +#define STARSHOOTG_IOCONTROLTYPE_SET_USER_PULSE_HIGH 0x3e +#define STARSHOOTG_IOCONTROLTYPE_GET_USER_PULSE_LOW 0x3f /* User pulse low level time: us */ +#define STARSHOOTG_IOCONTROLTYPE_SET_USER_PULSE_LOW 0x40 +#define STARSHOOTG_IOCONTROLTYPE_GET_USER_PULSE_NUMBER 0x41 /* User pulse number: default 0 */ +#define STARSHOOTG_IOCONTROLTYPE_SET_USER_PULSE_NUMBER 0x42 +#define STARSHOOTG_IOCONTROLTYPE_GET_EXTERNAL_TRIGGER_NUMBER 0x43 /* External trigger number */ +#define STARSHOOTG_IOCONTROLTYPE_GET_DEBOUNCER_TRIGGER_NUMBER 0x45 /* Trigger signal number after debounce */ +#define STARSHOOTG_IOCONTROLTYPE_GET_EFFECTIVE_TRIGGER_NUMBER 0x47 /* Effective trigger signal number */ + +#define STARSHOOTG_IOCONTROL_DELAYTIME_MAX (5 * 1000 * 1000) /* ioLineNumber: diff --git a/libstarshootg/x64/libstarshootg.bin b/libstarshootg/x64/libstarshootg.bin index 507c42984..73c226cff 100644 Binary files a/libstarshootg/x64/libstarshootg.bin and b/libstarshootg/x64/libstarshootg.bin differ diff --git a/libtoupcam/CMakeLists.txt b/libtoupcam/CMakeLists.txt index 626422b2f..13823eeea 100644 --- a/libtoupcam/CMakeLists.txt +++ b/libtoupcam/CMakeLists.txt @@ -1,8 +1,8 @@ cmake_minimum_required(VERSION 3.16) project (libtoupcam) -set (LIBTOUPCAM_VERSION "55.25633") -set (LIBTOUPCAM_SOVERSION "55") +set (LIBTOUPCAM_VERSION "56.26054") +set (LIBTOUPCAM_SOVERSION "56") list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules/") list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../cmake_modules/") diff --git a/libtoupcam/arm64/libtoupcam.bin b/libtoupcam/arm64/libtoupcam.bin index 850bbd6d7..a1cb27f58 100644 Binary files a/libtoupcam/arm64/libtoupcam.bin and b/libtoupcam/arm64/libtoupcam.bin differ diff --git a/libtoupcam/armhf/libtoupcam.bin b/libtoupcam/armhf/libtoupcam.bin index 05308115b..5a59f2294 100644 Binary files a/libtoupcam/armhf/libtoupcam.bin and b/libtoupcam/armhf/libtoupcam.bin differ diff --git a/libtoupcam/mac/libtoupcam.bin b/libtoupcam/mac/libtoupcam.bin index 45ff0a2e0..1034ea356 100644 Binary files a/libtoupcam/mac/libtoupcam.bin and b/libtoupcam/mac/libtoupcam.bin differ diff --git a/libtoupcam/toupcam.h b/libtoupcam/toupcam.h index 92abbacb1..9294bb0cc 100644 --- a/libtoupcam/toupcam.h +++ b/libtoupcam/toupcam.h @@ -1,7 +1,7 @@ #ifndef __toupcam_h__ #define __toupcam_h__ -/* Version: 55.25633.20240519 */ +/* Version: 56.26054.20240715 */ /* Platform & Architecture: (1) Win32: @@ -92,21 +92,21 @@ extern "C" { /* */ /********************************************************************************/ #if defined(TOUPCAM_HRESULT_ERRORCODE_NEEDED) -#define S_OK 0x00000000 /* Success */ -#define S_FALSE 0x00000001 /* Yet another success */ -#define E_UNEXPECTED 0x8000ffff /* Catastrophic failure */ -#define E_NOTIMPL 0x80004001 /* Not supported or not implemented */ -#define E_NOINTERFACE 0x80004002 -#define E_ACCESSDENIED 0x80070005 /* Permission denied */ -#define E_OUTOFMEMORY 0x8007000e /* Out of memory */ -#define E_INVALIDARG 0x80070057 /* One or more arguments are not valid */ -#define E_POINTER 0x80004003 /* Pointer that is not valid */ -#define E_FAIL 0x80004005 /* Generic failure */ -#define E_WRONG_THREAD 0x8001010e /* Call function in the wrong thread */ -#define E_GEN_FAILURE 0x8007001f /* Device not functioning */ -#define E_BUSY 0x800700aa /* The requested resource is in use */ -#define E_PENDING 0x8000000a /* The data necessary to complete this operation is not yet available */ -#define E_TIMEOUT 0x8001011f /* This operation returned because the timeout period expired */ +#define S_OK (HRESULT)(0x00000000) /* Success */ +#define S_FALSE (HRESULT)(0x00000001) /* Yet another success */ +#define E_UNEXPECTED (HRESULT)(0x8000ffff) /* Catastrophic failure */ +#define E_NOTIMPL (HRESULT)(0x80004001) /* Not supported or not implemented */ +#define E_NOINTERFACE (HRESULT)(0x80004002) +#define E_ACCESSDENIED (HRESULT)(0x80070005) /* Permission denied */ +#define E_OUTOFMEMORY (HRESULT)(0x8007000e) /* Out of memory */ +#define E_INVALIDARG (HRESULT)(0x80070057) /* One or more arguments are not valid */ +#define E_POINTER (HRESULT)(0x80004003) /* Pointer that is not valid */ +#define E_FAIL (HRESULT)(0x80004005) /* Generic failure */ +#define E_WRONG_THREAD (HRESULT)(0x8001010e) /* Call function in the wrong thread */ +#define E_GEN_FAILURE (HRESULT)(0x8007001f) /* Device not functioning */ +#define E_BUSY (HRESULT)(0x800700aa) /* The requested resource is in use */ +#define E_PENDING (HRESULT)(0x8000000a) /* The data necessary to complete this operation is not yet available */ +#define E_TIMEOUT (HRESULT)(0x8001011f) /* This operation returned because the timeout period expired */ #endif /* handle */ @@ -229,9 +229,6 @@ typedef struct Toupcam_t { int unused; } *HToupcam, *HToupCam; #define TOUPCAM_DENOISE_DEF 0 /* denoise */ #define TOUPCAM_DENOISE_MIN 0 /* denoise */ #define TOUPCAM_DENOISE_MAX 100 /* denoise */ -#define TOUPCAM_TEC_TARGET_MIN (-500) /* TEC target: -50.0 degrees Celsius */ -#define TOUPCAM_TEC_TARGET_DEF 100 /* 10.0 degrees Celsius */ -#define TOUPCAM_TEC_TARGET_MAX 400 /* TEC target: 40.0 degrees Celsius */ #define TOUPCAM_HEARTBEAT_MIN 100 /* millisecond */ #define TOUPCAM_HEARTBEAT_MAX 10000 /* millisecond */ #define TOUPCAM_AE_PERCENT_MIN 0 /* auto exposure percent; 0 or 100 => full roi average, means "disabled" */ @@ -239,12 +236,12 @@ typedef struct Toupcam_t { int unused; } *HToupcam, *HToupCam; #define TOUPCAM_AE_PERCENT_DEF 10 /* auto exposure percent: enabled, percentage = 10% */ #define TOUPCAM_NOPACKET_TIMEOUT_MIN 500 /* no packet timeout minimum: 500ms */ #define TOUPCAM_NOFRAME_TIMEOUT_MIN 500 /* no frame timeout minimum: 500ms */ -#define TOUPCAM_DYNAMIC_DEFECT_T1_MIN 10 /* dynamic defect pixel correction, threshold, means: 1.0 */ -#define TOUPCAM_DYNAMIC_DEFECT_T1_MAX 100 /* means: 10.0 */ -#define TOUPCAM_DYNAMIC_DEFECT_T1_DEF 13 /* means: 1.3 */ -#define TOUPCAM_DYNAMIC_DEFECT_T2_MIN 0 /* dynamic defect pixel correction, value, means: 0.00 */ -#define TOUPCAM_DYNAMIC_DEFECT_T2_MAX 100 /* means: 1.00 */ -#define TOUPCAM_DYNAMIC_DEFECT_T2_DEF 100 +#define TOUPCAM_DYNAMIC_DEFECT_T1_MIN 0 /* dynamic defect pixel correction, dead pixel ratio: the smaller the dead ratio is, the more stringent the conditions for processing dead pixels are, and fewer pixels will be processed */ +#define TOUPCAM_DYNAMIC_DEFECT_T1_MAX 100 /* means: 1.0 */ +#define TOUPCAM_DYNAMIC_DEFECT_T1_DEF 90 /* means: 0.9 */ +#define TOUPCAM_DYNAMIC_DEFECT_T2_MIN 0 /* dynamic defect pixel correction, hot pixel ratio: the smaller the hot ratio is, the more stringent the conditions for processing hot pixels are, and fewer pixels will be processed */ +#define TOUPCAM_DYNAMIC_DEFECT_T2_MAX 100 +#define TOUPCAM_DYNAMIC_DEFECT_T2_DEF 90 #define TOUPCAM_HDR_K_MIN 1 /* HDR synthesize */ #define TOUPCAM_HDR_K_MAX 25500 #define TOUPCAM_HDR_B_MIN 0 @@ -289,7 +286,7 @@ typedef struct { } ToupcamDeviceV2; /* device instance for enumerating */ /* - get the version of this dll/so/dylib, which is: 55.25633.20240519 + get the version of this dll/so/dylib, which is: 56.26054.20240715 */ #if defined(_WIN32) TOUPCAM_API(const wchar_t*) Toupcam_Version(); @@ -821,7 +818,7 @@ TOUPCAM_API(HRESULT) Toupcam_read_EEPROM(HToupcam h, unsigned addr, unsigned ch TOUPCAM_API(HRESULT) Toupcam_read_Pipe(HToupcam h, unsigned pipeId, void* pBuffer, unsigned nBufferLen); TOUPCAM_API(HRESULT) Toupcam_write_Pipe(HToupcam h, unsigned pipeId, const void* pBuffer, unsigned nBufferLen); TOUPCAM_API(HRESULT) Toupcam_feed_Pipe(HToupcam h, unsigned pipeId); - + #define TOUPCAM_OPTION_NOFRAME_TIMEOUT 0x01 /* no frame timeout: 0 => disable, positive value (>= TOUPCAM_NOFRAME_TIMEOUT_MIN) => timeout milliseconds. default: disable */ #define TOUPCAM_OPTION_THREAD_PRIORITY 0x02 /* set the priority of the internal thread which grab data from the usb device. Win: iValue: 0 => THREAD_PRIORITY_NORMAL; 1 => THREAD_PRIORITY_ABOVE_NORMAL; 2 => THREAD_PRIORITY_HIGHEST; 3 => THREAD_PRIORITY_TIME_CRITICAL; default: 1; see: https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-setthreadpriority @@ -847,7 +844,7 @@ TOUPCAM_API(HRESULT) Toupcam_feed_Pipe(HToupcam h, unsigned pipeId); 3: Gain Preferred default value: 1 */ -#define TOUPCAM_OPTION_FRAMERATE 0x11 /* limit the frame rate, range=[0, 63], the default value 0 means no limit */ +#define TOUPCAM_OPTION_FRAMERATE 0x11 /* limit the frame rate, the default value 0 means no limit */ #define TOUPCAM_OPTION_DEMOSAIC 0x12 /* demosaic method for both video and still image: BILINEAR = 0, VNG(Variable Number of Gradients) = 1, PPG(Patterned Pixel Grouping) = 2, AHD(Adaptive Homogeneity Directed) = 3, EA(Edge Aware) = 4, see https://en.wikipedia.org/wiki/Demosaicing, default value: 0 */ #define TOUPCAM_OPTION_DEMOSAIC_VIDEO 0x13 /* demosaic method for video */ #define TOUPCAM_OPTION_DEMOSAIC_STILL 0x14 /* demosaic method for still image */ @@ -1007,8 +1004,8 @@ TOUPCAM_API(HRESULT) Toupcam_feed_Pipe(HToupcam h, unsigned pipeId); */ #define TOUPCAM_OPTION_HIGH_FULLWELL 0x55 /* high fullwell capacity: 0 => disable, 1 => enable */ #define TOUPCAM_OPTION_DYNAMIC_DEFECT 0x56 /* dynamic defect pixel correction: - threshold, t1: (high 16 bits): [10, 100], means: [1.0, 10.0] - value, t2: (low 16 bits): [0, 100], means: [0.00, 1.00] + dead pixel ratio, t1: (high 16 bits): [0, 100], means: [0.0, 1.0] + hot pixel ratio, t2: (low 16 bits): [0, 100], means: [0.0, 1.0] */ #define TOUPCAM_OPTION_HDR_KB 0x57 /* HDR synthesize K (high 16 bits): [1, 25500] @@ -1021,8 +1018,8 @@ TOUPCAM_API(HRESULT) Toupcam_feed_Pipe(HToupcam h, unsigned pipeId); */ #define TOUPCAM_OPTION_GIGETIMEOUT 0x5a /* For GigE cameras, the application periodically sends heartbeat signals to the camera to keep the connection to the camera alive. If the camera doesn't receive heartbeat signals within the time period specified by the heartbeat timeout counter, the camera resets the connection. - When the application is stopped by the debugger, the application cannot create the heartbeat signals - 0 => auto: when the camera is opened, disable if debugger is present or enable if no debugger is present + When the application is stopped by the debugger, the application cannot send the heartbeat signals + 0 => auto: when the camera is opened, enable if no debugger is present or disable if debugger is present 1 => enable 2 => disable default: auto @@ -1063,6 +1060,9 @@ TOUPCAM_API(HRESULT) Toupcam_feed_Pipe(HToupcam h, unsigned pipeId); 21 => twilight 22 => twilight_shifted 23 => turbo + 24 => red + 25 => green + 26 => blue */ #define TOUPCAM_OPTION_LOW_POWERCONSUMPTION 0x66 /* Low Power Consumption: 0 => disable, 1 => enable */ #define TOUPCAM_OPTION_FPNC 0x67 /* Fix Pattern Noise Correction @@ -1092,6 +1092,7 @@ TOUPCAM_API(HRESULT) Toupcam_feed_Pipe(HToupcam h, unsigned pipeId); n>0: every n millisecond(s) n<0: every -n frame */ +#define TOUPCAM_OPTION_TECTARGET_RANGE 0x6d /* TEC target range: min(low 16 bits) = (short)(val & 0xffff), max(high 16 bits) = (short)((val >> 16) & 0xffff) */ /* pixel format */ #define TOUPCAM_PIXELFORMAT_RAW8 0x00 @@ -1137,97 +1138,100 @@ TOUPCAM_API(HRESULT) Toupcam_put_RoiN(HToupcam h, unsigned xOffset[], unsigned TOUPCAM_API(HRESULT) Toupcam_put_XY(HToupcam h, int x, int y); -#define TOUPCAM_IOCONTROLTYPE_GET_SUPPORTEDMODE 0x01 /* 0x01 => Input, 0x02 => Output, (0x01 | 0x02) => support both Input and Output */ -#define TOUPCAM_IOCONTROLTYPE_GET_GPIODIR 0x03 /* 0x00 => Input, 0x01 => Output */ -#define TOUPCAM_IOCONTROLTYPE_SET_GPIODIR 0x04 -#define TOUPCAM_IOCONTROLTYPE_GET_FORMAT 0x05 /* - 0x00 => not connected - 0x01 => Tri-state: Tri-state mode (Not driven) - 0x02 => TTL: TTL level signals - 0x03 => LVDS: LVDS level signals - 0x04 => RS422: RS422 level signals - 0x05 => Opto-coupled - */ -#define TOUPCAM_IOCONTROLTYPE_SET_FORMAT 0x06 -#define TOUPCAM_IOCONTROLTYPE_GET_OUTPUTINVERTER 0x07 /* boolean, only support output signal */ -#define TOUPCAM_IOCONTROLTYPE_SET_OUTPUTINVERTER 0x08 -#define TOUPCAM_IOCONTROLTYPE_GET_INPUTACTIVATION 0x09 /* 0x00 => Rising edge, 0x01 => Falling edge, 0x02 => Level high, 0x03 => Level low */ -#define TOUPCAM_IOCONTROLTYPE_SET_INPUTACTIVATION 0x0a -#define TOUPCAM_IOCONTROLTYPE_GET_DEBOUNCERTIME 0x0b /* debouncer time in microseconds, range: [0, 20000] */ -#define TOUPCAM_IOCONTROLTYPE_SET_DEBOUNCERTIME 0x0c -#define TOUPCAM_IOCONTROLTYPE_GET_TRIGGERSOURCE 0x0d /* - 0x00 => Opto-isolated input - 0x01 => GPIO0 - 0x02 => GPIO1 - 0x03 => Counter - 0x04 => PWM - 0x05 => Software - */ -#define TOUPCAM_IOCONTROLTYPE_SET_TRIGGERSOURCE 0x0e -#define TOUPCAM_IOCONTROLTYPE_GET_TRIGGERDELAY 0x0f /* Trigger delay time in microseconds, range: [0, 5000000] */ -#define TOUPCAM_IOCONTROLTYPE_SET_TRIGGERDELAY 0x10 -#define TOUPCAM_IOCONTROLTYPE_GET_BURSTCOUNTER 0x11 /* Burst Counter, range: [1 ~ 65535] */ -#define TOUPCAM_IOCONTROLTYPE_SET_BURSTCOUNTER 0x12 -#define TOUPCAM_IOCONTROLTYPE_GET_COUNTERSOURCE 0x13 /* 0x00 => Opto-isolated input, 0x01 => GPIO0, 0x02 => GPIO1 */ -#define TOUPCAM_IOCONTROLTYPE_SET_COUNTERSOURCE 0x14 -#define TOUPCAM_IOCONTROLTYPE_GET_COUNTERVALUE 0x15 /* Counter Value, range: [1 ~ 65535] */ -#define TOUPCAM_IOCONTROLTYPE_SET_COUNTERVALUE 0x16 -#define TOUPCAM_IOCONTROLTYPE_SET_RESETCOUNTER 0x18 -#define TOUPCAM_IOCONTROLTYPE_GET_PWM_FREQ 0x19 -#define TOUPCAM_IOCONTROLTYPE_SET_PWM_FREQ 0x1a -#define TOUPCAM_IOCONTROLTYPE_GET_PWM_DUTYRATIO 0x1b -#define TOUPCAM_IOCONTROLTYPE_SET_PWM_DUTYRATIO 0x1c -#define TOUPCAM_IOCONTROLTYPE_GET_PWMSOURCE 0x1d /* 0x00 => Opto-isolated input, 0x01 => GPIO0, 0x02 => GPIO1 */ -#define TOUPCAM_IOCONTROLTYPE_SET_PWMSOURCE 0x1e -#define TOUPCAM_IOCONTROLTYPE_GET_OUTPUTMODE 0x1f /* - 0x00 => Frame Trigger Wait - 0x01 => Exposure Active - 0x02 => Strobe - 0x03 => User output - 0x04 => Counter Output - 0x05 => Timer Output - */ -#define TOUPCAM_IOCONTROLTYPE_SET_OUTPUTMODE 0x20 -#define TOUPCAM_IOCONTROLTYPE_GET_STROBEDELAYMODE 0x21 /* boolean, 0 => pre-delay, 1 => delay; compared to exposure active signal */ -#define TOUPCAM_IOCONTROLTYPE_SET_STROBEDELAYMODE 0x22 -#define TOUPCAM_IOCONTROLTYPE_GET_STROBEDELAYTIME 0x23 /* Strobe delay or pre-delay time in microseconds, range: [0, 5000000] */ -#define TOUPCAM_IOCONTROLTYPE_SET_STROBEDELAYTIME 0x24 -#define TOUPCAM_IOCONTROLTYPE_GET_STROBEDURATION 0x25 /* Strobe duration time in microseconds, range: [0, 5000000] */ -#define TOUPCAM_IOCONTROLTYPE_SET_STROBEDURATION 0x26 -#define TOUPCAM_IOCONTROLTYPE_GET_USERVALUE 0x27 /* - bit0 => Opto-isolated output - bit1 => GPIO0 output - bit2 => GPIO1 output - */ -#define TOUPCAM_IOCONTROLTYPE_SET_USERVALUE 0x28 -#define TOUPCAM_IOCONTROLTYPE_GET_UART_ENABLE 0x29 /* enable: 1 => on; 0 => off */ -#define TOUPCAM_IOCONTROLTYPE_SET_UART_ENABLE 0x2a -#define TOUPCAM_IOCONTROLTYPE_GET_UART_BAUDRATE 0x2b /* baud rate: 0 => 9600; 1 => 19200; 2 => 38400; 3 => 57600; 4 => 115200 */ -#define TOUPCAM_IOCONTROLTYPE_SET_UART_BAUDRATE 0x2c -#define TOUPCAM_IOCONTROLTYPE_GET_UART_LINEMODE 0x2d /* line mode: 0 => TX(GPIO_0)/RX(GPIO_1); 1 => TX(GPIO_1)/RX(GPIO_0) */ -#define TOUPCAM_IOCONTROLTYPE_SET_UART_LINEMODE 0x2e -#define TOUPCAM_IOCONTROLTYPE_GET_EXPO_ACTIVE_MODE 0x2f /* exposure time signal: 0 => specified line, 1 => common exposure time */ -#define TOUPCAM_IOCONTROLTYPE_SET_EXPO_ACTIVE_MODE 0x30 -#define TOUPCAM_IOCONTROLTYPE_GET_EXPO_START_LINE 0x31 /* exposure start line, default: 0 */ -#define TOUPCAM_IOCONTROLTYPE_SET_EXPO_START_LINE 0x32 -#define TOUPCAM_IOCONTROLTYPE_GET_EXPO_END_LINE 0x33 /* exposure end line, default: 0 - end line must be no less than start line - */ -#define TOUPCAM_IOCONTROLTYPE_SET_EXPO_END_LINE 0x34 -#define TOUPCAM_IOCONTROLTYPE_GET_EXEVT_ACTIVE_MODE 0x35 /* exposure event: 0 => specified line, 1 => common exposure time */ -#define TOUPCAM_IOCONTROLTYPE_SET_EXEVT_ACTIVE_MODE 0x36 -#define TOUPCAM_IOCONTROLTYPE_GET_OUTPUTCOUNTERVALUE 0x37 /* Output Counter Value, range: [0 ~ 65535] */ -#define TOUPCAM_IOCONTROLTYPE_SET_OUTPUTCOUNTERVALUE 0x38 -#define TOUPCAM_IOCONTROLTYPE_SET_OUTPUT_PAUSE 0x3a /* Output pause: 1 => puase, 0 => unpause */ -#define TOUPCAM_IOCONTROLTYPE_GET_INPUT_STATE 0x3c /* Input state: 0 (low level) or 1 (high level) */ -#define TOUPCAM_IOCONTROLTYPE_GET_USER_PULSE_HIGH 0x3e /* User pulse high level time: us */ -#define TOUPCAM_IOCONTROLTYPE_SET_USER_PULSE_HIGH 0x3f -#define TOUPCAM_IOCONTROLTYPE_GET_USER_PULSE_LOW 0x40 /* User pulse low level time: us */ -#define TOUPCAM_IOCONTROLTYPE_SET_USER_PULSE_LOW 0x41 -#define TOUPCAM_IOCONTROLTYPE_GET_USER_PULSE_NUMBER 0x42 /* User pulse number: default 0 */ -#define TOUPCAM_IOCONTROLTYPE_SET_USER_PULSE_NUMBER 0x43 - -#define TOUPCAM_IOCONTROL_DELAYTIME_MAX (5 * 1000 * 1000) +#define TOUPCAM_IOCONTROLTYPE_GET_SUPPORTEDMODE 0x01 /* 0x01 => Input, 0x02 => Output, (0x01 | 0x02) => support both Input and Output */ +#define TOUPCAM_IOCONTROLTYPE_GET_GPIODIR 0x03 /* 0x00 => Input, 0x01 => Output */ +#define TOUPCAM_IOCONTROLTYPE_SET_GPIODIR 0x04 +#define TOUPCAM_IOCONTROLTYPE_GET_FORMAT 0x05 /* + 0x00 => not connected + 0x01 => Tri-state: Tri-state mode (Not driven) + 0x02 => TTL: TTL level signals + 0x03 => LVDS: LVDS level signals + 0x04 => RS422: RS422 level signals + 0x05 => Opto-coupled + */ +#define TOUPCAM_IOCONTROLTYPE_SET_FORMAT 0x06 +#define TOUPCAM_IOCONTROLTYPE_GET_OUTPUTINVERTER 0x07 /* boolean, only support output signal */ +#define TOUPCAM_IOCONTROLTYPE_SET_OUTPUTINVERTER 0x08 +#define TOUPCAM_IOCONTROLTYPE_GET_INPUTACTIVATION 0x09 /* 0x00 => Rising edge, 0x01 => Falling edge, 0x02 => Level high, 0x03 => Level low */ +#define TOUPCAM_IOCONTROLTYPE_SET_INPUTACTIVATION 0x0a +#define TOUPCAM_IOCONTROLTYPE_GET_DEBOUNCERTIME 0x0b /* debouncer time in microseconds, range: [0, 20000] */ +#define TOUPCAM_IOCONTROLTYPE_SET_DEBOUNCERTIME 0x0c +#define TOUPCAM_IOCONTROLTYPE_GET_TRIGGERSOURCE 0x0d /* + 0x00 => Opto-isolated input + 0x01 => GPIO0 + 0x02 => GPIO1 + 0x03 => Counter + 0x04 => PWM + 0x05 => Software + */ +#define TOUPCAM_IOCONTROLTYPE_SET_TRIGGERSOURCE 0x0e +#define TOUPCAM_IOCONTROLTYPE_GET_TRIGGERDELAY 0x0f /* Trigger delay time in microseconds, range: [0, 5000000] */ +#define TOUPCAM_IOCONTROLTYPE_SET_TRIGGERDELAY 0x10 +#define TOUPCAM_IOCONTROLTYPE_GET_BURSTCOUNTER 0x11 /* Burst Counter, range: [1 ~ 65535] */ +#define TOUPCAM_IOCONTROLTYPE_SET_BURSTCOUNTER 0x12 +#define TOUPCAM_IOCONTROLTYPE_GET_COUNTERSOURCE 0x13 /* 0x00 => Opto-isolated input, 0x01 => GPIO0, 0x02 => GPIO1 */ +#define TOUPCAM_IOCONTROLTYPE_SET_COUNTERSOURCE 0x14 +#define TOUPCAM_IOCONTROLTYPE_GET_COUNTERVALUE 0x15 /* Counter Value, range: [1 ~ 65535] */ +#define TOUPCAM_IOCONTROLTYPE_SET_COUNTERVALUE 0x16 +#define TOUPCAM_IOCONTROLTYPE_SET_RESETCOUNTER 0x18 +#define TOUPCAM_IOCONTROLTYPE_GET_PWM_FREQ 0x19 +#define TOUPCAM_IOCONTROLTYPE_SET_PWM_FREQ 0x1a +#define TOUPCAM_IOCONTROLTYPE_GET_PWM_DUTYRATIO 0x1b +#define TOUPCAM_IOCONTROLTYPE_SET_PWM_DUTYRATIO 0x1c +#define TOUPCAM_IOCONTROLTYPE_GET_PWMSOURCE 0x1d /* 0x00 => Opto-isolated input, 0x01 => GPIO0, 0x02 => GPIO1 */ +#define TOUPCAM_IOCONTROLTYPE_SET_PWMSOURCE 0x1e +#define TOUPCAM_IOCONTROLTYPE_GET_OUTPUTMODE 0x1f /* + 0x00 => Frame Trigger Wait + 0x01 => Exposure Active + 0x02 => Strobe + 0x03 => User output + 0x04 => Counter Output + 0x05 => Timer Output + */ +#define TOUPCAM_IOCONTROLTYPE_SET_OUTPUTMODE 0x20 +#define TOUPCAM_IOCONTROLTYPE_GET_STROBEDELAYMODE 0x21 /* boolean, 0 => pre-delay, 1 => delay; compared to exposure active signal */ +#define TOUPCAM_IOCONTROLTYPE_SET_STROBEDELAYMODE 0x22 +#define TOUPCAM_IOCONTROLTYPE_GET_STROBEDELAYTIME 0x23 /* Strobe delay or pre-delay time in microseconds, range: [0, 5000000] */ +#define TOUPCAM_IOCONTROLTYPE_SET_STROBEDELAYTIME 0x24 +#define TOUPCAM_IOCONTROLTYPE_GET_STROBEDURATION 0x25 /* Strobe duration time in microseconds, range: [0, 5000000] */ +#define TOUPCAM_IOCONTROLTYPE_SET_STROBEDURATION 0x26 +#define TOUPCAM_IOCONTROLTYPE_GET_USERVALUE 0x27 /* + bit0 => Opto-isolated output + bit1 => GPIO0 output + bit2 => GPIO1 output + */ +#define TOUPCAM_IOCONTROLTYPE_SET_USERVALUE 0x28 +#define TOUPCAM_IOCONTROLTYPE_GET_UART_ENABLE 0x29 /* enable: 1 => on; 0 => off */ +#define TOUPCAM_IOCONTROLTYPE_SET_UART_ENABLE 0x2a +#define TOUPCAM_IOCONTROLTYPE_GET_UART_BAUDRATE 0x2b /* baud rate: 0 => 9600; 1 => 19200; 2 => 38400; 3 => 57600; 4 => 115200 */ +#define TOUPCAM_IOCONTROLTYPE_SET_UART_BAUDRATE 0x2c +#define TOUPCAM_IOCONTROLTYPE_GET_UART_LINEMODE 0x2d /* line mode: 0 => TX(GPIO_0)/RX(GPIO_1); 1 => TX(GPIO_1)/RX(GPIO_0) */ +#define TOUPCAM_IOCONTROLTYPE_SET_UART_LINEMODE 0x2e +#define TOUPCAM_IOCONTROLTYPE_GET_EXPO_ACTIVE_MODE 0x2f /* exposure time signal: 0 => specified line, 1 => common exposure time */ +#define TOUPCAM_IOCONTROLTYPE_SET_EXPO_ACTIVE_MODE 0x30 +#define TOUPCAM_IOCONTROLTYPE_GET_EXPO_START_LINE 0x31 /* exposure start line, default: 0 */ +#define TOUPCAM_IOCONTROLTYPE_SET_EXPO_START_LINE 0x32 +#define TOUPCAM_IOCONTROLTYPE_GET_EXPO_END_LINE 0x33 /* exposure end line, default: 0 + end line must be no less than start line + */ +#define TOUPCAM_IOCONTROLTYPE_SET_EXPO_END_LINE 0x34 +#define TOUPCAM_IOCONTROLTYPE_GET_EXEVT_ACTIVE_MODE 0x35 /* exposure event: 0 => specified line, 1 => common exposure time */ +#define TOUPCAM_IOCONTROLTYPE_SET_EXEVT_ACTIVE_MODE 0x36 +#define TOUPCAM_IOCONTROLTYPE_GET_OUTPUTCOUNTERVALUE 0x37 /* Output Counter Value, range: [0 ~ 65535] */ +#define TOUPCAM_IOCONTROLTYPE_SET_OUTPUTCOUNTERVALUE 0x38 +#define TOUPCAM_IOCONTROLTYPE_SET_OUTPUT_PAUSE 0x3a /* Output pause: 1 => puase, 0 => unpause */ +#define TOUPCAM_IOCONTROLTYPE_GET_INPUT_STATE 0x3b /* Input state: 0 (low level) or 1 (high level) */ +#define TOUPCAM_IOCONTROLTYPE_GET_USER_PULSE_HIGH 0x3d /* User pulse high level time: us */ +#define TOUPCAM_IOCONTROLTYPE_SET_USER_PULSE_HIGH 0x3e +#define TOUPCAM_IOCONTROLTYPE_GET_USER_PULSE_LOW 0x3f /* User pulse low level time: us */ +#define TOUPCAM_IOCONTROLTYPE_SET_USER_PULSE_LOW 0x40 +#define TOUPCAM_IOCONTROLTYPE_GET_USER_PULSE_NUMBER 0x41 /* User pulse number: default 0 */ +#define TOUPCAM_IOCONTROLTYPE_SET_USER_PULSE_NUMBER 0x42 +#define TOUPCAM_IOCONTROLTYPE_GET_EXTERNAL_TRIGGER_NUMBER 0x43 /* External trigger number */ +#define TOUPCAM_IOCONTROLTYPE_GET_DEBOUNCER_TRIGGER_NUMBER 0x45 /* Trigger signal number after debounce */ +#define TOUPCAM_IOCONTROLTYPE_GET_EFFECTIVE_TRIGGER_NUMBER 0x47 /* Effective trigger signal number */ + +#define TOUPCAM_IOCONTROL_DELAYTIME_MAX (5 * 1000 * 1000) /* ioLineNumber: diff --git a/libtoupcam/x64/libtoupcam.bin b/libtoupcam/x64/libtoupcam.bin index 99a1d07d2..647d44d57 100644 Binary files a/libtoupcam/x64/libtoupcam.bin and b/libtoupcam/x64/libtoupcam.bin differ diff --git a/libtscam/CMakeLists.txt b/libtscam/CMakeLists.txt index c7bfe20ff..83d1d2092 100644 --- a/libtscam/CMakeLists.txt +++ b/libtscam/CMakeLists.txt @@ -1,8 +1,8 @@ cmake_minimum_required(VERSION 3.16) project (libtscam) -set (LIBTSCAM_VERSION "55.25633") -set (LIBTSCAM_SOVERSION "55") +set (LIBTSCAM_VERSION "56.26054") +set (LIBTSCAM_SOVERSION "56") list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules/") list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../cmake_modules/") diff --git a/libtscam/arm64/libtscam.bin b/libtscam/arm64/libtscam.bin index 8ea5576cd..5ee551c76 100644 Binary files a/libtscam/arm64/libtscam.bin and b/libtscam/arm64/libtscam.bin differ diff --git a/libtscam/armhf/libtscam.bin b/libtscam/armhf/libtscam.bin index 1fafd0efb..18d0a4934 100644 Binary files a/libtscam/armhf/libtscam.bin and b/libtscam/armhf/libtscam.bin differ diff --git a/libtscam/mac/libtscam.bin b/libtscam/mac/libtscam.bin index 8851f5336..1abcd2ea9 100644 Binary files a/libtscam/mac/libtscam.bin and b/libtscam/mac/libtscam.bin differ diff --git a/libtscam/tscam.h b/libtscam/tscam.h index 552785774..31296175b 100644 --- a/libtscam/tscam.h +++ b/libtscam/tscam.h @@ -1,7 +1,7 @@ #ifndef __tscam_h__ #define __tscam_h__ -/* Version: 55.25633.20240519 */ +/* Version: 56.26054.20240715 */ /* Platform & Architecture: (1) Win32: @@ -92,21 +92,21 @@ extern "C" { /* */ /********************************************************************************/ #if defined(TSCAM_HRESULT_ERRORCODE_NEEDED) -#define S_OK 0x00000000 /* Success */ -#define S_FALSE 0x00000001 /* Yet another success */ -#define E_UNEXPECTED 0x8000ffff /* Catastrophic failure */ -#define E_NOTIMPL 0x80004001 /* Not supported or not implemented */ -#define E_NOINTERFACE 0x80004002 -#define E_ACCESSDENIED 0x80070005 /* Permission denied */ -#define E_OUTOFMEMORY 0x8007000e /* Out of memory */ -#define E_INVALIDARG 0x80070057 /* One or more arguments are not valid */ -#define E_POINTER 0x80004003 /* Pointer that is not valid */ -#define E_FAIL 0x80004005 /* Generic failure */ -#define E_WRONG_THREAD 0x8001010e /* Call function in the wrong thread */ -#define E_GEN_FAILURE 0x8007001f /* Device not functioning */ -#define E_BUSY 0x800700aa /* The requested resource is in use */ -#define E_PENDING 0x8000000a /* The data necessary to complete this operation is not yet available */ -#define E_TIMEOUT 0x8001011f /* This operation returned because the timeout period expired */ +#define S_OK (HRESULT)(0x00000000) /* Success */ +#define S_FALSE (HRESULT)(0x00000001) /* Yet another success */ +#define E_UNEXPECTED (HRESULT)(0x8000ffff) /* Catastrophic failure */ +#define E_NOTIMPL (HRESULT)(0x80004001) /* Not supported or not implemented */ +#define E_NOINTERFACE (HRESULT)(0x80004002) +#define E_ACCESSDENIED (HRESULT)(0x80070005) /* Permission denied */ +#define E_OUTOFMEMORY (HRESULT)(0x8007000e) /* Out of memory */ +#define E_INVALIDARG (HRESULT)(0x80070057) /* One or more arguments are not valid */ +#define E_POINTER (HRESULT)(0x80004003) /* Pointer that is not valid */ +#define E_FAIL (HRESULT)(0x80004005) /* Generic failure */ +#define E_WRONG_THREAD (HRESULT)(0x8001010e) /* Call function in the wrong thread */ +#define E_GEN_FAILURE (HRESULT)(0x8007001f) /* Device not functioning */ +#define E_BUSY (HRESULT)(0x800700aa) /* The requested resource is in use */ +#define E_PENDING (HRESULT)(0x8000000a) /* The data necessary to complete this operation is not yet available */ +#define E_TIMEOUT (HRESULT)(0x8001011f) /* This operation returned because the timeout period expired */ #endif /* handle */ @@ -229,9 +229,6 @@ typedef struct Tscam_t { int unused; } *HTscam; #define TSCAM_DENOISE_DEF 0 /* denoise */ #define TSCAM_DENOISE_MIN 0 /* denoise */ #define TSCAM_DENOISE_MAX 100 /* denoise */ -#define TSCAM_TEC_TARGET_MIN (-500) /* TEC target: -50.0 degrees Celsius */ -#define TSCAM_TEC_TARGET_DEF 100 /* 10.0 degrees Celsius */ -#define TSCAM_TEC_TARGET_MAX 400 /* TEC target: 40.0 degrees Celsius */ #define TSCAM_HEARTBEAT_MIN 100 /* millisecond */ #define TSCAM_HEARTBEAT_MAX 10000 /* millisecond */ #define TSCAM_AE_PERCENT_MIN 0 /* auto exposure percent; 0 or 100 => full roi average, means "disabled" */ @@ -239,12 +236,12 @@ typedef struct Tscam_t { int unused; } *HTscam; #define TSCAM_AE_PERCENT_DEF 10 /* auto exposure percent: enabled, percentage = 10% */ #define TSCAM_NOPACKET_TIMEOUT_MIN 500 /* no packet timeout minimum: 500ms */ #define TSCAM_NOFRAME_TIMEOUT_MIN 500 /* no frame timeout minimum: 500ms */ -#define TSCAM_DYNAMIC_DEFECT_T1_MIN 10 /* dynamic defect pixel correction, threshold, means: 1.0 */ -#define TSCAM_DYNAMIC_DEFECT_T1_MAX 100 /* means: 10.0 */ -#define TSCAM_DYNAMIC_DEFECT_T1_DEF 13 /* means: 1.3 */ -#define TSCAM_DYNAMIC_DEFECT_T2_MIN 0 /* dynamic defect pixel correction, value, means: 0.00 */ -#define TSCAM_DYNAMIC_DEFECT_T2_MAX 100 /* means: 1.00 */ -#define TSCAM_DYNAMIC_DEFECT_T2_DEF 100 +#define TSCAM_DYNAMIC_DEFECT_T1_MIN 0 /* dynamic defect pixel correction, dead pixel ratio: the smaller the dead ratio is, the more stringent the conditions for processing dead pixels are, and fewer pixels will be processed */ +#define TSCAM_DYNAMIC_DEFECT_T1_MAX 100 /* means: 1.0 */ +#define TSCAM_DYNAMIC_DEFECT_T1_DEF 90 /* means: 0.9 */ +#define TSCAM_DYNAMIC_DEFECT_T2_MIN 0 /* dynamic defect pixel correction, hot pixel ratio: the smaller the hot ratio is, the more stringent the conditions for processing hot pixels are, and fewer pixels will be processed */ +#define TSCAM_DYNAMIC_DEFECT_T2_MAX 100 +#define TSCAM_DYNAMIC_DEFECT_T2_DEF 90 #define TSCAM_HDR_K_MIN 1 /* HDR synthesize */ #define TSCAM_HDR_K_MAX 25500 #define TSCAM_HDR_B_MIN 0 @@ -289,7 +286,7 @@ typedef struct { } TscamDeviceV2; /* device instance for enumerating */ /* - get the version of this dll/so/dylib, which is: 55.25633.20240519 + get the version of this dll/so/dylib, which is: 56.26054.20240715 */ #if defined(_WIN32) TSCAM_API(const wchar_t*) Tscam_Version(); @@ -821,7 +818,7 @@ TSCAM_API(HRESULT) Tscam_read_EEPROM(HTscam h, unsigned addr, unsigned char* pB TSCAM_API(HRESULT) Tscam_read_Pipe(HTscam h, unsigned pipeId, void* pBuffer, unsigned nBufferLen); TSCAM_API(HRESULT) Tscam_write_Pipe(HTscam h, unsigned pipeId, const void* pBuffer, unsigned nBufferLen); TSCAM_API(HRESULT) Tscam_feed_Pipe(HTscam h, unsigned pipeId); - + #define TSCAM_OPTION_NOFRAME_TIMEOUT 0x01 /* no frame timeout: 0 => disable, positive value (>= TSCAM_NOFRAME_TIMEOUT_MIN) => timeout milliseconds. default: disable */ #define TSCAM_OPTION_THREAD_PRIORITY 0x02 /* set the priority of the internal thread which grab data from the usb device. Win: iValue: 0 => THREAD_PRIORITY_NORMAL; 1 => THREAD_PRIORITY_ABOVE_NORMAL; 2 => THREAD_PRIORITY_HIGHEST; 3 => THREAD_PRIORITY_TIME_CRITICAL; default: 1; see: https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-setthreadpriority @@ -847,7 +844,7 @@ TSCAM_API(HRESULT) Tscam_feed_Pipe(HTscam h, unsigned pipeId); 3: Gain Preferred default value: 1 */ -#define TSCAM_OPTION_FRAMERATE 0x11 /* limit the frame rate, range=[0, 63], the default value 0 means no limit */ +#define TSCAM_OPTION_FRAMERATE 0x11 /* limit the frame rate, the default value 0 means no limit */ #define TSCAM_OPTION_DEMOSAIC 0x12 /* demosaic method for both video and still image: BILINEAR = 0, VNG(Variable Number of Gradients) = 1, PPG(Patterned Pixel Grouping) = 2, AHD(Adaptive Homogeneity Directed) = 3, EA(Edge Aware) = 4, see https://en.wikipedia.org/wiki/Demosaicing, default value: 0 */ #define TSCAM_OPTION_DEMOSAIC_VIDEO 0x13 /* demosaic method for video */ #define TSCAM_OPTION_DEMOSAIC_STILL 0x14 /* demosaic method for still image */ @@ -1007,8 +1004,8 @@ TSCAM_API(HRESULT) Tscam_feed_Pipe(HTscam h, unsigned pipeId); */ #define TSCAM_OPTION_HIGH_FULLWELL 0x55 /* high fullwell capacity: 0 => disable, 1 => enable */ #define TSCAM_OPTION_DYNAMIC_DEFECT 0x56 /* dynamic defect pixel correction: - threshold, t1: (high 16 bits): [10, 100], means: [1.0, 10.0] - value, t2: (low 16 bits): [0, 100], means: [0.00, 1.00] + dead pixel ratio, t1: (high 16 bits): [0, 100], means: [0.0, 1.0] + hot pixel ratio, t2: (low 16 bits): [0, 100], means: [0.0, 1.0] */ #define TSCAM_OPTION_HDR_KB 0x57 /* HDR synthesize K (high 16 bits): [1, 25500] @@ -1021,8 +1018,8 @@ TSCAM_API(HRESULT) Tscam_feed_Pipe(HTscam h, unsigned pipeId); */ #define TSCAM_OPTION_GIGETIMEOUT 0x5a /* For GigE cameras, the application periodically sends heartbeat signals to the camera to keep the connection to the camera alive. If the camera doesn't receive heartbeat signals within the time period specified by the heartbeat timeout counter, the camera resets the connection. - When the application is stopped by the debugger, the application cannot create the heartbeat signals - 0 => auto: when the camera is opened, disable if debugger is present or enable if no debugger is present + When the application is stopped by the debugger, the application cannot send the heartbeat signals + 0 => auto: when the camera is opened, enable if no debugger is present or disable if debugger is present 1 => enable 2 => disable default: auto @@ -1063,6 +1060,9 @@ TSCAM_API(HRESULT) Tscam_feed_Pipe(HTscam h, unsigned pipeId); 21 => twilight 22 => twilight_shifted 23 => turbo + 24 => red + 25 => green + 26 => blue */ #define TSCAM_OPTION_LOW_POWERCONSUMPTION 0x66 /* Low Power Consumption: 0 => disable, 1 => enable */ #define TSCAM_OPTION_FPNC 0x67 /* Fix Pattern Noise Correction @@ -1092,6 +1092,7 @@ TSCAM_API(HRESULT) Tscam_feed_Pipe(HTscam h, unsigned pipeId); n>0: every n millisecond(s) n<0: every -n frame */ +#define TSCAM_OPTION_TECTARGET_RANGE 0x6d /* TEC target range: min(low 16 bits) = (short)(val & 0xffff), max(high 16 bits) = (short)((val >> 16) & 0xffff) */ /* pixel format */ #define TSCAM_PIXELFORMAT_RAW8 0x00 @@ -1137,97 +1138,100 @@ TSCAM_API(HRESULT) Tscam_put_RoiN(HTscam h, unsigned xOffset[], unsigned yOffse TSCAM_API(HRESULT) Tscam_put_XY(HTscam h, int x, int y); -#define TSCAM_IOCONTROLTYPE_GET_SUPPORTEDMODE 0x01 /* 0x01 => Input, 0x02 => Output, (0x01 | 0x02) => support both Input and Output */ -#define TSCAM_IOCONTROLTYPE_GET_GPIODIR 0x03 /* 0x00 => Input, 0x01 => Output */ -#define TSCAM_IOCONTROLTYPE_SET_GPIODIR 0x04 -#define TSCAM_IOCONTROLTYPE_GET_FORMAT 0x05 /* - 0x00 => not connected - 0x01 => Tri-state: Tri-state mode (Not driven) - 0x02 => TTL: TTL level signals - 0x03 => LVDS: LVDS level signals - 0x04 => RS422: RS422 level signals - 0x05 => Opto-coupled - */ -#define TSCAM_IOCONTROLTYPE_SET_FORMAT 0x06 -#define TSCAM_IOCONTROLTYPE_GET_OUTPUTINVERTER 0x07 /* boolean, only support output signal */ -#define TSCAM_IOCONTROLTYPE_SET_OUTPUTINVERTER 0x08 -#define TSCAM_IOCONTROLTYPE_GET_INPUTACTIVATION 0x09 /* 0x00 => Rising edge, 0x01 => Falling edge, 0x02 => Level high, 0x03 => Level low */ -#define TSCAM_IOCONTROLTYPE_SET_INPUTACTIVATION 0x0a -#define TSCAM_IOCONTROLTYPE_GET_DEBOUNCERTIME 0x0b /* debouncer time in microseconds, range: [0, 20000] */ -#define TSCAM_IOCONTROLTYPE_SET_DEBOUNCERTIME 0x0c -#define TSCAM_IOCONTROLTYPE_GET_TRIGGERSOURCE 0x0d /* - 0x00 => Opto-isolated input - 0x01 => GPIO0 - 0x02 => GPIO1 - 0x03 => Counter - 0x04 => PWM - 0x05 => Software - */ -#define TSCAM_IOCONTROLTYPE_SET_TRIGGERSOURCE 0x0e -#define TSCAM_IOCONTROLTYPE_GET_TRIGGERDELAY 0x0f /* Trigger delay time in microseconds, range: [0, 5000000] */ -#define TSCAM_IOCONTROLTYPE_SET_TRIGGERDELAY 0x10 -#define TSCAM_IOCONTROLTYPE_GET_BURSTCOUNTER 0x11 /* Burst Counter, range: [1 ~ 65535] */ -#define TSCAM_IOCONTROLTYPE_SET_BURSTCOUNTER 0x12 -#define TSCAM_IOCONTROLTYPE_GET_COUNTERSOURCE 0x13 /* 0x00 => Opto-isolated input, 0x01 => GPIO0, 0x02 => GPIO1 */ -#define TSCAM_IOCONTROLTYPE_SET_COUNTERSOURCE 0x14 -#define TSCAM_IOCONTROLTYPE_GET_COUNTERVALUE 0x15 /* Counter Value, range: [1 ~ 65535] */ -#define TSCAM_IOCONTROLTYPE_SET_COUNTERVALUE 0x16 -#define TSCAM_IOCONTROLTYPE_SET_RESETCOUNTER 0x18 -#define TSCAM_IOCONTROLTYPE_GET_PWM_FREQ 0x19 -#define TSCAM_IOCONTROLTYPE_SET_PWM_FREQ 0x1a -#define TSCAM_IOCONTROLTYPE_GET_PWM_DUTYRATIO 0x1b -#define TSCAM_IOCONTROLTYPE_SET_PWM_DUTYRATIO 0x1c -#define TSCAM_IOCONTROLTYPE_GET_PWMSOURCE 0x1d /* 0x00 => Opto-isolated input, 0x01 => GPIO0, 0x02 => GPIO1 */ -#define TSCAM_IOCONTROLTYPE_SET_PWMSOURCE 0x1e -#define TSCAM_IOCONTROLTYPE_GET_OUTPUTMODE 0x1f /* - 0x00 => Frame Trigger Wait - 0x01 => Exposure Active - 0x02 => Strobe - 0x03 => User output - 0x04 => Counter Output - 0x05 => Timer Output - */ -#define TSCAM_IOCONTROLTYPE_SET_OUTPUTMODE 0x20 -#define TSCAM_IOCONTROLTYPE_GET_STROBEDELAYMODE 0x21 /* boolean, 0 => pre-delay, 1 => delay; compared to exposure active signal */ -#define TSCAM_IOCONTROLTYPE_SET_STROBEDELAYMODE 0x22 -#define TSCAM_IOCONTROLTYPE_GET_STROBEDELAYTIME 0x23 /* Strobe delay or pre-delay time in microseconds, range: [0, 5000000] */ -#define TSCAM_IOCONTROLTYPE_SET_STROBEDELAYTIME 0x24 -#define TSCAM_IOCONTROLTYPE_GET_STROBEDURATION 0x25 /* Strobe duration time in microseconds, range: [0, 5000000] */ -#define TSCAM_IOCONTROLTYPE_SET_STROBEDURATION 0x26 -#define TSCAM_IOCONTROLTYPE_GET_USERVALUE 0x27 /* - bit0 => Opto-isolated output - bit1 => GPIO0 output - bit2 => GPIO1 output - */ -#define TSCAM_IOCONTROLTYPE_SET_USERVALUE 0x28 -#define TSCAM_IOCONTROLTYPE_GET_UART_ENABLE 0x29 /* enable: 1 => on; 0 => off */ -#define TSCAM_IOCONTROLTYPE_SET_UART_ENABLE 0x2a -#define TSCAM_IOCONTROLTYPE_GET_UART_BAUDRATE 0x2b /* baud rate: 0 => 9600; 1 => 19200; 2 => 38400; 3 => 57600; 4 => 115200 */ -#define TSCAM_IOCONTROLTYPE_SET_UART_BAUDRATE 0x2c -#define TSCAM_IOCONTROLTYPE_GET_UART_LINEMODE 0x2d /* line mode: 0 => TX(GPIO_0)/RX(GPIO_1); 1 => TX(GPIO_1)/RX(GPIO_0) */ -#define TSCAM_IOCONTROLTYPE_SET_UART_LINEMODE 0x2e -#define TSCAM_IOCONTROLTYPE_GET_EXPO_ACTIVE_MODE 0x2f /* exposure time signal: 0 => specified line, 1 => common exposure time */ -#define TSCAM_IOCONTROLTYPE_SET_EXPO_ACTIVE_MODE 0x30 -#define TSCAM_IOCONTROLTYPE_GET_EXPO_START_LINE 0x31 /* exposure start line, default: 0 */ -#define TSCAM_IOCONTROLTYPE_SET_EXPO_START_LINE 0x32 -#define TSCAM_IOCONTROLTYPE_GET_EXPO_END_LINE 0x33 /* exposure end line, default: 0 - end line must be no less than start line - */ -#define TSCAM_IOCONTROLTYPE_SET_EXPO_END_LINE 0x34 -#define TSCAM_IOCONTROLTYPE_GET_EXEVT_ACTIVE_MODE 0x35 /* exposure event: 0 => specified line, 1 => common exposure time */ -#define TSCAM_IOCONTROLTYPE_SET_EXEVT_ACTIVE_MODE 0x36 -#define TSCAM_IOCONTROLTYPE_GET_OUTPUTCOUNTERVALUE 0x37 /* Output Counter Value, range: [0 ~ 65535] */ -#define TSCAM_IOCONTROLTYPE_SET_OUTPUTCOUNTERVALUE 0x38 -#define TSCAM_IOCONTROLTYPE_SET_OUTPUT_PAUSE 0x3a /* Output pause: 1 => puase, 0 => unpause */ -#define TSCAM_IOCONTROLTYPE_GET_INPUT_STATE 0x3c /* Input state: 0 (low level) or 1 (high level) */ -#define TSCAM_IOCONTROLTYPE_GET_USER_PULSE_HIGH 0x3e /* User pulse high level time: us */ -#define TSCAM_IOCONTROLTYPE_SET_USER_PULSE_HIGH 0x3f -#define TSCAM_IOCONTROLTYPE_GET_USER_PULSE_LOW 0x40 /* User pulse low level time: us */ -#define TSCAM_IOCONTROLTYPE_SET_USER_PULSE_LOW 0x41 -#define TSCAM_IOCONTROLTYPE_GET_USER_PULSE_NUMBER 0x42 /* User pulse number: default 0 */ -#define TSCAM_IOCONTROLTYPE_SET_USER_PULSE_NUMBER 0x43 - -#define TSCAM_IOCONTROL_DELAYTIME_MAX (5 * 1000 * 1000) +#define TSCAM_IOCONTROLTYPE_GET_SUPPORTEDMODE 0x01 /* 0x01 => Input, 0x02 => Output, (0x01 | 0x02) => support both Input and Output */ +#define TSCAM_IOCONTROLTYPE_GET_GPIODIR 0x03 /* 0x00 => Input, 0x01 => Output */ +#define TSCAM_IOCONTROLTYPE_SET_GPIODIR 0x04 +#define TSCAM_IOCONTROLTYPE_GET_FORMAT 0x05 /* + 0x00 => not connected + 0x01 => Tri-state: Tri-state mode (Not driven) + 0x02 => TTL: TTL level signals + 0x03 => LVDS: LVDS level signals + 0x04 => RS422: RS422 level signals + 0x05 => Opto-coupled + */ +#define TSCAM_IOCONTROLTYPE_SET_FORMAT 0x06 +#define TSCAM_IOCONTROLTYPE_GET_OUTPUTINVERTER 0x07 /* boolean, only support output signal */ +#define TSCAM_IOCONTROLTYPE_SET_OUTPUTINVERTER 0x08 +#define TSCAM_IOCONTROLTYPE_GET_INPUTACTIVATION 0x09 /* 0x00 => Rising edge, 0x01 => Falling edge, 0x02 => Level high, 0x03 => Level low */ +#define TSCAM_IOCONTROLTYPE_SET_INPUTACTIVATION 0x0a +#define TSCAM_IOCONTROLTYPE_GET_DEBOUNCERTIME 0x0b /* debouncer time in microseconds, range: [0, 20000] */ +#define TSCAM_IOCONTROLTYPE_SET_DEBOUNCERTIME 0x0c +#define TSCAM_IOCONTROLTYPE_GET_TRIGGERSOURCE 0x0d /* + 0x00 => Opto-isolated input + 0x01 => GPIO0 + 0x02 => GPIO1 + 0x03 => Counter + 0x04 => PWM + 0x05 => Software + */ +#define TSCAM_IOCONTROLTYPE_SET_TRIGGERSOURCE 0x0e +#define TSCAM_IOCONTROLTYPE_GET_TRIGGERDELAY 0x0f /* Trigger delay time in microseconds, range: [0, 5000000] */ +#define TSCAM_IOCONTROLTYPE_SET_TRIGGERDELAY 0x10 +#define TSCAM_IOCONTROLTYPE_GET_BURSTCOUNTER 0x11 /* Burst Counter, range: [1 ~ 65535] */ +#define TSCAM_IOCONTROLTYPE_SET_BURSTCOUNTER 0x12 +#define TSCAM_IOCONTROLTYPE_GET_COUNTERSOURCE 0x13 /* 0x00 => Opto-isolated input, 0x01 => GPIO0, 0x02 => GPIO1 */ +#define TSCAM_IOCONTROLTYPE_SET_COUNTERSOURCE 0x14 +#define TSCAM_IOCONTROLTYPE_GET_COUNTERVALUE 0x15 /* Counter Value, range: [1 ~ 65535] */ +#define TSCAM_IOCONTROLTYPE_SET_COUNTERVALUE 0x16 +#define TSCAM_IOCONTROLTYPE_SET_RESETCOUNTER 0x18 +#define TSCAM_IOCONTROLTYPE_GET_PWM_FREQ 0x19 +#define TSCAM_IOCONTROLTYPE_SET_PWM_FREQ 0x1a +#define TSCAM_IOCONTROLTYPE_GET_PWM_DUTYRATIO 0x1b +#define TSCAM_IOCONTROLTYPE_SET_PWM_DUTYRATIO 0x1c +#define TSCAM_IOCONTROLTYPE_GET_PWMSOURCE 0x1d /* 0x00 => Opto-isolated input, 0x01 => GPIO0, 0x02 => GPIO1 */ +#define TSCAM_IOCONTROLTYPE_SET_PWMSOURCE 0x1e +#define TSCAM_IOCONTROLTYPE_GET_OUTPUTMODE 0x1f /* + 0x00 => Frame Trigger Wait + 0x01 => Exposure Active + 0x02 => Strobe + 0x03 => User output + 0x04 => Counter Output + 0x05 => Timer Output + */ +#define TSCAM_IOCONTROLTYPE_SET_OUTPUTMODE 0x20 +#define TSCAM_IOCONTROLTYPE_GET_STROBEDELAYMODE 0x21 /* boolean, 0 => pre-delay, 1 => delay; compared to exposure active signal */ +#define TSCAM_IOCONTROLTYPE_SET_STROBEDELAYMODE 0x22 +#define TSCAM_IOCONTROLTYPE_GET_STROBEDELAYTIME 0x23 /* Strobe delay or pre-delay time in microseconds, range: [0, 5000000] */ +#define TSCAM_IOCONTROLTYPE_SET_STROBEDELAYTIME 0x24 +#define TSCAM_IOCONTROLTYPE_GET_STROBEDURATION 0x25 /* Strobe duration time in microseconds, range: [0, 5000000] */ +#define TSCAM_IOCONTROLTYPE_SET_STROBEDURATION 0x26 +#define TSCAM_IOCONTROLTYPE_GET_USERVALUE 0x27 /* + bit0 => Opto-isolated output + bit1 => GPIO0 output + bit2 => GPIO1 output + */ +#define TSCAM_IOCONTROLTYPE_SET_USERVALUE 0x28 +#define TSCAM_IOCONTROLTYPE_GET_UART_ENABLE 0x29 /* enable: 1 => on; 0 => off */ +#define TSCAM_IOCONTROLTYPE_SET_UART_ENABLE 0x2a +#define TSCAM_IOCONTROLTYPE_GET_UART_BAUDRATE 0x2b /* baud rate: 0 => 9600; 1 => 19200; 2 => 38400; 3 => 57600; 4 => 115200 */ +#define TSCAM_IOCONTROLTYPE_SET_UART_BAUDRATE 0x2c +#define TSCAM_IOCONTROLTYPE_GET_UART_LINEMODE 0x2d /* line mode: 0 => TX(GPIO_0)/RX(GPIO_1); 1 => TX(GPIO_1)/RX(GPIO_0) */ +#define TSCAM_IOCONTROLTYPE_SET_UART_LINEMODE 0x2e +#define TSCAM_IOCONTROLTYPE_GET_EXPO_ACTIVE_MODE 0x2f /* exposure time signal: 0 => specified line, 1 => common exposure time */ +#define TSCAM_IOCONTROLTYPE_SET_EXPO_ACTIVE_MODE 0x30 +#define TSCAM_IOCONTROLTYPE_GET_EXPO_START_LINE 0x31 /* exposure start line, default: 0 */ +#define TSCAM_IOCONTROLTYPE_SET_EXPO_START_LINE 0x32 +#define TSCAM_IOCONTROLTYPE_GET_EXPO_END_LINE 0x33 /* exposure end line, default: 0 + end line must be no less than start line + */ +#define TSCAM_IOCONTROLTYPE_SET_EXPO_END_LINE 0x34 +#define TSCAM_IOCONTROLTYPE_GET_EXEVT_ACTIVE_MODE 0x35 /* exposure event: 0 => specified line, 1 => common exposure time */ +#define TSCAM_IOCONTROLTYPE_SET_EXEVT_ACTIVE_MODE 0x36 +#define TSCAM_IOCONTROLTYPE_GET_OUTPUTCOUNTERVALUE 0x37 /* Output Counter Value, range: [0 ~ 65535] */ +#define TSCAM_IOCONTROLTYPE_SET_OUTPUTCOUNTERVALUE 0x38 +#define TSCAM_IOCONTROLTYPE_SET_OUTPUT_PAUSE 0x3a /* Output pause: 1 => puase, 0 => unpause */ +#define TSCAM_IOCONTROLTYPE_GET_INPUT_STATE 0x3b /* Input state: 0 (low level) or 1 (high level) */ +#define TSCAM_IOCONTROLTYPE_GET_USER_PULSE_HIGH 0x3d /* User pulse high level time: us */ +#define TSCAM_IOCONTROLTYPE_SET_USER_PULSE_HIGH 0x3e +#define TSCAM_IOCONTROLTYPE_GET_USER_PULSE_LOW 0x3f /* User pulse low level time: us */ +#define TSCAM_IOCONTROLTYPE_SET_USER_PULSE_LOW 0x40 +#define TSCAM_IOCONTROLTYPE_GET_USER_PULSE_NUMBER 0x41 /* User pulse number: default 0 */ +#define TSCAM_IOCONTROLTYPE_SET_USER_PULSE_NUMBER 0x42 +#define TSCAM_IOCONTROLTYPE_GET_EXTERNAL_TRIGGER_NUMBER 0x43 /* External trigger number */ +#define TSCAM_IOCONTROLTYPE_GET_DEBOUNCER_TRIGGER_NUMBER 0x45 /* Trigger signal number after debounce */ +#define TSCAM_IOCONTROLTYPE_GET_EFFECTIVE_TRIGGER_NUMBER 0x47 /* Effective trigger signal number */ + +#define TSCAM_IOCONTROL_DELAYTIME_MAX (5 * 1000 * 1000) /* ioLineNumber: diff --git a/libtscam/x64/libtscam.bin b/libtscam/x64/libtscam.bin index 3bb84adac..44a45ada3 100644 Binary files a/libtscam/x64/libtscam.bin and b/libtscam/x64/libtscam.bin differ