| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061 |
- """
- Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
- Date: Thu Nov 10 15:42:47 2016
- Model author: Sadaf Mustafiz and Claudio Gomes and Simon Van Mierlo
- Model name: FSASimulator_Coordinator
- Model description:
- A debuggeable CBD simulator.
- """
- from sccd.runtime.statecharts_core import *
- from sccd.runtime.libs.ui import *
- from sccd.runtime.libs.utils import *
- from copy import deepcopy
- import fsaclasses
- import sccd.runtime.accurate_time as accurate_time
- class Breakpoint:
- def __init__(self, name, function, enabled, disable_on_trigger):
- self.name = name
- self.function = function
- self.enabled = enabled
- self.disable_on_trigger = disable_on_trigger
- # package "FSASimulator_Coordinator"
- class FSASimulator_Coordinator(RuntimeClassBase):
- def __init__(self, controller, model, events):
- RuntimeClassBase.__init__(self, controller)
-
- self.semantics.big_step_maximality = StatechartSemantics.TakeMany
- self.semantics.internal_event_lifeline = StatechartSemantics.Queue
- self.semantics.input_event_lifeline = StatechartSemantics.FirstComboStep
- self.semantics.priority = StatechartSemantics.SourceParent
- self.semantics.concurrency = StatechartSemantics.Single
-
- # build Statechart structure
- self.build_statechart_structure()
-
- # call user defined constructor
- FSASimulator_Coordinator.user_defined_constructor(self, model, events)
-
- def user_defined_constructor(self, model, events):
- self.model = model
- self.eventList = events
-
- def user_defined_destructor(self):
- pass
-
-
- # builds Statechart structure
- def build_statechart_structure(self):
-
- # state <root>
- self.states[""] = State(0, "", self)
-
- # state /Main
- self.states["/Main"] = ParallelState(1, "/Main", self)
-
- # state /Main/ModeSelector
- self.states["/Main/ModeSelector"] = State(2, "/Main/ModeSelector", self)
-
- # state /Main/ModeSelector/Paused
- self.states["/Main/ModeSelector/Paused"] = State(3, "/Main/ModeSelector/Paused", self)
-
- # state /Main/ModeSelector/Running
- self.states["/Main/ModeSelector/Running"] = State(4, "/Main/ModeSelector/Running", self)
-
- # state /Main/ModeSelector/Running/Continuous
- self.states["/Main/ModeSelector/Running/Continuous"] = State(5, "/Main/ModeSelector/Running/Continuous", self)
-
- # state /Main/ModeSelector/Running/Realtime
- self.states["/Main/ModeSelector/Running/Realtime"] = State(6, "/Main/ModeSelector/Running/Realtime", self)
-
- # state /Main/ModeSelector/Running/BigStep
- self.states["/Main/ModeSelector/Running/BigStep"] = State(7, "/Main/ModeSelector/Running/BigStep", self)
-
- # state /Main/ModeSelector/Running/SmallStep
- self.states["/Main/ModeSelector/Running/SmallStep"] = State(8, "/Main/ModeSelector/Running/SmallStep", self)
-
- # state /Main/ModeSelector/WaitingForPaused
- self.states["/Main/ModeSelector/WaitingForPaused"] = State(9, "/Main/ModeSelector/WaitingForPaused", self)
-
- # state /Main/ModeSelector/Stopped
- self.states["/Main/ModeSelector/Stopped"] = State(10, "/Main/ModeSelector/Stopped", self)
-
- # state /Main/ChildState
- self.states["/Main/ChildState"] = State(11, "/Main/ChildState", self)
-
- # state /Main/ChildState/Uninitialized
- self.states["/Main/ChildState/Uninitialized"] = State(12, "/Main/ChildState/Uninitialized", self)
-
- # state /Main/ChildState/Initialized
- self.states["/Main/ChildState/Initialized"] = State(13, "/Main/ChildState/Initialized", self)
-
- # state /Main/Initializer
- self.states["/Main/Initializer"] = State(14, "/Main/Initializer", self)
-
- # state /Main/Initializer/Waiting
- self.states["/Main/Initializer/Waiting"] = State(15, "/Main/Initializer/Waiting", self)
-
- # state /Main/Initializer/CreatingChildSimulator
- self.states["/Main/Initializer/CreatingChildSimulator"] = State(16, "/Main/Initializer/CreatingChildSimulator", self)
-
- # state /Main/Initializer/StartingChildSimulator
- self.states["/Main/Initializer/StartingChildSimulator"] = State(17, "/Main/Initializer/StartingChildSimulator", self)
-
- # state /Main/SimulationFlow
- self.states["/Main/SimulationFlow"] = State(18, "/Main/SimulationFlow", self)
-
- # state /Main/SimulationFlow/PrePaused
- self.states["/Main/SimulationFlow/PrePaused"] = State(19, "/Main/SimulationFlow/PrePaused", self)
- self.states["/Main/SimulationFlow/PrePaused"].setEnter(self._Main_SimulationFlow_PrePaused_enter)
- self.states["/Main/SimulationFlow/PrePaused"].setExit(self._Main_SimulationFlow_PrePaused_exit)
-
- # state /Main/SimulationFlow/Paused
- self.states["/Main/SimulationFlow/Paused"] = State(20, "/Main/SimulationFlow/Paused", self)
-
- # state /Main/SimulationFlow/Executing
- self.states["/Main/SimulationFlow/Executing"] = State(21, "/Main/SimulationFlow/Executing", self)
-
- # state /Main/GodEventManager
- self.states["/Main/GodEventManager"] = State(22, "/Main/GodEventManager", self)
-
- # state /Main/GodEventManager/Listening
- self.states["/Main/GodEventManager/Listening"] = State(23, "/Main/GodEventManager/Listening", self)
-
- # state /Main/GodEventManager/Waiting
- self.states["/Main/GodEventManager/Waiting"] = State(24, "/Main/GodEventManager/Waiting", self)
-
- # state /Main/BreakpointManager
- self.states["/Main/BreakpointManager"] = State(25, "/Main/BreakpointManager", self)
-
- # state /Main/BreakpointManager/Listening
- self.states["/Main/BreakpointManager/Listening"] = State(26, "/Main/BreakpointManager/Listening", self)
-
- # state /Main/BreakpointManager/Waiting
- self.states["/Main/BreakpointManager/Waiting"] = State(27, "/Main/BreakpointManager/Waiting", self)
-
- # add children
- self.states[""].addChild(self.states["/Main"])
- self.states["/Main"].addChild(self.states["/Main/ModeSelector"])
- self.states["/Main"].addChild(self.states["/Main/ChildState"])
- self.states["/Main"].addChild(self.states["/Main/Initializer"])
- self.states["/Main"].addChild(self.states["/Main/SimulationFlow"])
- self.states["/Main"].addChild(self.states["/Main/GodEventManager"])
- self.states["/Main"].addChild(self.states["/Main/BreakpointManager"])
- self.states["/Main/ModeSelector"].addChild(self.states["/Main/ModeSelector/Paused"])
- self.states["/Main/ModeSelector"].addChild(self.states["/Main/ModeSelector/Running"])
- self.states["/Main/ModeSelector"].addChild(self.states["/Main/ModeSelector/WaitingForPaused"])
- self.states["/Main/ModeSelector"].addChild(self.states["/Main/ModeSelector/Stopped"])
- self.states["/Main/ModeSelector/Running"].addChild(self.states["/Main/ModeSelector/Running/Continuous"])
- self.states["/Main/ModeSelector/Running"].addChild(self.states["/Main/ModeSelector/Running/Realtime"])
- self.states["/Main/ModeSelector/Running"].addChild(self.states["/Main/ModeSelector/Running/BigStep"])
- self.states["/Main/ModeSelector/Running"].addChild(self.states["/Main/ModeSelector/Running/SmallStep"])
- self.states["/Main/ChildState"].addChild(self.states["/Main/ChildState/Uninitialized"])
- self.states["/Main/ChildState"].addChild(self.states["/Main/ChildState/Initialized"])
- self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/Waiting"])
- self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/CreatingChildSimulator"])
- self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/StartingChildSimulator"])
- self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/PrePaused"])
- self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Paused"])
- self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Executing"])
- self.states["/Main/GodEventManager"].addChild(self.states["/Main/GodEventManager/Listening"])
- self.states["/Main/GodEventManager"].addChild(self.states["/Main/GodEventManager/Waiting"])
- self.states["/Main/BreakpointManager"].addChild(self.states["/Main/BreakpointManager/Listening"])
- self.states["/Main/BreakpointManager"].addChild(self.states["/Main/BreakpointManager/Waiting"])
- self.states[""].fixTree()
- self.states[""].default_state = self.states["/Main"]
- self.states["/Main/ModeSelector"].default_state = self.states["/Main/ModeSelector/Paused"]
- self.states["/Main/ModeSelector/Running"].default_state = self.states["/Main/ModeSelector/Running/Continuous"]
- self.states["/Main/ChildState"].default_state = self.states["/Main/ChildState/Uninitialized"]
- self.states["/Main/Initializer"].default_state = self.states["/Main/Initializer/Waiting"]
- self.states["/Main/SimulationFlow"].default_state = self.states["/Main/SimulationFlow/Paused"]
- self.states["/Main/GodEventManager"].default_state = self.states["/Main/GodEventManager/Listening"]
- self.states["/Main/BreakpointManager"].default_state = self.states["/Main/BreakpointManager/Listening"]
-
- # transition /Main/ModeSelector/Paused
- _Main_ModeSelector_Paused_0 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Running/SmallStep"]])
- _Main_ModeSelector_Paused_0.setTrigger(Event("small_step", "user_input"))
- self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_0)
- _Main_ModeSelector_Paused_1 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Running/BigStep"]])
- _Main_ModeSelector_Paused_1.setTrigger(Event("big_step", "user_input"))
- self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_1)
- _Main_ModeSelector_Paused_2 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Running/Continuous"]])
- _Main_ModeSelector_Paused_2.setTrigger(Event("continuous", "user_input"))
- self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_2)
- _Main_ModeSelector_Paused_3 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Running/Realtime"]])
- _Main_ModeSelector_Paused_3.setAction(self._Main_ModeSelector_Paused_3_exec)
- _Main_ModeSelector_Paused_3.setTrigger(Event("realtime", "user_input"))
- self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_3)
- _Main_ModeSelector_Paused_4 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Paused"]])
- _Main_ModeSelector_Paused_4.setAction(self._Main_ModeSelector_Paused_4_exec)
- _Main_ModeSelector_Paused_4.setTrigger(Event("BigStep.Finished", None))
- self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_4)
- _Main_ModeSelector_Paused_5 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Paused"]])
- _Main_ModeSelector_Paused_5.setAction(self._Main_ModeSelector_Paused_5_exec)
- _Main_ModeSelector_Paused_5.setTrigger(Event("Simulation.Finished", None))
- self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_5)
-
- # transition /Main/ModeSelector/Running/Continuous
- _Main_ModeSelector_Running_Continuous_0 = Transition(self, self.states["/Main/ModeSelector/Running/Continuous"], [self.states["/Main/ModeSelector/WaitingForPaused"]])
- _Main_ModeSelector_Running_Continuous_0.setAction(self._Main_ModeSelector_Running_Continuous_0_exec)
- _Main_ModeSelector_Running_Continuous_0.setTrigger(Event("pause", "user_input"))
- self.states["/Main/ModeSelector/Running/Continuous"].addTransition(_Main_ModeSelector_Running_Continuous_0)
- _Main_ModeSelector_Running_Continuous_1 = Transition(self, self.states["/Main/ModeSelector/Running/Continuous"], [self.states["/Main/ModeSelector/Stopped"]])
- _Main_ModeSelector_Running_Continuous_1.setAction(self._Main_ModeSelector_Running_Continuous_1_exec)
- _Main_ModeSelector_Running_Continuous_1.setTrigger(Event("Simulation.Finished", None))
- self.states["/Main/ModeSelector/Running/Continuous"].addTransition(_Main_ModeSelector_Running_Continuous_1)
-
- # transition /Main/ModeSelector/Running/Realtime
- _Main_ModeSelector_Running_Realtime_0 = Transition(self, self.states["/Main/ModeSelector/Running/Realtime"], [self.states["/Main/ModeSelector/WaitingForPaused"]])
- _Main_ModeSelector_Running_Realtime_0.setAction(self._Main_ModeSelector_Running_Realtime_0_exec)
- _Main_ModeSelector_Running_Realtime_0.setTrigger(Event("pause", "user_input"))
- self.states["/Main/ModeSelector/Running/Realtime"].addTransition(_Main_ModeSelector_Running_Realtime_0)
- _Main_ModeSelector_Running_Realtime_1 = Transition(self, self.states["/Main/ModeSelector/Running/Realtime"], [self.states["/Main/ModeSelector/Stopped"]])
- _Main_ModeSelector_Running_Realtime_1.setAction(self._Main_ModeSelector_Running_Realtime_1_exec)
- _Main_ModeSelector_Running_Realtime_1.setTrigger(Event("Simulation.Finished", None))
- self.states["/Main/ModeSelector/Running/Realtime"].addTransition(_Main_ModeSelector_Running_Realtime_1)
- _Main_ModeSelector_Running_Realtime_2 = Transition(self, self.states["/Main/ModeSelector/Running/Realtime"], [self.states["/Main/ModeSelector/Running/Realtime"]])
- _Main_ModeSelector_Running_Realtime_2.setAction(self._Main_ModeSelector_Running_Realtime_2_exec)
- _Main_ModeSelector_Running_Realtime_2.setTrigger(Event("BigStep.Finished", None))
- self.states["/Main/ModeSelector/Running/Realtime"].addTransition(_Main_ModeSelector_Running_Realtime_2)
-
- # transition /Main/ModeSelector/Running/BigStep
- _Main_ModeSelector_Running_BigStep_0 = Transition(self, self.states["/Main/ModeSelector/Running/BigStep"], [self.states["/Main/ModeSelector/Paused"]])
- _Main_ModeSelector_Running_BigStep_0.setAction(self._Main_ModeSelector_Running_BigStep_0_exec)
- _Main_ModeSelector_Running_BigStep_0.setTrigger(Event("BigStep.Finished", None))
- self.states["/Main/ModeSelector/Running/BigStep"].addTransition(_Main_ModeSelector_Running_BigStep_0)
- _Main_ModeSelector_Running_BigStep_1 = Transition(self, self.states["/Main/ModeSelector/Running/BigStep"], [self.states["/Main/ModeSelector/Stopped"]])
- _Main_ModeSelector_Running_BigStep_1.setAction(self._Main_ModeSelector_Running_BigStep_1_exec)
- _Main_ModeSelector_Running_BigStep_1.setTrigger(Event("Simulation.Finished", None))
- self.states["/Main/ModeSelector/Running/BigStep"].addTransition(_Main_ModeSelector_Running_BigStep_1)
-
- # transition /Main/ModeSelector/Running/SmallStep
- _Main_ModeSelector_Running_SmallStep_0 = Transition(self, self.states["/Main/ModeSelector/Running/SmallStep"], [self.states["/Main/ModeSelector/Paused"]])
- _Main_ModeSelector_Running_SmallStep_0.setAction(self._Main_ModeSelector_Running_SmallStep_0_exec)
- _Main_ModeSelector_Running_SmallStep_0.setTrigger(Event("SmallStep.Finished", None))
- self.states["/Main/ModeSelector/Running/SmallStep"].addTransition(_Main_ModeSelector_Running_SmallStep_0)
- _Main_ModeSelector_Running_SmallStep_1 = Transition(self, self.states["/Main/ModeSelector/Running/SmallStep"], [self.states["/Main/ModeSelector/Paused"]])
- _Main_ModeSelector_Running_SmallStep_1.setAction(self._Main_ModeSelector_Running_SmallStep_1_exec)
- _Main_ModeSelector_Running_SmallStep_1.setTrigger(Event("BigStep.Finished", None))
- self.states["/Main/ModeSelector/Running/SmallStep"].addTransition(_Main_ModeSelector_Running_SmallStep_1)
- _Main_ModeSelector_Running_SmallStep_2 = Transition(self, self.states["/Main/ModeSelector/Running/SmallStep"], [self.states["/Main/ModeSelector/Stopped"]])
- _Main_ModeSelector_Running_SmallStep_2.setAction(self._Main_ModeSelector_Running_SmallStep_2_exec)
- _Main_ModeSelector_Running_SmallStep_2.setTrigger(Event("Simulation.Finished", None))
- self.states["/Main/ModeSelector/Running/SmallStep"].addTransition(_Main_ModeSelector_Running_SmallStep_2)
-
- # transition /Main/ModeSelector/WaitingForPaused
- _Main_ModeSelector_WaitingForPaused_0 = Transition(self, self.states["/Main/ModeSelector/WaitingForPaused"], [self.states["/Main/ModeSelector/Paused"]])
- _Main_ModeSelector_WaitingForPaused_0.setAction(self._Main_ModeSelector_WaitingForPaused_0_exec)
- _Main_ModeSelector_WaitingForPaused_0.setTrigger(Event("Simulation.Paused", None))
- self.states["/Main/ModeSelector/WaitingForPaused"].addTransition(_Main_ModeSelector_WaitingForPaused_0)
-
- # transition /Main/ChildState/Uninitialized
- _Main_ChildState_Uninitialized_0 = Transition(self, self.states["/Main/ChildState/Uninitialized"], [self.states["/Main/ChildState/Initialized"]])
- _Main_ChildState_Uninitialized_0.setTrigger(Event("Simulation.Initialized", None))
- self.states["/Main/ChildState/Uninitialized"].addTransition(_Main_ChildState_Uninitialized_0)
-
- # transition /Main/ChildState/Initialized
- _Main_ChildState_Initialized_0 = Transition(self, self.states["/Main/ChildState/Initialized"], [self.states["/Main/ChildState/Uninitialized"]])
- _Main_ChildState_Initialized_0.setAction(self._Main_ChildState_Initialized_0_exec)
- _Main_ChildState_Initialized_0.setTrigger(Event("Simulation.Finished", None))
- self.states["/Main/ChildState/Initialized"].addTransition(_Main_ChildState_Initialized_0)
-
- # transition /Main/Initializer/Waiting
- _Main_Initializer_Waiting_0 = Transition(self, self.states["/Main/Initializer/Waiting"], [self.states["/Main/Initializer/CreatingChildSimulator"]])
- _Main_Initializer_Waiting_0.setAction(self._Main_Initializer_Waiting_0_exec)
- _Main_Initializer_Waiting_0.setTrigger(None)
- _Main_Initializer_Waiting_0.setGuard(self._Main_Initializer_Waiting_0_guard)
- self.states["/Main/Initializer/Waiting"].addTransition(_Main_Initializer_Waiting_0)
-
- # transition /Main/Initializer/CreatingChildSimulator
- _Main_Initializer_CreatingChildSimulator_0 = Transition(self, self.states["/Main/Initializer/CreatingChildSimulator"], [self.states["/Main/Initializer/StartingChildSimulator"]])
- _Main_Initializer_CreatingChildSimulator_0.setAction(self._Main_Initializer_CreatingChildSimulator_0_exec)
- _Main_Initializer_CreatingChildSimulator_0.setTrigger(Event("instance_created", None))
- self.states["/Main/Initializer/CreatingChildSimulator"].addTransition(_Main_Initializer_CreatingChildSimulator_0)
-
- # transition /Main/Initializer/StartingChildSimulator
- _Main_Initializer_StartingChildSimulator_0 = Transition(self, self.states["/Main/Initializer/StartingChildSimulator"], [self.states["/Main/Initializer/Waiting"]])
- _Main_Initializer_StartingChildSimulator_0.setTrigger(Event("Simulation.Initialized", None))
- self.states["/Main/Initializer/StartingChildSimulator"].addTransition(_Main_Initializer_StartingChildSimulator_0)
-
- # transition /Main/SimulationFlow/PrePaused
- _Main_SimulationFlow_PrePaused_0 = Transition(self, self.states["/Main/SimulationFlow/PrePaused"], [self.states["/Main/SimulationFlow/Paused"]])
- _Main_SimulationFlow_PrePaused_0.setTrigger(Event("_0after"))
- self.states["/Main/SimulationFlow/PrePaused"].addTransition(_Main_SimulationFlow_PrePaused_0)
-
- # transition /Main/SimulationFlow/Paused
- _Main_SimulationFlow_Paused_0 = Transition(self, self.states["/Main/SimulationFlow/Paused"], [self.states["/Main/SimulationFlow/Executing"]])
- _Main_SimulationFlow_Paused_0.setAction(self._Main_SimulationFlow_Paused_0_exec)
- _Main_SimulationFlow_Paused_0.setTrigger(None)
- _Main_SimulationFlow_Paused_0.setGuard(self._Main_SimulationFlow_Paused_0_guard)
- self.states["/Main/SimulationFlow/Paused"].addTransition(_Main_SimulationFlow_Paused_0)
- _Main_SimulationFlow_Paused_1 = Transition(self, self.states["/Main/SimulationFlow/Paused"], [self.states["/Main/SimulationFlow/Executing"]])
- _Main_SimulationFlow_Paused_1.setAction(self._Main_SimulationFlow_Paused_1_exec)
- _Main_SimulationFlow_Paused_1.setTrigger(None)
- _Main_SimulationFlow_Paused_1.setGuard(self._Main_SimulationFlow_Paused_1_guard)
- self.states["/Main/SimulationFlow/Paused"].addTransition(_Main_SimulationFlow_Paused_1)
- _Main_SimulationFlow_Paused_2 = Transition(self, self.states["/Main/SimulationFlow/Paused"], [self.states["/Main/SimulationFlow/Executing"]])
- _Main_SimulationFlow_Paused_2.setAction(self._Main_SimulationFlow_Paused_2_exec)
- _Main_SimulationFlow_Paused_2.setTrigger(None)
- _Main_SimulationFlow_Paused_2.setGuard(self._Main_SimulationFlow_Paused_2_guard)
- self.states["/Main/SimulationFlow/Paused"].addTransition(_Main_SimulationFlow_Paused_2)
- _Main_SimulationFlow_Paused_3 = Transition(self, self.states["/Main/SimulationFlow/Paused"], [self.states["/Main/SimulationFlow/Executing"]])
- _Main_SimulationFlow_Paused_3.setAction(self._Main_SimulationFlow_Paused_3_exec)
- _Main_SimulationFlow_Paused_3.setTrigger(None)
- _Main_SimulationFlow_Paused_3.setGuard(self._Main_SimulationFlow_Paused_3_guard)
- self.states["/Main/SimulationFlow/Paused"].addTransition(_Main_SimulationFlow_Paused_3)
-
- # transition /Main/SimulationFlow/Executing
- _Main_SimulationFlow_Executing_0 = Transition(self, self.states["/Main/SimulationFlow/Executing"], [self.states["/Main/SimulationFlow/Paused"]])
- _Main_SimulationFlow_Executing_0.setTrigger(None)
- _Main_SimulationFlow_Executing_0.setGuard(self._Main_SimulationFlow_Executing_0_guard)
- self.states["/Main/SimulationFlow/Executing"].addTransition(_Main_SimulationFlow_Executing_0)
- _Main_SimulationFlow_Executing_1 = Transition(self, self.states["/Main/SimulationFlow/Executing"], [self.states["/Main/SimulationFlow/PrePaused"]])
- _Main_SimulationFlow_Executing_1.setTrigger(Event("Simulation.Finished", None))
- _Main_SimulationFlow_Executing_1.setGuard(self._Main_SimulationFlow_Executing_1_guard)
- self.states["/Main/SimulationFlow/Executing"].addTransition(_Main_SimulationFlow_Executing_1)
-
- # transition /Main/GodEventManager/Listening
- _Main_GodEventManager_Listening_0 = Transition(self, self.states["/Main/GodEventManager/Listening"], [self.states["/Main/GodEventManager/Waiting"]])
- _Main_GodEventManager_Listening_0.setAction(self._Main_GodEventManager_Listening_0_exec)
- _Main_GodEventManager_Listening_0.setTrigger(Event("god_event", "user_input"))
- _Main_GodEventManager_Listening_0.setGuard(self._Main_GodEventManager_Listening_0_guard)
- self.states["/Main/GodEventManager/Listening"].addTransition(_Main_GodEventManager_Listening_0)
-
- # transition /Main/GodEventManager/Waiting
- _Main_GodEventManager_Waiting_0 = Transition(self, self.states["/Main/GodEventManager/Waiting"], [self.states["/Main/GodEventManager/Listening"]])
- _Main_GodEventManager_Waiting_0.setAction(self._Main_GodEventManager_Waiting_0_exec)
- _Main_GodEventManager_Waiting_0.setTrigger(Event("Simulation.GodEventResult", None))
- self.states["/Main/GodEventManager/Waiting"].addTransition(_Main_GodEventManager_Waiting_0)
-
- # transition /Main/BreakpointManager/Listening
- _Main_BreakpointManager_Listening_0 = Transition(self, self.states["/Main/BreakpointManager/Listening"], [self.states["/Main/BreakpointManager/Waiting"]])
- _Main_BreakpointManager_Listening_0.setAction(self._Main_BreakpointManager_Listening_0_exec)
- _Main_BreakpointManager_Listening_0.setTrigger(Event("add_breakpoint", "user_input"))
- self.states["/Main/BreakpointManager/Listening"].addTransition(_Main_BreakpointManager_Listening_0)
- _Main_BreakpointManager_Listening_1 = Transition(self, self.states["/Main/BreakpointManager/Listening"], [self.states["/Main/BreakpointManager/Waiting"]])
- _Main_BreakpointManager_Listening_1.setAction(self._Main_BreakpointManager_Listening_1_exec)
- _Main_BreakpointManager_Listening_1.setTrigger(Event("del_breakpoint", "user_input"))
- self.states["/Main/BreakpointManager/Listening"].addTransition(_Main_BreakpointManager_Listening_1)
- _Main_BreakpointManager_Listening_2 = Transition(self, self.states["/Main/BreakpointManager/Listening"], [self.states["/Main/BreakpointManager/Waiting"]])
- _Main_BreakpointManager_Listening_2.setAction(self._Main_BreakpointManager_Listening_2_exec)
- _Main_BreakpointManager_Listening_2.setTrigger(Event("toggle_breakpoint", "user_input"))
- self.states["/Main/BreakpointManager/Listening"].addTransition(_Main_BreakpointManager_Listening_2)
- _Main_BreakpointManager_Listening_3 = Transition(self, self.states["/Main/BreakpointManager/Listening"], [self.states["/Main/BreakpointManager/Waiting"]])
- _Main_BreakpointManager_Listening_3.setAction(self._Main_BreakpointManager_Listening_3_exec)
- _Main_BreakpointManager_Listening_3.setTrigger(Event("list_breakpoints", "user_input"))
- self.states["/Main/BreakpointManager/Listening"].addTransition(_Main_BreakpointManager_Listening_3)
-
- # transition /Main/BreakpointManager/Waiting
- _Main_BreakpointManager_Waiting_0 = Transition(self, self.states["/Main/BreakpointManager/Waiting"], [self.states["/Main/BreakpointManager/Listening"]])
- _Main_BreakpointManager_Waiting_0.setAction(self._Main_BreakpointManager_Waiting_0_exec)
- _Main_BreakpointManager_Waiting_0.setTrigger(Event("Breakpoint.AddResult", None))
- self.states["/Main/BreakpointManager/Waiting"].addTransition(_Main_BreakpointManager_Waiting_0)
- _Main_BreakpointManager_Waiting_1 = Transition(self, self.states["/Main/BreakpointManager/Waiting"], [self.states["/Main/BreakpointManager/Listening"]])
- _Main_BreakpointManager_Waiting_1.setAction(self._Main_BreakpointManager_Waiting_1_exec)
- _Main_BreakpointManager_Waiting_1.setTrigger(Event("Breakpoint.DelResult", None))
- self.states["/Main/BreakpointManager/Waiting"].addTransition(_Main_BreakpointManager_Waiting_1)
- _Main_BreakpointManager_Waiting_2 = Transition(self, self.states["/Main/BreakpointManager/Waiting"], [self.states["/Main/BreakpointManager/Listening"]])
- _Main_BreakpointManager_Waiting_2.setAction(self._Main_BreakpointManager_Waiting_2_exec)
- _Main_BreakpointManager_Waiting_2.setTrigger(Event("Breakpoint.ToggleResult", None))
- self.states["/Main/BreakpointManager/Waiting"].addTransition(_Main_BreakpointManager_Waiting_2)
- _Main_BreakpointManager_Waiting_3 = Transition(self, self.states["/Main/BreakpointManager/Waiting"], [self.states["/Main/BreakpointManager/Listening"]])
- _Main_BreakpointManager_Waiting_3.setAction(self._Main_BreakpointManager_Waiting_3_exec)
- _Main_BreakpointManager_Waiting_3.setTrigger(Event("Breakpoint.ListResult", None))
- self.states["/Main/BreakpointManager/Waiting"].addTransition(_Main_BreakpointManager_Waiting_3)
-
- # transition /Main/ModeSelector/Running
- _Main_ModeSelector_Running_0 = Transition(self, self.states["/Main/ModeSelector/Running"], [self.states["/Main/ModeSelector/Paused"]])
- _Main_ModeSelector_Running_0.setAction(self._Main_ModeSelector_Running_0_exec)
- _Main_ModeSelector_Running_0.setTrigger(Event("Simulation.Finished", None))
- self.states["/Main/ModeSelector/Running"].addTransition(_Main_ModeSelector_Running_0)
- _Main_ModeSelector_Running_1 = Transition(self, self.states["/Main/ModeSelector/Running"], [self.states["/Main/ModeSelector/Paused"]])
- _Main_ModeSelector_Running_1.setAction(self._Main_ModeSelector_Running_1_exec)
- _Main_ModeSelector_Running_1.setTrigger(Event("Breakpoint.Triggered", None))
- self.states["/Main/ModeSelector/Running"].addTransition(_Main_ModeSelector_Running_1)
-
- def _Main_SimulationFlow_PrePaused_enter(self):
- self.addTimer(0, self.sccd_yield())
-
- def _Main_SimulationFlow_PrePaused_exit(self):
- self.removeTimer(0)
-
- def _Main_ModeSelector_Running_0_exec(self, parameters):
- clock = parameters[0]
- state = parameters[1]
- self.big_step.outputEvent(Event("Simulation.Finished", "user_output", []))
- self.big_step.outputEvent(Event("State", "user_output", [clock / 1000.0, state]))
-
- def _Main_ModeSelector_Running_1_exec(self, parameters):
- triggered_bp = parameters[0]
- clock = parameters[1]
- state = parameters[2]
- self.big_step.outputEvent(Event("Breakpoint.Triggered", "user_output", [triggered_bp, clock, state]))
- self.big_step.outputEvent(Event("State", "user_output", [clock / 1000.0, state]))
-
- def _Main_ModeSelector_Paused_3_exec(self, parameters):
- realtime_scale = parameters[0]
- self.realtime_scale = float(realtime_scale)
-
- def _Main_ModeSelector_Paused_4_exec(self, parameters):
- clock = parameters[0]
- timeNext = parameters[1]
- eventList = parameters[2]
- state = parameters[3]
- self.big_step.outputEvent(Event("BigStep.Finished", "user_output", []))
- self.big_step.outputEvent(Event("State", "user_output", [clock / 1000.0, state]))
-
- def _Main_ModeSelector_Paused_5_exec(self, parameters):
- clock = parameters[0]
- state = parameters[1]
- self.big_step.outputEvent(Event("Simulation.Finished", "user_output", []))
- self.big_step.outputEvent(Event("State", "user_output", [clock / 1000.0, state]))
-
- def _Main_ModeSelector_Running_Continuous_0_exec(self, parameters):
- self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("Simulation.Pause", None, [])]))
-
- def _Main_ModeSelector_Running_Continuous_1_exec(self, parameters):
- clock = parameters[0]
- state = parameters[1]
- self.big_step.outputEvent(Event("Simulation.Finished", "user_output", []))
- self.big_step.outputEvent(Event("State", "user_output", [clock / 1000.0, state]))
-
- def _Main_ModeSelector_Running_Realtime_0_exec(self, parameters):
- self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("Simulation.Pause", None, [])]))
-
- def _Main_ModeSelector_Running_Realtime_1_exec(self, parameters):
- clock = parameters[0]
- state = parameters[1]
- self.big_step.outputEvent(Event("Simulation.Finished", "user_output", []))
- self.big_step.outputEvent(Event("State", "user_output", [clock / 1000.0, state]))
-
- def _Main_ModeSelector_Running_Realtime_2_exec(self, parameters):
- clock = parameters[0]
- timeNext = parameters[1]
- eventList = parameters[2]
- state = parameters[3]
- self.big_step.outputEvent(Event("BigStep.Finished", "user_output", []))
- self.big_step.outputEvent(Event("State", "user_output", [clock / 1000.0, state]))
-
- def _Main_ModeSelector_Running_BigStep_0_exec(self, parameters):
- clock = parameters[0]
- timeNext = parameters[1]
- eventList = parameters[2]
- state = parameters[3]
- self.big_step.outputEvent(Event("BigStep.Finished", "user_output", []))
- self.big_step.outputEvent(Event("State", "user_output", [clock / 1000.0, state]))
-
- def _Main_ModeSelector_Running_BigStep_1_exec(self, parameters):
- clock = parameters[0]
- state = parameters[1]
- self.big_step.outputEvent(Event("Simulation.Finished", "user_output", []))
- self.big_step.outputEvent(Event("State", "user_output", [clock / 1000.0, state]))
-
- def _Main_ModeSelector_Running_SmallStep_0_exec(self, parameters):
- selectedTransition = parameters[0]
- currentEvent = parameters[1]
- eventList = parameters[2]
- elapsed = parameters[3]
- state = parameters[4]
- self.big_step.outputEvent(Event("SmallStep.Finished", "user_output", []))
- self.big_step.outputEvent(Event("State", "user_output", [selectedTransition, currentEvent, eventList, elapsed, state]))
-
- def _Main_ModeSelector_Running_SmallStep_1_exec(self, parameters):
- clock = parameters[0]
- timeNext = parameters[1]
- eventList = parameters[2]
- state = parameters[3]
- self.big_step.outputEvent(Event("BigStep.Finished", "user_output", []))
- self.big_step.outputEvent(Event("State", "user_output", [clock / 1000.0, state]))
-
- def _Main_ModeSelector_Running_SmallStep_2_exec(self, parameters):
- clock = parameters[0]
- state = parameters[1]
- self.big_step.outputEvent(Event("Simulation.Finished", "user_output", []))
- self.big_step.outputEvent(Event("State", "user_output", [clock / 1000.0, state]))
-
- def _Main_ModeSelector_WaitingForPaused_0_exec(self, parameters):
- clock = parameters[0]
- state = parameters[1]
- self.big_step.outputEvent(Event("Simulation.Paused", "user_output", []))
- self.big_step.outputEvent(Event("State", "user_output", [clock / 1000.0, state]))
-
- def _Main_ChildState_Initialized_0_exec(self, parameters):
- self.big_step.outputEventOM(Event("delete_instance", None, [self, 'child_simulator']))
-
- def _Main_Initializer_Waiting_0_exec(self, parameters):
- self.big_step.outputEventOM(Event("create_instance", None, [self, 'child_simulator', 'FSASimulator_Simulation', deepcopy(self.model), deepcopy(self.eventList)]))
-
- def _Main_Initializer_Waiting_0_guard(self, parameters):
- return self.inState(["/Main/ChildState/Uninitialized"])
-
- def _Main_Initializer_CreatingChildSimulator_0_exec(self, parameters):
- self.big_step.outputEventOM(Event("start_instance", None, [self, 'child_simulator']))
-
- def _Main_SimulationFlow_Paused_0_exec(self, parameters):
- self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("Simulation.Execute", None, [])]))
-
- def _Main_SimulationFlow_Paused_0_guard(self, parameters):
- return self.inState(["/Main/ModeSelector/Running/Continuous"]) and self.inState(["/Main/ChildState/Initialized"])
-
- def _Main_SimulationFlow_Paused_1_exec(self, parameters):
- self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("Simulation.ExecuteRealtime", None, [self.realtime_scale])]))
-
- def _Main_SimulationFlow_Paused_1_guard(self, parameters):
- return self.inState(["/Main/ModeSelector/Running/Realtime"]) and self.inState(["/Main/ChildState/Initialized"])
-
- def _Main_SimulationFlow_Paused_2_exec(self, parameters):
- self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("BigStep.Execute", None, [])]))
-
- def _Main_SimulationFlow_Paused_2_guard(self, parameters):
- return self.inState(["/Main/ModeSelector/Running/BigStep"]) and self.inState(["/Main/ChildState/Initialized"])
-
- def _Main_SimulationFlow_Paused_3_exec(self, parameters):
- self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("SmallStep.Execute", None, [])]))
-
- def _Main_SimulationFlow_Paused_3_guard(self, parameters):
- return self.inState(["/Main/ModeSelector/Running/SmallStep"]) and self.inState(["/Main/ChildState/Initialized"])
-
- def _Main_SimulationFlow_Executing_0_guard(self, parameters):
- return self.inState(["/Main/ModeSelector/Paused"])
-
- def _Main_SimulationFlow_Executing_1_guard(self, parameters):
- return self.inState(["/Main/ModeSelector/Running/Continuous"]) or self.inState(["/Main/ModeSelector/Running/Realtime"])
-
- def _Main_GodEventManager_Listening_0_exec(self, parameters):
- block_name = parameters[0]
- new_val = parameters[1]
- self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("Simulation.GodEvent", None, [block_name, new_val])]))
-
- def _Main_GodEventManager_Listening_0_guard(self, parameters):
- block_name = parameters[0]
- new_val = parameters[1]
- return self.inState(["/Main/ModeSelector/Paused"])
-
- def _Main_GodEventManager_Waiting_0_exec(self, parameters):
- result = parameters[0]
- self.big_step.outputEvent(Event("GodEventResult", "user_output", [result]))
-
- def _Main_BreakpointManager_Listening_0_exec(self, parameters):
- name = parameters[0]
- function = parameters[1]
- enabled = parameters[2]
- disable_on_trigger = parameters[3]
- self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("Breakpoint.Add", None, [name, function, enabled, disable_on_trigger])]))
-
- def _Main_BreakpointManager_Listening_1_exec(self, parameters):
- name = parameters[0]
- self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("Breakpoint.Del", None, [name])]))
-
- def _Main_BreakpointManager_Listening_2_exec(self, parameters):
- name = parameters[0]
- self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("Breakpoint.Toggle", None, [name])]))
-
- def _Main_BreakpointManager_Listening_3_exec(self, parameters):
- self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("Breakpoint.List", None, [])]))
-
- def _Main_BreakpointManager_Waiting_0_exec(self, parameters):
- result = parameters[0]
- self.big_step.outputEvent(Event("Breakpoint.AddResult", "user_output", [result]))
-
- def _Main_BreakpointManager_Waiting_1_exec(self, parameters):
- result = parameters[0]
- self.big_step.outputEvent(Event("Breakpoint.DelResult", "user_output", [result]))
-
- def _Main_BreakpointManager_Waiting_2_exec(self, parameters):
- result = parameters[0]
- self.big_step.outputEvent(Event("Breakpoint.ToggleResult", "user_output", [result]))
-
- def _Main_BreakpointManager_Waiting_3_exec(self, parameters):
- result = parameters[0]
- self.big_step.outputEvent(Event("Breakpoint.ListResult", "user_output", [result]))
-
- def initializeStatechart(self):
- # enter default state
- self.default_targets = self.states["/Main"].getEffectiveTargetStates()
- RuntimeClassBase.initializeStatechart(self)
- class FSASimulator_Simulation(RuntimeClassBase):
- def __init__(self, controller, model, events):
- RuntimeClassBase.__init__(self, controller)
-
- self.semantics.big_step_maximality = StatechartSemantics.TakeMany
- self.semantics.internal_event_lifeline = StatechartSemantics.Queue
- self.semantics.input_event_lifeline = StatechartSemantics.FirstComboStep
- self.semantics.priority = StatechartSemantics.SourceParent
- self.semantics.concurrency = StatechartSemantics.Single
-
- # build Statechart structure
- self.build_statechart_structure()
-
- # call user defined constructor
- FSASimulator_Simulation.user_defined_constructor(self, model, events)
-
- def user_defined_constructor(self, model, events):
- self.model = model
- self.eventList = events
-
- def user_defined_destructor(self):
- pass
-
-
- # user defined method
- def initialize(self):
- self.clock = 0
- self.elapsed = 0
- self.delta = 1.0 * 1000.0 # in miliseconds for real-time simulation
- self.timeNext = self.delta
- self.state = self.model.initialState
-
-
- # user defined method
- def endCondition(self):
- return self.state and self.state.final
-
-
- # user defined method
- def finalize(self):
- print 'Simulation finalized.'
-
-
- # user defined method
- def initializeDebugger(self):
- self.breakpoints = []
- self.triggered_bp = None
-
-
- # user defined method
- def waitTime(self):
- # First, we convert from wall-clock time to simulated time.
- # 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).
- simulated_diff = (accurate_time.time() - self.realtime_start_time) * self.realtime_scale
- # timeNext and simulated_diff are both in simulated time: so now scale back to wall-clock time by dividing.
- # This function returns an amount of miliseconds.
- return ((self.timeNext - simulated_diff) / self.realtime_scale)
-
-
- # user defined method
- def syncSimulatedTime(self):
- diff = accurate_time.time() - self.realtime_start_time
- self.clock = diff * self.realtime_scale
-
-
- # user defined method
- def addBreakpoint(self, name, function, enabled = None, disable_on_trigger = None):
- if enabled == None: enabled = true
- if disable_on_trigger == None: disable_on_trigger = true
- if len([bp for bp in self.breakpoints if bp.name == name]) > 0:
- return -1
- self.breakpoints.append(Breakpoint(name, function, enabled, disable_on_trigger))
- return 0
-
-
- # user defined method
- def delBreakpoint(self, name):
- if len([bp for bp in self.breakpoints if bp.name == name]) == 0:
- return -1
- self.breakpoints = [bp for bp in self.breakpoints if bp.name != name]
- return 0
-
-
- # user defined method
- def toggleBreakpoint(self, name):
- if len([bp for bp in self.breakpoints if bp.name == name]) == 0:
- return -1
- for bp in self.breakpoints:
- if bp.name == name:
- bp.enabled = enabled
- break
- return 0
-
-
- # user defined method
- def breakpointTriggers(self, is_realtime_simulation):
- self.triggered_bp = None
- for bp in self.breakpoints:
- if not bp.enabled:
- continue
- # include the function in the scope...
- exec(bp.function)
- # ... and execute it, note that the breakpoint thus has to start with "def breakpoint("
- # note that we pass self.timeNext instead of self.simulated_time in the case of as-fast-as-possible simulation (or stepping)
- # 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')
- # in case of realtime simulation, we do pass the current simulated time, since we can stop at (more or less) exactly the right time
- if breakpoint({'clock': (self.clock if is_realtime_simulation else self.timeNext) / 1000.0, 'state': self.state}):
- # triggered!
- self.triggered_bp = bp.name
- if bp.disable_on_trigger:
- bp.enabled = False
- return True
- else:
- # not triggered, so continue
- continue
- return False
-
-
- # user defined method
- def godEvent(self, new_state):
- filtered_states = [s for s in self.model.states if s.name == new_state]
- if not len(filtered_states) == 1:
- return -1
- self.state = filtered_states[0]
- return 0
-
-
- # builds Statechart structure
- def build_statechart_structure(self):
-
- # state <root>
- self.states[""] = State(0, "", self)
-
- # state /Main
- self.states["/Main"] = ParallelState(1, "/Main", self)
-
- # state /Main/ModeSelector
- self.states["/Main/ModeSelector"] = State(2, "/Main/ModeSelector", self)
-
- # state /Main/ModeSelector/Paused
- self.states["/Main/ModeSelector/Paused"] = State(3, "/Main/ModeSelector/Paused", self)
-
- # state /Main/ModeSelector/Running
- self.states["/Main/ModeSelector/Running"] = State(4, "/Main/ModeSelector/Running", self)
-
- # state /Main/ModeSelector/Running/Continuous
- self.states["/Main/ModeSelector/Running/Continuous"] = State(5, "/Main/ModeSelector/Running/Continuous", self)
-
- # state /Main/ModeSelector/Running/Realtime
- self.states["/Main/ModeSelector/Running/Realtime"] = State(6, "/Main/ModeSelector/Running/Realtime", self)
-
- # state /Main/ModeSelector/Running/BigStep
- self.states["/Main/ModeSelector/Running/BigStep"] = State(7, "/Main/ModeSelector/Running/BigStep", self)
-
- # state /Main/ModeSelector/Running/SmallStep
- self.states["/Main/ModeSelector/Running/SmallStep"] = State(8, "/Main/ModeSelector/Running/SmallStep", self)
-
- # state /Main/ChildState
- self.states["/Main/ChildState"] = State(9, "/Main/ChildState", self)
-
- # state /Main/ChildState/Uninitialized
- self.states["/Main/ChildState/Uninitialized"] = State(10, "/Main/ChildState/Uninitialized", self)
-
- # state /Main/ChildState/Initialized
- self.states["/Main/ChildState/Initialized"] = State(11, "/Main/ChildState/Initialized", self)
-
- # state /Main/Initializer
- self.states["/Main/Initializer"] = State(12, "/Main/Initializer", self)
-
- # state /Main/Initializer/Waiting
- self.states["/Main/Initializer/Waiting"] = State(13, "/Main/Initializer/Waiting", self)
-
- # state /Main/Initializer/CreatingChildSimulator
- self.states["/Main/Initializer/CreatingChildSimulator"] = State(14, "/Main/Initializer/CreatingChildSimulator", self)
-
- # state /Main/Initializer/StartingChildSimulator
- self.states["/Main/Initializer/StartingChildSimulator"] = State(15, "/Main/Initializer/StartingChildSimulator", self)
-
- # state /Main/Initializer/Running
- self.states["/Main/Initializer/Running"] = State(16, "/Main/Initializer/Running", self)
-
- # state /Main/Initializer/SettleBeforeWaiting
- self.states["/Main/Initializer/SettleBeforeWaiting"] = State(17, "/Main/Initializer/SettleBeforeWaiting", self)
- self.states["/Main/Initializer/SettleBeforeWaiting"].setEnter(self._Main_Initializer_SettleBeforeWaiting_enter)
- self.states["/Main/Initializer/SettleBeforeWaiting"].setExit(self._Main_Initializer_SettleBeforeWaiting_exit)
-
- # state /Main/SimulationFlow
- self.states["/Main/SimulationFlow"] = State(18, "/Main/SimulationFlow", self)
-
- # state /Main/SimulationFlow/Started
- self.states["/Main/SimulationFlow/Started"] = State(19, "/Main/SimulationFlow/Started", self)
-
- # state /Main/SimulationFlow/Initialized
- self.states["/Main/SimulationFlow/Initialized"] = State(20, "/Main/SimulationFlow/Initialized", self)
-
- # state /Main/SimulationFlow/InitializeDebugger
- self.states["/Main/SimulationFlow/InitializeDebugger"] = State(21, "/Main/SimulationFlow/InitializeDebugger", self)
-
- # state /Main/SimulationFlow/Waiting
- self.states["/Main/SimulationFlow/Waiting"] = State(22, "/Main/SimulationFlow/Waiting", self)
-
- # state /Main/SimulationFlow/SettleBeforeCheckTermination
- self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"] = State(23, "/Main/SimulationFlow/SettleBeforeCheckTermination", self)
- self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"].setEnter(self._Main_SimulationFlow_SettleBeforeCheckTermination_enter)
- self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"].setExit(self._Main_SimulationFlow_SettleBeforeCheckTermination_exit)
-
- # state /Main/SimulationFlow/CheckTermination
- self.states["/Main/SimulationFlow/CheckTermination"] = State(24, "/Main/SimulationFlow/CheckTermination", self)
-
- # state /Main/SimulationFlow/WaitingRealtime
- self.states["/Main/SimulationFlow/WaitingRealtime"] = State(25, "/Main/SimulationFlow/WaitingRealtime", self)
- self.states["/Main/SimulationFlow/WaitingRealtime"].setEnter(self._Main_SimulationFlow_WaitingRealtime_enter)
- self.states["/Main/SimulationFlow/WaitingRealtime"].setExit(self._Main_SimulationFlow_WaitingRealtime_exit)
-
- # state /Main/SimulationFlow/Executing
- self.states["/Main/SimulationFlow/Executing"] = State(26, "/Main/SimulationFlow/Executing", self)
-
- # state /Main/SimulationFlow/Stopped
- self.states["/Main/SimulationFlow/Stopped"] = State(27, "/Main/SimulationFlow/Stopped", self)
-
- # state /Main/GodEventManager
- self.states["/Main/GodEventManager"] = State(28, "/Main/GodEventManager", self)
-
- # state /Main/GodEventManager/Listening
- self.states["/Main/GodEventManager/Listening"] = State(29, "/Main/GodEventManager/Listening", self)
-
- # state /Main/BreakpointManager
- self.states["/Main/BreakpointManager"] = State(30, "/Main/BreakpointManager", self)
-
- # state /Main/BreakpointManager/Listening
- self.states["/Main/BreakpointManager/Listening"] = State(31, "/Main/BreakpointManager/Listening", self)
-
- # state /Stopped
- self.states["/Stopped"] = State(32, "/Stopped", self)
-
- # add children
- self.states[""].addChild(self.states["/Main"])
- self.states[""].addChild(self.states["/Stopped"])
- self.states["/Main"].addChild(self.states["/Main/ModeSelector"])
- self.states["/Main"].addChild(self.states["/Main/ChildState"])
- self.states["/Main"].addChild(self.states["/Main/Initializer"])
- self.states["/Main"].addChild(self.states["/Main/SimulationFlow"])
- self.states["/Main"].addChild(self.states["/Main/GodEventManager"])
- self.states["/Main"].addChild(self.states["/Main/BreakpointManager"])
- self.states["/Main/ModeSelector"].addChild(self.states["/Main/ModeSelector/Paused"])
- self.states["/Main/ModeSelector"].addChild(self.states["/Main/ModeSelector/Running"])
- self.states["/Main/ModeSelector/Running"].addChild(self.states["/Main/ModeSelector/Running/Continuous"])
- self.states["/Main/ModeSelector/Running"].addChild(self.states["/Main/ModeSelector/Running/Realtime"])
- self.states["/Main/ModeSelector/Running"].addChild(self.states["/Main/ModeSelector/Running/BigStep"])
- self.states["/Main/ModeSelector/Running"].addChild(self.states["/Main/ModeSelector/Running/SmallStep"])
- self.states["/Main/ChildState"].addChild(self.states["/Main/ChildState/Uninitialized"])
- self.states["/Main/ChildState"].addChild(self.states["/Main/ChildState/Initialized"])
- self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/Waiting"])
- self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/CreatingChildSimulator"])
- self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/StartingChildSimulator"])
- self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/Running"])
- self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/SettleBeforeWaiting"])
- self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Started"])
- self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Initialized"])
- self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/InitializeDebugger"])
- self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Waiting"])
- self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"])
- self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/CheckTermination"])
- self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/WaitingRealtime"])
- self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Executing"])
- self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Stopped"])
- self.states["/Main/GodEventManager"].addChild(self.states["/Main/GodEventManager/Listening"])
- self.states["/Main/BreakpointManager"].addChild(self.states["/Main/BreakpointManager/Listening"])
- self.states[""].fixTree()
- self.states[""].default_state = self.states["/Main"]
- self.states["/Main/ModeSelector"].default_state = self.states["/Main/ModeSelector/Paused"]
- self.states["/Main/ModeSelector/Running"].default_state = self.states["/Main/ModeSelector/Running/Continuous"]
- self.states["/Main/ChildState"].default_state = self.states["/Main/ChildState/Uninitialized"]
- self.states["/Main/Initializer"].default_state = self.states["/Main/Initializer/Waiting"]
- self.states["/Main/SimulationFlow"].default_state = self.states["/Main/SimulationFlow/Started"]
- self.states["/Main/GodEventManager"].default_state = self.states["/Main/GodEventManager/Listening"]
- self.states["/Main/BreakpointManager"].default_state = self.states["/Main/BreakpointManager/Listening"]
-
- # transition /Main/ModeSelector/Paused
- _Main_ModeSelector_Paused_0 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Running/SmallStep"]])
- _Main_ModeSelector_Paused_0.setAction(self._Main_ModeSelector_Paused_0_exec)
- _Main_ModeSelector_Paused_0.setTrigger(Event("SmallStep.Execute", None))
- self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_0)
- _Main_ModeSelector_Paused_1 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Running/BigStep"]])
- _Main_ModeSelector_Paused_1.setAction(self._Main_ModeSelector_Paused_1_exec)
- _Main_ModeSelector_Paused_1.setTrigger(Event("BigStep.Execute", None))
- self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_1)
- _Main_ModeSelector_Paused_2 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Running/Continuous"]])
- _Main_ModeSelector_Paused_2.setTrigger(Event("Simulation.Execute", None))
- self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_2)
- _Main_ModeSelector_Paused_3 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Running/Realtime"]])
- _Main_ModeSelector_Paused_3.setAction(self._Main_ModeSelector_Paused_3_exec)
- _Main_ModeSelector_Paused_3.setTrigger(Event("Simulation.ExecuteRealtime", None))
- self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_3)
- _Main_ModeSelector_Paused_4 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Paused"]])
- _Main_ModeSelector_Paused_4.setAction(self._Main_ModeSelector_Paused_4_exec)
- _Main_ModeSelector_Paused_4.setTrigger(Event("BigStep.Finished", None))
- self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_4)
-
- # transition /Main/ModeSelector/Running/Continuous
- _Main_ModeSelector_Running_Continuous_0 = Transition(self, self.states["/Main/ModeSelector/Running/Continuous"], [self.states["/Main/ModeSelector/Paused"]])
- _Main_ModeSelector_Running_Continuous_0.setTrigger(Event("Simulation.Pause", None))
- self.states["/Main/ModeSelector/Running/Continuous"].addTransition(_Main_ModeSelector_Running_Continuous_0)
-
- # transition /Main/ModeSelector/Running/Realtime
- _Main_ModeSelector_Running_Realtime_0 = Transition(self, self.states["/Main/ModeSelector/Running/Realtime"], [self.states["/Main/ModeSelector/Paused"]])
- _Main_ModeSelector_Running_Realtime_0.setTrigger(Event("Simulation.Pause", None))
- self.states["/Main/ModeSelector/Running/Realtime"].addTransition(_Main_ModeSelector_Running_Realtime_0)
- _Main_ModeSelector_Running_Realtime_1 = Transition(self, self.states["/Main/ModeSelector/Running/Realtime"], [self.states["/Main/ModeSelector/Running/Realtime"]])
- _Main_ModeSelector_Running_Realtime_1.setAction(self._Main_ModeSelector_Running_Realtime_1_exec)
- _Main_ModeSelector_Running_Realtime_1.setTrigger(Event("BigStep.Finished", None))
- self.states["/Main/ModeSelector/Running/Realtime"].addTransition(_Main_ModeSelector_Running_Realtime_1)
-
- # transition /Main/ModeSelector/Running/BigStep
- _Main_ModeSelector_Running_BigStep_0 = Transition(self, self.states["/Main/ModeSelector/Running/BigStep"], [self.states["/Main/ModeSelector/Paused"]])
- _Main_ModeSelector_Running_BigStep_0.setAction(self._Main_ModeSelector_Running_BigStep_0_exec)
- _Main_ModeSelector_Running_BigStep_0.setTrigger(Event("BigStep.Finished", None))
- self.states["/Main/ModeSelector/Running/BigStep"].addTransition(_Main_ModeSelector_Running_BigStep_0)
-
- # transition /Main/ModeSelector/Running/SmallStep
- _Main_ModeSelector_Running_SmallStep_0 = Transition(self, self.states["/Main/ModeSelector/Running/SmallStep"], [self.states["/Main/ModeSelector/Paused"]])
- _Main_ModeSelector_Running_SmallStep_0.setAction(self._Main_ModeSelector_Running_SmallStep_0_exec)
- _Main_ModeSelector_Running_SmallStep_0.setTrigger(Event("SmallStep.Finished", None))
- self.states["/Main/ModeSelector/Running/SmallStep"].addTransition(_Main_ModeSelector_Running_SmallStep_0)
-
- # transition /Main/ChildState/Uninitialized
- _Main_ChildState_Uninitialized_0 = Transition(self, self.states["/Main/ChildState/Uninitialized"], [self.states["/Main/ChildState/Initialized"]])
- _Main_ChildState_Uninitialized_0.setTrigger(Event("BigStep.Initialized", None))
- self.states["/Main/ChildState/Uninitialized"].addTransition(_Main_ChildState_Uninitialized_0)
-
- # transition /Main/ChildState/Initialized
- _Main_ChildState_Initialized_0 = Transition(self, self.states["/Main/ChildState/Initialized"], [self.states["/Main/ChildState/Uninitialized"]])
- _Main_ChildState_Initialized_0.setAction(self._Main_ChildState_Initialized_0_exec)
- _Main_ChildState_Initialized_0.setTrigger(Event("BigStep.Finished", None))
- self.states["/Main/ChildState/Initialized"].addTransition(_Main_ChildState_Initialized_0)
-
- # transition /Main/Initializer/Waiting
- _Main_Initializer_Waiting_0 = Transition(self, self.states["/Main/Initializer/Waiting"], [self.states["/Main/Initializer/CreatingChildSimulator"]])
- _Main_Initializer_Waiting_0.setAction(self._Main_Initializer_Waiting_0_exec)
- _Main_Initializer_Waiting_0.setTrigger(None)
- _Main_Initializer_Waiting_0.setGuard(self._Main_Initializer_Waiting_0_guard)
- self.states["/Main/Initializer/Waiting"].addTransition(_Main_Initializer_Waiting_0)
-
- # transition /Main/Initializer/CreatingChildSimulator
- _Main_Initializer_CreatingChildSimulator_0 = Transition(self, self.states["/Main/Initializer/CreatingChildSimulator"], [self.states["/Main/Initializer/StartingChildSimulator"]])
- _Main_Initializer_CreatingChildSimulator_0.setAction(self._Main_Initializer_CreatingChildSimulator_0_exec)
- _Main_Initializer_CreatingChildSimulator_0.setTrigger(Event("instance_created", None))
- self.states["/Main/Initializer/CreatingChildSimulator"].addTransition(_Main_Initializer_CreatingChildSimulator_0)
-
- # transition /Main/Initializer/StartingChildSimulator
- _Main_Initializer_StartingChildSimulator_0 = Transition(self, self.states["/Main/Initializer/StartingChildSimulator"], [self.states["/Main/Initializer/Running"]])
- _Main_Initializer_StartingChildSimulator_0.setTrigger(Event("BigStep.Initialized", None))
- self.states["/Main/Initializer/StartingChildSimulator"].addTransition(_Main_Initializer_StartingChildSimulator_0)
-
- # transition /Main/Initializer/Running
- _Main_Initializer_Running_0 = Transition(self, self.states["/Main/Initializer/Running"], [self.states["/Main/Initializer/SettleBeforeWaiting"]])
- _Main_Initializer_Running_0.setTrigger(Event("BigStep.Finished", None))
- self.states["/Main/Initializer/Running"].addTransition(_Main_Initializer_Running_0)
-
- # transition /Main/Initializer/SettleBeforeWaiting
- _Main_Initializer_SettleBeforeWaiting_0 = Transition(self, self.states["/Main/Initializer/SettleBeforeWaiting"], [self.states["/Main/Initializer/Waiting"]])
- _Main_Initializer_SettleBeforeWaiting_0.setTrigger(Event("_0after"))
- self.states["/Main/Initializer/SettleBeforeWaiting"].addTransition(_Main_Initializer_SettleBeforeWaiting_0)
-
- # transition /Main/SimulationFlow/Started
- _Main_SimulationFlow_Started_0 = Transition(self, self.states["/Main/SimulationFlow/Started"], [self.states["/Main/SimulationFlow/Initialized"]])
- _Main_SimulationFlow_Started_0.setAction(self._Main_SimulationFlow_Started_0_exec)
- _Main_SimulationFlow_Started_0.setTrigger(None)
- self.states["/Main/SimulationFlow/Started"].addTransition(_Main_SimulationFlow_Started_0)
-
- # transition /Main/SimulationFlow/Initialized
- _Main_SimulationFlow_Initialized_0 = Transition(self, self.states["/Main/SimulationFlow/Initialized"], [self.states["/Main/SimulationFlow/InitializeDebugger"]])
- _Main_SimulationFlow_Initialized_0.setTrigger(None)
- self.states["/Main/SimulationFlow/Initialized"].addTransition(_Main_SimulationFlow_Initialized_0)
-
- # transition /Main/SimulationFlow/InitializeDebugger
- _Main_SimulationFlow_InitializeDebugger_0 = Transition(self, self.states["/Main/SimulationFlow/InitializeDebugger"], [self.states["/Main/SimulationFlow/Waiting"]])
- _Main_SimulationFlow_InitializeDebugger_0.setAction(self._Main_SimulationFlow_InitializeDebugger_0_exec)
- _Main_SimulationFlow_InitializeDebugger_0.setTrigger(None)
- self.states["/Main/SimulationFlow/InitializeDebugger"].addTransition(_Main_SimulationFlow_InitializeDebugger_0)
-
- # transition /Main/SimulationFlow/Waiting
- _Main_SimulationFlow_Waiting_0 = Transition(self, self.states["/Main/SimulationFlow/Waiting"], [self.states["/Main/SimulationFlow/CheckTermination"]])
- _Main_SimulationFlow_Waiting_0.setTrigger(None)
- _Main_SimulationFlow_Waiting_0.setGuard(self._Main_SimulationFlow_Waiting_0_guard)
- self.states["/Main/SimulationFlow/Waiting"].addTransition(_Main_SimulationFlow_Waiting_0)
-
- # transition /Main/SimulationFlow/SettleBeforeCheckTermination
- _Main_SimulationFlow_SettleBeforeCheckTermination_0 = Transition(self, self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"], [self.states["/Main/SimulationFlow/CheckTermination"]])
- _Main_SimulationFlow_SettleBeforeCheckTermination_0.setTrigger(Event("_1after"))
- self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"].addTransition(_Main_SimulationFlow_SettleBeforeCheckTermination_0)
- _Main_SimulationFlow_SettleBeforeCheckTermination_1 = Transition(self, self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"], [self.states["/Main/SimulationFlow/CheckTermination"]])
- _Main_SimulationFlow_SettleBeforeCheckTermination_1.setAction(self._Main_SimulationFlow_SettleBeforeCheckTermination_1_exec)
- _Main_SimulationFlow_SettleBeforeCheckTermination_1.setTrigger(None)
- _Main_SimulationFlow_SettleBeforeCheckTermination_1.setGuard(self._Main_SimulationFlow_SettleBeforeCheckTermination_1_guard)
- self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"].addTransition(_Main_SimulationFlow_SettleBeforeCheckTermination_1)
-
- # transition /Main/SimulationFlow/CheckTermination
- _Main_SimulationFlow_CheckTermination_0 = Transition(self, self.states["/Main/SimulationFlow/CheckTermination"], [self.states["/Main/SimulationFlow/Executing"]])
- _Main_SimulationFlow_CheckTermination_0.setAction(self._Main_SimulationFlow_CheckTermination_0_exec)
- _Main_SimulationFlow_CheckTermination_0.setTrigger(None)
- _Main_SimulationFlow_CheckTermination_0.setGuard(self._Main_SimulationFlow_CheckTermination_0_guard)
- self.states["/Main/SimulationFlow/CheckTermination"].addTransition(_Main_SimulationFlow_CheckTermination_0)
- _Main_SimulationFlow_CheckTermination_1 = Transition(self, self.states["/Main/SimulationFlow/CheckTermination"], [self.states["/Main/SimulationFlow/Executing"]])
- _Main_SimulationFlow_CheckTermination_1.setAction(self._Main_SimulationFlow_CheckTermination_1_exec)
- _Main_SimulationFlow_CheckTermination_1.setTrigger(None)
- _Main_SimulationFlow_CheckTermination_1.setGuard(self._Main_SimulationFlow_CheckTermination_1_guard)
- self.states["/Main/SimulationFlow/CheckTermination"].addTransition(_Main_SimulationFlow_CheckTermination_1)
- _Main_SimulationFlow_CheckTermination_2 = Transition(self, self.states["/Main/SimulationFlow/CheckTermination"], [self.states["/Main/SimulationFlow/WaitingRealtime"]])
- _Main_SimulationFlow_CheckTermination_2.setTrigger(None)
- _Main_SimulationFlow_CheckTermination_2.setGuard(self._Main_SimulationFlow_CheckTermination_2_guard)
- self.states["/Main/SimulationFlow/CheckTermination"].addTransition(_Main_SimulationFlow_CheckTermination_2)
- _Main_SimulationFlow_CheckTermination_3 = Transition(self, self.states["/Main/SimulationFlow/CheckTermination"], [self.states["/Main/SimulationFlow/Stopped"]])
- _Main_SimulationFlow_CheckTermination_3.setAction(self._Main_SimulationFlow_CheckTermination_3_exec)
- _Main_SimulationFlow_CheckTermination_3.setTrigger(None)
- _Main_SimulationFlow_CheckTermination_3.setGuard(self._Main_SimulationFlow_CheckTermination_3_guard)
- self.states["/Main/SimulationFlow/CheckTermination"].addTransition(_Main_SimulationFlow_CheckTermination_3)
-
- # transition /Main/SimulationFlow/WaitingRealtime
- _Main_SimulationFlow_WaitingRealtime_0 = Transition(self, self.states["/Main/SimulationFlow/WaitingRealtime"], [self.states["/Main/SimulationFlow/CheckTermination"]])
- _Main_SimulationFlow_WaitingRealtime_0.setAction(self._Main_SimulationFlow_WaitingRealtime_0_exec)
- _Main_SimulationFlow_WaitingRealtime_0.setTrigger(Event("_2after"))
- _Main_SimulationFlow_WaitingRealtime_0.setGuard(self._Main_SimulationFlow_WaitingRealtime_0_guard)
- self.states["/Main/SimulationFlow/WaitingRealtime"].addTransition(_Main_SimulationFlow_WaitingRealtime_0)
- _Main_SimulationFlow_WaitingRealtime_1 = Transition(self, self.states["/Main/SimulationFlow/WaitingRealtime"], [self.states["/Main/SimulationFlow/CheckTermination"]])
- _Main_SimulationFlow_WaitingRealtime_1.setAction(self._Main_SimulationFlow_WaitingRealtime_1_exec)
- _Main_SimulationFlow_WaitingRealtime_1.setTrigger(None)
- _Main_SimulationFlow_WaitingRealtime_1.setGuard(self._Main_SimulationFlow_WaitingRealtime_1_guard)
- self.states["/Main/SimulationFlow/WaitingRealtime"].addTransition(_Main_SimulationFlow_WaitingRealtime_1)
- _Main_SimulationFlow_WaitingRealtime_2 = Transition(self, self.states["/Main/SimulationFlow/WaitingRealtime"], [self.states["/Main/SimulationFlow/Executing"]])
- _Main_SimulationFlow_WaitingRealtime_2.setAction(self._Main_SimulationFlow_WaitingRealtime_2_exec)
- _Main_SimulationFlow_WaitingRealtime_2.setTrigger(None)
- _Main_SimulationFlow_WaitingRealtime_2.setGuard(self._Main_SimulationFlow_WaitingRealtime_2_guard)
- self.states["/Main/SimulationFlow/WaitingRealtime"].addTransition(_Main_SimulationFlow_WaitingRealtime_2)
-
- # transition /Main/SimulationFlow/Executing
- _Main_SimulationFlow_Executing_0 = Transition(self, self.states["/Main/SimulationFlow/Executing"], [self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"]])
- _Main_SimulationFlow_Executing_0.setAction(self._Main_SimulationFlow_Executing_0_exec)
- _Main_SimulationFlow_Executing_0.setTrigger(Event("BigStep.Finished", None))
- self.states["/Main/SimulationFlow/Executing"].addTransition(_Main_SimulationFlow_Executing_0)
-
- # transition /Main/GodEventManager/Listening
- _Main_GodEventManager_Listening_0 = Transition(self, self.states["/Main/GodEventManager/Listening"], [self.states["/Main/GodEventManager/Listening"]])
- _Main_GodEventManager_Listening_0.setAction(self._Main_GodEventManager_Listening_0_exec)
- _Main_GodEventManager_Listening_0.setTrigger(Event("Simulation.GodEvent", None))
- _Main_GodEventManager_Listening_0.setGuard(self._Main_GodEventManager_Listening_0_guard)
- self.states["/Main/GodEventManager/Listening"].addTransition(_Main_GodEventManager_Listening_0)
-
- # transition /Main/BreakpointManager/Listening
- _Main_BreakpointManager_Listening_0 = Transition(self, self.states["/Main/BreakpointManager/Listening"], [self.states["/Main/BreakpointManager/Listening"]])
- _Main_BreakpointManager_Listening_0.setAction(self._Main_BreakpointManager_Listening_0_exec)
- _Main_BreakpointManager_Listening_0.setTrigger(Event("Breakpoint.Add", None))
- self.states["/Main/BreakpointManager/Listening"].addTransition(_Main_BreakpointManager_Listening_0)
- _Main_BreakpointManager_Listening_1 = Transition(self, self.states["/Main/BreakpointManager/Listening"], [self.states["/Main/BreakpointManager/Listening"]])
- _Main_BreakpointManager_Listening_1.setAction(self._Main_BreakpointManager_Listening_1_exec)
- _Main_BreakpointManager_Listening_1.setTrigger(Event("Breakpoint.Del", None))
- self.states["/Main/BreakpointManager/Listening"].addTransition(_Main_BreakpointManager_Listening_1)
- _Main_BreakpointManager_Listening_2 = Transition(self, self.states["/Main/BreakpointManager/Listening"], [self.states["/Main/BreakpointManager/Listening"]])
- _Main_BreakpointManager_Listening_2.setAction(self._Main_BreakpointManager_Listening_2_exec)
- _Main_BreakpointManager_Listening_2.setTrigger(Event("Breakpoint.Toggle", None))
- self.states["/Main/BreakpointManager/Listening"].addTransition(_Main_BreakpointManager_Listening_2)
- _Main_BreakpointManager_Listening_3 = Transition(self, self.states["/Main/BreakpointManager/Listening"], [self.states["/Main/BreakpointManager/Listening"]])
- _Main_BreakpointManager_Listening_3.setAction(self._Main_BreakpointManager_Listening_3_exec)
- _Main_BreakpointManager_Listening_3.setTrigger(Event("Breakpoint.List", None))
- self.states["/Main/BreakpointManager/Listening"].addTransition(_Main_BreakpointManager_Listening_3)
-
- # transition /Main/ModeSelector/Running
- _Main_ModeSelector_Running_0 = Transition(self, self.states["/Main/ModeSelector/Running"], [self.states["/Main/ModeSelector/Paused"]])
- _Main_ModeSelector_Running_0.setTrigger(Event("Simulation.Finished", None))
- self.states["/Main/ModeSelector/Running"].addTransition(_Main_ModeSelector_Running_0)
- _Main_ModeSelector_Running_1 = Transition(self, self.states["/Main/ModeSelector/Running"], [self.states["/Main/ModeSelector/Paused"]])
- _Main_ModeSelector_Running_1.setAction(self._Main_ModeSelector_Running_1_exec)
- _Main_ModeSelector_Running_1.setTrigger(None)
- _Main_ModeSelector_Running_1.setGuard(self._Main_ModeSelector_Running_1_guard)
- self.states["/Main/ModeSelector/Running"].addTransition(_Main_ModeSelector_Running_1)
-
- def _Main_Initializer_SettleBeforeWaiting_enter(self):
- self.addTimer(0, self.sccd_yield())
-
- def _Main_Initializer_SettleBeforeWaiting_exit(self):
- self.removeTimer(0)
-
- def _Main_SimulationFlow_SettleBeforeCheckTermination_enter(self):
- self.addTimer(1, self.sccd_yield())
-
- def _Main_SimulationFlow_SettleBeforeCheckTermination_exit(self):
- self.removeTimer(1)
-
- def _Main_SimulationFlow_WaitingRealtime_enter(self):
- self.addTimer(2, self.sccd_yield())
-
- def _Main_SimulationFlow_WaitingRealtime_exit(self):
- self.removeTimer(2)
-
- def _Main_ModeSelector_Running_1_exec(self, parameters):
- self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("Breakpoint.Triggered", None, [self.triggered_bp, self.clock, self.state])]))
-
- def _Main_ModeSelector_Running_1_guard(self, parameters):
- return self.breakpointTriggers(self.inState(["/Main/ModeSelector/Running/Realtime"]))
-
- def _Main_ModeSelector_Paused_0_exec(self, parameters):
- self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("SmallStep.Execute", None, [])]))
-
- def _Main_ModeSelector_Paused_1_exec(self, parameters):
- self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("BigStep.Execute", None, [])]))
-
- def _Main_ModeSelector_Paused_3_exec(self, parameters):
- realtime_scale = parameters[0]
- self.realtime_scale = float(realtime_scale)
- # If the simulation was paused, we need to reset the start time of the simulation.
- # The start time of the simulation is equal to the point in wall-clock time where simulated time is 0.
- # 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.
- # 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)
- self.realtime_start_time = accurate_time.time() - (self.clock / self.realtime_scale)
-
- def _Main_ModeSelector_Paused_4_exec(self, parameters):
- clock = parameters[0]
- timeNext = parameters[1]
- elapsed = parameters[2]
- eventList = parameters[3]
- state = parameters[4]
- self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("BigStep.Finished", None, [clock, timeNext, elapsed, eventList, state])]))
-
- def _Main_ModeSelector_Running_Realtime_1_exec(self, parameters):
- clock = parameters[0]
- timeNext = parameters[1]
- elapsed = parameters[2]
- eventList = parameters[3]
- state = parameters[4]
- self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("BigStep.Finished", None, [clock, timeNext, elapsed, eventList, state])]))
-
- def _Main_ModeSelector_Running_BigStep_0_exec(self, parameters):
- clock = parameters[0]
- timeNext = parameters[1]
- elapsed = parameters[2]
- eventList = parameters[3]
- state = parameters[4]
- self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("BigStep.Finished", None, [clock, timeNext, elapsed, eventList, state])]))
-
- def _Main_ModeSelector_Running_SmallStep_0_exec(self, parameters):
- selectedTransition = parameters[0]
- currentEvent = parameters[1]
- eventList = parameters[2]
- elapsed = parameters[3]
- state = parameters[4]
- self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("SmallStep.Finished", None, [selectedTransition, currentEvent, eventList, elapsed, state])]))
-
- def _Main_ChildState_Initialized_0_exec(self, parameters):
- self.big_step.outputEventOM(Event("delete_instance", None, [self, 'child_simulator']))
-
- def _Main_Initializer_Waiting_0_exec(self, parameters):
- 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]))
-
- def _Main_Initializer_Waiting_0_guard(self, parameters):
- return self.inState(["/Main/ModeSelector/Running"]) and self.inState(["/Main/ChildState/Uninitialized"]) and not self.endCondition()
-
- def _Main_Initializer_CreatingChildSimulator_0_exec(self, parameters):
- self.big_step.outputEventOM(Event("start_instance", None, [self, 'child_simulator']))
-
- def _Main_SimulationFlow_Started_0_exec(self, parameters):
- self.initialize()
-
- def _Main_SimulationFlow_InitializeDebugger_0_exec(self, parameters):
- self.initializeDebugger()
- self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("Simulation.Initialized", None, [])]))
-
- def _Main_SimulationFlow_Waiting_0_guard(self, parameters):
- return self.inState(["/Main/ModeSelector/Running"])
-
- def _Main_SimulationFlow_SettleBeforeCheckTermination_1_exec(self, parameters):
- self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("Simulation.Paused", None, [self.clock, self.state])]))
-
- def _Main_SimulationFlow_SettleBeforeCheckTermination_1_guard(self, parameters):
- return self.inState(["/Main/ModeSelector/Paused"])
-
- def _Main_SimulationFlow_CheckTermination_0_exec(self, parameters):
- self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("BigStep.Execute", None, [])]))
-
- def _Main_SimulationFlow_CheckTermination_0_guard(self, parameters):
- return (self.inState(["/Main/ModeSelector/Running/Continuous"]) or self.inState(["/Main/ModeSelector/Running/BigStep"])) and self.inState(["/Main/ChildState/Initialized"]) and not self.endCondition()
-
- def _Main_SimulationFlow_CheckTermination_1_exec(self, parameters):
- self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("SmallStep.Execute", None, [])]))
-
- def _Main_SimulationFlow_CheckTermination_1_guard(self, parameters):
- return self.inState(["/Main/ModeSelector/Running/SmallStep"]) and self.inState(["/Main/ChildState/Initialized"]) and not self.endCondition()
-
- def _Main_SimulationFlow_CheckTermination_2_guard(self, parameters):
- return self.inState(["/Main/ModeSelector/Running/Realtime"]) and self.inState(["/Main/ChildState/Initialized"]) and not self.endCondition()
-
- def _Main_SimulationFlow_CheckTermination_3_exec(self, parameters):
- # print '>>> simulation executed <<<'
- self.finalize()
- self.raiseInternalEvent(Event("Simulation.Finished", None, []))
- self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("Simulation.Finished", None, [self.clock, self.state])]))
-
- def _Main_SimulationFlow_CheckTermination_3_guard(self, parameters):
- return self.endCondition()
-
- def _Main_SimulationFlow_WaitingRealtime_0_exec(self, parameters):
- self.syncSimulatedTime()
-
- def _Main_SimulationFlow_WaitingRealtime_0_guard(self, parameters):
- return self.inState(["/Main/ModeSelector/Running"])
-
- def _Main_SimulationFlow_WaitingRealtime_1_exec(self, parameters):
- self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("Simulation.Paused", None, [self.clock, self.state])]))
-
- def _Main_SimulationFlow_WaitingRealtime_1_guard(self, parameters):
- return self.inState(["/Main/ModeSelector/Paused"]) and (not ((self.waitTime() / 1000.0) <= self.sccd_yield()))
-
- def _Main_SimulationFlow_WaitingRealtime_2_exec(self, parameters):
- self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("BigStep.Execute", None, [])]))
-
- def _Main_SimulationFlow_WaitingRealtime_2_guard(self, parameters):
- return self.waitTime() / 1000.0 <= self.sccd_yield()
-
- def _Main_SimulationFlow_Executing_0_exec(self, parameters):
- clock = parameters[0]
- timeNext = parameters[1]
- elapsed = parameters[2]
- eventList = parameters[3]
- state = parameters[4]
- self.clock = clock
- self.timeNext = timeNext
- self.elapsed = elapsed
- self.eventList = eventList
- self.state = state
-
- def _Main_GodEventManager_Listening_0_exec(self, parameters):
- block_name = parameters[0]
- new_val = parameters[1]
- result = self.godEvent(block_name, new_val)
- self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("Simulation.GodEventResult", None, [result])]))
-
- def _Main_GodEventManager_Listening_0_guard(self, parameters):
- block_name = parameters[0]
- new_val = parameters[1]
- return self.inState(["/Main/ModeSelector/Paused"])
-
- def _Main_BreakpointManager_Listening_0_exec(self, parameters):
- name = parameters[0]
- function = parameters[1]
- enabled = parameters[2]
- disable_on_trigger = parameters[3]
- result = self.addBreakpoint(name, function, bool(enabled), bool(disable_on_trigger))
- self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("Breakpoint.AddResult", None, [result])]))
-
- def _Main_BreakpointManager_Listening_1_exec(self, parameters):
- name = parameters[0]
- result = self.delBreakpoint(name)
- self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("Breakpoint.DelResult", None, [result])]))
-
- def _Main_BreakpointManager_Listening_2_exec(self, parameters):
- name = parameters[0]
- result = self.toggleBreakpoint(name)
- self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("Breakpoint.ToggleResult", None, [result])]))
-
- def _Main_BreakpointManager_Listening_3_exec(self, parameters):
- self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("Breakpoint.ListResult", None, [[bp.name for bp in self.breakpoints]])]))
-
- def initializeStatechart(self):
- # enter default state
- self.default_targets = self.states["/Main"].getEffectiveTargetStates()
- RuntimeClassBase.initializeStatechart(self)
- class FSASimulator_BigStep(RuntimeClassBase):
- def __init__(self, controller, model, state, clock, elapsed, eventList, timeNext, delta):
- RuntimeClassBase.__init__(self, controller)
-
- self.semantics.big_step_maximality = StatechartSemantics.TakeMany
- self.semantics.internal_event_lifeline = StatechartSemantics.Queue
- self.semantics.input_event_lifeline = StatechartSemantics.FirstComboStep
- self.semantics.priority = StatechartSemantics.SourceParent
- self.semantics.concurrency = StatechartSemantics.Single
-
- # build Statechart structure
- self.build_statechart_structure()
-
- # call user defined constructor
- FSASimulator_BigStep.user_defined_constructor(self, model, state, clock, elapsed, eventList, timeNext, delta)
-
- def user_defined_constructor(self, model, state, clock, elapsed, eventList, timeNext, delta):
- self.model = model
- self.state = state
- self.clock = clock
- self.elapsed = elapsed
- self.eventList = eventList
- self.timeNext = timeNext
- self.delta = delta
-
- def user_defined_destructor(self):
- pass
-
-
- # user defined method
- def initialize(self):
- self.currentEvent = self.getInputEventAt(self.clock / 1000.0)
- self.selectedTransition = self.model.getTransitionFrom(self.state, self.currentEvent, self.elapsed)
- self.small_step_executed = False
-
-
- # user defined method
- def initializeDebugger(self):
- pass
-
-
- # user defined method
- def endCondition(self):
- ''' We make sure to "execute" a small step, even if no transition was selected. '''
- return self.small_step_executed and self.selectedTransition == None
-
-
- # user defined method
- def finalize(self):
- self.advanceTime()
-
-
- # user defined method
- def advanceTime(self):
- self.clock = self.timeNext
- self.elapsed = self.elapsed + self.delta
- self.timeNext = self.clock + self.delta
-
-
- # user defined method
- def getInputEventAt(self, time):
- return self.eventList.getInputAt(time)
-
-
- # builds Statechart structure
- def build_statechart_structure(self):
-
- # state <root>
- self.states[""] = State(0, "", self)
-
- # state /Main
- self.states["/Main"] = ParallelState(1, "/Main", self)
-
- # state /Main/ModeSelector
- self.states["/Main/ModeSelector"] = State(2, "/Main/ModeSelector", self)
-
- # state /Main/ModeSelector/Paused
- self.states["/Main/ModeSelector/Paused"] = State(3, "/Main/ModeSelector/Paused", self)
-
- # state /Main/ModeSelector/Running
- self.states["/Main/ModeSelector/Running"] = State(4, "/Main/ModeSelector/Running", self)
-
- # state /Main/ModeSelector/Running/Continuous
- self.states["/Main/ModeSelector/Running/Continuous"] = State(5, "/Main/ModeSelector/Running/Continuous", self)
-
- # state /Main/ModeSelector/Running/SmallStep
- self.states["/Main/ModeSelector/Running/SmallStep"] = State(6, "/Main/ModeSelector/Running/SmallStep", self)
-
- # state /Main/ChildState
- self.states["/Main/ChildState"] = State(7, "/Main/ChildState", self)
-
- # state /Main/ChildState/Uninitialized
- self.states["/Main/ChildState/Uninitialized"] = State(8, "/Main/ChildState/Uninitialized", self)
-
- # state /Main/ChildState/Initialized
- self.states["/Main/ChildState/Initialized"] = State(9, "/Main/ChildState/Initialized", self)
-
- # state /Main/Initializer
- self.states["/Main/Initializer"] = State(10, "/Main/Initializer", self)
-
- # state /Main/Initializer/Waiting
- self.states["/Main/Initializer/Waiting"] = State(11, "/Main/Initializer/Waiting", self)
-
- # state /Main/Initializer/CreatingChildSimulator
- self.states["/Main/Initializer/CreatingChildSimulator"] = State(12, "/Main/Initializer/CreatingChildSimulator", self)
-
- # state /Main/Initializer/StartingChildSimulator
- self.states["/Main/Initializer/StartingChildSimulator"] = State(13, "/Main/Initializer/StartingChildSimulator", self)
-
- # state /Main/Initializer/Running
- self.states["/Main/Initializer/Running"] = State(14, "/Main/Initializer/Running", self)
-
- # state /Main/Initializer/SettleBeforeWaiting
- self.states["/Main/Initializer/SettleBeforeWaiting"] = State(15, "/Main/Initializer/SettleBeforeWaiting", self)
- self.states["/Main/Initializer/SettleBeforeWaiting"].setEnter(self._Main_Initializer_SettleBeforeWaiting_enter)
- self.states["/Main/Initializer/SettleBeforeWaiting"].setExit(self._Main_Initializer_SettleBeforeWaiting_exit)
-
- # state /Main/SimulationFlow
- self.states["/Main/SimulationFlow"] = State(16, "/Main/SimulationFlow", self)
-
- # state /Main/SimulationFlow/Started
- self.states["/Main/SimulationFlow/Started"] = State(17, "/Main/SimulationFlow/Started", self)
-
- # state /Main/SimulationFlow/Initialized
- self.states["/Main/SimulationFlow/Initialized"] = State(18, "/Main/SimulationFlow/Initialized", self)
-
- # state /Main/SimulationFlow/InitializeDebugger
- self.states["/Main/SimulationFlow/InitializeDebugger"] = State(19, "/Main/SimulationFlow/InitializeDebugger", self)
-
- # state /Main/SimulationFlow/Waiting
- self.states["/Main/SimulationFlow/Waiting"] = State(20, "/Main/SimulationFlow/Waiting", self)
-
- # state /Main/SimulationFlow/SettleBeforeCheckTermination
- self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"] = State(21, "/Main/SimulationFlow/SettleBeforeCheckTermination", self)
- self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"].setEnter(self._Main_SimulationFlow_SettleBeforeCheckTermination_enter)
- self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"].setExit(self._Main_SimulationFlow_SettleBeforeCheckTermination_exit)
-
- # state /Main/SimulationFlow/CheckTermination
- self.states["/Main/SimulationFlow/CheckTermination"] = State(22, "/Main/SimulationFlow/CheckTermination", self)
-
- # state /Main/SimulationFlow/Executing
- self.states["/Main/SimulationFlow/Executing"] = State(23, "/Main/SimulationFlow/Executing", self)
-
- # state /Main/SimulationFlow/Stopped
- self.states["/Main/SimulationFlow/Stopped"] = State(24, "/Main/SimulationFlow/Stopped", self)
-
- # state /Stopped
- self.states["/Stopped"] = State(25, "/Stopped", self)
-
- # add children
- self.states[""].addChild(self.states["/Main"])
- self.states[""].addChild(self.states["/Stopped"])
- self.states["/Main"].addChild(self.states["/Main/ModeSelector"])
- self.states["/Main"].addChild(self.states["/Main/ChildState"])
- self.states["/Main"].addChild(self.states["/Main/Initializer"])
- self.states["/Main"].addChild(self.states["/Main/SimulationFlow"])
- self.states["/Main/ModeSelector"].addChild(self.states["/Main/ModeSelector/Paused"])
- self.states["/Main/ModeSelector"].addChild(self.states["/Main/ModeSelector/Running"])
- self.states["/Main/ModeSelector/Running"].addChild(self.states["/Main/ModeSelector/Running/Continuous"])
- self.states["/Main/ModeSelector/Running"].addChild(self.states["/Main/ModeSelector/Running/SmallStep"])
- self.states["/Main/ChildState"].addChild(self.states["/Main/ChildState/Uninitialized"])
- self.states["/Main/ChildState"].addChild(self.states["/Main/ChildState/Initialized"])
- self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/Waiting"])
- self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/CreatingChildSimulator"])
- self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/StartingChildSimulator"])
- self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/Running"])
- self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/SettleBeforeWaiting"])
- self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Started"])
- self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Initialized"])
- self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/InitializeDebugger"])
- self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Waiting"])
- self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"])
- self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/CheckTermination"])
- self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Executing"])
- self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Stopped"])
- self.states[""].fixTree()
- self.states[""].default_state = self.states["/Main"]
- self.states["/Main/ModeSelector"].default_state = self.states["/Main/ModeSelector/Paused"]
- self.states["/Main/ModeSelector/Running"].default_state = self.states["/Main/ModeSelector/Running/Continuous"]
- self.states["/Main/ChildState"].default_state = self.states["/Main/ChildState/Uninitialized"]
- self.states["/Main/Initializer"].default_state = self.states["/Main/Initializer/Waiting"]
- self.states["/Main/SimulationFlow"].default_state = self.states["/Main/SimulationFlow/Started"]
-
- # transition /Main/ModeSelector/Paused
- _Main_ModeSelector_Paused_0 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Running/SmallStep"]])
- _Main_ModeSelector_Paused_0.setAction(self._Main_ModeSelector_Paused_0_exec)
- _Main_ModeSelector_Paused_0.setTrigger(Event("SmallStep.Execute", None))
- self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_0)
- _Main_ModeSelector_Paused_1 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Running/Continuous"]])
- _Main_ModeSelector_Paused_1.setTrigger(Event("BigStep.Execute", None))
- self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_1)
-
- # transition /Main/ModeSelector/Running/SmallStep
- _Main_ModeSelector_Running_SmallStep_0 = Transition(self, self.states["/Main/ModeSelector/Running/SmallStep"], [self.states["/Main/ModeSelector/Paused"]])
- _Main_ModeSelector_Running_SmallStep_0.setAction(self._Main_ModeSelector_Running_SmallStep_0_exec)
- _Main_ModeSelector_Running_SmallStep_0.setTrigger(Event("SmallStep.Finished", None))
- self.states["/Main/ModeSelector/Running/SmallStep"].addTransition(_Main_ModeSelector_Running_SmallStep_0)
-
- # transition /Main/ChildState/Uninitialized
- _Main_ChildState_Uninitialized_0 = Transition(self, self.states["/Main/ChildState/Uninitialized"], [self.states["/Main/ChildState/Initialized"]])
- _Main_ChildState_Uninitialized_0.setTrigger(Event("SmallStep.Initialized", None))
- self.states["/Main/ChildState/Uninitialized"].addTransition(_Main_ChildState_Uninitialized_0)
-
- # transition /Main/ChildState/Initialized
- _Main_ChildState_Initialized_0 = Transition(self, self.states["/Main/ChildState/Initialized"], [self.states["/Main/ChildState/Uninitialized"]])
- _Main_ChildState_Initialized_0.setAction(self._Main_ChildState_Initialized_0_exec)
- _Main_ChildState_Initialized_0.setTrigger(Event("SmallStep.Finished", None))
- self.states["/Main/ChildState/Initialized"].addTransition(_Main_ChildState_Initialized_0)
-
- # transition /Main/Initializer/Waiting
- _Main_Initializer_Waiting_0 = Transition(self, self.states["/Main/Initializer/Waiting"], [self.states["/Main/Initializer/CreatingChildSimulator"]])
- _Main_Initializer_Waiting_0.setAction(self._Main_Initializer_Waiting_0_exec)
- _Main_Initializer_Waiting_0.setTrigger(None)
- _Main_Initializer_Waiting_0.setGuard(self._Main_Initializer_Waiting_0_guard)
- self.states["/Main/Initializer/Waiting"].addTransition(_Main_Initializer_Waiting_0)
-
- # transition /Main/Initializer/CreatingChildSimulator
- _Main_Initializer_CreatingChildSimulator_0 = Transition(self, self.states["/Main/Initializer/CreatingChildSimulator"], [self.states["/Main/Initializer/StartingChildSimulator"]])
- _Main_Initializer_CreatingChildSimulator_0.setAction(self._Main_Initializer_CreatingChildSimulator_0_exec)
- _Main_Initializer_CreatingChildSimulator_0.setTrigger(Event("instance_created", None))
- self.states["/Main/Initializer/CreatingChildSimulator"].addTransition(_Main_Initializer_CreatingChildSimulator_0)
-
- # transition /Main/Initializer/StartingChildSimulator
- _Main_Initializer_StartingChildSimulator_0 = Transition(self, self.states["/Main/Initializer/StartingChildSimulator"], [self.states["/Main/Initializer/Running"]])
- _Main_Initializer_StartingChildSimulator_0.setTrigger(Event("SmallStep.Initialized", None))
- self.states["/Main/Initializer/StartingChildSimulator"].addTransition(_Main_Initializer_StartingChildSimulator_0)
-
- # transition /Main/Initializer/Running
- _Main_Initializer_Running_0 = Transition(self, self.states["/Main/Initializer/Running"], [self.states["/Main/Initializer/SettleBeforeWaiting"]])
- _Main_Initializer_Running_0.setTrigger(Event("SmallStep.Finished", None))
- self.states["/Main/Initializer/Running"].addTransition(_Main_Initializer_Running_0)
-
- # transition /Main/Initializer/SettleBeforeWaiting
- _Main_Initializer_SettleBeforeWaiting_0 = Transition(self, self.states["/Main/Initializer/SettleBeforeWaiting"], [self.states["/Main/Initializer/Waiting"]])
- _Main_Initializer_SettleBeforeWaiting_0.setTrigger(Event("_0after"))
- self.states["/Main/Initializer/SettleBeforeWaiting"].addTransition(_Main_Initializer_SettleBeforeWaiting_0)
-
- # transition /Main/SimulationFlow/Started
- _Main_SimulationFlow_Started_0 = Transition(self, self.states["/Main/SimulationFlow/Started"], [self.states["/Main/SimulationFlow/Initialized"]])
- _Main_SimulationFlow_Started_0.setAction(self._Main_SimulationFlow_Started_0_exec)
- _Main_SimulationFlow_Started_0.setTrigger(None)
- self.states["/Main/SimulationFlow/Started"].addTransition(_Main_SimulationFlow_Started_0)
-
- # transition /Main/SimulationFlow/Initialized
- _Main_SimulationFlow_Initialized_0 = Transition(self, self.states["/Main/SimulationFlow/Initialized"], [self.states["/Main/SimulationFlow/InitializeDebugger"]])
- _Main_SimulationFlow_Initialized_0.setTrigger(None)
- self.states["/Main/SimulationFlow/Initialized"].addTransition(_Main_SimulationFlow_Initialized_0)
-
- # transition /Main/SimulationFlow/InitializeDebugger
- _Main_SimulationFlow_InitializeDebugger_0 = Transition(self, self.states["/Main/SimulationFlow/InitializeDebugger"], [self.states["/Main/SimulationFlow/Waiting"]])
- _Main_SimulationFlow_InitializeDebugger_0.setAction(self._Main_SimulationFlow_InitializeDebugger_0_exec)
- _Main_SimulationFlow_InitializeDebugger_0.setTrigger(None)
- self.states["/Main/SimulationFlow/InitializeDebugger"].addTransition(_Main_SimulationFlow_InitializeDebugger_0)
-
- # transition /Main/SimulationFlow/Waiting
- _Main_SimulationFlow_Waiting_0 = Transition(self, self.states["/Main/SimulationFlow/Waiting"], [self.states["/Main/SimulationFlow/CheckTermination"]])
- _Main_SimulationFlow_Waiting_0.setTrigger(None)
- _Main_SimulationFlow_Waiting_0.setGuard(self._Main_SimulationFlow_Waiting_0_guard)
- self.states["/Main/SimulationFlow/Waiting"].addTransition(_Main_SimulationFlow_Waiting_0)
-
- # transition /Main/SimulationFlow/SettleBeforeCheckTermination
- _Main_SimulationFlow_SettleBeforeCheckTermination_0 = Transition(self, self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"], [self.states["/Main/SimulationFlow/CheckTermination"]])
- _Main_SimulationFlow_SettleBeforeCheckTermination_0.setTrigger(Event("_1after"))
- self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"].addTransition(_Main_SimulationFlow_SettleBeforeCheckTermination_0)
-
- # transition /Main/SimulationFlow/CheckTermination
- _Main_SimulationFlow_CheckTermination_0 = Transition(self, self.states["/Main/SimulationFlow/CheckTermination"], [self.states["/Main/SimulationFlow/Executing"]])
- _Main_SimulationFlow_CheckTermination_0.setAction(self._Main_SimulationFlow_CheckTermination_0_exec)
- _Main_SimulationFlow_CheckTermination_0.setTrigger(None)
- _Main_SimulationFlow_CheckTermination_0.setGuard(self._Main_SimulationFlow_CheckTermination_0_guard)
- self.states["/Main/SimulationFlow/CheckTermination"].addTransition(_Main_SimulationFlow_CheckTermination_0)
- _Main_SimulationFlow_CheckTermination_1 = Transition(self, self.states["/Main/SimulationFlow/CheckTermination"], [self.states["/Main/SimulationFlow/Stopped"]])
- _Main_SimulationFlow_CheckTermination_1.setAction(self._Main_SimulationFlow_CheckTermination_1_exec)
- _Main_SimulationFlow_CheckTermination_1.setTrigger(None)
- _Main_SimulationFlow_CheckTermination_1.setGuard(self._Main_SimulationFlow_CheckTermination_1_guard)
- self.states["/Main/SimulationFlow/CheckTermination"].addTransition(_Main_SimulationFlow_CheckTermination_1)
-
- # transition /Main/SimulationFlow/Executing
- _Main_SimulationFlow_Executing_0 = Transition(self, self.states["/Main/SimulationFlow/Executing"], [self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"]])
- _Main_SimulationFlow_Executing_0.setAction(self._Main_SimulationFlow_Executing_0_exec)
- _Main_SimulationFlow_Executing_0.setTrigger(Event("SmallStep.Finished", None))
- self.states["/Main/SimulationFlow/Executing"].addTransition(_Main_SimulationFlow_Executing_0)
-
- # transition /Main/ModeSelector/Running
- _Main_ModeSelector_Running_0 = Transition(self, self.states["/Main/ModeSelector/Running"], [self.states["/Main/ModeSelector/Paused"]])
- _Main_ModeSelector_Running_0.setTrigger(Event("BigStep.Finished", None))
- self.states["/Main/ModeSelector/Running"].addTransition(_Main_ModeSelector_Running_0)
-
- def _Main_Initializer_SettleBeforeWaiting_enter(self):
- self.addTimer(0, self.sccd_yield())
-
- def _Main_Initializer_SettleBeforeWaiting_exit(self):
- self.removeTimer(0)
-
- def _Main_SimulationFlow_SettleBeforeCheckTermination_enter(self):
- self.addTimer(1, self.sccd_yield())
-
- def _Main_SimulationFlow_SettleBeforeCheckTermination_exit(self):
- self.removeTimer(1)
-
- def _Main_ModeSelector_Paused_0_exec(self, parameters):
- self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("SmallStep.Execute", None, [])]))
-
- def _Main_ModeSelector_Running_SmallStep_0_exec(self, parameters):
- selectedTransition = parameters[0]
- currentEvent = parameters[1]
- eventList = parameters[2]
- elapsed = parameters[3]
- newState = parameters[4]
- self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("SmallStep.Finished", None, [selectedTransition, currentEvent, eventList, elapsed, newState])]))
-
- def _Main_ChildState_Initialized_0_exec(self, parameters):
- self.big_step.outputEventOM(Event("delete_instance", None, [self, 'child_simulator']))
-
- def _Main_Initializer_Waiting_0_exec(self, parameters):
- 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]))
-
- def _Main_Initializer_Waiting_0_guard(self, parameters):
- return self.inState(["/Main/ModeSelector/Running"]) and self.inState(["/Main/ChildState/Uninitialized"]) and not self.endCondition()
-
- def _Main_Initializer_CreatingChildSimulator_0_exec(self, parameters):
- self.big_step.outputEventOM(Event("start_instance", None, [self, 'child_simulator']))
-
- def _Main_SimulationFlow_Started_0_exec(self, parameters):
- self.initialize()
-
- def _Main_SimulationFlow_InitializeDebugger_0_exec(self, parameters):
- self.initializeDebugger()
- self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("BigStep.Initialized", None, [])]))
-
- def _Main_SimulationFlow_Waiting_0_guard(self, parameters):
- return self.inState(["/Main/ModeSelector/Running"])
-
- def _Main_SimulationFlow_CheckTermination_0_exec(self, parameters):
- self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("SmallStep.Execute", None, [])]))
-
- def _Main_SimulationFlow_CheckTermination_0_guard(self, parameters):
- return (self.inState(["/Main/ModeSelector/Running/Continuous"]) or self.inState(["/Main/ModeSelector/Running/SmallStep"])) and self.inState(["/Main/ChildState/Initialized"]) and not self.endCondition()
-
- def _Main_SimulationFlow_CheckTermination_1_exec(self, parameters):
- # print '>>> big step executed <<<'
- self.finalize()
- self.raiseInternalEvent(Event("BigStep.Finished", None, []))
- self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("BigStep.Finished", None, [self.clock, self.timeNext, self.elapsed, self.eventList, self.state])]))
-
- def _Main_SimulationFlow_CheckTermination_1_guard(self, parameters):
- return self.endCondition()
-
- def _Main_SimulationFlow_Executing_0_exec(self, parameters):
- selectedTransition = parameters[0]
- currentEvent = parameters[1]
- eventList = parameters[2]
- elapsed = parameters[3]
- newState = parameters[4]
- self.selectedTransition = selectedTransition
- self.currentEvent = currentEvent
- self.eventList = eventList
- self.elapsed = elapsed
- self.state = newState
- self.small_step_executed = True
-
- def initializeStatechart(self):
- # enter default state
- self.default_targets = self.states["/Main"].getEffectiveTargetStates()
- RuntimeClassBase.initializeStatechart(self)
- class FSASimulator_SmallStep(RuntimeClassBase):
- def __init__(self, controller, model, state, clock, elapsed, selectedTransition, currentEvent, eventList):
- RuntimeClassBase.__init__(self, controller)
-
- self.semantics.big_step_maximality = StatechartSemantics.TakeMany
- self.semantics.internal_event_lifeline = StatechartSemantics.Queue
- self.semantics.input_event_lifeline = StatechartSemantics.FirstComboStep
- self.semantics.priority = StatechartSemantics.SourceParent
- self.semantics.concurrency = StatechartSemantics.Single
-
- # build Statechart structure
- self.build_statechart_structure()
-
- # call user defined constructor
- FSASimulator_SmallStep.user_defined_constructor(self, model, state, clock, elapsed, selectedTransition, currentEvent, eventList)
-
- def user_defined_constructor(self, model, state, clock, elapsed, selectedTransition, currentEvent, eventList):
- self.model = model
- self.state = state
- self.clock = clock
- self.elapsed = elapsed
- self.selectedTransition = selectedTransition
- self.currentEvent = currentEvent
- self.eventList = eventList
-
- def user_defined_destructor(self):
- pass
-
-
- # user defined method
- def initialize(self):
- self.small_step_executed = False
-
-
- # user defined method
- def initializeDebugger(self):
- pass
-
-
- # user defined method
- def endCondition(self):
- ''' In case nothing is to be done, we immediately end. '''
- return not self.selectedTransition or self.small_step_executed
-
-
- # user defined method
- def finalize(self):
- self.elapsed = 0
- self.processEvent(self.currentEvent)
- self.currentEvent = self.getInputEventAt(self.clock / 1000.0)
- self.selectedTransition = self.model.getTransitionFrom(self.state, self.currentEvent, self.elapsed)
-
-
- # user defined method
- def processEvent(self, event):
- if (event != None):
- self.eventList.popEvent(event)
- event.processed = True
-
-
- # user defined method
- def getInputEventAt(self, time):
- return self.eventList.getInputAt(time)
-
-
- # builds Statechart structure
- def build_statechart_structure(self):
-
- # state <root>
- self.states[""] = State(0, "", self)
-
- # state /Main
- self.states["/Main"] = ParallelState(1, "/Main", self)
-
- # state /Main/ModeSelector
- self.states["/Main/ModeSelector"] = State(2, "/Main/ModeSelector", self)
-
- # state /Main/ModeSelector/Paused
- self.states["/Main/ModeSelector/Paused"] = State(3, "/Main/ModeSelector/Paused", self)
-
- # state /Main/ModeSelector/Running
- self.states["/Main/ModeSelector/Running"] = State(4, "/Main/ModeSelector/Running", self)
-
- # state /Main/ModeSelector/Running/Continuous
- self.states["/Main/ModeSelector/Running/Continuous"] = State(5, "/Main/ModeSelector/Running/Continuous", self)
-
- # state /Main/ChildState
- self.states["/Main/ChildState"] = State(6, "/Main/ChildState", self)
-
- # state /Main/ChildState/Uninitialized
- self.states["/Main/ChildState/Uninitialized"] = State(7, "/Main/ChildState/Uninitialized", self)
-
- # state /Main/ChildState/Initialized
- self.states["/Main/ChildState/Initialized"] = State(8, "/Main/ChildState/Initialized", self)
-
- # state /Main/Initializer
- self.states["/Main/Initializer"] = State(9, "/Main/Initializer", self)
-
- # state /Main/Initializer/Waiting
- self.states["/Main/Initializer/Waiting"] = State(10, "/Main/Initializer/Waiting", self)
-
- # state /Main/Initializer/CreatingChildSimulator
- self.states["/Main/Initializer/CreatingChildSimulator"] = State(11, "/Main/Initializer/CreatingChildSimulator", self)
-
- # state /Main/Initializer/StartingChildSimulator
- self.states["/Main/Initializer/StartingChildSimulator"] = State(12, "/Main/Initializer/StartingChildSimulator", self)
-
- # state /Main/Initializer/Running
- self.states["/Main/Initializer/Running"] = State(13, "/Main/Initializer/Running", self)
-
- # state /Main/Initializer/SettleBeforeWaiting
- self.states["/Main/Initializer/SettleBeforeWaiting"] = State(14, "/Main/Initializer/SettleBeforeWaiting", self)
- self.states["/Main/Initializer/SettleBeforeWaiting"].setEnter(self._Main_Initializer_SettleBeforeWaiting_enter)
- self.states["/Main/Initializer/SettleBeforeWaiting"].setExit(self._Main_Initializer_SettleBeforeWaiting_exit)
-
- # state /Main/SimulationFlow
- self.states["/Main/SimulationFlow"] = State(15, "/Main/SimulationFlow", self)
-
- # state /Main/SimulationFlow/Started
- self.states["/Main/SimulationFlow/Started"] = State(16, "/Main/SimulationFlow/Started", self)
-
- # state /Main/SimulationFlow/Initialized
- self.states["/Main/SimulationFlow/Initialized"] = State(17, "/Main/SimulationFlow/Initialized", self)
-
- # state /Main/SimulationFlow/InitializeDebugger
- self.states["/Main/SimulationFlow/InitializeDebugger"] = State(18, "/Main/SimulationFlow/InitializeDebugger", self)
-
- # state /Main/SimulationFlow/Waiting
- self.states["/Main/SimulationFlow/Waiting"] = State(19, "/Main/SimulationFlow/Waiting", self)
-
- # state /Main/SimulationFlow/SettleBeforeCheckTermination
- self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"] = State(20, "/Main/SimulationFlow/SettleBeforeCheckTermination", self)
- self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"].setEnter(self._Main_SimulationFlow_SettleBeforeCheckTermination_enter)
- self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"].setExit(self._Main_SimulationFlow_SettleBeforeCheckTermination_exit)
-
- # state /Main/SimulationFlow/CheckTermination
- self.states["/Main/SimulationFlow/CheckTermination"] = State(21, "/Main/SimulationFlow/CheckTermination", self)
-
- # state /Main/SimulationFlow/Executing
- self.states["/Main/SimulationFlow/Executing"] = State(22, "/Main/SimulationFlow/Executing", self)
-
- # state /Main/SimulationFlow/Stopped
- self.states["/Main/SimulationFlow/Stopped"] = State(23, "/Main/SimulationFlow/Stopped", self)
-
- # state /Stopped
- self.states["/Stopped"] = State(24, "/Stopped", self)
-
- # add children
- self.states[""].addChild(self.states["/Main"])
- self.states[""].addChild(self.states["/Stopped"])
- self.states["/Main"].addChild(self.states["/Main/ModeSelector"])
- self.states["/Main"].addChild(self.states["/Main/ChildState"])
- self.states["/Main"].addChild(self.states["/Main/Initializer"])
- self.states["/Main"].addChild(self.states["/Main/SimulationFlow"])
- self.states["/Main/ModeSelector"].addChild(self.states["/Main/ModeSelector/Paused"])
- self.states["/Main/ModeSelector"].addChild(self.states["/Main/ModeSelector/Running"])
- self.states["/Main/ModeSelector/Running"].addChild(self.states["/Main/ModeSelector/Running/Continuous"])
- self.states["/Main/ChildState"].addChild(self.states["/Main/ChildState/Uninitialized"])
- self.states["/Main/ChildState"].addChild(self.states["/Main/ChildState/Initialized"])
- self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/Waiting"])
- self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/CreatingChildSimulator"])
- self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/StartingChildSimulator"])
- self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/Running"])
- self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/SettleBeforeWaiting"])
- self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Started"])
- self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Initialized"])
- self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/InitializeDebugger"])
- self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Waiting"])
- self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"])
- self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/CheckTermination"])
- self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Executing"])
- self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Stopped"])
- self.states[""].fixTree()
- self.states[""].default_state = self.states["/Main"]
- self.states["/Main/ModeSelector"].default_state = self.states["/Main/ModeSelector/Paused"]
- self.states["/Main/ModeSelector/Running"].default_state = self.states["/Main/ModeSelector/Running/Continuous"]
- self.states["/Main/ChildState"].default_state = self.states["/Main/ChildState/Uninitialized"]
- self.states["/Main/Initializer"].default_state = self.states["/Main/Initializer/Waiting"]
- self.states["/Main/SimulationFlow"].default_state = self.states["/Main/SimulationFlow/Started"]
-
- # transition /Main/ModeSelector/Paused
- _Main_ModeSelector_Paused_0 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Running/Continuous"]])
- _Main_ModeSelector_Paused_0.setTrigger(Event("SmallStep.Execute", None))
- self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_0)
-
- # transition /Main/ChildState/Uninitialized
- _Main_ChildState_Uninitialized_0 = Transition(self, self.states["/Main/ChildState/Uninitialized"], [self.states["/Main/ChildState/Initialized"]])
- _Main_ChildState_Uninitialized_0.setTrigger(Event("Transition.Initialized", None))
- self.states["/Main/ChildState/Uninitialized"].addTransition(_Main_ChildState_Uninitialized_0)
-
- # transition /Main/ChildState/Initialized
- _Main_ChildState_Initialized_0 = Transition(self, self.states["/Main/ChildState/Initialized"], [self.states["/Main/ChildState/Uninitialized"]])
- _Main_ChildState_Initialized_0.setAction(self._Main_ChildState_Initialized_0_exec)
- _Main_ChildState_Initialized_0.setTrigger(Event("Transition.Finished", None))
- self.states["/Main/ChildState/Initialized"].addTransition(_Main_ChildState_Initialized_0)
-
- # transition /Main/Initializer/Waiting
- _Main_Initializer_Waiting_0 = Transition(self, self.states["/Main/Initializer/Waiting"], [self.states["/Main/Initializer/CreatingChildSimulator"]])
- _Main_Initializer_Waiting_0.setAction(self._Main_Initializer_Waiting_0_exec)
- _Main_Initializer_Waiting_0.setTrigger(None)
- _Main_Initializer_Waiting_0.setGuard(self._Main_Initializer_Waiting_0_guard)
- self.states["/Main/Initializer/Waiting"].addTransition(_Main_Initializer_Waiting_0)
-
- # transition /Main/Initializer/CreatingChildSimulator
- _Main_Initializer_CreatingChildSimulator_0 = Transition(self, self.states["/Main/Initializer/CreatingChildSimulator"], [self.states["/Main/Initializer/StartingChildSimulator"]])
- _Main_Initializer_CreatingChildSimulator_0.setAction(self._Main_Initializer_CreatingChildSimulator_0_exec)
- _Main_Initializer_CreatingChildSimulator_0.setTrigger(Event("instance_created", None))
- self.states["/Main/Initializer/CreatingChildSimulator"].addTransition(_Main_Initializer_CreatingChildSimulator_0)
-
- # transition /Main/Initializer/StartingChildSimulator
- _Main_Initializer_StartingChildSimulator_0 = Transition(self, self.states["/Main/Initializer/StartingChildSimulator"], [self.states["/Main/Initializer/Running"]])
- _Main_Initializer_StartingChildSimulator_0.setTrigger(Event("Transition.Initialized", None))
- self.states["/Main/Initializer/StartingChildSimulator"].addTransition(_Main_Initializer_StartingChildSimulator_0)
-
- # transition /Main/Initializer/Running
- _Main_Initializer_Running_0 = Transition(self, self.states["/Main/Initializer/Running"], [self.states["/Main/Initializer/SettleBeforeWaiting"]])
- _Main_Initializer_Running_0.setTrigger(Event("Transition.Finished", None))
- self.states["/Main/Initializer/Running"].addTransition(_Main_Initializer_Running_0)
-
- # transition /Main/Initializer/SettleBeforeWaiting
- _Main_Initializer_SettleBeforeWaiting_0 = Transition(self, self.states["/Main/Initializer/SettleBeforeWaiting"], [self.states["/Main/Initializer/Waiting"]])
- _Main_Initializer_SettleBeforeWaiting_0.setTrigger(Event("_0after"))
- self.states["/Main/Initializer/SettleBeforeWaiting"].addTransition(_Main_Initializer_SettleBeforeWaiting_0)
-
- # transition /Main/SimulationFlow/Started
- _Main_SimulationFlow_Started_0 = Transition(self, self.states["/Main/SimulationFlow/Started"], [self.states["/Main/SimulationFlow/Initialized"]])
- _Main_SimulationFlow_Started_0.setAction(self._Main_SimulationFlow_Started_0_exec)
- _Main_SimulationFlow_Started_0.setTrigger(None)
- self.states["/Main/SimulationFlow/Started"].addTransition(_Main_SimulationFlow_Started_0)
-
- # transition /Main/SimulationFlow/Initialized
- _Main_SimulationFlow_Initialized_0 = Transition(self, self.states["/Main/SimulationFlow/Initialized"], [self.states["/Main/SimulationFlow/InitializeDebugger"]])
- _Main_SimulationFlow_Initialized_0.setTrigger(None)
- self.states["/Main/SimulationFlow/Initialized"].addTransition(_Main_SimulationFlow_Initialized_0)
-
- # transition /Main/SimulationFlow/InitializeDebugger
- _Main_SimulationFlow_InitializeDebugger_0 = Transition(self, self.states["/Main/SimulationFlow/InitializeDebugger"], [self.states["/Main/SimulationFlow/Waiting"]])
- _Main_SimulationFlow_InitializeDebugger_0.setAction(self._Main_SimulationFlow_InitializeDebugger_0_exec)
- _Main_SimulationFlow_InitializeDebugger_0.setTrigger(None)
- self.states["/Main/SimulationFlow/InitializeDebugger"].addTransition(_Main_SimulationFlow_InitializeDebugger_0)
-
- # transition /Main/SimulationFlow/Waiting
- _Main_SimulationFlow_Waiting_0 = Transition(self, self.states["/Main/SimulationFlow/Waiting"], [self.states["/Main/SimulationFlow/CheckTermination"]])
- _Main_SimulationFlow_Waiting_0.setTrigger(None)
- _Main_SimulationFlow_Waiting_0.setGuard(self._Main_SimulationFlow_Waiting_0_guard)
- self.states["/Main/SimulationFlow/Waiting"].addTransition(_Main_SimulationFlow_Waiting_0)
-
- # transition /Main/SimulationFlow/SettleBeforeCheckTermination
- _Main_SimulationFlow_SettleBeforeCheckTermination_0 = Transition(self, self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"], [self.states["/Main/SimulationFlow/CheckTermination"]])
- _Main_SimulationFlow_SettleBeforeCheckTermination_0.setTrigger(Event("_1after"))
- self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"].addTransition(_Main_SimulationFlow_SettleBeforeCheckTermination_0)
-
- # transition /Main/SimulationFlow/CheckTermination
- _Main_SimulationFlow_CheckTermination_0 = Transition(self, self.states["/Main/SimulationFlow/CheckTermination"], [self.states["/Main/SimulationFlow/Executing"]])
- _Main_SimulationFlow_CheckTermination_0.setAction(self._Main_SimulationFlow_CheckTermination_0_exec)
- _Main_SimulationFlow_CheckTermination_0.setTrigger(None)
- _Main_SimulationFlow_CheckTermination_0.setGuard(self._Main_SimulationFlow_CheckTermination_0_guard)
- self.states["/Main/SimulationFlow/CheckTermination"].addTransition(_Main_SimulationFlow_CheckTermination_0)
- _Main_SimulationFlow_CheckTermination_1 = Transition(self, self.states["/Main/SimulationFlow/CheckTermination"], [self.states["/Main/SimulationFlow/Stopped"]])
- _Main_SimulationFlow_CheckTermination_1.setAction(self._Main_SimulationFlow_CheckTermination_1_exec)
- _Main_SimulationFlow_CheckTermination_1.setTrigger(None)
- _Main_SimulationFlow_CheckTermination_1.setGuard(self._Main_SimulationFlow_CheckTermination_1_guard)
- self.states["/Main/SimulationFlow/CheckTermination"].addTransition(_Main_SimulationFlow_CheckTermination_1)
-
- # transition /Main/SimulationFlow/Executing
- _Main_SimulationFlow_Executing_0 = Transition(self, self.states["/Main/SimulationFlow/Executing"], [self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"]])
- _Main_SimulationFlow_Executing_0.setAction(self._Main_SimulationFlow_Executing_0_exec)
- _Main_SimulationFlow_Executing_0.setTrigger(Event("Transition.Finished", None))
- self.states["/Main/SimulationFlow/Executing"].addTransition(_Main_SimulationFlow_Executing_0)
-
- # transition /Main/ModeSelector/Running
- _Main_ModeSelector_Running_0 = Transition(self, self.states["/Main/ModeSelector/Running"], [self.states["/Main/ModeSelector/Paused"]])
- _Main_ModeSelector_Running_0.setTrigger(Event("SmallStep.Finished", None))
- self.states["/Main/ModeSelector/Running"].addTransition(_Main_ModeSelector_Running_0)
-
- def _Main_Initializer_SettleBeforeWaiting_enter(self):
- self.addTimer(0, self.sccd_yield())
-
- def _Main_Initializer_SettleBeforeWaiting_exit(self):
- self.removeTimer(0)
-
- def _Main_SimulationFlow_SettleBeforeCheckTermination_enter(self):
- self.addTimer(1, self.sccd_yield())
-
- def _Main_SimulationFlow_SettleBeforeCheckTermination_exit(self):
- self.removeTimer(1)
-
- def _Main_ChildState_Initialized_0_exec(self, parameters):
- self.big_step.outputEventOM(Event("delete_instance", None, [self, 'child_simulator']))
-
- def _Main_Initializer_Waiting_0_exec(self, parameters):
- self.big_step.outputEventOM(Event("create_instance", None, [self, 'child_simulator', 'FSASimulator_Transition', self.selectedTransition]))
-
- def _Main_Initializer_Waiting_0_guard(self, parameters):
- return self.inState(["/Main/ModeSelector/Running"]) and self.inState(["/Main/ChildState/Uninitialized"]) and not self.endCondition()
-
- def _Main_Initializer_CreatingChildSimulator_0_exec(self, parameters):
- self.big_step.outputEventOM(Event("start_instance", None, [self, 'child_simulator']))
-
- def _Main_SimulationFlow_Started_0_exec(self, parameters):
- self.initialize()
-
- def _Main_SimulationFlow_InitializeDebugger_0_exec(self, parameters):
- self.initializeDebugger()
- self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("SmallStep.Initialized", None, [])]))
-
- def _Main_SimulationFlow_Waiting_0_guard(self, parameters):
- return self.inState(["/Main/ModeSelector/Running"])
-
- def _Main_SimulationFlow_CheckTermination_0_exec(self, parameters):
- self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("Transition.Execute", None, [])]))
-
- def _Main_SimulationFlow_CheckTermination_0_guard(self, parameters):
- return self.inState(["/Main/ModeSelector/Running/Continuous"]) and self.inState(["/Main/ChildState/Initialized"]) and not self.endCondition()
-
- def _Main_SimulationFlow_CheckTermination_1_exec(self, parameters):
- # print '>>> small step executed <<<'
- self.finalize()
- self.raiseInternalEvent(Event("SmallStep.Finished", None, []))
- self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("SmallStep.Finished", None, [self.selectedTransition, self.currentEvent, self.eventList, self.elapsed, self.state])]))
-
- def _Main_SimulationFlow_CheckTermination_1_guard(self, parameters):
- return self.endCondition()
-
- def _Main_SimulationFlow_Executing_0_exec(self, parameters):
- new_state = parameters[0]
- self.small_step_executed = True
- self.state = new_state
-
- def initializeStatechart(self):
- # enter default state
- self.default_targets = self.states["/Main"].getEffectiveTargetStates()
- RuntimeClassBase.initializeStatechart(self)
- class FSASimulator_Transition(RuntimeClassBase):
- def __init__(self, controller, selectedTransition):
- RuntimeClassBase.__init__(self, controller)
-
- self.semantics.big_step_maximality = StatechartSemantics.TakeMany
- self.semantics.internal_event_lifeline = StatechartSemantics.Queue
- self.semantics.input_event_lifeline = StatechartSemantics.FirstComboStep
- self.semantics.priority = StatechartSemantics.SourceParent
- self.semantics.concurrency = StatechartSemantics.Single
-
- # build Statechart structure
- self.build_statechart_structure()
-
- # call user defined constructor
- FSASimulator_Transition.user_defined_constructor(self, selectedTransition)
-
- def user_defined_constructor(self, selectedTransition):
- self.selectedTransition = selectedTransition
-
- def user_defined_destructor(self):
- pass
-
-
- # user defined method
- def executeTransition(self):
- self.newState = self.selectedTransition.target
-
-
- # builds Statechart structure
- def build_statechart_structure(self):
-
- # state <root>
- self.states[""] = State(0, "", self)
-
- # state /Started
- self.states["/Started"] = State(1, "/Started", self)
-
- # state /Waiting
- self.states["/Waiting"] = State(2, "/Waiting", self)
-
- # state /Stopped
- self.states["/Stopped"] = State(3, "/Stopped", self)
-
- # add children
- self.states[""].addChild(self.states["/Started"])
- self.states[""].addChild(self.states["/Waiting"])
- self.states[""].addChild(self.states["/Stopped"])
- self.states[""].fixTree()
- self.states[""].default_state = self.states["/Started"]
-
- # transition /Started
- _Started_0 = Transition(self, self.states["/Started"], [self.states["/Waiting"]])
- _Started_0.setAction(self._Started_0_exec)
- _Started_0.setTrigger(None)
- self.states["/Started"].addTransition(_Started_0)
-
- # transition /Waiting
- _Waiting_0 = Transition(self, self.states["/Waiting"], [self.states["/Stopped"]])
- _Waiting_0.setAction(self._Waiting_0_exec)
- _Waiting_0.setTrigger(Event("Transition.Execute", None))
- self.states["/Waiting"].addTransition(_Waiting_0)
-
- def _Started_0_exec(self, parameters):
- self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("Transition.Initialized", None, [])]))
-
- def _Waiting_0_exec(self, parameters):
- self.executeTransition()
- self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("Transition.Finished", None, [self.newState])]))
-
- def initializeStatechart(self):
- # enter default state
- self.default_targets = self.states["/Started"].getEffectiveTargetStates()
- RuntimeClassBase.initializeStatechart(self)
- class ObjectManager(ObjectManagerBase):
- def __init__(self, controller):
- ObjectManagerBase.__init__(self, controller)
-
- def instantiate(self, class_name, construct_params):
- if class_name == "FSASimulator_Coordinator":
- instance = FSASimulator_Coordinator(self.controller, construct_params[0], construct_params[1])
- instance.associations = {}
- instance.associations["child_simulator"] = Association("FSASimulator_Simulation", 0, 1)
- elif class_name == "FSASimulator_Simulation":
- instance = FSASimulator_Simulation(self.controller, construct_params[0], construct_params[1])
- instance.associations = {}
- instance.associations["parent"] = Association("FSASimulator_Coordinator", 1, 1)
- instance.associations["child_simulator"] = Association("FSASimulator_BigStep", 0, 1)
- elif class_name == "FSASimulator_BigStep":
- 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])
- instance.associations = {}
- instance.associations["parent"] = Association("FSASimulator_Simulation", 1, 1)
- instance.associations["child_simulator"] = Association("FSASimulator_SmallStep", 0, 1)
- elif class_name == "FSASimulator_SmallStep":
- 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])
- instance.associations = {}
- instance.associations["parent"] = Association("FSASimulator_BigStep", 1, 1)
- instance.associations["child_simulator"] = Association("FSASimulator_Block", 0, 1)
- elif class_name == "FSASimulator_Transition":
- instance = FSASimulator_Transition(self.controller, construct_params[0])
- instance.associations = {}
- instance.associations["parent"] = Association("FSASimulator_SmallStep", 1, 1)
- else:
- raise Exception("Cannot instantiate class " + class_name)
- return instance
- class Controller(ThreadsControllerBase):
- def __init__(self, model, events, keep_running = None, behind_schedule_callback = None):
- if keep_running == None: keep_running = True
- if behind_schedule_callback == None: behind_schedule_callback = None
- ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running, behind_schedule_callback)
- self.addInputPort("user_input")
- self.addInputPort("user_output")
- self.object_manager.createInstance("FSASimulator_Coordinator", [model, events])
|