faudes::DeviceExecutor Class Reference
[Simulator Plugin]

#include <sp_dplpexecutor.h>

Inheritance diagram for faudes::DeviceExecutor:

faudes::ProposingExecutor faudes::LoggingExecutor faudes::ParallelExecutor faudes::Type List of all members.

Detailed Description

Executer with IO device to handle external/physical events.

External/Physical Events and Time

This executor class is derived from the ProposingExecutor and uses a vDevice from the IO Device Plugin to handle sensor and actuator events and physical time. Technically, the class provides the routine SyncStep() that has to be called periodically to synchronize executor time with physical time and to perform sensor readings and actuator writings. There is also a convenience routine SyncRun() which runs a loop with SyncStep().

The SyncStep() procedure implements the below stages. It returns true, if indeed a transition was executed. It returns false on if synchronistion fails or the specified duration expired.

Implementation note: if multiple sensor events are available, they will be all executed. This may change in a future version.

Naturally, the DeviceExecutor requires the IO Device plugin in order to be functional. In the absence of the plugin, the DeviceExecutor will behave like a ProposingExecutor.

File IO

The DeviceExecutor inherits file IO from the ProposingExecutor. The device is initialized (eg configured from File) and then passed to the DeviceExecutor by the method Devicep().

Definition at line 77 of file sp_dplpexecutor.h.

Public Member Functions

Constructors & Destructor
 DeviceExecutor ()
 Creates an emtpy DeviceExecutor.
 ~DeviceExecutor ()
 Explicit destructor.
Re-implemenented from ParallelExecutor
virtual void Reset (long int seed=0)
 Reset the DeviceExecutor.
virtual void Clear (void)
 Clear all data (generators, simulation attributes etc).
bool ExecuteEvent (Idx event)
 Execute event.
Application Interface
bool SyncTime (void)
 Execute generator time to sync with device time.
Idx SyncEvents ()
 Execute scheduled or sensor events now.
bool SyncWait (tpTime::Type duration=tpTime::Max)
 Wait for sensor events.
Idx SyncStep (tpTime::Type duration=tpTime::Max)
 Execute one transition with synchronous physical signals.
bool SyncRun (tpTime::Type duration=tpTime::Max)
 Run execution with synchronous physical signals.
bool IsSynchronous (void) const
 Test Syncronisation.
void Tolerance (tpTime::Type maxgap)
 Set tolerance for time synchonisation.
void Devicep (vDevice *dev)
 Set device.
void DeviceStart (void)
 Convenience: Start the device.
void DeviceStop (void)
 Convenience: Stop the device.

Protected Attributes

bool mSyncError
 Sync error flag.
tpTime::Type mMaxSyncGap
 Max gap between physical and generator time.
vDevicepDevice
 Device reference.


Constructor & Destructor Documentation

faudes::DeviceExecutor::DeviceExecutor  ) 
 

Creates an emtpy DeviceExecutor.

Definition at line 21 of file sp_dplpexecutor.cpp.

faudes::DeviceExecutor::~DeviceExecutor  ) 
 

Explicit destructor.

Definition at line 26 of file sp_dplpexecutor.cpp.


Member Function Documentation

void faudes::DeviceExecutor::Clear void   )  [virtual]
 

Clear all data (generators, simulation attributes etc).

This includes the "HardwareReset" event.

Reimplemented from faudes::ProposingExecutor.

Definition at line 56 of file sp_dplpexecutor.cpp.

void faudes::DeviceExecutor::Devicep vDevice dev  ) 
 

Set device.

The device must be configured. You must start the device befor the first call to SyncRun. Ownership of the device stays with the caller.

Parameters:
dev IO Device to use

Definition at line 30 of file sp_dplpexecutor.cpp.

void faudes::DeviceExecutor::DeviceStart void   ) 
 

Convenience: Start the device.

Definition at line 40 of file sp_dplpexecutor.cpp.

void faudes::DeviceExecutor::DeviceStop void   ) 
 

Convenience: Stop the device.

Definition at line 48 of file sp_dplpexecutor.cpp.

bool faudes::DeviceExecutor::ExecuteEvent Idx  event  )  [virtual]
 

Execute event.

Programmatically override any internal schedules and execute the specified event. This routine will does neither synchronize generator time nor events.

Parameters:
event Event by index
Returns:
True on success

Reimplemented from faudes::ProposingExecutor.

Definition at line 71 of file sp_dplpexecutor.cpp.

bool faudes::DeviceExecutor::IsSynchronous void   )  const [inline]
 

Test Syncronisation.

Returns:
True, if device time and events are in sync with generator time and events.

Definition at line 221 of file sp_dplpexecutor.h.

void faudes::DeviceExecutor::Reset long int  seed = 0  )  [virtual]
 

Reset the DeviceExecutor.

Reset the executor to its initial state and reset the device, ie clear queued sensor event set actuators to a passive state

Parameters:
seed Seed for PropossingExecutor random generator, 0<>system time

Reimplemented from faudes::ProposingExecutor.

Definition at line 62 of file sp_dplpexecutor.cpp.

Idx faudes::DeviceExecutor::SyncEvents  ) 
 

Execute scheduled or sensor events now.

If sensor events are ready, execute one of them. Otherwise execute any event scheduled for now. Otherwise execute nothing.

Returns:
Idx of event executed, 0 for no execution or error

Definition at line 159 of file sp_dplpexecutor.cpp.

bool faudes::DeviceExecutor::SyncRun tpTime::Type  duration = tpTime::Max  ) 
 

Run execution with synchronous physical signals.

Loops SyncStep until the specified amount on time expired.

Parameters:
duration Duration of execution wrt generator time, tpTime::Max for infinite
Returns:
True, for no error

Definition at line 261 of file sp_dplpexecutor.cpp.

Idx faudes::DeviceExecutor::SyncStep tpTime::Type  duration = tpTime::Max  ) 
 

Execute one transition with synchronous physical signals.

Calls SyncTime, SyncEvents and SyncWait to execute one transition. It will, however, not pass more than the specified duration.

Parameters:
duration Max duration of execution wrt generator time, tpTime::Max for unlimited
Returns:
Idx of executed event or 0 for time out or error

Definition at line 233 of file sp_dplpexecutor.cpp.

bool faudes::DeviceExecutor::SyncTime void   ) 
 

Execute generator time to sync with device time.

If possible, execute the amount of time required for an exact match. Otherwise, accept the specified tolerance. As a last resort, issue a sync error.

Returns:
True, on success ie synchron within tolerance.

Definition at line 93 of file sp_dplpexecutor.cpp.

bool faudes::DeviceExecutor::SyncWait tpTime::Type  duration = tpTime::Max  ) 
 

Wait for sensor events.

Wait the specified amount of time, for the proposed time to elaps, or a sensor evemnt to occur - whatever comes first. This function will *not* synchronise with generator time. You may call SyncTime afterwards.

Parameters:
duration Max duration to wait for
Returns:
True, if sensor events are available

Definition at line 201 of file sp_dplpexecutor.cpp.

void faudes::DeviceExecutor::Tolerance tpTime::Type  maxgap  )  [inline]
 

Set tolerance for time synchonisation.

Parameters:
maxgap Max acceptable amount of time by which the generator may be behind physical time

Definition at line 230 of file sp_dplpexecutor.h.


Member Data Documentation

tpTime::Type faudes::DeviceExecutor::mMaxSyncGap [protected]
 

Max gap between physical and generator time.

Definition at line 266 of file sp_dplpexecutor.h.

bool faudes::DeviceExecutor::mSyncError [protected]
 

Sync error flag.

Definition at line 263 of file sp_dplpexecutor.h.

vDevice* faudes::DeviceExecutor::pDevice [protected]
 

Device reference.

Definition at line 269 of file sp_dplpexecutor.h.


The documentation for this class was generated from the following files:
Generated on Mon Nov 10 08:13:18 2008 for libFAUDES 2.11v by  doxygen 1.4.4