ADTF
Loading...
Searching...
No Matches
adtf::filter::cFilter Class Reference

#include <filter.h>

Inherits adtf::ucom::catwo::object< streaming::ant::INamedGraphObject, streaming::ant::IDataBinding, streaming::ant::IInterfaceBinding, streaming::ant::IRuntimeBehaviour, streaming::ant::IDynamicDataBinding, streaming::ant::IDynamicInterfaceBinding, streaming::ant::IFilter, base::ant::IConfiguration >, adtf::filter::cGraphObject, and adtf::streaming::ant::cFilterLevelmachine.

Inherited by adtf::filter::devil::cFilterWithTriggerFunction, adtf::filter::hollow::cFilterWithTriggerFunction, and adtf::filter::substream_filter< FilterBase >.

Public Types

template<typename T>
using iobject_ptr = adtf::ucom::ant::iobject_ptr<T>
 
- Public Types inherited from adtf::filter::cGraphObject
enum class  tRecoverableAction : uint8_t { Log = 0 , Fatal = 1 }
 

Public Member Functions

tResult Init (tInitStage eStage) override
 
tResult Start () override
 
tResult Stop () override
 
tResult Shutdown (tInitStage eStage) override
 
tResult SetName (const char *strName) override
 
tResult GetName (base::ant::IString &&strName) const override
 
tResult SetParent (const ucom::ant::IObject *poParentObject) override
 
tResult GetParent (const ucom::ant::IObject *&poParentObject) const override
 
tResult GetPins (ucom::ant::iobject_list< streaming::ant::IPin > &oPins) const override
 
tResult FindPin (const char *strName, ucom::ant::iobject_ptr< ucom::ant::IObject > &pPin) const override
 
tResult GetBindingObjects (ucom::ant::iobject_list< streaming::ant::IBindingObject > &lstBindingObject) override
 
tResult GetBindingObjects (ucom::ant::iobject_list< const streaming::ant::IBindingObject > &lstBindingObject) const override
 
tResult FindBindingObject (const char *strName, ucom::ant::iobject_ptr< const ucom::ant::IObject > &pIBindingObject) const override
 
tResult FindBindingObject (const char *strName, ucom::ant::iobject_ptr< ucom::ant::IObject > &pIBindingObject) override
 
tResult GetRunners (ucom::ant::iobject_list< streaming::ant::IRunner > &lstRunners) const override
 
tResult FindRunner (const char *strName, ucom::ant::iobject_ptr< ucom::ant::IObject > &pRunner) const override
 
tResult GetInnerPipes (ucom::ant::iobject_list< streaming::ant::ITriggerPipe > &lstInnerTriggerPipes) const override
 
tResult RequestPin (const char *strName, const ucom::ant::iobject_ptr< const streaming::ant::IStreamType > &pType, ucom::ant::iobject_ptr< streaming::ant::IInPin > &pInPin) override
 
tResult RequestPin (const char *strName, const ucom::ant::iobject_ptr< const streaming::ant::IStreamType > &pType, ucom::ant::iobject_ptr< streaming::ant::IOutPin > &pOutPin) override
 
tResult RequestBindingObject (const char *strName, const ucom::ant::iobject_ptr< const streaming::ant::IBindingType > &pType, ucom::ant::iobject_ptr< streaming::ant::IBindingClient > &pBindingClient) override
 
tResult RequestBindingObject (const char *strName, const ucom::ant::iobject_ptr< const streaming::ant::IBindingType > &pType, ucom::ant::iobject_ptr< streaming::ant::IBindingServer > &pBindingServer) override
 
tResult SetState (tFilterState eFilterState) override
 
tFilterState GetState () const override
 
tResult GetProperties (ucom::ant::iobject_ptr< const base::ant::IProperties > &pProperties) const override
 
tResult GetProperties (ucom::ant::iobject_ptr< base::ant::IProperties > &pProperties) override
 
tResult AttachConfiguration (const char *strName, base::ant::IConfiguration &oAttachedConfiguration) override
 
tResult DetachConfiguration (const char *strName) override
 
- Public Member Functions inherited from adtf::ucom::catwo::object< streaming::ant::INamedGraphObject, streaming::ant::IDataBinding, streaming::ant::IInterfaceBinding, streaming::ant::IRuntimeBehaviour, streaming::ant::IDynamicDataBinding, streaming::ant::IDynamicInterfaceBinding, streaming::ant::IFilter, base::ant::IConfiguration >
tResult GetInterface (const char *i_strIID, void *&o_pInterface) override
 Query interfaces on an object.
 
tResult GetInterface (const char *i_strIID, const void *&o_pInterface) const override
 Provides const correct interface querying.
 
void Destroy () const override
 Switch from non-virtual destructor to virtual destructor.
 
tResult GetInterface (const char *i_strIID, void *&o_pInterface) override
 Query interfaces on an object.
 
tResult GetInterface (const char *i_strIID, const void *&o_pInterface) const override
 Provides const correct interface querying.
 
void Destroy () const override
 Switch from non-virtual destructor to virtual destructor.
 
tResult GetInterface (const char *i_strIID, void *&o_pInterface) override
 Query interfaces on an object.
 
tResult GetInterface (const char *i_strIID, const void *&o_pInterface) const override
 Provides const correct interface querying.
 
void Destroy () const override
 Switch from non-virtual destructor to virtual destructor.
 
- Public Member Functions inherited from adtf::ucom::ant::IObject
 ADTF_IID (IObject, "object.ant.ucom.adtf.iid")
 
- Public Member Functions inherited from adtf::filter::cGraphObject
 cGraphObject ()
 Default Constructor.
 
 ~cGraphObject () override
 Destructor.
 
virtual tResult Process (base::flash::tNanoSeconds tmTrigger, streaming::ant::IRunner *pRunner)
 
virtual tResult ProcessInput (base::flash::tNanoSeconds tmTrigger, streaming::flash::ISampleReader *pReader)
 
virtual tResult ProcessInput (streaming::flash::ISampleReader *pReader, const ucom::ant::iobject_ptr< const streaming::ant::ISample > &pSample)
 
virtual tResult ProcessInput (streaming::flash::ISampleReader *pReader, base::flash::tNanoSeconds tmSample, const void *pSampleData, size_t nSampleDataSize)
 
template<typename ReaderType = cPinReader>
ReaderType * CreateInputPin (const char *strName, bool bDataInTrigger=true, bool bForwardTriggerViaOutputPins=true)
 
template<typename ReaderType = cPinReader>
ReaderType * CreateInputPin (const char *strName, const cStreamTypeHelper &oType, bool bDataInTrigger=true, bool bForwardTriggerViaOutputPins=true)
 
template<typename ReaderType = cPinReader, typename CALLABLE = std::function<tResult(base::flash::tNanoSeconds)>, std::enable_if_t< std::is_invocable_r_v< tResult, std::decay_t< CALLABLE >, base::flash::tNanoSeconds >, bool > = true>
ReaderType * CreateInputPinWithCallback (const char *strName, const cStreamTypeHelper &oType, CALLABLE &&fnTriggerCallback, bool bForwardTriggerViaOutputPins=true)
 
template<typename ReaderType = cPinReader, typename CALLABLE = std::function<tResult(const ucom::ant::iobject_ptr<const streaming::ant::ISample>&)>, std::enable_if_t< std::is_invocable_r_v< tResult, std::decay_t< CALLABLE >, const ucom::ant::iobject_ptr< const streaming::ant::ISample > & >, bool > = true>
ReaderType * CreateInputPinWithCallback (const char *strName, const cStreamTypeHelper &oType, CALLABLE &&fnSampleCallback, bool bForwardTriggerViaOutputPins=true)
 
template<typename ReaderType = cPinReader, typename CALLABLE = std::function<tResult(base::flash::tNanoSeconds, const void*, size_t)>, std::enable_if_t< std::is_invocable_r_v< tResult, std::decay_t< CALLABLE >, base::flash::tNanoSeconds, const void *, size_t >, bool > = true>
ReaderType * CreateInputPinWithCallback (const char *strName, const cStreamTypeHelper &oType, CALLABLE &&fnSampleDataCallback, bool bForwardTriggerViaOutputPins=true)
 
template<typename Type, typename ReaderType = cPinReader, typename CALLABLE = std::function<tResult(base::flash::tNanoSeconds, const Type&)>, std::enable_if_t< std::is_invocable_r_v< tResult, std::decay_t< CALLABLE >, base::flash::tNanoSeconds, const Type & >, bool > = true>
ReaderType * CreateInputPinWithCallback (const char *strName, const cStreamTypeHelper &oType, CALLABLE &&fnDataCallback, bool bForwardTriggerViaOutputPins=true)
 
virtual tResult AcceptType (streaming::flash::ISampleReader *pReader, const ucom::ant::iobject_ptr< const streaming::ant::IStreamType > &pType)
 
template<typename WriterType = cPinWriter>
WriterType * CreateOutputPin (const char *strName)
 
template<typename WriterType = cPinWriter>
WriterType * CreateOutputPin (const char *strName, const cStreamTypeHelper &oType)
 
template<typename RequestableWriterType = streaming::requestable_writer<>>
RequestableWriterType * CreateRequestableOutputPin (const char *strName, const cStreamTypeHelper &oType=streaming::ant::stream_meta_type_anonymous())
 
streaming::ant::IRunnerCreateRunner (const char *strName, const cTriggerHint &oTriggerHint=cNoTriggerHint(), bool bForwardTriggerViaOutputPins=true)
 
template<typename CALLABLE, std::enable_if_t< std::is_invocable_r_v< tResult, std::decay_t< CALLABLE >, base::flash::tNanoSeconds >, bool > = true>
streaming::ant::IRunnerCreateRunner (const char *strName, CALLABLE &&fnRunFunction, const cTriggerHint &oTriggerHint=cNoTriggerHint(), bool bForwardTriggerViaOutputPins=true)
 
template<typename Interface, typename Instance>
void CreateInterfaceServer (const char *strName, ucom::ant::enable_object_ptr_from_this< Instance > *pInstance)
 
template<typename Interface>
void CreateInterfaceServer (const char *strName, const ucom::ant::iobject_ptr< Interface > &pInstance)
 
template<typename Interface>
interface_client< Interface > CreateInterfaceClient (const char *strName)
 
template<typename ReaderType = cPinReader>
std::shared_ptr< ReaderType > CreateReader (const char *strName, const cStreamTypeHelper &oType)
 
template<typename WriterType = cPinWriter>
std::shared_ptr< WriterType > CreateWriter (const char *strName, const cStreamTypeHelper &oType)
 
template<typename CALLABLE, std::enable_if_t< std::is_invocable_r_v< tResult, std::decay_t< CALLABLE >, base::flash::tNanoSeconds >, bool > = true>
ucom::ant::object_ptr< streaming::ant::IRunnerRegisterRunner (const char *strName, CALLABLE &&fnRunFunction)
 
tResult RegisterRunner (const ucom::ant::iobject_ptr< streaming::ant::IRunner > &pRunner) override
 
tResult RegisterRunner (const char *strName, base::flash::IRunnable &oRunnable)
 
tResult RegisterRunner (const char *strName, adtf::base::ant::IRunnable &oRunnable) override
 
tResult ConfigureDataInTrigger (const char *strRunnerName, const char *strPinName)
 
tResult ConfigureDataOutTrigger (const char *strRunnerName, const char *strPinName)
 
tResult ConfigureTimerTrigger (const char *strRunnerName, tTimeStamp tmPeriod)
 
tResult ConfigureThreadTrigger (const char *strRunnerName, bool bCallCyclic)
 
virtual tResult RequestDynamicInputPin (const char *strName, const ucom::ant::iobject_ptr< const streaming::ant::IStreamType > &pType)
 
virtual tResult RequestDynamicOutputPin (const char *strName, const ucom::ant::iobject_ptr< const streaming::ant::IStreamType > &pType)
 
virtual tResult RequestDynamicInterfaceClient (const char *strName, const ucom::ant::iobject_ptr< const streaming::ant::IBindingType > &pType)
 
virtual tResult RequestDynamicInterfaceServer (const char *strName, const ucom::ant::iobject_ptr< const streaming::ant::IBindingType > &pType)
 
virtual tResult EnableSubStream (streaming::flash::ISampleWriter *pWriter, uint32_t nSubStreamId, const base::ant::IProperties *pRequestProperties=nullptr)
 
virtual void DisableSubStream (streaming::flash::ISampleWriter *pWriter, uint32_t nSubStreamId)
 
tResult RequestPin (const char *strName, const ucom::ant::iobject_ptr< const streaming::ant::IStreamType > &pType, ucom::ant::iobject_ptr< streaming::ant::IInPin > &pInPin)
 For internal use. This will call RequestDynamicInputPin().
 
tResult RequestPin (const char *strName, const ucom::ant::iobject_ptr< const streaming::ant::IStreamType > &pType, ucom::ant::iobject_ptr< streaming::ant::IOutPin > &pOutPin)
 For internal use. This will call RequestDynamicOutputPin().
 
tResult RequestBindingObject (const char *strName, const ucom::ant::iobject_ptr< const streaming::ant::IBindingType > &pType, ucom::ant::iobject_ptr< streaming::ant::IBindingClient > &pClient)
 For internal use. This will call RequestDynamicInterfaceClient().
 
tResult RequestBindingObject (const char *strName, const ucom::ant::iobject_ptr< const streaming::ant::IBindingType > &pType, ucom::ant::iobject_ptr< streaming::ant::IBindingServer > &pServer)
 For internal use. This will call RequestDynamicInterfaceServer().
 
void RegisterPropertyVariable (const char *strName, base::ant::cPropertyVariable &oPropertyVariable)
 
void SetDescription (const char *strDescription)
 
void SetDescription (const char *strItem, const char *strDescription)
 
void SetEditor (const char *strName, const char *strUrl)
 
void SetHelpLink (const char *strUrl)
 
tResult ActivatePins () override
 
util::log::ILogChannel * CreateLogChannel (std::string_view strName, base::elasto::IErrorHandling::tAction eDefaultErrorAction=base::elasto::IErrorHandling::tAction::Stop, tRecoverableAction eDefaultRecoverableAction=tRecoverableAction::Log, util::log::tLogLevel eDefaultLogLevel=util::log::tLogLevel::Detail)
 
util::log::ILogChannel * GetLogChannel (std::string_view strName={})
 
util::log::ILogChannel * a_util_get_current_log_channel () const noexcept
 
tResult SetName (const char *strName)
 
tResult SetParent (const ucom::ant::IObject *oParentObject)
 
ucom::object_ptr< services::ant::IMacroResolverGetParentMacroResolver () const
 
- Public Member Functions inherited from adtf::streaming::flash::cNamedGraphObject
tResult GetName (base::ant::IString &&strName) const
 
tResult SetName (const char *strName)
 
tResult SetParent (const ucom::ant::IObject *pParentObject)
 
tResult GetParent (const ucom::ant::IObject *&poParentObject) const
 
- Public Member Functions inherited from adtf::streaming::ant::cDataBinding
tResult GetPins (ucom::ant::iobject_list< IPin > &lstPins) const
 private d-pointer
 
tResult FindPin (const char *strName, ucom::ant::iobject_ptr< ucom::ant::IObject > &pPin) const
 
virtual tResult RegisterPin (const ucom::ant::iobject_ptr< IPin > &pIPin)
 
tResult RegisterPin (const ucom::ant::iobject_ptr< IInPin > &pIInPin)
 
tResult RegisterPin (const ucom::ant::iobject_ptr< IOutPin > &pIOutPin)
 
virtual tResult UnregisterPin (const ucom::ant::iobject_ptr< IPin > &pIPin)
 
tResult ReleasePins ()
 
virtual tResult DeactivatePins ()
 
tResult Disconnect ()
 
- Public Member Functions inherited from adtf::streaming::ant::cInterfaceBinding
 cInterfaceBinding ()
 D Pointer Implementation for private members.
 
virtual ~cInterfaceBinding ()
 
tResult GetBindingObjects (ucom::ant::iobject_list< IBindingObject > &lstBindingObject)
 
tResult GetBindingObjects (ucom::ant::iobject_list< const IBindingObject > &lstBindingObject) const
 
tResult FindBindingObject (const char *strName, ucom::ant::iobject_ptr< const ucom::ant::IObject > &pIBindingObject) const
 
tResult FindBindingObject (const char *strName, ucom::ant::iobject_ptr< ucom::ant::IObject > &pIBindingObject)
 
virtual tResult RegisterBindingObject (const ucom::ant::iobject_ptr< IBindingObject > &pBindingObject)
 
tResult RegisterBindingObject (const ucom::ant::iobject_ptr< IBindingServer > &pBindingServer)
 
tResult RegisterBindingObject (const ucom::ant::iobject_ptr< IBindingClient > &pBindingClient)
 
tResult UnregisterBindingObject (const ucom::ant::iobject_ptr< const IBindingObject > &pBindingObject)
 
tResult Unbind ()
 
tResult ReleaseBindingObjects ()
 
- Public Member Functions inherited from adtf::streaming::ant::cRuntimeBehaviour
tResult GetRunners (ucom::ant::iobject_list< IRunner > &lstRunners) const
 copydoc IRuntimeBehaviour::GetRunners
 
tResult FindRunner (const char *strName, ucom::ant::iobject_ptr< ucom::ant::IObject > &pRunner) const
 copydoc IRuntimeBehaviour::FindRunner
 
tResult GetInnerPipes (ucom::ant::iobject_list< ITriggerPipe > &lstInnerpTriggerPipe) const
 copydoc IRuntimeBehaviour::GetInnerPipes
 
virtual tResult UnregisterRunner (const ucom::ant::iobject_ptr< IRunner > &pRunner)
 
tResult ReleaseRunners ()
 
virtual tResult RegisterInnerPipe (const ucom::ant::iobject_ptr< ITriggerPipe > &pTriggerPipe)
 
virtual tResult UnregisterInnerPipe (const ucom::ant::iobject_ptr< ITriggerPipe > &pTriggerPipe)
 
tResult ReleaseTriggerPipes ()
 
- Public Member Functions inherited from adtf::base::flash::cConfiguration
 cConfiguration ()
 Default constructor.
 
virtual ~cConfiguration ()
 Destructor.
 
tResult GetProperties (adtf::ucom::ant::iobject_ptr< const IProperties > &pProperties) const
 
tResult GetProperties (adtf::ucom::ant::iobject_ptr< IProperties > &pProperties)
 
tResult AttachConfiguration (const char *strName, IConfiguration &oAttachedConfiguration)
 
tResult DetachConfiguration (const char *strName)
 
tResult RegisterPropertyVariable (const char *strName, ant::cPropertyVariable &oPropertyVariable)
 

Additional Inherited Members

- Protected Types inherited from adtf::streaming::ant::cFilterLevelmachine
enum  tInitStage : uint8_t {
  StageFirst = 0 , StageNormal = 1 , StagePreConnect = StageNormal , StageGraphReady = 2 ,
  StagePostConnect = StageGraphReady
}
 The Filters InitStages will be used for the cFilterLevelmachine::Init and cFilterLevelmachine::Shutdown call. More...
 
- Protected Types inherited from adtf::ucom::ant::level_machine< Subclass, LevelType, START_LEVEL >
enum  tDirection : uint8_t { Inc = 0 , Dec = 1 }
 Direction of entering a new Level. More...
 
typedef tResult(Subclass::* tChangeMethod) ()
 Defintion of function type called within the handler implementation.
 
- Protected Member Functions inherited from adtf::ucom::ant::IObject
 ~IObject ()=default
 Protected destructor --> Only the final implementation can be destroyed!
 
- Protected Member Functions inherited from adtf::filter::cGraphObject
void SetupStreamer (std::shared_ptr< streaming::flash::ISampleStreamer > pStreamer, const char *strName, const ucom::ant::iobject_ptr< const streaming::ant::IStreamType > &pType)
 
void CreateInputPin (std::shared_ptr< streaming::flash::ISampleReader > pReader, bool bDataInTrigger=true, bool bForwardTriggerViaOutputPins=true)
 
template<typename CALLABLE, std::enable_if_t< std::is_invocable_r_v< tResult, std::decay_t< CALLABLE >, base::flash::tNanoSeconds >, bool > = true>
void CreateInputPin (std::shared_ptr< streaming::flash::ISampleReader > pReader, CALLABLE &&fnTriggerCallback, bool bForwardTriggerViaOutputPins)
 
void CreateInputPin (std::shared_ptr< streaming::flash::ISampleReader > pReader, const char *strTriggerFunctionName, bool bForwardTriggerViaOutputPins=true)
 
void CreateOutputPin (std::shared_ptr< streaming::flash::ISampleWriter > pWriter)
 
void ConfigureRunner (streaming::ant::IRunner *pRunner, const cTriggerHint &oTriggerHint, bool bForwardTriggerViaOutputPins)
 
std::string GetFullName ()
 
- Protected Member Functions inherited from adtf::streaming::ant::cDataBinding
 cDataBinding ()
 CTOR.
 
virtual ~cDataBinding ()
 DTOR.
 
- Protected Member Functions inherited from adtf::streaming::ant::cRuntimeBehaviour
 cRuntimeBehaviour ()
 private _d-pointer
 
virtual ~cRuntimeBehaviour ()
 DTOR.
 
- Protected Member Functions inherited from adtf::streaming::ant::cFilterLevelmachine
 cFilterLevelmachine ()=default
 CTOR Default.
 
 cFilterLevelmachine (const cFilterLevelmachine &)=delete
 deleted copy CTOR
 
 cFilterLevelmachine (cFilterLevelmachine &&)=delete
 deleted move CTOR
 
cFilterLevelmachineoperator= (const cFilterLevelmachine &)=delete
 deleted copy operator
 
cFilterLevelmachineoperator= (cFilterLevelmachine &&)=delete
 deleted move operator
 
virtual ~cFilterLevelmachine ()=default
 DTOR Default.
 
tResult InitStageFirst ()
 Internal StateMachine Event.
 
tResult InitStageNormal ()
 Internal StateMachine Event.
 
tResult InitStageReady ()
 Internal StateMachine Event.
 
tResult ShutdownStageReady ()
 Internal StateMachine Event.
 
tResult ShutdownStageNormal ()
 Internal StateMachine Event.
 
tResult ShutdownStageFirst ()
 Internal StateMachine Event.
 
tResult SetLevel (IFilter::tFilterState eLevel)
 
- Protected Member Functions inherited from adtf::ucom::ant::level_machine< Subclass, LevelType, START_LEVEL >
virtual ~level_machine ()=default
 DTOR.
 
LevelType GetLevel () const
 
template<typename ... InnerHandlers>
tResult ChangeLevel (LevelType eLevel)
 
- Protected Attributes inherited from adtf::filter::cGraphObject
ucom::ant::object_ptr< services::ant::IReferenceClock_clock
 
std::unique_ptr< cImplementation > m_pImplementation
 
- Protected Attributes inherited from adtf::streaming::flash::cNamedGraphObject
const adtf::ucom::ant::IObjectm_pParent = nullptr
 parent of the named object
 
std::string m_strName
 name of the
 

Detailed Description

Base class for ADTF Filters.

Use this as a base for implementing an ADTF Filter (that lives and works in the ADTF Filter Graph). For all available functionality please see adtf::filter::cGraphObject which is a direct base of this class.

Most of the time you

  • Create pins in your constructor
  • Perform other long running or property based initialization in Init() (StageNormal)
  • Reset you internal data in Start().
  • Handle data in Process(), ProcessInput() etc. or your own created Runners.

Member Function Documentation

◆ Init()

tResult adtf::filter::cFilter::Init ( tInitStage eStage)
overridevirtual

Initializes the filter.

This is called three times after all properties have been updated with eStage set to:

Note
Before ADTF 3.8 connections had been established erroneously between adtf::streaming::ant::cFilterLevelmachine::StageFirst and adtf::streaming::ant::cFilterLevelmachine::StageNormal. This has been corrected to be done between adtf::streaming::ant::cFilterLevelmachine::StageNormal and adtf::streaming::ant::cFilterLevelmachine::StageGraphReady as was correctly documented but implemented wrong. You can change back to the old behaviour of the Session Manager by setting the ADTF_CONNECTION_CREATION_STATE environment variable to '2' (either in the ADTF Configuration Editor/System Editor or via your environment).
See also
adtf::streaming::ant::cFilterGraph::SetConnectionCreationState().
Note
Before ADTF 3.15.1 connections from dynamic output pins to sample streams were created after connections from sample streams to static and dynamic input pins. This has been corrected to enable proper stream type propagation. If for some reason you need the old behavior, set the ADTF_LEGACY_CONNECTION_ESTABLISHMENT_ORDER environment variable to a non-empty value.
See also
adtf::streaming::ant::cFilterGraph::SetLegacyConnectionOrder().

Example Usage

class cMyFilter: public adtf::filter::cFilter
{
public:
ADTF_CLASS_ID_NAME(cMyFilter, "my_filter.filter.example.cid", "My Filter");
cMyFilter()
{
RegisterPropertyVariable("my_config_file", m_strConfigFileName);
}
tResult Init(tInitStage eStage) override
{
RETURN_IF_FAILED(cFilter::Init(eStage));
if (eStage == StageNormal)
{
adtf::util::cString strConfigFileContents;
RETURN_IF_FAILED(adtf::util::cFileSystem::ReadTextFile(m_strConfigFileName, strConfigFileContents));
LOG_INFO("My config file contents: %s", strConfigFileContents.GetPtr());
}
}
private:
};
#define LOG_INFO(...)
Logs an info message.
Definition log.h:388
A_UTILS_NS::cResult tResult
For backwards compatibility and to bring latest version into scope.
Definition result.h:736
#define RETURN_NOERROR
Return status ERR_NOERROR, which requires the calling function's return type to be tResult.
Definition result.h:29
#define ADTF_CLASS_ID_NAME(_class, _strcid, _strclabel)
Definition class_id.h:33
Property Variable template for the given T. A Property Variable will store a copy of a property value...
Definition configuration.h:808
Definition filter.h:289
tResult Init(tInitStage eStage) override
void RegisterPropertyVariable(const char *strName, base::ant::cPropertyVariable &oPropertyVariable)

Implements the default cFilterLevelmachine state machine call.

This will be called during filter state changes and can be overridden by the filter implementation.

Note
Make sure to call the parent implementation of the used base class at the beginning within your overriding function!
Parameters
[in]eStageThe Init Stage. See state machine documentation in filter_state_machine.
Returns
Standard Result Code. Any Error will break further initialization of the cFilterGraph and the Runlevel change.

Reimplemented from adtf::streaming::ant::cFilterLevelmachine.

Reimplemented in adtf::filter::devil::filter_with_trigger_function< TriggerFunctionImpl >.

◆ Shutdown()

tResult adtf::filter::cFilter::Shutdown ( tInitStage eStage)
overridevirtual

Implements the default cFilterLevelmachine state machine call.

This will be called during filter state changes and can be overridden by the filter implementation.

Note
Make sure to call the parent implementation of the used base class at the end within your overriding function!
Parameters
[in]eStageThe Init Stage. See state machine documentation in filter_state_machine.
Returns
Standard Result Code.

Reimplemented from adtf::streaming::ant::cFilterLevelmachine.

Reimplemented in adtf::filter::devil::filter_with_trigger_function< TriggerFunctionImpl >.

◆ Start()

tResult adtf::filter::cFilter::Start ( )
overridevirtual

Reset your internal data here.

Example Usage

#include <cinttypes>
class cMyFilter: public adtf::filter::cFilter
{
public:
ADTF_CLASS_ID_NAME(cMyFilter, "my_filter.filter.example.cid", "My Filter");
cMyFilter()
{
CreateInputPin("input");
}
tResult Start() override
{
RETURN_IF_FAILED(cFilter::Start());
m_nSampleCounter = 0;
}
{
LOG_INFO("received %zu samples", ++m_nSampleCounter);
}
private:
size_t m_nSampleCounter;
};
tResult Start() override
virtual tResult ProcessInput(base::flash::tNanoSeconds tmTrigger, streaming::flash::ISampleReader *pReader)
ReaderType * CreateInputPin(const char *strName, bool bDataInTrigger=true, bool bForwardTriggerViaOutputPins=true)
Definition graph_object.h:1215
Definition samplestreamer_intf.h:188
ant::iobject_ptr< T > iobject_ptr
Alias always bringing the latest version of ant::iobject_ptr into scope.
Definition object_ptr_intf.h:437

Implements the default cFilterLevelmachine state machine calls.

This will be called during filter state changes and can be overridden by the filter implementation.

Note
Make sure to call the parent implementation of the used base class at the beginning within your overriding function!

See filter_state_machine.

Returns
Standard Result Code.

Reimplemented from adtf::streaming::ant::cFilterLevelmachine.

◆ Stop()

tResult adtf::filter::cFilter::Stop ( )
overridevirtual

Implements the default cFilterLevelmachine state machine calls.

Keep in mind, that streaming and triggers might still occur during and after this function is called. Streaming will only have stopped completely before any other following state change. If your filter has any blocking operations during the handling of triggers, make sure that you cancel them in this function.

This will be called during filter state changes and can be overridden by the filter implementation.

Note
Make sure to call the parent implementation of the used base class at the end within your overriding function!

See filter_state_machine.

Returns
Standard Result Code.

Reimplemented from adtf::streaming::ant::cFilterLevelmachine.


The documentation for this class was generated from the following file: