cisst-saw
Loading...
Searching...
No Matches
mtsTaskPeriodic Class Reference

#include <mtsTaskPeriodic.h>

Inheritance diagram for mtsTaskPeriodic:
mtsTaskContinuous mtsTask mtsComponent cmnGenericObject mtsComponentDispatcherBase< mtsTaskPeriodic, mtsTaskPeriodicConstructorArg > mtsComponentAddLatency mtsIGTLBridge mtsIGTLCRTKBridge

Public Types

typedef mtsTaskContinuous BaseType
Public Types inherited from mtsTaskContinuous
typedef mtsTask BaseType
Public Types inherited from mtsTask
typedef mtsComponent BaseType
Public Types inherited from mtsComponent
typedef mtsComponent ThisType

Public Member Functions

 mtsTaskPeriodic (const std::string &name, double periodicityInSeconds, bool isHardRealTime=false, unsigned int sizeStateTable=256, bool newThread=true)
 mtsTaskPeriodic (const std::string &name, const osaAbsoluteTime &periodicity, bool isHardRealTime=false, unsigned int sizeStateTable=256, bool newThread=true)
 mtsTaskPeriodic (const mtsTaskPeriodicConstructorArg &arg)
virtual ~mtsTaskPeriodic ()
void Suspend (void) override
double GetPeriodicity (void) const
bool IsPeriodic (void) const override
Public Member Functions inherited from mtsTaskContinuous
 mtsTaskContinuous (const std::string &name, unsigned int sizeStateTable=256, bool newThread=true)
 mtsTaskContinuous (const mtsTaskContinuousConstructorArg &arg)
virtual ~mtsTaskContinuous ()
void Create (void *data=0) override
void Start (void) override
void Kill (void) override
virtual bool CreatesThread (void) const
Public Member Functions inherited from mtsTask
 mtsTask (const std::string &name, unsigned int sizeStateTable=256)
virtual ~mtsTask ()
virtual void OnStartupException (const std::exception &excp)
virtual void Run (void)=0
virtual void OnRunException (const std::exception &excp)
void Configure (const std::string &CMN_UNUSED(filename)="") override
void SetInitializationDelay (double delay)
void Create (void) override
double GetAveragePeriod (void) const
const std::string GetDefaultStateTableName (void) const
mtsStateTableGetDefaultStateTable (void)
mtsInterfaceRequiredAddInterfaceRequiredWithoutSystemEventHandlers (const std::string &interfaceRequiredName, mtsRequiredType required=MTS_REQUIRED) override
mtsInterfaceProvidedAddInterfaceProvidedWithoutSystemEvents (const std::string &newInterfaceName, mtsInterfaceQueueingPolicy queueingPolicy=MTS_COMPONENT_POLICY) override
virtual bool WaitToStart (double timeout)
virtual bool WaitToTerminate (double timeout)
virtual void WaitForWakeup (void)
virtual void Wakeup (void)
void ProcessManagerCommandsIfNotActive ()
bool CheckForOwnThread (void) const
virtual bool IsOverranPeriod (void) const
virtual void ResetOverranPeriod (void)
Public Member Functions inherited from mtsComponent
 mtsComponent (const std::string &deviceName)
virtual ~mtsComponent ()
const std::string & GetName (void) const
void GetName (std::string &placeHolder) const
void AddTag (const std::string &tag)
const std::set< std::string > & GetTags (void) const
void SetName (const std::string &componentName)
virtual void Configure (const std::string &filename="")
bool CreateAndWait (double timeoutInSeconds)
bool StartAndWait (double timeoutInSeconds)
bool KillAndWait (double timeoutInSeconds)
virtual void Startup (void)
virtual void Cleanup (void)
mtsInterfaceProvidedAddInterfaceProvided (const std::string &interfaceProvidedName, mtsInterfaceQueueingPolicy queueingPolicy=MTS_COMPONENT_POLICY)
CISST_DEPRECATED mtsInterfaceProvidedAddProvidedInterface (const std::string &interfaceProvidedName)
virtual mtsInterfaceOutputAddInterfaceOutput (const std::string &interfaceOutputName)
std::vector< std::string > GetNamesOfInterfacesProvidedOrOutput (void) const
std::vector< std::string > GetNamesOfInterfacesProvided (void) const
std::vector< std::string > GetNamesOfInterfacesOutput (void) const
bool InterfaceExists (const std::string &interfaceName, cmnLogLevel lod=CMN_LOG_LEVEL_INIT_VERBOSE) const
bool InterfaceProvidedOrOutputExists (const std::string &interfaceName, cmnLogLevel lod=CMN_LOG_LEVEL_INIT_VERBOSE) const
bool InterfaceRequiredOrInputExists (const std::string &interfaceName, cmnLogLevel lod=CMN_LOG_LEVEL_INIT_VERBOSE) const
mtsInterfaceProvidedGetInterfaceProvided (const std::string &interfaceProvidedName) const
mtsInterfaceOutputGetInterfaceOutput (const std::string &interfaceOutputName) const
size_t GetNumberOfInterfacesProvided (void) const
size_t GetNumberOfInterfacesOutput (void) const
bool RemoveInterfaceProvided (const std::string &interfaceProvidedName)
mtsInterfaceRequiredAddInterfaceRequired (const std::string &interfaceRequiredName, mtsRequiredType isRequired=MTS_REQUIRED)
CISST_DEPRECATED mtsInterfaceRequiredAddRequiredInterface (const std::string &requiredInterfaceName)
virtual mtsInterfaceInputAddInterfaceInput (const std::string &interfaceInputName)
std::vector< std::string > GetNamesOfInterfacesRequiredOrInput (void) const
std::vector< std::string > GetNamesOfInterfacesRequired (void) const
std::vector< std::string > GetNamesOfInterfacesInput (void) const
const mtsInterfaceProvidedGetInterfaceProvidedFor (const std::string &interfaceRequiredName)
mtsInterfaceRequiredGetInterfaceRequired (const std::string &interfaceRequiredName)
mtsInterfaceInputGetInterfaceInput (const std::string &interfaceInputName) const
size_t GetNumberOfInterfacesRequired (void) const
size_t GetNumberOfInterfacesInput (void) const
bool RemoveInterfaceRequired (const std::string &interfaceRequiredName)
mtsStateTableGetStateTable (const std::string &stateTableName)
bool AddStateTable (mtsStateTable *existingStateTable, bool addInterfaceProvided=true)
void UseSeparateLogFileDefault (bool forwardToLogger=true)
void UseSeparateLogFileDefaultWithDate (bool forwardToLogger=true)
void UseSeparateLogFile (const std::string &filename, bool forwardToLogger=true)
cmnLogger::StreamBufTypeGetLogMultiplexer (void) const override
bool AreAllInterfacesRequiredConnected (const bool log=false)
bool IsRunning (void) const
bool CISST_DEPRECATED Running (void) const
bool IsStarted (void) const
bool IsTerminated (void) const
bool IsEndTask (void) const
const mtsComponentStateGetState (void) const
void GetState (mtsComponentState &state) const
void ToStream (std::ostream &outputStream) const override
bool SetReplayMode (void)
bool SetReplayData (const std::string &stateTableName, const std::string &fileName)
bool SetReplayTime (const double time)
Public Member Functions inherited from cmnGenericObject
virtual ~cmnGenericObject (void)
virtual const cmnClassServicesBaseServices (void) const =0
bool ReconstructFrom (const cmnGenericObject &other)
std::string ToString (void) const
virtual void ToStreamRaw (std::ostream &outputStream, const char delimiter=' ', bool headerOnly=false, const std::string &headerPrefix="") const
virtual bool FromStreamRaw (std::istream &inputStream, const char delimiter=' ')
virtual void SerializeRaw (std::ostream &outputStream) const
virtual void DeSerializeRaw (std::istream &inputStream)
virtual size_t ScalarNumber (void) const
virtual bool ScalarNumberIsFixed (void) const
virtual double Scalar (const size_t CMN_UNUSED(index)) const CISST_THROW(std
virtual std::string ScalarDescription (const size_t CMN_UNUSED(index), const std::string &CMN_UNUSED(userDescription)) const

Protected Member Functions

void * RunInternal (void *argument) override
void StartupInternal (void) override
void CleanupInternal (void) override
void StartInternal (void) override
Protected Member Functions inherited from mtsTask
virtual const mtsManagerComponentServicesGetManagerComponentServices (void) const override
void RunEventHandler (void)
void ChangeStateEventHandler (const mtsComponentState &newState)
mtsExecutionResult RunEvent (bool check=true)
void DoRunInternal (void)
void Sleep (double timeInSeconds)
mtsStateIndex::TimeTicksType GetTick (void) const
virtual void SaveThreadStartData (void *data)
virtual void SetThreadReturnValue (void *returnValue)
void ChangeState (mtsComponentState::Enum newState)
bool WaitForState (mtsComponentState desiredState, double timeout) override
Protected Member Functions inherited from mtsComponent
 mtsComponent (void)
 mtsComponent (const mtsComponent &other)
void Initialize (void)
mtsInterfaceRequiredAddInterfaceRequiredExisting (const std::string &interfaceRequiredName, mtsInterfaceRequired *interfaceRequired)
mtsInterfaceRequiredAddInterfaceRequiredUsingMailbox (const std::string &interfaceRequiredName, mtsMailBox *mailBox, mtsRequiredType required)
mtsInterfaceProvidedAddInterfaceProvidedUsingMailbox (const std::string &interfaceProvidedName, mtsMailBox *mailBox)
mtsInterfaceInputAddInterfaceInputExisting (const std::string &interfaceInputName, mtsInterfaceInput *interfaceInput)
mtsInterfaceOutputAddInterfaceOutputExisting (const std::string &interfaceOutputName, mtsInterfaceOutput *interfaceOutput)
void KillSeparateLogFile (void)
size_t ProcessMailBoxes (InterfacesProvidedMapType &interfaces)
size_t ProcessQueuedCommands (void)
size_t ProcessQueuedEvents (void)
mtsInterfaceRequiredEnableDynamicComponentManagement (void)
 Enable support for dynamic component management services.
bool AddInterfaceInternal (const bool useMangerComponentServices=false)
 Add internal interfaces.
void InterfaceInternalCommands_GetEndUserInterface (const mtsEndUserInterfaceArg &argin, mtsEndUserInterfaceArg &argout)
void InterfaceInternalCommands_AddObserverList (const mtsEventHandlerList &argin, mtsEventHandlerList &argout)
void InterfaceInternalCommands_RemoveEndUserInterface (const mtsEndUserInterfaceArg &argin, mtsEndUserInterfaceArg &argout)
void InterfaceInternalCommands_RemoveObserverList (const mtsEventHandlerList &argin, mtsEventHandlerList &argout)

Protected Attributes

osaThreadBuddy ThreadBuddy
double Period
osaAbsoluteTime AbsoluteTimePeriod
bool IsHardRealTime
Protected Attributes inherited from mtsTaskContinuous
bool NewThread
bool CaptureThread
Protected Attributes inherited from mtsTask
osaThread Thread
double InitializationDelay
osaMutex StateChange
osaThreadSignal StateChangeSignal
mtsStateTable StateTable
bool OverranPeriod
void * ThreadStartData
void * ReturnValue
mtsCallableVoidBaseInterfaceProvidedToManagerCallable
mtsInterfaceRequiredExecIn
mtsInterfaceProvidedExecOut
mtsFunctionVoid RunEventInternal
bool RunEventCalled
mtsFunctionWrite ChangeStateEvent
Protected Attributes inherited from mtsComponent
std::string Name
mtsComponentState State
std::set< std::string > mTags
mtsInterfaceProvidedInterfaceProvidedToManager
bool UseSeparateLogFileFlag
cmnLogger::StreamBufTypeLoDMultiplexerStreambuf
std::ofstream * LogFile
InterfacesProvidedMapType InterfacesProvided
InterfacesOutputMapType InterfacesOutput
InterfacesRequiredMapType InterfacesRequired
InterfacesInputMapType InterfacesInput
StateTableMapType StateTables
mtsManagerComponentServicesManagerComponentServices
mtsFunctionWrite EventGeneratorChangeState
bool ReplayMode

Additional Inherited Members

Static Public Attributes inherited from mtsTask
static std::runtime_error UnknownException
Protected Types inherited from mtsComponent
typedef cmnNamedMap< mtsInterfaceProvidedInterfacesProvidedMapType
typedef cmnNamedMap< mtsInterfaceOutputInterfacesOutputMapType
typedef cmnNamedMap< mtsInterfaceRequiredInterfacesRequiredMapType
typedef cmnNamedMap< mtsInterfaceInputInterfacesInputMapType
typedef cmnNamedMap< mtsStateTableStateTableMapType

Detailed Description

This class inherits from mtsTaskContinuous and specializes it to support periodic loops, where the user-supplied Run method is called at a defined period. It also has a mechanism to make the task hard real time, assuming that the underlying operating system provides that capability.

Member Typedef Documentation

◆ BaseType

Constructor & Destructor Documentation

◆ mtsTaskPeriodic() [1/3]

mtsTaskPeriodic::mtsTaskPeriodic ( const std::string & name,
double periodicityInSeconds,
bool isHardRealTime = false,
unsigned int sizeStateTable = 256,
bool newThread = true )

Create a task with name 'name', periodicity, and a flag that sets if the task needs to be hard real time.

Parameters
nameThe name of the task
periodicityInSecondsThe task period, in seconds
isHardRealTimeTrue if task should run in hard real time
sizeStateTableThe history size of the state table
newThreadTrue if a new thread should be created for this task
Note
See note in mtsTask regarding length of string name. See note in mtsTaskContinuous regarding newThread parameter.

◆ mtsTaskPeriodic() [2/3]

mtsTaskPeriodic::mtsTaskPeriodic ( const std::string & name,
const osaAbsoluteTime & periodicity,
bool isHardRealTime = false,
unsigned int sizeStateTable = 256,
bool newThread = true )

◆ mtsTaskPeriodic() [3/3]

mtsTaskPeriodic::mtsTaskPeriodic ( const mtsTaskPeriodicConstructorArg & arg)

◆ ~mtsTaskPeriodic()

virtual mtsTaskPeriodic::~mtsTaskPeriodic ( )
virtual

Default Destructor.

Member Function Documentation

◆ CleanupInternal()

void mtsTaskPeriodic::CleanupInternal ( void )
overrideprotectedvirtual

The member function that is executed once the task terminates. This does some cleanup work

Reimplemented from mtsTask.

◆ GetPeriodicity()

double mtsTaskPeriodic::GetPeriodicity ( void ) const

Return the periodicity of the task, in seconds

◆ IsPeriodic()

bool mtsTaskPeriodic::IsPeriodic ( void ) const
overridevirtual

Return true if thread is periodic. Currently, returns true if the thread was created with a period > 0.

Reimplemented from mtsTask.

◆ RunInternal()

void * mtsTaskPeriodic::RunInternal ( void * argument)
overrideprotectedvirtual

The member function that is passed as 'start routine' argument for thread creation.

Reimplemented from mtsTaskContinuous.

◆ StartInternal()

void mtsTaskPeriodic::StartInternal ( void )
overrideprotectedvirtual

Called from Start

Reimplemented from mtsTaskContinuous.

◆ StartupInternal()

void mtsTaskPeriodic::StartupInternal ( void )
overrideprotectedvirtual

The member funtion that is executed as soon as thread gets created. It does some housekeeping before the user code can be executed as real time.

Reimplemented from mtsTask.

◆ Suspend()

void mtsTaskPeriodic::Suspend ( void )
overridevirtual

Suspend the execution of the task

Reimplemented from mtsTaskContinuous.

Member Data Documentation

◆ AbsoluteTimePeriod

osaAbsoluteTime mtsTaskPeriodic::AbsoluteTimePeriod
protected

◆ IsHardRealTime

bool mtsTaskPeriodic::IsHardRealTime
protected

True if the task is hard real time. It is always false for non-real time systems.

◆ Period

double mtsTaskPeriodic::Period
protected

The period of the task, in seconds.

◆ ThreadBuddy

osaThreadBuddy mtsTaskPeriodic::ThreadBuddy
protected

The OS independent thread buddy, that makes the thread real-time on ALL platforms.


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