Skip to content

Commit 247f0c9

Browse files
authored
Merge pull request #19 from jwszolek/develop
Develop
2 parents 9ae91de + 117adb0 commit 247f0c9

File tree

16 files changed

+496
-67
lines changed

16 files changed

+496
-67
lines changed

src/main/groovy/dsl/engine/GraphProducer.groovy

Lines changed: 35 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
package main.groovy.dsl.engine
22

33
import main.groovy.smoh.CanNode
4+
import main.groovy.smoh.ExpNode
45
import main.groovy.smoh.HBase
56
import main.groovy.smoh.MainNode
67
import main.groovy.smoh.PbNode
78
import main.groovy.smoh.SANode
89
import main.groovy.smoh.SpeedUnit
10+
import main.groovy.smoh.TNode
911
import main.groovy.utils.Helper
1012
import main.java.com.UI.DrawSmolEngine
1113
import main.java.com.prototype.DrawSecond
@@ -25,6 +27,8 @@ class Adapter {
2527
class Sensor {
2628
String name
2729
String connect
30+
String destAddress
31+
double freq
2832
}
2933

3034
class Converter {
@@ -45,17 +49,17 @@ class GraphProducer {
4549
}
4650

4751

48-
def build(def input) {
52+
def formatInput(def input) {
4953

5054
//define central node
5155
def root = new MainNode("ROOT")
52-
varList.put("root",root)
56+
varList.put("root", root)
5357

5458
//scan collection for adapters
55-
input.catalog.each {k,v ->
56-
if(v.toString().contains("'type':'adapter'")) {
59+
input.catalog.each { k, v ->
60+
if (v.toString().contains("'type':'adapter'")) {
5761

58-
def rawAdapter = v.toString().replace("[","{").replace("]","}").replace("\'","\"")
62+
def rawAdapter = v.toString().replace("[", "{").replace("]", "}").replace("\'", "\"")
5963
def valueMap = new JsonSlurper().parseText(rawAdapter)
6064

6165
def adapter = new Adapter()
@@ -67,37 +71,37 @@ class GraphProducer {
6771
if (ak.contains("dst")) adapter.dst = av
6872
}
6973

70-
def newAdapter = new CanNode(adapter.name)
71-
newAdapter.connect(root,10,SpeedUnit.Mb,30)
72-
varList.put(adapter.name,newAdapter)
74+
def newAdapter = new TNode(adapter.name, adapter.ip)
75+
newAdapter.connect(root, 10, SpeedUnit.Mb, 30)
76+
varList.put(adapter.name, newAdapter)
7377

74-
components.put(adapter.name,newAdapter)
78+
components.put(adapter.name, newAdapter)
7579
}
7680
}
7781

78-
if(components.size() > 0) {
82+
if (components.size() > 0) {
7983

8084
//scan collection for converters
8185
input.catalog.each { k, v ->
8286
if (v.toString().contains("'type':'converter'")) {
83-
def rawConverter = v.toString().replace("[","{").replace("]","}").replace("\'","\"")
87+
def rawConverter = v.toString().replace("[", "{").replace("]", "}").replace("\'", "\"")
8488
def valueMap = new JsonSlurper().parseText(rawConverter)
8589

8690
def converter = new Converter()
8791
converter.name = k
8892

8993
valueMap.each { ck, cv ->
90-
if(ck.contains("connect")) converter.connect = cv
94+
if (ck.contains("connect")) converter.connect = cv
9195
}
9296

93-
def parentName = components.find { it.key == converter.connect}?.value
97+
def parentName = components.find { it.key == converter.connect }?.value
9498

95-
if(parentName) {
96-
def newConverter = new PbNode(converter.name)
99+
if (parentName) {
100+
def newConverter = new ExpNode(converter.name)
97101
newConverter.connect(parentName, 10, SpeedUnit.Mb, 10)
98-
varList.put(converter.name,newConverter)
102+
varList.put(converter.name, newConverter)
99103

100-
components.put(converter.name,newConverter)
104+
components.put(converter.name, newConverter)
101105
}
102106
}
103107
}
@@ -106,33 +110,41 @@ class GraphProducer {
106110
input.catalog.each { k, v ->
107111
if (v.toString().contains("'type':'sensor'")) {
108112

109-
def rawSensor = v.toString().replace("[","{").replace("]","}").replace("\'","\"")
113+
def rawSensor = v.toString().replace("[", "{").replace("]", "}").replace("\'", "\"")
110114
def valueMap = new JsonSlurper().parseText(rawSensor)
111115

112116
def sensor = new Sensor()
113117
sensor.name = k
114118

115-
valueMap.each {sk, sv ->
116-
if(sk.contains("connect")) sensor.connect = sv
119+
valueMap.each { sk, sv ->
120+
if (sk.contains("connect")) sensor.connect = sv
121+
if (sk.contains("destAddress")) sensor.destAddress = sv
122+
if (sk.contains("freq")) sensor.freq = Double.parseDouble((String)sv)
117123
}
118124

119-
def parentName = components.find { it.key == sensor.connect}?.value
125+
def parentName = components.find { it.key == sensor.connect }?.value
120126

121-
if(parentName) {
127+
if (parentName) {
122128
def newSensor = new SANode(sensor.name)
123129
newSensor.connect(parentName, 10, SpeedUnit.Mb, 10)
130+
newSensor.destAddress = sensor.destAddress
131+
newSensor.freq = sensor.freq
124132
varList.put(sensor.name, newSensor)
125133
}
126134
}
127135
}
128136
}
129137

138+
varList
139+
}
130140

131141

142+
def build(def input) {
143+
def varList = formatInput(input)
144+
132145
List<NodeBase> lstBase = Helper.GenerateVertexList(varList)
133146
List<CustomEdge> lstLink = Helper.GenerateEdgeList(lstBase, varList)
134147

135-
136148
DrawSmolEngine dse = new DrawSmolEngine(DrawSecond.DrawDiagram(lstBase, lstLink))
137149
dse.DrawUIGraph()
138150
}

src/main/groovy/dsl/engine/SimDriver.groovy

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package main.groovy.dsl.engine
33
import desmoj.core.simulator.Experiment
44
import desmoj.core.simulator.SingleUnitTimeFormatter
55
import desmoj.core.simulator.TimeInstant
6+
import main.groovy.smoh.HBase
67
import main.java.com.sim.network.LogsWritrer
78
import main.java.com.sim.network.NetworkModel
89

@@ -14,20 +15,22 @@ class SimDriver {
1415
private static TimeUnit epsilon = TimeUnit.MICROSECONDS;
1516

1617

17-
static void run(String properties) {
18+
static void run(def properties) {
1819

1920
println "Starting simulation module"
2021
println properties
2122

22-
NetworkModel model = new NetworkModel(null,"SMOL Simulation Engine",true,true);
23-
Experiment exp = new Experiment("SMOLSimulationExperiment", new SingleUnitTimeFormatter(referenceUnit, epsilon,6,false));
23+
def varList = new GraphProducer().formatInput(properties)
24+
25+
NetworkModel model = new NetworkModel(null,"SMOL Simulation Engine",true,true, varList)
26+
Experiment exp = new Experiment("SMOLSimulationExperiment", new SingleUnitTimeFormatter(referenceUnit, epsilon,6,false))
2427

2528
model.connectToExperiment(exp)
26-
exp.stop(new TimeInstant(11, TimeUnit.MICROSECONDS))
29+
exp.stop(new TimeInstant(10000, TimeUnit.MILLISECONDS));
2730

2831

29-
exp.tracePeriod(new TimeInstant(0), new TimeInstant(11,TimeUnit.MICROSECONDS))
30-
exp.debugPeriod(new TimeInstant(0), new TimeInstant(11,TimeUnit.MICROSECONDS))
32+
exp.tracePeriod(new TimeInstant(0), new TimeInstant(10000,TimeUnit.MILLISECONDS));
33+
exp.debugPeriod(new TimeInstant(0), new TimeInstant(10000,TimeUnit.MILLISECONDS));
3134

3235

3336
LogsWritrer lw = new LogsWritrer()

src/main/groovy/dsl/engine/SmolDriver.groovy

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -69,27 +69,11 @@ class SmolDriver {
6969
${smolFile}
7070
}
7171
72-
SimDriver.run(out.toString())
72+
SimDriver.run(out)
7373
"""
7474
new GroovyShell(configuration).evaluate(simScript)
7575
}
7676

77-
78-
79-
//println out
80-
81-
82-
83-
84-
// def script = """
85-
// def out = Root.create {
86-
// ${smolFile}
87-
// }
88-
//
89-
// SimDriver.run(out.toString())
90-
// """
91-
// new GroovyShell(configuration).evaluate(script)
92-
9377
}
9478

9579
}

src/main/groovy/dsl/engine/SmolEngine.groovy

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,28 @@ class SmolConfigurationDsl {
2828
}
2929

3030

31+
class TransferringConfigurationDsl {
32+
private final SmolConfiguration configItem
33+
34+
TransferringConfigurationDsl(SmolConfiguration item){
35+
this.configItem = item
36+
configItem << "'type':'adapter'"
37+
}
38+
39+
def ip(String ip){
40+
configItem << "'ip':'${ip}'"
41+
}
42+
43+
def generator_connected(String generator){
44+
configItem << "'generator':'${generator}'"
45+
}
46+
47+
def dst(String dst){
48+
configItem << "'dst':'${dst}'"
49+
}
50+
}
51+
52+
3153
class ConverterConfigurationDsl {
3254
private final SmolConfiguration configItem
3355

@@ -52,6 +74,14 @@ class SensorConfigurationDsl {
5274
def connect(String connect){
5375
configItem << "'connect':'${connect}'"
5476
}
77+
78+
def destAddress(String destAddress){
79+
configItem << "'destAddress':'${destAddress}'"
80+
}
81+
82+
def freq(String freq){
83+
configItem << "'freq':'${freq}'"
84+
}
5585
}
5686

5787
class MapConfigurationDsl {
@@ -104,6 +134,52 @@ class RootConfigurationDsl {
104134

105135
}
106136

137+
//BEGIN of new naming convention
138+
139+
SmolConfiguration tn(String name, @DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = TransferringConfigurationDsl) Closure script){
140+
def smol = rootConfig.catalog[name]
141+
142+
if(smol == null) {
143+
smol = rootConfig.catalog[name] = new SmolConfiguration()
144+
}
145+
146+
script.resolveStrategy = Closure.DELEGATE_FIRST
147+
script.delegate = new TransferringConfigurationDsl(smol)
148+
script()
149+
return smol
150+
}
151+
152+
SmolConfiguration expander(String name, @DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = ConverterConfigurationDsl) Closure script){
153+
def smol = rootConfig.catalog[name]
154+
155+
if(smol == null) {
156+
smol = rootConfig.catalog[name] = new SmolConfiguration()
157+
}
158+
159+
script.resolveStrategy = Closure.DELEGATE_FIRST
160+
script.delegate = new ConverterConfigurationDsl(smol)
161+
script()
162+
return smol
163+
}
164+
165+
166+
SmolConfiguration san(String name, @DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = SensorConfigurationDsl) Closure script){
167+
def smol = rootConfig.catalog[name]
168+
169+
if(smol == null) {
170+
smol = rootConfig.catalog[name] = new SmolConfiguration()
171+
}
172+
173+
script.resolveStrategy = Closure.DELEGATE_FIRST
174+
script.delegate = new SensorConfigurationDsl(smol)
175+
script()
176+
return smol
177+
}
178+
179+
180+
//END of new naming convention
181+
182+
107183
SmolConfiguration adapter(String name, @DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = SmolConfigurationDsl) Closure script){
108184
def smol = rootConfig.catalog[name]
109185

@@ -262,6 +338,7 @@ def testNetwork = Root.create {
262338
*/
263339
sensor "temperature", {
264340
connect "rs485"
341+
destAddress "Server"
265342
}
266343

267344
action "draw", {
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package main.groovy.smoh
2+
3+
import main.java.com.utils.NodeType
4+
5+
class ExpNode extends HBase{
6+
7+
ExpNode(String caption)
8+
{
9+
super(caption)
10+
this.type = NodeType.PB
11+
}
12+
13+
public <T> void connect(T obj,Integer connectionspeed, SpeedUnit speedunt, Integer linkLgth)
14+
{
15+
connected = obj.caption
16+
speed = connectionspeed
17+
speedUnit = speedunt
18+
linkLength = linkLgth
19+
}
20+
}

src/main/groovy/smoh/SANode.groovy

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,22 @@ package main.groovy.smoh
33
import main.java.com.utils.NodeType;
44

55
class SANode extends HBase {
6-
6+
7+
public String destAddress
8+
public double freq
9+
710
public SANode(String caption)
811
{
912
super(caption);
1013
this.type = NodeType.SA;
1114
}
12-
15+
1316
public <T> void connect(T obj, Integer connectionspeed, SpeedUnit speedunt, Integer linkLgth)
1417
{
1518
connected = obj.caption;
1619
speed = connectionspeed;
1720
speedUnit = speedunt;
1821
linkLength = linkLgth;
1922
}
20-
23+
2124
}

src/main/groovy/smoh/TNode.groovy

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package main.groovy.smoh
2+
3+
import main.java.com.utils.NodeType
4+
5+
class TNode extends HBase {
6+
public String ip
7+
8+
public TNode(String caption, String ip)
9+
{
10+
super(caption);
11+
this.type = NodeType.CAN;
12+
this.ip = ip
13+
}
14+
15+
public <T> void connect(T obj, Integer connectionspeed, SpeedUnit speedunt, Integer linkLgth)
16+
{
17+
connected = obj.caption;
18+
speed = connectionspeed;
19+
speedUnit = speedunt;
20+
linkLength = linkLgth;
21+
}
22+
}

src/main/java/com/sim/network/EthAdapter.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,8 @@ public void eventRoutine() {
6161
}
6262

6363
EthFrame frame = new EthFrame(model, "ETH-Frame", true, adapter, presentTime());
64-
//TODO: remove hardcoded address
6564

66-
frame.setDestAddress("2");
65+
frame.setDestAddress(tcpMessage.getDstAddress());
6766
frame.setTcpMessage(tcpMessage);
6867

6968
outAdapterQueue.insert(frame);

0 commit comments

Comments
 (0)