|
|
||||||
|
Public Types |
Public Member Functions |
Static Public Member Functions |
Protected Member Functions |
Protected Attributes |
Static Private Member Functions |
Friends |
List of all members
faudes::vDevice Class Referenceabstract Detailed DescriptionVirtual base class to define the interface for event io. Input and Output event IOA vDevice provides an virtual interface to execute output events and sense input events, ie ReadInput() and WriteOutput(). The latter is prepared to be organized as a background thread that accumulates events in an internal fifo buffer. Once a input event has been read by the application, the buffer is cleared. A device is configured by passing an event set with device event attributes. The virtual base class formalls takes void attributes, and uses a dynamic cast to the actual attribute type that is provided by any derived class. Physical TimeThe vDevice defines an interface to access the current physical time. The default implementation has msec resolution and is based on the system clock. Time may be queried in ms by CurrentTimeMs() or in faudes time unis (ftu) by CurrentTime(). Faudes time units refer to defining data in eg guards and invariants of timed automata or stochastical execution properties. Conversion to physical time is by the factor mTimeScale given in msecs per ftu. There is also a default implementation WaitInputs() for timed waiting for events based on condition variables. This requires a derived class to send the according signal. Both, physical time and waiting for events, may be overwritten in derived classes. Operating StatusThe device may be in one of four operating states Down, StartUp, Up or ShutDown. Once configured you may Start() the device. The device will assychonously allocate required resources and if successful eventually be in state Up. While the device is Up, you can write outputs and read events. You can request the device to release resources by calling Stop(). While Up, you may also Reset() the device, to set outputs in passive state, to reset physical time to zero and tu flush the input fifo buffer. File IOThe vDevice provides std faudes token io interface via faudes::Type. In addition, there is a static constructor FromTokenreader() to construct a vDevice object of specific type as indentifiesd by the token section. NoteThe vDevice derived classes implement std faudes type semantics for token IO plus the New() factory function to support type registration required for XML formated files. Assignment and comparison are, however, not implemented. Definition at line 261 of file iop_vdevice.h.
Member Enumeration Documentation◆ DeviceStateEnum for device stages.
Definition at line 270 of file iop_vdevice.h. Constructor & Destructor Documentation◆ vDevice()
Default constructor. Definition at line 149 of file iop_vdevice.cpp. ◆ ~vDevice()
Explicit destructor. Definition at line 191 of file iop_vdevice.cpp. Member Function Documentation◆ AllDevices()
Definition at line 184 of file iop_vdevice.cpp. ◆ Clear()
Clear all configuration. This implies Stop(). Reimplemented from faudes::Type. Reimplemented in faudes::xDevice, faudes::nDevice, faudes::sDevice, and faudes::mbDevice. Definition at line 325 of file iop_vdevice.cpp. ◆ Compile()
Compile inner data-structures. As every derived class may have its own individual inner data-structures to set up, it has to reimplement its own Compile()-function if needed. In the base class Compile() builds up the input- and output event set. Reimplemented in faudes::xDevice, faudes::nDevice, faudes::sDevice, and faudes::mbDevice. Definition at line 647 of file iop_vdevice.cpp. ◆ Configure() [1/2]
Configure by alphabet. For a nontrivial device, a dynamic cast is used to access atributes of the alphabet parameter.
Reimplemented in faudes::xDevice. Definition at line 625 of file iop_vdevice.cpp. ◆ Configure() [2/2]
Insert/edit input or output configuration. For a nontrivial device, a dynamic cast is used to access the attribute parameter.
Reimplemented in faudes::xDevice. Definition at line 606 of file iop_vdevice.cpp. ◆ CurrentTime() [1/2]
Set physical time in ftu.
Reimplemented in faudes::xDevice. Definition at line 753 of file iop_vdevice.cpp. ◆ CurrentTime() [2/2]
Report physical time in ftu. The time elapsed since the last reset is retunred in faudes time units (ftu).
Reimplemented in faudes::xDevice. Definition at line 739 of file iop_vdevice.cpp. ◆ CurrentTimeMs() [1/2]
Set physical time in ms.
Reimplemented in faudes::xDevice. Definition at line 775 of file iop_vdevice.cpp. ◆ CurrentTimeMs() [2/2]
Report physical time in ms. The time elapsed since the last reset is returned in msecs.
Reimplemented in faudes::xDevice. Definition at line 760 of file iop_vdevice.cpp. ◆ DoRead()
Token input, see Type::DRead for public wrappers. The vDevice implkements token input to consist of DoReadPreface (name, time scale etc) and DoReadConfiguration (events attributes), followed by Compile (set up internal data structures). The default label is given by the member variable mDefaultLabel. Derived classes arte meant to set mDefaultLabel in their constructor and to reimplement DoReadPreface to cover additional parameters. The pContext parameter is ignored.
Reimplemented from faudes::Type. Definition at line 465 of file iop_vdevice.cpp. ◆ DoReadConfiguration()
Reads event-configuration data from TokenReader. This function is part of the token-input mechanism and reads the device-specific event-configuration. It uses the virtual interface of TBaseSet to figure the actual attribute type. The section defaults to "EventConfiguration".
Reimplemented in faudes::xDevice. Definition at line 490 of file iop_vdevice.cpp. ◆ DoReadPreface()
Reads non-event-configuration data from TokenReader. This function is part of the non-event-configuration token-input mechanism and located at the top of the class hierarchy. The vDevice will read its name and the time scale, derived classes are meant to first call the base class method and then read add additional configuration parameters. Note: in order to keep the inputfile-layout as easy as possible no label will be used to separate this data-section. Never the less a default-label ("Device") is specified.
Reimplemented in faudes::nDevice, faudes::sDevice, and faudes::mbDevice. Definition at line 574 of file iop_vdevice.cpp. ◆ DoWrite()
Token output, see Type::Write for public wrappers. The vDevice inplements token writing to consist of DoWritePreface (device name and time scale). and DoWriteConfiguration (device specific event attributes). The default label is taken from the member variable mDefaultLabel. Derived classes are meant to set mDefaultLabel in their constructor and to reimplement DoWritePreface to add additional data eg cycle time or network address. The parameter pContext is ignored and passed on.
Reimplemented from faudes::Type. Definition at line 373 of file iop_vdevice.cpp. ◆ DoWriteConfiguration()
Writes event-configuration to TokenWriter. This function is part of the event-configuration token-output mechanism. It writes the device-specific event-configuration to provided TokenWriter. It uses the virtual interface of TBaseSet to figure the actual attribute type. Note: the event-configuration will be labeled by "EventConfiguration"
Reimplemented in faudes::xDevice. Definition at line 408 of file iop_vdevice.cpp. ◆ DoWritePreface()
Writes non-event-configuration data from TokenWriter. This function is part of the non-event-configuration token-output mechanism. The vDevice will write its name and the time scale, derived classes are meant to first call the base class method and then add additional configuration parameter. Note: in order to keep the inputfile-layout as easy as possible no label will be used to separate this data-section. Never the less a default-label ("Device") is specified.
Reimplemented in faudes::nDevice, faudes::sDevice, and faudes::mbDevice. Definition at line 395 of file iop_vdevice.cpp. ◆ EStr()
Convenience method. Definition at line 627 of file iop_vdevice.h. ◆ FlushOutputs()
Flush pending IO Operations. A device may implement buffered output operations, i.e. to assemble a process image befor applying it to the physical plant. By FlushOutputs() you can ask the device to execute all buffered output operations. FlushOutputs() is called by WaitInputs() and WaitInputsMs(), so buffers are automatically flushed when the simulation waits for input events. The default impelmentation of FlushOutputs() does nothing. Reimplemented in faudes::xDevice. Definition at line 916 of file iop_vdevice.cpp. ◆ FromFile()
Construct on heap from file. This constructor examines the file, determines the coressponding class and constructs the device on the heap.
Definition at line 248 of file iop_vdevice.cpp. ◆ FromTokenReader()
Construct on heap from token reader. This constructor examines the token strean, determines the coressponding class and constructs the device on the heap. Todo: the implementation of this function is a hack, there must be proper solution to this issue.
Definition at line 212 of file iop_vdevice.cpp. ◆ FtuToMs()
convert duration from fauDES-time units to ms Definition at line 720 of file iop_vdevice.cpp. ◆ FtuToSystemTime()
Convert faudes time unit duration to system time. Note: this helper function is not static since it refers to the parameter mTimeScale.
Definition at line 699 of file iop_vdevice.cpp. ◆ InputReady()
Report whether a input-event is ready. Definition at line 971 of file iop_vdevice.cpp. ◆ Inputs()
Get inputs as plain set.
Definition at line 694 of file iop_vdevice.cpp. ◆ MsToFtu()
convert duration in ms to faudes-time units Definition at line 731 of file iop_vdevice.cpp. ◆ Name() [1/2]
Set the device name.
Reimplemented from faudes::Type. Definition at line 340 of file iop_vdevice.cpp. ◆ Name() [2/2]
Get device name.
Reimplemented from faudes::Type. Definition at line 346 of file iop_vdevice.cpp. ◆ Outputs()
Get outputs as plain set.
Definition at line 689 of file iop_vdevice.cpp. ◆ PeekInput()
Peek for sensed events. Report the oldest input-event from the buffer. However, dont remove the event.
Definition at line 950 of file iop_vdevice.cpp. ◆ Performance()
Get performance (need compiletime option) Definition at line 987 of file iop_vdevice.cpp. ◆ ReadInput()
Read sensed input events. Report the oldest event from the internal input buffer. The event is removed from the buffer. The function returns 0 if the buffer is empty. Definition at line 930 of file iop_vdevice.cpp. ◆ Reset()
Reset device. Resets any dynamic state such as edge detection. Since the vDevice only provides timing, it only resets the current faudes time to zero. A reset does not stop the device. Reimplemented in faudes::xDevice, faudes::nDevice, and faudes::sDevice. Definition at line 311 of file iop_vdevice.cpp. ◆ ResetPerformance()
Clear performance (need compiletime option) Definition at line 1037 of file iop_vdevice.cpp. ◆ ResetRequest()
A device may ask for a reset by returning true for ResetRequest(). A well behaved simulator application will perform a Reset() and initialise any faudes::Executors, and stop the simulation. The device is meant to cancel any pending WaitInputs() or WaitInputsMs() when it requests a reset. The default implementation returns false;
Reimplemented in faudes::xDevice. Definition at line 920 of file iop_vdevice.cpp. ◆ Start()
Activate the device. This function enables output execution and input reading. It will allocate device specific necessary resources eg start a background thread, initialise operating system device drivers etc.
Reimplemented in faudes::xDevice, faudes::nDevice, faudes::sDevice, and faudes::mbDevice. Definition at line 281 of file iop_vdevice.cpp. ◆ Status()
Get status. This function returns the current status of the device. In derived classes that use background threads for input reading etc, a device may change its status without notice. Stop runs Reset() Reimplemented in faudes::xDevice. Definition at line 486 of file iop_vdevice.h. ◆ StatusString()
Get status as infromal string. Definition at line 353 of file iop_vdevice.cpp. ◆ Stop()
Deactivate the device. This function disables output execution and input reading. Stop also runs Reset. Reimplemented in faudes::xDevice, faudes::nDevice, faudes::sDevice, and faudes::mbDevice. Definition at line 299 of file iop_vdevice.cpp. ◆ StopAll()
Stop all devices. This function is intended to be called on ungraceful termination of a simulater application. It uses a global variable that tracks all device instances. Definition at line 257 of file iop_vdevice.cpp. ◆ TimeScale() [1/2]
Set timescale.
Definition at line 364 of file iop_vdevice.h. ◆ TimeScale() [2/2]
Get timescale.
Definition at line 374 of file iop_vdevice.h. ◆ Tolerance() [1/2]
Set tolerance for time synchonisation.
Definition at line 344 of file iop_vdevice.h. ◆ Tolerance() [2/2]
Get tolerance.
Definition at line 354 of file iop_vdevice.h. ◆ UseBuffer()
Tell the device which buffer to use for inputs. Definition at line 680 of file iop_vdevice.cpp. ◆ UseCondition()
Tell the device which condition to use for waiting. Definition at line 671 of file iop_vdevice.cpp. ◆ WaitInputs()
Wait for input trigger. The default implementation assumes that inputs events are notified via the condition signal. The duration to wait is specified in faudes time units (ftu) and is converted to system time by the scaling factor mTimeScale (ms/ftu).
Definition at line 800 of file iop_vdevice.cpp. ◆ WaitInputsMs()
Wait for input trigger. Same as WaitInputs, but with the maximum time to wait given in msecs.
Definition at line 860 of file iop_vdevice.cpp. ◆ WriteOutput()
Run output command.
Implemented in faudes::xDevice, faudes::nDevice, and faudes::sDevice. ◆ WritePerformance()
Convenience method. Definition at line 1026 of file iop_vdevice.cpp. Friends And Related Function Documentation◆ xDevice
Definition at line 264 of file iop_vdevice.h. Member Data Documentation◆ mBufferMutex
Default mutex for input buffer (mutexted) Definition at line 800 of file iop_vdevice.h. ◆ mDefaultLabel
Default label for token io. Definition at line 721 of file iop_vdevice.h. ◆ mInputBuffer
Default Fifo buffer for input readings. Definition at line 794 of file iop_vdevice.h. ◆ mInputs
All inputs. Definition at line 764 of file iop_vdevice.h. ◆ mMaxSyncGap
Toleance for time sync. Definition at line 791 of file iop_vdevice.h. ◆ mName
Name. Definition at line 758 of file iop_vdevice.h. ◆ mOutputs
All outputs. Definition at line 767 of file iop_vdevice.h. ◆ mpConfiguration
Overall event configuration (uses cast for type) Definition at line 761 of file iop_vdevice.h. ◆ mPerformanceBeginIterator
Definition at line 832 of file iop_vdevice.h. ◆ mPerformanceEndIterator
Global iterator. Definition at line 831 of file iop_vdevice.h. ◆ mpPerformanceWaitEnter
Structures to store time-samples in. Definition at line 827 of file iop_vdevice.h. ◆ mpPerformanceWaitExit
Definition at line 828 of file iop_vdevice.h. ◆ mResetRequest
Reset request marker (mutexed) Definition at line 806 of file iop_vdevice.h. ◆ mState
Status: running, starting etc. Definition at line 770 of file iop_vdevice.h. ◆ mTimeScale
FauDES-time: scaling factor in ms/ftu. Definition at line 788 of file iop_vdevice.h. ◆ mTimeZero
physical timepoint zero Definition at line 785 of file iop_vdevice.h. ◆ mWaitCondition
Default Wait Condition. Definition at line 776 of file iop_vdevice.h. ◆ mWaitMutex
Default Wait Condition Mutex. Definition at line 773 of file iop_vdevice.h. ◆ pBufferMutex
Actual mutex for input buffer (mutexted) Definition at line 803 of file iop_vdevice.h. ◆ pInputBuffer
Actual Fifo buffer for input readings. Definition at line 797 of file iop_vdevice.h. ◆ pWaitCondition
Actual Wait Condition. Definition at line 782 of file iop_vdevice.h. ◆ pWaitMutex
Actual Wait Condition Mutex. Definition at line 779 of file iop_vdevice.h. The documentation for this class was generated from the following files: libFAUDES 2.32b --- 2024.03.01 --- c++ api documentaion by doxygen |