openDAQ
Open data acquisition platform
IFunctionBlock Struct Referenceabstract

Function blocks perform calculations on inputs/generate data, outputting new data in its output signals as packets. More...

+ Inheritance diagram for IFunctionBlock:
+ Collaboration diagram for IFunctionBlock:

Detailed Description

Function blocks perform calculations on inputs/generate data, outputting new data in its output signals as packets.

Each function block describes its behaviour and identifiers in its FunctionBlockType structure. It provides a list of input ports that can be connected to signals that the input port accepts, as well as a list of output signals that carry the function block's output data.

Additionally, as each function block is a property object, it can define its own set of properties, providing user-configurable settings. In example, a FFT function block would expose a blockSize property, defining the amount of samples to be used for calculation in each block.

Function blocks also provide a status signal, through which a status packet is sent whenever a connection to a new input port is formed, or when the status changes.

Public Member Functions

virtual ErrCode INTERFACE_FUNC getFunctionBlockType (IFunctionBlockType **type)=0
 Gets an information structure contain metadata of the function block type. More...
 
virtual ErrCode INTERFACE_FUNC getInputPorts (IList **ports, ISearchFilter *searchFilter=nullptr)=0
 Gets a list of the function block's input ports. More...
 
virtual ErrCode INTERFACE_FUNC getSignals (IList **signals, ISearchFilter *searchFilter=nullptr)=0
 Gets the list of the function block's output signals. More...
 
virtual ErrCode INTERFACE_FUNC getSignalsRecursive (IList **signals, ISearchFilter *searchFilter=nullptr)=0
 Gets the list of the function block's visible output signals including signals from visible child function blocks. More...
 
virtual ErrCode INTERFACE_FUNC getStatusSignal (ISignal **statusSignal)=0
 Gets the function block's status signal. More...
 
virtual ErrCode INTERFACE_FUNC getFunctionBlocks (IList **functionBlocks, ISearchFilter *searchFilter=nullptr)=0
 Gets a list of sub-function blocks. More...
 
virtual ErrCode INTERFACE_FUNC getAvailableFunctionBlockTypes (IDict **functionBlockTypes)=0
 Gets all neasted function block types that are supported, containing their description. More...
 
virtual ErrCode INTERFACE_FUNC addFunctionBlock (IFunctionBlock **functionBlock, IString *typeId, IPropertyObject *config=nullptr)=0
 Creates and adds a function block as the neasted of current function block with the provided unique ID and returns it. More...
 
virtual ErrCode INTERFACE_FUNC removeFunctionBlock (IFunctionBlock *functionBlock)=0
 Removes the function block provided as argument, disconnecting its signals and input ports. More...
 
- Public Member Functions inherited from IFolder
virtual ErrCode INTERFACE_FUNC getItems (IList **items, ISearchFilter *searchFilter=nullptr)=0
 Gets the list of the items in the folder. More...
 
virtual ErrCode INTERFACE_FUNC isEmpty (Bool *empty)=0
 Returns True if the folder is empty. More...
 
virtual ErrCode INTERFACE_FUNC hasItem (IString *localId, Bool *value)=0
 Returns True if the folder has an item with local ID. More...
 
virtual ErrCode INTERFACE_FUNC getItem (IString *localId, IComponent **item)=0
 Gets the item component with the specified localId. More...
 
- Public Member Functions inherited from IComponent
virtual ErrCode INTERFACE_FUNC getLocalId (IString **localId)=0
 Gets the local ID of the component. More...
 
virtual ErrCode INTERFACE_FUNC getGlobalId (IString **globalId)=0
 Gets the global ID of the component. More...
 
virtual ErrCode INTERFACE_FUNC getActive (Bool *active)=0
 Returns true if the component is active; false otherwise. More...
 
virtual ErrCode INTERFACE_FUNC setActive (Bool active)=0
 Sets the component to be either active or inactive. Also recursively sets the active field of all child components if component is a folder. More...
 
virtual ErrCode INTERFACE_FUNC getContext (IContext **context)=0
 Gets the context object. More...
 
virtual ErrCode INTERFACE_FUNC getParent (IComponent **parent)=0
 Gets the parent of the component. More...
 
virtual ErrCode INTERFACE_FUNC getName (IString **name)=0
 Gets the name of the component. More...
 
virtual ErrCode INTERFACE_FUNC setName (IString *name)=0
 Sets the name of the component. More...
 
virtual ErrCode INTERFACE_FUNC getDescription (IString **description)=0
 Gets the description of the component. More...
 
virtual ErrCode INTERFACE_FUNC setDescription (IString *description)=0
 Sets the description of the component. More...
 
virtual ErrCode INTERFACE_FUNC getTags (ITags **tags)=0
 Gets the tags of the component. More...
 
virtual ErrCode INTERFACE_FUNC getVisible (Bool *visible)=0
 Gets visible metadata state of the component. More...
 
virtual ErrCode INTERFACE_FUNC setVisible (Bool visible)=0
 Sets visible attribute state of the component. More...
 
virtual ErrCode INTERFACE_FUNC getLockedAttributes (IList **attributes)=0
 Gets a list of the component's locked attributes. The locked attributes cannot be modified via their respective setters. More...
 
virtual ErrCode INTERFACE_FUNC getOnComponentCoreEvent (IEvent **event)=0
 Gets the Core Event object that triggers whenever a change to this component happens within the openDAQ core structure. More...
 
virtual ErrCode INTERFACE_FUNC getStatusContainer (IComponentStatusContainer **statusContainer)=0
 Gets the container of Component statuses. More...
 
virtual ErrCode INTERFACE_FUNC findComponent (IString *id, IComponent **outComponent)=0
 Finds the component (signal/device/function block) with the specified (global) id. More...
 
- Public Member Functions inherited from IPropertyObject
virtual ErrCode INTERFACE_FUNC getClassName (IString **className)=0
 Gets the name of the class the Property object was constructed with. More...
 
virtual ErrCode INTERFACE_FUNC setPropertyValue (IString *propertyName, IBaseObject *value)=0
 Sets the value of the Property with the given name. More...
 
virtual ErrCode INTERFACE_FUNC getPropertyValue (IString *propertyName, IBaseObject **value)=0
 Gets the value of the Property with the given name. More...
 
virtual ErrCode INTERFACE_FUNC getPropertySelectionValue (IString *propertyName, IBaseObject **value)=0
 Gets the selected value of the Property, if the Property is a Selection property. More...
 
virtual ErrCode INTERFACE_FUNC clearPropertyValue (IString *propertyName)=0
 Clears the Property value from the Property object. More...
 
virtual ErrCode INTERFACE_FUNC hasProperty (IString *propertyName, Bool *hasProperty)=0
 Checks if the Property object contains a property named propertyName. More...
 
virtual ErrCode INTERFACE_FUNC getProperty (IString *propertyName, IProperty **property)=0
 Gets the Property with the given propertyName. More...
 
virtual ErrCode INTERFACE_FUNC addProperty (IProperty *property)=0
 Adds the property to the Property object. More...
 
virtual ErrCode INTERFACE_FUNC removeProperty (IString *propertyName)=0
 Removes the Property named propertyName from the Property object. More...
 
virtual ErrCode INTERFACE_FUNC getOnPropertyValueWrite (IString *propertyName, IEvent **event)=0
 Gets the Event that is triggered whenever a Property value is written to the Property named propertyName. More...
 
virtual ErrCode INTERFACE_FUNC getOnPropertyValueRead (IString *propertyName, IEvent **event)=0
 Gets the Event that is triggered whenever a Property value of a Property named propertyName is read. More...
 
virtual ErrCode INTERFACE_FUNC getVisibleProperties (IList **properties)=0
 Returns a list of visible properties contained in the Property object. More...
 
virtual ErrCode INTERFACE_FUNC getAllProperties (IList **properties)=0
 Returns a list of all properties contained in the Property object. More...
 
virtual ErrCode INTERFACE_FUNC setPropertyOrder (IList *orderedPropertyNames)=0
 Sets a custom order of properties as defined in the list of property names. More...
 
virtual ErrCode INTERFACE_FUNC beginUpdate ()=0
 Begins batch configuration of the object. More...
 
virtual ErrCode INTERFACE_FUNC endUpdate ()=0
 Ends batch configuration of the object. More...
 
virtual ErrCode INTERFACE_FUNC getUpdating (Bool *updating)=0
 Returns the state of batch configuration. More...
 
virtual ErrCode INTERFACE_FUNC getOnEndUpdate (IEvent **event)=0
 Gets the Event that is triggered whenever the batch configuration is applied. More...
 
virtual ErrCode INTERFACE_FUNC getPermissionManager (IPermissionManager **permissionManager)=0
 Gets the permission manager of property object. More...
 
- Public Member Functions inherited from IBaseObject
virtual ErrCode INTERFACE_FUNC borrowInterface (const IntfID &intfID, void **obj) const =0
 Returns another interface which is supported by the object without incrementing the reference count. More...
 
virtual ErrCode INTERFACE_FUNC dispose ()=0
 Disposes all references held by the object. More...
 
virtual ErrCode INTERFACE_FUNC getHashCode (SizeT *hashCode)=0
 Returns hash code of the object. More...
 
virtual ErrCode INTERFACE_FUNC equals (IBaseObject *other, Bool *equal) const =0
 Compares object to another object for equality. More...
 
virtual ErrCode INTERFACE_FUNC toString (CharPtr *str)=0
 Returns a string representation of the object. More...
 
- Public Member Functions inherited from IUnknown
virtual ErrCode INTERFACE_FUNC queryInterface (const IntfID &intfID, void **obj)=0
 Returns another interface which is supported by the object and increments the reference count. More...
 
virtual int INTERFACE_FUNC addRef ()=0
 Increments the reference count for an interface on an object. More...
 
virtual int INTERFACE_FUNC releaseRef ()=0
 Decrements the reference count for an interface on an object. More...
 

Member Function Documentation

◆ addFunctionBlock()

virtual ErrCode INTERFACE_FUNC addFunctionBlock ( IFunctionBlock **  functionBlock,
IString typeId,
IPropertyObject config = nullptr 
)
pure virtual

Creates and adds a function block as the neasted of current function block with the provided unique ID and returns it.

Parameters
[out]functionBlockThe added function block.
typeIdThe unique ID of the function block. Can be obtained from its corresponding Function Block Info object.
configA config object to configure a function block with custom settings specific to that function block type.

◆ getAvailableFunctionBlockTypes()

virtual ErrCode INTERFACE_FUNC getAvailableFunctionBlockTypes ( IDict **  functionBlockTypes)
pure virtual

Gets all neasted function block types that are supported, containing their description.

Parameters
[out]functionBlockTypesA dictionary of available function block types.

◆ getFunctionBlocks()

virtual ErrCode INTERFACE_FUNC getFunctionBlocks ( IList **  functionBlocks,
ISearchFilter searchFilter = nullptr 
)
pure virtual

Gets a list of sub-function blocks.

Parameters
searchFilterProvides optional parameters such as "recursive" and "visibleOnly" to modify the search pattern.
[out]functionBlocksThe list of sub-function blocks.

If searchFilter is not provided, the returned list contains only visible function blocks and does not include those of child function blocks.

◆ getFunctionBlockType()

virtual ErrCode INTERFACE_FUNC getFunctionBlockType ( IFunctionBlockType **  type)
pure virtual

Gets an information structure contain metadata of the function block type.

Parameters
[out]typeThe Function block type object.

◆ getInputPorts()

virtual ErrCode INTERFACE_FUNC getInputPorts ( IList **  ports,
ISearchFilter searchFilter = nullptr 
)
pure virtual

Gets a list of the function block's input ports.

Parameters
searchFilterProvides an optional filter that filters out unwanted components and allows for recursion.
[out]portsThe list of input ports.

If searchFilter is not provided, the returned list contains only visible input ports and does not include those of child function blocks.

◆ getSignals()

virtual ErrCode INTERFACE_FUNC getSignals ( IList **  signals,
ISearchFilter searchFilter = nullptr 
)
pure virtual

Gets the list of the function block's output signals.

Parameters
searchFilterProvides an optional filter that filters out unwanted components and allows for recursion.
[out]signalsThe list of output signals.

If searchFilter is not provided, the returned list contains only visible signals and does not include those of child function blocks.

◆ getSignalsRecursive()

virtual ErrCode INTERFACE_FUNC getSignalsRecursive ( IList **  signals,
ISearchFilter searchFilter = nullptr 
)
pure virtual

Gets the list of the function block's visible output signals including signals from visible child function blocks.

Parameters
searchFilterProvides an optional filter that filters out unwanted components and allows for recursion.
[out]signalsThe list of output signals.

◆ getStatusSignal()

virtual ErrCode INTERFACE_FUNC getStatusSignal ( ISignal **  statusSignal)
pure virtual

Gets the function block's status signal.

Parameters
[out]statusSignalThe status signal.

The status signal sends out a status event packet every time it is connected to an input port. Additionally, a status event packet is sent whenever the status of the function block changes.

◆ removeFunctionBlock()

virtual ErrCode INTERFACE_FUNC removeFunctionBlock ( IFunctionBlock functionBlock)
pure virtual

Removes the function block provided as argument, disconnecting its signals and input ports.

Parameters
functionBlockThe function block to be removed.