ChimeraTK-ApplicationCore
04.01.00
|
Simple periodic trigger that fires a variable once per second. More...
#include <PeriodicTrigger.h>
Public Member Functions | |
PeriodicTrigger (ModuleGroup *owner, const std::string &name, const std::string &description, const uint32_t defaultPeriod=1000, const std::unordered_set< std::string > &tags={}, const std::string &periodName="period", const std::string &tickName="tick") | |
Create periodic trigger module. More... | |
PeriodicTrigger ()=default | |
void | prepare () override |
Prepare the execution of the module. More... | |
void | sendTrigger () |
void | mainLoop () override |
To be implemented by the user: function called in a separate thread executing the main loop of the module. More... | |
Public Member Functions inherited from ChimeraTK::ApplicationModule | |
ApplicationModule (ModuleGroup *owner, const std::string &name, const std::string &description, const std::unordered_set< std::string > &tags={}) | |
Create ApplicationModule and register it with its owner. More... | |
ApplicationModule ()=default | |
Default constructor: Allows late initialisation of modules (e.g. More... | |
ApplicationModule (ApplicationModule &&other) noexcept | |
Move operation with the move constructor. More... | |
ApplicationModule & | operator= (ApplicationModule &&other) noexcept |
Move assignment. More... | |
~ApplicationModule () override | |
Destructor. More... | |
void | run () override |
Execute the module. More... | |
void | terminate () override |
Terminate the module. More... | |
ModuleType | getModuleType () const override |
Return the module type of this module, or in case of a VirtualModule the module type this VirtualModule was derived from. More... | |
VersionNumber | getCurrentVersionNumber () const override |
Return the current version number which has been received with the last push-type read operation. More... | |
DataValidity | getDataValidity () const override |
Return the data validity flag. More... | |
void | incrementDataFaultCounter () override |
Set the data validity flag to fault and increment the fault counter. More... | |
void | decrementDataFaultCounter () override |
Decrement the fault counter and set the data validity flag to ok if the counter has reached 0. More... | |
size_t | getDataFaultCounter () const |
Get the Number of inputs which report DataValidity::faulty. More... | |
void | setCurrentVersionNumber (VersionNumber versionNumber) override |
Set the current version number. More... | |
std::list< EntityOwner * > | getInputModulesRecursively (std::list< EntityOwner * > startList) override |
Use pointer to the module as unique identifier. More... | |
size_t | getCircularNetworkHash () const override |
Get the ID of the circular dependency network (0 if none). More... | |
void | setCircularNetworkHash (size_t circularNetworkHash) |
Set the ID of the circular dependency network. More... | |
ChimeraTK::Model::ApplicationModuleProxy | getModel () |
Return the application model proxy representing this module. More... | |
void | unregisterModule (Module *module) override |
Unregister another module as a sub-module. More... | |
Logger::StreamProxy | logger (Logger::Severity severity) |
Convenicene function to obtain a logger stream with the given Severity. More... | |
Public Member Functions inherited from ChimeraTK::VariableGroup | |
VariableGroup (VariableGroup *owner, const std::string &name, const std::string &description, const std::unordered_set< std::string > &tags={}) | |
Constructor: Create VariableGroup register it with its owner. More... | |
VariableGroup ()=default | |
Default constructor: Allows late initialisation of VariableGroups (e.g. More... | |
VariableGroup (VariableGroup &&other) noexcept | |
Move constructor. More... | |
VariableGroup (const VariableGroup &other) noexcept=delete | |
VariableGroup & | operator= (VariableGroup &&other) noexcept |
Move assignment. More... | |
VariableGroup & | operator= (const VariableGroup &other) noexcept=delete |
ModuleType | getModuleType () const override |
Return the module type of this module, or in case of a VirtualModule the module type this VirtualModule was derived from. More... | |
ChimeraTK::Model::VariableGroupProxy | getModel () |
Return the application model proxy representing this module. More... | |
std::string | getVirtualQualifiedName () const override |
void | unregisterModule (Module *module) override |
Unregister another module as a sub-module. More... | |
Public Member Functions inherited from ChimeraTK::Module | |
Module (EntityOwner *owner, const std::string &name, const std::string &description, const std::unordered_set< std::string > &tags={}) | |
Constructor: Create Module by the given name with the given description and register it with its owner. More... | |
Module ()=default | |
Default constructor: Allows late initialisation of modules (e.g. More... | |
~Module () override | |
Destructor. More... | |
Module (Module &&other) noexcept | |
Move constructor. More... | |
Module & | operator= (Module &&other) noexcept |
Move assignment operator. More... | |
ChimeraTK::ReadAnyGroup | readAnyGroup () |
Create a ChimeraTK::ReadAnyGroup for all readable variables in this Module. More... | |
void | readAll (bool includeReturnChannels=false) |
Read all readable variables in the group. More... | |
void | readAllNonBlocking (bool includeReturnChannels=false) |
Just call readNonBlocking() on all readable variables in the group. More... | |
void | readAllLatest (bool includeReturnChannels=false) |
Just call readLatest() on all readable variables in the group. More... | |
void | writeAll (bool includeReturnChannels=false) |
Just call write() on all writable variables in the group. More... | |
void | writeAllDestructively (bool includeReturnChannels=false) |
Just call writeDestructively() on all writable variables in the group. More... | |
std::string | getQualifiedName () const override |
Get the fully qualified name of the module instance, i.e. More... | |
std::string | getFullDescription () const override |
Obtain the full description including the full description of the owner. More... | |
void | setOwner (EntityOwner *newOwner) |
Set a new owner. More... | |
EntityOwner * | getOwner () const |
VersionNumber | getCurrentVersionNumber () const override |
Return the current version number which has been received with the last push-type read operation. More... | |
void | setCurrentVersionNumber (VersionNumber version) override |
Set the current version number. More... | |
DataValidity | getDataValidity () const override |
Return the data validity flag. More... | |
void | incrementDataFaultCounter () override |
Set the data validity flag to fault and increment the fault counter. More... | |
void | decrementDataFaultCounter () override |
Decrement the fault counter and set the data validity flag to ok if the counter has reached 0. More... | |
std::list< EntityOwner * > | getInputModulesRecursively (std::list< EntityOwner * > startList) override |
Use pointer to the module as unique identifier. More... | |
size_t | getCircularNetworkHash () const override |
Get the ID of the circular dependency network (0 if none). More... | |
Module * | findApplicationModule () |
Find ApplicationModule owner. More... | |
void | disable () |
Disable the module such that it is not part of the Application. More... | |
Public Member Functions inherited from ChimeraTK::EntityOwner | |
EntityOwner (std::string name, std::string description, std::unordered_set< std::string > tags={}) | |
Constructor: Create EntityOwner by the given name with the given description. More... | |
EntityOwner () | |
Default constructor just for late initialisation. More... | |
virtual | ~EntityOwner ()=default |
Virtual destructor to make the type polymorphic. More... | |
EntityOwner (EntityOwner &&other) noexcept | |
Move constructor. More... | |
EntityOwner (const EntityOwner &other)=delete | |
EntityOwner & | operator= (EntityOwner &&other) noexcept |
Move assignment operator. More... | |
EntityOwner & | operator= (const EntityOwner &other)=delete |
const std::string & | getName () const |
Get the name of the module instance. More... | |
std::string | getQualifiedNameWithType () const |
Get the fully qualified name of the module instance, followed by the C++ data type (in pointy brackets) More... | |
const std::string & | getDescription () const |
Get the description of the module instance. More... | |
std::list< VariableNetworkNode > | getAccessorList () const |
Obtain the list of accessors/variables directly associated with this instance. More... | |
std::list< Module * > | getSubmoduleList () const |
Obtain the list of submodules associated with this instance. More... | |
std::list< VariableNetworkNode > | getAccessorListRecursive () const |
Obtain the list of accessors/variables associated with this instance and any submodules. More... | |
std::list< Module * > | getSubmoduleListRecursive () const |
Obtain the list of submodules associated with this instance and any submodules. More... | |
void | registerAccessor (VariableNetworkNode accessor) |
Called inside the constructor of Accessor: adds the accessor to the list. More... | |
void | unregisterAccessor (const VariableNetworkNode &accessor) |
Called inside the destructor of Accessor: removes the accessor from the list. More... | |
void | registerModule (Module *module, bool addTags=true) |
Register another module as a sub-module. More... | |
void | addTag (const std::string &tag) |
Add a tag to all Application-type nodes inside this group. More... | |
void | dump (const std::string &prefix="", std::ostream &stream=std::cout) const |
Print the full hierarchy to given stream. More... | |
bool | hasReachedTestableMode () |
Check whether this module has declared that it reached the testable mode. More... | |
template<typename T > | |
std::string | constant (T value) |
Create a variable name which will be automatically connected with a constant value. More... | |
Public Attributes | |
ScalarPollInput< uint32_t > | period |
ScalarOutput< uint64_t > | tick |
Additional Inherited Members | |
Public Types inherited from ChimeraTK::EntityOwner | |
enum | ModuleType { ModuleType::ApplicationModule, ModuleType::ModuleGroup, ModuleType::VariableGroup, ModuleType::ControlSystem, ModuleType::Device, ModuleType::Invalid } |
Static Public Member Functions inherited from ChimeraTK::Module | |
static ConfigReader & | appConfig () |
Obtain the ConfigReader instance of the application. More... | |
Static Public Attributes inherited from ChimeraTK::EntityOwner | |
static constexpr std::string_view | namePrefixConstant {"/@CONST@"} |
Prefix for constants created by constant(). More... | |
Protected Member Functions inherited from ChimeraTK::ApplicationModule | |
void | mainLoopWrapper () |
Wrapper around mainLoop(), to execute additional tasks in the thread before entering the main loop. More... | |
std::string | className () |
Name of the module class, used for logging and debugging purposes. More... | |
Protected Attributes inherited from ChimeraTK::ApplicationModule | |
boost::thread | _moduleThread |
The thread executing mainLoop() More... | |
VersionNumber | _currentVersionNumber {nullptr} |
Version number of last push-type read operation - will be passed on to any write operations. More... | |
std::atomic< size_t > | _dataFaultCounter {0} |
Number of inputs which report DataValidity::faulty. More... | |
size_t | _circularNetworkHash {0} |
Unique ID for the circular dependency network. More... | |
detail::CircularDependencyDetectionRecursionStopper | _recursionStopper |
Helper needed to stop the recursion when detecting circular dependency networks. More... | |
ChimeraTK::Model::ApplicationModuleProxy | _model |
Protected Attributes inherited from ChimeraTK::VariableGroup | |
ChimeraTK::Model::VariableGroupProxy | _model |
Protected Attributes inherited from ChimeraTK::Module | |
EntityOwner * | _owner {nullptr} |
Owner of this instance. More... | |
Protected Attributes inherited from ChimeraTK::EntityOwner | |
std::string | _name |
The name of this instance. More... | |
std::string | _description |
The description of this instance. More... | |
std::list< VariableNetworkNode > | _accessorList |
List of accessors owned by this instance. More... | |
std::list< Module * > | _moduleList |
List of modules owned by this instance. More... | |
std::unordered_set< std::string > | _tags |
List of tags to be added to all accessors and modules inside this module. More... | |
std::atomic< bool > | _testableModeReached {false} |
Flag used by the testable mode to identify whether a thread within the EntityOwner has reached the point where the testable mode lock is acquired. More... | |
Simple periodic trigger that fires a variable once per second.
After configurable number of seconds it will wrap around
Definition at line 16 of file PeriodicTrigger.h.
|
inline |
Create periodic trigger module.
In addition to the usual arguments of an ApplicationModule, the default timeout value is specified. This value is used as a timeout if the timeout value is set to 0. The timeout value is in milliseconds.
owner | Owning ModuleGroup |
name | The name of the PeriodicTrigger module |
description | The description of the PeriodicTrigger module |
defaultPeriod | Trigger period in milliseconds, used when the trigger period input process variable has the value 0. |
tags | List of tags to attach to all variables concerning the location in the virtual hierarchy |
periodName | Qualified name for the period input process variable |
tickName | Qualified names for the tick output process variable |
For periodName and tickName, you can just give a variable name, a relative or an absolute path.
Definition at line 34 of file PeriodicTrigger.h.
|
default |
|
inlineoverridevirtual |
To be implemented by the user: function called in a separate thread executing the main loop of the module.
Implements ChimeraTK::ApplicationModule.
Definition at line 58 of file PeriodicTrigger.h.
|
inlineoverridevirtual |
Prepare the execution of the module.
This function is called before any module is started (including internal modules like FanOuts) and before the initial values of the variables are pushed into the queues. Reading and writing variables at this point may result in undefined behaviour.
Reimplemented from ChimeraTK::Module.
Definition at line 47 of file PeriodicTrigger.h.
|
inline |
Definition at line 52 of file PeriodicTrigger.h.
ScalarPollInput<uint32_t> ChimeraTK::PeriodicTrigger::period |
Definition at line 44 of file PeriodicTrigger.h.
ScalarOutput<uint64_t> ChimeraTK::PeriodicTrigger::tick |
Definition at line 45 of file PeriodicTrigger.h.