12 #include "../MetaInstruments/AnalogOut.h"
15 #include "NetworkAnalogOut.grpc.pb.h"
19 template <
typename... gRPCServices>
20 class NetworkAnalogOutT;
22 template <
typename... gRPCServices>
40 template <
typename... gRPCServices>
47 virtual const char*
GetParamClassTag() const noexcept
override {
return "NetworkAnalogOutParams"; }
56 template <
typename... gRPCServices>
70 template <
typename... gRPCServices>
79 constexpr
static auto Name() noexcept {
return "Network Analog Out"; }
85 virtual std::string
GetName()
const override {
return Name(); }
89 :
public gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataGetHardwareLimits, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::NetworkAnalogOut::ValueLimitsMessage>
91 using Base =
gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataGetHardwareLimits, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::NetworkAnalogOut::ValueLimitsMessage>;
92 using Base::ResponseMessage;
96 : Base::TypedCallDataBase(OwningModule, &DynExpProto::NetworkAnalogOut::NetworkAnalogOut::AsyncService::RequestGetHardwareLimits) {}
104 ResponseMessage.set_lowerlimit(
ModuleData->GetAnalogOut()->GetHardwareMinValue());
105 ResponseMessage.set_upperlimit(
ModuleData->GetAnalogOut()->GetHardwareMaxValue());
110 :
public gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataGetUserLimits, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::NetworkAnalogOut::ValueLimitsMessage>
112 using Base =
gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataGetUserLimits, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::NetworkAnalogOut::ValueLimitsMessage>;
113 using Base::ResponseMessage;
117 : Base::TypedCallDataBase(OwningModule, &DynExpProto::NetworkAnalogOut::NetworkAnalogOut::AsyncService::RequestGetUserLimits) {}
125 ResponseMessage.set_lowerlimit(
ModuleData->GetAnalogOut()->GetUserMinValue());
126 ResponseMessage.set_upperlimit(
ModuleData->GetAnalogOut()->GetUserMaxValue());
131 :
public gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataHardwareResolution, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::NetworkAnalogOut::ValueResolutionMessage>
133 using Base =
gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataHardwareResolution, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::NetworkAnalogOut::ValueResolutionMessage>;
134 using Base::ResponseMessage;
138 : Base::TypedCallDataBase(OwningModule, &DynExpProto::NetworkAnalogOut::NetworkAnalogOut::AsyncService::RequestGetHardwareResolution) {}
146 ResponseMessage.set_resolution(
ModuleData->GetAnalogOut()->GetHardwareResolution());
151 :
public gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataGetValueUnit, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::NetworkAnalogOut::ValueUnitMessage>
153 using Base =
gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataGetValueUnit, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::NetworkAnalogOut::ValueUnitMessage>;
154 using Base::ResponseMessage;
158 : Base::TypedCallDataBase(OwningModule, &DynExpProto::NetworkAnalogOut::NetworkAnalogOut::AsyncService::RequestGetValueUnit) {}
171 :
public gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataSetAsync, ThisServiceType, DynExpProto::NetworkAnalogOut::SampleMessage, DynExpProto::Common::VoidMessage>
173 using Base =
gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataSetAsync, ThisServiceType, DynExpProto::NetworkAnalogOut::SampleMessage, DynExpProto::Common::VoidMessage>;
174 using Base::RequestMessage;
178 : Base::TypedCallDataBase(OwningModule, &DynExpProto::NetworkAnalogOut::NetworkAnalogOut::AsyncService::RequestSetAsync) {}
186 ModuleData->GetAnalogOut()->Set(RequestMessage.value());
191 :
public gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataSetSync, ThisServiceType, DynExpProto::NetworkAnalogOut::SampleMessage, DynExpProto::Common::VoidMessage>
193 using Base =
gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataSetSync, ThisServiceType, DynExpProto::NetworkAnalogOut::SampleMessage, DynExpProto::Common::VoidMessage>;
194 using Base::RequestMessage;
198 : Base::TypedCallDataBase(OwningModule, &DynExpProto::NetworkAnalogOut::NetworkAnalogOut::AsyncService::RequestSetSync) {}
206 ModuleData->GetAnalogOut()->SetSync(RequestMessage.value());
211 :
public gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataSetDefault, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::Common::VoidMessage>
213 using Base =
gRPCModule<gRPCServices...>::template TypedCallDataBase<CallDataSetDefault, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::Common::VoidMessage>;
217 : Base::TypedCallDataBase(OwningModule, &DynExpProto::NetworkAnalogOut::NetworkAnalogOut::AsyncService::RequestSetDefault) {}
239 CallDataGetHardwareLimits::MakeCall(
this, Instance);
240 CallDataGetUserLimits::MakeCall(
this, Instance);
241 CallDataHardwareResolution::MakeCall(
this, Instance);
242 CallDataGetValueUnit::MakeCall(
this, Instance);
243 CallDataSetAsync::MakeCall(
this, Instance);
244 CallDataSetSync::MakeCall(
this, Instance);
245 CallDataSetDefault::MakeCall(
this, Instance);
Implementation of a gRPC server module to provide remote access to a data stream instrument meta inst...
Meta instrument for a single analog output port based on the data stream, function generator,...
Implementation of the data stream meta instrument, which is a base class for all instruments reading/...
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 ~NetworkAnalogOutConfigurator()=default
NetworkAnalogOutConfigurator()=default
void ResetImpl(DynExp::ModuleDataBase::dispatch_tag< NetworkDataStreamInstrumentData< gRPCServices... >>) override final
virtual void ResetImpl(DynExp::ModuleDataBase::dispatch_tag< NetworkAnalogOutData >)
virtual ~NetworkAnalogOutData()=default
DynExp::ParamsBase::DummyParam Dummy
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 void ConfigureParamsImpl(DynExp::ParamsBase::dispatch_tag< NetworkAnalogOutParams >)
NetworkAnalogOutParams(DynExp::ItemIDType ID, const DynExp::DynExpCore &Core)
virtual ~NetworkAnalogOutParams()=default
void ConfigureParamsImpl(DynExp::ParamsBase::dispatch_tag< NetworkDataStreamInstrumentParams< gRPCServices... >>) override final
CallDataGetHardwareLimits(const gRPCModule< gRPCServices... > *const OwningModule) noexcept
gRPCModule< gRPCServices... >::template TypedCallDataBase< CallDataGetHardwareLimits, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::NetworkAnalogOut::ValueLimitsMessage > Base
virtual void ProcessChildImpl(DynExp::ModuleInstance &Instance) override
virtual ~CallDataGetHardwareLimits()=default
virtual ~CallDataGetUserLimits()=default
gRPCModule< gRPCServices... >::template TypedCallDataBase< CallDataGetUserLimits, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::NetworkAnalogOut::ValueLimitsMessage > Base
CallDataGetUserLimits(const gRPCModule< gRPCServices... > *const OwningModule) noexcept
virtual void ProcessChildImpl(DynExp::ModuleInstance &Instance) override
virtual ~CallDataGetValueUnit()=default
gRPCModule< gRPCServices... >::template TypedCallDataBase< CallDataGetValueUnit, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::NetworkAnalogOut::ValueUnitMessage > Base
virtual void ProcessChildImpl(DynExp::ModuleInstance &Instance) override
CallDataGetValueUnit(const gRPCModule< gRPCServices... > *const OwningModule) noexcept
CallDataHardwareResolution(const gRPCModule< gRPCServices... > *const OwningModule) noexcept
gRPCModule< gRPCServices... >::template TypedCallDataBase< CallDataHardwareResolution, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::NetworkAnalogOut::ValueResolutionMessage > Base
virtual void ProcessChildImpl(DynExp::ModuleInstance &Instance) override
virtual ~CallDataHardwareResolution()=default
virtual void ProcessChildImpl(DynExp::ModuleInstance &Instance) override
virtual ~CallDataSetAsync()=default
gRPCModule< gRPCServices... >::template TypedCallDataBase< CallDataSetAsync, ThisServiceType, DynExpProto::NetworkAnalogOut::SampleMessage, DynExpProto::Common::VoidMessage > Base
CallDataSetAsync(const gRPCModule< gRPCServices... > *const OwningModule) noexcept
virtual void ProcessChildImpl(DynExp::ModuleInstance &Instance) override
gRPCModule< gRPCServices... >::template TypedCallDataBase< CallDataSetDefault, ThisServiceType, DynExpProto::Common::VoidMessage, DynExpProto::Common::VoidMessage > Base
virtual ~CallDataSetDefault()=default
CallDataSetDefault(const gRPCModule< gRPCServices... > *const OwningModule) noexcept
gRPCModule< gRPCServices... >::template TypedCallDataBase< CallDataSetSync, ThisServiceType, DynExpProto::NetworkAnalogOut::SampleMessage, DynExpProto::Common::VoidMessage > Base
virtual void ProcessChildImpl(DynExp::ModuleInstance &Instance) override
CallDataSetSync(const gRPCModule< gRPCServices... > *const OwningModule) noexcept
virtual ~CallDataSetSync()=default
void CreateInitialCallDataObjectsImpl(DynExp::Object::dispatch_tag< NetworkDataStreamInstrumentT< gRPCServices... >>, DynExp::ModuleInstance &Instance) const override final
DynExpProto::NetworkAnalogOut::NetworkAnalogOut ThisServiceType
void ResetImpl(DynExp::Object::dispatch_tag< NetworkDataStreamInstrumentT< gRPCServices... >>) override final
virtual void ValidateInstrType(const DynExpInstr::DataStreamInstrument *Instr) const override
NetworkAnalogOutT(const std::thread::id OwnerThreadID, DynExp::ParamsBasePtrType &&Params)
virtual ~NetworkAnalogOutT()=default
virtual void CreateInitialCallDataObjectsImpl(DynExp::Object::dispatch_tag< NetworkAnalogOutT >, DynExp::ModuleInstance &Instance) const
constexpr static auto Name() noexcept
virtual void ResetImpl(DynExp::Object::dispatch_tag< NetworkAnalogOutT >)
virtual std::string GetName() const override
Returns the name of this Object type.
Module template for building gRPC servers listening on TCP sockets for network instruments to connect...
DynExp's core class acts as the interface between the user interface and DynExp's internal data like ...
Base class for modules. Modules implement programs on their own (e.g. measurement protocols or server...
const std::unique_ptr< ModuleDataType > ModuleData
Module data belonging to this ModuleBase instance.
Configurator class for ModuleBase.
Data structure to contain data which is synchronized in between different threads....
Refer to ParamsBase::dispatch_tag.
Defines data for a thread belonging to a ModuleBase instance. Refer to RunnableInstance.
const ModuleBase::ModuleDataGetterType ModuleDataGetter
Getter for module's data. Refer to ModuleBase::ModuleDataGetterType.
Parameter class for ModuleBase.
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.
Dummy parameter which is to be owned once by parameter classes that do not contain any other paramete...
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...
constexpr DynExpProto::Common::UnitType ToPrototUnitType(DataStreamInstrumentData::UnitType Unit)
DynExp's module namespace contains the implementation of DynExp modules which extend DynExp's core fu...
NetworkAnalogOutT< typename NetworkDataStreamInstrument::ThisServiceType, DynExpProto::NetworkAnalogOut::NetworkAnalogOut > NetworkAnalogOut
Explicit instantiation of derivable class NetworkAnalogOutT to create the network analog out module.
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.