|
libFAUDES
Sections
Index
|
faudes::DeviceExecutor Class Reference
|
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. | |
Protected Attributes | |
bool | mSyncError |
Sync error flag. | |
tpTime::Type | mMaxSyncGap |
Max gap between physical and generator clock time. | |
int | mSyncMode |
Mode flags for synchronisation. | |
vDevice * | pDevice |
Device reference. | |
Application Interface | |
| |
enum | SyncMode { SyncStrictTime = 0x01, SyncStrictEvents = 0x02 } |
Modes of synchronisation. More... | |
void | ToleranceTime (tpTime::Type maxgap) |
Set tolerance for time synchonisation. | |
void | ToleranceMode (int flag) |
Set synchronisation flags. | |
bool | SyncTime (void) |
Execute generator clock time to sync with device time. | |
Idx | SyncEvents () |
Execute scheduled or input events now. | |
bool | SyncWait (tpTime::Type duration=tpTime::Max) |
Wait for input events. | |
bool | SyncWaitMs (int durationms) |
Wait for input 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 | Devicep (vDevice *dev) |
Set device. | |
vDevice * | Devicep () |
Get device. | |
void | DeviceReset (void) |
Convenience: Reset the device. | |
void | DeviceStart (void) |
Convenience: Start the device. | |
void | DeviceStop (void) |
Convenience: Stop the device. | |
virtual bool | DeviceResetRequest (void) |
Query the device whther it has received an external reset request. |
Executer with IO device to handle external/physical events.
This executor class is derived from the ProposingExecutor and uses a vDevice from the IO Device Plugin to handle input and output events and physical time. Technically, the class provides the routine SyncStep() that has to be called periodically to synchronize executor clock time with physical time and to perform input readings and output 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 synchronistion errors or when the specified duration expired.
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.
The DeviceExecutor inherits file IO from the ProposingExecutor. The device itself is initialized by vDevice methods (eg configured from File) and then passed to the DeviceExecutor by the method Devicep(). Thus, the DeviceExecutor does not need to implement additional token io facilities.
Definition at line 77 of file sp_dplpexecutor.h.
Modes of synchronisation.
Definition at line 162 of file sp_dplpexecutor.h.
faudes::DeviceExecutor::DeviceExecutor | ( | void | ) |
faudes::DeviceExecutor::~DeviceExecutor | ( | void | ) |
Explicit destructor.
Definition at line 25 of file sp_dplpexecutor.cpp.
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 63 of file sp_dplpexecutor.cpp.
vDevice* faudes::DeviceExecutor::Devicep | ( | ) | [inline] |
Get device.
Retturn a refernce to the device for inspection. Note: you must not interfear with the device during synchronuous execution.
Definition at line 294 of file sp_dplpexecutor.h.
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.
dev | IO Device to use |
Definition at line 29 of file sp_dplpexecutor.cpp.
void faudes::DeviceExecutor::DeviceReset | ( | void | ) |
Convenience: Reset the device.
Definition at line 39 of file sp_dplpexecutor.cpp.
bool faudes::DeviceExecutor::DeviceResetRequest | ( | void | ) | [virtual] |
Query the device whther it has received an external reset request.
This method will reset the request.
Definition at line 94 of file sp_dplpexecutor.cpp.
void faudes::DeviceExecutor::DeviceStart | ( | void | ) |
Convenience: Start the device.
Definition at line 47 of file sp_dplpexecutor.cpp.
void faudes::DeviceExecutor::DeviceStop | ( | void | ) |
Convenience: Stop the device.
Definition at line 55 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 neither synchronize generator time nor events.
event | Event by index |
Reimplemented from faudes::ProposingExecutor.
Definition at line 106 of file sp_dplpexecutor.cpp.
bool faudes::DeviceExecutor::IsSynchronous | ( | void | ) | const [inline] |
Test Syncronisation.
Definition at line 269 of file sp_dplpexecutor.h.
void faudes::DeviceExecutor::Reset | ( | long int | seed = 0 |
) | [virtual] |
Reset the DeviceExecutor.
doxygen group
Reset the executor to its initial state and reset the device, ie clear queued input event set outputs to a passive state
seed | Seed for PropossingExecutor random generator, 0<>system time |
Reimplemented from faudes::ProposingExecutor.
Definition at line 69 of file sp_dplpexecutor.cpp.
Idx faudes::DeviceExecutor::SyncEvents | ( | void | ) |
Execute scheduled or input events now.
If an event is scheduled for now, execute it. Otherwise, execute a input event if such is ready. Otherwise execute do nothing.
Definition at line 202 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.
duration | Duration of execution wrt generator time, tpTime::Max for infinite |
Definition at line 353 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.
duration | Max duration of execution wrt generator time, tpTime::Max for unlimited |
Definition at line 325 of file sp_dplpexecutor.cpp.
bool faudes::DeviceExecutor::SyncTime | ( | void | ) |
Execute generator clock time to sync with device time.
If possible, execute the amount of clock time required for an exact match. Otherwise, accept the specified tolerance. As a last resort, issue a sync error.
Definition at line 128 of file sp_dplpexecutor.cpp.
bool faudes::DeviceExecutor::SyncWait | ( | tpTime::Type | duration = tpTime::Max |
) |
Wait for input events.
Wait the specified amount of time, for the proposed time to elaps, or a input event to occur - whatever comes first. This function will *not* synchronise with generator time. You may call SyncTime afterwards.
duration | Max duration to wait for |
Definition at line 261 of file sp_dplpexecutor.cpp.
bool faudes::DeviceExecutor::SyncWaitMs | ( | int | durationms | ) |
Wait for input events.
Wait the specified amount of time, for the proposed time to elaps, or a input event to occur - whatever comes first. This function will *not* synchronise with generator time. You may call SyncTime afterwards.
Note that the executor does not know about msecs, and thus the core interface referc to faudes-time units only. This function is an exception of this rule and is for convenience only.
durationms | Max duration in msecs to wait for |
Definition at line 293 of file sp_dplpexecutor.cpp.
void faudes::DeviceExecutor::ToleranceMode | ( | int | flag | ) | [inline] |
Set synchronisation flags.
Semantics are defined via the enum typedef SyncMode.
flag | Flag word to set mode |
Definition at line 176 of file sp_dplpexecutor.h.
void faudes::DeviceExecutor::ToleranceTime | ( | tpTime::Type | maxgap | ) | [inline] |
Set tolerance for time synchonisation.
doxygen group
maxgap | Max acceptable amount of faudes-time units by which the generators global clock may be behind physical time |
Definition at line 157 of file sp_dplpexecutor.h.
tpTime::Type faudes::DeviceExecutor::mMaxSyncGap [protected] |
Max gap between physical and generator clock time.
Definition at line 332 of file sp_dplpexecutor.h.
bool faudes::DeviceExecutor::mSyncError [protected] |
Sync error flag.
Definition at line 329 of file sp_dplpexecutor.h.
int faudes::DeviceExecutor::mSyncMode [protected] |
Mode flags for synchronisation.
Definition at line 335 of file sp_dplpexecutor.h.
vDevice* faudes::DeviceExecutor::pDevice [protected] |
Device reference.
Definition at line 338 of file sp_dplpexecutor.h.
libFAUDES 2.18b --- 2010-12-17 --- c++ source docu by doxygen 1.6.3