Quellcode durchsuchen

added fsasimulator drawing, small fixes

Simon Van Mierlo vor 9 Jahren
Ursprung
Commit
0d2ac3a9fd

Datei-Diff unterdrückt, da er zu groß ist
+ 97 - 24
debugging_fsa_cbd_composition/cbdsimulator/cbdsim_debugging.py.svg


Datei-Diff unterdrückt, da er zu groß ist
+ 3081 - 0
debugging_fsa_cbd_composition/fsasimulator/fsasimulator_debugging.py.svg


+ 8 - 4
debugging_fsa_cbd_composition/fsasimulator/fsasimulator_debugging.py.xml

@@ -274,7 +274,7 @@
                         <transition target="../InitializeDebugger">
                             <script>
                                 <![CDATA[
-                                    print('Going to MacroStepProcessed... ')
+                                    print('Going to InitializeDebugger... ')
                                 ]]>
                             </script>
                         </transition>
@@ -284,6 +284,7 @@
                             <script>
                             <![CDATA[
                                 self.initializeDebugger()
+                                print('Going to MacroStepProcessed... ')
                             ]]>
                             </script>
                         </onentry>
@@ -294,7 +295,7 @@
                             <transition target="../../Stopped" cond="INSTATE('/Main/SimulationState/Stopped')" after="self.sccd_yield()">
                                 <script>
                                     <![CDATA[
-                                        print('Going to End... ')
+                                        print('Going to Stopped... ')
                                     ]]>
                                 </script>
                             </transition>
@@ -334,11 +335,10 @@
                                         print('Going to MicroStepProcessed... ')
                                     ]]>
                                 </script>
-                                <raise event="small_step_done" />
                             </transition>
                         </state>
                         <state id="MicroStepProcessed">
-                            <transition target="../MicroStepPrepared" cond="self.selectedTransition != None">
+                            <transition target="../PreMicroStepPrepared" cond="self.selectedTransition != None" after="self.sccd_yield() * 2">
                                 <script>
                                     <![CDATA[
                                         print('Going to MicroStepPrepared... ')
@@ -357,6 +357,9 @@
                                 <raise event="big_step_done" />
                             </transition>
                         </state>
+                        <state id="PreMicroStepPrepared">
+                            <transition target="../MicroStepPrepared" cond="INSTATE('/Main/SimulationState/Running')" />
+                        </state>
                         <state id="MicroStepPrepared">
                             <transition target="../MicroStepProcessed">
                                 <script>
@@ -373,6 +376,7 @@
                                         print(self.selectedTransition)
                                     ]]>
                                 </script>
+                                <raise event="small_step_done" />
                             </transition>
                         </state>
                     </state>

+ 32 - 16
debugging_fsa_cbd_composition/fsasimulator/target.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Wed Oct 12 17:07:09 2016
+Date:   Thu Oct 13 12:15:48 2016
 
 Model author: Sadaf Mustafiz and Bruno Barroca and Claudio Gomes and Simon Van Mierlo
 Model name:   FSASimulator
@@ -272,32 +272,35 @@ class FSASimulator(RuntimeClassBase):
         self.states["/Main/SimulationFlow/DoSimulation/MicroStepProcessed"].setEnter(self._Main_SimulationFlow_DoSimulation_MicroStepProcessed_enter)
         self.states["/Main/SimulationFlow/DoSimulation/MicroStepProcessed"].setExit(self._Main_SimulationFlow_DoSimulation_MicroStepProcessed_exit)
         
+        # state /Main/SimulationFlow/DoSimulation/PreMicroStepPrepared
+        self.states["/Main/SimulationFlow/DoSimulation/PreMicroStepPrepared"] = State(25, self)
+        
         # state /Main/SimulationFlow/DoSimulation/MicroStepPrepared
-        self.states["/Main/SimulationFlow/DoSimulation/MicroStepPrepared"] = State(25, self)
+        self.states["/Main/SimulationFlow/DoSimulation/MicroStepPrepared"] = State(26, self)
         
         # state /Main/SimulationFlow/Stopped
-        self.states["/Main/SimulationFlow/Stopped"] = State(26, self)
+        self.states["/Main/SimulationFlow/Stopped"] = State(27, self)
         
         # state /Main/BreakpointManager
-        self.states["/Main/BreakpointManager"] = State(27, self)
+        self.states["/Main/BreakpointManager"] = State(28, self)
         
         # state /Main/BreakpointManager/Listening
-        self.states["/Main/BreakpointManager/Listening"] = State(28, self)
+        self.states["/Main/BreakpointManager/Listening"] = State(29, self)
         
         # state /Main/GodEventManager
-        self.states["/Main/GodEventManager"] = State(29, self)
+        self.states["/Main/GodEventManager"] = State(30, self)
         
         # state /Main/GodEventManager/Listening
-        self.states["/Main/GodEventManager/Listening"] = State(30, self)
+        self.states["/Main/GodEventManager/Listening"] = State(31, self)
         
         # state /Main/UserOutput
-        self.states["/Main/UserOutput"] = State(31, self)
+        self.states["/Main/UserOutput"] = State(32, self)
         
         # state /Main/UserOutput/Waiting
-        self.states["/Main/UserOutput/Waiting"] = State(32, self)
+        self.states["/Main/UserOutput/Waiting"] = State(33, self)
         
         # state /SimulationComplete
-        self.states["/SimulationComplete"] = State(33, self)
+        self.states["/SimulationComplete"] = State(34, self)
         
         # add children
         self.states[""].addChild(self.states["/Main"])
@@ -329,6 +332,7 @@ class FSASimulator(RuntimeClassBase):
         self.states["/Main/SimulationFlow/CheckTermination"].addChild(self.states["/Main/SimulationFlow/CheckTermination/MacroStepProcessed"])
         self.states["/Main/SimulationFlow/DoSimulation"].addChild(self.states["/Main/SimulationFlow/DoSimulation/MacroStepPrepared"])
         self.states["/Main/SimulationFlow/DoSimulation"].addChild(self.states["/Main/SimulationFlow/DoSimulation/MicroStepProcessed"])
+        self.states["/Main/SimulationFlow/DoSimulation"].addChild(self.states["/Main/SimulationFlow/DoSimulation/PreMicroStepPrepared"])
         self.states["/Main/SimulationFlow/DoSimulation"].addChild(self.states["/Main/SimulationFlow/DoSimulation/MicroStepPrepared"])
         self.states["/Main/BreakpointManager"].addChild(self.states["/Main/BreakpointManager/Listening"])
         self.states["/Main/GodEventManager"].addChild(self.states["/Main/GodEventManager/Listening"])
@@ -450,17 +454,23 @@ class FSASimulator(RuntimeClassBase):
         self.states["/Main/SimulationFlow/DoSimulation/MacroStepPrepared"].addTransition(_Main_SimulationFlow_DoSimulation_MacroStepPrepared_0)
         
         # transition /Main/SimulationFlow/DoSimulation/MicroStepProcessed
-        _Main_SimulationFlow_DoSimulation_MicroStepProcessed_0 = Transition(self, self.states["/Main/SimulationFlow/DoSimulation/MicroStepProcessed"], [self.states["/Main/SimulationFlow/DoSimulation/MicroStepPrepared"]])
+        _Main_SimulationFlow_DoSimulation_MicroStepProcessed_0 = Transition(self, self.states["/Main/SimulationFlow/DoSimulation/MicroStepProcessed"], [self.states["/Main/SimulationFlow/DoSimulation/PreMicroStepPrepared"]])
         _Main_SimulationFlow_DoSimulation_MicroStepProcessed_0.setAction(self._Main_SimulationFlow_DoSimulation_MicroStepProcessed_0_exec)
-        _Main_SimulationFlow_DoSimulation_MicroStepProcessed_0.setTrigger(None)
+        _Main_SimulationFlow_DoSimulation_MicroStepProcessed_0.setTrigger(Event("_7after"))
         _Main_SimulationFlow_DoSimulation_MicroStepProcessed_0.setGuard(self._Main_SimulationFlow_DoSimulation_MicroStepProcessed_0_guard)
         self.states["/Main/SimulationFlow/DoSimulation/MicroStepProcessed"].addTransition(_Main_SimulationFlow_DoSimulation_MicroStepProcessed_0)
         _Main_SimulationFlow_DoSimulation_MicroStepProcessed_1 = Transition(self, self.states["/Main/SimulationFlow/DoSimulation/MicroStepProcessed"], [self.states["/Main/SimulationFlow/CheckTermination"]])
         _Main_SimulationFlow_DoSimulation_MicroStepProcessed_1.setAction(self._Main_SimulationFlow_DoSimulation_MicroStepProcessed_1_exec)
-        _Main_SimulationFlow_DoSimulation_MicroStepProcessed_1.setTrigger(Event("_7after"))
+        _Main_SimulationFlow_DoSimulation_MicroStepProcessed_1.setTrigger(Event("_8after"))
         _Main_SimulationFlow_DoSimulation_MicroStepProcessed_1.setGuard(self._Main_SimulationFlow_DoSimulation_MicroStepProcessed_1_guard)
         self.states["/Main/SimulationFlow/DoSimulation/MicroStepProcessed"].addTransition(_Main_SimulationFlow_DoSimulation_MicroStepProcessed_1)
         
+        # transition /Main/SimulationFlow/DoSimulation/PreMicroStepPrepared
+        _Main_SimulationFlow_DoSimulation_PreMicroStepPrepared_0 = Transition(self, self.states["/Main/SimulationFlow/DoSimulation/PreMicroStepPrepared"], [self.states["/Main/SimulationFlow/DoSimulation/MicroStepPrepared"]])
+        _Main_SimulationFlow_DoSimulation_PreMicroStepPrepared_0.setTrigger(None)
+        _Main_SimulationFlow_DoSimulation_PreMicroStepPrepared_0.setGuard(self._Main_SimulationFlow_DoSimulation_PreMicroStepPrepared_0_guard)
+        self.states["/Main/SimulationFlow/DoSimulation/PreMicroStepPrepared"].addTransition(_Main_SimulationFlow_DoSimulation_PreMicroStepPrepared_0)
+        
         # transition /Main/SimulationFlow/DoSimulation/MicroStepPrepared
         _Main_SimulationFlow_DoSimulation_MicroStepPrepared_0 = Transition(self, self.states["/Main/SimulationFlow/DoSimulation/MicroStepPrepared"], [self.states["/Main/SimulationFlow/DoSimulation/MicroStepProcessed"]])
         _Main_SimulationFlow_DoSimulation_MicroStepPrepared_0.setAction(self._Main_SimulationFlow_DoSimulation_MicroStepPrepared_0_exec)
@@ -575,6 +585,7 @@ class FSASimulator(RuntimeClassBase):
     
     def _Main_SimulationFlow_InitializeDebugger_enter(self):
         self.initializeDebugger()
+        print('Going to MacroStepProcessed... ')
     
     def _Main_SimulationFlow_CheckTermination_MacroStepProcessed_enter(self):
         self.addTimer(5, self.sccd_yield())
@@ -597,10 +608,12 @@ class FSASimulator(RuntimeClassBase):
         print(self.selectedTransition)
     
     def _Main_SimulationFlow_DoSimulation_MicroStepProcessed_enter(self):
-        self.addTimer(7, self.sccd_yield())
+        self.addTimer(7, self.sccd_yield() * 2)
+        self.addTimer(8, self.sccd_yield())
     
     def _Main_SimulationFlow_DoSimulation_MicroStepProcessed_exit(self):
         self.removeTimer(7)
+        self.removeTimer(8)
     
     def _Main_0_exec(self, parameters):
         self.finalize()
@@ -635,10 +648,10 @@ class FSASimulator(RuntimeClassBase):
         self.initialize()
     
     def _Main_SimulationFlow_Initialized_0_exec(self, parameters):
-        print('Going to MacroStepProcessed... ')
+        print('Going to InitializeDebugger... ')
     
     def _Main_SimulationFlow_CheckTermination_MacroStepProcessed_0_exec(self, parameters):
-        print('Going to End... ')
+        print('Going to Stopped... ')
     
     def _Main_SimulationFlow_CheckTermination_MacroStepProcessed_0_guard(self, parameters):
         return self.inState(["/Main/SimulationState/Stopped"])
@@ -676,6 +689,9 @@ class FSASimulator(RuntimeClassBase):
     def _Main_SimulationFlow_DoSimulation_MicroStepProcessed_1_guard(self, parameters):
         return self.selectedTransition == None
     
+    def _Main_SimulationFlow_DoSimulation_PreMicroStepPrepared_0_guard(self, parameters):
+        return self.inState(["/Main/SimulationState/Running"])
+    
     def _Main_SimulationFlow_DoSimulation_MicroStepPrepared_0_exec(self, parameters):
         print('Going to MicroStepProcessed, taking transition and reading events... ')
         print('Transition to be taken: ' + str(self.selectedTransition))