|
INET Framework for OMNeT++/OMNEST
|
#include <DriftingOscillatorBase.h>
◆ computeIntervalForTicks()
| simtime_t inet::DriftingOscillatorBase::computeIntervalForTicks |
( |
int64_t |
numTicks | ) |
const |
|
overridevirtual |
Returns the smallest simulation time interval for the specified number of ticks measured from the oscillator computation origin.
For example, for 0 ticks returns 0, for 1 tick returns the remaining time till the next tick, and so on.
Implements inet::IOscillator.
◆ computeTicksForInterval()
| int64_t inet::DriftingOscillatorBase::computeTicksForInterval |
( |
simtime_t |
timeInterval | ) |
const |
|
overridevirtual |
Returns the number of ticks in the specified time interval measured from the oscillator computation origin.
Note that each tick interval taken into consideration may be different from the nominal tick length. Returns the #ticks in (computation origin, computation origin + time interval].
Implements inet::IOscillator.
84 ASSERT(timeInterval >= 0);
◆ decreaseWithDriftRate() [1/2]
| int64_t inet::DriftingOscillatorBase::decreaseWithDriftRate |
( |
int64_t |
value | ) |
const |
|
inlineprotected |
◆ decreaseWithDriftRate() [2/2]
| int64_t inet::DriftingOscillatorBase::decreaseWithDriftRate |
( |
int64_t |
value, |
|
|
double |
inverseDriftRate |
|
) |
| const |
|
inlineprotected |
◆ getComputationOrigin()
| virtual simtime_t inet::DriftingOscillatorBase::getComputationOrigin |
( |
| ) |
const |
|
inlineoverridevirtual |
Returns the oscillator computation origin from which the ticks are measured.
There may or may not be an actual tick at the returned simulation time.
Implements inet::IOscillator.
◆ getCurrentTickLength()
| virtual simtime_t inet::DriftingOscillatorBase::getCurrentTickLength |
( |
| ) |
const |
|
inlinevirtual |
◆ getNominalTickLength()
| virtual simtime_t inet::DriftingOscillatorBase::getNominalTickLength |
( |
| ) |
const |
|
inlineoverridevirtual |
Returns the nominal time interval between subsequent ticks.
This value is usually different from the actual amount of elapsed time between ticks.
Implements inet::IOscillator.
◆ increaseWithDriftRate() [1/2]
| int64_t inet::DriftingOscillatorBase::increaseWithDriftRate |
( |
int64_t |
value | ) |
const |
|
inlineprotected |
◆ increaseWithDriftRate() [2/2]
| int64_t inet::DriftingOscillatorBase::increaseWithDriftRate |
( |
int64_t |
value, |
|
|
double |
driftRate |
|
) |
| const |
|
inlineprotected |
36 {
return value + (int64_t)(value *
driftRate); }
◆ initialize()
| void inet::DriftingOscillatorBase::initialize |
( |
int |
stage | ) |
|
|
overrideprotectedvirtual |
◆ invertDriftRate()
| double inet::DriftingOscillatorBase::invertDriftRate |
( |
double |
driftRate | ) |
const |
|
inlineprotected |
◆ processCommand()
| void inet::DriftingOscillatorBase::processCommand |
( |
const cXMLElement & |
node | ) |
|
|
overrideprotectedvirtual |
Called by ScenarioManager whenever a script command needs to be carried out by the module.
The command is represented by the XML element or element tree. The command name can be obtained as:
const char *command = node->getTagName()
Parameters are XML attributes, e.g. a "neighbour" parameter can be retrieved as:
const char *attr = node->getAttribute("neighbour")
More complex input can be passed in child elements.
- See also
- cXMLElement
Implements inet::IScriptable.
101 if (!strcmp(node.getTagName(),
"set-oscillator")) {
102 if (
const char *driftRateStr = node.getAttribute(
"drift-rate")) {
103 double newDriftRate = strtod(driftRateStr,
nullptr) / 1E+6;
106 if (
const char *tickOffsetStr = node.getAttribute(
"tick-offset")) {
107 simtime_t newTickOffset = SimTime::parse(tickOffsetStr);
112 throw cRuntimeError(
"Invalid command: %s", node.getTagName());
◆ resolveDirective()
| const char * inet::DriftingOscillatorBase::resolveDirective |
( |
char |
directive | ) |
const |
|
overridevirtual |
Reimplemented from inet::OscillatorBase.
117 static std::string result;
123 result = std::to_string((int64_t)(
driftRate * 1E+6)) +
" ppm";
128 return result.c_str();
◆ setDriftRate()
| void inet::DriftingOscillatorBase::setDriftRate |
( |
double |
driftRate | ) |
|
|
virtual |
41 simtime_t currentSimTime = simTime();
42 EV_DEBUG <<
"Setting oscillator drift rate from " <<
driftRate <<
" to " << newDriftRate <<
" at simtime " << currentSimTime <<
".\n";
45 simtime_t elapsedTickTime = fmod(currentSimTime - baseTickTime, currentTickLength);
47 if (elapsedTickTime == SIMTIME_ZERO)
Referenced by inet::RandomDriftOscillator::handleMessage(), and processCommand().
◆ setTickOffset()
| void inet::DriftingOscillatorBase::setTickOffset |
( |
simtime_t |
tickOffset | ) |
|
|
virtual |
65 simtime_t currentSimTime = simTime();
68 simtime_t oldTickOffset = fmod(currentSimTime - baseTickTime, currentTickLength);
69 if (newTickOffset != oldTickOffset) {
71 EV_DEBUG <<
"Setting oscillator tick offset from " << oldTickOffset <<
" to " << newTickOffset <<
" at simtime " << currentSimTime <<
".\n";
73 if (newTickOffset == 0)
Referenced by processCommand().
◆ driftRate
| double inet::DriftingOscillatorBase::driftRate = NaN |
|
protected |
◆ inverseDriftRate
| double inet::DriftingOscillatorBase::inverseDriftRate = NaN |
|
protected |
◆ nextTickFromOrigin
| simtime_t inet::DriftingOscillatorBase::nextTickFromOrigin |
|
protected |
◆ nominalTickLength
| simtime_t inet::DriftingOscillatorBase::nominalTickLength |
|
protected |
◆ origin
| simtime_t inet::DriftingOscillatorBase::origin |
|
protected |
The documentation for this class was generated from the following files:
virtual const char * resolveDirective(char directive) const override
Definition: OscillatorBase.cc:30
virtual void initialize(int stage) override
Definition: OscillatorBase.cc:14
virtual void setTickOffset(simtime_t tickOffset)
Definition: DriftingOscillatorBase.cc:62
virtual simtime_t getCurrentTickLength() const
Definition: DriftingOscillatorBase.h:44
static simsignal_t driftRateChangedSignal
Definition: OscillatorBase.h:19
static simsignal_t postOscillatorStateChangedSignal
Definition: IOscillator.h:22
simtime_t origin
Definition: DriftingOscillatorBase.h:24
double invertDriftRate(double driftRate) const
Definition: DriftingOscillatorBase.h:33
INET_API InitStage INITSTAGE_LOCAL
Initialization of local state that don't use or affect other modules includes:
double inverseDriftRate
Definition: DriftingOscillatorBase.h:22
int64_t decreaseWithDriftRate(int64_t value) const
Definition: DriftingOscillatorBase.h:38
virtual void updateDisplayString() const
Definition: OscillatorBase.cc:22
#define Enter_Method(...)
Definition: SelfDoc.h:71
virtual void setDriftRate(double driftRate)
Definition: DriftingOscillatorBase.cc:36
simtime_t nominalTickLength
Definition: DriftingOscillatorBase.h:20
static simsignal_t preOscillatorStateChangedSignal
Definition: IOscillator.h:21
double driftRate
Definition: DriftingOscillatorBase.h:21
int64_t increaseWithDriftRate(int64_t value) const
Definition: DriftingOscillatorBase.h:35
simtime_t nextTickFromOrigin
Definition: DriftingOscillatorBase.h:25