1+ %description:
2+ Tests constant drift oscillator.
3+
4+ %includes:
5+ #include "inet/clock/contract/IOscillator.h"
6+
7+ using namespace omnetpp;
8+ using namespace inet;
9+
10+ %file: TestNetwork.ned
11+
12+ import inet.clock.oscillator.ConstantDriftOscillator;
13+
14+ network TestNetwork
15+ {
16+ submodules:
17+ test: Test;
18+ oscillator: ConstantDriftOscillator;
19+ }
20+
21+ %inifile: omnetpp.ini
22+ [General]
23+ ned-path = .;../../../../src;../../lib
24+ network = TestNetwork
25+
26+ *.oscillator.nominalTickLength = 1ms
27+ *.oscillator.driftRate = -500000 ppm
28+ *.oscillator.tickOffset = 300us
29+
30+ %activity:
31+
32+ #define CHECK(x) { auto r = oscillator->x; std::cout << #x << " -> "<< r << std::endl; }
33+
34+ auto oscillator = check_and_cast<IOscillator *>(cSimulation::getActiveSimulation()->getModuleByPath("oscillator"));
35+ CHECK(computeTicksForInterval(0));
36+ CHECK(computeTicksForInterval(0.0016999999));
37+ CHECK(computeTicksForInterval(0.0017));
38+ CHECK(computeTicksForInterval(0.0036999999));
39+ CHECK(computeTicksForInterval(0.0037));
40+ CHECK(computeTicksForInterval(0.9996999999));
41+ CHECK(computeTicksForInterval(0.9997));
42+ CHECK(computeTicksForInterval(1.9996999999));
43+ CHECK(computeTicksForInterval(1.9997));
44+
45+ CHECK(computeIntervalForTicks(0));
46+ CHECK(computeIntervalForTicks(1));
47+ CHECK(computeIntervalForTicks(2));
48+ CHECK(computeIntervalForTicks(500));
49+ CHECK(computeIntervalForTicks(1000));
50+
51+ %contains-regex: stdout
52+ .*?computeTicksForInterval\(0\) -> 0
53+ .*?computeTicksForInterval\(0.0016999999\) -> 0
54+ .*?computeTicksForInterval\(0.0017\) -> 1
55+ .*?computeTicksForInterval\(0.0036999999\) -> 1
56+ .*?computeTicksForInterval\(0.0037\) -> 2
57+ .*?computeTicksForInterval\(0.9996999999\) -> 499
58+ .*?computeTicksForInterval\(0.9997\) -> 500
59+ .*?computeTicksForInterval\(1.9996999999\) -> 999
60+ .*?computeTicksForInterval\(1.9997\) -> 1000
61+ .*?computeIntervalForTicks\(0\) -> 0
62+ .*?computeIntervalForTicks\(1\) -> 0.0017
63+ .*?computeIntervalForTicks\(2\) -> 0.0037
64+ .*?computeIntervalForTicks\(500\) -> 0.9997
65+ .*?computeIntervalForTicks\(1000\) -> 1.9997
66+ $
0 commit comments