From 787a9438584ee9f94fa6a642933fc3d9b886ba02 Mon Sep 17 00:00:00 2001
From: Lucas Stratmann <lucas.stratmann@student.reutlingen-university.de>
Date: Thu, 10 Sep 2020 16:48:14 +0200
Subject: [PATCH] Began work on connecting Sim&Ardublock. Possible Unstable

---
 .../translator/block/control/DelayBlock.java   |  1 +
 .../translator/block/control/LoopBlock.java    | 18 ++++++++++++++++++
 .../block/numbers/ConstantDigitalBlock.java    |  4 ++++
 .../block/numbers/ConstantNumberBlock.java     |  5 +++++
 .../block/numbers/DigitalHighBlock.java        |  6 ++++++
 .../translator/block/numbers/NumberBlock.java  |  7 +++++++
 .../block/output/DigitalOutputBlock.java       |  9 +++++++++
 .../listener/SimulateCodeButtonListener.java   | 11 ++++++++---
 8 files changed, 58 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/ardublock/translator/block/control/DelayBlock.java b/src/main/java/com/ardublock/translator/block/control/DelayBlock.java
index 7aebd88..e496e51 100644
--- a/src/main/java/com/ardublock/translator/block/control/DelayBlock.java
+++ b/src/main/java/com/ardublock/translator/block/control/DelayBlock.java
@@ -30,6 +30,7 @@ public class DelayBlock extends TranslatorBlock
 	
 	@Override
 	public SimCode toSim() throws BlockException, SocketNullException {
+		System.out.println("New Delayblock");
 		CodeDelay delay = new CodeDelay((SimTypeInt)this.getRequiredTranslatorBlockAtSocket(0).toSim()); 
 		return delay;
 	}
diff --git a/src/main/java/com/ardublock/translator/block/control/LoopBlock.java b/src/main/java/com/ardublock/translator/block/control/LoopBlock.java
index 768a062..40cf9ef 100644
--- a/src/main/java/com/ardublock/translator/block/control/LoopBlock.java
+++ b/src/main/java/com/ardublock/translator/block/control/LoopBlock.java
@@ -1,10 +1,16 @@
 package com.ardublock.translator.block.control;
 
+import java.util.Vector;
+
 import com.ardublock.translator.Translator;
 import com.ardublock.translator.block.TranslatorBlock;
+import com.ardublock.translator.block.exception.BlockException;
 import com.ardublock.translator.block.exception.SocketNullException;
 import com.ardublock.translator.block.exception.SubroutineNotDeclaredException;
 
+import tec.letsgoing.ardublock.simulator.simcode.SimCode;
+import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
+
 
 public class LoopBlock extends TranslatorBlock
 {
@@ -30,5 +36,17 @@ public class LoopBlock extends TranslatorBlock
 		return ret;
 	}
 	
+	public SimCode toSim() throws BlockException, SocketNullException {
+		Vector<SimCode> vec =new Vector<SimCode>();
+		TranslatorBlock translatorBlock = getTranslatorBlockAtSocket(0);
+		while (translatorBlock != null)
+		{
+			vec.add(translatorBlock.toSim());
+			translatorBlock = translatorBlock.nextTranslatorBlock();
+		}
+		SimCodeFunction loop =new SimCodeFunction("loop",vec);
+		return loop;
+	}
+	
 	//FIXME Hier ToSim Begin and Vector Handling
 }
diff --git a/src/main/java/com/ardublock/translator/block/numbers/ConstantDigitalBlock.java b/src/main/java/com/ardublock/translator/block/numbers/ConstantDigitalBlock.java
index de0502d..d0877c2 100644
--- a/src/main/java/com/ardublock/translator/block/numbers/ConstantDigitalBlock.java
+++ b/src/main/java/com/ardublock/translator/block/numbers/ConstantDigitalBlock.java
@@ -3,6 +3,9 @@ package com.ardublock.translator.block.numbers;
 import com.ardublock.translator.Translator;
 import com.ardublock.translator.block.TranslatorBlock;
 
+import tec.letsgoing.ardublock.simulator.simcode.SimCode;
+import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeInt;
+
 public class ConstantDigitalBlock extends TranslatorBlock
 {
 	public ConstantDigitalBlock(Long blockId, Translator translator, String codePrefix, String codeSuffix, String label)
@@ -25,4 +28,5 @@ public class ConstantDigitalBlock extends TranslatorBlock
 		}
 		return codePrefix + newInternalName + codeSuffix;
 	}
+	
 }
diff --git a/src/main/java/com/ardublock/translator/block/numbers/ConstantNumberBlock.java b/src/main/java/com/ardublock/translator/block/numbers/ConstantNumberBlock.java
index aa8e19e..9f8d697 100644
--- a/src/main/java/com/ardublock/translator/block/numbers/ConstantNumberBlock.java
+++ b/src/main/java/com/ardublock/translator/block/numbers/ConstantNumberBlock.java
@@ -3,6 +3,9 @@ package com.ardublock.translator.block.numbers;
 import com.ardublock.translator.Translator;
 import com.ardublock.translator.block.TranslatorBlock;
 
+import tec.letsgoing.ardublock.simulator.simcode.SimCode;
+import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeInt;
+
 public class ConstantNumberBlock extends TranslatorBlock
 {
 	public ConstantNumberBlock(Long blockId, Translator translator, String codePrefix, String codeSuffix, String label)
@@ -25,4 +28,6 @@ public class ConstantNumberBlock extends TranslatorBlock
 		}
 		return codePrefix + newInternalName + codeSuffix;
 	}
+	
+	
 }
diff --git a/src/main/java/com/ardublock/translator/block/numbers/DigitalHighBlock.java b/src/main/java/com/ardublock/translator/block/numbers/DigitalHighBlock.java
index e19e9fb..282c44d 100644
--- a/src/main/java/com/ardublock/translator/block/numbers/DigitalHighBlock.java
+++ b/src/main/java/com/ardublock/translator/block/numbers/DigitalHighBlock.java
@@ -3,6 +3,8 @@ package com.ardublock.translator.block.numbers;
 import com.ardublock.translator.Translator;
 import com.ardublock.translator.block.ConstBlock;
 
+import tec.letsgoing.ardublock.simulator.simcode.SimCode;
+
 public class DigitalHighBlock extends ConstBlock
 {
 
@@ -11,4 +13,8 @@ public class DigitalHighBlock extends ConstBlock
 		super(blockId, translator, codePrefix, codeSuffix, label);
 		this.setCode("HIGH");
 	}
+	
+	public SimCode toSim() {
+		return null;//FIXME @Lucas Continue Work here!
+	}
 }
diff --git a/src/main/java/com/ardublock/translator/block/numbers/NumberBlock.java b/src/main/java/com/ardublock/translator/block/numbers/NumberBlock.java
index 254620d..7a210c9 100644
--- a/src/main/java/com/ardublock/translator/block/numbers/NumberBlock.java
+++ b/src/main/java/com/ardublock/translator/block/numbers/NumberBlock.java
@@ -3,6 +3,9 @@ package com.ardublock.translator.block.numbers;
 import com.ardublock.translator.Translator;
 import com.ardublock.translator.block.TranslatorBlock;
 
+import tec.letsgoing.ardublock.simulator.simcode.SimCode;
+import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeInt;
+
 public class NumberBlock extends TranslatorBlock
 {
 	public NumberBlock(Long blockId, Translator translator, String codePrefix, String codeSuffix, String label)
@@ -15,5 +18,9 @@ public class NumberBlock extends TranslatorBlock
 	{
 		return codePrefix + label + codeSuffix;
 	}
+	
+	public SimCode toSim() {
+		return new SimTypeInt(Integer.parseInt(label));
+	}
 
 }
diff --git a/src/main/java/com/ardublock/translator/block/output/DigitalOutputBlock.java b/src/main/java/com/ardublock/translator/block/output/DigitalOutputBlock.java
index c1a2c95..e9bab2a 100644
--- a/src/main/java/com/ardublock/translator/block/output/DigitalOutputBlock.java
+++ b/src/main/java/com/ardublock/translator/block/output/DigitalOutputBlock.java
@@ -7,6 +7,10 @@ import com.ardublock.translator.block.exception.SubroutineNotDeclaredException;
 import com.ardublock.translator.block.numbers.NumberBlock;
 import com.ardublock.translator.block.numbers.VariableNumberBlock;
 
+import tec.letsgoing.ardublock.simulator.simcode.SimCode;
+import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeInt;
+import tec.letsgoing.ardublock.simulator.simcode.io.CodeDigitalWrite;
+
 public class DigitalOutputBlock extends TranslatorBlock
 {
 	public DigitalOutputBlock(Long blockId, Translator translator, String codePrefix, String codeSuffix, String label)
@@ -36,5 +40,10 @@ public class DigitalOutputBlock extends TranslatorBlock
 		
 		return ret;
 	}
+	
+	public SimCode toSim() {
+		//SimTypeInt(Integer.parseInt(label));
+		return null;//new CodeDigitalWrite(); 
+	}
 
 }
diff --git a/src/main/java/com/ardublock/ui/listener/SimulateCodeButtonListener.java b/src/main/java/com/ardublock/ui/listener/SimulateCodeButtonListener.java
index a39085c..20e46d5 100644
--- a/src/main/java/com/ardublock/ui/listener/SimulateCodeButtonListener.java
+++ b/src/main/java/com/ardublock/ui/listener/SimulateCodeButtonListener.java
@@ -5,6 +5,7 @@ import java.awt.event.ActionListener;
 import java.util.HashSet;
 import java.util.ResourceBundle;
 import java.util.Set;
+import java.util.Vector;
 
 import javax.swing.JFrame;
 import javax.swing.JOptionPane;
@@ -23,6 +24,8 @@ import edu.mit.blocks.renderable.RenderableBlock;
 import edu.mit.blocks.workspace.Workspace;
 
 import tec.letsgoing.ardublock.simulator.Simulator;
+import tec.letsgoing.ardublock.simulator.simcode.SimCode;
+import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 
 public class SimulateCodeButtonListener implements ActionListener
 {
@@ -48,7 +51,7 @@ public class SimulateCodeButtonListener implements ActionListener
 		Translator translator = new Translator(workspace);
 		translator.reset();
 		
-		 //Simulator sim = new Simulator(); //FIXME Hier beginn der Simulator instanz
+		 Simulator sim = Simulator.getInstance(); //FIXME Hier beginn der Simulator instanz
 		
 		//AutoSave on Upload letsgoING
 		openBlocksFrame.doSaveArduBlockFile();
@@ -194,7 +197,8 @@ public class SimulateCodeButtonListener implements ActionListener
 			JOptionPane.showMessageDialog(parentFrame, uiMessageBundle.getString("ardublock.translator.exception.multipleLoopFound"), "Error", JOptionPane.ERROR_MESSAGE);
 			return ;
 		}
-
+		
+		SimCodeFunction loop=new SimCodeFunction("loop",null);
 		try
 		{
 			for (RenderableBlock renderableBlock : commentBlockSet)
@@ -210,6 +214,7 @@ public class SimulateCodeButtonListener implements ActionListener
 				translator.setRootBlockName("loop");
 				Block loopBlock = renderableBlock.getBlock();
 				code.append(translator.translate(loopBlock.getBlockID()));
+				loop=(SimCodeFunction) translator.simulate(loopBlock.getBlockID());
 				//collect simcode objects here -> all SimCodeObjects inside main loop
 				//eg. simList.append(translator.simulate(loopBlock.getBlockID())); -> simList = simCodeObject-List
 			}
@@ -301,7 +306,7 @@ public class SimulateCodeButtonListener implements ActionListener
 				System.out.println(codeOut);
 			}	
 			context.didGenerate(codeOut, false);
-			
+			sim.addFunctionsCode(loop);
 			//TODO ! start simulator here
 			//sim.run();
 			//sim.startSimu();
-- 
GitLab