14 #include "NetworkAnalogIn.pb.h"
15 #include "NetworkAnalogIn.grpc.pb.h"
19 template <
typename BaseInstr,
typename std::enable_if_t<std::is_base_of_v<AnalogIn, BaseInstr>,
int>,
typename... gRPCStubs>
20 class NetworkAnalogInT;
22 namespace NetworkAnalogInTasks
24 template <
typename BaseInstr,
typename std::enable_if_t<std::is_base_of_v<AnalogIn, BaseInstr>,
int>,
typename... gRPCStubs>
35 template <
typename BaseInstr,
typename std::enable_if_t<std::is_base_of_v<AnalogIn, BaseInstr>,
int>,
typename... gRPCStubs>
46 template <
typename BaseInstr,
typename std::enable_if_t<std::is_base_of_v<AnalogIn, BaseInstr>,
int>,
typename... gRPCStubs>
58 template <
typename BaseInstr,
typename std::enable_if_t<std::is_base_of_v<AnalogIn, BaseInstr>,
int>,
typename... gRPCStubs>
77 template <
typename BaseInstr,
typename std::enable_if_t<std::is_base_of_v<AnalogIn, BaseInstr>,
int>,
typename... gRPCStubs>
84 virtual const char*
GetParamClassTag() const noexcept
override {
return "NetworkAnalogInParams"; }
100 template <
typename BaseInstr,
typename std::enable_if_t<std::is_base_of_v<AnalogIn, BaseInstr>,
int>,
typename... gRPCStubs>
114 template <
typename BaseInstr,
typename std::enable_if_t<std::is_base_of_v<AnalogIn, BaseInstr>,
int>,
typename... gRPCStubs>
123 constexpr
static auto Name() noexcept {
return "Network Analog In"; }
135 auto InstrData = dynamic_InstrumentData_cast<NetworkAnalogInT>(this->GetInstrumentData());
136 StubPtr = InstrData->template GetStub<StubType>();
139 auto Response =
InvokeStubFunc(StubPtr, &StubType::Stub::GetHardwareLimits, {});
141 return Response.lowerlimit();
148 auto InstrData = dynamic_InstrumentData_cast<NetworkAnalogInT>(this->GetInstrumentData());
149 StubPtr = InstrData->template GetStub<StubType>();
152 auto Response =
InvokeStubFunc(StubPtr, &StubType::Stub::GetHardwareLimits, {});
154 return Response.upperlimit();
161 auto InstrData = dynamic_InstrumentData_cast<NetworkAnalogInT>(this->GetInstrumentData());
162 StubPtr = InstrData->template GetStub<StubType>();
165 auto Response =
InvokeStubFunc(StubPtr, &StubType::Stub::GetHardwareResolution, {});
167 return Response.resolution();
174 auto InstrData = dynamic_InstrumentData_cast<NetworkAnalogInT>(this->GetInstrumentData());
175 StubPtr = InstrData->template GetStub<StubType>();
178 auto Response =
InvokeStubFunc(StubPtr, &StubType::Stub::GetValueUnit, {});
190 auto InstrData = dynamic_InstrumentData_cast<NetworkAnalogInT>(this->GetInstrumentData());
191 StubPtr = InstrData->template GetStub<StubType>();
194 auto Response =
InvokeStubFunc(StubPtr, &StubType::Stub::GetAsync, {});
196 return Response.value();
203 auto InstrData = dynamic_InstrumentData_cast<NetworkAnalogInT>(this->GetInstrumentData());
204 StubPtr = InstrData->template GetStub<StubType>();
207 auto Response =
InvokeStubFunc(StubPtr, &StubType::Stub::GetSync, {});
209 return Response.value();
Defines a meta instrument for a single analog input port to read a data stream consisting of analog v...
Implementation of a gRPC client instrument to access a remote data stream meta instrument.
void DisableUserEditable()
Calls DynExp::ParamsBase::DisableUserEditable() on all bundled parameters.
SampleT SampleType
Alias for SampleT.
UnitType
Units which can be used for data stream instruments.
double ValueType
Data type to represent hardware limits on the sample values to write to the hardware adapter assigned...
NetworkAnalogInConfigurator()=default
virtual DynExp::ParamsBasePtrType MakeParams(DynExp::ItemIDType ID, const DynExp::DynExpCore &Core) const override
Override to make derived classes call DynExp::MakeParams with the correct configurator type derived f...
virtual ~NetworkAnalogInConfigurator()=default
void ResetImpl(DynExp::InstrumentDataBase::dispatch_tag< NetworkDataStreamInstrumentData< BaseInstr, 0, gRPCStubs... >>) override final
NetworkAnalogInData(size_t BufferSizeInSamples=1)
virtual ~NetworkAnalogInData()=default
virtual void ResetImpl(DynExp::InstrumentDataBase::dispatch_tag< NetworkAnalogInData >)
NetworkAnalogInParams(DynExp::ItemIDType ID, const DynExp::DynExpCore &Core)
DynExp::ParamsBase::DummyParam Dummy
virtual void ConfigureParamsImpl(DynExp::ParamsBase::dispatch_tag< NetworkAnalogInParams >)
void ConfigureParamsImpl(DynExp::ParamsBase::dispatch_tag< NetworkDataStreamInstrumentParams< BaseInstr, 0, gRPCStubs... >>) override final
virtual const char * GetParamClassTag() const noexcept override
This function is intended to be overridden once in each derived class returning the name of the respe...
virtual ~NetworkAnalogInParams()=default
void ResetImpl(DynExp::Object::dispatch_tag< NetworkDataStreamInstrumentT< BaseInstr, 0, gRPCStubs... >>) override final
virtual DataStreamInstrumentData::ValueType GetHardwareMinValue() const override
constexpr static auto Name() noexcept
virtual DataStreamInstrumentData::ValueType GetHardwareMaxValue() const override
DynExpProto::NetworkAnalogIn::NetworkAnalogIn StubType
virtual AnalogInData::SampleStreamType::SampleType GetSync() const
virtual void ResetImpl(DynExp::Object::dispatch_tag< NetworkAnalogInT >)
NetworkAnalogInT(const std::thread::id OwnerThreadID, DynExp::ParamsBasePtrType &&Params)
virtual std::string GetName() const override
Returns the name of this Object type.
virtual std::unique_ptr< DynExp::InitTaskBase > MakeInitTask() const override
Factory function for an init task (InitTaskBase). Override to define the desired initialization task ...
virtual std::unique_ptr< DynExp::UpdateTaskBase > MakeUpdateTask() const override
Factory function for an update task (UpdateTaskBase). Override to define the desired update task in d...
virtual std::unique_ptr< DynExp::ExitTaskBase > MakeExitTask() const override
Factory function for an exit task (ExitTaskBase). Override to define the desired deinitialization tas...
virtual ~NetworkAnalogInT()
virtual AnalogInData::SampleStreamType::SampleType Get(DynExp::TaskBase::CallbackType CallbackFunc=nullptr) const
virtual DataStreamInstrumentData::ValueType GetHardwareResolution() const override final
virtual void WriteData(DynExp::TaskBase::CallbackType CallbackFunc=nullptr) const override
virtual DataStreamInstrumentData::UnitType GetValueUnit() const override
void ExitFuncImpl(DynExp::ExitTaskBase::dispatch_tag< NetworkDataStreamInstrumentTasks::ExitTask< BaseInstr, 0, gRPCStubs... >>, DynExp::InstrumentInstance &Instance) override final
virtual void ExitFuncImpl(DynExp::ExitTaskBase::dispatch_tag< ExitTask >, DynExp::InstrumentInstance &Instance)
virtual void InitFuncImpl(DynExp::InitTaskBase::dispatch_tag< InitTask >, DynExp::InstrumentInstance &Instance)
void InitFuncImpl(DynExp::InitTaskBase::dispatch_tag< NetworkDataStreamInstrumentTasks::InitTask< BaseInstr, 0, gRPCStubs... >>, DynExp::InstrumentInstance &Instance) override final
void UpdateFuncImpl(DynExp::UpdateTaskBase::dispatch_tag< NetworkDataStreamInstrumentTasks::UpdateTask< BaseInstr, 0, gRPCStubs... >>, DynExp::InstrumentInstance &Instance) override final
virtual void UpdateFuncImpl(DynExp::UpdateTaskBase::dispatch_tag< UpdateTask >, DynExp::InstrumentInstance &Instance)
Data stream instrument for bidirectional gRPC communication.
DynExp's core class acts as the interface between the user interface and DynExp's internal data like ...
Refer to DynExp::ParamsBase::dispatch_tag.
Refer to DynExp::ParamsBase::dispatch_tag.
Refer to ParamsBase::dispatch_tag.
Defines data for a thread belonging to a InstrumentBase instance. Refer to RunnableInstance.
Refer to ParamsBase::dispatch_tag.
Dummy parameter which is to be owned once by parameter classes that do not contain any other paramete...
Tag for function dispatching mechanism within this class used when derived classes are not intended t...
std::function< void(const TaskBase &, ExceptionContainer &)> CallbackType
Type of a callback function which is invoked when a task has finished, failed or has been aborted....
Refer to DynExp::ParamsBase::dispatch_tag.
DynExp's instrument namespace contains the implementation of DynExp instruments which extend DynExp's...
NetworkAnalogInT< AnalogIn, 0, typename NetworkDataStreamInstrument::StubType, DynExpProto::NetworkAnalogIn::NetworkAnalogIn > NetworkAnalogIn
Explicit instantiation of derivable class NetworkAnalogInT to create the network analog in instrument...
ResponseMsgType InvokeStubFunc(StubPtrType< gRPCStub > StubPtr, StubFuncPtrType< gRPCStub, RequestMsgType, ResponseMsgType > StubFunc, const RequestMsgType &RequestMsg)
Invokes a gRPC stub function as a remote procedure call. Waits for a fixed amount of time (2 seconds)...
std::shared_ptr< typename gRPCStub::Stub > StubPtrType
Alias for a pointer to a gRPC stub.
constexpr DataStreamInstrumentData::UnitType ToDataStreamInstrumentUnitType(DynExpProto::Common::UnitType Unit)
std::unique_ptr< TaskT > MakeTask(ArgTs &&...Args)
Factory function to create a task to be enqueued in an instrument's task queue.
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.
Accumulates include statements to provide a precompiled header.