13 #include "../MetaInstruments/TimeTagger.h"
17 #include "../include/qutools/tdcbase.h"
18 #include "../include/qutools/tdcmultidev.h"
19 #include "../include/qutools/tdchbt.h"
30 const std::source_location Location = std::source_location::current()) noexcept
45 virtual const char*
GetParamClassTag() const noexcept
override {
return "QutoolsTDCHardwareAdapterParams"; }
48 "Serial of the qutools TDC device to connect with" };
50 "Size of the qutools TDC device's timestamp buffer in samples (default value - can be changed by instruments).",
51 false, 1000, 1, 1000000, 1, 0 };
53 "Determines on which voltage of the connected signal to trigger (default value - can be changed by instruments).",
54 false, 1, -2, 3, .1, 3 };
56 "Determines on which edges of the connected signal to trigger (default value - can be changed by instruments).",
57 false, EdgeType::RisingEdge};
59 "Exposure time denoting an interval in which events are accumulated (default value - can be changed by instruments).",
60 false, 1000, 1, 65535, 100, 0 };
62 "Time interval in which events are considered to be coincident (default value - can be changed by instruments).",
63 false, 1000, 1, std::numeric_limits<ParamsConfigDialog::NumberType>::max(), 100, 0 };
101 static [[nodiscard]]
LockType Lock(
const std::chrono::milliseconds
Timeout = std::chrono::milliseconds(100));
128 constexpr
static auto Name() noexcept {
return "qutools TDC"; }
129 constexpr
static auto Category() noexcept {
return "I/O"; }
140 void EnableChannels(
bool EnableStartChannel, QutoolsTDCSyms::Int32 ChannelMask)
const;
148 QutoolsTDCSyms::TDC_SignalCond Conditioning = QutoolsTDCSyms::SCOND_MISC,
bool UseRisingEdge =
true,
double ThresholdInVolts = 1)
const;
150 QutoolsTDCSyms::TDC_FilterType FilterType = QutoolsTDCSyms::TDC_FilterType::FILTER_NONE, QutoolsTDCSyms::Int32 ChannelMask = 0)
const;
171 void ResetImpl(dispatch_tag<HardwareAdapterBase>)
override final;
179 void CheckError(const
int Result, const std::source_location Location = std::source_location::current()) const;
193 QutoolsTDCSyms::TDC_SignalCond Conditioning = QutoolsTDCSyms::SCOND_MISC,
bool UseRisingEdge = true,
double ThresholdInVolts = 1) const;
195 QutoolsTDCSyms::TDC_FilterType FilterType = QutoolsTDCSyms::TDC_FilterType::FILTER_NONE, QutoolsTDCSyms::Int32 ChannelMask = 0) const;
Implementation of DynExp hardware adapter objects.
DynExp's core class acts as the interface between the user interface and DynExp's internal data like ...
Defines the base class for a hardware adapter object. Hardware adapters describe interfaces/connectio...
Configurator class for HardwareAdapterBase.
Parameter class for HardwareAdapterBase.
HardwareAdapterParamsBase(ItemIDType ID, const DynExpCore &Core)
Constructs the parameters for a HardwareAdapterBase instance.
const std::thread::id OwnerThreadID
Thread id of the thread which has constructed (and owns) this Object instance.
const ParamsBasePtrType Params
Pointer to the parameter class instance belonging to this Object instance.
Refer to ParamsBase::dispatch_tag.
const ItemIDType ID
ID of the Object this parameter class instance belongs to.
const DynExpCore & Core
Reference to DynExp's core.
Tag for function dispatching mechanism within this class used when derived classes are not intended t...
DynExp exceptions are derived from this class. It contains basic information about the cause of the e...
Exception(std::string Description, const ErrorType Type=ErrorType::Error, const int ErrorCode=-1, const std::source_location Location=std::source_location::current()) noexcept
Constructs an exception. Constructor is noexcept, although std::runtime_error() might throw std::bad_...
const int ErrorCode
DynExp error code from DynExpErrorCodes::DynExpErrorCodes
Interface to allow synchronizing the access to derived classes between different threads by providing...
std::unique_lock< MutexType > LockType
DynExp's hardware namespace contains the implementation of DynExp hardware adapters which extend DynE...
std::unique_ptr< ParamsBase > ParamsBasePtrType
Alias for a pointer to the parameter system base class ParamsBase.
size_t ItemIDType
ID type of objects/items managed by DynExp.
DynExp's Util namespace contains commonly used functions and templates as well as extensions to Qt an...
std::chrono::duration< double, std::pico > picoseconds
Extends std::chrono by a duration data type for picoseconds.
ErrorType
DynExp's error types
std::vector< std::pair< TextType, ValueType > > TextValueListType
Type of a list containing key-value pairs where key is a text of type Util::TextType.
Accumulates include statements to provide a precompiled header.