target.py 130 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061
  1. """
  2. Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
  3. Date: Thu Nov 10 15:42:47 2016
  4. Model author: Sadaf Mustafiz and Claudio Gomes and Simon Van Mierlo
  5. Model name: FSASimulator_Coordinator
  6. Model description:
  7. A debuggeable CBD simulator.
  8. """
  9. from sccd.runtime.statecharts_core import *
  10. from sccd.runtime.libs.ui import *
  11. from sccd.runtime.libs.utils import *
  12. from copy import deepcopy
  13. import fsaclasses
  14. import sccd.runtime.accurate_time as accurate_time
  15. class Breakpoint:
  16. def __init__(self, name, function, enabled, disable_on_trigger):
  17. self.name = name
  18. self.function = function
  19. self.enabled = enabled
  20. self.disable_on_trigger = disable_on_trigger
  21. # package "FSASimulator_Coordinator"
  22. class FSASimulator_Coordinator(RuntimeClassBase):
  23. def __init__(self, controller, model, events):
  24. RuntimeClassBase.__init__(self, controller)
  25. self.semantics.big_step_maximality = StatechartSemantics.TakeMany
  26. self.semantics.internal_event_lifeline = StatechartSemantics.Queue
  27. self.semantics.input_event_lifeline = StatechartSemantics.FirstComboStep
  28. self.semantics.priority = StatechartSemantics.SourceParent
  29. self.semantics.concurrency = StatechartSemantics.Single
  30. # build Statechart structure
  31. self.build_statechart_structure()
  32. # call user defined constructor
  33. FSASimulator_Coordinator.user_defined_constructor(self, model, events)
  34. def user_defined_constructor(self, model, events):
  35. self.model = model
  36. self.eventList = events
  37. def user_defined_destructor(self):
  38. pass
  39. # builds Statechart structure
  40. def build_statechart_structure(self):
  41. # state <root>
  42. self.states[""] = State(0, "", self)
  43. # state /Main
  44. self.states["/Main"] = ParallelState(1, "/Main", self)
  45. # state /Main/ModeSelector
  46. self.states["/Main/ModeSelector"] = State(2, "/Main/ModeSelector", self)
  47. # state /Main/ModeSelector/Paused
  48. self.states["/Main/ModeSelector/Paused"] = State(3, "/Main/ModeSelector/Paused", self)
  49. # state /Main/ModeSelector/Running
  50. self.states["/Main/ModeSelector/Running"] = State(4, "/Main/ModeSelector/Running", self)
  51. # state /Main/ModeSelector/Running/Continuous
  52. self.states["/Main/ModeSelector/Running/Continuous"] = State(5, "/Main/ModeSelector/Running/Continuous", self)
  53. # state /Main/ModeSelector/Running/Realtime
  54. self.states["/Main/ModeSelector/Running/Realtime"] = State(6, "/Main/ModeSelector/Running/Realtime", self)
  55. # state /Main/ModeSelector/Running/BigStep
  56. self.states["/Main/ModeSelector/Running/BigStep"] = State(7, "/Main/ModeSelector/Running/BigStep", self)
  57. # state /Main/ModeSelector/Running/SmallStep
  58. self.states["/Main/ModeSelector/Running/SmallStep"] = State(8, "/Main/ModeSelector/Running/SmallStep", self)
  59. # state /Main/ModeSelector/WaitingForPaused
  60. self.states["/Main/ModeSelector/WaitingForPaused"] = State(9, "/Main/ModeSelector/WaitingForPaused", self)
  61. # state /Main/ModeSelector/Stopped
  62. self.states["/Main/ModeSelector/Stopped"] = State(10, "/Main/ModeSelector/Stopped", self)
  63. # state /Main/ChildState
  64. self.states["/Main/ChildState"] = State(11, "/Main/ChildState", self)
  65. # state /Main/ChildState/Uninitialized
  66. self.states["/Main/ChildState/Uninitialized"] = State(12, "/Main/ChildState/Uninitialized", self)
  67. # state /Main/ChildState/Initialized
  68. self.states["/Main/ChildState/Initialized"] = State(13, "/Main/ChildState/Initialized", self)
  69. # state /Main/Initializer
  70. self.states["/Main/Initializer"] = State(14, "/Main/Initializer", self)
  71. # state /Main/Initializer/Waiting
  72. self.states["/Main/Initializer/Waiting"] = State(15, "/Main/Initializer/Waiting", self)
  73. # state /Main/Initializer/CreatingChildSimulator
  74. self.states["/Main/Initializer/CreatingChildSimulator"] = State(16, "/Main/Initializer/CreatingChildSimulator", self)
  75. # state /Main/Initializer/StartingChildSimulator
  76. self.states["/Main/Initializer/StartingChildSimulator"] = State(17, "/Main/Initializer/StartingChildSimulator", self)
  77. # state /Main/SimulationFlow
  78. self.states["/Main/SimulationFlow"] = State(18, "/Main/SimulationFlow", self)
  79. # state /Main/SimulationFlow/PrePaused
  80. self.states["/Main/SimulationFlow/PrePaused"] = State(19, "/Main/SimulationFlow/PrePaused", self)
  81. self.states["/Main/SimulationFlow/PrePaused"].setEnter(self._Main_SimulationFlow_PrePaused_enter)
  82. self.states["/Main/SimulationFlow/PrePaused"].setExit(self._Main_SimulationFlow_PrePaused_exit)
  83. # state /Main/SimulationFlow/Paused
  84. self.states["/Main/SimulationFlow/Paused"] = State(20, "/Main/SimulationFlow/Paused", self)
  85. # state /Main/SimulationFlow/Executing
  86. self.states["/Main/SimulationFlow/Executing"] = State(21, "/Main/SimulationFlow/Executing", self)
  87. # state /Main/GodEventManager
  88. self.states["/Main/GodEventManager"] = State(22, "/Main/GodEventManager", self)
  89. # state /Main/GodEventManager/Listening
  90. self.states["/Main/GodEventManager/Listening"] = State(23, "/Main/GodEventManager/Listening", self)
  91. # state /Main/GodEventManager/Waiting
  92. self.states["/Main/GodEventManager/Waiting"] = State(24, "/Main/GodEventManager/Waiting", self)
  93. # state /Main/BreakpointManager
  94. self.states["/Main/BreakpointManager"] = State(25, "/Main/BreakpointManager", self)
  95. # state /Main/BreakpointManager/Listening
  96. self.states["/Main/BreakpointManager/Listening"] = State(26, "/Main/BreakpointManager/Listening", self)
  97. # state /Main/BreakpointManager/Waiting
  98. self.states["/Main/BreakpointManager/Waiting"] = State(27, "/Main/BreakpointManager/Waiting", self)
  99. # add children
  100. self.states[""].addChild(self.states["/Main"])
  101. self.states["/Main"].addChild(self.states["/Main/ModeSelector"])
  102. self.states["/Main"].addChild(self.states["/Main/ChildState"])
  103. self.states["/Main"].addChild(self.states["/Main/Initializer"])
  104. self.states["/Main"].addChild(self.states["/Main/SimulationFlow"])
  105. self.states["/Main"].addChild(self.states["/Main/GodEventManager"])
  106. self.states["/Main"].addChild(self.states["/Main/BreakpointManager"])
  107. self.states["/Main/ModeSelector"].addChild(self.states["/Main/ModeSelector/Paused"])
  108. self.states["/Main/ModeSelector"].addChild(self.states["/Main/ModeSelector/Running"])
  109. self.states["/Main/ModeSelector"].addChild(self.states["/Main/ModeSelector/WaitingForPaused"])
  110. self.states["/Main/ModeSelector"].addChild(self.states["/Main/ModeSelector/Stopped"])
  111. self.states["/Main/ModeSelector/Running"].addChild(self.states["/Main/ModeSelector/Running/Continuous"])
  112. self.states["/Main/ModeSelector/Running"].addChild(self.states["/Main/ModeSelector/Running/Realtime"])
  113. self.states["/Main/ModeSelector/Running"].addChild(self.states["/Main/ModeSelector/Running/BigStep"])
  114. self.states["/Main/ModeSelector/Running"].addChild(self.states["/Main/ModeSelector/Running/SmallStep"])
  115. self.states["/Main/ChildState"].addChild(self.states["/Main/ChildState/Uninitialized"])
  116. self.states["/Main/ChildState"].addChild(self.states["/Main/ChildState/Initialized"])
  117. self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/Waiting"])
  118. self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/CreatingChildSimulator"])
  119. self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/StartingChildSimulator"])
  120. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/PrePaused"])
  121. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Paused"])
  122. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Executing"])
  123. self.states["/Main/GodEventManager"].addChild(self.states["/Main/GodEventManager/Listening"])
  124. self.states["/Main/GodEventManager"].addChild(self.states["/Main/GodEventManager/Waiting"])
  125. self.states["/Main/BreakpointManager"].addChild(self.states["/Main/BreakpointManager/Listening"])
  126. self.states["/Main/BreakpointManager"].addChild(self.states["/Main/BreakpointManager/Waiting"])
  127. self.states[""].fixTree()
  128. self.states[""].default_state = self.states["/Main"]
  129. self.states["/Main/ModeSelector"].default_state = self.states["/Main/ModeSelector/Paused"]
  130. self.states["/Main/ModeSelector/Running"].default_state = self.states["/Main/ModeSelector/Running/Continuous"]
  131. self.states["/Main/ChildState"].default_state = self.states["/Main/ChildState/Uninitialized"]
  132. self.states["/Main/Initializer"].default_state = self.states["/Main/Initializer/Waiting"]
  133. self.states["/Main/SimulationFlow"].default_state = self.states["/Main/SimulationFlow/Paused"]
  134. self.states["/Main/GodEventManager"].default_state = self.states["/Main/GodEventManager/Listening"]
  135. self.states["/Main/BreakpointManager"].default_state = self.states["/Main/BreakpointManager/Listening"]
  136. # transition /Main/ModeSelector/Paused
  137. _Main_ModeSelector_Paused_0 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Running/SmallStep"]])
  138. _Main_ModeSelector_Paused_0.setTrigger(Event("small_step", "user_input"))
  139. self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_0)
  140. _Main_ModeSelector_Paused_1 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Running/BigStep"]])
  141. _Main_ModeSelector_Paused_1.setTrigger(Event("big_step", "user_input"))
  142. self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_1)
  143. _Main_ModeSelector_Paused_2 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Running/Continuous"]])
  144. _Main_ModeSelector_Paused_2.setTrigger(Event("continuous", "user_input"))
  145. self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_2)
  146. _Main_ModeSelector_Paused_3 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Running/Realtime"]])
  147. _Main_ModeSelector_Paused_3.setAction(self._Main_ModeSelector_Paused_3_exec)
  148. _Main_ModeSelector_Paused_3.setTrigger(Event("realtime", "user_input"))
  149. self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_3)
  150. _Main_ModeSelector_Paused_4 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Paused"]])
  151. _Main_ModeSelector_Paused_4.setAction(self._Main_ModeSelector_Paused_4_exec)
  152. _Main_ModeSelector_Paused_4.setTrigger(Event("BigStep.Finished", None))
  153. self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_4)
  154. _Main_ModeSelector_Paused_5 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Paused"]])
  155. _Main_ModeSelector_Paused_5.setAction(self._Main_ModeSelector_Paused_5_exec)
  156. _Main_ModeSelector_Paused_5.setTrigger(Event("Simulation.Finished", None))
  157. self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_5)
  158. # transition /Main/ModeSelector/Running/Continuous
  159. _Main_ModeSelector_Running_Continuous_0 = Transition(self, self.states["/Main/ModeSelector/Running/Continuous"], [self.states["/Main/ModeSelector/WaitingForPaused"]])
  160. _Main_ModeSelector_Running_Continuous_0.setAction(self._Main_ModeSelector_Running_Continuous_0_exec)
  161. _Main_ModeSelector_Running_Continuous_0.setTrigger(Event("pause", "user_input"))
  162. self.states["/Main/ModeSelector/Running/Continuous"].addTransition(_Main_ModeSelector_Running_Continuous_0)
  163. _Main_ModeSelector_Running_Continuous_1 = Transition(self, self.states["/Main/ModeSelector/Running/Continuous"], [self.states["/Main/ModeSelector/Stopped"]])
  164. _Main_ModeSelector_Running_Continuous_1.setAction(self._Main_ModeSelector_Running_Continuous_1_exec)
  165. _Main_ModeSelector_Running_Continuous_1.setTrigger(Event("Simulation.Finished", None))
  166. self.states["/Main/ModeSelector/Running/Continuous"].addTransition(_Main_ModeSelector_Running_Continuous_1)
  167. # transition /Main/ModeSelector/Running/Realtime
  168. _Main_ModeSelector_Running_Realtime_0 = Transition(self, self.states["/Main/ModeSelector/Running/Realtime"], [self.states["/Main/ModeSelector/WaitingForPaused"]])
  169. _Main_ModeSelector_Running_Realtime_0.setAction(self._Main_ModeSelector_Running_Realtime_0_exec)
  170. _Main_ModeSelector_Running_Realtime_0.setTrigger(Event("pause", "user_input"))
  171. self.states["/Main/ModeSelector/Running/Realtime"].addTransition(_Main_ModeSelector_Running_Realtime_0)
  172. _Main_ModeSelector_Running_Realtime_1 = Transition(self, self.states["/Main/ModeSelector/Running/Realtime"], [self.states["/Main/ModeSelector/Stopped"]])
  173. _Main_ModeSelector_Running_Realtime_1.setAction(self._Main_ModeSelector_Running_Realtime_1_exec)
  174. _Main_ModeSelector_Running_Realtime_1.setTrigger(Event("Simulation.Finished", None))
  175. self.states["/Main/ModeSelector/Running/Realtime"].addTransition(_Main_ModeSelector_Running_Realtime_1)
  176. _Main_ModeSelector_Running_Realtime_2 = Transition(self, self.states["/Main/ModeSelector/Running/Realtime"], [self.states["/Main/ModeSelector/Running/Realtime"]])
  177. _Main_ModeSelector_Running_Realtime_2.setAction(self._Main_ModeSelector_Running_Realtime_2_exec)
  178. _Main_ModeSelector_Running_Realtime_2.setTrigger(Event("BigStep.Finished", None))
  179. self.states["/Main/ModeSelector/Running/Realtime"].addTransition(_Main_ModeSelector_Running_Realtime_2)
  180. # transition /Main/ModeSelector/Running/BigStep
  181. _Main_ModeSelector_Running_BigStep_0 = Transition(self, self.states["/Main/ModeSelector/Running/BigStep"], [self.states["/Main/ModeSelector/Paused"]])
  182. _Main_ModeSelector_Running_BigStep_0.setAction(self._Main_ModeSelector_Running_BigStep_0_exec)
  183. _Main_ModeSelector_Running_BigStep_0.setTrigger(Event("BigStep.Finished", None))
  184. self.states["/Main/ModeSelector/Running/BigStep"].addTransition(_Main_ModeSelector_Running_BigStep_0)
  185. _Main_ModeSelector_Running_BigStep_1 = Transition(self, self.states["/Main/ModeSelector/Running/BigStep"], [self.states["/Main/ModeSelector/Stopped"]])
  186. _Main_ModeSelector_Running_BigStep_1.setAction(self._Main_ModeSelector_Running_BigStep_1_exec)
  187. _Main_ModeSelector_Running_BigStep_1.setTrigger(Event("Simulation.Finished", None))
  188. self.states["/Main/ModeSelector/Running/BigStep"].addTransition(_Main_ModeSelector_Running_BigStep_1)
  189. # transition /Main/ModeSelector/Running/SmallStep
  190. _Main_ModeSelector_Running_SmallStep_0 = Transition(self, self.states["/Main/ModeSelector/Running/SmallStep"], [self.states["/Main/ModeSelector/Paused"]])
  191. _Main_ModeSelector_Running_SmallStep_0.setAction(self._Main_ModeSelector_Running_SmallStep_0_exec)
  192. _Main_ModeSelector_Running_SmallStep_0.setTrigger(Event("SmallStep.Finished", None))
  193. self.states["/Main/ModeSelector/Running/SmallStep"].addTransition(_Main_ModeSelector_Running_SmallStep_0)
  194. _Main_ModeSelector_Running_SmallStep_1 = Transition(self, self.states["/Main/ModeSelector/Running/SmallStep"], [self.states["/Main/ModeSelector/Paused"]])
  195. _Main_ModeSelector_Running_SmallStep_1.setAction(self._Main_ModeSelector_Running_SmallStep_1_exec)
  196. _Main_ModeSelector_Running_SmallStep_1.setTrigger(Event("BigStep.Finished", None))
  197. self.states["/Main/ModeSelector/Running/SmallStep"].addTransition(_Main_ModeSelector_Running_SmallStep_1)
  198. _Main_ModeSelector_Running_SmallStep_2 = Transition(self, self.states["/Main/ModeSelector/Running/SmallStep"], [self.states["/Main/ModeSelector/Stopped"]])
  199. _Main_ModeSelector_Running_SmallStep_2.setAction(self._Main_ModeSelector_Running_SmallStep_2_exec)
  200. _Main_ModeSelector_Running_SmallStep_2.setTrigger(Event("Simulation.Finished", None))
  201. self.states["/Main/ModeSelector/Running/SmallStep"].addTransition(_Main_ModeSelector_Running_SmallStep_2)
  202. # transition /Main/ModeSelector/WaitingForPaused
  203. _Main_ModeSelector_WaitingForPaused_0 = Transition(self, self.states["/Main/ModeSelector/WaitingForPaused"], [self.states["/Main/ModeSelector/Paused"]])
  204. _Main_ModeSelector_WaitingForPaused_0.setAction(self._Main_ModeSelector_WaitingForPaused_0_exec)
  205. _Main_ModeSelector_WaitingForPaused_0.setTrigger(Event("Simulation.Paused", None))
  206. self.states["/Main/ModeSelector/WaitingForPaused"].addTransition(_Main_ModeSelector_WaitingForPaused_0)
  207. # transition /Main/ChildState/Uninitialized
  208. _Main_ChildState_Uninitialized_0 = Transition(self, self.states["/Main/ChildState/Uninitialized"], [self.states["/Main/ChildState/Initialized"]])
  209. _Main_ChildState_Uninitialized_0.setTrigger(Event("Simulation.Initialized", None))
  210. self.states["/Main/ChildState/Uninitialized"].addTransition(_Main_ChildState_Uninitialized_0)
  211. # transition /Main/ChildState/Initialized
  212. _Main_ChildState_Initialized_0 = Transition(self, self.states["/Main/ChildState/Initialized"], [self.states["/Main/ChildState/Uninitialized"]])
  213. _Main_ChildState_Initialized_0.setAction(self._Main_ChildState_Initialized_0_exec)
  214. _Main_ChildState_Initialized_0.setTrigger(Event("Simulation.Finished", None))
  215. self.states["/Main/ChildState/Initialized"].addTransition(_Main_ChildState_Initialized_0)
  216. # transition /Main/Initializer/Waiting
  217. _Main_Initializer_Waiting_0 = Transition(self, self.states["/Main/Initializer/Waiting"], [self.states["/Main/Initializer/CreatingChildSimulator"]])
  218. _Main_Initializer_Waiting_0.setAction(self._Main_Initializer_Waiting_0_exec)
  219. _Main_Initializer_Waiting_0.setTrigger(None)
  220. _Main_Initializer_Waiting_0.setGuard(self._Main_Initializer_Waiting_0_guard)
  221. self.states["/Main/Initializer/Waiting"].addTransition(_Main_Initializer_Waiting_0)
  222. # transition /Main/Initializer/CreatingChildSimulator
  223. _Main_Initializer_CreatingChildSimulator_0 = Transition(self, self.states["/Main/Initializer/CreatingChildSimulator"], [self.states["/Main/Initializer/StartingChildSimulator"]])
  224. _Main_Initializer_CreatingChildSimulator_0.setAction(self._Main_Initializer_CreatingChildSimulator_0_exec)
  225. _Main_Initializer_CreatingChildSimulator_0.setTrigger(Event("instance_created", None))
  226. self.states["/Main/Initializer/CreatingChildSimulator"].addTransition(_Main_Initializer_CreatingChildSimulator_0)
  227. # transition /Main/Initializer/StartingChildSimulator
  228. _Main_Initializer_StartingChildSimulator_0 = Transition(self, self.states["/Main/Initializer/StartingChildSimulator"], [self.states["/Main/Initializer/Waiting"]])
  229. _Main_Initializer_StartingChildSimulator_0.setTrigger(Event("Simulation.Initialized", None))
  230. self.states["/Main/Initializer/StartingChildSimulator"].addTransition(_Main_Initializer_StartingChildSimulator_0)
  231. # transition /Main/SimulationFlow/PrePaused
  232. _Main_SimulationFlow_PrePaused_0 = Transition(self, self.states["/Main/SimulationFlow/PrePaused"], [self.states["/Main/SimulationFlow/Paused"]])
  233. _Main_SimulationFlow_PrePaused_0.setTrigger(Event("_0after"))
  234. self.states["/Main/SimulationFlow/PrePaused"].addTransition(_Main_SimulationFlow_PrePaused_0)
  235. # transition /Main/SimulationFlow/Paused
  236. _Main_SimulationFlow_Paused_0 = Transition(self, self.states["/Main/SimulationFlow/Paused"], [self.states["/Main/SimulationFlow/Executing"]])
  237. _Main_SimulationFlow_Paused_0.setAction(self._Main_SimulationFlow_Paused_0_exec)
  238. _Main_SimulationFlow_Paused_0.setTrigger(None)
  239. _Main_SimulationFlow_Paused_0.setGuard(self._Main_SimulationFlow_Paused_0_guard)
  240. self.states["/Main/SimulationFlow/Paused"].addTransition(_Main_SimulationFlow_Paused_0)
  241. _Main_SimulationFlow_Paused_1 = Transition(self, self.states["/Main/SimulationFlow/Paused"], [self.states["/Main/SimulationFlow/Executing"]])
  242. _Main_SimulationFlow_Paused_1.setAction(self._Main_SimulationFlow_Paused_1_exec)
  243. _Main_SimulationFlow_Paused_1.setTrigger(None)
  244. _Main_SimulationFlow_Paused_1.setGuard(self._Main_SimulationFlow_Paused_1_guard)
  245. self.states["/Main/SimulationFlow/Paused"].addTransition(_Main_SimulationFlow_Paused_1)
  246. _Main_SimulationFlow_Paused_2 = Transition(self, self.states["/Main/SimulationFlow/Paused"], [self.states["/Main/SimulationFlow/Executing"]])
  247. _Main_SimulationFlow_Paused_2.setAction(self._Main_SimulationFlow_Paused_2_exec)
  248. _Main_SimulationFlow_Paused_2.setTrigger(None)
  249. _Main_SimulationFlow_Paused_2.setGuard(self._Main_SimulationFlow_Paused_2_guard)
  250. self.states["/Main/SimulationFlow/Paused"].addTransition(_Main_SimulationFlow_Paused_2)
  251. _Main_SimulationFlow_Paused_3 = Transition(self, self.states["/Main/SimulationFlow/Paused"], [self.states["/Main/SimulationFlow/Executing"]])
  252. _Main_SimulationFlow_Paused_3.setAction(self._Main_SimulationFlow_Paused_3_exec)
  253. _Main_SimulationFlow_Paused_3.setTrigger(None)
  254. _Main_SimulationFlow_Paused_3.setGuard(self._Main_SimulationFlow_Paused_3_guard)
  255. self.states["/Main/SimulationFlow/Paused"].addTransition(_Main_SimulationFlow_Paused_3)
  256. # transition /Main/SimulationFlow/Executing
  257. _Main_SimulationFlow_Executing_0 = Transition(self, self.states["/Main/SimulationFlow/Executing"], [self.states["/Main/SimulationFlow/Paused"]])
  258. _Main_SimulationFlow_Executing_0.setTrigger(None)
  259. _Main_SimulationFlow_Executing_0.setGuard(self._Main_SimulationFlow_Executing_0_guard)
  260. self.states["/Main/SimulationFlow/Executing"].addTransition(_Main_SimulationFlow_Executing_0)
  261. _Main_SimulationFlow_Executing_1 = Transition(self, self.states["/Main/SimulationFlow/Executing"], [self.states["/Main/SimulationFlow/PrePaused"]])
  262. _Main_SimulationFlow_Executing_1.setTrigger(Event("Simulation.Finished", None))
  263. _Main_SimulationFlow_Executing_1.setGuard(self._Main_SimulationFlow_Executing_1_guard)
  264. self.states["/Main/SimulationFlow/Executing"].addTransition(_Main_SimulationFlow_Executing_1)
  265. # transition /Main/GodEventManager/Listening
  266. _Main_GodEventManager_Listening_0 = Transition(self, self.states["/Main/GodEventManager/Listening"], [self.states["/Main/GodEventManager/Waiting"]])
  267. _Main_GodEventManager_Listening_0.setAction(self._Main_GodEventManager_Listening_0_exec)
  268. _Main_GodEventManager_Listening_0.setTrigger(Event("god_event", "user_input"))
  269. _Main_GodEventManager_Listening_0.setGuard(self._Main_GodEventManager_Listening_0_guard)
  270. self.states["/Main/GodEventManager/Listening"].addTransition(_Main_GodEventManager_Listening_0)
  271. # transition /Main/GodEventManager/Waiting
  272. _Main_GodEventManager_Waiting_0 = Transition(self, self.states["/Main/GodEventManager/Waiting"], [self.states["/Main/GodEventManager/Listening"]])
  273. _Main_GodEventManager_Waiting_0.setAction(self._Main_GodEventManager_Waiting_0_exec)
  274. _Main_GodEventManager_Waiting_0.setTrigger(Event("Simulation.GodEventResult", None))
  275. self.states["/Main/GodEventManager/Waiting"].addTransition(_Main_GodEventManager_Waiting_0)
  276. # transition /Main/BreakpointManager/Listening
  277. _Main_BreakpointManager_Listening_0 = Transition(self, self.states["/Main/BreakpointManager/Listening"], [self.states["/Main/BreakpointManager/Waiting"]])
  278. _Main_BreakpointManager_Listening_0.setAction(self._Main_BreakpointManager_Listening_0_exec)
  279. _Main_BreakpointManager_Listening_0.setTrigger(Event("add_breakpoint", "user_input"))
  280. self.states["/Main/BreakpointManager/Listening"].addTransition(_Main_BreakpointManager_Listening_0)
  281. _Main_BreakpointManager_Listening_1 = Transition(self, self.states["/Main/BreakpointManager/Listening"], [self.states["/Main/BreakpointManager/Waiting"]])
  282. _Main_BreakpointManager_Listening_1.setAction(self._Main_BreakpointManager_Listening_1_exec)
  283. _Main_BreakpointManager_Listening_1.setTrigger(Event("del_breakpoint", "user_input"))
  284. self.states["/Main/BreakpointManager/Listening"].addTransition(_Main_BreakpointManager_Listening_1)
  285. _Main_BreakpointManager_Listening_2 = Transition(self, self.states["/Main/BreakpointManager/Listening"], [self.states["/Main/BreakpointManager/Waiting"]])
  286. _Main_BreakpointManager_Listening_2.setAction(self._Main_BreakpointManager_Listening_2_exec)
  287. _Main_BreakpointManager_Listening_2.setTrigger(Event("toggle_breakpoint", "user_input"))
  288. self.states["/Main/BreakpointManager/Listening"].addTransition(_Main_BreakpointManager_Listening_2)
  289. _Main_BreakpointManager_Listening_3 = Transition(self, self.states["/Main/BreakpointManager/Listening"], [self.states["/Main/BreakpointManager/Waiting"]])
  290. _Main_BreakpointManager_Listening_3.setAction(self._Main_BreakpointManager_Listening_3_exec)
  291. _Main_BreakpointManager_Listening_3.setTrigger(Event("list_breakpoints", "user_input"))
  292. self.states["/Main/BreakpointManager/Listening"].addTransition(_Main_BreakpointManager_Listening_3)
  293. # transition /Main/BreakpointManager/Waiting
  294. _Main_BreakpointManager_Waiting_0 = Transition(self, self.states["/Main/BreakpointManager/Waiting"], [self.states["/Main/BreakpointManager/Listening"]])
  295. _Main_BreakpointManager_Waiting_0.setAction(self._Main_BreakpointManager_Waiting_0_exec)
  296. _Main_BreakpointManager_Waiting_0.setTrigger(Event("Breakpoint.AddResult", None))
  297. self.states["/Main/BreakpointManager/Waiting"].addTransition(_Main_BreakpointManager_Waiting_0)
  298. _Main_BreakpointManager_Waiting_1 = Transition(self, self.states["/Main/BreakpointManager/Waiting"], [self.states["/Main/BreakpointManager/Listening"]])
  299. _Main_BreakpointManager_Waiting_1.setAction(self._Main_BreakpointManager_Waiting_1_exec)
  300. _Main_BreakpointManager_Waiting_1.setTrigger(Event("Breakpoint.DelResult", None))
  301. self.states["/Main/BreakpointManager/Waiting"].addTransition(_Main_BreakpointManager_Waiting_1)
  302. _Main_BreakpointManager_Waiting_2 = Transition(self, self.states["/Main/BreakpointManager/Waiting"], [self.states["/Main/BreakpointManager/Listening"]])
  303. _Main_BreakpointManager_Waiting_2.setAction(self._Main_BreakpointManager_Waiting_2_exec)
  304. _Main_BreakpointManager_Waiting_2.setTrigger(Event("Breakpoint.ToggleResult", None))
  305. self.states["/Main/BreakpointManager/Waiting"].addTransition(_Main_BreakpointManager_Waiting_2)
  306. _Main_BreakpointManager_Waiting_3 = Transition(self, self.states["/Main/BreakpointManager/Waiting"], [self.states["/Main/BreakpointManager/Listening"]])
  307. _Main_BreakpointManager_Waiting_3.setAction(self._Main_BreakpointManager_Waiting_3_exec)
  308. _Main_BreakpointManager_Waiting_3.setTrigger(Event("Breakpoint.ListResult", None))
  309. self.states["/Main/BreakpointManager/Waiting"].addTransition(_Main_BreakpointManager_Waiting_3)
  310. # transition /Main/ModeSelector/Running
  311. _Main_ModeSelector_Running_0 = Transition(self, self.states["/Main/ModeSelector/Running"], [self.states["/Main/ModeSelector/Paused"]])
  312. _Main_ModeSelector_Running_0.setAction(self._Main_ModeSelector_Running_0_exec)
  313. _Main_ModeSelector_Running_0.setTrigger(Event("Simulation.Finished", None))
  314. self.states["/Main/ModeSelector/Running"].addTransition(_Main_ModeSelector_Running_0)
  315. _Main_ModeSelector_Running_1 = Transition(self, self.states["/Main/ModeSelector/Running"], [self.states["/Main/ModeSelector/Paused"]])
  316. _Main_ModeSelector_Running_1.setAction(self._Main_ModeSelector_Running_1_exec)
  317. _Main_ModeSelector_Running_1.setTrigger(Event("Breakpoint.Triggered", None))
  318. self.states["/Main/ModeSelector/Running"].addTransition(_Main_ModeSelector_Running_1)
  319. def _Main_SimulationFlow_PrePaused_enter(self):
  320. self.addTimer(0, self.sccd_yield())
  321. def _Main_SimulationFlow_PrePaused_exit(self):
  322. self.removeTimer(0)
  323. def _Main_ModeSelector_Running_0_exec(self, parameters):
  324. clock = parameters[0]
  325. state = parameters[1]
  326. self.big_step.outputEvent(Event("Simulation.Finished", "user_output", []))
  327. self.big_step.outputEvent(Event("State", "user_output", [clock / 1000.0, state]))
  328. def _Main_ModeSelector_Running_1_exec(self, parameters):
  329. triggered_bp = parameters[0]
  330. clock = parameters[1]
  331. state = parameters[2]
  332. self.big_step.outputEvent(Event("Breakpoint.Triggered", "user_output", [triggered_bp, clock, state]))
  333. self.big_step.outputEvent(Event("State", "user_output", [clock / 1000.0, state]))
  334. def _Main_ModeSelector_Paused_3_exec(self, parameters):
  335. realtime_scale = parameters[0]
  336. self.realtime_scale = float(realtime_scale)
  337. def _Main_ModeSelector_Paused_4_exec(self, parameters):
  338. clock = parameters[0]
  339. timeNext = parameters[1]
  340. eventList = parameters[2]
  341. state = parameters[3]
  342. self.big_step.outputEvent(Event("BigStep.Finished", "user_output", []))
  343. self.big_step.outputEvent(Event("State", "user_output", [clock / 1000.0, state]))
  344. def _Main_ModeSelector_Paused_5_exec(self, parameters):
  345. clock = parameters[0]
  346. state = parameters[1]
  347. self.big_step.outputEvent(Event("Simulation.Finished", "user_output", []))
  348. self.big_step.outputEvent(Event("State", "user_output", [clock / 1000.0, state]))
  349. def _Main_ModeSelector_Running_Continuous_0_exec(self, parameters):
  350. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("Simulation.Pause", None, [])]))
  351. def _Main_ModeSelector_Running_Continuous_1_exec(self, parameters):
  352. clock = parameters[0]
  353. state = parameters[1]
  354. self.big_step.outputEvent(Event("Simulation.Finished", "user_output", []))
  355. self.big_step.outputEvent(Event("State", "user_output", [clock / 1000.0, state]))
  356. def _Main_ModeSelector_Running_Realtime_0_exec(self, parameters):
  357. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("Simulation.Pause", None, [])]))
  358. def _Main_ModeSelector_Running_Realtime_1_exec(self, parameters):
  359. clock = parameters[0]
  360. state = parameters[1]
  361. self.big_step.outputEvent(Event("Simulation.Finished", "user_output", []))
  362. self.big_step.outputEvent(Event("State", "user_output", [clock / 1000.0, state]))
  363. def _Main_ModeSelector_Running_Realtime_2_exec(self, parameters):
  364. clock = parameters[0]
  365. timeNext = parameters[1]
  366. eventList = parameters[2]
  367. state = parameters[3]
  368. self.big_step.outputEvent(Event("BigStep.Finished", "user_output", []))
  369. self.big_step.outputEvent(Event("State", "user_output", [clock / 1000.0, state]))
  370. def _Main_ModeSelector_Running_BigStep_0_exec(self, parameters):
  371. clock = parameters[0]
  372. timeNext = parameters[1]
  373. eventList = parameters[2]
  374. state = parameters[3]
  375. self.big_step.outputEvent(Event("BigStep.Finished", "user_output", []))
  376. self.big_step.outputEvent(Event("State", "user_output", [clock / 1000.0, state]))
  377. def _Main_ModeSelector_Running_BigStep_1_exec(self, parameters):
  378. clock = parameters[0]
  379. state = parameters[1]
  380. self.big_step.outputEvent(Event("Simulation.Finished", "user_output", []))
  381. self.big_step.outputEvent(Event("State", "user_output", [clock / 1000.0, state]))
  382. def _Main_ModeSelector_Running_SmallStep_0_exec(self, parameters):
  383. selectedTransition = parameters[0]
  384. currentEvent = parameters[1]
  385. eventList = parameters[2]
  386. elapsed = parameters[3]
  387. state = parameters[4]
  388. self.big_step.outputEvent(Event("SmallStep.Finished", "user_output", []))
  389. self.big_step.outputEvent(Event("State", "user_output", [selectedTransition, currentEvent, eventList, elapsed, state]))
  390. def _Main_ModeSelector_Running_SmallStep_1_exec(self, parameters):
  391. clock = parameters[0]
  392. timeNext = parameters[1]
  393. eventList = parameters[2]
  394. state = parameters[3]
  395. self.big_step.outputEvent(Event("BigStep.Finished", "user_output", []))
  396. self.big_step.outputEvent(Event("State", "user_output", [clock / 1000.0, state]))
  397. def _Main_ModeSelector_Running_SmallStep_2_exec(self, parameters):
  398. clock = parameters[0]
  399. state = parameters[1]
  400. self.big_step.outputEvent(Event("Simulation.Finished", "user_output", []))
  401. self.big_step.outputEvent(Event("State", "user_output", [clock / 1000.0, state]))
  402. def _Main_ModeSelector_WaitingForPaused_0_exec(self, parameters):
  403. clock = parameters[0]
  404. state = parameters[1]
  405. self.big_step.outputEvent(Event("Simulation.Paused", "user_output", []))
  406. self.big_step.outputEvent(Event("State", "user_output", [clock / 1000.0, state]))
  407. def _Main_ChildState_Initialized_0_exec(self, parameters):
  408. self.big_step.outputEventOM(Event("delete_instance", None, [self, 'child_simulator']))
  409. def _Main_Initializer_Waiting_0_exec(self, parameters):
  410. self.big_step.outputEventOM(Event("create_instance", None, [self, 'child_simulator', 'FSASimulator_Simulation', deepcopy(self.model), deepcopy(self.eventList)]))
  411. def _Main_Initializer_Waiting_0_guard(self, parameters):
  412. return self.inState(["/Main/ChildState/Uninitialized"])
  413. def _Main_Initializer_CreatingChildSimulator_0_exec(self, parameters):
  414. self.big_step.outputEventOM(Event("start_instance", None, [self, 'child_simulator']))
  415. def _Main_SimulationFlow_Paused_0_exec(self, parameters):
  416. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("Simulation.Execute", None, [])]))
  417. def _Main_SimulationFlow_Paused_0_guard(self, parameters):
  418. return self.inState(["/Main/ModeSelector/Running/Continuous"]) and self.inState(["/Main/ChildState/Initialized"])
  419. def _Main_SimulationFlow_Paused_1_exec(self, parameters):
  420. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("Simulation.ExecuteRealtime", None, [self.realtime_scale])]))
  421. def _Main_SimulationFlow_Paused_1_guard(self, parameters):
  422. return self.inState(["/Main/ModeSelector/Running/Realtime"]) and self.inState(["/Main/ChildState/Initialized"])
  423. def _Main_SimulationFlow_Paused_2_exec(self, parameters):
  424. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("BigStep.Execute", None, [])]))
  425. def _Main_SimulationFlow_Paused_2_guard(self, parameters):
  426. return self.inState(["/Main/ModeSelector/Running/BigStep"]) and self.inState(["/Main/ChildState/Initialized"])
  427. def _Main_SimulationFlow_Paused_3_exec(self, parameters):
  428. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("SmallStep.Execute", None, [])]))
  429. def _Main_SimulationFlow_Paused_3_guard(self, parameters):
  430. return self.inState(["/Main/ModeSelector/Running/SmallStep"]) and self.inState(["/Main/ChildState/Initialized"])
  431. def _Main_SimulationFlow_Executing_0_guard(self, parameters):
  432. return self.inState(["/Main/ModeSelector/Paused"])
  433. def _Main_SimulationFlow_Executing_1_guard(self, parameters):
  434. return self.inState(["/Main/ModeSelector/Running/Continuous"]) or self.inState(["/Main/ModeSelector/Running/Realtime"])
  435. def _Main_GodEventManager_Listening_0_exec(self, parameters):
  436. block_name = parameters[0]
  437. new_val = parameters[1]
  438. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("Simulation.GodEvent", None, [block_name, new_val])]))
  439. def _Main_GodEventManager_Listening_0_guard(self, parameters):
  440. block_name = parameters[0]
  441. new_val = parameters[1]
  442. return self.inState(["/Main/ModeSelector/Paused"])
  443. def _Main_GodEventManager_Waiting_0_exec(self, parameters):
  444. result = parameters[0]
  445. self.big_step.outputEvent(Event("GodEventResult", "user_output", [result]))
  446. def _Main_BreakpointManager_Listening_0_exec(self, parameters):
  447. name = parameters[0]
  448. function = parameters[1]
  449. enabled = parameters[2]
  450. disable_on_trigger = parameters[3]
  451. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("Breakpoint.Add", None, [name, function, enabled, disable_on_trigger])]))
  452. def _Main_BreakpointManager_Listening_1_exec(self, parameters):
  453. name = parameters[0]
  454. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("Breakpoint.Del", None, [name])]))
  455. def _Main_BreakpointManager_Listening_2_exec(self, parameters):
  456. name = parameters[0]
  457. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("Breakpoint.Toggle", None, [name])]))
  458. def _Main_BreakpointManager_Listening_3_exec(self, parameters):
  459. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("Breakpoint.List", None, [])]))
  460. def _Main_BreakpointManager_Waiting_0_exec(self, parameters):
  461. result = parameters[0]
  462. self.big_step.outputEvent(Event("Breakpoint.AddResult", "user_output", [result]))
  463. def _Main_BreakpointManager_Waiting_1_exec(self, parameters):
  464. result = parameters[0]
  465. self.big_step.outputEvent(Event("Breakpoint.DelResult", "user_output", [result]))
  466. def _Main_BreakpointManager_Waiting_2_exec(self, parameters):
  467. result = parameters[0]
  468. self.big_step.outputEvent(Event("Breakpoint.ToggleResult", "user_output", [result]))
  469. def _Main_BreakpointManager_Waiting_3_exec(self, parameters):
  470. result = parameters[0]
  471. self.big_step.outputEvent(Event("Breakpoint.ListResult", "user_output", [result]))
  472. def initializeStatechart(self):
  473. # enter default state
  474. self.default_targets = self.states["/Main"].getEffectiveTargetStates()
  475. RuntimeClassBase.initializeStatechart(self)
  476. class FSASimulator_Simulation(RuntimeClassBase):
  477. def __init__(self, controller, model, events):
  478. RuntimeClassBase.__init__(self, controller)
  479. self.semantics.big_step_maximality = StatechartSemantics.TakeMany
  480. self.semantics.internal_event_lifeline = StatechartSemantics.Queue
  481. self.semantics.input_event_lifeline = StatechartSemantics.FirstComboStep
  482. self.semantics.priority = StatechartSemantics.SourceParent
  483. self.semantics.concurrency = StatechartSemantics.Single
  484. # build Statechart structure
  485. self.build_statechart_structure()
  486. # call user defined constructor
  487. FSASimulator_Simulation.user_defined_constructor(self, model, events)
  488. def user_defined_constructor(self, model, events):
  489. self.model = model
  490. self.eventList = events
  491. def user_defined_destructor(self):
  492. pass
  493. # user defined method
  494. def initialize(self):
  495. self.clock = 0
  496. self.elapsed = 0
  497. self.delta = 1.0 * 1000.0 # in miliseconds for real-time simulation
  498. self.timeNext = self.delta
  499. self.state = self.model.initialState
  500. # user defined method
  501. def endCondition(self):
  502. return self.state and self.state.final
  503. # user defined method
  504. def finalize(self):
  505. print 'Simulation finalized.'
  506. # user defined method
  507. def initializeDebugger(self):
  508. self.breakpoints = []
  509. self.triggered_bp = None
  510. # user defined method
  511. def waitTime(self):
  512. # First, we convert from wall-clock time to simulated time.
  513. # This means the elapsed time in wall-clock time needs to be scaled according to the realtime scale (for example, if the realtime scale is 2, an elapsed time of 1 second in wall-clock time is equal to an elapsed time of 2 seconds in simulated time).
  514. simulated_diff = (accurate_time.time() - self.realtime_start_time) * self.realtime_scale
  515. # timeNext and simulated_diff are both in simulated time: so now scale back to wall-clock time by dividing.
  516. # This function returns an amount of miliseconds.
  517. return ((self.timeNext - simulated_diff) / self.realtime_scale)
  518. # user defined method
  519. def syncSimulatedTime(self):
  520. diff = accurate_time.time() - self.realtime_start_time
  521. self.clock = diff * self.realtime_scale
  522. # user defined method
  523. def addBreakpoint(self, name, function, enabled = None, disable_on_trigger = None):
  524. if enabled == None: enabled = true
  525. if disable_on_trigger == None: disable_on_trigger = true
  526. if len([bp for bp in self.breakpoints if bp.name == name]) > 0:
  527. return -1
  528. self.breakpoints.append(Breakpoint(name, function, enabled, disable_on_trigger))
  529. return 0
  530. # user defined method
  531. def delBreakpoint(self, name):
  532. if len([bp for bp in self.breakpoints if bp.name == name]) == 0:
  533. return -1
  534. self.breakpoints = [bp for bp in self.breakpoints if bp.name != name]
  535. return 0
  536. # user defined method
  537. def toggleBreakpoint(self, name):
  538. if len([bp for bp in self.breakpoints if bp.name == name]) == 0:
  539. return -1
  540. for bp in self.breakpoints:
  541. if bp.name == name:
  542. bp.enabled = enabled
  543. break
  544. return 0
  545. # user defined method
  546. def breakpointTriggers(self, is_realtime_simulation):
  547. self.triggered_bp = None
  548. for bp in self.breakpoints:
  549. if not bp.enabled:
  550. continue
  551. # include the function in the scope...
  552. exec(bp.function)
  553. # ... and execute it, note that the breakpoint thus has to start with "def breakpoint("
  554. # note that we pass self.timeNext instead of self.simulated_time in the case of as-fast-as-possible simulation (or stepping)
  555. # this is to make sure that the simulation is stopped BEFORE the specified time is reached, and not AFTER (because we don't necessarily implement 'step back')
  556. # in case of realtime simulation, we do pass the current simulated time, since we can stop at (more or less) exactly the right time
  557. if breakpoint({'clock': (self.clock if is_realtime_simulation else self.timeNext) / 1000.0, 'state': self.state}):
  558. # triggered!
  559. self.triggered_bp = bp.name
  560. if bp.disable_on_trigger:
  561. bp.enabled = False
  562. return True
  563. else:
  564. # not triggered, so continue
  565. continue
  566. return False
  567. # user defined method
  568. def godEvent(self, new_state):
  569. filtered_states = [s for s in self.model.states if s.name == new_state]
  570. if not len(filtered_states) == 1:
  571. return -1
  572. self.state = filtered_states[0]
  573. return 0
  574. # builds Statechart structure
  575. def build_statechart_structure(self):
  576. # state <root>
  577. self.states[""] = State(0, "", self)
  578. # state /Main
  579. self.states["/Main"] = ParallelState(1, "/Main", self)
  580. # state /Main/ModeSelector
  581. self.states["/Main/ModeSelector"] = State(2, "/Main/ModeSelector", self)
  582. # state /Main/ModeSelector/Paused
  583. self.states["/Main/ModeSelector/Paused"] = State(3, "/Main/ModeSelector/Paused", self)
  584. # state /Main/ModeSelector/Running
  585. self.states["/Main/ModeSelector/Running"] = State(4, "/Main/ModeSelector/Running", self)
  586. # state /Main/ModeSelector/Running/Continuous
  587. self.states["/Main/ModeSelector/Running/Continuous"] = State(5, "/Main/ModeSelector/Running/Continuous", self)
  588. # state /Main/ModeSelector/Running/Realtime
  589. self.states["/Main/ModeSelector/Running/Realtime"] = State(6, "/Main/ModeSelector/Running/Realtime", self)
  590. # state /Main/ModeSelector/Running/BigStep
  591. self.states["/Main/ModeSelector/Running/BigStep"] = State(7, "/Main/ModeSelector/Running/BigStep", self)
  592. # state /Main/ModeSelector/Running/SmallStep
  593. self.states["/Main/ModeSelector/Running/SmallStep"] = State(8, "/Main/ModeSelector/Running/SmallStep", self)
  594. # state /Main/ChildState
  595. self.states["/Main/ChildState"] = State(9, "/Main/ChildState", self)
  596. # state /Main/ChildState/Uninitialized
  597. self.states["/Main/ChildState/Uninitialized"] = State(10, "/Main/ChildState/Uninitialized", self)
  598. # state /Main/ChildState/Initialized
  599. self.states["/Main/ChildState/Initialized"] = State(11, "/Main/ChildState/Initialized", self)
  600. # state /Main/Initializer
  601. self.states["/Main/Initializer"] = State(12, "/Main/Initializer", self)
  602. # state /Main/Initializer/Waiting
  603. self.states["/Main/Initializer/Waiting"] = State(13, "/Main/Initializer/Waiting", self)
  604. # state /Main/Initializer/CreatingChildSimulator
  605. self.states["/Main/Initializer/CreatingChildSimulator"] = State(14, "/Main/Initializer/CreatingChildSimulator", self)
  606. # state /Main/Initializer/StartingChildSimulator
  607. self.states["/Main/Initializer/StartingChildSimulator"] = State(15, "/Main/Initializer/StartingChildSimulator", self)
  608. # state /Main/Initializer/Running
  609. self.states["/Main/Initializer/Running"] = State(16, "/Main/Initializer/Running", self)
  610. # state /Main/Initializer/SettleBeforeWaiting
  611. self.states["/Main/Initializer/SettleBeforeWaiting"] = State(17, "/Main/Initializer/SettleBeforeWaiting", self)
  612. self.states["/Main/Initializer/SettleBeforeWaiting"].setEnter(self._Main_Initializer_SettleBeforeWaiting_enter)
  613. self.states["/Main/Initializer/SettleBeforeWaiting"].setExit(self._Main_Initializer_SettleBeforeWaiting_exit)
  614. # state /Main/SimulationFlow
  615. self.states["/Main/SimulationFlow"] = State(18, "/Main/SimulationFlow", self)
  616. # state /Main/SimulationFlow/Started
  617. self.states["/Main/SimulationFlow/Started"] = State(19, "/Main/SimulationFlow/Started", self)
  618. # state /Main/SimulationFlow/Initialized
  619. self.states["/Main/SimulationFlow/Initialized"] = State(20, "/Main/SimulationFlow/Initialized", self)
  620. # state /Main/SimulationFlow/InitializeDebugger
  621. self.states["/Main/SimulationFlow/InitializeDebugger"] = State(21, "/Main/SimulationFlow/InitializeDebugger", self)
  622. # state /Main/SimulationFlow/Waiting
  623. self.states["/Main/SimulationFlow/Waiting"] = State(22, "/Main/SimulationFlow/Waiting", self)
  624. # state /Main/SimulationFlow/SettleBeforeCheckTermination
  625. self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"] = State(23, "/Main/SimulationFlow/SettleBeforeCheckTermination", self)
  626. self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"].setEnter(self._Main_SimulationFlow_SettleBeforeCheckTermination_enter)
  627. self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"].setExit(self._Main_SimulationFlow_SettleBeforeCheckTermination_exit)
  628. # state /Main/SimulationFlow/CheckTermination
  629. self.states["/Main/SimulationFlow/CheckTermination"] = State(24, "/Main/SimulationFlow/CheckTermination", self)
  630. # state /Main/SimulationFlow/WaitingRealtime
  631. self.states["/Main/SimulationFlow/WaitingRealtime"] = State(25, "/Main/SimulationFlow/WaitingRealtime", self)
  632. self.states["/Main/SimulationFlow/WaitingRealtime"].setEnter(self._Main_SimulationFlow_WaitingRealtime_enter)
  633. self.states["/Main/SimulationFlow/WaitingRealtime"].setExit(self._Main_SimulationFlow_WaitingRealtime_exit)
  634. # state /Main/SimulationFlow/Executing
  635. self.states["/Main/SimulationFlow/Executing"] = State(26, "/Main/SimulationFlow/Executing", self)
  636. # state /Main/SimulationFlow/Stopped
  637. self.states["/Main/SimulationFlow/Stopped"] = State(27, "/Main/SimulationFlow/Stopped", self)
  638. # state /Main/GodEventManager
  639. self.states["/Main/GodEventManager"] = State(28, "/Main/GodEventManager", self)
  640. # state /Main/GodEventManager/Listening
  641. self.states["/Main/GodEventManager/Listening"] = State(29, "/Main/GodEventManager/Listening", self)
  642. # state /Main/BreakpointManager
  643. self.states["/Main/BreakpointManager"] = State(30, "/Main/BreakpointManager", self)
  644. # state /Main/BreakpointManager/Listening
  645. self.states["/Main/BreakpointManager/Listening"] = State(31, "/Main/BreakpointManager/Listening", self)
  646. # state /Stopped
  647. self.states["/Stopped"] = State(32, "/Stopped", self)
  648. # add children
  649. self.states[""].addChild(self.states["/Main"])
  650. self.states[""].addChild(self.states["/Stopped"])
  651. self.states["/Main"].addChild(self.states["/Main/ModeSelector"])
  652. self.states["/Main"].addChild(self.states["/Main/ChildState"])
  653. self.states["/Main"].addChild(self.states["/Main/Initializer"])
  654. self.states["/Main"].addChild(self.states["/Main/SimulationFlow"])
  655. self.states["/Main"].addChild(self.states["/Main/GodEventManager"])
  656. self.states["/Main"].addChild(self.states["/Main/BreakpointManager"])
  657. self.states["/Main/ModeSelector"].addChild(self.states["/Main/ModeSelector/Paused"])
  658. self.states["/Main/ModeSelector"].addChild(self.states["/Main/ModeSelector/Running"])
  659. self.states["/Main/ModeSelector/Running"].addChild(self.states["/Main/ModeSelector/Running/Continuous"])
  660. self.states["/Main/ModeSelector/Running"].addChild(self.states["/Main/ModeSelector/Running/Realtime"])
  661. self.states["/Main/ModeSelector/Running"].addChild(self.states["/Main/ModeSelector/Running/BigStep"])
  662. self.states["/Main/ModeSelector/Running"].addChild(self.states["/Main/ModeSelector/Running/SmallStep"])
  663. self.states["/Main/ChildState"].addChild(self.states["/Main/ChildState/Uninitialized"])
  664. self.states["/Main/ChildState"].addChild(self.states["/Main/ChildState/Initialized"])
  665. self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/Waiting"])
  666. self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/CreatingChildSimulator"])
  667. self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/StartingChildSimulator"])
  668. self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/Running"])
  669. self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/SettleBeforeWaiting"])
  670. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Started"])
  671. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Initialized"])
  672. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/InitializeDebugger"])
  673. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Waiting"])
  674. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"])
  675. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/CheckTermination"])
  676. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/WaitingRealtime"])
  677. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Executing"])
  678. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Stopped"])
  679. self.states["/Main/GodEventManager"].addChild(self.states["/Main/GodEventManager/Listening"])
  680. self.states["/Main/BreakpointManager"].addChild(self.states["/Main/BreakpointManager/Listening"])
  681. self.states[""].fixTree()
  682. self.states[""].default_state = self.states["/Main"]
  683. self.states["/Main/ModeSelector"].default_state = self.states["/Main/ModeSelector/Paused"]
  684. self.states["/Main/ModeSelector/Running"].default_state = self.states["/Main/ModeSelector/Running/Continuous"]
  685. self.states["/Main/ChildState"].default_state = self.states["/Main/ChildState/Uninitialized"]
  686. self.states["/Main/Initializer"].default_state = self.states["/Main/Initializer/Waiting"]
  687. self.states["/Main/SimulationFlow"].default_state = self.states["/Main/SimulationFlow/Started"]
  688. self.states["/Main/GodEventManager"].default_state = self.states["/Main/GodEventManager/Listening"]
  689. self.states["/Main/BreakpointManager"].default_state = self.states["/Main/BreakpointManager/Listening"]
  690. # transition /Main/ModeSelector/Paused
  691. _Main_ModeSelector_Paused_0 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Running/SmallStep"]])
  692. _Main_ModeSelector_Paused_0.setAction(self._Main_ModeSelector_Paused_0_exec)
  693. _Main_ModeSelector_Paused_0.setTrigger(Event("SmallStep.Execute", None))
  694. self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_0)
  695. _Main_ModeSelector_Paused_1 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Running/BigStep"]])
  696. _Main_ModeSelector_Paused_1.setAction(self._Main_ModeSelector_Paused_1_exec)
  697. _Main_ModeSelector_Paused_1.setTrigger(Event("BigStep.Execute", None))
  698. self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_1)
  699. _Main_ModeSelector_Paused_2 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Running/Continuous"]])
  700. _Main_ModeSelector_Paused_2.setTrigger(Event("Simulation.Execute", None))
  701. self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_2)
  702. _Main_ModeSelector_Paused_3 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Running/Realtime"]])
  703. _Main_ModeSelector_Paused_3.setAction(self._Main_ModeSelector_Paused_3_exec)
  704. _Main_ModeSelector_Paused_3.setTrigger(Event("Simulation.ExecuteRealtime", None))
  705. self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_3)
  706. _Main_ModeSelector_Paused_4 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Paused"]])
  707. _Main_ModeSelector_Paused_4.setAction(self._Main_ModeSelector_Paused_4_exec)
  708. _Main_ModeSelector_Paused_4.setTrigger(Event("BigStep.Finished", None))
  709. self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_4)
  710. # transition /Main/ModeSelector/Running/Continuous
  711. _Main_ModeSelector_Running_Continuous_0 = Transition(self, self.states["/Main/ModeSelector/Running/Continuous"], [self.states["/Main/ModeSelector/Paused"]])
  712. _Main_ModeSelector_Running_Continuous_0.setTrigger(Event("Simulation.Pause", None))
  713. self.states["/Main/ModeSelector/Running/Continuous"].addTransition(_Main_ModeSelector_Running_Continuous_0)
  714. # transition /Main/ModeSelector/Running/Realtime
  715. _Main_ModeSelector_Running_Realtime_0 = Transition(self, self.states["/Main/ModeSelector/Running/Realtime"], [self.states["/Main/ModeSelector/Paused"]])
  716. _Main_ModeSelector_Running_Realtime_0.setTrigger(Event("Simulation.Pause", None))
  717. self.states["/Main/ModeSelector/Running/Realtime"].addTransition(_Main_ModeSelector_Running_Realtime_0)
  718. _Main_ModeSelector_Running_Realtime_1 = Transition(self, self.states["/Main/ModeSelector/Running/Realtime"], [self.states["/Main/ModeSelector/Running/Realtime"]])
  719. _Main_ModeSelector_Running_Realtime_1.setAction(self._Main_ModeSelector_Running_Realtime_1_exec)
  720. _Main_ModeSelector_Running_Realtime_1.setTrigger(Event("BigStep.Finished", None))
  721. self.states["/Main/ModeSelector/Running/Realtime"].addTransition(_Main_ModeSelector_Running_Realtime_1)
  722. # transition /Main/ModeSelector/Running/BigStep
  723. _Main_ModeSelector_Running_BigStep_0 = Transition(self, self.states["/Main/ModeSelector/Running/BigStep"], [self.states["/Main/ModeSelector/Paused"]])
  724. _Main_ModeSelector_Running_BigStep_0.setAction(self._Main_ModeSelector_Running_BigStep_0_exec)
  725. _Main_ModeSelector_Running_BigStep_0.setTrigger(Event("BigStep.Finished", None))
  726. self.states["/Main/ModeSelector/Running/BigStep"].addTransition(_Main_ModeSelector_Running_BigStep_0)
  727. # transition /Main/ModeSelector/Running/SmallStep
  728. _Main_ModeSelector_Running_SmallStep_0 = Transition(self, self.states["/Main/ModeSelector/Running/SmallStep"], [self.states["/Main/ModeSelector/Paused"]])
  729. _Main_ModeSelector_Running_SmallStep_0.setAction(self._Main_ModeSelector_Running_SmallStep_0_exec)
  730. _Main_ModeSelector_Running_SmallStep_0.setTrigger(Event("SmallStep.Finished", None))
  731. self.states["/Main/ModeSelector/Running/SmallStep"].addTransition(_Main_ModeSelector_Running_SmallStep_0)
  732. # transition /Main/ChildState/Uninitialized
  733. _Main_ChildState_Uninitialized_0 = Transition(self, self.states["/Main/ChildState/Uninitialized"], [self.states["/Main/ChildState/Initialized"]])
  734. _Main_ChildState_Uninitialized_0.setTrigger(Event("BigStep.Initialized", None))
  735. self.states["/Main/ChildState/Uninitialized"].addTransition(_Main_ChildState_Uninitialized_0)
  736. # transition /Main/ChildState/Initialized
  737. _Main_ChildState_Initialized_0 = Transition(self, self.states["/Main/ChildState/Initialized"], [self.states["/Main/ChildState/Uninitialized"]])
  738. _Main_ChildState_Initialized_0.setAction(self._Main_ChildState_Initialized_0_exec)
  739. _Main_ChildState_Initialized_0.setTrigger(Event("BigStep.Finished", None))
  740. self.states["/Main/ChildState/Initialized"].addTransition(_Main_ChildState_Initialized_0)
  741. # transition /Main/Initializer/Waiting
  742. _Main_Initializer_Waiting_0 = Transition(self, self.states["/Main/Initializer/Waiting"], [self.states["/Main/Initializer/CreatingChildSimulator"]])
  743. _Main_Initializer_Waiting_0.setAction(self._Main_Initializer_Waiting_0_exec)
  744. _Main_Initializer_Waiting_0.setTrigger(None)
  745. _Main_Initializer_Waiting_0.setGuard(self._Main_Initializer_Waiting_0_guard)
  746. self.states["/Main/Initializer/Waiting"].addTransition(_Main_Initializer_Waiting_0)
  747. # transition /Main/Initializer/CreatingChildSimulator
  748. _Main_Initializer_CreatingChildSimulator_0 = Transition(self, self.states["/Main/Initializer/CreatingChildSimulator"], [self.states["/Main/Initializer/StartingChildSimulator"]])
  749. _Main_Initializer_CreatingChildSimulator_0.setAction(self._Main_Initializer_CreatingChildSimulator_0_exec)
  750. _Main_Initializer_CreatingChildSimulator_0.setTrigger(Event("instance_created", None))
  751. self.states["/Main/Initializer/CreatingChildSimulator"].addTransition(_Main_Initializer_CreatingChildSimulator_0)
  752. # transition /Main/Initializer/StartingChildSimulator
  753. _Main_Initializer_StartingChildSimulator_0 = Transition(self, self.states["/Main/Initializer/StartingChildSimulator"], [self.states["/Main/Initializer/Running"]])
  754. _Main_Initializer_StartingChildSimulator_0.setTrigger(Event("BigStep.Initialized", None))
  755. self.states["/Main/Initializer/StartingChildSimulator"].addTransition(_Main_Initializer_StartingChildSimulator_0)
  756. # transition /Main/Initializer/Running
  757. _Main_Initializer_Running_0 = Transition(self, self.states["/Main/Initializer/Running"], [self.states["/Main/Initializer/SettleBeforeWaiting"]])
  758. _Main_Initializer_Running_0.setTrigger(Event("BigStep.Finished", None))
  759. self.states["/Main/Initializer/Running"].addTransition(_Main_Initializer_Running_0)
  760. # transition /Main/Initializer/SettleBeforeWaiting
  761. _Main_Initializer_SettleBeforeWaiting_0 = Transition(self, self.states["/Main/Initializer/SettleBeforeWaiting"], [self.states["/Main/Initializer/Waiting"]])
  762. _Main_Initializer_SettleBeforeWaiting_0.setTrigger(Event("_0after"))
  763. self.states["/Main/Initializer/SettleBeforeWaiting"].addTransition(_Main_Initializer_SettleBeforeWaiting_0)
  764. # transition /Main/SimulationFlow/Started
  765. _Main_SimulationFlow_Started_0 = Transition(self, self.states["/Main/SimulationFlow/Started"], [self.states["/Main/SimulationFlow/Initialized"]])
  766. _Main_SimulationFlow_Started_0.setAction(self._Main_SimulationFlow_Started_0_exec)
  767. _Main_SimulationFlow_Started_0.setTrigger(None)
  768. self.states["/Main/SimulationFlow/Started"].addTransition(_Main_SimulationFlow_Started_0)
  769. # transition /Main/SimulationFlow/Initialized
  770. _Main_SimulationFlow_Initialized_0 = Transition(self, self.states["/Main/SimulationFlow/Initialized"], [self.states["/Main/SimulationFlow/InitializeDebugger"]])
  771. _Main_SimulationFlow_Initialized_0.setTrigger(None)
  772. self.states["/Main/SimulationFlow/Initialized"].addTransition(_Main_SimulationFlow_Initialized_0)
  773. # transition /Main/SimulationFlow/InitializeDebugger
  774. _Main_SimulationFlow_InitializeDebugger_0 = Transition(self, self.states["/Main/SimulationFlow/InitializeDebugger"], [self.states["/Main/SimulationFlow/Waiting"]])
  775. _Main_SimulationFlow_InitializeDebugger_0.setAction(self._Main_SimulationFlow_InitializeDebugger_0_exec)
  776. _Main_SimulationFlow_InitializeDebugger_0.setTrigger(None)
  777. self.states["/Main/SimulationFlow/InitializeDebugger"].addTransition(_Main_SimulationFlow_InitializeDebugger_0)
  778. # transition /Main/SimulationFlow/Waiting
  779. _Main_SimulationFlow_Waiting_0 = Transition(self, self.states["/Main/SimulationFlow/Waiting"], [self.states["/Main/SimulationFlow/CheckTermination"]])
  780. _Main_SimulationFlow_Waiting_0.setTrigger(None)
  781. _Main_SimulationFlow_Waiting_0.setGuard(self._Main_SimulationFlow_Waiting_0_guard)
  782. self.states["/Main/SimulationFlow/Waiting"].addTransition(_Main_SimulationFlow_Waiting_0)
  783. # transition /Main/SimulationFlow/SettleBeforeCheckTermination
  784. _Main_SimulationFlow_SettleBeforeCheckTermination_0 = Transition(self, self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"], [self.states["/Main/SimulationFlow/CheckTermination"]])
  785. _Main_SimulationFlow_SettleBeforeCheckTermination_0.setTrigger(Event("_1after"))
  786. self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"].addTransition(_Main_SimulationFlow_SettleBeforeCheckTermination_0)
  787. _Main_SimulationFlow_SettleBeforeCheckTermination_1 = Transition(self, self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"], [self.states["/Main/SimulationFlow/CheckTermination"]])
  788. _Main_SimulationFlow_SettleBeforeCheckTermination_1.setAction(self._Main_SimulationFlow_SettleBeforeCheckTermination_1_exec)
  789. _Main_SimulationFlow_SettleBeforeCheckTermination_1.setTrigger(None)
  790. _Main_SimulationFlow_SettleBeforeCheckTermination_1.setGuard(self._Main_SimulationFlow_SettleBeforeCheckTermination_1_guard)
  791. self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"].addTransition(_Main_SimulationFlow_SettleBeforeCheckTermination_1)
  792. # transition /Main/SimulationFlow/CheckTermination
  793. _Main_SimulationFlow_CheckTermination_0 = Transition(self, self.states["/Main/SimulationFlow/CheckTermination"], [self.states["/Main/SimulationFlow/Executing"]])
  794. _Main_SimulationFlow_CheckTermination_0.setAction(self._Main_SimulationFlow_CheckTermination_0_exec)
  795. _Main_SimulationFlow_CheckTermination_0.setTrigger(None)
  796. _Main_SimulationFlow_CheckTermination_0.setGuard(self._Main_SimulationFlow_CheckTermination_0_guard)
  797. self.states["/Main/SimulationFlow/CheckTermination"].addTransition(_Main_SimulationFlow_CheckTermination_0)
  798. _Main_SimulationFlow_CheckTermination_1 = Transition(self, self.states["/Main/SimulationFlow/CheckTermination"], [self.states["/Main/SimulationFlow/Executing"]])
  799. _Main_SimulationFlow_CheckTermination_1.setAction(self._Main_SimulationFlow_CheckTermination_1_exec)
  800. _Main_SimulationFlow_CheckTermination_1.setTrigger(None)
  801. _Main_SimulationFlow_CheckTermination_1.setGuard(self._Main_SimulationFlow_CheckTermination_1_guard)
  802. self.states["/Main/SimulationFlow/CheckTermination"].addTransition(_Main_SimulationFlow_CheckTermination_1)
  803. _Main_SimulationFlow_CheckTermination_2 = Transition(self, self.states["/Main/SimulationFlow/CheckTermination"], [self.states["/Main/SimulationFlow/WaitingRealtime"]])
  804. _Main_SimulationFlow_CheckTermination_2.setTrigger(None)
  805. _Main_SimulationFlow_CheckTermination_2.setGuard(self._Main_SimulationFlow_CheckTermination_2_guard)
  806. self.states["/Main/SimulationFlow/CheckTermination"].addTransition(_Main_SimulationFlow_CheckTermination_2)
  807. _Main_SimulationFlow_CheckTermination_3 = Transition(self, self.states["/Main/SimulationFlow/CheckTermination"], [self.states["/Main/SimulationFlow/Stopped"]])
  808. _Main_SimulationFlow_CheckTermination_3.setAction(self._Main_SimulationFlow_CheckTermination_3_exec)
  809. _Main_SimulationFlow_CheckTermination_3.setTrigger(None)
  810. _Main_SimulationFlow_CheckTermination_3.setGuard(self._Main_SimulationFlow_CheckTermination_3_guard)
  811. self.states["/Main/SimulationFlow/CheckTermination"].addTransition(_Main_SimulationFlow_CheckTermination_3)
  812. # transition /Main/SimulationFlow/WaitingRealtime
  813. _Main_SimulationFlow_WaitingRealtime_0 = Transition(self, self.states["/Main/SimulationFlow/WaitingRealtime"], [self.states["/Main/SimulationFlow/CheckTermination"]])
  814. _Main_SimulationFlow_WaitingRealtime_0.setAction(self._Main_SimulationFlow_WaitingRealtime_0_exec)
  815. _Main_SimulationFlow_WaitingRealtime_0.setTrigger(Event("_2after"))
  816. _Main_SimulationFlow_WaitingRealtime_0.setGuard(self._Main_SimulationFlow_WaitingRealtime_0_guard)
  817. self.states["/Main/SimulationFlow/WaitingRealtime"].addTransition(_Main_SimulationFlow_WaitingRealtime_0)
  818. _Main_SimulationFlow_WaitingRealtime_1 = Transition(self, self.states["/Main/SimulationFlow/WaitingRealtime"], [self.states["/Main/SimulationFlow/CheckTermination"]])
  819. _Main_SimulationFlow_WaitingRealtime_1.setAction(self._Main_SimulationFlow_WaitingRealtime_1_exec)
  820. _Main_SimulationFlow_WaitingRealtime_1.setTrigger(None)
  821. _Main_SimulationFlow_WaitingRealtime_1.setGuard(self._Main_SimulationFlow_WaitingRealtime_1_guard)
  822. self.states["/Main/SimulationFlow/WaitingRealtime"].addTransition(_Main_SimulationFlow_WaitingRealtime_1)
  823. _Main_SimulationFlow_WaitingRealtime_2 = Transition(self, self.states["/Main/SimulationFlow/WaitingRealtime"], [self.states["/Main/SimulationFlow/Executing"]])
  824. _Main_SimulationFlow_WaitingRealtime_2.setAction(self._Main_SimulationFlow_WaitingRealtime_2_exec)
  825. _Main_SimulationFlow_WaitingRealtime_2.setTrigger(None)
  826. _Main_SimulationFlow_WaitingRealtime_2.setGuard(self._Main_SimulationFlow_WaitingRealtime_2_guard)
  827. self.states["/Main/SimulationFlow/WaitingRealtime"].addTransition(_Main_SimulationFlow_WaitingRealtime_2)
  828. # transition /Main/SimulationFlow/Executing
  829. _Main_SimulationFlow_Executing_0 = Transition(self, self.states["/Main/SimulationFlow/Executing"], [self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"]])
  830. _Main_SimulationFlow_Executing_0.setAction(self._Main_SimulationFlow_Executing_0_exec)
  831. _Main_SimulationFlow_Executing_0.setTrigger(Event("BigStep.Finished", None))
  832. self.states["/Main/SimulationFlow/Executing"].addTransition(_Main_SimulationFlow_Executing_0)
  833. # transition /Main/GodEventManager/Listening
  834. _Main_GodEventManager_Listening_0 = Transition(self, self.states["/Main/GodEventManager/Listening"], [self.states["/Main/GodEventManager/Listening"]])
  835. _Main_GodEventManager_Listening_0.setAction(self._Main_GodEventManager_Listening_0_exec)
  836. _Main_GodEventManager_Listening_0.setTrigger(Event("Simulation.GodEvent", None))
  837. _Main_GodEventManager_Listening_0.setGuard(self._Main_GodEventManager_Listening_0_guard)
  838. self.states["/Main/GodEventManager/Listening"].addTransition(_Main_GodEventManager_Listening_0)
  839. # transition /Main/BreakpointManager/Listening
  840. _Main_BreakpointManager_Listening_0 = Transition(self, self.states["/Main/BreakpointManager/Listening"], [self.states["/Main/BreakpointManager/Listening"]])
  841. _Main_BreakpointManager_Listening_0.setAction(self._Main_BreakpointManager_Listening_0_exec)
  842. _Main_BreakpointManager_Listening_0.setTrigger(Event("Breakpoint.Add", None))
  843. self.states["/Main/BreakpointManager/Listening"].addTransition(_Main_BreakpointManager_Listening_0)
  844. _Main_BreakpointManager_Listening_1 = Transition(self, self.states["/Main/BreakpointManager/Listening"], [self.states["/Main/BreakpointManager/Listening"]])
  845. _Main_BreakpointManager_Listening_1.setAction(self._Main_BreakpointManager_Listening_1_exec)
  846. _Main_BreakpointManager_Listening_1.setTrigger(Event("Breakpoint.Del", None))
  847. self.states["/Main/BreakpointManager/Listening"].addTransition(_Main_BreakpointManager_Listening_1)
  848. _Main_BreakpointManager_Listening_2 = Transition(self, self.states["/Main/BreakpointManager/Listening"], [self.states["/Main/BreakpointManager/Listening"]])
  849. _Main_BreakpointManager_Listening_2.setAction(self._Main_BreakpointManager_Listening_2_exec)
  850. _Main_BreakpointManager_Listening_2.setTrigger(Event("Breakpoint.Toggle", None))
  851. self.states["/Main/BreakpointManager/Listening"].addTransition(_Main_BreakpointManager_Listening_2)
  852. _Main_BreakpointManager_Listening_3 = Transition(self, self.states["/Main/BreakpointManager/Listening"], [self.states["/Main/BreakpointManager/Listening"]])
  853. _Main_BreakpointManager_Listening_3.setAction(self._Main_BreakpointManager_Listening_3_exec)
  854. _Main_BreakpointManager_Listening_3.setTrigger(Event("Breakpoint.List", None))
  855. self.states["/Main/BreakpointManager/Listening"].addTransition(_Main_BreakpointManager_Listening_3)
  856. # transition /Main/ModeSelector/Running
  857. _Main_ModeSelector_Running_0 = Transition(self, self.states["/Main/ModeSelector/Running"], [self.states["/Main/ModeSelector/Paused"]])
  858. _Main_ModeSelector_Running_0.setTrigger(Event("Simulation.Finished", None))
  859. self.states["/Main/ModeSelector/Running"].addTransition(_Main_ModeSelector_Running_0)
  860. _Main_ModeSelector_Running_1 = Transition(self, self.states["/Main/ModeSelector/Running"], [self.states["/Main/ModeSelector/Paused"]])
  861. _Main_ModeSelector_Running_1.setAction(self._Main_ModeSelector_Running_1_exec)
  862. _Main_ModeSelector_Running_1.setTrigger(None)
  863. _Main_ModeSelector_Running_1.setGuard(self._Main_ModeSelector_Running_1_guard)
  864. self.states["/Main/ModeSelector/Running"].addTransition(_Main_ModeSelector_Running_1)
  865. def _Main_Initializer_SettleBeforeWaiting_enter(self):
  866. self.addTimer(0, self.sccd_yield())
  867. def _Main_Initializer_SettleBeforeWaiting_exit(self):
  868. self.removeTimer(0)
  869. def _Main_SimulationFlow_SettleBeforeCheckTermination_enter(self):
  870. self.addTimer(1, self.sccd_yield())
  871. def _Main_SimulationFlow_SettleBeforeCheckTermination_exit(self):
  872. self.removeTimer(1)
  873. def _Main_SimulationFlow_WaitingRealtime_enter(self):
  874. self.addTimer(2, self.sccd_yield())
  875. def _Main_SimulationFlow_WaitingRealtime_exit(self):
  876. self.removeTimer(2)
  877. def _Main_ModeSelector_Running_1_exec(self, parameters):
  878. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("Breakpoint.Triggered", None, [self.triggered_bp, self.clock, self.state])]))
  879. def _Main_ModeSelector_Running_1_guard(self, parameters):
  880. return self.breakpointTriggers(self.inState(["/Main/ModeSelector/Running/Realtime"]))
  881. def _Main_ModeSelector_Paused_0_exec(self, parameters):
  882. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("SmallStep.Execute", None, [])]))
  883. def _Main_ModeSelector_Paused_1_exec(self, parameters):
  884. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("BigStep.Execute", None, [])]))
  885. def _Main_ModeSelector_Paused_3_exec(self, parameters):
  886. realtime_scale = parameters[0]
  887. self.realtime_scale = float(realtime_scale)
  888. # If the simulation was paused, we need to reset the start time of the simulation.
  889. # The start time of the simulation is equal to the point in wall-clock time where simulated time is 0.
  890. # If the simulation was paused, we have to recompute this point in time: it is the difference of the wall-clock time and the simulated time.
  891. # If the scale was changed after the pause, this point of course moves backwards (for scales smaller than 1) or forwards (for scales larger than 1)
  892. self.realtime_start_time = accurate_time.time() - (self.clock / self.realtime_scale)
  893. def _Main_ModeSelector_Paused_4_exec(self, parameters):
  894. clock = parameters[0]
  895. timeNext = parameters[1]
  896. elapsed = parameters[2]
  897. eventList = parameters[3]
  898. state = parameters[4]
  899. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("BigStep.Finished", None, [clock, timeNext, elapsed, eventList, state])]))
  900. def _Main_ModeSelector_Running_Realtime_1_exec(self, parameters):
  901. clock = parameters[0]
  902. timeNext = parameters[1]
  903. elapsed = parameters[2]
  904. eventList = parameters[3]
  905. state = parameters[4]
  906. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("BigStep.Finished", None, [clock, timeNext, elapsed, eventList, state])]))
  907. def _Main_ModeSelector_Running_BigStep_0_exec(self, parameters):
  908. clock = parameters[0]
  909. timeNext = parameters[1]
  910. elapsed = parameters[2]
  911. eventList = parameters[3]
  912. state = parameters[4]
  913. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("BigStep.Finished", None, [clock, timeNext, elapsed, eventList, state])]))
  914. def _Main_ModeSelector_Running_SmallStep_0_exec(self, parameters):
  915. selectedTransition = parameters[0]
  916. currentEvent = parameters[1]
  917. eventList = parameters[2]
  918. elapsed = parameters[3]
  919. state = parameters[4]
  920. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("SmallStep.Finished", None, [selectedTransition, currentEvent, eventList, elapsed, state])]))
  921. def _Main_ChildState_Initialized_0_exec(self, parameters):
  922. self.big_step.outputEventOM(Event("delete_instance", None, [self, 'child_simulator']))
  923. def _Main_Initializer_Waiting_0_exec(self, parameters):
  924. self.big_step.outputEventOM(Event("create_instance", None, [self, 'child_simulator', 'FSASimulator_BigStep', self.model, self.state, self.clock, self.elapsed, self.eventList, self.timeNext, self.delta]))
  925. def _Main_Initializer_Waiting_0_guard(self, parameters):
  926. return self.inState(["/Main/ModeSelector/Running"]) and self.inState(["/Main/ChildState/Uninitialized"]) and not self.endCondition()
  927. def _Main_Initializer_CreatingChildSimulator_0_exec(self, parameters):
  928. self.big_step.outputEventOM(Event("start_instance", None, [self, 'child_simulator']))
  929. def _Main_SimulationFlow_Started_0_exec(self, parameters):
  930. self.initialize()
  931. def _Main_SimulationFlow_InitializeDebugger_0_exec(self, parameters):
  932. self.initializeDebugger()
  933. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("Simulation.Initialized", None, [])]))
  934. def _Main_SimulationFlow_Waiting_0_guard(self, parameters):
  935. return self.inState(["/Main/ModeSelector/Running"])
  936. def _Main_SimulationFlow_SettleBeforeCheckTermination_1_exec(self, parameters):
  937. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("Simulation.Paused", None, [self.clock, self.state])]))
  938. def _Main_SimulationFlow_SettleBeforeCheckTermination_1_guard(self, parameters):
  939. return self.inState(["/Main/ModeSelector/Paused"])
  940. def _Main_SimulationFlow_CheckTermination_0_exec(self, parameters):
  941. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("BigStep.Execute", None, [])]))
  942. def _Main_SimulationFlow_CheckTermination_0_guard(self, parameters):
  943. return (self.inState(["/Main/ModeSelector/Running/Continuous"]) or self.inState(["/Main/ModeSelector/Running/BigStep"])) and self.inState(["/Main/ChildState/Initialized"]) and not self.endCondition()
  944. def _Main_SimulationFlow_CheckTermination_1_exec(self, parameters):
  945. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("SmallStep.Execute", None, [])]))
  946. def _Main_SimulationFlow_CheckTermination_1_guard(self, parameters):
  947. return self.inState(["/Main/ModeSelector/Running/SmallStep"]) and self.inState(["/Main/ChildState/Initialized"]) and not self.endCondition()
  948. def _Main_SimulationFlow_CheckTermination_2_guard(self, parameters):
  949. return self.inState(["/Main/ModeSelector/Running/Realtime"]) and self.inState(["/Main/ChildState/Initialized"]) and not self.endCondition()
  950. def _Main_SimulationFlow_CheckTermination_3_exec(self, parameters):
  951. # print '>>> simulation executed <<<'
  952. self.finalize()
  953. self.raiseInternalEvent(Event("Simulation.Finished", None, []))
  954. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("Simulation.Finished", None, [self.clock, self.state])]))
  955. def _Main_SimulationFlow_CheckTermination_3_guard(self, parameters):
  956. return self.endCondition()
  957. def _Main_SimulationFlow_WaitingRealtime_0_exec(self, parameters):
  958. self.syncSimulatedTime()
  959. def _Main_SimulationFlow_WaitingRealtime_0_guard(self, parameters):
  960. return self.inState(["/Main/ModeSelector/Running"])
  961. def _Main_SimulationFlow_WaitingRealtime_1_exec(self, parameters):
  962. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("Simulation.Paused", None, [self.clock, self.state])]))
  963. def _Main_SimulationFlow_WaitingRealtime_1_guard(self, parameters):
  964. return self.inState(["/Main/ModeSelector/Paused"]) and (not ((self.waitTime() / 1000.0) <= self.sccd_yield()))
  965. def _Main_SimulationFlow_WaitingRealtime_2_exec(self, parameters):
  966. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("BigStep.Execute", None, [])]))
  967. def _Main_SimulationFlow_WaitingRealtime_2_guard(self, parameters):
  968. return self.waitTime() / 1000.0 <= self.sccd_yield()
  969. def _Main_SimulationFlow_Executing_0_exec(self, parameters):
  970. clock = parameters[0]
  971. timeNext = parameters[1]
  972. elapsed = parameters[2]
  973. eventList = parameters[3]
  974. state = parameters[4]
  975. self.clock = clock
  976. self.timeNext = timeNext
  977. self.elapsed = elapsed
  978. self.eventList = eventList
  979. self.state = state
  980. def _Main_GodEventManager_Listening_0_exec(self, parameters):
  981. block_name = parameters[0]
  982. new_val = parameters[1]
  983. result = self.godEvent(block_name, new_val)
  984. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("Simulation.GodEventResult", None, [result])]))
  985. def _Main_GodEventManager_Listening_0_guard(self, parameters):
  986. block_name = parameters[0]
  987. new_val = parameters[1]
  988. return self.inState(["/Main/ModeSelector/Paused"])
  989. def _Main_BreakpointManager_Listening_0_exec(self, parameters):
  990. name = parameters[0]
  991. function = parameters[1]
  992. enabled = parameters[2]
  993. disable_on_trigger = parameters[3]
  994. result = self.addBreakpoint(name, function, bool(enabled), bool(disable_on_trigger))
  995. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("Breakpoint.AddResult", None, [result])]))
  996. def _Main_BreakpointManager_Listening_1_exec(self, parameters):
  997. name = parameters[0]
  998. result = self.delBreakpoint(name)
  999. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("Breakpoint.DelResult", None, [result])]))
  1000. def _Main_BreakpointManager_Listening_2_exec(self, parameters):
  1001. name = parameters[0]
  1002. result = self.toggleBreakpoint(name)
  1003. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("Breakpoint.ToggleResult", None, [result])]))
  1004. def _Main_BreakpointManager_Listening_3_exec(self, parameters):
  1005. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("Breakpoint.ListResult", None, [[bp.name for bp in self.breakpoints]])]))
  1006. def initializeStatechart(self):
  1007. # enter default state
  1008. self.default_targets = self.states["/Main"].getEffectiveTargetStates()
  1009. RuntimeClassBase.initializeStatechart(self)
  1010. class FSASimulator_BigStep(RuntimeClassBase):
  1011. def __init__(self, controller, model, state, clock, elapsed, eventList, timeNext, delta):
  1012. RuntimeClassBase.__init__(self, controller)
  1013. self.semantics.big_step_maximality = StatechartSemantics.TakeMany
  1014. self.semantics.internal_event_lifeline = StatechartSemantics.Queue
  1015. self.semantics.input_event_lifeline = StatechartSemantics.FirstComboStep
  1016. self.semantics.priority = StatechartSemantics.SourceParent
  1017. self.semantics.concurrency = StatechartSemantics.Single
  1018. # build Statechart structure
  1019. self.build_statechart_structure()
  1020. # call user defined constructor
  1021. FSASimulator_BigStep.user_defined_constructor(self, model, state, clock, elapsed, eventList, timeNext, delta)
  1022. def user_defined_constructor(self, model, state, clock, elapsed, eventList, timeNext, delta):
  1023. self.model = model
  1024. self.state = state
  1025. self.clock = clock
  1026. self.elapsed = elapsed
  1027. self.eventList = eventList
  1028. self.timeNext = timeNext
  1029. self.delta = delta
  1030. def user_defined_destructor(self):
  1031. pass
  1032. # user defined method
  1033. def initialize(self):
  1034. self.currentEvent = self.getInputEventAt(self.clock / 1000.0)
  1035. self.selectedTransition = self.model.getTransitionFrom(self.state, self.currentEvent, self.elapsed)
  1036. self.small_step_executed = False
  1037. # user defined method
  1038. def initializeDebugger(self):
  1039. pass
  1040. # user defined method
  1041. def endCondition(self):
  1042. ''' We make sure to "execute" a small step, even if no transition was selected. '''
  1043. return self.small_step_executed and self.selectedTransition == None
  1044. # user defined method
  1045. def finalize(self):
  1046. self.advanceTime()
  1047. # user defined method
  1048. def advanceTime(self):
  1049. self.clock = self.timeNext
  1050. self.elapsed = self.elapsed + self.delta
  1051. self.timeNext = self.clock + self.delta
  1052. # user defined method
  1053. def getInputEventAt(self, time):
  1054. return self.eventList.getInputAt(time)
  1055. # builds Statechart structure
  1056. def build_statechart_structure(self):
  1057. # state <root>
  1058. self.states[""] = State(0, "", self)
  1059. # state /Main
  1060. self.states["/Main"] = ParallelState(1, "/Main", self)
  1061. # state /Main/ModeSelector
  1062. self.states["/Main/ModeSelector"] = State(2, "/Main/ModeSelector", self)
  1063. # state /Main/ModeSelector/Paused
  1064. self.states["/Main/ModeSelector/Paused"] = State(3, "/Main/ModeSelector/Paused", self)
  1065. # state /Main/ModeSelector/Running
  1066. self.states["/Main/ModeSelector/Running"] = State(4, "/Main/ModeSelector/Running", self)
  1067. # state /Main/ModeSelector/Running/Continuous
  1068. self.states["/Main/ModeSelector/Running/Continuous"] = State(5, "/Main/ModeSelector/Running/Continuous", self)
  1069. # state /Main/ModeSelector/Running/SmallStep
  1070. self.states["/Main/ModeSelector/Running/SmallStep"] = State(6, "/Main/ModeSelector/Running/SmallStep", self)
  1071. # state /Main/ChildState
  1072. self.states["/Main/ChildState"] = State(7, "/Main/ChildState", self)
  1073. # state /Main/ChildState/Uninitialized
  1074. self.states["/Main/ChildState/Uninitialized"] = State(8, "/Main/ChildState/Uninitialized", self)
  1075. # state /Main/ChildState/Initialized
  1076. self.states["/Main/ChildState/Initialized"] = State(9, "/Main/ChildState/Initialized", self)
  1077. # state /Main/Initializer
  1078. self.states["/Main/Initializer"] = State(10, "/Main/Initializer", self)
  1079. # state /Main/Initializer/Waiting
  1080. self.states["/Main/Initializer/Waiting"] = State(11, "/Main/Initializer/Waiting", self)
  1081. # state /Main/Initializer/CreatingChildSimulator
  1082. self.states["/Main/Initializer/CreatingChildSimulator"] = State(12, "/Main/Initializer/CreatingChildSimulator", self)
  1083. # state /Main/Initializer/StartingChildSimulator
  1084. self.states["/Main/Initializer/StartingChildSimulator"] = State(13, "/Main/Initializer/StartingChildSimulator", self)
  1085. # state /Main/Initializer/Running
  1086. self.states["/Main/Initializer/Running"] = State(14, "/Main/Initializer/Running", self)
  1087. # state /Main/Initializer/SettleBeforeWaiting
  1088. self.states["/Main/Initializer/SettleBeforeWaiting"] = State(15, "/Main/Initializer/SettleBeforeWaiting", self)
  1089. self.states["/Main/Initializer/SettleBeforeWaiting"].setEnter(self._Main_Initializer_SettleBeforeWaiting_enter)
  1090. self.states["/Main/Initializer/SettleBeforeWaiting"].setExit(self._Main_Initializer_SettleBeforeWaiting_exit)
  1091. # state /Main/SimulationFlow
  1092. self.states["/Main/SimulationFlow"] = State(16, "/Main/SimulationFlow", self)
  1093. # state /Main/SimulationFlow/Started
  1094. self.states["/Main/SimulationFlow/Started"] = State(17, "/Main/SimulationFlow/Started", self)
  1095. # state /Main/SimulationFlow/Initialized
  1096. self.states["/Main/SimulationFlow/Initialized"] = State(18, "/Main/SimulationFlow/Initialized", self)
  1097. # state /Main/SimulationFlow/InitializeDebugger
  1098. self.states["/Main/SimulationFlow/InitializeDebugger"] = State(19, "/Main/SimulationFlow/InitializeDebugger", self)
  1099. # state /Main/SimulationFlow/Waiting
  1100. self.states["/Main/SimulationFlow/Waiting"] = State(20, "/Main/SimulationFlow/Waiting", self)
  1101. # state /Main/SimulationFlow/SettleBeforeCheckTermination
  1102. self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"] = State(21, "/Main/SimulationFlow/SettleBeforeCheckTermination", self)
  1103. self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"].setEnter(self._Main_SimulationFlow_SettleBeforeCheckTermination_enter)
  1104. self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"].setExit(self._Main_SimulationFlow_SettleBeforeCheckTermination_exit)
  1105. # state /Main/SimulationFlow/CheckTermination
  1106. self.states["/Main/SimulationFlow/CheckTermination"] = State(22, "/Main/SimulationFlow/CheckTermination", self)
  1107. # state /Main/SimulationFlow/Executing
  1108. self.states["/Main/SimulationFlow/Executing"] = State(23, "/Main/SimulationFlow/Executing", self)
  1109. # state /Main/SimulationFlow/Stopped
  1110. self.states["/Main/SimulationFlow/Stopped"] = State(24, "/Main/SimulationFlow/Stopped", self)
  1111. # state /Stopped
  1112. self.states["/Stopped"] = State(25, "/Stopped", self)
  1113. # add children
  1114. self.states[""].addChild(self.states["/Main"])
  1115. self.states[""].addChild(self.states["/Stopped"])
  1116. self.states["/Main"].addChild(self.states["/Main/ModeSelector"])
  1117. self.states["/Main"].addChild(self.states["/Main/ChildState"])
  1118. self.states["/Main"].addChild(self.states["/Main/Initializer"])
  1119. self.states["/Main"].addChild(self.states["/Main/SimulationFlow"])
  1120. self.states["/Main/ModeSelector"].addChild(self.states["/Main/ModeSelector/Paused"])
  1121. self.states["/Main/ModeSelector"].addChild(self.states["/Main/ModeSelector/Running"])
  1122. self.states["/Main/ModeSelector/Running"].addChild(self.states["/Main/ModeSelector/Running/Continuous"])
  1123. self.states["/Main/ModeSelector/Running"].addChild(self.states["/Main/ModeSelector/Running/SmallStep"])
  1124. self.states["/Main/ChildState"].addChild(self.states["/Main/ChildState/Uninitialized"])
  1125. self.states["/Main/ChildState"].addChild(self.states["/Main/ChildState/Initialized"])
  1126. self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/Waiting"])
  1127. self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/CreatingChildSimulator"])
  1128. self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/StartingChildSimulator"])
  1129. self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/Running"])
  1130. self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/SettleBeforeWaiting"])
  1131. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Started"])
  1132. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Initialized"])
  1133. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/InitializeDebugger"])
  1134. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Waiting"])
  1135. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"])
  1136. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/CheckTermination"])
  1137. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Executing"])
  1138. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Stopped"])
  1139. self.states[""].fixTree()
  1140. self.states[""].default_state = self.states["/Main"]
  1141. self.states["/Main/ModeSelector"].default_state = self.states["/Main/ModeSelector/Paused"]
  1142. self.states["/Main/ModeSelector/Running"].default_state = self.states["/Main/ModeSelector/Running/Continuous"]
  1143. self.states["/Main/ChildState"].default_state = self.states["/Main/ChildState/Uninitialized"]
  1144. self.states["/Main/Initializer"].default_state = self.states["/Main/Initializer/Waiting"]
  1145. self.states["/Main/SimulationFlow"].default_state = self.states["/Main/SimulationFlow/Started"]
  1146. # transition /Main/ModeSelector/Paused
  1147. _Main_ModeSelector_Paused_0 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Running/SmallStep"]])
  1148. _Main_ModeSelector_Paused_0.setAction(self._Main_ModeSelector_Paused_0_exec)
  1149. _Main_ModeSelector_Paused_0.setTrigger(Event("SmallStep.Execute", None))
  1150. self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_0)
  1151. _Main_ModeSelector_Paused_1 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Running/Continuous"]])
  1152. _Main_ModeSelector_Paused_1.setTrigger(Event("BigStep.Execute", None))
  1153. self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_1)
  1154. # transition /Main/ModeSelector/Running/SmallStep
  1155. _Main_ModeSelector_Running_SmallStep_0 = Transition(self, self.states["/Main/ModeSelector/Running/SmallStep"], [self.states["/Main/ModeSelector/Paused"]])
  1156. _Main_ModeSelector_Running_SmallStep_0.setAction(self._Main_ModeSelector_Running_SmallStep_0_exec)
  1157. _Main_ModeSelector_Running_SmallStep_0.setTrigger(Event("SmallStep.Finished", None))
  1158. self.states["/Main/ModeSelector/Running/SmallStep"].addTransition(_Main_ModeSelector_Running_SmallStep_0)
  1159. # transition /Main/ChildState/Uninitialized
  1160. _Main_ChildState_Uninitialized_0 = Transition(self, self.states["/Main/ChildState/Uninitialized"], [self.states["/Main/ChildState/Initialized"]])
  1161. _Main_ChildState_Uninitialized_0.setTrigger(Event("SmallStep.Initialized", None))
  1162. self.states["/Main/ChildState/Uninitialized"].addTransition(_Main_ChildState_Uninitialized_0)
  1163. # transition /Main/ChildState/Initialized
  1164. _Main_ChildState_Initialized_0 = Transition(self, self.states["/Main/ChildState/Initialized"], [self.states["/Main/ChildState/Uninitialized"]])
  1165. _Main_ChildState_Initialized_0.setAction(self._Main_ChildState_Initialized_0_exec)
  1166. _Main_ChildState_Initialized_0.setTrigger(Event("SmallStep.Finished", None))
  1167. self.states["/Main/ChildState/Initialized"].addTransition(_Main_ChildState_Initialized_0)
  1168. # transition /Main/Initializer/Waiting
  1169. _Main_Initializer_Waiting_0 = Transition(self, self.states["/Main/Initializer/Waiting"], [self.states["/Main/Initializer/CreatingChildSimulator"]])
  1170. _Main_Initializer_Waiting_0.setAction(self._Main_Initializer_Waiting_0_exec)
  1171. _Main_Initializer_Waiting_0.setTrigger(None)
  1172. _Main_Initializer_Waiting_0.setGuard(self._Main_Initializer_Waiting_0_guard)
  1173. self.states["/Main/Initializer/Waiting"].addTransition(_Main_Initializer_Waiting_0)
  1174. # transition /Main/Initializer/CreatingChildSimulator
  1175. _Main_Initializer_CreatingChildSimulator_0 = Transition(self, self.states["/Main/Initializer/CreatingChildSimulator"], [self.states["/Main/Initializer/StartingChildSimulator"]])
  1176. _Main_Initializer_CreatingChildSimulator_0.setAction(self._Main_Initializer_CreatingChildSimulator_0_exec)
  1177. _Main_Initializer_CreatingChildSimulator_0.setTrigger(Event("instance_created", None))
  1178. self.states["/Main/Initializer/CreatingChildSimulator"].addTransition(_Main_Initializer_CreatingChildSimulator_0)
  1179. # transition /Main/Initializer/StartingChildSimulator
  1180. _Main_Initializer_StartingChildSimulator_0 = Transition(self, self.states["/Main/Initializer/StartingChildSimulator"], [self.states["/Main/Initializer/Running"]])
  1181. _Main_Initializer_StartingChildSimulator_0.setTrigger(Event("SmallStep.Initialized", None))
  1182. self.states["/Main/Initializer/StartingChildSimulator"].addTransition(_Main_Initializer_StartingChildSimulator_0)
  1183. # transition /Main/Initializer/Running
  1184. _Main_Initializer_Running_0 = Transition(self, self.states["/Main/Initializer/Running"], [self.states["/Main/Initializer/SettleBeforeWaiting"]])
  1185. _Main_Initializer_Running_0.setTrigger(Event("SmallStep.Finished", None))
  1186. self.states["/Main/Initializer/Running"].addTransition(_Main_Initializer_Running_0)
  1187. # transition /Main/Initializer/SettleBeforeWaiting
  1188. _Main_Initializer_SettleBeforeWaiting_0 = Transition(self, self.states["/Main/Initializer/SettleBeforeWaiting"], [self.states["/Main/Initializer/Waiting"]])
  1189. _Main_Initializer_SettleBeforeWaiting_0.setTrigger(Event("_0after"))
  1190. self.states["/Main/Initializer/SettleBeforeWaiting"].addTransition(_Main_Initializer_SettleBeforeWaiting_0)
  1191. # transition /Main/SimulationFlow/Started
  1192. _Main_SimulationFlow_Started_0 = Transition(self, self.states["/Main/SimulationFlow/Started"], [self.states["/Main/SimulationFlow/Initialized"]])
  1193. _Main_SimulationFlow_Started_0.setAction(self._Main_SimulationFlow_Started_0_exec)
  1194. _Main_SimulationFlow_Started_0.setTrigger(None)
  1195. self.states["/Main/SimulationFlow/Started"].addTransition(_Main_SimulationFlow_Started_0)
  1196. # transition /Main/SimulationFlow/Initialized
  1197. _Main_SimulationFlow_Initialized_0 = Transition(self, self.states["/Main/SimulationFlow/Initialized"], [self.states["/Main/SimulationFlow/InitializeDebugger"]])
  1198. _Main_SimulationFlow_Initialized_0.setTrigger(None)
  1199. self.states["/Main/SimulationFlow/Initialized"].addTransition(_Main_SimulationFlow_Initialized_0)
  1200. # transition /Main/SimulationFlow/InitializeDebugger
  1201. _Main_SimulationFlow_InitializeDebugger_0 = Transition(self, self.states["/Main/SimulationFlow/InitializeDebugger"], [self.states["/Main/SimulationFlow/Waiting"]])
  1202. _Main_SimulationFlow_InitializeDebugger_0.setAction(self._Main_SimulationFlow_InitializeDebugger_0_exec)
  1203. _Main_SimulationFlow_InitializeDebugger_0.setTrigger(None)
  1204. self.states["/Main/SimulationFlow/InitializeDebugger"].addTransition(_Main_SimulationFlow_InitializeDebugger_0)
  1205. # transition /Main/SimulationFlow/Waiting
  1206. _Main_SimulationFlow_Waiting_0 = Transition(self, self.states["/Main/SimulationFlow/Waiting"], [self.states["/Main/SimulationFlow/CheckTermination"]])
  1207. _Main_SimulationFlow_Waiting_0.setTrigger(None)
  1208. _Main_SimulationFlow_Waiting_0.setGuard(self._Main_SimulationFlow_Waiting_0_guard)
  1209. self.states["/Main/SimulationFlow/Waiting"].addTransition(_Main_SimulationFlow_Waiting_0)
  1210. # transition /Main/SimulationFlow/SettleBeforeCheckTermination
  1211. _Main_SimulationFlow_SettleBeforeCheckTermination_0 = Transition(self, self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"], [self.states["/Main/SimulationFlow/CheckTermination"]])
  1212. _Main_SimulationFlow_SettleBeforeCheckTermination_0.setTrigger(Event("_1after"))
  1213. self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"].addTransition(_Main_SimulationFlow_SettleBeforeCheckTermination_0)
  1214. # transition /Main/SimulationFlow/CheckTermination
  1215. _Main_SimulationFlow_CheckTermination_0 = Transition(self, self.states["/Main/SimulationFlow/CheckTermination"], [self.states["/Main/SimulationFlow/Executing"]])
  1216. _Main_SimulationFlow_CheckTermination_0.setAction(self._Main_SimulationFlow_CheckTermination_0_exec)
  1217. _Main_SimulationFlow_CheckTermination_0.setTrigger(None)
  1218. _Main_SimulationFlow_CheckTermination_0.setGuard(self._Main_SimulationFlow_CheckTermination_0_guard)
  1219. self.states["/Main/SimulationFlow/CheckTermination"].addTransition(_Main_SimulationFlow_CheckTermination_0)
  1220. _Main_SimulationFlow_CheckTermination_1 = Transition(self, self.states["/Main/SimulationFlow/CheckTermination"], [self.states["/Main/SimulationFlow/Stopped"]])
  1221. _Main_SimulationFlow_CheckTermination_1.setAction(self._Main_SimulationFlow_CheckTermination_1_exec)
  1222. _Main_SimulationFlow_CheckTermination_1.setTrigger(None)
  1223. _Main_SimulationFlow_CheckTermination_1.setGuard(self._Main_SimulationFlow_CheckTermination_1_guard)
  1224. self.states["/Main/SimulationFlow/CheckTermination"].addTransition(_Main_SimulationFlow_CheckTermination_1)
  1225. # transition /Main/SimulationFlow/Executing
  1226. _Main_SimulationFlow_Executing_0 = Transition(self, self.states["/Main/SimulationFlow/Executing"], [self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"]])
  1227. _Main_SimulationFlow_Executing_0.setAction(self._Main_SimulationFlow_Executing_0_exec)
  1228. _Main_SimulationFlow_Executing_0.setTrigger(Event("SmallStep.Finished", None))
  1229. self.states["/Main/SimulationFlow/Executing"].addTransition(_Main_SimulationFlow_Executing_0)
  1230. # transition /Main/ModeSelector/Running
  1231. _Main_ModeSelector_Running_0 = Transition(self, self.states["/Main/ModeSelector/Running"], [self.states["/Main/ModeSelector/Paused"]])
  1232. _Main_ModeSelector_Running_0.setTrigger(Event("BigStep.Finished", None))
  1233. self.states["/Main/ModeSelector/Running"].addTransition(_Main_ModeSelector_Running_0)
  1234. def _Main_Initializer_SettleBeforeWaiting_enter(self):
  1235. self.addTimer(0, self.sccd_yield())
  1236. def _Main_Initializer_SettleBeforeWaiting_exit(self):
  1237. self.removeTimer(0)
  1238. def _Main_SimulationFlow_SettleBeforeCheckTermination_enter(self):
  1239. self.addTimer(1, self.sccd_yield())
  1240. def _Main_SimulationFlow_SettleBeforeCheckTermination_exit(self):
  1241. self.removeTimer(1)
  1242. def _Main_ModeSelector_Paused_0_exec(self, parameters):
  1243. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("SmallStep.Execute", None, [])]))
  1244. def _Main_ModeSelector_Running_SmallStep_0_exec(self, parameters):
  1245. selectedTransition = parameters[0]
  1246. currentEvent = parameters[1]
  1247. eventList = parameters[2]
  1248. elapsed = parameters[3]
  1249. newState = parameters[4]
  1250. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("SmallStep.Finished", None, [selectedTransition, currentEvent, eventList, elapsed, newState])]))
  1251. def _Main_ChildState_Initialized_0_exec(self, parameters):
  1252. self.big_step.outputEventOM(Event("delete_instance", None, [self, 'child_simulator']))
  1253. def _Main_Initializer_Waiting_0_exec(self, parameters):
  1254. self.big_step.outputEventOM(Event("create_instance", None, [self, 'child_simulator', 'FSASimulator_SmallStep', self.model, self.state, self.clock, self.elapsed, self.selectedTransition, self.currentEvent, self.eventList]))
  1255. def _Main_Initializer_Waiting_0_guard(self, parameters):
  1256. return self.inState(["/Main/ModeSelector/Running"]) and self.inState(["/Main/ChildState/Uninitialized"]) and not self.endCondition()
  1257. def _Main_Initializer_CreatingChildSimulator_0_exec(self, parameters):
  1258. self.big_step.outputEventOM(Event("start_instance", None, [self, 'child_simulator']))
  1259. def _Main_SimulationFlow_Started_0_exec(self, parameters):
  1260. self.initialize()
  1261. def _Main_SimulationFlow_InitializeDebugger_0_exec(self, parameters):
  1262. self.initializeDebugger()
  1263. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("BigStep.Initialized", None, [])]))
  1264. def _Main_SimulationFlow_Waiting_0_guard(self, parameters):
  1265. return self.inState(["/Main/ModeSelector/Running"])
  1266. def _Main_SimulationFlow_CheckTermination_0_exec(self, parameters):
  1267. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("SmallStep.Execute", None, [])]))
  1268. def _Main_SimulationFlow_CheckTermination_0_guard(self, parameters):
  1269. return (self.inState(["/Main/ModeSelector/Running/Continuous"]) or self.inState(["/Main/ModeSelector/Running/SmallStep"])) and self.inState(["/Main/ChildState/Initialized"]) and not self.endCondition()
  1270. def _Main_SimulationFlow_CheckTermination_1_exec(self, parameters):
  1271. # print '>>> big step executed <<<'
  1272. self.finalize()
  1273. self.raiseInternalEvent(Event("BigStep.Finished", None, []))
  1274. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("BigStep.Finished", None, [self.clock, self.timeNext, self.elapsed, self.eventList, self.state])]))
  1275. def _Main_SimulationFlow_CheckTermination_1_guard(self, parameters):
  1276. return self.endCondition()
  1277. def _Main_SimulationFlow_Executing_0_exec(self, parameters):
  1278. selectedTransition = parameters[0]
  1279. currentEvent = parameters[1]
  1280. eventList = parameters[2]
  1281. elapsed = parameters[3]
  1282. newState = parameters[4]
  1283. self.selectedTransition = selectedTransition
  1284. self.currentEvent = currentEvent
  1285. self.eventList = eventList
  1286. self.elapsed = elapsed
  1287. self.state = newState
  1288. self.small_step_executed = True
  1289. def initializeStatechart(self):
  1290. # enter default state
  1291. self.default_targets = self.states["/Main"].getEffectiveTargetStates()
  1292. RuntimeClassBase.initializeStatechart(self)
  1293. class FSASimulator_SmallStep(RuntimeClassBase):
  1294. def __init__(self, controller, model, state, clock, elapsed, selectedTransition, currentEvent, eventList):
  1295. RuntimeClassBase.__init__(self, controller)
  1296. self.semantics.big_step_maximality = StatechartSemantics.TakeMany
  1297. self.semantics.internal_event_lifeline = StatechartSemantics.Queue
  1298. self.semantics.input_event_lifeline = StatechartSemantics.FirstComboStep
  1299. self.semantics.priority = StatechartSemantics.SourceParent
  1300. self.semantics.concurrency = StatechartSemantics.Single
  1301. # build Statechart structure
  1302. self.build_statechart_structure()
  1303. # call user defined constructor
  1304. FSASimulator_SmallStep.user_defined_constructor(self, model, state, clock, elapsed, selectedTransition, currentEvent, eventList)
  1305. def user_defined_constructor(self, model, state, clock, elapsed, selectedTransition, currentEvent, eventList):
  1306. self.model = model
  1307. self.state = state
  1308. self.clock = clock
  1309. self.elapsed = elapsed
  1310. self.selectedTransition = selectedTransition
  1311. self.currentEvent = currentEvent
  1312. self.eventList = eventList
  1313. def user_defined_destructor(self):
  1314. pass
  1315. # user defined method
  1316. def initialize(self):
  1317. self.small_step_executed = False
  1318. # user defined method
  1319. def initializeDebugger(self):
  1320. pass
  1321. # user defined method
  1322. def endCondition(self):
  1323. ''' In case nothing is to be done, we immediately end. '''
  1324. return not self.selectedTransition or self.small_step_executed
  1325. # user defined method
  1326. def finalize(self):
  1327. self.elapsed = 0
  1328. self.processEvent(self.currentEvent)
  1329. self.currentEvent = self.getInputEventAt(self.clock / 1000.0)
  1330. self.selectedTransition = self.model.getTransitionFrom(self.state, self.currentEvent, self.elapsed)
  1331. # user defined method
  1332. def processEvent(self, event):
  1333. if (event != None):
  1334. self.eventList.popEvent(event)
  1335. event.processed = True
  1336. # user defined method
  1337. def getInputEventAt(self, time):
  1338. return self.eventList.getInputAt(time)
  1339. # builds Statechart structure
  1340. def build_statechart_structure(self):
  1341. # state <root>
  1342. self.states[""] = State(0, "", self)
  1343. # state /Main
  1344. self.states["/Main"] = ParallelState(1, "/Main", self)
  1345. # state /Main/ModeSelector
  1346. self.states["/Main/ModeSelector"] = State(2, "/Main/ModeSelector", self)
  1347. # state /Main/ModeSelector/Paused
  1348. self.states["/Main/ModeSelector/Paused"] = State(3, "/Main/ModeSelector/Paused", self)
  1349. # state /Main/ModeSelector/Running
  1350. self.states["/Main/ModeSelector/Running"] = State(4, "/Main/ModeSelector/Running", self)
  1351. # state /Main/ModeSelector/Running/Continuous
  1352. self.states["/Main/ModeSelector/Running/Continuous"] = State(5, "/Main/ModeSelector/Running/Continuous", self)
  1353. # state /Main/ChildState
  1354. self.states["/Main/ChildState"] = State(6, "/Main/ChildState", self)
  1355. # state /Main/ChildState/Uninitialized
  1356. self.states["/Main/ChildState/Uninitialized"] = State(7, "/Main/ChildState/Uninitialized", self)
  1357. # state /Main/ChildState/Initialized
  1358. self.states["/Main/ChildState/Initialized"] = State(8, "/Main/ChildState/Initialized", self)
  1359. # state /Main/Initializer
  1360. self.states["/Main/Initializer"] = State(9, "/Main/Initializer", self)
  1361. # state /Main/Initializer/Waiting
  1362. self.states["/Main/Initializer/Waiting"] = State(10, "/Main/Initializer/Waiting", self)
  1363. # state /Main/Initializer/CreatingChildSimulator
  1364. self.states["/Main/Initializer/CreatingChildSimulator"] = State(11, "/Main/Initializer/CreatingChildSimulator", self)
  1365. # state /Main/Initializer/StartingChildSimulator
  1366. self.states["/Main/Initializer/StartingChildSimulator"] = State(12, "/Main/Initializer/StartingChildSimulator", self)
  1367. # state /Main/Initializer/Running
  1368. self.states["/Main/Initializer/Running"] = State(13, "/Main/Initializer/Running", self)
  1369. # state /Main/Initializer/SettleBeforeWaiting
  1370. self.states["/Main/Initializer/SettleBeforeWaiting"] = State(14, "/Main/Initializer/SettleBeforeWaiting", self)
  1371. self.states["/Main/Initializer/SettleBeforeWaiting"].setEnter(self._Main_Initializer_SettleBeforeWaiting_enter)
  1372. self.states["/Main/Initializer/SettleBeforeWaiting"].setExit(self._Main_Initializer_SettleBeforeWaiting_exit)
  1373. # state /Main/SimulationFlow
  1374. self.states["/Main/SimulationFlow"] = State(15, "/Main/SimulationFlow", self)
  1375. # state /Main/SimulationFlow/Started
  1376. self.states["/Main/SimulationFlow/Started"] = State(16, "/Main/SimulationFlow/Started", self)
  1377. # state /Main/SimulationFlow/Initialized
  1378. self.states["/Main/SimulationFlow/Initialized"] = State(17, "/Main/SimulationFlow/Initialized", self)
  1379. # state /Main/SimulationFlow/InitializeDebugger
  1380. self.states["/Main/SimulationFlow/InitializeDebugger"] = State(18, "/Main/SimulationFlow/InitializeDebugger", self)
  1381. # state /Main/SimulationFlow/Waiting
  1382. self.states["/Main/SimulationFlow/Waiting"] = State(19, "/Main/SimulationFlow/Waiting", self)
  1383. # state /Main/SimulationFlow/SettleBeforeCheckTermination
  1384. self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"] = State(20, "/Main/SimulationFlow/SettleBeforeCheckTermination", self)
  1385. self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"].setEnter(self._Main_SimulationFlow_SettleBeforeCheckTermination_enter)
  1386. self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"].setExit(self._Main_SimulationFlow_SettleBeforeCheckTermination_exit)
  1387. # state /Main/SimulationFlow/CheckTermination
  1388. self.states["/Main/SimulationFlow/CheckTermination"] = State(21, "/Main/SimulationFlow/CheckTermination", self)
  1389. # state /Main/SimulationFlow/Executing
  1390. self.states["/Main/SimulationFlow/Executing"] = State(22, "/Main/SimulationFlow/Executing", self)
  1391. # state /Main/SimulationFlow/Stopped
  1392. self.states["/Main/SimulationFlow/Stopped"] = State(23, "/Main/SimulationFlow/Stopped", self)
  1393. # state /Stopped
  1394. self.states["/Stopped"] = State(24, "/Stopped", self)
  1395. # add children
  1396. self.states[""].addChild(self.states["/Main"])
  1397. self.states[""].addChild(self.states["/Stopped"])
  1398. self.states["/Main"].addChild(self.states["/Main/ModeSelector"])
  1399. self.states["/Main"].addChild(self.states["/Main/ChildState"])
  1400. self.states["/Main"].addChild(self.states["/Main/Initializer"])
  1401. self.states["/Main"].addChild(self.states["/Main/SimulationFlow"])
  1402. self.states["/Main/ModeSelector"].addChild(self.states["/Main/ModeSelector/Paused"])
  1403. self.states["/Main/ModeSelector"].addChild(self.states["/Main/ModeSelector/Running"])
  1404. self.states["/Main/ModeSelector/Running"].addChild(self.states["/Main/ModeSelector/Running/Continuous"])
  1405. self.states["/Main/ChildState"].addChild(self.states["/Main/ChildState/Uninitialized"])
  1406. self.states["/Main/ChildState"].addChild(self.states["/Main/ChildState/Initialized"])
  1407. self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/Waiting"])
  1408. self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/CreatingChildSimulator"])
  1409. self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/StartingChildSimulator"])
  1410. self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/Running"])
  1411. self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/SettleBeforeWaiting"])
  1412. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Started"])
  1413. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Initialized"])
  1414. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/InitializeDebugger"])
  1415. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Waiting"])
  1416. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"])
  1417. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/CheckTermination"])
  1418. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Executing"])
  1419. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Stopped"])
  1420. self.states[""].fixTree()
  1421. self.states[""].default_state = self.states["/Main"]
  1422. self.states["/Main/ModeSelector"].default_state = self.states["/Main/ModeSelector/Paused"]
  1423. self.states["/Main/ModeSelector/Running"].default_state = self.states["/Main/ModeSelector/Running/Continuous"]
  1424. self.states["/Main/ChildState"].default_state = self.states["/Main/ChildState/Uninitialized"]
  1425. self.states["/Main/Initializer"].default_state = self.states["/Main/Initializer/Waiting"]
  1426. self.states["/Main/SimulationFlow"].default_state = self.states["/Main/SimulationFlow/Started"]
  1427. # transition /Main/ModeSelector/Paused
  1428. _Main_ModeSelector_Paused_0 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Running/Continuous"]])
  1429. _Main_ModeSelector_Paused_0.setTrigger(Event("SmallStep.Execute", None))
  1430. self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_0)
  1431. # transition /Main/ChildState/Uninitialized
  1432. _Main_ChildState_Uninitialized_0 = Transition(self, self.states["/Main/ChildState/Uninitialized"], [self.states["/Main/ChildState/Initialized"]])
  1433. _Main_ChildState_Uninitialized_0.setTrigger(Event("Transition.Initialized", None))
  1434. self.states["/Main/ChildState/Uninitialized"].addTransition(_Main_ChildState_Uninitialized_0)
  1435. # transition /Main/ChildState/Initialized
  1436. _Main_ChildState_Initialized_0 = Transition(self, self.states["/Main/ChildState/Initialized"], [self.states["/Main/ChildState/Uninitialized"]])
  1437. _Main_ChildState_Initialized_0.setAction(self._Main_ChildState_Initialized_0_exec)
  1438. _Main_ChildState_Initialized_0.setTrigger(Event("Transition.Finished", None))
  1439. self.states["/Main/ChildState/Initialized"].addTransition(_Main_ChildState_Initialized_0)
  1440. # transition /Main/Initializer/Waiting
  1441. _Main_Initializer_Waiting_0 = Transition(self, self.states["/Main/Initializer/Waiting"], [self.states["/Main/Initializer/CreatingChildSimulator"]])
  1442. _Main_Initializer_Waiting_0.setAction(self._Main_Initializer_Waiting_0_exec)
  1443. _Main_Initializer_Waiting_0.setTrigger(None)
  1444. _Main_Initializer_Waiting_0.setGuard(self._Main_Initializer_Waiting_0_guard)
  1445. self.states["/Main/Initializer/Waiting"].addTransition(_Main_Initializer_Waiting_0)
  1446. # transition /Main/Initializer/CreatingChildSimulator
  1447. _Main_Initializer_CreatingChildSimulator_0 = Transition(self, self.states["/Main/Initializer/CreatingChildSimulator"], [self.states["/Main/Initializer/StartingChildSimulator"]])
  1448. _Main_Initializer_CreatingChildSimulator_0.setAction(self._Main_Initializer_CreatingChildSimulator_0_exec)
  1449. _Main_Initializer_CreatingChildSimulator_0.setTrigger(Event("instance_created", None))
  1450. self.states["/Main/Initializer/CreatingChildSimulator"].addTransition(_Main_Initializer_CreatingChildSimulator_0)
  1451. # transition /Main/Initializer/StartingChildSimulator
  1452. _Main_Initializer_StartingChildSimulator_0 = Transition(self, self.states["/Main/Initializer/StartingChildSimulator"], [self.states["/Main/Initializer/Running"]])
  1453. _Main_Initializer_StartingChildSimulator_0.setTrigger(Event("Transition.Initialized", None))
  1454. self.states["/Main/Initializer/StartingChildSimulator"].addTransition(_Main_Initializer_StartingChildSimulator_0)
  1455. # transition /Main/Initializer/Running
  1456. _Main_Initializer_Running_0 = Transition(self, self.states["/Main/Initializer/Running"], [self.states["/Main/Initializer/SettleBeforeWaiting"]])
  1457. _Main_Initializer_Running_0.setTrigger(Event("Transition.Finished", None))
  1458. self.states["/Main/Initializer/Running"].addTransition(_Main_Initializer_Running_0)
  1459. # transition /Main/Initializer/SettleBeforeWaiting
  1460. _Main_Initializer_SettleBeforeWaiting_0 = Transition(self, self.states["/Main/Initializer/SettleBeforeWaiting"], [self.states["/Main/Initializer/Waiting"]])
  1461. _Main_Initializer_SettleBeforeWaiting_0.setTrigger(Event("_0after"))
  1462. self.states["/Main/Initializer/SettleBeforeWaiting"].addTransition(_Main_Initializer_SettleBeforeWaiting_0)
  1463. # transition /Main/SimulationFlow/Started
  1464. _Main_SimulationFlow_Started_0 = Transition(self, self.states["/Main/SimulationFlow/Started"], [self.states["/Main/SimulationFlow/Initialized"]])
  1465. _Main_SimulationFlow_Started_0.setAction(self._Main_SimulationFlow_Started_0_exec)
  1466. _Main_SimulationFlow_Started_0.setTrigger(None)
  1467. self.states["/Main/SimulationFlow/Started"].addTransition(_Main_SimulationFlow_Started_0)
  1468. # transition /Main/SimulationFlow/Initialized
  1469. _Main_SimulationFlow_Initialized_0 = Transition(self, self.states["/Main/SimulationFlow/Initialized"], [self.states["/Main/SimulationFlow/InitializeDebugger"]])
  1470. _Main_SimulationFlow_Initialized_0.setTrigger(None)
  1471. self.states["/Main/SimulationFlow/Initialized"].addTransition(_Main_SimulationFlow_Initialized_0)
  1472. # transition /Main/SimulationFlow/InitializeDebugger
  1473. _Main_SimulationFlow_InitializeDebugger_0 = Transition(self, self.states["/Main/SimulationFlow/InitializeDebugger"], [self.states["/Main/SimulationFlow/Waiting"]])
  1474. _Main_SimulationFlow_InitializeDebugger_0.setAction(self._Main_SimulationFlow_InitializeDebugger_0_exec)
  1475. _Main_SimulationFlow_InitializeDebugger_0.setTrigger(None)
  1476. self.states["/Main/SimulationFlow/InitializeDebugger"].addTransition(_Main_SimulationFlow_InitializeDebugger_0)
  1477. # transition /Main/SimulationFlow/Waiting
  1478. _Main_SimulationFlow_Waiting_0 = Transition(self, self.states["/Main/SimulationFlow/Waiting"], [self.states["/Main/SimulationFlow/CheckTermination"]])
  1479. _Main_SimulationFlow_Waiting_0.setTrigger(None)
  1480. _Main_SimulationFlow_Waiting_0.setGuard(self._Main_SimulationFlow_Waiting_0_guard)
  1481. self.states["/Main/SimulationFlow/Waiting"].addTransition(_Main_SimulationFlow_Waiting_0)
  1482. # transition /Main/SimulationFlow/SettleBeforeCheckTermination
  1483. _Main_SimulationFlow_SettleBeforeCheckTermination_0 = Transition(self, self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"], [self.states["/Main/SimulationFlow/CheckTermination"]])
  1484. _Main_SimulationFlow_SettleBeforeCheckTermination_0.setTrigger(Event("_1after"))
  1485. self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"].addTransition(_Main_SimulationFlow_SettleBeforeCheckTermination_0)
  1486. # transition /Main/SimulationFlow/CheckTermination
  1487. _Main_SimulationFlow_CheckTermination_0 = Transition(self, self.states["/Main/SimulationFlow/CheckTermination"], [self.states["/Main/SimulationFlow/Executing"]])
  1488. _Main_SimulationFlow_CheckTermination_0.setAction(self._Main_SimulationFlow_CheckTermination_0_exec)
  1489. _Main_SimulationFlow_CheckTermination_0.setTrigger(None)
  1490. _Main_SimulationFlow_CheckTermination_0.setGuard(self._Main_SimulationFlow_CheckTermination_0_guard)
  1491. self.states["/Main/SimulationFlow/CheckTermination"].addTransition(_Main_SimulationFlow_CheckTermination_0)
  1492. _Main_SimulationFlow_CheckTermination_1 = Transition(self, self.states["/Main/SimulationFlow/CheckTermination"], [self.states["/Main/SimulationFlow/Stopped"]])
  1493. _Main_SimulationFlow_CheckTermination_1.setAction(self._Main_SimulationFlow_CheckTermination_1_exec)
  1494. _Main_SimulationFlow_CheckTermination_1.setTrigger(None)
  1495. _Main_SimulationFlow_CheckTermination_1.setGuard(self._Main_SimulationFlow_CheckTermination_1_guard)
  1496. self.states["/Main/SimulationFlow/CheckTermination"].addTransition(_Main_SimulationFlow_CheckTermination_1)
  1497. # transition /Main/SimulationFlow/Executing
  1498. _Main_SimulationFlow_Executing_0 = Transition(self, self.states["/Main/SimulationFlow/Executing"], [self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"]])
  1499. _Main_SimulationFlow_Executing_0.setAction(self._Main_SimulationFlow_Executing_0_exec)
  1500. _Main_SimulationFlow_Executing_0.setTrigger(Event("Transition.Finished", None))
  1501. self.states["/Main/SimulationFlow/Executing"].addTransition(_Main_SimulationFlow_Executing_0)
  1502. # transition /Main/ModeSelector/Running
  1503. _Main_ModeSelector_Running_0 = Transition(self, self.states["/Main/ModeSelector/Running"], [self.states["/Main/ModeSelector/Paused"]])
  1504. _Main_ModeSelector_Running_0.setTrigger(Event("SmallStep.Finished", None))
  1505. self.states["/Main/ModeSelector/Running"].addTransition(_Main_ModeSelector_Running_0)
  1506. def _Main_Initializer_SettleBeforeWaiting_enter(self):
  1507. self.addTimer(0, self.sccd_yield())
  1508. def _Main_Initializer_SettleBeforeWaiting_exit(self):
  1509. self.removeTimer(0)
  1510. def _Main_SimulationFlow_SettleBeforeCheckTermination_enter(self):
  1511. self.addTimer(1, self.sccd_yield())
  1512. def _Main_SimulationFlow_SettleBeforeCheckTermination_exit(self):
  1513. self.removeTimer(1)
  1514. def _Main_ChildState_Initialized_0_exec(self, parameters):
  1515. self.big_step.outputEventOM(Event("delete_instance", None, [self, 'child_simulator']))
  1516. def _Main_Initializer_Waiting_0_exec(self, parameters):
  1517. self.big_step.outputEventOM(Event("create_instance", None, [self, 'child_simulator', 'FSASimulator_Transition', self.selectedTransition]))
  1518. def _Main_Initializer_Waiting_0_guard(self, parameters):
  1519. return self.inState(["/Main/ModeSelector/Running"]) and self.inState(["/Main/ChildState/Uninitialized"]) and not self.endCondition()
  1520. def _Main_Initializer_CreatingChildSimulator_0_exec(self, parameters):
  1521. self.big_step.outputEventOM(Event("start_instance", None, [self, 'child_simulator']))
  1522. def _Main_SimulationFlow_Started_0_exec(self, parameters):
  1523. self.initialize()
  1524. def _Main_SimulationFlow_InitializeDebugger_0_exec(self, parameters):
  1525. self.initializeDebugger()
  1526. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("SmallStep.Initialized", None, [])]))
  1527. def _Main_SimulationFlow_Waiting_0_guard(self, parameters):
  1528. return self.inState(["/Main/ModeSelector/Running"])
  1529. def _Main_SimulationFlow_CheckTermination_0_exec(self, parameters):
  1530. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("Transition.Execute", None, [])]))
  1531. def _Main_SimulationFlow_CheckTermination_0_guard(self, parameters):
  1532. return self.inState(["/Main/ModeSelector/Running/Continuous"]) and self.inState(["/Main/ChildState/Initialized"]) and not self.endCondition()
  1533. def _Main_SimulationFlow_CheckTermination_1_exec(self, parameters):
  1534. # print '>>> small step executed <<<'
  1535. self.finalize()
  1536. self.raiseInternalEvent(Event("SmallStep.Finished", None, []))
  1537. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("SmallStep.Finished", None, [self.selectedTransition, self.currentEvent, self.eventList, self.elapsed, self.state])]))
  1538. def _Main_SimulationFlow_CheckTermination_1_guard(self, parameters):
  1539. return self.endCondition()
  1540. def _Main_SimulationFlow_Executing_0_exec(self, parameters):
  1541. new_state = parameters[0]
  1542. self.small_step_executed = True
  1543. self.state = new_state
  1544. def initializeStatechart(self):
  1545. # enter default state
  1546. self.default_targets = self.states["/Main"].getEffectiveTargetStates()
  1547. RuntimeClassBase.initializeStatechart(self)
  1548. class FSASimulator_Transition(RuntimeClassBase):
  1549. def __init__(self, controller, selectedTransition):
  1550. RuntimeClassBase.__init__(self, controller)
  1551. self.semantics.big_step_maximality = StatechartSemantics.TakeMany
  1552. self.semantics.internal_event_lifeline = StatechartSemantics.Queue
  1553. self.semantics.input_event_lifeline = StatechartSemantics.FirstComboStep
  1554. self.semantics.priority = StatechartSemantics.SourceParent
  1555. self.semantics.concurrency = StatechartSemantics.Single
  1556. # build Statechart structure
  1557. self.build_statechart_structure()
  1558. # call user defined constructor
  1559. FSASimulator_Transition.user_defined_constructor(self, selectedTransition)
  1560. def user_defined_constructor(self, selectedTransition):
  1561. self.selectedTransition = selectedTransition
  1562. def user_defined_destructor(self):
  1563. pass
  1564. # user defined method
  1565. def executeTransition(self):
  1566. self.newState = self.selectedTransition.target
  1567. # builds Statechart structure
  1568. def build_statechart_structure(self):
  1569. # state <root>
  1570. self.states[""] = State(0, "", self)
  1571. # state /Started
  1572. self.states["/Started"] = State(1, "/Started", self)
  1573. # state /Waiting
  1574. self.states["/Waiting"] = State(2, "/Waiting", self)
  1575. # state /Stopped
  1576. self.states["/Stopped"] = State(3, "/Stopped", self)
  1577. # add children
  1578. self.states[""].addChild(self.states["/Started"])
  1579. self.states[""].addChild(self.states["/Waiting"])
  1580. self.states[""].addChild(self.states["/Stopped"])
  1581. self.states[""].fixTree()
  1582. self.states[""].default_state = self.states["/Started"]
  1583. # transition /Started
  1584. _Started_0 = Transition(self, self.states["/Started"], [self.states["/Waiting"]])
  1585. _Started_0.setAction(self._Started_0_exec)
  1586. _Started_0.setTrigger(None)
  1587. self.states["/Started"].addTransition(_Started_0)
  1588. # transition /Waiting
  1589. _Waiting_0 = Transition(self, self.states["/Waiting"], [self.states["/Stopped"]])
  1590. _Waiting_0.setAction(self._Waiting_0_exec)
  1591. _Waiting_0.setTrigger(Event("Transition.Execute", None))
  1592. self.states["/Waiting"].addTransition(_Waiting_0)
  1593. def _Started_0_exec(self, parameters):
  1594. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("Transition.Initialized", None, [])]))
  1595. def _Waiting_0_exec(self, parameters):
  1596. self.executeTransition()
  1597. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("Transition.Finished", None, [self.newState])]))
  1598. def initializeStatechart(self):
  1599. # enter default state
  1600. self.default_targets = self.states["/Started"].getEffectiveTargetStates()
  1601. RuntimeClassBase.initializeStatechart(self)
  1602. class ObjectManager(ObjectManagerBase):
  1603. def __init__(self, controller):
  1604. ObjectManagerBase.__init__(self, controller)
  1605. def instantiate(self, class_name, construct_params):
  1606. if class_name == "FSASimulator_Coordinator":
  1607. instance = FSASimulator_Coordinator(self.controller, construct_params[0], construct_params[1])
  1608. instance.associations = {}
  1609. instance.associations["child_simulator"] = Association("FSASimulator_Simulation", 0, 1)
  1610. elif class_name == "FSASimulator_Simulation":
  1611. instance = FSASimulator_Simulation(self.controller, construct_params[0], construct_params[1])
  1612. instance.associations = {}
  1613. instance.associations["parent"] = Association("FSASimulator_Coordinator", 1, 1)
  1614. instance.associations["child_simulator"] = Association("FSASimulator_BigStep", 0, 1)
  1615. elif class_name == "FSASimulator_BigStep":
  1616. instance = FSASimulator_BigStep(self.controller, construct_params[0], construct_params[1], construct_params[2], construct_params[3], construct_params[4], construct_params[5], construct_params[6])
  1617. instance.associations = {}
  1618. instance.associations["parent"] = Association("FSASimulator_Simulation", 1, 1)
  1619. instance.associations["child_simulator"] = Association("FSASimulator_SmallStep", 0, 1)
  1620. elif class_name == "FSASimulator_SmallStep":
  1621. instance = FSASimulator_SmallStep(self.controller, construct_params[0], construct_params[1], construct_params[2], construct_params[3], construct_params[4], construct_params[5], construct_params[6])
  1622. instance.associations = {}
  1623. instance.associations["parent"] = Association("FSASimulator_BigStep", 1, 1)
  1624. instance.associations["child_simulator"] = Association("FSASimulator_Block", 0, 1)
  1625. elif class_name == "FSASimulator_Transition":
  1626. instance = FSASimulator_Transition(self.controller, construct_params[0])
  1627. instance.associations = {}
  1628. instance.associations["parent"] = Association("FSASimulator_SmallStep", 1, 1)
  1629. else:
  1630. raise Exception("Cannot instantiate class " + class_name)
  1631. return instance
  1632. class Controller(ThreadsControllerBase):
  1633. def __init__(self, model, events, keep_running = None, behind_schedule_callback = None):
  1634. if keep_running == None: keep_running = True
  1635. if behind_schedule_callback == None: behind_schedule_callback = None
  1636. ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running, behind_schedule_callback)
  1637. self.addInputPort("user_input")
  1638. self.addInputPort("user_output")
  1639. self.object_manager.createInstance("FSASimulator_Coordinator", [model, events])