ADTF  3.18.2
triggerfunction_base.h
Go to the documentation of this file.
1 
7 #pragma once
8 #include "filter.h"
9 
10 #include <adtf_utils.h>
11 #include <adtfbase/runnable.h>
12 #include <adtfbase/configuration.h>
13 #include <adtfbase/string_intf.h>
16 
17 #include <functional>
18 #include <memory>
19 #include <string>
20 #include <vector>
21 
22 namespace adtf
23 {
24 namespace filter
25 {
26 namespace ant
27 {
36  class cTriggerFunctionBase : public base::ant::runnable<base::ant::IRunnable::RUN_TRIGGER>,
38  {
39 
40  protected:
43  adtf_util::cString m_strProfilingFullName;
44  adtf_util::cString m_strProfilingInputs;
45  adtf_util::cString m_strProfilingProcess;
46  adtf_util::cString m_strProfilingOutputs;
47  adtf_util::cString m_strProfilingStartedEvent;
48  adtf_util::cString m_strProfilingFinishedEvent;
49 
50  public:
55  cTriggerFunctionBase(const char* strName);
56 
57  virtual tResult GetName(base::IString&& strName) const;
58  void SetName(const char* strName);
59  virtual tResult SetDefaultProperties(base::ant::IConfiguration& /* pProperties */);
60  virtual tResult Configure();
61  virtual tResult SetFilter(cFilter& oFilter);
62  virtual tResult ConnectReadersAndWriters(cFilter& /* oFilter */);
63  virtual void SetParentFullName(const adtf::util::cString& strParentFullName);
64 
65  public: //implement the Trigger
66 
71  tResult RunTrigger(tTimeStamp tmTimeofActivation);
72 
73 
74  public:
77  virtual tResult ProcessInputs(tTimeStamp /* tmTime */);
78 
80  virtual tResult Process(tTimeStamp tmTime) = 0;
81 
91  virtual tResult ProcessOutputs(tTimeStamp /* tmTime */);
92  };
93 
94 
96  {
97 
98  protected:
99  std::vector<streaming::ant::cSampleReader*> m_vecOfReaders;
100  std::vector<streaming::ant::cSampleWriter*> m_vecOfWriters;
101 
102  public:
104  cTriggerFunction(const char* strName);
105 
106  tResult SetDefaultProperties(base::ant::IConfiguration& oFilterConfig);
107 
108  tResult ConnectReadersAndWriters(cFilter& oFilter) override;
109 
110  tResult ProcessOutputs(tTimeStamp /* tmTime */) override;
111 
112  tResult Register(adtf::streaming::ant::cSampleReader& oReader);
113  tResult Register(adtf::streaming::ant::cSampleReader& oReader, const char* strName, const char* strDDLStruct);
114  tResult Register(adtf::streaming::ant::cSampleReader& oReader, const char* strName, const ucom::ant::iobject_ptr<const adtf::streaming::IStreamType>& poStreamType);
115  tResult Register(adtf::streaming::ant::cSampleReader& oReader, const char* strName, const adtf::streaming::IStreamType& oStreamType);
116 
117  tResult Register(adtf::streaming::ant::cSampleWriter& oWriter);
118  tResult Register(adtf::streaming::ant::cSampleWriter& oWriter, const char* strName, const char* strDDLStruct);
119  tResult Register(adtf::streaming::ant::cSampleWriter& oWriter, const char* strName, const ucom::ant::iobject_ptr<const adtf::streaming::IStreamType>& poStreamType);
120  tResult Register(adtf::streaming::ant::cSampleWriter& oWriter, const char* strName, const streaming::IStreamType& oStreamType);
121 
122  };
123 
124 
125 
126 } //namespace ant
127 
128 namespace flash
129 {
130 
133 {
134  public:
136  cTriggerFunction(const char* strName);
137  ~cTriggerFunction() override;
138 
139  void SetName(const char* strName);
140  tResult GetName(base::ant::IString&& strName) const;
141 
142  tResult Register(streaming::flash::ISampleReader& oReader);
143  tResult Register(streaming::flash::ISampleReader& oReader, const char* strName, const char* strDDLStruct);
144  tResult Register(streaming::flash::ISampleReader& oReader, const char* strName, const ucom::ant::iobject_ptr<const adtf::streaming::ant::IStreamType>& poStreamType);
145  tResult Register(streaming::flash::ISampleReader& oReader, const char* strName, const adtf::streaming::ant::IStreamType& oStreamType);
146 
147  tResult Register(streaming::flash::ISampleWriter& oWriter);
148  tResult Register(streaming::flash::ISampleWriter& oWriter, const char* strName, const char* strDDLStruct);
149  tResult Register(streaming::flash::ISampleWriter& oWriter, const char* strName, const ucom::ant::iobject_ptr<const adtf::streaming::ant::IStreamType>& poStreamType);
150  tResult Register(streaming::flash::ISampleWriter& oWriter, const char* strName, const streaming::ant::IStreamType& oStreamType);
151 
152  virtual tResult SetFilter(cFilter& oFilter);
153  virtual tResult ConnectReadersAndWriters(cFilter& oFilter);
154 
155  virtual tResult Configure();
156 
157  virtual tResult ProcessInputs(tTimeStamp tmTime);
158  virtual tResult Process(tTimeStamp tmTime);
159  virtual tResult ProcessOutputs(tTimeStamp tmTime);
160 
161  virtual tResult ProcessInputs(base::flash::tNanoSeconds tmTime);
162  virtual tResult Process(base::flash::tNanoSeconds tmTime);
163  virtual tResult ProcessOutputs(base::flash::tNanoSeconds tmTime);
164 
165  public:
167  base::ant::IRunnable::tActivationType ui32ActivationType,
168  const void* pvUserData,
169  size_t nUserDataSize) override;
170 
171  private:
172  class cImplementation;
173  std::unique_ptr<cImplementation> m_pImplementation;
174 };
175 
176 }
177 
178 namespace hollow
179 {
180 
183 {
184 public:
186  cTriggerFunction(const char* strName);
187  ~cTriggerFunction() override;
188 
189  void SetName(const char* strName);
190  tResult GetName(base::ant::IString&& strName) const;
191 
192  tResult Register(streaming::flash::ISampleReader& oReader);
193  tResult Register(streaming::flash::ISampleReader& oReader, const char* strName, const char* strDDLStruct);
194  tResult Register(streaming::flash::ISampleReader& oReader, const char* strName, const ucom::ant::iobject_ptr<const adtf::streaming::ant::IStreamType>& poStreamType);
195  tResult Register(streaming::flash::ISampleReader& oReader, const char* strName, const adtf::streaming::ant::IStreamType& oStreamType);
196 
197  tResult Register(streaming::flash::ISampleWriter& oWriter);
198  tResult Register(streaming::flash::ISampleWriter& oWriter, const char* strName, const char* strDDLStruct);
199  tResult Register(streaming::flash::ISampleWriter& oWriter, const char* strName, const ucom::ant::iobject_ptr<const adtf::streaming::ant::IStreamType>& poStreamType);
200  tResult Register(streaming::flash::ISampleWriter& oWriter, const char* strName, const streaming::ant::IStreamType& oStreamType);
201 
202  virtual tResult SetFilter(cFilter& oFilter);
203  virtual tResult ConnectReadersAndWriters(cFilter& oFilter);
204 
205  virtual tResult Configure();
206 
207  virtual tResult ProcessInputs(tTimeStamp tmTime);
208  virtual tResult Process(tTimeStamp tmTime);
209  virtual tResult ProcessOutputs(tTimeStamp tmTime);
210 
211  virtual tResult ProcessInputs(base::flash::tNanoSeconds tmTime);
212  virtual tResult Process(base::flash::tNanoSeconds tmTime);
213  virtual tResult ProcessOutputs(base::flash::tNanoSeconds tmTime);
214 
215 public:
217  base::ant::IRunnable::tActivationType ui32ActivationType,
218  const void* pvUserData,
219  size_t nUserDataSize) override;
220 
221 private:
222  class cImplementation;
223  std::unique_ptr<cImplementation> m_pImplementation;
224 };
225 
226 }
227 
228 
231 
232 
233 } //namespace filter
234 } //namespace adtf
Copyright © Audi Electronics Venture GmbH.
ucom Interface to a objects configuration.
tActivationType
Enumeration of the possible activation types to set a component in running state.
Definition: runnable_intf.h:44
The IString interface provides methods for getting and setting strings through abstract interfaces.
Definition: string_intf.h:28
Implementation helper template to enriches an implementation with the default implementation of IConf...
Runnable helper implementaton template.
Definition: runnable.h:58
Concept class: Basic Trigger functionality.
virtual tResult ProcessOutputs(tTimeStamp)
This function is a structural hint to process the outputs after Process was called.
virtual tResult Process(tTimeStamp tmTime)=0
this is to implement your functionality and needs to overwrite
tResult RunTrigger(tTimeStamp tmTimeofActivation)
The Basic Activities are implemented in this Function.
cTriggerFunctionBase()
CTOR This will create a lambda connection between the ITriggerPipeItem::Run call and your implemeted ...
virtual tResult ProcessInputs(tTimeStamp)
this function is only a structural hint implement your data collection within this method before Proc...
adtf_util::cString m_strName
Name of the TriggerFunction used to create the IRunner.
tResult ProcessOutputs(tTimeStamp) override
This function is a structural hint to process the outputs after Process was called.
tResult Run(base::flash::tNanoSeconds tmTimeofActivation, base::ant::IRunnable::tActivationType ui32ActivationType, const void *pvUserData, size_t nUserDataSize) override
The Run method to set the component in running state.
tResult Run(base::flash::tNanoSeconds tmTimeofActivation, base::ant::IRunnable::tActivationType ui32ActivationType, const void *pvUserData, size_t nUserDataSize) override
The Run method to set the component in running state.
Defines access methods for the interface of a Stream Type - see also Stream Type and Stream Meta Type...
The default Sample Reader will read the incomung Stream of a IInPin.
Definition: samplereader.h:174
This base implementation of a sample writer is able to write to one Sample Stream which is connected ...
Definition: samplewriter.h:35
Interface for sample reads that read from sample streams via input pins.
Interface for sample writers that write to sample streams via output pins.
Base object pointer to realize binary compatible reference counting in interface methods.
Copyright © Audi Electronics Venture GmbH.
Copyright © Audi Electronics Venture GmbH.
string_base< cStackString > cString
cString implementation for a stack string which works on stack if string is lower than A_UTILS_DEFAUL...
Definition: string.h:2778
Namespace for entire ADTF SDK.
Copyright © Audi Electronics Venture GmbH.
Copyright © Audi Electronics Venture GmbH.
Copyright © Audi Electronics Venture GmbH.
Copyright © Audi Electronics Venture GmbH.