target.py 300 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717
  1. """
  2. Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
  3. Date: Tue Dec 20 17:10:11 2016
  4. Model author: Sadaf Mustafiz and Claudio Gomes and Simon Van Mierlo
  5. Model name: FSASimulator_Coordinator
  6. Model description:
  7. A debuggeable FSA+CBD simulator.
  8. """
  9. from sccd.runtime.statecharts_core import *
  10. from sccd.runtime.libs.ui import *
  11. from sccd.runtime.libs.utils import *
  12. import copy
  13. from CBD_Controller import CBDController
  14. import Options
  15. from fsa_cbd_woven_classes import CBDState
  16. from woven_cbd_fsa_lib import FSACBDLib
  17. class Breakpoint:
  18. def __init__(self, name, function, enabled, disable_on_trigger):
  19. self.name = name
  20. self.function = function
  21. self.enabled = enabled
  22. self.disable_on_trigger = disable_on_trigger
  23. # package "FSASimulator_Coordinator"
  24. class WovenSimulator_Coordinator(RuntimeClassBase):
  25. def __init__(self, controller, woven_model, fsa_events, cbd_options):
  26. RuntimeClassBase.__init__(self, controller)
  27. self.semantics.big_step_maximality = StatechartSemantics.TakeMany
  28. self.semantics.internal_event_lifeline = StatechartSemantics.Queue
  29. self.semantics.input_event_lifeline = StatechartSemantics.FirstComboStep
  30. self.semantics.priority = StatechartSemantics.SourceParent
  31. self.semantics.concurrency = StatechartSemantics.Single
  32. # build Statechart structure
  33. self.build_statechart_structure()
  34. # call user defined constructor
  35. WovenSimulator_Coordinator.user_defined_constructor(self, woven_model, fsa_events, cbd_options)
  36. def user_defined_constructor(self, woven_model, fsa_events, cbd_options):
  37. self.woven_model = woven_model
  38. self.fsa_events = fsa_events
  39. self.fsa_delta = 1.0 * 1000
  40. self.cbd_options = cbd_options
  41. def user_defined_destructor(self):
  42. pass
  43. # builds Statechart structure
  44. def build_statechart_structure(self):
  45. # state <root>
  46. self.states[""] = State(0, self)
  47. # state /Main
  48. self.states["/Main"] = ParallelState(1, self)
  49. # state /Main/ModeSelector
  50. self.states["/Main/ModeSelector"] = State(2, self)
  51. # state /Main/ModeSelector/Paused
  52. self.states["/Main/ModeSelector/Paused"] = State(3, self)
  53. # state /Main/ModeSelector/WaitingForStepIntoSuccess
  54. self.states["/Main/ModeSelector/WaitingForStepIntoSuccess"] = State(4, self)
  55. # state /Main/ModeSelector/Running
  56. self.states["/Main/ModeSelector/Running"] = State(5, self)
  57. # state /Main/ModeSelector/Running/Continuous
  58. self.states["/Main/ModeSelector/Running/Continuous"] = State(6, self)
  59. # state /Main/ModeSelector/Running/Realtime
  60. self.states["/Main/ModeSelector/Running/Realtime"] = State(7, self)
  61. # state /Main/ModeSelector/Running/BigStep
  62. self.states["/Main/ModeSelector/Running/BigStep"] = State(8, self)
  63. # state /Main/ModeSelector/Running/SmallStep
  64. self.states["/Main/ModeSelector/Running/SmallStep"] = State(9, self)
  65. # state /Main/ModeSelector/Running/StepInto
  66. self.states["/Main/ModeSelector/Running/StepInto"] = State(10, self)
  67. # state /Main/ModeSelector/Running/StepInto/Paused
  68. self.states["/Main/ModeSelector/Running/StepInto/Paused"] = State(11, self)
  69. # state /Main/ModeSelector/Running/StepInto/BigStep
  70. self.states["/Main/ModeSelector/Running/StepInto/BigStep"] = State(12, self)
  71. # state /Main/ModeSelector/Running/StepInto/SmallStep
  72. self.states["/Main/ModeSelector/Running/StepInto/SmallStep"] = State(13, self)
  73. # state /Main/ModeSelector/WaitingForPaused
  74. self.states["/Main/ModeSelector/WaitingForPaused"] = State(14, self)
  75. # state /Main/ModeSelector/Stopped
  76. self.states["/Main/ModeSelector/Stopped"] = State(15, self)
  77. # state /Main/ChildState
  78. self.states["/Main/ChildState"] = State(16, self)
  79. # state /Main/ChildState/Uninitialized
  80. self.states["/Main/ChildState/Uninitialized"] = State(17, self)
  81. # state /Main/ChildState/Initialized
  82. self.states["/Main/ChildState/Initialized"] = State(18, self)
  83. # state /Main/Initializer
  84. self.states["/Main/Initializer"] = State(19, self)
  85. # state /Main/Initializer/Waiting
  86. self.states["/Main/Initializer/Waiting"] = State(20, self)
  87. # state /Main/Initializer/CreatingChildSimulator
  88. self.states["/Main/Initializer/CreatingChildSimulator"] = State(21, self)
  89. # state /Main/Initializer/StartingChildSimulator
  90. self.states["/Main/Initializer/StartingChildSimulator"] = State(22, self)
  91. # state /Main/SimulationFlow
  92. self.states["/Main/SimulationFlow"] = State(23, self)
  93. # state /Main/SimulationFlow/PrePaused
  94. self.states["/Main/SimulationFlow/PrePaused"] = State(24, self)
  95. self.states["/Main/SimulationFlow/PrePaused"].setEnter(self._Main_SimulationFlow_PrePaused_enter)
  96. self.states["/Main/SimulationFlow/PrePaused"].setExit(self._Main_SimulationFlow_PrePaused_exit)
  97. # state /Main/SimulationFlow/Paused
  98. self.states["/Main/SimulationFlow/Paused"] = State(25, self)
  99. # state /Main/SimulationFlow/Executing
  100. self.states["/Main/SimulationFlow/Executing"] = State(26, self)
  101. # state /Main/GodEventManager
  102. self.states["/Main/GodEventManager"] = State(27, self)
  103. # state /Main/GodEventManager/Listening
  104. self.states["/Main/GodEventManager/Listening"] = State(28, self)
  105. # state /Main/GodEventManager/Waiting
  106. self.states["/Main/GodEventManager/Waiting"] = State(29, self)
  107. # state /Main/BreakpointManager
  108. self.states["/Main/BreakpointManager"] = State(30, self)
  109. # state /Main/BreakpointManager/Listening
  110. self.states["/Main/BreakpointManager/Listening"] = State(31, self)
  111. # state /Main/BreakpointManager/Waiting
  112. self.states["/Main/BreakpointManager/Waiting"] = State(32, self)
  113. # add children
  114. self.states[""].addChild(self.states["/Main"])
  115. self.states["/Main"].addChild(self.states["/Main/ModeSelector"])
  116. self.states["/Main"].addChild(self.states["/Main/ChildState"])
  117. self.states["/Main"].addChild(self.states["/Main/Initializer"])
  118. self.states["/Main"].addChild(self.states["/Main/SimulationFlow"])
  119. self.states["/Main"].addChild(self.states["/Main/GodEventManager"])
  120. self.states["/Main"].addChild(self.states["/Main/BreakpointManager"])
  121. self.states["/Main/ModeSelector"].addChild(self.states["/Main/ModeSelector/Paused"])
  122. self.states["/Main/ModeSelector"].addChild(self.states["/Main/ModeSelector/WaitingForStepIntoSuccess"])
  123. self.states["/Main/ModeSelector"].addChild(self.states["/Main/ModeSelector/Running"])
  124. self.states["/Main/ModeSelector"].addChild(self.states["/Main/ModeSelector/WaitingForPaused"])
  125. self.states["/Main/ModeSelector"].addChild(self.states["/Main/ModeSelector/Stopped"])
  126. self.states["/Main/ModeSelector/Running"].addChild(self.states["/Main/ModeSelector/Running/Continuous"])
  127. self.states["/Main/ModeSelector/Running"].addChild(self.states["/Main/ModeSelector/Running/Realtime"])
  128. self.states["/Main/ModeSelector/Running"].addChild(self.states["/Main/ModeSelector/Running/BigStep"])
  129. self.states["/Main/ModeSelector/Running"].addChild(self.states["/Main/ModeSelector/Running/SmallStep"])
  130. self.states["/Main/ModeSelector/Running"].addChild(self.states["/Main/ModeSelector/Running/StepInto"])
  131. self.states["/Main/ModeSelector/Running/StepInto"].addChild(self.states["/Main/ModeSelector/Running/StepInto/Paused"])
  132. self.states["/Main/ModeSelector/Running/StepInto"].addChild(self.states["/Main/ModeSelector/Running/StepInto/BigStep"])
  133. self.states["/Main/ModeSelector/Running/StepInto"].addChild(self.states["/Main/ModeSelector/Running/StepInto/SmallStep"])
  134. self.states["/Main/ChildState"].addChild(self.states["/Main/ChildState/Uninitialized"])
  135. self.states["/Main/ChildState"].addChild(self.states["/Main/ChildState/Initialized"])
  136. self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/Waiting"])
  137. self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/CreatingChildSimulator"])
  138. self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/StartingChildSimulator"])
  139. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/PrePaused"])
  140. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Paused"])
  141. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Executing"])
  142. self.states["/Main/GodEventManager"].addChild(self.states["/Main/GodEventManager/Listening"])
  143. self.states["/Main/GodEventManager"].addChild(self.states["/Main/GodEventManager/Waiting"])
  144. self.states["/Main/BreakpointManager"].addChild(self.states["/Main/BreakpointManager/Listening"])
  145. self.states["/Main/BreakpointManager"].addChild(self.states["/Main/BreakpointManager/Waiting"])
  146. self.states[""].fixTree()
  147. self.states[""].default_state = self.states["/Main"]
  148. self.states["/Main/ModeSelector"].default_state = self.states["/Main/ModeSelector/Paused"]
  149. self.states["/Main/ModeSelector/Running"].default_state = self.states["/Main/ModeSelector/Running/Continuous"]
  150. self.states["/Main/ModeSelector/Running/StepInto"].default_state = self.states["/Main/ModeSelector/Running/StepInto/Paused"]
  151. self.states["/Main/ChildState"].default_state = self.states["/Main/ChildState/Uninitialized"]
  152. self.states["/Main/Initializer"].default_state = self.states["/Main/Initializer/Waiting"]
  153. self.states["/Main/SimulationFlow"].default_state = self.states["/Main/SimulationFlow/Paused"]
  154. self.states["/Main/GodEventManager"].default_state = self.states["/Main/GodEventManager/Listening"]
  155. self.states["/Main/BreakpointManager"].default_state = self.states["/Main/BreakpointManager/Listening"]
  156. # transition /Main/ModeSelector/Paused
  157. _Main_ModeSelector_Paused_0 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Running/SmallStep"]])
  158. _Main_ModeSelector_Paused_0.setTrigger(Event("small_step", "user_input"))
  159. self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_0)
  160. _Main_ModeSelector_Paused_1 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Running/BigStep"]])
  161. _Main_ModeSelector_Paused_1.setTrigger(Event("big_step", "user_input"))
  162. self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_1)
  163. _Main_ModeSelector_Paused_2 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Running/Continuous"]])
  164. _Main_ModeSelector_Paused_2.setTrigger(Event("continuous", "user_input"))
  165. self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_2)
  166. _Main_ModeSelector_Paused_3 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/WaitingForStepIntoSuccess"]])
  167. _Main_ModeSelector_Paused_3.setAction(self._Main_ModeSelector_Paused_3_exec)
  168. _Main_ModeSelector_Paused_3.setTrigger(Event("step_into", "user_input"))
  169. self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_3)
  170. _Main_ModeSelector_Paused_4 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Running/Realtime"]])
  171. _Main_ModeSelector_Paused_4.setAction(self._Main_ModeSelector_Paused_4_exec)
  172. _Main_ModeSelector_Paused_4.setTrigger(Event("realtime", "user_input"))
  173. self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_4)
  174. _Main_ModeSelector_Paused_5 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Paused"]])
  175. _Main_ModeSelector_Paused_5.setAction(self._Main_ModeSelector_Paused_5_exec)
  176. _Main_ModeSelector_Paused_5.setTrigger(Event("FSABigStep.Finished", None))
  177. self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_5)
  178. _Main_ModeSelector_Paused_6 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Paused"]])
  179. _Main_ModeSelector_Paused_6.setAction(self._Main_ModeSelector_Paused_6_exec)
  180. _Main_ModeSelector_Paused_6.setTrigger(Event("WovenSimulation.Finished", None))
  181. self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_6)
  182. _Main_ModeSelector_Paused_7 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Paused"]])
  183. _Main_ModeSelector_Paused_7.setAction(self._Main_ModeSelector_Paused_7_exec)
  184. _Main_ModeSelector_Paused_7.setTrigger(Event("Breakpoint.Triggered", None))
  185. self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_7)
  186. # transition /Main/ModeSelector/WaitingForStepIntoSuccess
  187. _Main_ModeSelector_WaitingForStepIntoSuccess_0 = Transition(self, self.states["/Main/ModeSelector/WaitingForStepIntoSuccess"], [self.states["/Main/ModeSelector/Running/StepInto"]])
  188. _Main_ModeSelector_WaitingForStepIntoSuccess_0.setAction(self._Main_ModeSelector_WaitingForStepIntoSuccess_0_exec)
  189. _Main_ModeSelector_WaitingForStepIntoSuccess_0.setTrigger(Event("StepInto.Success", None))
  190. self.states["/Main/ModeSelector/WaitingForStepIntoSuccess"].addTransition(_Main_ModeSelector_WaitingForStepIntoSuccess_0)
  191. _Main_ModeSelector_WaitingForStepIntoSuccess_1 = Transition(self, self.states["/Main/ModeSelector/WaitingForStepIntoSuccess"], [self.states["/Main/ModeSelector/Paused"]])
  192. _Main_ModeSelector_WaitingForStepIntoSuccess_1.setAction(self._Main_ModeSelector_WaitingForStepIntoSuccess_1_exec)
  193. _Main_ModeSelector_WaitingForStepIntoSuccess_1.setTrigger(Event("StepInto.Failure", None))
  194. self.states["/Main/ModeSelector/WaitingForStepIntoSuccess"].addTransition(_Main_ModeSelector_WaitingForStepIntoSuccess_1)
  195. # transition /Main/ModeSelector/Running/Continuous
  196. _Main_ModeSelector_Running_Continuous_0 = Transition(self, self.states["/Main/ModeSelector/Running/Continuous"], [self.states["/Main/ModeSelector/WaitingForPaused"]])
  197. _Main_ModeSelector_Running_Continuous_0.setAction(self._Main_ModeSelector_Running_Continuous_0_exec)
  198. _Main_ModeSelector_Running_Continuous_0.setTrigger(Event("pause", "user_input"))
  199. self.states["/Main/ModeSelector/Running/Continuous"].addTransition(_Main_ModeSelector_Running_Continuous_0)
  200. _Main_ModeSelector_Running_Continuous_1 = Transition(self, self.states["/Main/ModeSelector/Running/Continuous"], [self.states["/Main/ModeSelector/Stopped"]])
  201. _Main_ModeSelector_Running_Continuous_1.setAction(self._Main_ModeSelector_Running_Continuous_1_exec)
  202. _Main_ModeSelector_Running_Continuous_1.setTrigger(Event("WovenSimulation.Finished", None))
  203. self.states["/Main/ModeSelector/Running/Continuous"].addTransition(_Main_ModeSelector_Running_Continuous_1)
  204. # transition /Main/ModeSelector/Running/Realtime
  205. _Main_ModeSelector_Running_Realtime_0 = Transition(self, self.states["/Main/ModeSelector/Running/Realtime"], [self.states["/Main/ModeSelector/WaitingForPaused"]])
  206. _Main_ModeSelector_Running_Realtime_0.setAction(self._Main_ModeSelector_Running_Realtime_0_exec)
  207. _Main_ModeSelector_Running_Realtime_0.setTrigger(Event("pause", "user_input"))
  208. self.states["/Main/ModeSelector/Running/Realtime"].addTransition(_Main_ModeSelector_Running_Realtime_0)
  209. _Main_ModeSelector_Running_Realtime_1 = Transition(self, self.states["/Main/ModeSelector/Running/Realtime"], [self.states["/Main/ModeSelector/Stopped"]])
  210. _Main_ModeSelector_Running_Realtime_1.setAction(self._Main_ModeSelector_Running_Realtime_1_exec)
  211. _Main_ModeSelector_Running_Realtime_1.setTrigger(Event("WovenSimulation.Finished", None))
  212. self.states["/Main/ModeSelector/Running/Realtime"].addTransition(_Main_ModeSelector_Running_Realtime_1)
  213. _Main_ModeSelector_Running_Realtime_2 = Transition(self, self.states["/Main/ModeSelector/Running/Realtime"], [self.states["/Main/ModeSelector/Running/Realtime"]])
  214. _Main_ModeSelector_Running_Realtime_2.setAction(self._Main_ModeSelector_Running_Realtime_2_exec)
  215. _Main_ModeSelector_Running_Realtime_2.setTrigger(Event("FSABigStep.Finished", None))
  216. self.states["/Main/ModeSelector/Running/Realtime"].addTransition(_Main_ModeSelector_Running_Realtime_2)
  217. # transition /Main/ModeSelector/Running/BigStep
  218. _Main_ModeSelector_Running_BigStep_0 = Transition(self, self.states["/Main/ModeSelector/Running/BigStep"], [self.states["/Main/ModeSelector/Paused"]])
  219. _Main_ModeSelector_Running_BigStep_0.setAction(self._Main_ModeSelector_Running_BigStep_0_exec)
  220. _Main_ModeSelector_Running_BigStep_0.setTrigger(Event("FSABigStep.Finished", None))
  221. self.states["/Main/ModeSelector/Running/BigStep"].addTransition(_Main_ModeSelector_Running_BigStep_0)
  222. _Main_ModeSelector_Running_BigStep_1 = Transition(self, self.states["/Main/ModeSelector/Running/BigStep"], [self.states["/Main/ModeSelector/Stopped"]])
  223. _Main_ModeSelector_Running_BigStep_1.setAction(self._Main_ModeSelector_Running_BigStep_1_exec)
  224. _Main_ModeSelector_Running_BigStep_1.setTrigger(Event("WovenSimulation.Finished", None))
  225. self.states["/Main/ModeSelector/Running/BigStep"].addTransition(_Main_ModeSelector_Running_BigStep_1)
  226. # transition /Main/ModeSelector/Running/SmallStep
  227. _Main_ModeSelector_Running_SmallStep_0 = Transition(self, self.states["/Main/ModeSelector/Running/SmallStep"], [self.states["/Main/ModeSelector/Paused"]])
  228. _Main_ModeSelector_Running_SmallStep_0.setAction(self._Main_ModeSelector_Running_SmallStep_0_exec)
  229. _Main_ModeSelector_Running_SmallStep_0.setTrigger(Event("FSASmallStep.Finished", None))
  230. self.states["/Main/ModeSelector/Running/SmallStep"].addTransition(_Main_ModeSelector_Running_SmallStep_0)
  231. _Main_ModeSelector_Running_SmallStep_1 = Transition(self, self.states["/Main/ModeSelector/Running/SmallStep"], [self.states["/Main/ModeSelector/Paused"]])
  232. _Main_ModeSelector_Running_SmallStep_1.setAction(self._Main_ModeSelector_Running_SmallStep_1_exec)
  233. _Main_ModeSelector_Running_SmallStep_1.setTrigger(Event("FSABigStep.Finished", None))
  234. self.states["/Main/ModeSelector/Running/SmallStep"].addTransition(_Main_ModeSelector_Running_SmallStep_1)
  235. _Main_ModeSelector_Running_SmallStep_2 = Transition(self, self.states["/Main/ModeSelector/Running/SmallStep"], [self.states["/Main/ModeSelector/Stopped"]])
  236. _Main_ModeSelector_Running_SmallStep_2.setAction(self._Main_ModeSelector_Running_SmallStep_2_exec)
  237. _Main_ModeSelector_Running_SmallStep_2.setTrigger(Event("WovenSimulation.Finished", None))
  238. self.states["/Main/ModeSelector/Running/SmallStep"].addTransition(_Main_ModeSelector_Running_SmallStep_2)
  239. # transition /Main/ModeSelector/Running/StepInto/Paused
  240. _Main_ModeSelector_Running_StepInto_Paused_0 = Transition(self, self.states["/Main/ModeSelector/Running/StepInto/Paused"], [self.states["/Main/ModeSelector/Running/StepInto/BigStep"]])
  241. _Main_ModeSelector_Running_StepInto_Paused_0.setTrigger(Event("big_step", "user_input"))
  242. self.states["/Main/ModeSelector/Running/StepInto/Paused"].addTransition(_Main_ModeSelector_Running_StepInto_Paused_0)
  243. _Main_ModeSelector_Running_StepInto_Paused_1 = Transition(self, self.states["/Main/ModeSelector/Running/StepInto/Paused"], [self.states["/Main/ModeSelector/Running/StepInto/SmallStep"]])
  244. _Main_ModeSelector_Running_StepInto_Paused_1.setTrigger(Event("small_step", "user_input"))
  245. self.states["/Main/ModeSelector/Running/StepInto/Paused"].addTransition(_Main_ModeSelector_Running_StepInto_Paused_1)
  246. _Main_ModeSelector_Running_StepInto_Paused_2 = Transition(self, self.states["/Main/ModeSelector/Running/StepInto/Paused"], [self.states["/Main/ModeSelector/Paused"]])
  247. _Main_ModeSelector_Running_StepInto_Paused_2.setAction(self._Main_ModeSelector_Running_StepInto_Paused_2_exec)
  248. _Main_ModeSelector_Running_StepInto_Paused_2.setTrigger(Event("CBDBigStep.Finished", None))
  249. self.states["/Main/ModeSelector/Running/StepInto/Paused"].addTransition(_Main_ModeSelector_Running_StepInto_Paused_2)
  250. # transition /Main/ModeSelector/Running/StepInto/BigStep
  251. _Main_ModeSelector_Running_StepInto_BigStep_0 = Transition(self, self.states["/Main/ModeSelector/Running/StepInto/BigStep"], [self.states["/Main/ModeSelector/Paused"]])
  252. _Main_ModeSelector_Running_StepInto_BigStep_0.setAction(self._Main_ModeSelector_Running_StepInto_BigStep_0_exec)
  253. _Main_ModeSelector_Running_StepInto_BigStep_0.setTrigger(Event("CBDBigStep.Finished", None))
  254. self.states["/Main/ModeSelector/Running/StepInto/BigStep"].addTransition(_Main_ModeSelector_Running_StepInto_BigStep_0)
  255. # transition /Main/ModeSelector/Running/StepInto/SmallStep
  256. _Main_ModeSelector_Running_StepInto_SmallStep_0 = Transition(self, self.states["/Main/ModeSelector/Running/StepInto/SmallStep"], [self.states["/Main/ModeSelector/Running/StepInto/Paused"]])
  257. _Main_ModeSelector_Running_StepInto_SmallStep_0.setAction(self._Main_ModeSelector_Running_StepInto_SmallStep_0_exec)
  258. _Main_ModeSelector_Running_StepInto_SmallStep_0.setTrigger(Event("CBDSmallStep.Finished", None))
  259. self.states["/Main/ModeSelector/Running/StepInto/SmallStep"].addTransition(_Main_ModeSelector_Running_StepInto_SmallStep_0)
  260. # transition /Main/ModeSelector/WaitingForPaused
  261. _Main_ModeSelector_WaitingForPaused_0 = Transition(self, self.states["/Main/ModeSelector/WaitingForPaused"], [self.states["/Main/ModeSelector/Paused"]])
  262. _Main_ModeSelector_WaitingForPaused_0.setAction(self._Main_ModeSelector_WaitingForPaused_0_exec)
  263. _Main_ModeSelector_WaitingForPaused_0.setTrigger(Event("WovenSimulation.Paused", None))
  264. self.states["/Main/ModeSelector/WaitingForPaused"].addTransition(_Main_ModeSelector_WaitingForPaused_0)
  265. # transition /Main/ChildState/Uninitialized
  266. _Main_ChildState_Uninitialized_0 = Transition(self, self.states["/Main/ChildState/Uninitialized"], [self.states["/Main/ChildState/Initialized"]])
  267. _Main_ChildState_Uninitialized_0.setTrigger(Event("WovenSimulation.Initialized", None))
  268. self.states["/Main/ChildState/Uninitialized"].addTransition(_Main_ChildState_Uninitialized_0)
  269. # transition /Main/ChildState/Initialized
  270. _Main_ChildState_Initialized_0 = Transition(self, self.states["/Main/ChildState/Initialized"], [self.states["/Main/ChildState/Uninitialized"]])
  271. _Main_ChildState_Initialized_0.setAction(self._Main_ChildState_Initialized_0_exec)
  272. _Main_ChildState_Initialized_0.setTrigger(Event("WovenSimulation.Finished", None))
  273. self.states["/Main/ChildState/Initialized"].addTransition(_Main_ChildState_Initialized_0)
  274. # transition /Main/Initializer/Waiting
  275. _Main_Initializer_Waiting_0 = Transition(self, self.states["/Main/Initializer/Waiting"], [self.states["/Main/Initializer/CreatingChildSimulator"]])
  276. _Main_Initializer_Waiting_0.setAction(self._Main_Initializer_Waiting_0_exec)
  277. _Main_Initializer_Waiting_0.setTrigger(None)
  278. _Main_Initializer_Waiting_0.setGuard(self._Main_Initializer_Waiting_0_guard)
  279. self.states["/Main/Initializer/Waiting"].addTransition(_Main_Initializer_Waiting_0)
  280. # transition /Main/Initializer/CreatingChildSimulator
  281. _Main_Initializer_CreatingChildSimulator_0 = Transition(self, self.states["/Main/Initializer/CreatingChildSimulator"], [self.states["/Main/Initializer/StartingChildSimulator"]])
  282. _Main_Initializer_CreatingChildSimulator_0.setAction(self._Main_Initializer_CreatingChildSimulator_0_exec)
  283. _Main_Initializer_CreatingChildSimulator_0.setTrigger(Event("instance_created", None))
  284. self.states["/Main/Initializer/CreatingChildSimulator"].addTransition(_Main_Initializer_CreatingChildSimulator_0)
  285. # transition /Main/Initializer/StartingChildSimulator
  286. _Main_Initializer_StartingChildSimulator_0 = Transition(self, self.states["/Main/Initializer/StartingChildSimulator"], [self.states["/Main/Initializer/Waiting"]])
  287. _Main_Initializer_StartingChildSimulator_0.setTrigger(Event("WovenSimulation.Initialized", None))
  288. self.states["/Main/Initializer/StartingChildSimulator"].addTransition(_Main_Initializer_StartingChildSimulator_0)
  289. # transition /Main/SimulationFlow/PrePaused
  290. _Main_SimulationFlow_PrePaused_0 = Transition(self, self.states["/Main/SimulationFlow/PrePaused"], [self.states["/Main/SimulationFlow/Paused"]])
  291. _Main_SimulationFlow_PrePaused_0.setTrigger(Event("_0after"))
  292. self.states["/Main/SimulationFlow/PrePaused"].addTransition(_Main_SimulationFlow_PrePaused_0)
  293. # transition /Main/SimulationFlow/Paused
  294. _Main_SimulationFlow_Paused_0 = Transition(self, self.states["/Main/SimulationFlow/Paused"], [self.states["/Main/SimulationFlow/Executing"]])
  295. _Main_SimulationFlow_Paused_0.setAction(self._Main_SimulationFlow_Paused_0_exec)
  296. _Main_SimulationFlow_Paused_0.setTrigger(None)
  297. _Main_SimulationFlow_Paused_0.setGuard(self._Main_SimulationFlow_Paused_0_guard)
  298. self.states["/Main/SimulationFlow/Paused"].addTransition(_Main_SimulationFlow_Paused_0)
  299. _Main_SimulationFlow_Paused_1 = Transition(self, self.states["/Main/SimulationFlow/Paused"], [self.states["/Main/SimulationFlow/Executing"]])
  300. _Main_SimulationFlow_Paused_1.setAction(self._Main_SimulationFlow_Paused_1_exec)
  301. _Main_SimulationFlow_Paused_1.setTrigger(None)
  302. _Main_SimulationFlow_Paused_1.setGuard(self._Main_SimulationFlow_Paused_1_guard)
  303. self.states["/Main/SimulationFlow/Paused"].addTransition(_Main_SimulationFlow_Paused_1)
  304. _Main_SimulationFlow_Paused_2 = Transition(self, self.states["/Main/SimulationFlow/Paused"], [self.states["/Main/SimulationFlow/Executing"]])
  305. _Main_SimulationFlow_Paused_2.setAction(self._Main_SimulationFlow_Paused_2_exec)
  306. _Main_SimulationFlow_Paused_2.setTrigger(None)
  307. _Main_SimulationFlow_Paused_2.setGuard(self._Main_SimulationFlow_Paused_2_guard)
  308. self.states["/Main/SimulationFlow/Paused"].addTransition(_Main_SimulationFlow_Paused_2)
  309. _Main_SimulationFlow_Paused_3 = Transition(self, self.states["/Main/SimulationFlow/Paused"], [self.states["/Main/SimulationFlow/Executing"]])
  310. _Main_SimulationFlow_Paused_3.setAction(self._Main_SimulationFlow_Paused_3_exec)
  311. _Main_SimulationFlow_Paused_3.setTrigger(None)
  312. _Main_SimulationFlow_Paused_3.setGuard(self._Main_SimulationFlow_Paused_3_guard)
  313. self.states["/Main/SimulationFlow/Paused"].addTransition(_Main_SimulationFlow_Paused_3)
  314. _Main_SimulationFlow_Paused_4 = Transition(self, self.states["/Main/SimulationFlow/Paused"], [self.states["/Main/SimulationFlow/Executing"]])
  315. _Main_SimulationFlow_Paused_4.setAction(self._Main_SimulationFlow_Paused_4_exec)
  316. _Main_SimulationFlow_Paused_4.setTrigger(None)
  317. _Main_SimulationFlow_Paused_4.setGuard(self._Main_SimulationFlow_Paused_4_guard)
  318. self.states["/Main/SimulationFlow/Paused"].addTransition(_Main_SimulationFlow_Paused_4)
  319. _Main_SimulationFlow_Paused_5 = Transition(self, self.states["/Main/SimulationFlow/Paused"], [self.states["/Main/SimulationFlow/Executing"]])
  320. _Main_SimulationFlow_Paused_5.setAction(self._Main_SimulationFlow_Paused_5_exec)
  321. _Main_SimulationFlow_Paused_5.setTrigger(None)
  322. _Main_SimulationFlow_Paused_5.setGuard(self._Main_SimulationFlow_Paused_5_guard)
  323. self.states["/Main/SimulationFlow/Paused"].addTransition(_Main_SimulationFlow_Paused_5)
  324. # transition /Main/SimulationFlow/Executing
  325. _Main_SimulationFlow_Executing_0 = Transition(self, self.states["/Main/SimulationFlow/Executing"], [self.states["/Main/SimulationFlow/Paused"]])
  326. _Main_SimulationFlow_Executing_0.setTrigger(None)
  327. _Main_SimulationFlow_Executing_0.setGuard(self._Main_SimulationFlow_Executing_0_guard)
  328. self.states["/Main/SimulationFlow/Executing"].addTransition(_Main_SimulationFlow_Executing_0)
  329. _Main_SimulationFlow_Executing_1 = Transition(self, self.states["/Main/SimulationFlow/Executing"], [self.states["/Main/SimulationFlow/PrePaused"]])
  330. _Main_SimulationFlow_Executing_1.setTrigger(Event("WovenSimulation.Finished", None))
  331. _Main_SimulationFlow_Executing_1.setGuard(self._Main_SimulationFlow_Executing_1_guard)
  332. self.states["/Main/SimulationFlow/Executing"].addTransition(_Main_SimulationFlow_Executing_1)
  333. # transition /Main/GodEventManager/Listening
  334. _Main_GodEventManager_Listening_0 = Transition(self, self.states["/Main/GodEventManager/Listening"], [self.states["/Main/GodEventManager/Waiting"]])
  335. _Main_GodEventManager_Listening_0.setAction(self._Main_GodEventManager_Listening_0_exec)
  336. _Main_GodEventManager_Listening_0.setTrigger(Event("god_event", "user_input"))
  337. _Main_GodEventManager_Listening_0.setGuard(self._Main_GodEventManager_Listening_0_guard)
  338. self.states["/Main/GodEventManager/Listening"].addTransition(_Main_GodEventManager_Listening_0)
  339. # transition /Main/GodEventManager/Waiting
  340. _Main_GodEventManager_Waiting_0 = Transition(self, self.states["/Main/GodEventManager/Waiting"], [self.states["/Main/GodEventManager/Listening"]])
  341. _Main_GodEventManager_Waiting_0.setAction(self._Main_GodEventManager_Waiting_0_exec)
  342. _Main_GodEventManager_Waiting_0.setTrigger(Event("WovenSimulation.GodEventResult", None))
  343. self.states["/Main/GodEventManager/Waiting"].addTransition(_Main_GodEventManager_Waiting_0)
  344. # transition /Main/BreakpointManager/Listening
  345. _Main_BreakpointManager_Listening_0 = Transition(self, self.states["/Main/BreakpointManager/Listening"], [self.states["/Main/BreakpointManager/Waiting"]])
  346. _Main_BreakpointManager_Listening_0.setAction(self._Main_BreakpointManager_Listening_0_exec)
  347. _Main_BreakpointManager_Listening_0.setTrigger(Event("add_breakpoint", "user_input"))
  348. self.states["/Main/BreakpointManager/Listening"].addTransition(_Main_BreakpointManager_Listening_0)
  349. _Main_BreakpointManager_Listening_1 = Transition(self, self.states["/Main/BreakpointManager/Listening"], [self.states["/Main/BreakpointManager/Waiting"]])
  350. _Main_BreakpointManager_Listening_1.setAction(self._Main_BreakpointManager_Listening_1_exec)
  351. _Main_BreakpointManager_Listening_1.setTrigger(Event("del_breakpoint", "user_input"))
  352. self.states["/Main/BreakpointManager/Listening"].addTransition(_Main_BreakpointManager_Listening_1)
  353. _Main_BreakpointManager_Listening_2 = Transition(self, self.states["/Main/BreakpointManager/Listening"], [self.states["/Main/BreakpointManager/Waiting"]])
  354. _Main_BreakpointManager_Listening_2.setAction(self._Main_BreakpointManager_Listening_2_exec)
  355. _Main_BreakpointManager_Listening_2.setTrigger(Event("toggle_breakpoint", "user_input"))
  356. self.states["/Main/BreakpointManager/Listening"].addTransition(_Main_BreakpointManager_Listening_2)
  357. _Main_BreakpointManager_Listening_3 = Transition(self, self.states["/Main/BreakpointManager/Listening"], [self.states["/Main/BreakpointManager/Waiting"]])
  358. _Main_BreakpointManager_Listening_3.setAction(self._Main_BreakpointManager_Listening_3_exec)
  359. _Main_BreakpointManager_Listening_3.setTrigger(Event("list_breakpoints", "user_input"))
  360. self.states["/Main/BreakpointManager/Listening"].addTransition(_Main_BreakpointManager_Listening_3)
  361. # transition /Main/BreakpointManager/Waiting
  362. _Main_BreakpointManager_Waiting_0 = Transition(self, self.states["/Main/BreakpointManager/Waiting"], [self.states["/Main/BreakpointManager/Listening"]])
  363. _Main_BreakpointManager_Waiting_0.setAction(self._Main_BreakpointManager_Waiting_0_exec)
  364. _Main_BreakpointManager_Waiting_0.setTrigger(Event("Breakpoint.AddResult", None))
  365. self.states["/Main/BreakpointManager/Waiting"].addTransition(_Main_BreakpointManager_Waiting_0)
  366. _Main_BreakpointManager_Waiting_1 = Transition(self, self.states["/Main/BreakpointManager/Waiting"], [self.states["/Main/BreakpointManager/Listening"]])
  367. _Main_BreakpointManager_Waiting_1.setAction(self._Main_BreakpointManager_Waiting_1_exec)
  368. _Main_BreakpointManager_Waiting_1.setTrigger(Event("Breakpoint.DelResult", None))
  369. self.states["/Main/BreakpointManager/Waiting"].addTransition(_Main_BreakpointManager_Waiting_1)
  370. _Main_BreakpointManager_Waiting_2 = Transition(self, self.states["/Main/BreakpointManager/Waiting"], [self.states["/Main/BreakpointManager/Listening"]])
  371. _Main_BreakpointManager_Waiting_2.setAction(self._Main_BreakpointManager_Waiting_2_exec)
  372. _Main_BreakpointManager_Waiting_2.setTrigger(Event("Breakpoint.ToggleResult", None))
  373. self.states["/Main/BreakpointManager/Waiting"].addTransition(_Main_BreakpointManager_Waiting_2)
  374. _Main_BreakpointManager_Waiting_3 = Transition(self, self.states["/Main/BreakpointManager/Waiting"], [self.states["/Main/BreakpointManager/Listening"]])
  375. _Main_BreakpointManager_Waiting_3.setAction(self._Main_BreakpointManager_Waiting_3_exec)
  376. _Main_BreakpointManager_Waiting_3.setTrigger(Event("Breakpoint.ListResult", None))
  377. self.states["/Main/BreakpointManager/Waiting"].addTransition(_Main_BreakpointManager_Waiting_3)
  378. # transition /Main/ModeSelector/Running
  379. _Main_ModeSelector_Running_0 = Transition(self, self.states["/Main/ModeSelector/Running"], [self.states["/Main/ModeSelector/Paused"]])
  380. _Main_ModeSelector_Running_0.setAction(self._Main_ModeSelector_Running_0_exec)
  381. _Main_ModeSelector_Running_0.setTrigger(Event("WovenSimulation.Finished", None))
  382. self.states["/Main/ModeSelector/Running"].addTransition(_Main_ModeSelector_Running_0)
  383. _Main_ModeSelector_Running_1 = Transition(self, self.states["/Main/ModeSelector/Running"], [self.states["/Main/ModeSelector/Paused"]])
  384. _Main_ModeSelector_Running_1.setAction(self._Main_ModeSelector_Running_1_exec)
  385. _Main_ModeSelector_Running_1.setTrigger(Event("Breakpoint.Triggered", None))
  386. self.states["/Main/ModeSelector/Running"].addTransition(_Main_ModeSelector_Running_1)
  387. def _Main_SimulationFlow_PrePaused_enter(self):
  388. self.addTimer(0, self.sccd_yield())
  389. def _Main_SimulationFlow_PrePaused_exit(self):
  390. self.removeTimer(0)
  391. def _Main_ModeSelector_Running_0_exec(self, parameters):
  392. clock = parameters[0]
  393. state = parameters[1]
  394. self.big_step.outputEvent(Event("WovenSimulation.Finished", "user_output", []))
  395. self.big_step.outputEvent(Event("WovenSimulation.State", "user_output", [clock / 1000.0, state]))
  396. def _Main_ModeSelector_Running_1_exec(self, parameters):
  397. triggered_bp = parameters[0]
  398. clock = parameters[1]
  399. state = parameters[2]
  400. self.big_step.outputEvent(Event("Breakpoint.Triggered", "user_output", [triggered_bp, clock / 1000.0, state]))
  401. self.big_step.outputEvent(Event("WovenSimulation.State", "user_output", [clock / 1000.0, state]))
  402. def _Main_ModeSelector_Paused_3_exec(self, parameters):
  403. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("WovenSimulation.StepInto", None, [])]))
  404. def _Main_ModeSelector_Paused_4_exec(self, parameters):
  405. realtime_scale = parameters[0]
  406. self.realtime_scale = float(realtime_scale)
  407. def _Main_ModeSelector_Paused_5_exec(self, parameters):
  408. clock = parameters[0]
  409. state = parameters[1]
  410. elapsed = parameters[2]
  411. time_next = parameters[3]
  412. fsa_events = parameters[4]
  413. executed_transition = parameters[5]
  414. self.big_step.outputEvent(Event("FSABigStep.Finished", "user_output", []))
  415. self.big_step.outputEvent(Event("FSABigStep.State", "user_output", [clock / 1000.0, state]))
  416. def _Main_ModeSelector_Paused_6_exec(self, parameters):
  417. clock = parameters[0]
  418. state = parameters[1]
  419. self.big_step.outputEvent(Event("WovenSimulation.Finished", "user_output", []))
  420. self.big_step.outputEvent(Event("WovenSimulation.State", "user_output", [clock / 1000.0, state]))
  421. def _Main_ModeSelector_Paused_7_exec(self, parameters):
  422. triggered_bp = parameters[0]
  423. clock = parameters[1]
  424. state = parameters[2]
  425. self.big_step.outputEvent(Event("Breakpoint.Triggered", "user_output", [triggered_bp, clock / 1000.0, state]))
  426. self.big_step.outputEvent(Event("WovenSimulation.State", "user_output", [clock / 1000.0, state]))
  427. def _Main_ModeSelector_WaitingForStepIntoSuccess_0_exec(self, parameters):
  428. self.big_step.outputEvent(Event("StepInto.Success", "user_output", []))
  429. def _Main_ModeSelector_WaitingForStepIntoSuccess_1_exec(self, parameters):
  430. self.big_step.outputEvent(Event("StepInto.Failure", "user_output", []))
  431. def _Main_ModeSelector_Running_Continuous_0_exec(self, parameters):
  432. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("WovenSimulation.Pause", None, [])]))
  433. def _Main_ModeSelector_Running_Continuous_1_exec(self, parameters):
  434. clock = parameters[0]
  435. state = parameters[1]
  436. self.big_step.outputEvent(Event("WovenSimulation.Finished", "user_output", []))
  437. self.big_step.outputEvent(Event("WovenSimulation.State", "user_output", [clock / 1000.0, state]))
  438. def _Main_ModeSelector_Running_Realtime_0_exec(self, parameters):
  439. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("WovenSimulation.Pause", None, [])]))
  440. def _Main_ModeSelector_Running_Realtime_1_exec(self, parameters):
  441. clock = parameters[0]
  442. state = parameters[1]
  443. self.big_step.outputEvent(Event("WovenSimulation.Finished", "user_output", []))
  444. self.big_step.outputEvent(Event("WovenSimulation.State", "user_output", [clock / 1000.0, state]))
  445. def _Main_ModeSelector_Running_Realtime_2_exec(self, parameters):
  446. clock = parameters[0]
  447. state = parameters[1]
  448. elapsed = parameters[2]
  449. time_next = parameters[3]
  450. fsa_events = parameters[4]
  451. executed_transition = parameters[5]
  452. self.big_step.outputEvent(Event("FSABigStep.Finished", "user_output", []))
  453. self.big_step.outputEvent(Event("FSABigStep.State", "user_output", [clock / 1000.0, state]))
  454. def _Main_ModeSelector_Running_BigStep_0_exec(self, parameters):
  455. clock = parameters[0]
  456. state = parameters[1]
  457. elapsed = parameters[2]
  458. time_next = parameters[3]
  459. fsa_events = parameters[4]
  460. executed_transition = parameters[5]
  461. self.big_step.outputEvent(Event("FSABigStep.Finished", "user_output", []))
  462. self.big_step.outputEvent(Event("FSABigStep.State", "user_output", [clock / 1000.0, state]))
  463. def _Main_ModeSelector_Running_BigStep_1_exec(self, parameters):
  464. clock = parameters[0]
  465. state = parameters[1]
  466. self.big_step.outputEvent(Event("WovenSimulation.Finished", "user_output", []))
  467. self.big_step.outputEvent(Event("WovenSimulation.State", "user_output", [clock / 1000.0, state]))
  468. def _Main_ModeSelector_Running_SmallStep_0_exec(self, parameters):
  469. clock = parameters[0]
  470. state = parameters[1]
  471. elapsed = parameters[2]
  472. fsa_events = parameters[3]
  473. selected_transition = parameters[4]
  474. self.big_step.outputEvent(Event("FSASmallStep.Finished", "user_output", []))
  475. self.big_step.outputEvent(Event("FSASmallStep.State", "user_output", [clock / 1000.0, state, elapsed, fsa_events, selected_transition]))
  476. def _Main_ModeSelector_Running_SmallStep_1_exec(self, parameters):
  477. clock = parameters[0]
  478. state = parameters[1]
  479. elapsed = parameters[2]
  480. time_next = parameters[3]
  481. fsa_events = parameters[4]
  482. executed_transition = parameters[5]
  483. self.big_step.outputEvent(Event("FSABigStep.Finished", "user_output", []))
  484. self.big_step.outputEvent(Event("FSABigStep.State", "user_output", [clock / 1000.0, state]))
  485. def _Main_ModeSelector_Running_SmallStep_2_exec(self, parameters):
  486. clock = parameters[0]
  487. state = parameters[1]
  488. self.big_step.outputEvent(Event("WovenSimulation.Finished", "user_output", []))
  489. self.big_step.outputEvent(Event("WovenSimulation.State", "user_output", [clock / 1000.0, state]))
  490. def _Main_ModeSelector_Running_StepInto_Paused_2_exec(self, parameters):
  491. clock = parameters[0]
  492. iteration = parameters[1]
  493. time_next = parameters[2]
  494. state = parameters[3]
  495. self.big_step.outputEvent(Event("CBDBigStep.Finished", "user_output", []))
  496. self.big_step.outputEvent(Event("CBDBigStep.State", "user_output", [clock, iteration, time_next]))
  497. def _Main_ModeSelector_Running_StepInto_BigStep_0_exec(self, parameters):
  498. clock = parameters[0]
  499. iteration = parameters[1]
  500. time_next = parameters[2]
  501. state = parameters[3]
  502. self.big_step.outputEvent(Event("CBDBigStep.Finished", "user_output", []))
  503. self.big_step.outputEvent(Event("CBDBigStep.State", "user_output", [clock, iteration, time_next]))
  504. def _Main_ModeSelector_Running_StepInto_SmallStep_0_exec(self, parameters):
  505. new_current_component_idx = parameters[0]
  506. new_state = parameters[1]
  507. self.big_step.outputEvent(Event("CBDSmallStep.Finished", "user_output", []))
  508. self.big_step.outputEvent(Event("CBDSmallStep.State", "user_output", [new_current_component_idx]))
  509. def _Main_ModeSelector_WaitingForPaused_0_exec(self, parameters):
  510. clock = parameters[0]
  511. state = parameters[1]
  512. self.big_step.outputEvent(Event("WovenSimulation.Paused", "user_output", []))
  513. self.big_step.outputEvent(Event("WovenSimulation.State", "user_output", [clock / 1000.0, state]))
  514. def _Main_ChildState_Initialized_0_exec(self, parameters):
  515. self.big_step.outputEventOM(Event("delete_instance", None, [self, 'child_simulator']))
  516. def _Main_Initializer_Waiting_0_exec(self, parameters):
  517. self.big_step.outputEventOM(Event("create_instance", None, [self, 'child_simulator', 'WovenSimulator_Simulation', copy.deepcopy(self.woven_model), copy.deepcopy(self.fsa_events), self.fsa_delta, copy.deepcopy(self.cbd_options)]))
  518. def _Main_Initializer_Waiting_0_guard(self, parameters):
  519. return self.inState(["/Main/ChildState/Uninitialized"])
  520. def _Main_Initializer_CreatingChildSimulator_0_exec(self, parameters):
  521. self.big_step.outputEventOM(Event("start_instance", None, [self, 'child_simulator']))
  522. def _Main_SimulationFlow_Paused_0_exec(self, parameters):
  523. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("WovenSimulation.Execute", None, [])]))
  524. def _Main_SimulationFlow_Paused_0_guard(self, parameters):
  525. return self.inState(["/Main/ModeSelector/Running/Continuous"]) and self.inState(["/Main/ChildState/Initialized"])
  526. def _Main_SimulationFlow_Paused_1_exec(self, parameters):
  527. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("WovenSimulation.ExecuteRealtime", None, [self.realtime_scale])]))
  528. def _Main_SimulationFlow_Paused_1_guard(self, parameters):
  529. return self.inState(["/Main/ModeSelector/Running/Realtime"]) and self.inState(["/Main/ChildState/Initialized"])
  530. def _Main_SimulationFlow_Paused_2_exec(self, parameters):
  531. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("FSABigStep.Execute", None, [])]))
  532. def _Main_SimulationFlow_Paused_2_guard(self, parameters):
  533. return self.inState(["/Main/ModeSelector/Running/BigStep"]) and self.inState(["/Main/ChildState/Initialized"])
  534. def _Main_SimulationFlow_Paused_3_exec(self, parameters):
  535. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("FSASmallStep.Execute", None, [])]))
  536. def _Main_SimulationFlow_Paused_3_guard(self, parameters):
  537. return self.inState(["/Main/ModeSelector/Running/SmallStep"]) and self.inState(["/Main/ChildState/Initialized"])
  538. def _Main_SimulationFlow_Paused_4_exec(self, parameters):
  539. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("CBDSmallStep.Execute", None, [])]))
  540. def _Main_SimulationFlow_Paused_4_guard(self, parameters):
  541. return self.inState(["/Main/ModeSelector/Running/StepInto/SmallStep"]) and self.inState(["/Main/ChildState/Initialized"])
  542. def _Main_SimulationFlow_Paused_5_exec(self, parameters):
  543. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("CBDBigStep.Execute", None, [])]))
  544. def _Main_SimulationFlow_Paused_5_guard(self, parameters):
  545. return self.inState(["/Main/ModeSelector/Running/StepInto/BigStep"]) and self.inState(["/Main/ChildState/Initialized"])
  546. def _Main_SimulationFlow_Executing_0_guard(self, parameters):
  547. return self.inState(["/Main/ModeSelector/Paused"]) or self.inState(["/Main/ModeSelector/Running/StepInto/Paused"])
  548. def _Main_SimulationFlow_Executing_1_guard(self, parameters):
  549. return self.inState(["/Main/ModeSelector/Running/Continuous"]) or self.inState(["/Main/ModeSelector/Running/Realtime"])
  550. def _Main_GodEventManager_Listening_0_exec(self, parameters):
  551. block_name = parameters[0]
  552. new_val = parameters[1]
  553. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("WovenSimulation.GodEvent", None, [block_name, new_val])]))
  554. def _Main_GodEventManager_Listening_0_guard(self, parameters):
  555. block_name = parameters[0]
  556. new_val = parameters[1]
  557. return self.inState(["/Main/ModeSelector/Paused"])
  558. def _Main_GodEventManager_Waiting_0_exec(self, parameters):
  559. result = parameters[0]
  560. self.big_step.outputEvent(Event("GodEventResult", "user_output", [result]))
  561. def _Main_BreakpointManager_Listening_0_exec(self, parameters):
  562. name = parameters[0]
  563. function = parameters[1]
  564. enabled = parameters[2]
  565. disable_on_trigger = parameters[3]
  566. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("Breakpoint.Add", None, [name, function, enabled, disable_on_trigger])]))
  567. def _Main_BreakpointManager_Listening_1_exec(self, parameters):
  568. name = parameters[0]
  569. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("Breakpoint.Del", None, [name])]))
  570. def _Main_BreakpointManager_Listening_2_exec(self, parameters):
  571. name = parameters[0]
  572. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("Breakpoint.Toggle", None, [name])]))
  573. def _Main_BreakpointManager_Listening_3_exec(self, parameters):
  574. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("Breakpoint.List", None, [])]))
  575. def _Main_BreakpointManager_Waiting_0_exec(self, parameters):
  576. result = parameters[0]
  577. self.big_step.outputEvent(Event("Breakpoint.AddResult", "user_output", [result]))
  578. def _Main_BreakpointManager_Waiting_1_exec(self, parameters):
  579. result = parameters[0]
  580. self.big_step.outputEvent(Event("Breakpoint.DelResult", "user_output", [result]))
  581. def _Main_BreakpointManager_Waiting_2_exec(self, parameters):
  582. result = parameters[0]
  583. self.big_step.outputEvent(Event("Breakpoint.ToggleResult", "user_output", [result]))
  584. def _Main_BreakpointManager_Waiting_3_exec(self, parameters):
  585. result = parameters[0]
  586. self.big_step.outputEvent(Event("Breakpoint.ListResult", "user_output", [result]))
  587. def initializeStatechart(self):
  588. # enter default state
  589. self.default_targets = self.states["/Main"].getEffectiveTargetStates()
  590. RuntimeClassBase.initializeStatechart(self)
  591. class WovenSimulator_Simulation(RuntimeClassBase):
  592. def __init__(self, controller, woven_model, fsa_events, fsa_delta, cbd_options):
  593. RuntimeClassBase.__init__(self, controller)
  594. self.semantics.big_step_maximality = StatechartSemantics.TakeMany
  595. self.semantics.internal_event_lifeline = StatechartSemantics.Queue
  596. self.semantics.input_event_lifeline = StatechartSemantics.FirstComboStep
  597. self.semantics.priority = StatechartSemantics.SourceParent
  598. self.semantics.concurrency = StatechartSemantics.Single
  599. # build Statechart structure
  600. self.build_statechart_structure()
  601. # call user defined constructor
  602. WovenSimulator_Simulation.user_defined_constructor(self, woven_model, fsa_events, fsa_delta, cbd_options)
  603. def user_defined_constructor(self, woven_model, fsa_events, fsa_delta, cbd_options):
  604. self.cbd_options = cbd_options
  605. self.fsa_events = fsa_events
  606. self.woven_delta = min(fsa_delta, self.cbd_options.getDeltaT() * 1000.0)
  607. self.woven_model = woven_model
  608. def user_defined_destructor(self):
  609. pass
  610. # user defined method
  611. def initialize(self):
  612. self.woven_lib = FSACBDLib()
  613. self.woven_global_state = dict()
  614. self.woven_previous_global_state = dict()
  615. self.woven_triggered_when_transition = None
  616. # user defined method
  617. def endCondition(self):
  618. return False # This depends on the child simulators (if one of them completes, the simulation completes.)
  619. # user defined method
  620. def finalize(self):
  621. print '(Woven) Simulation finalized.'
  622. # user defined method
  623. def initializeDebugger(self):
  624. self.breakpoints = []
  625. self.triggered_bp = None
  626. self.breakpoint_triggers = False
  627. # user defined method
  628. def wovenUpdateCBDState(self):
  629. self.woven_lib.updateCBDState(self.woven_global_state, self.fsa_state.cbd)
  630. # user defined method
  631. def wovenUpdateGlobalState(self):
  632. self.woven_previous_global_state = copy.deepcopy(self.woven_global_state)
  633. self.woven_lib.updateGlobalState(self.woven_global_state, self.fsa_state.cbd, self.cbd_clock / 1000.0)
  634. # user defined method
  635. def wovenGetTriggeredWhenTransition(self):
  636. return self.woven_lib.getTriggeredWhenTransition(self.woven_model, self.fsa_state, self.woven_global_state, self.woven_previous_global_state)
  637. # user defined method
  638. def waitTime(self):
  639. # First, we convert from wall-clock time to simulated time.
  640. # 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).
  641. simulated_diff = (accurate_time.time() - self.realtime_start_time) * self.realtime_scale
  642. # time_next and simulated_diff are both in simulated time: so now scale back to wall-clock time by dividing.
  643. # This function returns an amount of miliseconds.
  644. return ((self.fsa_time_next - simulated_diff) / self.realtime_scale)
  645. # user defined method
  646. def syncSimulatedTime(self):
  647. diff = accurate_time.time() - self.realtime_start_time
  648. self.fsa_clock = diff * self.realtime_scale
  649. # user defined method
  650. def addBreakpoint(self, name, function, enabled = None, disable_on_trigger = None):
  651. if enabled == None: enabled = true
  652. if disable_on_trigger == None: disable_on_trigger = true
  653. if len([bp for bp in self.breakpoints if bp.name == name]) > 0:
  654. return -1
  655. self.breakpoints.append(Breakpoint(name, function, enabled, disable_on_trigger))
  656. return 0
  657. # user defined method
  658. def delBreakpoint(self, name):
  659. if len([bp for bp in self.breakpoints if bp.name == name]) == 0:
  660. return -1
  661. self.breakpoints = [bp for bp in self.breakpoints if bp.name != name]
  662. return 0
  663. # user defined method
  664. def toggleBreakpoint(self, name):
  665. if len([bp for bp in self.breakpoints if bp.name == name]) == 0:
  666. return -1
  667. for bp in self.breakpoints:
  668. if bp.name == name:
  669. bp.enabled = not bp.enabled
  670. break
  671. return 0
  672. # user defined method
  673. def breakpointTriggers(self, is_realtime_simulation):
  674. self.triggered_bp = None
  675. for bp in self.breakpoints:
  676. if not bp.enabled:
  677. continue
  678. # include the function in the scope...
  679. exec(bp.function)
  680. # ... and execute it, note that the breakpoint thus has to start with "def breakpoint("
  681. # note that we pass self.time_next instead of self.simulated_time in the case of as-fast-as-possible simulation (or stepping)
  682. # 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')
  683. # in case of realtime simulation, we do pass the current simulated time, since we can stop at (more or less) exactly the right time
  684. try:
  685. if breakpoint({'fsa_clock': (self.fsa_clock if is_realtime_simulation else self.fsa_time_next) / 1000.0,
  686. 'fsa_state': self.fsa_state,
  687. 'fsa_elapsed': self.fsa_elapsed,
  688. 'fsa_time_next': self.fsa_time_next,
  689. 'cbd_clock': (self.cbd_clock if is_realtime_simulation else self.cbd_time_next) / 1000.0,
  690. 'cbd_state': self.cbd_state,
  691. 'cbd_iteration': self.cbd_iteration,
  692. 'cbd_time_next': self.cbd_time_next}):
  693. # triggered!
  694. print 'triggered'
  695. self.triggered_bp = bp.name
  696. if bp.disable_on_trigger:
  697. bp.enabled = False
  698. return True
  699. else:
  700. # not triggered, so continue
  701. continue
  702. except AttributeError:
  703. pass # this means state/clock has not been set yet, so we are at the start of simulation... no breakpoint can trigger
  704. return False
  705. # builds Statechart structure
  706. def build_statechart_structure(self):
  707. # state <root>
  708. self.states[""] = State(0, self)
  709. # state /Main
  710. self.states["/Main"] = ParallelState(1, self)
  711. # state /Main/ModeSelector
  712. self.states["/Main/ModeSelector"] = State(2, self)
  713. # state /Main/ModeSelector/Paused
  714. self.states["/Main/ModeSelector/Paused"] = State(3, self)
  715. # state /Main/ModeSelector/ExecutingRealtimeIfInitialized
  716. self.states["/Main/ModeSelector/ExecutingRealtimeIfInitialized"] = State(4, self)
  717. # state /Main/ModeSelector/WaitingForBigStepToEndPause
  718. self.states["/Main/ModeSelector/WaitingForBigStepToEndPause"] = State(5, self)
  719. # state /Main/ModeSelector/CheckIfBreakpointTriggers
  720. self.states["/Main/ModeSelector/CheckIfBreakpointTriggers"] = State(6, self)
  721. self.states["/Main/ModeSelector/CheckIfBreakpointTriggers"].setEnter(self._Main_ModeSelector_CheckIfBreakpointTriggers_enter)
  722. # state /Main/ModeSelector/Running
  723. self.states["/Main/ModeSelector/Running"] = State(7, self)
  724. # state /Main/ModeSelector/Running/Continuous
  725. self.states["/Main/ModeSelector/Running/Continuous"] = State(8, self)
  726. # state /Main/ModeSelector/Running/Continuous/CheckIfBreakpointTriggers
  727. self.states["/Main/ModeSelector/Running/Continuous/CheckIfBreakpointTriggers"] = State(9, self)
  728. self.states["/Main/ModeSelector/Running/Continuous/CheckIfBreakpointTriggers"].setEnter(self._Main_ModeSelector_Running_Continuous_CheckIfBreakpointTriggers_enter)
  729. # state /Main/ModeSelector/Running/Continuous/Running
  730. self.states["/Main/ModeSelector/Running/Continuous/Running"] = State(10, self)
  731. # state /Main/ModeSelector/Running/Realtime
  732. self.states["/Main/ModeSelector/Running/Realtime"] = State(11, self)
  733. # state /Main/ModeSelector/Running/Realtime/CheckIfBreakpointTriggers
  734. self.states["/Main/ModeSelector/Running/Realtime/CheckIfBreakpointTriggers"] = State(12, self)
  735. self.states["/Main/ModeSelector/Running/Realtime/CheckIfBreakpointTriggers"].setEnter(self._Main_ModeSelector_Running_Realtime_CheckIfBreakpointTriggers_enter)
  736. # state /Main/ModeSelector/Running/Realtime/Running
  737. self.states["/Main/ModeSelector/Running/Realtime/Running"] = State(13, self)
  738. # state /Main/ModeSelector/Running/BigStep
  739. self.states["/Main/ModeSelector/Running/BigStep"] = State(14, self)
  740. # state /Main/ModeSelector/Running/SmallStep
  741. self.states["/Main/ModeSelector/Running/SmallStep"] = State(15, self)
  742. # state /Main/ModeSelector/Running/ChildStep
  743. self.states["/Main/ModeSelector/Running/ChildStep"] = State(16, self)
  744. # state /Main/ModeSelector/Running/ChildStep/Paused
  745. self.states["/Main/ModeSelector/Running/ChildStep/Paused"] = State(17, self)
  746. # state /Main/ModeSelector/Running/ChildStep/BigStep
  747. self.states["/Main/ModeSelector/Running/ChildStep/BigStep"] = State(18, self)
  748. # state /Main/ModeSelector/Running/ChildStep/SmallStep
  749. self.states["/Main/ModeSelector/Running/ChildStep/SmallStep"] = State(19, self)
  750. # state /Main/ModeSelector/Stopped
  751. self.states["/Main/ModeSelector/Stopped"] = State(20, self)
  752. self.states["/Main/ModeSelector/Stopped"].setEnter(self._Main_ModeSelector_Stopped_enter)
  753. # state /Main/FSAChildState
  754. self.states["/Main/FSAChildState"] = State(21, self)
  755. # state /Main/FSAChildState/Uninitialized
  756. self.states["/Main/FSAChildState/Uninitialized"] = State(22, self)
  757. # state /Main/FSAChildState/Initialized
  758. self.states["/Main/FSAChildState/Initialized"] = State(23, self)
  759. # state /Main/CBDChildState
  760. self.states["/Main/CBDChildState"] = State(24, self)
  761. # state /Main/CBDChildState/Uninitialized
  762. self.states["/Main/CBDChildState/Uninitialized"] = State(25, self)
  763. # state /Main/CBDChildState/Initialized
  764. self.states["/Main/CBDChildState/Initialized"] = State(26, self)
  765. # state /Main/FSAInitializer
  766. self.states["/Main/FSAInitializer"] = State(27, self)
  767. # state /Main/FSAInitializer/Waiting
  768. self.states["/Main/FSAInitializer/Waiting"] = State(28, self)
  769. # state /Main/FSAInitializer/CreatingChildSimulator
  770. self.states["/Main/FSAInitializer/CreatingChildSimulator"] = State(29, self)
  771. # state /Main/FSAInitializer/StartingChildSimulator
  772. self.states["/Main/FSAInitializer/StartingChildSimulator"] = State(30, self)
  773. # state /Main/FSAInitializer/Running
  774. self.states["/Main/FSAInitializer/Running"] = State(31, self)
  775. # state /Main/FSAInitializer/SettleBeforeWaiting
  776. self.states["/Main/FSAInitializer/SettleBeforeWaiting"] = State(32, self)
  777. self.states["/Main/FSAInitializer/SettleBeforeWaiting"].setEnter(self._Main_FSAInitializer_SettleBeforeWaiting_enter)
  778. self.states["/Main/FSAInitializer/SettleBeforeWaiting"].setExit(self._Main_FSAInitializer_SettleBeforeWaiting_exit)
  779. # state /Main/CBDInitializer
  780. self.states["/Main/CBDInitializer"] = State(33, self)
  781. # state /Main/CBDInitializer/Waiting
  782. self.states["/Main/CBDInitializer/Waiting"] = State(34, self)
  783. # state /Main/CBDInitializer/CreatingChildSimulator
  784. self.states["/Main/CBDInitializer/CreatingChildSimulator"] = State(35, self)
  785. # state /Main/CBDInitializer/StartingChildSimulator
  786. self.states["/Main/CBDInitializer/StartingChildSimulator"] = State(36, self)
  787. # state /Main/CBDInitializer/Running
  788. self.states["/Main/CBDInitializer/Running"] = State(37, self)
  789. # state /Main/CBDInitializer/SettleBeforeWaiting
  790. self.states["/Main/CBDInitializer/SettleBeforeWaiting"] = State(38, self)
  791. self.states["/Main/CBDInitializer/SettleBeforeWaiting"].setEnter(self._Main_CBDInitializer_SettleBeforeWaiting_enter)
  792. self.states["/Main/CBDInitializer/SettleBeforeWaiting"].setExit(self._Main_CBDInitializer_SettleBeforeWaiting_exit)
  793. # state /Main/SimulationFlow
  794. self.states["/Main/SimulationFlow"] = State(39, self)
  795. # state /Main/SimulationFlow/Started
  796. self.states["/Main/SimulationFlow/Started"] = State(40, self)
  797. # state /Main/SimulationFlow/Initialized
  798. self.states["/Main/SimulationFlow/Initialized"] = State(41, self)
  799. # state /Main/SimulationFlow/InitializeDebugger
  800. self.states["/Main/SimulationFlow/InitializeDebugger"] = State(42, self)
  801. # state /Main/SimulationFlow/DebuggerInitialized
  802. self.states["/Main/SimulationFlow/DebuggerInitialized"] = State(43, self)
  803. # state /Main/SimulationFlow/Waiting
  804. self.states["/Main/SimulationFlow/Waiting"] = State(44, self)
  805. # state /Main/SimulationFlow/SettleBeforeCheckTermination
  806. self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"] = State(45, self)
  807. self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"].setEnter(self._Main_SimulationFlow_SettleBeforeCheckTermination_enter)
  808. self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"].setExit(self._Main_SimulationFlow_SettleBeforeCheckTermination_exit)
  809. # state /Main/SimulationFlow/CheckTermination
  810. self.states["/Main/SimulationFlow/CheckTermination"] = State(46, self)
  811. # state /Main/SimulationFlow/WaitingRealtime
  812. self.states["/Main/SimulationFlow/WaitingRealtime"] = State(47, self)
  813. self.states["/Main/SimulationFlow/WaitingRealtime"].setEnter(self._Main_SimulationFlow_WaitingRealtime_enter)
  814. self.states["/Main/SimulationFlow/WaitingRealtime"].setExit(self._Main_SimulationFlow_WaitingRealtime_exit)
  815. # state /Main/SimulationFlow/SteppedInto
  816. self.states["/Main/SimulationFlow/SteppedInto"] = State(48, self)
  817. # state /Main/SimulationFlow/SteppedInto/Waiting
  818. self.states["/Main/SimulationFlow/SteppedInto/Waiting"] = State(49, self)
  819. # state /Main/SimulationFlow/SteppedInto/ExecutingCBDSmallStep
  820. self.states["/Main/SimulationFlow/SteppedInto/ExecutingCBDSmallStep"] = State(50, self)
  821. # state /Main/SimulationFlow/SteppedInto/SettleBeforeWaiting
  822. self.states["/Main/SimulationFlow/SteppedInto/SettleBeforeWaiting"] = State(51, self)
  823. self.states["/Main/SimulationFlow/SteppedInto/SettleBeforeWaiting"].setEnter(self._Main_SimulationFlow_SteppedInto_SettleBeforeWaiting_enter)
  824. self.states["/Main/SimulationFlow/SteppedInto/SettleBeforeWaiting"].setExit(self._Main_SimulationFlow_SteppedInto_SettleBeforeWaiting_exit)
  825. # state /Main/SimulationFlow/ExecutingCBD
  826. self.states["/Main/SimulationFlow/ExecutingCBD"] = State(52, self)
  827. # state /Main/SimulationFlow/CheckingForStateEvent
  828. self.states["/Main/SimulationFlow/CheckingForStateEvent"] = State(53, self)
  829. # state /Main/SimulationFlow/SendingGodEvent
  830. self.states["/Main/SimulationFlow/SendingGodEvent"] = State(54, self)
  831. # state /Main/SimulationFlow/Executing
  832. self.states["/Main/SimulationFlow/Executing"] = State(55, self)
  833. # state /Main/SimulationFlow/Stopped
  834. self.states["/Main/SimulationFlow/Stopped"] = State(56, self)
  835. # state /Main/BreakpointManager
  836. self.states["/Main/BreakpointManager"] = State(57, self)
  837. # state /Main/BreakpointManager/Listening
  838. self.states["/Main/BreakpointManager/Listening"] = State(58, self)
  839. # state /Main/ParentCommunicator
  840. self.states["/Main/ParentCommunicator"] = State(59, self)
  841. # state /Main/ParentCommunicator/Forwarding
  842. self.states["/Main/ParentCommunicator/Forwarding"] = State(60, self)
  843. # state /Stopped
  844. self.states["/Stopped"] = State(61, self)
  845. # add children
  846. self.states[""].addChild(self.states["/Main"])
  847. self.states[""].addChild(self.states["/Stopped"])
  848. self.states["/Main"].addChild(self.states["/Main/ModeSelector"])
  849. self.states["/Main"].addChild(self.states["/Main/FSAChildState"])
  850. self.states["/Main"].addChild(self.states["/Main/CBDChildState"])
  851. self.states["/Main"].addChild(self.states["/Main/FSAInitializer"])
  852. self.states["/Main"].addChild(self.states["/Main/CBDInitializer"])
  853. self.states["/Main"].addChild(self.states["/Main/SimulationFlow"])
  854. self.states["/Main"].addChild(self.states["/Main/BreakpointManager"])
  855. self.states["/Main"].addChild(self.states["/Main/ParentCommunicator"])
  856. self.states["/Main/ModeSelector"].addChild(self.states["/Main/ModeSelector/Paused"])
  857. self.states["/Main/ModeSelector"].addChild(self.states["/Main/ModeSelector/ExecutingRealtimeIfInitialized"])
  858. self.states["/Main/ModeSelector"].addChild(self.states["/Main/ModeSelector/WaitingForBigStepToEndPause"])
  859. self.states["/Main/ModeSelector"].addChild(self.states["/Main/ModeSelector/CheckIfBreakpointTriggers"])
  860. self.states["/Main/ModeSelector"].addChild(self.states["/Main/ModeSelector/Running"])
  861. self.states["/Main/ModeSelector"].addChild(self.states["/Main/ModeSelector/Stopped"])
  862. self.states["/Main/ModeSelector/Running"].addChild(self.states["/Main/ModeSelector/Running/Continuous"])
  863. self.states["/Main/ModeSelector/Running"].addChild(self.states["/Main/ModeSelector/Running/Realtime"])
  864. self.states["/Main/ModeSelector/Running"].addChild(self.states["/Main/ModeSelector/Running/BigStep"])
  865. self.states["/Main/ModeSelector/Running"].addChild(self.states["/Main/ModeSelector/Running/SmallStep"])
  866. self.states["/Main/ModeSelector/Running"].addChild(self.states["/Main/ModeSelector/Running/ChildStep"])
  867. self.states["/Main/ModeSelector/Running/Continuous"].addChild(self.states["/Main/ModeSelector/Running/Continuous/CheckIfBreakpointTriggers"])
  868. self.states["/Main/ModeSelector/Running/Continuous"].addChild(self.states["/Main/ModeSelector/Running/Continuous/Running"])
  869. self.states["/Main/ModeSelector/Running/Realtime"].addChild(self.states["/Main/ModeSelector/Running/Realtime/CheckIfBreakpointTriggers"])
  870. self.states["/Main/ModeSelector/Running/Realtime"].addChild(self.states["/Main/ModeSelector/Running/Realtime/Running"])
  871. self.states["/Main/ModeSelector/Running/ChildStep"].addChild(self.states["/Main/ModeSelector/Running/ChildStep/Paused"])
  872. self.states["/Main/ModeSelector/Running/ChildStep"].addChild(self.states["/Main/ModeSelector/Running/ChildStep/BigStep"])
  873. self.states["/Main/ModeSelector/Running/ChildStep"].addChild(self.states["/Main/ModeSelector/Running/ChildStep/SmallStep"])
  874. self.states["/Main/FSAChildState"].addChild(self.states["/Main/FSAChildState/Uninitialized"])
  875. self.states["/Main/FSAChildState"].addChild(self.states["/Main/FSAChildState/Initialized"])
  876. self.states["/Main/CBDChildState"].addChild(self.states["/Main/CBDChildState/Uninitialized"])
  877. self.states["/Main/CBDChildState"].addChild(self.states["/Main/CBDChildState/Initialized"])
  878. self.states["/Main/FSAInitializer"].addChild(self.states["/Main/FSAInitializer/Waiting"])
  879. self.states["/Main/FSAInitializer"].addChild(self.states["/Main/FSAInitializer/CreatingChildSimulator"])
  880. self.states["/Main/FSAInitializer"].addChild(self.states["/Main/FSAInitializer/StartingChildSimulator"])
  881. self.states["/Main/FSAInitializer"].addChild(self.states["/Main/FSAInitializer/Running"])
  882. self.states["/Main/FSAInitializer"].addChild(self.states["/Main/FSAInitializer/SettleBeforeWaiting"])
  883. self.states["/Main/CBDInitializer"].addChild(self.states["/Main/CBDInitializer/Waiting"])
  884. self.states["/Main/CBDInitializer"].addChild(self.states["/Main/CBDInitializer/CreatingChildSimulator"])
  885. self.states["/Main/CBDInitializer"].addChild(self.states["/Main/CBDInitializer/StartingChildSimulator"])
  886. self.states["/Main/CBDInitializer"].addChild(self.states["/Main/CBDInitializer/Running"])
  887. self.states["/Main/CBDInitializer"].addChild(self.states["/Main/CBDInitializer/SettleBeforeWaiting"])
  888. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Started"])
  889. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Initialized"])
  890. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/InitializeDebugger"])
  891. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/DebuggerInitialized"])
  892. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Waiting"])
  893. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"])
  894. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/CheckTermination"])
  895. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/WaitingRealtime"])
  896. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/SteppedInto"])
  897. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/ExecutingCBD"])
  898. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/CheckingForStateEvent"])
  899. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/SendingGodEvent"])
  900. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Executing"])
  901. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Stopped"])
  902. self.states["/Main/SimulationFlow/SteppedInto"].addChild(self.states["/Main/SimulationFlow/SteppedInto/Waiting"])
  903. self.states["/Main/SimulationFlow/SteppedInto"].addChild(self.states["/Main/SimulationFlow/SteppedInto/ExecutingCBDSmallStep"])
  904. self.states["/Main/SimulationFlow/SteppedInto"].addChild(self.states["/Main/SimulationFlow/SteppedInto/SettleBeforeWaiting"])
  905. self.states["/Main/BreakpointManager"].addChild(self.states["/Main/BreakpointManager/Listening"])
  906. self.states["/Main/ParentCommunicator"].addChild(self.states["/Main/ParentCommunicator/Forwarding"])
  907. self.states[""].fixTree()
  908. self.states[""].default_state = self.states["/Main"]
  909. self.states["/Main/ModeSelector"].default_state = self.states["/Main/ModeSelector/Paused"]
  910. self.states["/Main/ModeSelector/Running"].default_state = self.states["/Main/ModeSelector/Running/Continuous"]
  911. self.states["/Main/ModeSelector/Running/Continuous"].default_state = self.states["/Main/ModeSelector/Running/Continuous/CheckIfBreakpointTriggers"]
  912. self.states["/Main/ModeSelector/Running/Realtime"].default_state = self.states["/Main/ModeSelector/Running/Realtime/CheckIfBreakpointTriggers"]
  913. self.states["/Main/ModeSelector/Running/ChildStep"].default_state = self.states["/Main/ModeSelector/Running/ChildStep/Paused"]
  914. self.states["/Main/FSAChildState"].default_state = self.states["/Main/FSAChildState/Uninitialized"]
  915. self.states["/Main/CBDChildState"].default_state = self.states["/Main/CBDChildState/Uninitialized"]
  916. self.states["/Main/FSAInitializer"].default_state = self.states["/Main/FSAInitializer/Waiting"]
  917. self.states["/Main/CBDInitializer"].default_state = self.states["/Main/CBDInitializer/Waiting"]
  918. self.states["/Main/SimulationFlow"].default_state = self.states["/Main/SimulationFlow/Started"]
  919. self.states["/Main/SimulationFlow/SteppedInto"].default_state = self.states["/Main/SimulationFlow/SteppedInto/Waiting"]
  920. self.states["/Main/BreakpointManager"].default_state = self.states["/Main/BreakpointManager/Listening"]
  921. self.states["/Main/ParentCommunicator"].default_state = self.states["/Main/ParentCommunicator/Forwarding"]
  922. # transition /Main/ModeSelector/Paused
  923. _Main_ModeSelector_Paused_0 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Running/SmallStep"]])
  924. _Main_ModeSelector_Paused_0.setTrigger(Event("FSASmallStep.Execute", None))
  925. self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_0)
  926. _Main_ModeSelector_Paused_1 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Running/BigStep"]])
  927. _Main_ModeSelector_Paused_1.setTrigger(Event("FSABigStep.Execute", None))
  928. self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_1)
  929. _Main_ModeSelector_Paused_2 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Running/Continuous"]])
  930. _Main_ModeSelector_Paused_2.setTrigger(Event("WovenSimulation.Execute", None))
  931. self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_2)
  932. _Main_ModeSelector_Paused_3 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/ExecutingRealtimeIfInitialized"]])
  933. _Main_ModeSelector_Paused_3.setAction(self._Main_ModeSelector_Paused_3_exec)
  934. _Main_ModeSelector_Paused_3.setTrigger(Event("WovenSimulation.ExecuteRealtime", None))
  935. self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_3)
  936. _Main_ModeSelector_Paused_4 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Running/ChildStep"]])
  937. _Main_ModeSelector_Paused_4.setAction(self._Main_ModeSelector_Paused_4_exec)
  938. _Main_ModeSelector_Paused_4.setTrigger(Event("WovenSimulation.StepInto", None))
  939. _Main_ModeSelector_Paused_4.setGuard(self._Main_ModeSelector_Paused_4_guard)
  940. self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_4)
  941. _Main_ModeSelector_Paused_5 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Paused"]])
  942. _Main_ModeSelector_Paused_5.setAction(self._Main_ModeSelector_Paused_5_exec)
  943. _Main_ModeSelector_Paused_5.setTrigger(Event("WovenSimulation.StepInto", None))
  944. _Main_ModeSelector_Paused_5.setGuard(self._Main_ModeSelector_Paused_5_guard)
  945. self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_5)
  946. _Main_ModeSelector_Paused_6 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/CheckIfBreakpointTriggers"]])
  947. _Main_ModeSelector_Paused_6.setAction(self._Main_ModeSelector_Paused_6_exec)
  948. _Main_ModeSelector_Paused_6.setTrigger(Event("FSABigStep.Finished", None))
  949. self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_6)
  950. _Main_ModeSelector_Paused_7 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Stopped"]])
  951. _Main_ModeSelector_Paused_7.setTrigger(Event("FSASimulation.Finished", None))
  952. self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_7)
  953. _Main_ModeSelector_Paused_8 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Stopped"]])
  954. _Main_ModeSelector_Paused_8.setTrigger(Event("CBDSimulation.Finished", None))
  955. self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_8)
  956. # transition /Main/ModeSelector/ExecutingRealtimeIfInitialized
  957. _Main_ModeSelector_ExecutingRealtimeIfInitialized_0 = Transition(self, self.states["/Main/ModeSelector/ExecutingRealtimeIfInitialized"], [self.states["/Main/ModeSelector/Running/Realtime"]])
  958. _Main_ModeSelector_ExecutingRealtimeIfInitialized_0.setAction(self._Main_ModeSelector_ExecutingRealtimeIfInitialized_0_exec)
  959. _Main_ModeSelector_ExecutingRealtimeIfInitialized_0.setTrigger(None)
  960. _Main_ModeSelector_ExecutingRealtimeIfInitialized_0.setGuard(self._Main_ModeSelector_ExecutingRealtimeIfInitialized_0_guard)
  961. self.states["/Main/ModeSelector/ExecutingRealtimeIfInitialized"].addTransition(_Main_ModeSelector_ExecutingRealtimeIfInitialized_0)
  962. # transition /Main/ModeSelector/WaitingForBigStepToEndPause
  963. _Main_ModeSelector_WaitingForBigStepToEndPause_0 = Transition(self, self.states["/Main/ModeSelector/WaitingForBigStepToEndPause"], [self.states["/Main/ModeSelector/Paused"]])
  964. _Main_ModeSelector_WaitingForBigStepToEndPause_0.setAction(self._Main_ModeSelector_WaitingForBigStepToEndPause_0_exec)
  965. _Main_ModeSelector_WaitingForBigStepToEndPause_0.setTrigger(Event("FSABigStep.Finished", None))
  966. self.states["/Main/ModeSelector/WaitingForBigStepToEndPause"].addTransition(_Main_ModeSelector_WaitingForBigStepToEndPause_0)
  967. # transition /Main/ModeSelector/CheckIfBreakpointTriggers
  968. _Main_ModeSelector_CheckIfBreakpointTriggers_0 = Transition(self, self.states["/Main/ModeSelector/CheckIfBreakpointTriggers"], [self.states["/Main/ModeSelector/Paused"]])
  969. _Main_ModeSelector_CheckIfBreakpointTriggers_0.setAction(self._Main_ModeSelector_CheckIfBreakpointTriggers_0_exec)
  970. _Main_ModeSelector_CheckIfBreakpointTriggers_0.setTrigger(None)
  971. _Main_ModeSelector_CheckIfBreakpointTriggers_0.setGuard(self._Main_ModeSelector_CheckIfBreakpointTriggers_0_guard)
  972. self.states["/Main/ModeSelector/CheckIfBreakpointTriggers"].addTransition(_Main_ModeSelector_CheckIfBreakpointTriggers_0)
  973. _Main_ModeSelector_CheckIfBreakpointTriggers_1 = Transition(self, self.states["/Main/ModeSelector/CheckIfBreakpointTriggers"], [self.states["/Main/ModeSelector/Paused"]])
  974. _Main_ModeSelector_CheckIfBreakpointTriggers_1.setTrigger(None)
  975. _Main_ModeSelector_CheckIfBreakpointTriggers_1.setGuard(self._Main_ModeSelector_CheckIfBreakpointTriggers_1_guard)
  976. self.states["/Main/ModeSelector/CheckIfBreakpointTriggers"].addTransition(_Main_ModeSelector_CheckIfBreakpointTriggers_1)
  977. # transition /Main/ModeSelector/Running/Continuous/CheckIfBreakpointTriggers
  978. _Main_ModeSelector_Running_Continuous_CheckIfBreakpointTriggers_0 = Transition(self, self.states["/Main/ModeSelector/Running/Continuous/CheckIfBreakpointTriggers"], [self.states["/Main/ModeSelector/Paused"]])
  979. _Main_ModeSelector_Running_Continuous_CheckIfBreakpointTriggers_0.setAction(self._Main_ModeSelector_Running_Continuous_CheckIfBreakpointTriggers_0_exec)
  980. _Main_ModeSelector_Running_Continuous_CheckIfBreakpointTriggers_0.setTrigger(None)
  981. _Main_ModeSelector_Running_Continuous_CheckIfBreakpointTriggers_0.setGuard(self._Main_ModeSelector_Running_Continuous_CheckIfBreakpointTriggers_0_guard)
  982. self.states["/Main/ModeSelector/Running/Continuous/CheckIfBreakpointTriggers"].addTransition(_Main_ModeSelector_Running_Continuous_CheckIfBreakpointTriggers_0)
  983. _Main_ModeSelector_Running_Continuous_CheckIfBreakpointTriggers_1 = Transition(self, self.states["/Main/ModeSelector/Running/Continuous/CheckIfBreakpointTriggers"], [self.states["/Main/ModeSelector/Running/Continuous/Running"]])
  984. _Main_ModeSelector_Running_Continuous_CheckIfBreakpointTriggers_1.setTrigger(None)
  985. _Main_ModeSelector_Running_Continuous_CheckIfBreakpointTriggers_1.setGuard(self._Main_ModeSelector_Running_Continuous_CheckIfBreakpointTriggers_1_guard)
  986. self.states["/Main/ModeSelector/Running/Continuous/CheckIfBreakpointTriggers"].addTransition(_Main_ModeSelector_Running_Continuous_CheckIfBreakpointTriggers_1)
  987. # transition /Main/ModeSelector/Running/Continuous/Running
  988. _Main_ModeSelector_Running_Continuous_Running_0 = Transition(self, self.states["/Main/ModeSelector/Running/Continuous/Running"], [self.states["/Main/ModeSelector/WaitingForBigStepToEndPause"]])
  989. _Main_ModeSelector_Running_Continuous_Running_0.setTrigger(Event("WovenSimulation.Pause", None))
  990. self.states["/Main/ModeSelector/Running/Continuous/Running"].addTransition(_Main_ModeSelector_Running_Continuous_Running_0)
  991. _Main_ModeSelector_Running_Continuous_Running_1 = Transition(self, self.states["/Main/ModeSelector/Running/Continuous/Running"], [self.states["/Main/ModeSelector/Paused"]])
  992. _Main_ModeSelector_Running_Continuous_Running_1.setAction(self._Main_ModeSelector_Running_Continuous_Running_1_exec)
  993. _Main_ModeSelector_Running_Continuous_Running_1.setTrigger(None)
  994. _Main_ModeSelector_Running_Continuous_Running_1.setGuard(self._Main_ModeSelector_Running_Continuous_Running_1_guard)
  995. self.states["/Main/ModeSelector/Running/Continuous/Running"].addTransition(_Main_ModeSelector_Running_Continuous_Running_1)
  996. _Main_ModeSelector_Running_Continuous_Running_2 = Transition(self, self.states["/Main/ModeSelector/Running/Continuous/Running"], [self.states["/Main/ModeSelector/Running/Continuous/Running"]])
  997. _Main_ModeSelector_Running_Continuous_Running_2.setAction(self._Main_ModeSelector_Running_Continuous_Running_2_exec)
  998. _Main_ModeSelector_Running_Continuous_Running_2.setTrigger(Event("FSABigStep.Finished", None))
  999. self.states["/Main/ModeSelector/Running/Continuous/Running"].addTransition(_Main_ModeSelector_Running_Continuous_Running_2)
  1000. # transition /Main/ModeSelector/Running/Realtime/CheckIfBreakpointTriggers
  1001. _Main_ModeSelector_Running_Realtime_CheckIfBreakpointTriggers_0 = Transition(self, self.states["/Main/ModeSelector/Running/Realtime/CheckIfBreakpointTriggers"], [self.states["/Main/ModeSelector/Paused"]])
  1002. _Main_ModeSelector_Running_Realtime_CheckIfBreakpointTriggers_0.setAction(self._Main_ModeSelector_Running_Realtime_CheckIfBreakpointTriggers_0_exec)
  1003. _Main_ModeSelector_Running_Realtime_CheckIfBreakpointTriggers_0.setTrigger(None)
  1004. _Main_ModeSelector_Running_Realtime_CheckIfBreakpointTriggers_0.setGuard(self._Main_ModeSelector_Running_Realtime_CheckIfBreakpointTriggers_0_guard)
  1005. self.states["/Main/ModeSelector/Running/Realtime/CheckIfBreakpointTriggers"].addTransition(_Main_ModeSelector_Running_Realtime_CheckIfBreakpointTriggers_0)
  1006. _Main_ModeSelector_Running_Realtime_CheckIfBreakpointTriggers_1 = Transition(self, self.states["/Main/ModeSelector/Running/Realtime/CheckIfBreakpointTriggers"], [self.states["/Main/ModeSelector/Running/Realtime/Running"]])
  1007. _Main_ModeSelector_Running_Realtime_CheckIfBreakpointTriggers_1.setTrigger(None)
  1008. _Main_ModeSelector_Running_Realtime_CheckIfBreakpointTriggers_1.setGuard(self._Main_ModeSelector_Running_Realtime_CheckIfBreakpointTriggers_1_guard)
  1009. self.states["/Main/ModeSelector/Running/Realtime/CheckIfBreakpointTriggers"].addTransition(_Main_ModeSelector_Running_Realtime_CheckIfBreakpointTriggers_1)
  1010. # transition /Main/ModeSelector/Running/Realtime/Running
  1011. _Main_ModeSelector_Running_Realtime_Running_0 = Transition(self, self.states["/Main/ModeSelector/Running/Realtime/Running"], [self.states["/Main/ModeSelector/WaitingForBigStepToEndPause"]])
  1012. _Main_ModeSelector_Running_Realtime_Running_0.setTrigger(Event("WovenSimulation.Pause", None))
  1013. self.states["/Main/ModeSelector/Running/Realtime/Running"].addTransition(_Main_ModeSelector_Running_Realtime_Running_0)
  1014. _Main_ModeSelector_Running_Realtime_Running_1 = Transition(self, self.states["/Main/ModeSelector/Running/Realtime/Running"], [self.states["/Main/ModeSelector/Paused"]])
  1015. _Main_ModeSelector_Running_Realtime_Running_1.setAction(self._Main_ModeSelector_Running_Realtime_Running_1_exec)
  1016. _Main_ModeSelector_Running_Realtime_Running_1.setTrigger(None)
  1017. _Main_ModeSelector_Running_Realtime_Running_1.setGuard(self._Main_ModeSelector_Running_Realtime_Running_1_guard)
  1018. self.states["/Main/ModeSelector/Running/Realtime/Running"].addTransition(_Main_ModeSelector_Running_Realtime_Running_1)
  1019. _Main_ModeSelector_Running_Realtime_Running_2 = Transition(self, self.states["/Main/ModeSelector/Running/Realtime/Running"], [self.states["/Main/ModeSelector/Running/Realtime/Running"]])
  1020. _Main_ModeSelector_Running_Realtime_Running_2.setAction(self._Main_ModeSelector_Running_Realtime_Running_2_exec)
  1021. _Main_ModeSelector_Running_Realtime_Running_2.setTrigger(Event("FSABigStep.Finished", None))
  1022. self.states["/Main/ModeSelector/Running/Realtime/Running"].addTransition(_Main_ModeSelector_Running_Realtime_Running_2)
  1023. # transition /Main/ModeSelector/Running/BigStep
  1024. _Main_ModeSelector_Running_BigStep_0 = Transition(self, self.states["/Main/ModeSelector/Running/BigStep"], [self.states["/Main/ModeSelector/CheckIfBreakpointTriggers"]])
  1025. _Main_ModeSelector_Running_BigStep_0.setAction(self._Main_ModeSelector_Running_BigStep_0_exec)
  1026. _Main_ModeSelector_Running_BigStep_0.setTrigger(Event("FSABigStep.Finished", None))
  1027. self.states["/Main/ModeSelector/Running/BigStep"].addTransition(_Main_ModeSelector_Running_BigStep_0)
  1028. # transition /Main/ModeSelector/Running/SmallStep
  1029. _Main_ModeSelector_Running_SmallStep_0 = Transition(self, self.states["/Main/ModeSelector/Running/SmallStep"], [self.states["/Main/ModeSelector/Paused"]])
  1030. _Main_ModeSelector_Running_SmallStep_0.setAction(self._Main_ModeSelector_Running_SmallStep_0_exec)
  1031. _Main_ModeSelector_Running_SmallStep_0.setTrigger(Event("FSASmallStep.Finished", None))
  1032. self.states["/Main/ModeSelector/Running/SmallStep"].addTransition(_Main_ModeSelector_Running_SmallStep_0)
  1033. # transition /Main/ModeSelector/Running/ChildStep/Paused
  1034. _Main_ModeSelector_Running_ChildStep_Paused_0 = Transition(self, self.states["/Main/ModeSelector/Running/ChildStep/Paused"], [self.states["/Main/ModeSelector/Running/ChildStep/BigStep"]])
  1035. _Main_ModeSelector_Running_ChildStep_Paused_0.setTrigger(Event("CBDBigStep.Execute", None))
  1036. self.states["/Main/ModeSelector/Running/ChildStep/Paused"].addTransition(_Main_ModeSelector_Running_ChildStep_Paused_0)
  1037. _Main_ModeSelector_Running_ChildStep_Paused_1 = Transition(self, self.states["/Main/ModeSelector/Running/ChildStep/Paused"], [self.states["/Main/ModeSelector/Running/ChildStep/SmallStep"]])
  1038. _Main_ModeSelector_Running_ChildStep_Paused_1.setTrigger(Event("CBDSmallStep.Execute", None))
  1039. self.states["/Main/ModeSelector/Running/ChildStep/Paused"].addTransition(_Main_ModeSelector_Running_ChildStep_Paused_1)
  1040. _Main_ModeSelector_Running_ChildStep_Paused_2 = Transition(self, self.states["/Main/ModeSelector/Running/ChildStep/Paused"], [self.states["/Main/ModeSelector/Paused"]])
  1041. _Main_ModeSelector_Running_ChildStep_Paused_2.setAction(self._Main_ModeSelector_Running_ChildStep_Paused_2_exec)
  1042. _Main_ModeSelector_Running_ChildStep_Paused_2.setTrigger(Event("CBDBigStep.Finished", None))
  1043. self.states["/Main/ModeSelector/Running/ChildStep/Paused"].addTransition(_Main_ModeSelector_Running_ChildStep_Paused_2)
  1044. # transition /Main/ModeSelector/Running/ChildStep/BigStep
  1045. _Main_ModeSelector_Running_ChildStep_BigStep_0 = Transition(self, self.states["/Main/ModeSelector/Running/ChildStep/BigStep"], [self.states["/Main/ModeSelector/Paused"]])
  1046. _Main_ModeSelector_Running_ChildStep_BigStep_0.setAction(self._Main_ModeSelector_Running_ChildStep_BigStep_0_exec)
  1047. _Main_ModeSelector_Running_ChildStep_BigStep_0.setTrigger(Event("CBDBigStep.Finished", None))
  1048. self.states["/Main/ModeSelector/Running/ChildStep/BigStep"].addTransition(_Main_ModeSelector_Running_ChildStep_BigStep_0)
  1049. # transition /Main/ModeSelector/Running/ChildStep/SmallStep
  1050. _Main_ModeSelector_Running_ChildStep_SmallStep_0 = Transition(self, self.states["/Main/ModeSelector/Running/ChildStep/SmallStep"], [self.states["/Main/ModeSelector/Running/ChildStep/Paused"]])
  1051. _Main_ModeSelector_Running_ChildStep_SmallStep_0.setAction(self._Main_ModeSelector_Running_ChildStep_SmallStep_0_exec)
  1052. _Main_ModeSelector_Running_ChildStep_SmallStep_0.setTrigger(Event("CBDSmallStep.Finished", None))
  1053. self.states["/Main/ModeSelector/Running/ChildStep/SmallStep"].addTransition(_Main_ModeSelector_Running_ChildStep_SmallStep_0)
  1054. # transition /Main/FSAChildState/Uninitialized
  1055. _Main_FSAChildState_Uninitialized_0 = Transition(self, self.states["/Main/FSAChildState/Uninitialized"], [self.states["/Main/FSAChildState/Initialized"]])
  1056. _Main_FSAChildState_Uninitialized_0.setAction(self._Main_FSAChildState_Uninitialized_0_exec)
  1057. _Main_FSAChildState_Uninitialized_0.setTrigger(Event("FSASimulation.Initialized", None))
  1058. self.states["/Main/FSAChildState/Uninitialized"].addTransition(_Main_FSAChildState_Uninitialized_0)
  1059. # transition /Main/FSAChildState/Initialized
  1060. _Main_FSAChildState_Initialized_0 = Transition(self, self.states["/Main/FSAChildState/Initialized"], [self.states["/Main/FSAChildState/Uninitialized"]])
  1061. _Main_FSAChildState_Initialized_0.setAction(self._Main_FSAChildState_Initialized_0_exec)
  1062. _Main_FSAChildState_Initialized_0.setTrigger(Event("FSASimulation.Finished", None))
  1063. self.states["/Main/FSAChildState/Initialized"].addTransition(_Main_FSAChildState_Initialized_0)
  1064. # transition /Main/CBDChildState/Uninitialized
  1065. _Main_CBDChildState_Uninitialized_0 = Transition(self, self.states["/Main/CBDChildState/Uninitialized"], [self.states["/Main/CBDChildState/Initialized"]])
  1066. _Main_CBDChildState_Uninitialized_0.setAction(self._Main_CBDChildState_Uninitialized_0_exec)
  1067. _Main_CBDChildState_Uninitialized_0.setTrigger(Event("CBDSimulation.Initialized", None))
  1068. self.states["/Main/CBDChildState/Uninitialized"].addTransition(_Main_CBDChildState_Uninitialized_0)
  1069. # transition /Main/CBDChildState/Initialized
  1070. _Main_CBDChildState_Initialized_0 = Transition(self, self.states["/Main/CBDChildState/Initialized"], [self.states["/Main/CBDChildState/Uninitialized"]])
  1071. _Main_CBDChildState_Initialized_0.setAction(self._Main_CBDChildState_Initialized_0_exec)
  1072. _Main_CBDChildState_Initialized_0.setTrigger(Event("FSASmallStep.Finished", None))
  1073. _Main_CBDChildState_Initialized_0.setGuard(self._Main_CBDChildState_Initialized_0_guard)
  1074. self.states["/Main/CBDChildState/Initialized"].addTransition(_Main_CBDChildState_Initialized_0)
  1075. # transition /Main/FSAInitializer/Waiting
  1076. _Main_FSAInitializer_Waiting_0 = Transition(self, self.states["/Main/FSAInitializer/Waiting"], [self.states["/Main/FSAInitializer/CreatingChildSimulator"]])
  1077. _Main_FSAInitializer_Waiting_0.setAction(self._Main_FSAInitializer_Waiting_0_exec)
  1078. _Main_FSAInitializer_Waiting_0.setTrigger(None)
  1079. _Main_FSAInitializer_Waiting_0.setGuard(self._Main_FSAInitializer_Waiting_0_guard)
  1080. self.states["/Main/FSAInitializer/Waiting"].addTransition(_Main_FSAInitializer_Waiting_0)
  1081. # transition /Main/FSAInitializer/CreatingChildSimulator
  1082. _Main_FSAInitializer_CreatingChildSimulator_0 = Transition(self, self.states["/Main/FSAInitializer/CreatingChildSimulator"], [self.states["/Main/FSAInitializer/StartingChildSimulator"]])
  1083. _Main_FSAInitializer_CreatingChildSimulator_0.setAction(self._Main_FSAInitializer_CreatingChildSimulator_0_exec)
  1084. _Main_FSAInitializer_CreatingChildSimulator_0.setTrigger(Event("instance_created", None))
  1085. self.states["/Main/FSAInitializer/CreatingChildSimulator"].addTransition(_Main_FSAInitializer_CreatingChildSimulator_0)
  1086. # transition /Main/FSAInitializer/StartingChildSimulator
  1087. _Main_FSAInitializer_StartingChildSimulator_0 = Transition(self, self.states["/Main/FSAInitializer/StartingChildSimulator"], [self.states["/Main/FSAInitializer/Running"]])
  1088. _Main_FSAInitializer_StartingChildSimulator_0.setTrigger(Event("FSASimulation.Initialized", None))
  1089. self.states["/Main/FSAInitializer/StartingChildSimulator"].addTransition(_Main_FSAInitializer_StartingChildSimulator_0)
  1090. # transition /Main/FSAInitializer/Running
  1091. _Main_FSAInitializer_Running_0 = Transition(self, self.states["/Main/FSAInitializer/Running"], [self.states["/Main/FSAInitializer/SettleBeforeWaiting"]])
  1092. _Main_FSAInitializer_Running_0.setTrigger(Event("FSASimulation.Finished", None))
  1093. self.states["/Main/FSAInitializer/Running"].addTransition(_Main_FSAInitializer_Running_0)
  1094. # transition /Main/FSAInitializer/SettleBeforeWaiting
  1095. _Main_FSAInitializer_SettleBeforeWaiting_0 = Transition(self, self.states["/Main/FSAInitializer/SettleBeforeWaiting"], [self.states["/Main/FSAInitializer/Waiting"]])
  1096. _Main_FSAInitializer_SettleBeforeWaiting_0.setTrigger(Event("_0after"))
  1097. self.states["/Main/FSAInitializer/SettleBeforeWaiting"].addTransition(_Main_FSAInitializer_SettleBeforeWaiting_0)
  1098. # transition /Main/CBDInitializer/Waiting
  1099. _Main_CBDInitializer_Waiting_0 = Transition(self, self.states["/Main/CBDInitializer/Waiting"], [self.states["/Main/CBDInitializer/CreatingChildSimulator"]])
  1100. _Main_CBDInitializer_Waiting_0.setAction(self._Main_CBDInitializer_Waiting_0_exec)
  1101. _Main_CBDInitializer_Waiting_0.setTrigger(None)
  1102. _Main_CBDInitializer_Waiting_0.setGuard(self._Main_CBDInitializer_Waiting_0_guard)
  1103. self.states["/Main/CBDInitializer/Waiting"].addTransition(_Main_CBDInitializer_Waiting_0)
  1104. # transition /Main/CBDInitializer/CreatingChildSimulator
  1105. _Main_CBDInitializer_CreatingChildSimulator_0 = Transition(self, self.states["/Main/CBDInitializer/CreatingChildSimulator"], [self.states["/Main/CBDInitializer/StartingChildSimulator"]])
  1106. _Main_CBDInitializer_CreatingChildSimulator_0.setAction(self._Main_CBDInitializer_CreatingChildSimulator_0_exec)
  1107. _Main_CBDInitializer_CreatingChildSimulator_0.setTrigger(Event("instance_created", None))
  1108. self.states["/Main/CBDInitializer/CreatingChildSimulator"].addTransition(_Main_CBDInitializer_CreatingChildSimulator_0)
  1109. # transition /Main/CBDInitializer/StartingChildSimulator
  1110. _Main_CBDInitializer_StartingChildSimulator_0 = Transition(self, self.states["/Main/CBDInitializer/StartingChildSimulator"], [self.states["/Main/CBDInitializer/Running"]])
  1111. _Main_CBDInitializer_StartingChildSimulator_0.setTrigger(Event("CBDSimulation.Initialized", None))
  1112. self.states["/Main/CBDInitializer/StartingChildSimulator"].addTransition(_Main_CBDInitializer_StartingChildSimulator_0)
  1113. # transition /Main/CBDInitializer/Running
  1114. _Main_CBDInitializer_Running_0 = Transition(self, self.states["/Main/CBDInitializer/Running"], [self.states["/Main/CBDInitializer/SettleBeforeWaiting"]])
  1115. _Main_CBDInitializer_Running_0.setTrigger(Event("FSASmallStep.Finished", None))
  1116. _Main_CBDInitializer_Running_0.setGuard(self._Main_CBDInitializer_Running_0_guard)
  1117. self.states["/Main/CBDInitializer/Running"].addTransition(_Main_CBDInitializer_Running_0)
  1118. # transition /Main/CBDInitializer/SettleBeforeWaiting
  1119. _Main_CBDInitializer_SettleBeforeWaiting_0 = Transition(self, self.states["/Main/CBDInitializer/SettleBeforeWaiting"], [self.states["/Main/CBDInitializer/Waiting"]])
  1120. _Main_CBDInitializer_SettleBeforeWaiting_0.setTrigger(Event("_1after"))
  1121. self.states["/Main/CBDInitializer/SettleBeforeWaiting"].addTransition(_Main_CBDInitializer_SettleBeforeWaiting_0)
  1122. # transition /Main/SimulationFlow/Started
  1123. _Main_SimulationFlow_Started_0 = Transition(self, self.states["/Main/SimulationFlow/Started"], [self.states["/Main/SimulationFlow/Initialized"]])
  1124. _Main_SimulationFlow_Started_0.setAction(self._Main_SimulationFlow_Started_0_exec)
  1125. _Main_SimulationFlow_Started_0.setTrigger(None)
  1126. self.states["/Main/SimulationFlow/Started"].addTransition(_Main_SimulationFlow_Started_0)
  1127. # transition /Main/SimulationFlow/Initialized
  1128. _Main_SimulationFlow_Initialized_0 = Transition(self, self.states["/Main/SimulationFlow/Initialized"], [self.states["/Main/SimulationFlow/InitializeDebugger"]])
  1129. _Main_SimulationFlow_Initialized_0.setTrigger(None)
  1130. self.states["/Main/SimulationFlow/Initialized"].addTransition(_Main_SimulationFlow_Initialized_0)
  1131. # transition /Main/SimulationFlow/InitializeDebugger
  1132. _Main_SimulationFlow_InitializeDebugger_0 = Transition(self, self.states["/Main/SimulationFlow/InitializeDebugger"], [self.states["/Main/SimulationFlow/DebuggerInitialized"]])
  1133. _Main_SimulationFlow_InitializeDebugger_0.setAction(self._Main_SimulationFlow_InitializeDebugger_0_exec)
  1134. _Main_SimulationFlow_InitializeDebugger_0.setTrigger(None)
  1135. self.states["/Main/SimulationFlow/InitializeDebugger"].addTransition(_Main_SimulationFlow_InitializeDebugger_0)
  1136. # transition /Main/SimulationFlow/DebuggerInitialized
  1137. _Main_SimulationFlow_DebuggerInitialized_0 = Transition(self, self.states["/Main/SimulationFlow/DebuggerInitialized"], [self.states["/Main/SimulationFlow/Waiting"]])
  1138. _Main_SimulationFlow_DebuggerInitialized_0.setAction(self._Main_SimulationFlow_DebuggerInitialized_0_exec)
  1139. _Main_SimulationFlow_DebuggerInitialized_0.setTrigger(None)
  1140. self.states["/Main/SimulationFlow/DebuggerInitialized"].addTransition(_Main_SimulationFlow_DebuggerInitialized_0)
  1141. # transition /Main/SimulationFlow/Waiting
  1142. _Main_SimulationFlow_Waiting_0 = Transition(self, self.states["/Main/SimulationFlow/Waiting"], [self.states["/Main/SimulationFlow/CheckTermination"]])
  1143. _Main_SimulationFlow_Waiting_0.setTrigger(None)
  1144. _Main_SimulationFlow_Waiting_0.setGuard(self._Main_SimulationFlow_Waiting_0_guard)
  1145. self.states["/Main/SimulationFlow/Waiting"].addTransition(_Main_SimulationFlow_Waiting_0)
  1146. # transition /Main/SimulationFlow/SettleBeforeCheckTermination
  1147. _Main_SimulationFlow_SettleBeforeCheckTermination_0 = Transition(self, self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"], [self.states["/Main/SimulationFlow/CheckTermination"]])
  1148. _Main_SimulationFlow_SettleBeforeCheckTermination_0.setTrigger(Event("_2after"))
  1149. self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"].addTransition(_Main_SimulationFlow_SettleBeforeCheckTermination_0)
  1150. # transition /Main/SimulationFlow/CheckTermination
  1151. _Main_SimulationFlow_CheckTermination_0 = Transition(self, self.states["/Main/SimulationFlow/CheckTermination"], [self.states["/Main/SimulationFlow/Executing"]])
  1152. _Main_SimulationFlow_CheckTermination_0.setAction(self._Main_SimulationFlow_CheckTermination_0_exec)
  1153. _Main_SimulationFlow_CheckTermination_0.setTrigger(None)
  1154. _Main_SimulationFlow_CheckTermination_0.setGuard(self._Main_SimulationFlow_CheckTermination_0_guard)
  1155. self.states["/Main/SimulationFlow/CheckTermination"].addTransition(_Main_SimulationFlow_CheckTermination_0)
  1156. _Main_SimulationFlow_CheckTermination_1 = Transition(self, self.states["/Main/SimulationFlow/CheckTermination"], [self.states["/Main/SimulationFlow/ExecutingCBD"]])
  1157. _Main_SimulationFlow_CheckTermination_1.setAction(self._Main_SimulationFlow_CheckTermination_1_exec)
  1158. _Main_SimulationFlow_CheckTermination_1.setTrigger(None)
  1159. _Main_SimulationFlow_CheckTermination_1.setGuard(self._Main_SimulationFlow_CheckTermination_1_guard)
  1160. self.states["/Main/SimulationFlow/CheckTermination"].addTransition(_Main_SimulationFlow_CheckTermination_1)
  1161. _Main_SimulationFlow_CheckTermination_2 = Transition(self, self.states["/Main/SimulationFlow/CheckTermination"], [self.states["/Main/SimulationFlow/SteppedInto"]])
  1162. _Main_SimulationFlow_CheckTermination_2.setTrigger(None)
  1163. _Main_SimulationFlow_CheckTermination_2.setGuard(self._Main_SimulationFlow_CheckTermination_2_guard)
  1164. self.states["/Main/SimulationFlow/CheckTermination"].addTransition(_Main_SimulationFlow_CheckTermination_2)
  1165. _Main_SimulationFlow_CheckTermination_3 = Transition(self, self.states["/Main/SimulationFlow/CheckTermination"], [self.states["/Main/SimulationFlow/WaitingRealtime"]])
  1166. _Main_SimulationFlow_CheckTermination_3.setTrigger(None)
  1167. _Main_SimulationFlow_CheckTermination_3.setGuard(self._Main_SimulationFlow_CheckTermination_3_guard)
  1168. self.states["/Main/SimulationFlow/CheckTermination"].addTransition(_Main_SimulationFlow_CheckTermination_3)
  1169. _Main_SimulationFlow_CheckTermination_4 = Transition(self, self.states["/Main/SimulationFlow/CheckTermination"], [self.states["/Main/SimulationFlow/Stopped"]])
  1170. _Main_SimulationFlow_CheckTermination_4.setAction(self._Main_SimulationFlow_CheckTermination_4_exec)
  1171. _Main_SimulationFlow_CheckTermination_4.setTrigger(None)
  1172. _Main_SimulationFlow_CheckTermination_4.setGuard(self._Main_SimulationFlow_CheckTermination_4_guard)
  1173. self.states["/Main/SimulationFlow/CheckTermination"].addTransition(_Main_SimulationFlow_CheckTermination_4)
  1174. # transition /Main/SimulationFlow/WaitingRealtime
  1175. _Main_SimulationFlow_WaitingRealtime_0 = Transition(self, self.states["/Main/SimulationFlow/WaitingRealtime"], [self.states["/Main/SimulationFlow/CheckTermination"]])
  1176. _Main_SimulationFlow_WaitingRealtime_0.setAction(self._Main_SimulationFlow_WaitingRealtime_0_exec)
  1177. _Main_SimulationFlow_WaitingRealtime_0.setTrigger(Event("_3after"))
  1178. _Main_SimulationFlow_WaitingRealtime_0.setGuard(self._Main_SimulationFlow_WaitingRealtime_0_guard)
  1179. self.states["/Main/SimulationFlow/WaitingRealtime"].addTransition(_Main_SimulationFlow_WaitingRealtime_0)
  1180. _Main_SimulationFlow_WaitingRealtime_1 = Transition(self, self.states["/Main/SimulationFlow/WaitingRealtime"], [self.states["/Main/SimulationFlow/CheckTermination"]])
  1181. _Main_SimulationFlow_WaitingRealtime_1.setAction(self._Main_SimulationFlow_WaitingRealtime_1_exec)
  1182. _Main_SimulationFlow_WaitingRealtime_1.setTrigger(None)
  1183. _Main_SimulationFlow_WaitingRealtime_1.setGuard(self._Main_SimulationFlow_WaitingRealtime_1_guard)
  1184. self.states["/Main/SimulationFlow/WaitingRealtime"].addTransition(_Main_SimulationFlow_WaitingRealtime_1)
  1185. _Main_SimulationFlow_WaitingRealtime_2 = Transition(self, self.states["/Main/SimulationFlow/WaitingRealtime"], [self.states["/Main/SimulationFlow/Executing"]])
  1186. _Main_SimulationFlow_WaitingRealtime_2.setAction(self._Main_SimulationFlow_WaitingRealtime_2_exec)
  1187. _Main_SimulationFlow_WaitingRealtime_2.setTrigger(None)
  1188. _Main_SimulationFlow_WaitingRealtime_2.setGuard(self._Main_SimulationFlow_WaitingRealtime_2_guard)
  1189. self.states["/Main/SimulationFlow/WaitingRealtime"].addTransition(_Main_SimulationFlow_WaitingRealtime_2)
  1190. _Main_SimulationFlow_WaitingRealtime_3 = Transition(self, self.states["/Main/SimulationFlow/WaitingRealtime"], [self.states["/Main/SimulationFlow/ExecutingCBD"]])
  1191. _Main_SimulationFlow_WaitingRealtime_3.setAction(self._Main_SimulationFlow_WaitingRealtime_3_exec)
  1192. _Main_SimulationFlow_WaitingRealtime_3.setTrigger(None)
  1193. _Main_SimulationFlow_WaitingRealtime_3.setGuard(self._Main_SimulationFlow_WaitingRealtime_3_guard)
  1194. self.states["/Main/SimulationFlow/WaitingRealtime"].addTransition(_Main_SimulationFlow_WaitingRealtime_3)
  1195. # transition /Main/SimulationFlow/SteppedInto/Waiting
  1196. _Main_SimulationFlow_SteppedInto_Waiting_0 = Transition(self, self.states["/Main/SimulationFlow/SteppedInto/Waiting"], [self.states["/Main/SimulationFlow/SteppedInto/ExecutingCBDSmallStep"]])
  1197. _Main_SimulationFlow_SteppedInto_Waiting_0.setAction(self._Main_SimulationFlow_SteppedInto_Waiting_0_exec)
  1198. _Main_SimulationFlow_SteppedInto_Waiting_0.setTrigger(None)
  1199. _Main_SimulationFlow_SteppedInto_Waiting_0.setGuard(self._Main_SimulationFlow_SteppedInto_Waiting_0_guard)
  1200. self.states["/Main/SimulationFlow/SteppedInto/Waiting"].addTransition(_Main_SimulationFlow_SteppedInto_Waiting_0)
  1201. _Main_SimulationFlow_SteppedInto_Waiting_1 = Transition(self, self.states["/Main/SimulationFlow/SteppedInto/Waiting"], [self.states["/Main/SimulationFlow/SteppedInto/SettleBeforeWaiting"]])
  1202. _Main_SimulationFlow_SteppedInto_Waiting_1.setAction(self._Main_SimulationFlow_SteppedInto_Waiting_1_exec)
  1203. _Main_SimulationFlow_SteppedInto_Waiting_1.setTrigger(None)
  1204. _Main_SimulationFlow_SteppedInto_Waiting_1.setGuard(self._Main_SimulationFlow_SteppedInto_Waiting_1_guard)
  1205. self.states["/Main/SimulationFlow/SteppedInto/Waiting"].addTransition(_Main_SimulationFlow_SteppedInto_Waiting_1)
  1206. # transition /Main/SimulationFlow/SteppedInto/ExecutingCBDSmallStep
  1207. _Main_SimulationFlow_SteppedInto_ExecutingCBDSmallStep_0 = Transition(self, self.states["/Main/SimulationFlow/SteppedInto/ExecutingCBDSmallStep"], [self.states["/Main/SimulationFlow/SteppedInto/SettleBeforeWaiting"]])
  1208. _Main_SimulationFlow_SteppedInto_ExecutingCBDSmallStep_0.setTrigger(Event("CBDSmallStep.Finished", None))
  1209. self.states["/Main/SimulationFlow/SteppedInto/ExecutingCBDSmallStep"].addTransition(_Main_SimulationFlow_SteppedInto_ExecutingCBDSmallStep_0)
  1210. # transition /Main/SimulationFlow/SteppedInto/SettleBeforeWaiting
  1211. _Main_SimulationFlow_SteppedInto_SettleBeforeWaiting_0 = Transition(self, self.states["/Main/SimulationFlow/SteppedInto/SettleBeforeWaiting"], [self.states["/Main/SimulationFlow/SteppedInto/Waiting"]])
  1212. _Main_SimulationFlow_SteppedInto_SettleBeforeWaiting_0.setTrigger(Event("_4after"))
  1213. self.states["/Main/SimulationFlow/SteppedInto/SettleBeforeWaiting"].addTransition(_Main_SimulationFlow_SteppedInto_SettleBeforeWaiting_0)
  1214. # transition /Main/SimulationFlow/ExecutingCBD
  1215. _Main_SimulationFlow_ExecutingCBD_0 = Transition(self, self.states["/Main/SimulationFlow/ExecutingCBD"], [self.states["/Main/SimulationFlow/CheckingForStateEvent"]])
  1216. _Main_SimulationFlow_ExecutingCBD_0.setAction(self._Main_SimulationFlow_ExecutingCBD_0_exec)
  1217. _Main_SimulationFlow_ExecutingCBD_0.setTrigger(Event("CBDBigStep.Finished", None))
  1218. self.states["/Main/SimulationFlow/ExecutingCBD"].addTransition(_Main_SimulationFlow_ExecutingCBD_0)
  1219. # transition /Main/SimulationFlow/CheckingForStateEvent
  1220. _Main_SimulationFlow_CheckingForStateEvent_0 = Transition(self, self.states["/Main/SimulationFlow/CheckingForStateEvent"], [self.states["/Main/SimulationFlow/Executing"]])
  1221. _Main_SimulationFlow_CheckingForStateEvent_0.setAction(self._Main_SimulationFlow_CheckingForStateEvent_0_exec)
  1222. _Main_SimulationFlow_CheckingForStateEvent_0.setTrigger(None)
  1223. _Main_SimulationFlow_CheckingForStateEvent_0.setGuard(self._Main_SimulationFlow_CheckingForStateEvent_0_guard)
  1224. self.states["/Main/SimulationFlow/CheckingForStateEvent"].addTransition(_Main_SimulationFlow_CheckingForStateEvent_0)
  1225. _Main_SimulationFlow_CheckingForStateEvent_1 = Transition(self, self.states["/Main/SimulationFlow/CheckingForStateEvent"], [self.states["/Main/SimulationFlow/SendingGodEvent"]])
  1226. _Main_SimulationFlow_CheckingForStateEvent_1.setAction(self._Main_SimulationFlow_CheckingForStateEvent_1_exec)
  1227. _Main_SimulationFlow_CheckingForStateEvent_1.setTrigger(None)
  1228. _Main_SimulationFlow_CheckingForStateEvent_1.setGuard(self._Main_SimulationFlow_CheckingForStateEvent_1_guard)
  1229. self.states["/Main/SimulationFlow/CheckingForStateEvent"].addTransition(_Main_SimulationFlow_CheckingForStateEvent_1)
  1230. # transition /Main/SimulationFlow/SendingGodEvent
  1231. _Main_SimulationFlow_SendingGodEvent_0 = Transition(self, self.states["/Main/SimulationFlow/SendingGodEvent"], [self.states["/Main/SimulationFlow/Executing"]])
  1232. _Main_SimulationFlow_SendingGodEvent_0.setAction(self._Main_SimulationFlow_SendingGodEvent_0_exec)
  1233. _Main_SimulationFlow_SendingGodEvent_0.setTrigger(Event("FSASimulation.GodEventResult", None))
  1234. self.states["/Main/SimulationFlow/SendingGodEvent"].addTransition(_Main_SimulationFlow_SendingGodEvent_0)
  1235. # transition /Main/SimulationFlow/Executing
  1236. _Main_SimulationFlow_Executing_0 = Transition(self, self.states["/Main/SimulationFlow/Executing"], [self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"]])
  1237. _Main_SimulationFlow_Executing_0.setAction(self._Main_SimulationFlow_Executing_0_exec)
  1238. _Main_SimulationFlow_Executing_0.setTrigger(Event("FSASmallStep.Finished", None))
  1239. self.states["/Main/SimulationFlow/Executing"].addTransition(_Main_SimulationFlow_Executing_0)
  1240. # transition /Main/BreakpointManager/Listening
  1241. _Main_BreakpointManager_Listening_0 = Transition(self, self.states["/Main/BreakpointManager/Listening"], [self.states["/Main/BreakpointManager/Listening"]])
  1242. _Main_BreakpointManager_Listening_0.setAction(self._Main_BreakpointManager_Listening_0_exec)
  1243. _Main_BreakpointManager_Listening_0.setTrigger(Event("Breakpoint.Add", None))
  1244. self.states["/Main/BreakpointManager/Listening"].addTransition(_Main_BreakpointManager_Listening_0)
  1245. _Main_BreakpointManager_Listening_1 = Transition(self, self.states["/Main/BreakpointManager/Listening"], [self.states["/Main/BreakpointManager/Listening"]])
  1246. _Main_BreakpointManager_Listening_1.setAction(self._Main_BreakpointManager_Listening_1_exec)
  1247. _Main_BreakpointManager_Listening_1.setTrigger(Event("Breakpoint.Del", None))
  1248. self.states["/Main/BreakpointManager/Listening"].addTransition(_Main_BreakpointManager_Listening_1)
  1249. _Main_BreakpointManager_Listening_2 = Transition(self, self.states["/Main/BreakpointManager/Listening"], [self.states["/Main/BreakpointManager/Listening"]])
  1250. _Main_BreakpointManager_Listening_2.setAction(self._Main_BreakpointManager_Listening_2_exec)
  1251. _Main_BreakpointManager_Listening_2.setTrigger(Event("Breakpoint.Toggle", None))
  1252. self.states["/Main/BreakpointManager/Listening"].addTransition(_Main_BreakpointManager_Listening_2)
  1253. _Main_BreakpointManager_Listening_3 = Transition(self, self.states["/Main/BreakpointManager/Listening"], [self.states["/Main/BreakpointManager/Listening"]])
  1254. _Main_BreakpointManager_Listening_3.setAction(self._Main_BreakpointManager_Listening_3_exec)
  1255. _Main_BreakpointManager_Listening_3.setTrigger(Event("Breakpoint.List", None))
  1256. self.states["/Main/BreakpointManager/Listening"].addTransition(_Main_BreakpointManager_Listening_3)
  1257. # transition /Main/ModeSelector/Running
  1258. _Main_ModeSelector_Running_0 = Transition(self, self.states["/Main/ModeSelector/Running"], [self.states["/Main/ModeSelector/Stopped"]])
  1259. _Main_ModeSelector_Running_0.setTrigger(Event("FSASimulation.Finished", None))
  1260. self.states["/Main/ModeSelector/Running"].addTransition(_Main_ModeSelector_Running_0)
  1261. _Main_ModeSelector_Running_1 = Transition(self, self.states["/Main/ModeSelector/Running"], [self.states["/Main/ModeSelector/Stopped"]])
  1262. _Main_ModeSelector_Running_1.setTrigger(Event("CBDSimulation.Finished", None))
  1263. self.states["/Main/ModeSelector/Running"].addTransition(_Main_ModeSelector_Running_1)
  1264. # transition /Main/SimulationFlow/SteppedInto
  1265. _Main_SimulationFlow_SteppedInto_0 = Transition(self, self.states["/Main/SimulationFlow/SteppedInto"], [self.states["/Main/SimulationFlow/Executing"]])
  1266. _Main_SimulationFlow_SteppedInto_0.setAction(self._Main_SimulationFlow_SteppedInto_0_exec)
  1267. _Main_SimulationFlow_SteppedInto_0.setTrigger(Event("CBDBigStep.Finished", None))
  1268. self.states["/Main/SimulationFlow/SteppedInto"].addTransition(_Main_SimulationFlow_SteppedInto_0)
  1269. def _Main_ModeSelector_CheckIfBreakpointTriggers_enter(self):
  1270. self.breakpoint_triggers = self.breakpointTriggers(False)
  1271. def _Main_ModeSelector_Running_Continuous_CheckIfBreakpointTriggers_enter(self):
  1272. self.breakpoint_triggers = self.breakpointTriggers(False)
  1273. def _Main_ModeSelector_Running_Realtime_CheckIfBreakpointTriggers_enter(self):
  1274. self.breakpoint_triggers = self.breakpointTriggers(False)
  1275. def _Main_ModeSelector_Stopped_enter(self):
  1276. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("WovenSimulation.Finished", None, [self.fsa_clock, self.fsa_state])]))
  1277. def _Main_FSAInitializer_SettleBeforeWaiting_enter(self):
  1278. self.addTimer(0, self.sccd_yield())
  1279. def _Main_FSAInitializer_SettleBeforeWaiting_exit(self):
  1280. self.removeTimer(0)
  1281. def _Main_CBDInitializer_SettleBeforeWaiting_enter(self):
  1282. self.addTimer(1, self.sccd_yield())
  1283. def _Main_CBDInitializer_SettleBeforeWaiting_exit(self):
  1284. self.removeTimer(1)
  1285. def _Main_SimulationFlow_SettleBeforeCheckTermination_enter(self):
  1286. self.addTimer(2, self.sccd_yield())
  1287. def _Main_SimulationFlow_SettleBeforeCheckTermination_exit(self):
  1288. self.removeTimer(2)
  1289. def _Main_SimulationFlow_WaitingRealtime_enter(self):
  1290. self.addTimer(3, self.sccd_yield())
  1291. def _Main_SimulationFlow_WaitingRealtime_exit(self):
  1292. self.removeTimer(3)
  1293. def _Main_SimulationFlow_SteppedInto_SettleBeforeWaiting_enter(self):
  1294. self.addTimer(4, self.sccd_yield())
  1295. def _Main_SimulationFlow_SteppedInto_SettleBeforeWaiting_exit(self):
  1296. self.removeTimer(4)
  1297. def _Main_SimulationFlow_SteppedInto_0_exec(self, parameters):
  1298. cbd_clock = parameters[0]
  1299. cbd_iteration = parameters[1]
  1300. cbd_time_next = parameters[2]
  1301. cbd_state = parameters[3]
  1302. self.wovenUpdateGlobalState()
  1303. self.woven_lib.dumpGlobalState(self.woven_model, self.woven_global_state, self.fsa_clock / 1000.0, self.fsa_state)
  1304. self.cbd_clock = cbd_clock
  1305. self.cbd_state = cbd_state
  1306. self.cbd_iteration = cbd_iteration
  1307. self.cbd_time_next = cbd_time_next
  1308. self.woven_triggered_when_transition = self.wovenGetTriggeredWhenTransition()
  1309. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_fsa_simulator', Event("FSASmallStep.Execute", None, [self.woven_triggered_when_transition])]))
  1310. # print 'Executing a FSA small step... (after CBD big step)'
  1311. def _Main_ModeSelector_Paused_3_exec(self, parameters):
  1312. realtime_scale = parameters[0]
  1313. self.realtime_scale = float(realtime_scale)
  1314. def _Main_ModeSelector_Paused_4_exec(self, parameters):
  1315. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("StepInto.Success", None, [])]))
  1316. def _Main_ModeSelector_Paused_4_guard(self, parameters):
  1317. return isinstance(self.fsa_state, CBDState)
  1318. def _Main_ModeSelector_Paused_5_exec(self, parameters):
  1319. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("StepInto.Failure", None, [])]))
  1320. def _Main_ModeSelector_Paused_5_guard(self, parameters):
  1321. return not isinstance(self.fsa_state, CBDState)
  1322. def _Main_ModeSelector_Paused_6_exec(self, parameters):
  1323. fsa_clock = parameters[0]
  1324. fsa_state = parameters[1]
  1325. fsa_elapsed = parameters[2]
  1326. fsa_time_next = parameters[3]
  1327. fsa_event_list = parameters[4]
  1328. fsa_executed_transition = parameters[5]
  1329. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("FSABigStep.Finished", None, [fsa_clock, fsa_state, fsa_elapsed, fsa_time_next, fsa_event_list, fsa_executed_transition])]))
  1330. self.fsa_clock = fsa_clock
  1331. self.fsa_state = fsa_state
  1332. self.fsa_elapsed = fsa_elapsed
  1333. self.fsa_time_next = fsa_time_next
  1334. self.fsa_event_list = fsa_event_list
  1335. def _Main_ModeSelector_ExecutingRealtimeIfInitialized_0_exec(self, parameters):
  1336. # If the simulation was paused, we need to reset the start time of the WovenSimulation.
  1337. # The start time of the simulation is equal to the point in wall-fsa_clock time where simulated time is 0.
  1338. # If the simulation was paused, we have to recompute this point in time: it is the difference of the wall-fsa_clock time and the simulated time.
  1339. # 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)
  1340. self.realtime_start_time = accurate_time.time() - (self.fsa_clock / self.realtime_scale)
  1341. def _Main_ModeSelector_ExecutingRealtimeIfInitialized_0_guard(self, parameters):
  1342. return self.inState(["/Main/FSAChildState/Initialized"])
  1343. def _Main_ModeSelector_WaitingForBigStepToEndPause_0_exec(self, parameters):
  1344. fsa_clock = parameters[0]
  1345. fsa_state = parameters[1]
  1346. fsa_elapsed = parameters[2]
  1347. fsa_time_next = parameters[3]
  1348. fsa_event_list = parameters[4]
  1349. fsa_executed_transition = parameters[5]
  1350. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("FSABigStep.Finished", None, [fsa_clock, fsa_state, fsa_elapsed, fsa_time_next, fsa_event_list, fsa_executed_transition])]))
  1351. self.fsa_clock = fsa_clock
  1352. self.fsa_state = fsa_state
  1353. self.fsa_elapsed = fsa_elapsed
  1354. self.fsa_time_next = fsa_time_next
  1355. self.fsa_event_list = fsa_event_list
  1356. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("WovenSimulation.Paused", None, [self.fsa_clock, self.fsa_state])]))
  1357. def _Main_ModeSelector_CheckIfBreakpointTriggers_0_exec(self, parameters):
  1358. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("Breakpoint.Triggered", None, [self.triggered_bp, self.fsa_clock, self.fsa_state])]))
  1359. def _Main_ModeSelector_CheckIfBreakpointTriggers_0_guard(self, parameters):
  1360. return self.breakpoint_triggers
  1361. def _Main_ModeSelector_CheckIfBreakpointTriggers_1_guard(self, parameters):
  1362. return not self.breakpoint_triggers
  1363. def _Main_ModeSelector_Running_Continuous_CheckIfBreakpointTriggers_0_exec(self, parameters):
  1364. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("Breakpoint.Triggered", None, [self.triggered_bp, self.fsa_clock, self.fsa_state])]))
  1365. def _Main_ModeSelector_Running_Continuous_CheckIfBreakpointTriggers_0_guard(self, parameters):
  1366. return self.breakpoint_triggers
  1367. def _Main_ModeSelector_Running_Continuous_CheckIfBreakpointTriggers_1_guard(self, parameters):
  1368. return not self.breakpoint_triggers
  1369. def _Main_ModeSelector_Running_Continuous_Running_1_exec(self, parameters):
  1370. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("Breakpoint.Triggered", None, [self.triggered_bp, self.fsa_clock, self.fsa_state])]))
  1371. def _Main_ModeSelector_Running_Continuous_Running_1_guard(self, parameters):
  1372. return self.breakpointTriggers(False)
  1373. def _Main_ModeSelector_Running_Continuous_Running_2_exec(self, parameters):
  1374. fsa_clock = parameters[0]
  1375. fsa_state = parameters[1]
  1376. fsa_elapsed = parameters[2]
  1377. fsa_time_next = parameters[3]
  1378. fsa_event_list = parameters[4]
  1379. fsa_executed_transition = parameters[5]
  1380. self.fsa_clock = fsa_clock
  1381. self.fsa_state = fsa_state
  1382. self.fsa_elapsed = fsa_elapsed
  1383. self.fsa_time_next = fsa_time_next
  1384. self.fsa_event_list = fsa_event_list
  1385. def _Main_ModeSelector_Running_Realtime_CheckIfBreakpointTriggers_0_exec(self, parameters):
  1386. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("Breakpoint.Triggered", None, [self.triggered_bp, self.fsa_clock, self.fsa_state])]))
  1387. def _Main_ModeSelector_Running_Realtime_CheckIfBreakpointTriggers_0_guard(self, parameters):
  1388. return self.breakpoint_triggers
  1389. def _Main_ModeSelector_Running_Realtime_CheckIfBreakpointTriggers_1_guard(self, parameters):
  1390. return not self.breakpoint_triggers
  1391. def _Main_ModeSelector_Running_Realtime_Running_1_exec(self, parameters):
  1392. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("Breakpoint.Triggered", None, [self.triggered_bp, self.fsa_clock, self.fsa_state])]))
  1393. def _Main_ModeSelector_Running_Realtime_Running_1_guard(self, parameters):
  1394. return self.breakpointTriggers(True)
  1395. def _Main_ModeSelector_Running_Realtime_Running_2_exec(self, parameters):
  1396. fsa_clock = parameters[0]
  1397. fsa_state = parameters[1]
  1398. fsa_elapsed = parameters[2]
  1399. fsa_time_next = parameters[3]
  1400. fsa_event_list = parameters[4]
  1401. fsa_executed_transition = parameters[5]
  1402. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("FSABigStep.Finished", None, [fsa_clock, fsa_state, fsa_elapsed, fsa_time_next, fsa_event_list, fsa_executed_transition])]))
  1403. self.fsa_clock = fsa_clock
  1404. self.fsa_state = fsa_state
  1405. self.fsa_elapsed = fsa_elapsed
  1406. self.fsa_time_next = fsa_time_next
  1407. self.fsa_event_list = fsa_event_list
  1408. def _Main_ModeSelector_Running_BigStep_0_exec(self, parameters):
  1409. fsa_clock = parameters[0]
  1410. fsa_state = parameters[1]
  1411. fsa_elapsed = parameters[2]
  1412. fsa_time_next = parameters[3]
  1413. fsa_event_list = parameters[4]
  1414. fsa_executed_transition = parameters[5]
  1415. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("FSABigStep.Finished", None, [fsa_clock, fsa_state, fsa_elapsed, fsa_time_next, fsa_event_list, fsa_executed_transition])]))
  1416. self.fsa_clock = fsa_clock
  1417. self.fsa_state = fsa_state
  1418. self.fsa_elapsed = fsa_elapsed
  1419. self.fsa_time_next = fsa_time_next
  1420. self.fsa_event_list = fsa_event_list
  1421. def _Main_ModeSelector_Running_SmallStep_0_exec(self, parameters):
  1422. fsa_clock = parameters[0]
  1423. fsa_state = parameters[1]
  1424. fsa_elapsed = parameters[2]
  1425. fsa_event_list = parameters[3]
  1426. fsa_current_event = parameters[4]
  1427. fsa_executed_transition = parameters[5]
  1428. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("FSASmallStep.Finished", None, [fsa_clock, fsa_state, fsa_elapsed, fsa_event_list, fsa_current_event, fsa_executed_transition])]))
  1429. def _Main_ModeSelector_Running_ChildStep_Paused_2_exec(self, parameters):
  1430. clock = parameters[0]
  1431. iteration = parameters[1]
  1432. time_next = parameters[2]
  1433. state = parameters[3]
  1434. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("CBDBigStep.Finished", None, [clock, iteration, time_next, state])]))
  1435. def _Main_ModeSelector_Running_ChildStep_BigStep_0_exec(self, parameters):
  1436. clock = parameters[0]
  1437. iteration = parameters[1]
  1438. time_next = parameters[2]
  1439. state = parameters[3]
  1440. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("CBDBigStep.Finished", None, [clock, iteration, time_next, state])]))
  1441. def _Main_ModeSelector_Running_ChildStep_SmallStep_0_exec(self, parameters):
  1442. new_current_component_idx = parameters[0]
  1443. new_state = parameters[1]
  1444. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("CBDSmallStep.Finished", None, [new_current_component_idx, new_state])]))
  1445. def _Main_FSAChildState_Uninitialized_0_exec(self, parameters):
  1446. fsa_clock = parameters[0]
  1447. fsa_state = parameters[1]
  1448. fsa_elapsed = parameters[2]
  1449. fsa_time_next = parameters[3]
  1450. self.fsa_clock = fsa_clock
  1451. self.fsa_state = fsa_state
  1452. self.fsa_elapsed = fsa_elapsed
  1453. self.fsa_time_next = fsa_time_next
  1454. def _Main_FSAChildState_Initialized_0_exec(self, parameters):
  1455. self.big_step.outputEventOM(Event("delete_instance", None, [self, 'child_fsa_simulator']))
  1456. def _Main_CBDChildState_Uninitialized_0_exec(self, parameters):
  1457. cbd_clock = parameters[0]
  1458. cbd_state = parameters[1]
  1459. cbd_iteration = parameters[2]
  1460. cbd_time_next = parameters[3]
  1461. self.cbd_clock = cbd_clock
  1462. self.cbd_state = cbd_state
  1463. self.cbd_iteration = cbd_iteration
  1464. self.cbd_time_next = cbd_time_next
  1465. def _Main_CBDChildState_Initialized_0_exec(self, parameters):
  1466. fsa_clock = parameters[0]
  1467. fsa_state = parameters[1]
  1468. fsa_elapsed = parameters[2]
  1469. fsa_event_list = parameters[3]
  1470. fsa_current_event = parameters[4]
  1471. fsa_executed_transition = parameters[5]
  1472. self.big_step.outputEventOM(Event("delete_instance", None, [self, 'child_cbd_simulator']))
  1473. def _Main_CBDChildState_Initialized_0_guard(self, parameters):
  1474. fsa_clock = parameters[0]
  1475. fsa_state = parameters[1]
  1476. fsa_elapsed = parameters[2]
  1477. fsa_event_list = parameters[3]
  1478. fsa_current_event = parameters[4]
  1479. fsa_executed_transition = parameters[5]
  1480. return fsa_executed_transition
  1481. def _Main_FSAInitializer_Waiting_0_exec(self, parameters):
  1482. self.big_step.outputEventOM(Event("create_instance", None, [self, 'child_fsa_simulator', 'FSASimulator_Simulation', self.woven_model, self.fsa_events, self.woven_delta]))
  1483. def _Main_FSAInitializer_Waiting_0_guard(self, parameters):
  1484. return self.inState(["/Main/ModeSelector/Running"]) or self.inState(["/Main/ModeSelector/ExecutingRealtimeIfInitialized"]) and self.inState(["/Main/FSAChildState/Uninitialized"])
  1485. def _Main_FSAInitializer_CreatingChildSimulator_0_exec(self, parameters):
  1486. self.big_step.outputEventOM(Event("start_instance", None, [self, 'child_fsa_simulator']))
  1487. def _Main_CBDInitializer_Waiting_0_exec(self, parameters):
  1488. self.wovenUpdateCBDState()
  1489. self.big_step.outputEventOM(Event("create_instance", None, [self, 'child_cbd_simulator', 'CBDSimulator_Simulation', self.cbd_options, self.fsa_state.cbd, self.woven_delta]))
  1490. def _Main_CBDInitializer_Waiting_0_guard(self, parameters):
  1491. return self.inState(["/Main/ModeSelector/Running"]) and self.inState(["/Main/CBDChildState/Uninitialized"]) and self.inState(["/Main/FSAChildState/Initialized"]) and isinstance(self.fsa_state, CBDState)
  1492. def _Main_CBDInitializer_CreatingChildSimulator_0_exec(self, parameters):
  1493. self.big_step.outputEventOM(Event("start_instance", None, [self, 'child_cbd_simulator']))
  1494. def _Main_CBDInitializer_Running_0_guard(self, parameters):
  1495. fsa_clock = parameters[0]
  1496. fsa_state = parameters[1]
  1497. fsa_elapsed = parameters[2]
  1498. fsa_event_list = parameters[3]
  1499. fsa_current_event = parameters[4]
  1500. fsa_executed_transition = parameters[5]
  1501. return fsa_executed_transition
  1502. def _Main_SimulationFlow_Started_0_exec(self, parameters):
  1503. self.initialize()
  1504. def _Main_SimulationFlow_InitializeDebugger_0_exec(self, parameters):
  1505. self.initializeDebugger()
  1506. def _Main_SimulationFlow_DebuggerInitialized_0_exec(self, parameters):
  1507. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("WovenSimulation.Initialized", None, [self.woven_global_state])]))
  1508. def _Main_SimulationFlow_Waiting_0_guard(self, parameters):
  1509. return self.inState(["/Main/ModeSelector/Running"])
  1510. def _Main_SimulationFlow_CheckTermination_0_exec(self, parameters):
  1511. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_fsa_simulator', Event("FSASmallStep.Execute", None, [None])]))
  1512. # print 'Executing a FSA small step... (no CBD state)'
  1513. def _Main_SimulationFlow_CheckTermination_0_guard(self, parameters):
  1514. return (self.inState(["/Main/ModeSelector/Running/Continuous/Running"]) or self.inState(["/Main/ModeSelector/Running/BigStep"]) or self.inState(["/Main/ModeSelector/Running/SmallStep"])) and self.inState(["/Main/FSAChildState/Initialized"]) and not isinstance(self.fsa_state, CBDState)
  1515. def _Main_SimulationFlow_CheckTermination_1_exec(self, parameters):
  1516. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_cbd_simulator', Event("CBDBigStep.Execute", None, [])]))
  1517. # print 'Executing a CBD big step... (CBD state)'
  1518. def _Main_SimulationFlow_CheckTermination_1_guard(self, parameters):
  1519. return (self.inState(["/Main/ModeSelector/Running/Continuous/Running"]) or self.inState(["/Main/ModeSelector/Running/BigStep"]) or self.inState(["/Main/ModeSelector/Running/SmallStep"])) and self.inState(["/Main/CBDChildState/Initialized"]) and isinstance(self.fsa_state, CBDState)
  1520. def _Main_SimulationFlow_CheckTermination_2_guard(self, parameters):
  1521. return self.inState(["/Main/ModeSelector/Running/ChildStep/SmallStep"]) or self.inState(["/Main/ModeSelector/Running/ChildStep/BigStep"])
  1522. def _Main_SimulationFlow_CheckTermination_3_guard(self, parameters):
  1523. return self.inState(["/Main/ModeSelector/Running/Realtime/Running"]) and self.inState(["/Main/FSAChildState/Initialized"])
  1524. def _Main_SimulationFlow_CheckTermination_4_exec(self, parameters):
  1525. # print '>>> (WOVEN) simulation executed <<<'
  1526. self.finalize()
  1527. def _Main_SimulationFlow_CheckTermination_4_guard(self, parameters):
  1528. return self.inState(["/Main/ModeSelector/Stopped"])
  1529. def _Main_SimulationFlow_WaitingRealtime_0_exec(self, parameters):
  1530. self.syncSimulatedTime()
  1531. def _Main_SimulationFlow_WaitingRealtime_0_guard(self, parameters):
  1532. return self.inState(["/Main/ModeSelector/Running"])
  1533. def _Main_SimulationFlow_WaitingRealtime_1_exec(self, parameters):
  1534. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("WovenSimulation.Paused", None, [self.fsa_clock, self.fsa_state])]))
  1535. def _Main_SimulationFlow_WaitingRealtime_1_guard(self, parameters):
  1536. return self.inState(["/Main/ModeSelector/Paused"]) and (not ((self.waitTime() / 1000.0) <= self.sccd_yield()))
  1537. def _Main_SimulationFlow_WaitingRealtime_2_exec(self, parameters):
  1538. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_fsa_simulator', Event("FSASmallStep.Execute", None, [None])]))
  1539. # print 'Executing a FSA small step... (no CBD state - RT)'
  1540. def _Main_SimulationFlow_WaitingRealtime_2_guard(self, parameters):
  1541. return self.waitTime() / 1000.0 <= self.sccd_yield() and not isinstance(self.fsa_state, CBDState) and self.inState(["/Main/FSAChildState/Initialized"])
  1542. def _Main_SimulationFlow_WaitingRealtime_3_exec(self, parameters):
  1543. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_cbd_simulator', Event("CBDBigStep.Execute", None, [])]))
  1544. def _Main_SimulationFlow_WaitingRealtime_3_guard(self, parameters):
  1545. return self.waitTime() / 1000.0 <= self.sccd_yield() and isinstance(self.fsa_state, CBDState) and self.inState(["/Main/CBDChildState/Initialized"])
  1546. def _Main_SimulationFlow_SteppedInto_Waiting_0_exec(self, parameters):
  1547. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_cbd_simulator', Event("CBDSmallStep.Execute", None, [])]))
  1548. def _Main_SimulationFlow_SteppedInto_Waiting_0_guard(self, parameters):
  1549. return self.inState(["/Main/ModeSelector/Running/ChildStep/SmallStep"]) and self.inState(["/Main/CBDChildState/Initialized"])
  1550. def _Main_SimulationFlow_SteppedInto_Waiting_1_exec(self, parameters):
  1551. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_cbd_simulator', Event("CBDBigStep.Execute", None, [])]))
  1552. def _Main_SimulationFlow_SteppedInto_Waiting_1_guard(self, parameters):
  1553. return self.inState(["/Main/ModeSelector/Running/ChildStep/BigStep"]) and self.inState(["/Main/CBDChildState/Initialized"])
  1554. def _Main_SimulationFlow_ExecutingCBD_0_exec(self, parameters):
  1555. cbd_clock = parameters[0]
  1556. cbd_iteration = parameters[1]
  1557. cbd_time_next = parameters[2]
  1558. cbd_state = parameters[3]
  1559. self.wovenUpdateGlobalState()
  1560. self.woven_lib.dumpGlobalState(self.woven_model, self.woven_global_state, self.fsa_clock / 1000.0, self.fsa_state)
  1561. self.cbd_clock = cbd_clock
  1562. self.cbd_state = cbd_state
  1563. self.cbd_iteration = cbd_iteration
  1564. self.cbd_time_next = cbd_time_next
  1565. self.woven_triggered_when_transition = self.wovenGetTriggeredWhenTransition()
  1566. def _Main_SimulationFlow_CheckingForStateEvent_0_exec(self, parameters):
  1567. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_fsa_simulator', Event("FSASmallStep.Execute", None, [])]))
  1568. # print 'Executing a FSA small step... (after CBD big step)'
  1569. def _Main_SimulationFlow_CheckingForStateEvent_0_guard(self, parameters):
  1570. return self.woven_triggered_when_transition == None
  1571. def _Main_SimulationFlow_CheckingForStateEvent_1_exec(self, parameters):
  1572. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_fsa_simulator', Event("FSASimulation.GodEvent", None, [self.woven_triggered_when_transition])]))
  1573. def _Main_SimulationFlow_CheckingForStateEvent_1_guard(self, parameters):
  1574. return not (self.woven_triggered_when_transition == None)
  1575. def _Main_SimulationFlow_SendingGodEvent_0_exec(self, parameters):
  1576. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_fsa_simulator', Event("FSASmallStep.Execute", None, [])]))
  1577. # print 'Executing a FSA small step... (after CBD big step -- state event detected)'
  1578. def _Main_SimulationFlow_Executing_0_exec(self, parameters):
  1579. fsa_clock = parameters[0]
  1580. fsa_state = parameters[1]
  1581. fsa_elapsed = parameters[2]
  1582. fsa_event_list = parameters[3]
  1583. fsa_current_event = parameters[4]
  1584. fsa_executed_transition = parameters[5]
  1585. self.woven_lib.dumpDiscreteEvent(self.woven_model, self.fsa_clock / 1000.0, self.fsa_state, fsa_executed_transition)
  1586. self.fsa_clock = fsa_clock
  1587. self.fsa_state = fsa_state
  1588. self.fsa_elapsed = fsa_elapsed
  1589. self.fsa_event_list = fsa_event_list
  1590. self.woven_triggered_when_transition = None
  1591. self.woven_lib.dumpGlobalState(self.woven_model, self.woven_global_state, self.fsa_clock / 1000.0, self.fsa_state)
  1592. def _Main_BreakpointManager_Listening_0_exec(self, parameters):
  1593. name = parameters[0]
  1594. function = parameters[1]
  1595. enabled = parameters[2]
  1596. disable_on_trigger = parameters[3]
  1597. result = self.addBreakpoint(name, function, bool(enabled), bool(disable_on_trigger))
  1598. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("Breakpoint.AddResult", None, [result])]))
  1599. def _Main_BreakpointManager_Listening_1_exec(self, parameters):
  1600. name = parameters[0]
  1601. result = self.delBreakpoint(name)
  1602. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("Breakpoint.DelResult", None, [result])]))
  1603. def _Main_BreakpointManager_Listening_2_exec(self, parameters):
  1604. name = parameters[0]
  1605. result = self.toggleBreakpoint(name)
  1606. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("Breakpoint.ToggleResult", None, [result])]))
  1607. def _Main_BreakpointManager_Listening_3_exec(self, parameters):
  1608. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("Breakpoint.ListResult", None, [[bp.name for bp in self.breakpoints]])]))
  1609. def initializeStatechart(self):
  1610. # enter default state
  1611. self.default_targets = self.states["/Main"].getEffectiveTargetStates()
  1612. RuntimeClassBase.initializeStatechart(self)
  1613. class FSASimulator_Simulation(RuntimeClassBase):
  1614. def __init__(self, controller, model, events, delta):
  1615. RuntimeClassBase.__init__(self, controller)
  1616. self.semantics.big_step_maximality = StatechartSemantics.TakeMany
  1617. self.semantics.internal_event_lifeline = StatechartSemantics.Queue
  1618. self.semantics.input_event_lifeline = StatechartSemantics.FirstComboStep
  1619. self.semantics.priority = StatechartSemantics.SourceParent
  1620. self.semantics.concurrency = StatechartSemantics.Single
  1621. # build Statechart structure
  1622. self.build_statechart_structure()
  1623. # call user defined constructor
  1624. FSASimulator_Simulation.user_defined_constructor(self, model, events, delta)
  1625. def user_defined_constructor(self, model, events, delta):
  1626. self.model = model
  1627. self.event_list = events
  1628. self.delta = delta
  1629. def user_defined_destructor(self):
  1630. pass
  1631. # user defined method
  1632. def initialize(self):
  1633. self.clock = 0
  1634. self.elapsed = 0
  1635. self.time_next = self.delta
  1636. self.state = self.model.initialState
  1637. self.selected_transition = None
  1638. # user defined method
  1639. def endCondition(self):
  1640. return self.state and self.state.final
  1641. # user defined method
  1642. def finalize(self):
  1643. print '(FSA) Simulation finalized.'
  1644. # user defined method
  1645. def initializeDebugger(self):
  1646. pass
  1647. # user defined method
  1648. def godEvent(self, selected_transition):
  1649. self.selected_transition = selected_transition
  1650. # builds Statechart structure
  1651. def build_statechart_structure(self):
  1652. # state <root>
  1653. self.states[""] = State(0, self)
  1654. # state /Main
  1655. self.states["/Main"] = ParallelState(1, self)
  1656. # state /Main/ModeSelector
  1657. self.states["/Main/ModeSelector"] = State(2, self)
  1658. # state /Main/ModeSelector/Paused
  1659. self.states["/Main/ModeSelector/Paused"] = State(3, self)
  1660. # state /Main/ModeSelector/Running
  1661. self.states["/Main/ModeSelector/Running"] = State(4, self)
  1662. # state /Main/ModeSelector/Running/BigStep
  1663. self.states["/Main/ModeSelector/Running/BigStep"] = State(5, self)
  1664. # state /Main/ModeSelector/Running/SmallStep
  1665. self.states["/Main/ModeSelector/Running/SmallStep"] = State(6, self)
  1666. # state /Main/ModeSelector/Stopped
  1667. self.states["/Main/ModeSelector/Stopped"] = State(7, self)
  1668. # state /Main/ChildState
  1669. self.states["/Main/ChildState"] = State(8, self)
  1670. # state /Main/ChildState/Uninitialized
  1671. self.states["/Main/ChildState/Uninitialized"] = State(9, self)
  1672. # state /Main/ChildState/Initialized
  1673. self.states["/Main/ChildState/Initialized"] = State(10, self)
  1674. # state /Main/ChildInitializer
  1675. self.states["/Main/ChildInitializer"] = State(11, self)
  1676. # state /Main/ChildInitializer/Waiting
  1677. self.states["/Main/ChildInitializer/Waiting"] = State(12, self)
  1678. # state /Main/ChildInitializer/CreatingChildSimulator
  1679. self.states["/Main/ChildInitializer/CreatingChildSimulator"] = State(13, self)
  1680. # state /Main/ChildInitializer/StartingChildSimulator
  1681. self.states["/Main/ChildInitializer/StartingChildSimulator"] = State(14, self)
  1682. # state /Main/ChildInitializer/Running
  1683. self.states["/Main/ChildInitializer/Running"] = State(15, self)
  1684. # state /Main/ChildInitializer/SettleBeforeWaiting
  1685. self.states["/Main/ChildInitializer/SettleBeforeWaiting"] = State(16, self)
  1686. self.states["/Main/ChildInitializer/SettleBeforeWaiting"].setEnter(self._Main_ChildInitializer_SettleBeforeWaiting_enter)
  1687. self.states["/Main/ChildInitializer/SettleBeforeWaiting"].setExit(self._Main_ChildInitializer_SettleBeforeWaiting_exit)
  1688. # state /Main/SimulationFlow
  1689. self.states["/Main/SimulationFlow"] = State(17, self)
  1690. # state /Main/SimulationFlow/Started
  1691. self.states["/Main/SimulationFlow/Started"] = State(18, self)
  1692. # state /Main/SimulationFlow/Initialized
  1693. self.states["/Main/SimulationFlow/Initialized"] = State(19, self)
  1694. # state /Main/SimulationFlow/InitializeDebugger
  1695. self.states["/Main/SimulationFlow/InitializeDebugger"] = State(20, self)
  1696. # state /Main/SimulationFlow/DebuggerInitialized
  1697. self.states["/Main/SimulationFlow/DebuggerInitialized"] = State(21, self)
  1698. # state /Main/SimulationFlow/Waiting
  1699. self.states["/Main/SimulationFlow/Waiting"] = State(22, self)
  1700. # state /Main/SimulationFlow/SettleBeforeCheckTermination
  1701. self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"] = State(23, self)
  1702. self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"].setEnter(self._Main_SimulationFlow_SettleBeforeCheckTermination_enter)
  1703. self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"].setExit(self._Main_SimulationFlow_SettleBeforeCheckTermination_exit)
  1704. # state /Main/SimulationFlow/CheckTermination
  1705. self.states["/Main/SimulationFlow/CheckTermination"] = State(24, self)
  1706. # state /Main/SimulationFlow/ExecutingBigStep
  1707. self.states["/Main/SimulationFlow/ExecutingBigStep"] = State(25, self)
  1708. # state /Main/SimulationFlow/ExecutingSmallStep
  1709. self.states["/Main/SimulationFlow/ExecutingSmallStep"] = State(26, self)
  1710. # state /Main/SimulationFlow/Stopped
  1711. self.states["/Main/SimulationFlow/Stopped"] = State(27, self)
  1712. # state /Main/GodEventManager
  1713. self.states["/Main/GodEventManager"] = State(28, self)
  1714. # state /Main/GodEventManager/Listening
  1715. self.states["/Main/GodEventManager/Listening"] = State(29, self)
  1716. # state /Stopped
  1717. self.states["/Stopped"] = State(30, self)
  1718. # add children
  1719. self.states[""].addChild(self.states["/Main"])
  1720. self.states[""].addChild(self.states["/Stopped"])
  1721. self.states["/Main"].addChild(self.states["/Main/ModeSelector"])
  1722. self.states["/Main"].addChild(self.states["/Main/ChildState"])
  1723. self.states["/Main"].addChild(self.states["/Main/ChildInitializer"])
  1724. self.states["/Main"].addChild(self.states["/Main/SimulationFlow"])
  1725. self.states["/Main"].addChild(self.states["/Main/GodEventManager"])
  1726. self.states["/Main/ModeSelector"].addChild(self.states["/Main/ModeSelector/Paused"])
  1727. self.states["/Main/ModeSelector"].addChild(self.states["/Main/ModeSelector/Running"])
  1728. self.states["/Main/ModeSelector"].addChild(self.states["/Main/ModeSelector/Stopped"])
  1729. self.states["/Main/ModeSelector/Running"].addChild(self.states["/Main/ModeSelector/Running/BigStep"])
  1730. self.states["/Main/ModeSelector/Running"].addChild(self.states["/Main/ModeSelector/Running/SmallStep"])
  1731. self.states["/Main/ChildState"].addChild(self.states["/Main/ChildState/Uninitialized"])
  1732. self.states["/Main/ChildState"].addChild(self.states["/Main/ChildState/Initialized"])
  1733. self.states["/Main/ChildInitializer"].addChild(self.states["/Main/ChildInitializer/Waiting"])
  1734. self.states["/Main/ChildInitializer"].addChild(self.states["/Main/ChildInitializer/CreatingChildSimulator"])
  1735. self.states["/Main/ChildInitializer"].addChild(self.states["/Main/ChildInitializer/StartingChildSimulator"])
  1736. self.states["/Main/ChildInitializer"].addChild(self.states["/Main/ChildInitializer/Running"])
  1737. self.states["/Main/ChildInitializer"].addChild(self.states["/Main/ChildInitializer/SettleBeforeWaiting"])
  1738. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Started"])
  1739. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Initialized"])
  1740. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/InitializeDebugger"])
  1741. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/DebuggerInitialized"])
  1742. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Waiting"])
  1743. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"])
  1744. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/CheckTermination"])
  1745. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/ExecutingBigStep"])
  1746. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/ExecutingSmallStep"])
  1747. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Stopped"])
  1748. self.states["/Main/GodEventManager"].addChild(self.states["/Main/GodEventManager/Listening"])
  1749. self.states[""].fixTree()
  1750. self.states[""].default_state = self.states["/Main"]
  1751. self.states["/Main/ModeSelector"].default_state = self.states["/Main/ModeSelector/Paused"]
  1752. self.states["/Main/ModeSelector/Running"].default_state = self.states["/Main/ModeSelector/Running/BigStep"]
  1753. self.states["/Main/ChildState"].default_state = self.states["/Main/ChildState/Uninitialized"]
  1754. self.states["/Main/ChildInitializer"].default_state = self.states["/Main/ChildInitializer/Waiting"]
  1755. self.states["/Main/SimulationFlow"].default_state = self.states["/Main/SimulationFlow/Started"]
  1756. self.states["/Main/GodEventManager"].default_state = self.states["/Main/GodEventManager/Listening"]
  1757. # transition /Main/ModeSelector/Paused
  1758. _Main_ModeSelector_Paused_0 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Running/SmallStep"]])
  1759. _Main_ModeSelector_Paused_0.setTrigger(Event("FSASmallStep.Execute", None))
  1760. self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_0)
  1761. _Main_ModeSelector_Paused_1 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Running/BigStep"]])
  1762. _Main_ModeSelector_Paused_1.setTrigger(Event("FSABigStep.Execute", None))
  1763. self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_1)
  1764. _Main_ModeSelector_Paused_2 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Paused"]])
  1765. _Main_ModeSelector_Paused_2.setAction(self._Main_ModeSelector_Paused_2_exec)
  1766. _Main_ModeSelector_Paused_2.setTrigger(Event("FSABigStep.Finished", None))
  1767. self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_2)
  1768. # transition /Main/ModeSelector/Running/BigStep
  1769. _Main_ModeSelector_Running_BigStep_0 = Transition(self, self.states["/Main/ModeSelector/Running/BigStep"], [self.states["/Main/ModeSelector/Paused"]])
  1770. _Main_ModeSelector_Running_BigStep_0.setAction(self._Main_ModeSelector_Running_BigStep_0_exec)
  1771. _Main_ModeSelector_Running_BigStep_0.setTrigger(Event("FSABigStep.Finished", None))
  1772. self.states["/Main/ModeSelector/Running/BigStep"].addTransition(_Main_ModeSelector_Running_BigStep_0)
  1773. # transition /Main/ModeSelector/Running/SmallStep
  1774. _Main_ModeSelector_Running_SmallStep_0 = Transition(self, self.states["/Main/ModeSelector/Running/SmallStep"], [self.states["/Main/ModeSelector/Paused"]])
  1775. _Main_ModeSelector_Running_SmallStep_0.setAction(self._Main_ModeSelector_Running_SmallStep_0_exec)
  1776. _Main_ModeSelector_Running_SmallStep_0.setTrigger(Event("FSASmallStep.Finished", None))
  1777. self.states["/Main/ModeSelector/Running/SmallStep"].addTransition(_Main_ModeSelector_Running_SmallStep_0)
  1778. # transition /Main/ChildState/Uninitialized
  1779. _Main_ChildState_Uninitialized_0 = Transition(self, self.states["/Main/ChildState/Uninitialized"], [self.states["/Main/ChildState/Initialized"]])
  1780. _Main_ChildState_Uninitialized_0.setTrigger(Event("FSABigStep.Initialized", None))
  1781. self.states["/Main/ChildState/Uninitialized"].addTransition(_Main_ChildState_Uninitialized_0)
  1782. # transition /Main/ChildState/Initialized
  1783. _Main_ChildState_Initialized_0 = Transition(self, self.states["/Main/ChildState/Initialized"], [self.states["/Main/ChildState/Uninitialized"]])
  1784. _Main_ChildState_Initialized_0.setAction(self._Main_ChildState_Initialized_0_exec)
  1785. _Main_ChildState_Initialized_0.setTrigger(Event("FSABigStep.Finished", None))
  1786. self.states["/Main/ChildState/Initialized"].addTransition(_Main_ChildState_Initialized_0)
  1787. # transition /Main/ChildInitializer/Waiting
  1788. _Main_ChildInitializer_Waiting_0 = Transition(self, self.states["/Main/ChildInitializer/Waiting"], [self.states["/Main/ChildInitializer/CreatingChildSimulator"]])
  1789. _Main_ChildInitializer_Waiting_0.setAction(self._Main_ChildInitializer_Waiting_0_exec)
  1790. _Main_ChildInitializer_Waiting_0.setTrigger(None)
  1791. _Main_ChildInitializer_Waiting_0.setGuard(self._Main_ChildInitializer_Waiting_0_guard)
  1792. self.states["/Main/ChildInitializer/Waiting"].addTransition(_Main_ChildInitializer_Waiting_0)
  1793. # transition /Main/ChildInitializer/CreatingChildSimulator
  1794. _Main_ChildInitializer_CreatingChildSimulator_0 = Transition(self, self.states["/Main/ChildInitializer/CreatingChildSimulator"], [self.states["/Main/ChildInitializer/StartingChildSimulator"]])
  1795. _Main_ChildInitializer_CreatingChildSimulator_0.setAction(self._Main_ChildInitializer_CreatingChildSimulator_0_exec)
  1796. _Main_ChildInitializer_CreatingChildSimulator_0.setTrigger(Event("instance_created", None))
  1797. self.states["/Main/ChildInitializer/CreatingChildSimulator"].addTransition(_Main_ChildInitializer_CreatingChildSimulator_0)
  1798. # transition /Main/ChildInitializer/StartingChildSimulator
  1799. _Main_ChildInitializer_StartingChildSimulator_0 = Transition(self, self.states["/Main/ChildInitializer/StartingChildSimulator"], [self.states["/Main/ChildInitializer/Running"]])
  1800. _Main_ChildInitializer_StartingChildSimulator_0.setTrigger(Event("FSABigStep.Initialized", None))
  1801. self.states["/Main/ChildInitializer/StartingChildSimulator"].addTransition(_Main_ChildInitializer_StartingChildSimulator_0)
  1802. # transition /Main/ChildInitializer/Running
  1803. _Main_ChildInitializer_Running_0 = Transition(self, self.states["/Main/ChildInitializer/Running"], [self.states["/Main/ChildInitializer/SettleBeforeWaiting"]])
  1804. _Main_ChildInitializer_Running_0.setTrigger(Event("FSABigStep.Finished", None))
  1805. self.states["/Main/ChildInitializer/Running"].addTransition(_Main_ChildInitializer_Running_0)
  1806. # transition /Main/ChildInitializer/SettleBeforeWaiting
  1807. _Main_ChildInitializer_SettleBeforeWaiting_0 = Transition(self, self.states["/Main/ChildInitializer/SettleBeforeWaiting"], [self.states["/Main/ChildInitializer/Waiting"]])
  1808. _Main_ChildInitializer_SettleBeforeWaiting_0.setTrigger(Event("_0after"))
  1809. self.states["/Main/ChildInitializer/SettleBeforeWaiting"].addTransition(_Main_ChildInitializer_SettleBeforeWaiting_0)
  1810. # transition /Main/SimulationFlow/Started
  1811. _Main_SimulationFlow_Started_0 = Transition(self, self.states["/Main/SimulationFlow/Started"], [self.states["/Main/SimulationFlow/Initialized"]])
  1812. _Main_SimulationFlow_Started_0.setAction(self._Main_SimulationFlow_Started_0_exec)
  1813. _Main_SimulationFlow_Started_0.setTrigger(None)
  1814. self.states["/Main/SimulationFlow/Started"].addTransition(_Main_SimulationFlow_Started_0)
  1815. # transition /Main/SimulationFlow/Initialized
  1816. _Main_SimulationFlow_Initialized_0 = Transition(self, self.states["/Main/SimulationFlow/Initialized"], [self.states["/Main/SimulationFlow/InitializeDebugger"]])
  1817. _Main_SimulationFlow_Initialized_0.setTrigger(None)
  1818. self.states["/Main/SimulationFlow/Initialized"].addTransition(_Main_SimulationFlow_Initialized_0)
  1819. # transition /Main/SimulationFlow/InitializeDebugger
  1820. _Main_SimulationFlow_InitializeDebugger_0 = Transition(self, self.states["/Main/SimulationFlow/InitializeDebugger"], [self.states["/Main/SimulationFlow/DebuggerInitialized"]])
  1821. _Main_SimulationFlow_InitializeDebugger_0.setAction(self._Main_SimulationFlow_InitializeDebugger_0_exec)
  1822. _Main_SimulationFlow_InitializeDebugger_0.setTrigger(None)
  1823. self.states["/Main/SimulationFlow/InitializeDebugger"].addTransition(_Main_SimulationFlow_InitializeDebugger_0)
  1824. # transition /Main/SimulationFlow/DebuggerInitialized
  1825. _Main_SimulationFlow_DebuggerInitialized_0 = Transition(self, self.states["/Main/SimulationFlow/DebuggerInitialized"], [self.states["/Main/SimulationFlow/Waiting"]])
  1826. _Main_SimulationFlow_DebuggerInitialized_0.setAction(self._Main_SimulationFlow_DebuggerInitialized_0_exec)
  1827. _Main_SimulationFlow_DebuggerInitialized_0.setTrigger(None)
  1828. self.states["/Main/SimulationFlow/DebuggerInitialized"].addTransition(_Main_SimulationFlow_DebuggerInitialized_0)
  1829. # transition /Main/SimulationFlow/Waiting
  1830. _Main_SimulationFlow_Waiting_0 = Transition(self, self.states["/Main/SimulationFlow/Waiting"], [self.states["/Main/SimulationFlow/CheckTermination"]])
  1831. _Main_SimulationFlow_Waiting_0.setTrigger(None)
  1832. _Main_SimulationFlow_Waiting_0.setGuard(self._Main_SimulationFlow_Waiting_0_guard)
  1833. self.states["/Main/SimulationFlow/Waiting"].addTransition(_Main_SimulationFlow_Waiting_0)
  1834. # transition /Main/SimulationFlow/SettleBeforeCheckTermination
  1835. _Main_SimulationFlow_SettleBeforeCheckTermination_0 = Transition(self, self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"], [self.states["/Main/SimulationFlow/CheckTermination"]])
  1836. _Main_SimulationFlow_SettleBeforeCheckTermination_0.setTrigger(Event("_1after"))
  1837. self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"].addTransition(_Main_SimulationFlow_SettleBeforeCheckTermination_0)
  1838. _Main_SimulationFlow_SettleBeforeCheckTermination_1 = Transition(self, self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"], [self.states["/Main/SimulationFlow/CheckTermination"]])
  1839. _Main_SimulationFlow_SettleBeforeCheckTermination_1.setAction(self._Main_SimulationFlow_SettleBeforeCheckTermination_1_exec)
  1840. _Main_SimulationFlow_SettleBeforeCheckTermination_1.setTrigger(None)
  1841. _Main_SimulationFlow_SettleBeforeCheckTermination_1.setGuard(self._Main_SimulationFlow_SettleBeforeCheckTermination_1_guard)
  1842. self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"].addTransition(_Main_SimulationFlow_SettleBeforeCheckTermination_1)
  1843. # transition /Main/SimulationFlow/CheckTermination
  1844. _Main_SimulationFlow_CheckTermination_0 = Transition(self, self.states["/Main/SimulationFlow/CheckTermination"], [self.states["/Main/SimulationFlow/ExecutingBigStep"]])
  1845. _Main_SimulationFlow_CheckTermination_0.setAction(self._Main_SimulationFlow_CheckTermination_0_exec)
  1846. _Main_SimulationFlow_CheckTermination_0.setTrigger(None)
  1847. _Main_SimulationFlow_CheckTermination_0.setGuard(self._Main_SimulationFlow_CheckTermination_0_guard)
  1848. self.states["/Main/SimulationFlow/CheckTermination"].addTransition(_Main_SimulationFlow_CheckTermination_0)
  1849. _Main_SimulationFlow_CheckTermination_1 = Transition(self, self.states["/Main/SimulationFlow/CheckTermination"], [self.states["/Main/SimulationFlow/ExecutingSmallStep"]])
  1850. _Main_SimulationFlow_CheckTermination_1.setAction(self._Main_SimulationFlow_CheckTermination_1_exec)
  1851. _Main_SimulationFlow_CheckTermination_1.setTrigger(None)
  1852. _Main_SimulationFlow_CheckTermination_1.setGuard(self._Main_SimulationFlow_CheckTermination_1_guard)
  1853. self.states["/Main/SimulationFlow/CheckTermination"].addTransition(_Main_SimulationFlow_CheckTermination_1)
  1854. _Main_SimulationFlow_CheckTermination_2 = Transition(self, self.states["/Main/SimulationFlow/CheckTermination"], [self.states["/Main/SimulationFlow/Stopped"]])
  1855. _Main_SimulationFlow_CheckTermination_2.setAction(self._Main_SimulationFlow_CheckTermination_2_exec)
  1856. _Main_SimulationFlow_CheckTermination_2.setTrigger(None)
  1857. _Main_SimulationFlow_CheckTermination_2.setGuard(self._Main_SimulationFlow_CheckTermination_2_guard)
  1858. self.states["/Main/SimulationFlow/CheckTermination"].addTransition(_Main_SimulationFlow_CheckTermination_2)
  1859. # transition /Main/SimulationFlow/ExecutingBigStep
  1860. _Main_SimulationFlow_ExecutingBigStep_0 = Transition(self, self.states["/Main/SimulationFlow/ExecutingBigStep"], [self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"]])
  1861. _Main_SimulationFlow_ExecutingBigStep_0.setTrigger(Event("FSABigStep.Finished", None))
  1862. self.states["/Main/SimulationFlow/ExecutingBigStep"].addTransition(_Main_SimulationFlow_ExecutingBigStep_0)
  1863. # transition /Main/SimulationFlow/ExecutingSmallStep
  1864. _Main_SimulationFlow_ExecutingSmallStep_0 = Transition(self, self.states["/Main/SimulationFlow/ExecutingSmallStep"], [self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"]])
  1865. _Main_SimulationFlow_ExecutingSmallStep_0.setTrigger(Event("FSASmallStep.Finished", None))
  1866. self.states["/Main/SimulationFlow/ExecutingSmallStep"].addTransition(_Main_SimulationFlow_ExecutingSmallStep_0)
  1867. # transition /Main/GodEventManager/Listening
  1868. _Main_GodEventManager_Listening_0 = Transition(self, self.states["/Main/GodEventManager/Listening"], [self.states["/Main/GodEventManager/Listening"]])
  1869. _Main_GodEventManager_Listening_0.setAction(self._Main_GodEventManager_Listening_0_exec)
  1870. _Main_GodEventManager_Listening_0.setTrigger(Event("FSASimulation.GodEvent", None))
  1871. _Main_GodEventManager_Listening_0.setGuard(self._Main_GodEventManager_Listening_0_guard)
  1872. self.states["/Main/GodEventManager/Listening"].addTransition(_Main_GodEventManager_Listening_0)
  1873. # transition /Main/ModeSelector/Running
  1874. _Main_ModeSelector_Running_0 = Transition(self, self.states["/Main/ModeSelector/Running"], [self.states["/Main/ModeSelector/Stopped"]])
  1875. _Main_ModeSelector_Running_0.setTrigger(Event("FSASimulation.Finished", None))
  1876. self.states["/Main/ModeSelector/Running"].addTransition(_Main_ModeSelector_Running_0)
  1877. def _Main_ChildInitializer_SettleBeforeWaiting_enter(self):
  1878. self.addTimer(0, self.sccd_yield())
  1879. def _Main_ChildInitializer_SettleBeforeWaiting_exit(self):
  1880. self.removeTimer(0)
  1881. def _Main_SimulationFlow_SettleBeforeCheckTermination_enter(self):
  1882. self.addTimer(1, self.sccd_yield())
  1883. def _Main_SimulationFlow_SettleBeforeCheckTermination_exit(self):
  1884. self.removeTimer(1)
  1885. def _Main_ModeSelector_Paused_2_exec(self, parameters):
  1886. clock = parameters[0]
  1887. state = parameters[1]
  1888. elapsed = parameters[2]
  1889. time_next = parameters[3]
  1890. event_list = parameters[4]
  1891. executed_transition = parameters[5]
  1892. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("FSABigStep.Finished", None, [clock, state, elapsed, time_next, event_list, executed_transition])]))
  1893. self.clock = clock
  1894. self.state = state
  1895. self.elapsed = elapsed
  1896. self.time_next = time_next
  1897. self.elapsed = elapsed
  1898. self.event_list = event_list
  1899. def _Main_ModeSelector_Running_BigStep_0_exec(self, parameters):
  1900. clock = parameters[0]
  1901. state = parameters[1]
  1902. elapsed = parameters[2]
  1903. time_next = parameters[3]
  1904. event_list = parameters[4]
  1905. executed_transition = parameters[5]
  1906. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("FSABigStep.Finished", None, [clock, state, elapsed, time_next, event_list, executed_transition])]))
  1907. self.clock = clock
  1908. self.state = state
  1909. self.elapsed = elapsed
  1910. self.time_next = time_next
  1911. self.elapsed = elapsed
  1912. self.event_list = event_list
  1913. def _Main_ModeSelector_Running_SmallStep_0_exec(self, parameters):
  1914. clock = parameters[0]
  1915. state = parameters[1]
  1916. elapsed = parameters[2]
  1917. event_list = parameters[3]
  1918. current_event = parameters[4]
  1919. executed_transition = parameters[5]
  1920. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("FSASmallStep.Finished", None, [clock, state, elapsed, event_list, current_event, executed_transition])]))
  1921. def _Main_ChildState_Initialized_0_exec(self, parameters):
  1922. self.big_step.outputEventOM(Event("delete_instance", None, [self, 'child_simulator']))
  1923. def _Main_ChildInitializer_Waiting_0_exec(self, parameters):
  1924. self.big_step.outputEventOM(Event("create_instance", None, [self, 'child_simulator', 'FSASimulator_BigStep', self.model, self.state, self.clock, self.elapsed, self.event_list, self.time_next, self.delta]))
  1925. def _Main_ChildInitializer_Waiting_0_guard(self, parameters):
  1926. return self.inState(["/Main/ModeSelector/Running"]) and self.inState(["/Main/ChildState/Uninitialized"]) and not self.endCondition()
  1927. def _Main_ChildInitializer_CreatingChildSimulator_0_exec(self, parameters):
  1928. self.big_step.outputEventOM(Event("start_instance", None, [self, 'child_simulator']))
  1929. def _Main_SimulationFlow_Started_0_exec(self, parameters):
  1930. self.initialize()
  1931. def _Main_SimulationFlow_InitializeDebugger_0_exec(self, parameters):
  1932. self.initializeDebugger()
  1933. def _Main_SimulationFlow_DebuggerInitialized_0_exec(self, parameters):
  1934. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("FSASimulation.Initialized", None, [self.clock, self.state, self.elapsed, self.time_next])]))
  1935. def _Main_SimulationFlow_Waiting_0_guard(self, parameters):
  1936. return self.inState(["/Main/ModeSelector/Running"])
  1937. def _Main_SimulationFlow_SettleBeforeCheckTermination_1_exec(self, parameters):
  1938. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("FSASimulation.Paused", None, [self.clock, self.state])]))
  1939. def _Main_SimulationFlow_SettleBeforeCheckTermination_1_guard(self, parameters):
  1940. return self.inState(["/Main/ModeSelector/Paused"])
  1941. def _Main_SimulationFlow_CheckTermination_0_exec(self, parameters):
  1942. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("FSABigStep.Execute", None, [self.selected_transition])]))
  1943. self.selected_transition = None
  1944. def _Main_SimulationFlow_CheckTermination_0_guard(self, parameters):
  1945. return self.inState(["/Main/ModeSelector/Running/BigStep"]) and self.inState(["/Main/ChildState/Initialized"]) and not self.endCondition()
  1946. def _Main_SimulationFlow_CheckTermination_1_exec(self, parameters):
  1947. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("FSASmallStep.Execute", None, [self.selected_transition])]))
  1948. self.selected_transition = None
  1949. def _Main_SimulationFlow_CheckTermination_1_guard(self, parameters):
  1950. return self.inState(["/Main/ModeSelector/Running/SmallStep"]) and self.inState(["/Main/ChildState/Initialized"]) and not self.endCondition()
  1951. def _Main_SimulationFlow_CheckTermination_2_exec(self, parameters):
  1952. # print '>>> (FSA) simulation executed <<<'
  1953. self.finalize()
  1954. self.raiseInternalEvent(Event("FSASimulation.Finished", None, []))
  1955. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("FSASimulation.Finished", None, [self.clock, self.state])]))
  1956. def _Main_SimulationFlow_CheckTermination_2_guard(self, parameters):
  1957. return self.endCondition()
  1958. def _Main_GodEventManager_Listening_0_exec(self, parameters):
  1959. selected_transition = parameters[0]
  1960. result = self.godEvent(selected_transition)
  1961. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("FSASimulation.GodEventResult", None, [result])]))
  1962. def _Main_GodEventManager_Listening_0_guard(self, parameters):
  1963. selected_transition = parameters[0]
  1964. return self.inState(["/Main/ModeSelector/Paused"])
  1965. def initializeStatechart(self):
  1966. # enter default state
  1967. self.default_targets = self.states["/Main"].getEffectiveTargetStates()
  1968. RuntimeClassBase.initializeStatechart(self)
  1969. class FSASimulator_BigStep(RuntimeClassBase):
  1970. def __init__(self, controller, model, state, clock, elapsed, event_list, time_next, delta):
  1971. RuntimeClassBase.__init__(self, controller)
  1972. self.semantics.big_step_maximality = StatechartSemantics.TakeMany
  1973. self.semantics.internal_event_lifeline = StatechartSemantics.Queue
  1974. self.semantics.input_event_lifeline = StatechartSemantics.FirstComboStep
  1975. self.semantics.priority = StatechartSemantics.SourceParent
  1976. self.semantics.concurrency = StatechartSemantics.Single
  1977. # build Statechart structure
  1978. self.build_statechart_structure()
  1979. # call user defined constructor
  1980. FSASimulator_BigStep.user_defined_constructor(self, model, state, clock, elapsed, event_list, time_next, delta)
  1981. def user_defined_constructor(self, model, state, clock, elapsed, event_list, time_next, delta):
  1982. self.model = model
  1983. self.state = state
  1984. self.clock = clock
  1985. self.elapsed = elapsed
  1986. self.event_list = event_list
  1987. self.time_next = time_next
  1988. self.delta = delta
  1989. self.selected_transition = None
  1990. def user_defined_destructor(self):
  1991. pass
  1992. # user defined method
  1993. def initialize(self):
  1994. self.current_event = self.getInputEventAt(self.clock / 1000.0)
  1995. selected_transition = self.model.getTransitionFrom(self.state, self.current_event, self.elapsed / 1000.0)
  1996. if (selected_transition != None):
  1997. # Transitions triggered by environment events get priority over transitions triggered by state events.
  1998. self.selected_transition = selected_transition
  1999. self.small_step_executed = False
  2000. self.executed_transition = False
  2001. # user defined method
  2002. def initializeDebugger(self):
  2003. pass
  2004. # user defined method
  2005. def endCondition(self):
  2006. ''' We make sure to "execute" a small step, even if no transition was selected. '''
  2007. return self.small_step_executed and self.selected_transition == None
  2008. # user defined method
  2009. def finalize(self):
  2010. self.advanceTime()
  2011. # user defined method
  2012. def advanceTime(self):
  2013. self.clock = self.time_next
  2014. self.elapsed = self.elapsed + self.delta
  2015. self.time_next = self.clock + self.delta
  2016. # user defined method
  2017. def getInputEventAt(self, time):
  2018. return self.event_list.getInputAt(time)
  2019. # builds Statechart structure
  2020. def build_statechart_structure(self):
  2021. # state <root>
  2022. self.states[""] = State(0, self)
  2023. # state /Main
  2024. self.states["/Main"] = ParallelState(1, self)
  2025. # state /Main/ModeSelector
  2026. self.states["/Main/ModeSelector"] = State(2, self)
  2027. # state /Main/ModeSelector/Paused
  2028. self.states["/Main/ModeSelector/Paused"] = State(3, self)
  2029. # state /Main/ModeSelector/Running
  2030. self.states["/Main/ModeSelector/Running"] = State(4, self)
  2031. # state /Main/ModeSelector/Running/Continuous
  2032. self.states["/Main/ModeSelector/Running/Continuous"] = State(5, self)
  2033. # state /Main/ModeSelector/Running/SmallStep
  2034. self.states["/Main/ModeSelector/Running/SmallStep"] = State(6, self)
  2035. # state /Main/ChildState
  2036. self.states["/Main/ChildState"] = State(7, self)
  2037. # state /Main/ChildState/Uninitialized
  2038. self.states["/Main/ChildState/Uninitialized"] = State(8, self)
  2039. # state /Main/ChildState/Initialized
  2040. self.states["/Main/ChildState/Initialized"] = State(9, self)
  2041. # state /Main/Initializer
  2042. self.states["/Main/Initializer"] = State(10, self)
  2043. # state /Main/Initializer/Waiting
  2044. self.states["/Main/Initializer/Waiting"] = State(11, self)
  2045. # state /Main/Initializer/CreatingChildSimulator
  2046. self.states["/Main/Initializer/CreatingChildSimulator"] = State(12, self)
  2047. # state /Main/Initializer/StartingChildSimulator
  2048. self.states["/Main/Initializer/StartingChildSimulator"] = State(13, self)
  2049. # state /Main/Initializer/Running
  2050. self.states["/Main/Initializer/Running"] = State(14, self)
  2051. # state /Main/Initializer/SettleBeforeWaiting
  2052. self.states["/Main/Initializer/SettleBeforeWaiting"] = State(15, self)
  2053. self.states["/Main/Initializer/SettleBeforeWaiting"].setEnter(self._Main_Initializer_SettleBeforeWaiting_enter)
  2054. self.states["/Main/Initializer/SettleBeforeWaiting"].setExit(self._Main_Initializer_SettleBeforeWaiting_exit)
  2055. # state /Main/SimulationFlow
  2056. self.states["/Main/SimulationFlow"] = State(16, self)
  2057. # state /Main/SimulationFlow/Started
  2058. self.states["/Main/SimulationFlow/Started"] = State(17, self)
  2059. # state /Main/SimulationFlow/Initialized
  2060. self.states["/Main/SimulationFlow/Initialized"] = State(18, self)
  2061. # state /Main/SimulationFlow/InitializeDebugger
  2062. self.states["/Main/SimulationFlow/InitializeDebugger"] = State(19, self)
  2063. # state /Main/SimulationFlow/Waiting
  2064. self.states["/Main/SimulationFlow/Waiting"] = State(20, self)
  2065. # state /Main/SimulationFlow/SettleBeforeCheckTermination
  2066. self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"] = State(21, self)
  2067. self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"].setEnter(self._Main_SimulationFlow_SettleBeforeCheckTermination_enter)
  2068. self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"].setExit(self._Main_SimulationFlow_SettleBeforeCheckTermination_exit)
  2069. # state /Main/SimulationFlow/CheckTermination
  2070. self.states["/Main/SimulationFlow/CheckTermination"] = State(22, self)
  2071. # state /Main/SimulationFlow/Executing
  2072. self.states["/Main/SimulationFlow/Executing"] = State(23, self)
  2073. # state /Main/SimulationFlow/Stopped
  2074. self.states["/Main/SimulationFlow/Stopped"] = State(24, self)
  2075. # state /Stopped
  2076. self.states["/Stopped"] = State(25, self)
  2077. # add children
  2078. self.states[""].addChild(self.states["/Main"])
  2079. self.states[""].addChild(self.states["/Stopped"])
  2080. self.states["/Main"].addChild(self.states["/Main/ModeSelector"])
  2081. self.states["/Main"].addChild(self.states["/Main/ChildState"])
  2082. self.states["/Main"].addChild(self.states["/Main/Initializer"])
  2083. self.states["/Main"].addChild(self.states["/Main/SimulationFlow"])
  2084. self.states["/Main/ModeSelector"].addChild(self.states["/Main/ModeSelector/Paused"])
  2085. self.states["/Main/ModeSelector"].addChild(self.states["/Main/ModeSelector/Running"])
  2086. self.states["/Main/ModeSelector/Running"].addChild(self.states["/Main/ModeSelector/Running/Continuous"])
  2087. self.states["/Main/ModeSelector/Running"].addChild(self.states["/Main/ModeSelector/Running/SmallStep"])
  2088. self.states["/Main/ChildState"].addChild(self.states["/Main/ChildState/Uninitialized"])
  2089. self.states["/Main/ChildState"].addChild(self.states["/Main/ChildState/Initialized"])
  2090. self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/Waiting"])
  2091. self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/CreatingChildSimulator"])
  2092. self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/StartingChildSimulator"])
  2093. self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/Running"])
  2094. self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/SettleBeforeWaiting"])
  2095. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Started"])
  2096. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Initialized"])
  2097. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/InitializeDebugger"])
  2098. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Waiting"])
  2099. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"])
  2100. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/CheckTermination"])
  2101. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Executing"])
  2102. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Stopped"])
  2103. self.states[""].fixTree()
  2104. self.states[""].default_state = self.states["/Main"]
  2105. self.states["/Main/ModeSelector"].default_state = self.states["/Main/ModeSelector/Paused"]
  2106. self.states["/Main/ModeSelector/Running"].default_state = self.states["/Main/ModeSelector/Running/Continuous"]
  2107. self.states["/Main/ChildState"].default_state = self.states["/Main/ChildState/Uninitialized"]
  2108. self.states["/Main/Initializer"].default_state = self.states["/Main/Initializer/Waiting"]
  2109. self.states["/Main/SimulationFlow"].default_state = self.states["/Main/SimulationFlow/Started"]
  2110. # transition /Main/ModeSelector/Paused
  2111. _Main_ModeSelector_Paused_0 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Running/SmallStep"]])
  2112. _Main_ModeSelector_Paused_0.setAction(self._Main_ModeSelector_Paused_0_exec)
  2113. _Main_ModeSelector_Paused_0.setTrigger(Event("FSASmallStep.Execute", None))
  2114. self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_0)
  2115. _Main_ModeSelector_Paused_1 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Running/Continuous"]])
  2116. _Main_ModeSelector_Paused_1.setAction(self._Main_ModeSelector_Paused_1_exec)
  2117. _Main_ModeSelector_Paused_1.setTrigger(Event("FSABigStep.Execute", None))
  2118. self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_1)
  2119. # transition /Main/ModeSelector/Running/SmallStep
  2120. _Main_ModeSelector_Running_SmallStep_0 = Transition(self, self.states["/Main/ModeSelector/Running/SmallStep"], [self.states["/Main/ModeSelector/Paused"]])
  2121. _Main_ModeSelector_Running_SmallStep_0.setAction(self._Main_ModeSelector_Running_SmallStep_0_exec)
  2122. _Main_ModeSelector_Running_SmallStep_0.setTrigger(Event("FSASmallStep.Finished", None))
  2123. self.states["/Main/ModeSelector/Running/SmallStep"].addTransition(_Main_ModeSelector_Running_SmallStep_0)
  2124. # transition /Main/ChildState/Uninitialized
  2125. _Main_ChildState_Uninitialized_0 = Transition(self, self.states["/Main/ChildState/Uninitialized"], [self.states["/Main/ChildState/Initialized"]])
  2126. _Main_ChildState_Uninitialized_0.setTrigger(Event("FSASmallStep.Initialized", None))
  2127. self.states["/Main/ChildState/Uninitialized"].addTransition(_Main_ChildState_Uninitialized_0)
  2128. # transition /Main/ChildState/Initialized
  2129. _Main_ChildState_Initialized_0 = Transition(self, self.states["/Main/ChildState/Initialized"], [self.states["/Main/ChildState/Uninitialized"]])
  2130. _Main_ChildState_Initialized_0.setAction(self._Main_ChildState_Initialized_0_exec)
  2131. _Main_ChildState_Initialized_0.setTrigger(Event("FSASmallStep.Finished", None))
  2132. self.states["/Main/ChildState/Initialized"].addTransition(_Main_ChildState_Initialized_0)
  2133. # transition /Main/Initializer/Waiting
  2134. _Main_Initializer_Waiting_0 = Transition(self, self.states["/Main/Initializer/Waiting"], [self.states["/Main/Initializer/CreatingChildSimulator"]])
  2135. _Main_Initializer_Waiting_0.setAction(self._Main_Initializer_Waiting_0_exec)
  2136. _Main_Initializer_Waiting_0.setTrigger(None)
  2137. _Main_Initializer_Waiting_0.setGuard(self._Main_Initializer_Waiting_0_guard)
  2138. self.states["/Main/Initializer/Waiting"].addTransition(_Main_Initializer_Waiting_0)
  2139. # transition /Main/Initializer/CreatingChildSimulator
  2140. _Main_Initializer_CreatingChildSimulator_0 = Transition(self, self.states["/Main/Initializer/CreatingChildSimulator"], [self.states["/Main/Initializer/StartingChildSimulator"]])
  2141. _Main_Initializer_CreatingChildSimulator_0.setAction(self._Main_Initializer_CreatingChildSimulator_0_exec)
  2142. _Main_Initializer_CreatingChildSimulator_0.setTrigger(Event("instance_created", None))
  2143. self.states["/Main/Initializer/CreatingChildSimulator"].addTransition(_Main_Initializer_CreatingChildSimulator_0)
  2144. # transition /Main/Initializer/StartingChildSimulator
  2145. _Main_Initializer_StartingChildSimulator_0 = Transition(self, self.states["/Main/Initializer/StartingChildSimulator"], [self.states["/Main/Initializer/Running"]])
  2146. _Main_Initializer_StartingChildSimulator_0.setTrigger(Event("FSASmallStep.Initialized", None))
  2147. self.states["/Main/Initializer/StartingChildSimulator"].addTransition(_Main_Initializer_StartingChildSimulator_0)
  2148. # transition /Main/Initializer/Running
  2149. _Main_Initializer_Running_0 = Transition(self, self.states["/Main/Initializer/Running"], [self.states["/Main/Initializer/SettleBeforeWaiting"]])
  2150. _Main_Initializer_Running_0.setTrigger(Event("FSASmallStep.Finished", None))
  2151. self.states["/Main/Initializer/Running"].addTransition(_Main_Initializer_Running_0)
  2152. # transition /Main/Initializer/SettleBeforeWaiting
  2153. _Main_Initializer_SettleBeforeWaiting_0 = Transition(self, self.states["/Main/Initializer/SettleBeforeWaiting"], [self.states["/Main/Initializer/Waiting"]])
  2154. _Main_Initializer_SettleBeforeWaiting_0.setTrigger(Event("_0after"))
  2155. self.states["/Main/Initializer/SettleBeforeWaiting"].addTransition(_Main_Initializer_SettleBeforeWaiting_0)
  2156. # transition /Main/SimulationFlow/Started
  2157. _Main_SimulationFlow_Started_0 = Transition(self, self.states["/Main/SimulationFlow/Started"], [self.states["/Main/SimulationFlow/Initialized"]])
  2158. _Main_SimulationFlow_Started_0.setAction(self._Main_SimulationFlow_Started_0_exec)
  2159. _Main_SimulationFlow_Started_0.setTrigger(None)
  2160. self.states["/Main/SimulationFlow/Started"].addTransition(_Main_SimulationFlow_Started_0)
  2161. # transition /Main/SimulationFlow/Initialized
  2162. _Main_SimulationFlow_Initialized_0 = Transition(self, self.states["/Main/SimulationFlow/Initialized"], [self.states["/Main/SimulationFlow/InitializeDebugger"]])
  2163. _Main_SimulationFlow_Initialized_0.setTrigger(None)
  2164. self.states["/Main/SimulationFlow/Initialized"].addTransition(_Main_SimulationFlow_Initialized_0)
  2165. # transition /Main/SimulationFlow/InitializeDebugger
  2166. _Main_SimulationFlow_InitializeDebugger_0 = Transition(self, self.states["/Main/SimulationFlow/InitializeDebugger"], [self.states["/Main/SimulationFlow/Waiting"]])
  2167. _Main_SimulationFlow_InitializeDebugger_0.setAction(self._Main_SimulationFlow_InitializeDebugger_0_exec)
  2168. _Main_SimulationFlow_InitializeDebugger_0.setTrigger(None)
  2169. self.states["/Main/SimulationFlow/InitializeDebugger"].addTransition(_Main_SimulationFlow_InitializeDebugger_0)
  2170. # transition /Main/SimulationFlow/Waiting
  2171. _Main_SimulationFlow_Waiting_0 = Transition(self, self.states["/Main/SimulationFlow/Waiting"], [self.states["/Main/SimulationFlow/CheckTermination"]])
  2172. _Main_SimulationFlow_Waiting_0.setTrigger(None)
  2173. _Main_SimulationFlow_Waiting_0.setGuard(self._Main_SimulationFlow_Waiting_0_guard)
  2174. self.states["/Main/SimulationFlow/Waiting"].addTransition(_Main_SimulationFlow_Waiting_0)
  2175. # transition /Main/SimulationFlow/SettleBeforeCheckTermination
  2176. _Main_SimulationFlow_SettleBeforeCheckTermination_0 = Transition(self, self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"], [self.states["/Main/SimulationFlow/CheckTermination"]])
  2177. _Main_SimulationFlow_SettleBeforeCheckTermination_0.setTrigger(Event("_1after"))
  2178. self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"].addTransition(_Main_SimulationFlow_SettleBeforeCheckTermination_0)
  2179. # transition /Main/SimulationFlow/CheckTermination
  2180. _Main_SimulationFlow_CheckTermination_0 = Transition(self, self.states["/Main/SimulationFlow/CheckTermination"], [self.states["/Main/SimulationFlow/Executing"]])
  2181. _Main_SimulationFlow_CheckTermination_0.setAction(self._Main_SimulationFlow_CheckTermination_0_exec)
  2182. _Main_SimulationFlow_CheckTermination_0.setTrigger(None)
  2183. _Main_SimulationFlow_CheckTermination_0.setGuard(self._Main_SimulationFlow_CheckTermination_0_guard)
  2184. self.states["/Main/SimulationFlow/CheckTermination"].addTransition(_Main_SimulationFlow_CheckTermination_0)
  2185. _Main_SimulationFlow_CheckTermination_1 = Transition(self, self.states["/Main/SimulationFlow/CheckTermination"], [self.states["/Main/SimulationFlow/Stopped"]])
  2186. _Main_SimulationFlow_CheckTermination_1.setAction(self._Main_SimulationFlow_CheckTermination_1_exec)
  2187. _Main_SimulationFlow_CheckTermination_1.setTrigger(None)
  2188. _Main_SimulationFlow_CheckTermination_1.setGuard(self._Main_SimulationFlow_CheckTermination_1_guard)
  2189. self.states["/Main/SimulationFlow/CheckTermination"].addTransition(_Main_SimulationFlow_CheckTermination_1)
  2190. # transition /Main/SimulationFlow/Executing
  2191. _Main_SimulationFlow_Executing_0 = Transition(self, self.states["/Main/SimulationFlow/Executing"], [self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"]])
  2192. _Main_SimulationFlow_Executing_0.setAction(self._Main_SimulationFlow_Executing_0_exec)
  2193. _Main_SimulationFlow_Executing_0.setTrigger(Event("FSASmallStep.Finished", None))
  2194. self.states["/Main/SimulationFlow/Executing"].addTransition(_Main_SimulationFlow_Executing_0)
  2195. # transition /Main/ModeSelector/Running
  2196. _Main_ModeSelector_Running_0 = Transition(self, self.states["/Main/ModeSelector/Running"], [self.states["/Main/ModeSelector/Paused"]])
  2197. _Main_ModeSelector_Running_0.setTrigger(Event("FSABigStep.Finished", None))
  2198. self.states["/Main/ModeSelector/Running"].addTransition(_Main_ModeSelector_Running_0)
  2199. def _Main_Initializer_SettleBeforeWaiting_enter(self):
  2200. self.addTimer(0, self.sccd_yield())
  2201. def _Main_Initializer_SettleBeforeWaiting_exit(self):
  2202. self.removeTimer(0)
  2203. def _Main_SimulationFlow_SettleBeforeCheckTermination_enter(self):
  2204. self.addTimer(1, self.sccd_yield())
  2205. def _Main_SimulationFlow_SettleBeforeCheckTermination_exit(self):
  2206. self.removeTimer(1)
  2207. def _Main_ModeSelector_Paused_0_exec(self, parameters):
  2208. selected_transition = parameters[0]
  2209. if selected_transition != None:
  2210. self.selected_transition = selected_transition
  2211. def _Main_ModeSelector_Paused_1_exec(self, parameters):
  2212. selected_transition = parameters[0]
  2213. if selected_transition != None:
  2214. self.selected_transition = selected_transition
  2215. def _Main_ModeSelector_Running_SmallStep_0_exec(self, parameters):
  2216. clock = parameters[0]
  2217. state = parameters[1]
  2218. elapsed = parameters[2]
  2219. event_list = parameters[3]
  2220. current_event = parameters[4]
  2221. executed_transition = parameters[5]
  2222. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("FSASmallStep.Finished", None, [clock, state, elapsed, event_list, current_event, executed_transition])]))
  2223. def _Main_ChildState_Initialized_0_exec(self, parameters):
  2224. self.big_step.outputEventOM(Event("delete_instance", None, [self, 'child_simulator']))
  2225. def _Main_Initializer_Waiting_0_exec(self, parameters):
  2226. self.big_step.outputEventOM(Event("create_instance", None, [self, 'child_simulator', 'FSASimulator_SmallStep', self.model, self.state, self.clock, self.elapsed, self.selected_transition, self.current_event, self.event_list]))
  2227. def _Main_Initializer_Waiting_0_guard(self, parameters):
  2228. return self.inState(["/Main/ModeSelector/Running"]) and self.inState(["/Main/ChildState/Uninitialized"]) and not self.endCondition()
  2229. def _Main_Initializer_CreatingChildSimulator_0_exec(self, parameters):
  2230. self.big_step.outputEventOM(Event("start_instance", None, [self, 'child_simulator']))
  2231. def _Main_SimulationFlow_Started_0_exec(self, parameters):
  2232. self.initialize()
  2233. def _Main_SimulationFlow_InitializeDebugger_0_exec(self, parameters):
  2234. self.initializeDebugger()
  2235. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("FSABigStep.Initialized", None, [])]))
  2236. def _Main_SimulationFlow_Waiting_0_guard(self, parameters):
  2237. return self.inState(["/Main/ModeSelector/Running"])
  2238. def _Main_SimulationFlow_CheckTermination_0_exec(self, parameters):
  2239. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("FSASmallStep.Execute", None, [])]))
  2240. def _Main_SimulationFlow_CheckTermination_0_guard(self, parameters):
  2241. return (self.inState(["/Main/ModeSelector/Running/Continuous"]) or self.inState(["/Main/ModeSelector/Running/SmallStep"])) and self.inState(["/Main/ChildState/Initialized"]) and not self.endCondition()
  2242. def _Main_SimulationFlow_CheckTermination_1_exec(self, parameters):
  2243. # print '>>> (FSA) big step executed <<<'
  2244. self.finalize()
  2245. self.raiseInternalEvent(Event("FSABigStep.Finished", None, []))
  2246. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("FSABigStep.Finished", None, [self.clock, self.state, self.elapsed, self.time_next, self.event_list, self.executed_transition])]))
  2247. def _Main_SimulationFlow_CheckTermination_1_guard(self, parameters):
  2248. return self.endCondition()
  2249. def _Main_SimulationFlow_Executing_0_exec(self, parameters):
  2250. clock = parameters[0]
  2251. state = parameters[1]
  2252. elapsed = parameters[2]
  2253. event_list = parameters[3]
  2254. current_event = parameters[4]
  2255. executed_transition = parameters[5]
  2256. self.small_step_executed = True
  2257. self.state = state
  2258. self.elapsed = elapsed
  2259. self.event_list = event_list
  2260. self.current_event = current_event
  2261. self.current_event = self.getInputEventAt(self.clock / 1000.0)
  2262. self.selected_transition = self.model.getTransitionFrom(self.state, self.current_event, self.elapsed / 1000.0)
  2263. def initializeStatechart(self):
  2264. # enter default state
  2265. self.default_targets = self.states["/Main"].getEffectiveTargetStates()
  2266. RuntimeClassBase.initializeStatechart(self)
  2267. class FSASimulator_SmallStep(RuntimeClassBase):
  2268. def __init__(self, controller, model, state, clock, elapsed, selected_transition, current_event, event_list):
  2269. RuntimeClassBase.__init__(self, controller)
  2270. self.semantics.big_step_maximality = StatechartSemantics.TakeMany
  2271. self.semantics.internal_event_lifeline = StatechartSemantics.Queue
  2272. self.semantics.input_event_lifeline = StatechartSemantics.FirstComboStep
  2273. self.semantics.priority = StatechartSemantics.SourceParent
  2274. self.semantics.concurrency = StatechartSemantics.Single
  2275. # build Statechart structure
  2276. self.build_statechart_structure()
  2277. # call user defined constructor
  2278. FSASimulator_SmallStep.user_defined_constructor(self, model, state, clock, elapsed, selected_transition, current_event, event_list)
  2279. def user_defined_constructor(self, model, state, clock, elapsed, selected_transition, current_event, event_list):
  2280. self.model = model
  2281. self.state = state
  2282. self.clock = clock
  2283. self.elapsed = elapsed
  2284. self.selected_transition = selected_transition
  2285. self.current_event = current_event
  2286. self.event_list = event_list
  2287. def user_defined_destructor(self):
  2288. pass
  2289. # user defined method
  2290. def initialize(self):
  2291. self.transition_taken = False
  2292. # user defined method
  2293. def initializeDebugger(self):
  2294. pass
  2295. # user defined method
  2296. def endCondition(self):
  2297. ''' In case nothing is to be done, we immediately end. '''
  2298. return (not self.selected_transition) or self.transition_taken
  2299. # user defined method
  2300. def finalize(self):
  2301. if self.transition_taken:
  2302. self.elapsed = 0
  2303. self.processEvent(self.current_event)
  2304. # user defined method
  2305. def processEvent(self, event):
  2306. if (event != None):
  2307. self.event_list.popEvent(event)
  2308. event.processed = True
  2309. # user defined method
  2310. def getInputEventAt(self, time):
  2311. return self.event_list.getInputAt(time)
  2312. # builds Statechart structure
  2313. def build_statechart_structure(self):
  2314. # state <root>
  2315. self.states[""] = State(0, self)
  2316. # state /Main
  2317. self.states["/Main"] = ParallelState(1, self)
  2318. # state /Main/ModeSelector
  2319. self.states["/Main/ModeSelector"] = State(2, self)
  2320. # state /Main/ModeSelector/Paused
  2321. self.states["/Main/ModeSelector/Paused"] = State(3, self)
  2322. # state /Main/ModeSelector/Running
  2323. self.states["/Main/ModeSelector/Running"] = State(4, self)
  2324. # state /Main/ModeSelector/Running/Continuous
  2325. self.states["/Main/ModeSelector/Running/Continuous"] = State(5, self)
  2326. # state /Main/ChildState
  2327. self.states["/Main/ChildState"] = State(6, self)
  2328. # state /Main/ChildState/Uninitialized
  2329. self.states["/Main/ChildState/Uninitialized"] = State(7, self)
  2330. # state /Main/ChildState/Initialized
  2331. self.states["/Main/ChildState/Initialized"] = State(8, self)
  2332. # state /Main/Initializer
  2333. self.states["/Main/Initializer"] = State(9, self)
  2334. # state /Main/Initializer/Waiting
  2335. self.states["/Main/Initializer/Waiting"] = State(10, self)
  2336. # state /Main/Initializer/CreatingChildSimulator
  2337. self.states["/Main/Initializer/CreatingChildSimulator"] = State(11, self)
  2338. # state /Main/Initializer/StartingChildSimulator
  2339. self.states["/Main/Initializer/StartingChildSimulator"] = State(12, self)
  2340. # state /Main/Initializer/Running
  2341. self.states["/Main/Initializer/Running"] = State(13, self)
  2342. # state /Main/Initializer/SettleBeforeWaiting
  2343. self.states["/Main/Initializer/SettleBeforeWaiting"] = State(14, self)
  2344. self.states["/Main/Initializer/SettleBeforeWaiting"].setEnter(self._Main_Initializer_SettleBeforeWaiting_enter)
  2345. self.states["/Main/Initializer/SettleBeforeWaiting"].setExit(self._Main_Initializer_SettleBeforeWaiting_exit)
  2346. # state /Main/SimulationFlow
  2347. self.states["/Main/SimulationFlow"] = State(15, self)
  2348. # state /Main/SimulationFlow/Started
  2349. self.states["/Main/SimulationFlow/Started"] = State(16, self)
  2350. # state /Main/SimulationFlow/Initialized
  2351. self.states["/Main/SimulationFlow/Initialized"] = State(17, self)
  2352. # state /Main/SimulationFlow/InitializeDebugger
  2353. self.states["/Main/SimulationFlow/InitializeDebugger"] = State(18, self)
  2354. # state /Main/SimulationFlow/DebuggerInitialized
  2355. self.states["/Main/SimulationFlow/DebuggerInitialized"] = State(19, self)
  2356. # state /Main/SimulationFlow/Waiting
  2357. self.states["/Main/SimulationFlow/Waiting"] = State(20, self)
  2358. # state /Main/SimulationFlow/SettleBeforeCheckTermination
  2359. self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"] = State(21, self)
  2360. self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"].setEnter(self._Main_SimulationFlow_SettleBeforeCheckTermination_enter)
  2361. self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"].setExit(self._Main_SimulationFlow_SettleBeforeCheckTermination_exit)
  2362. # state /Main/SimulationFlow/CheckTermination
  2363. self.states["/Main/SimulationFlow/CheckTermination"] = State(22, self)
  2364. # state /Main/SimulationFlow/Executing
  2365. self.states["/Main/SimulationFlow/Executing"] = State(23, self)
  2366. # state /Main/SimulationFlow/Stopped
  2367. self.states["/Main/SimulationFlow/Stopped"] = State(24, self)
  2368. # state /Stopped
  2369. self.states["/Stopped"] = State(25, self)
  2370. # add children
  2371. self.states[""].addChild(self.states["/Main"])
  2372. self.states[""].addChild(self.states["/Stopped"])
  2373. self.states["/Main"].addChild(self.states["/Main/ModeSelector"])
  2374. self.states["/Main"].addChild(self.states["/Main/ChildState"])
  2375. self.states["/Main"].addChild(self.states["/Main/Initializer"])
  2376. self.states["/Main"].addChild(self.states["/Main/SimulationFlow"])
  2377. self.states["/Main/ModeSelector"].addChild(self.states["/Main/ModeSelector/Paused"])
  2378. self.states["/Main/ModeSelector"].addChild(self.states["/Main/ModeSelector/Running"])
  2379. self.states["/Main/ModeSelector/Running"].addChild(self.states["/Main/ModeSelector/Running/Continuous"])
  2380. self.states["/Main/ChildState"].addChild(self.states["/Main/ChildState/Uninitialized"])
  2381. self.states["/Main/ChildState"].addChild(self.states["/Main/ChildState/Initialized"])
  2382. self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/Waiting"])
  2383. self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/CreatingChildSimulator"])
  2384. self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/StartingChildSimulator"])
  2385. self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/Running"])
  2386. self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/SettleBeforeWaiting"])
  2387. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Started"])
  2388. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Initialized"])
  2389. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/InitializeDebugger"])
  2390. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/DebuggerInitialized"])
  2391. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Waiting"])
  2392. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"])
  2393. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/CheckTermination"])
  2394. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Executing"])
  2395. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Stopped"])
  2396. self.states[""].fixTree()
  2397. self.states[""].default_state = self.states["/Main"]
  2398. self.states["/Main/ModeSelector"].default_state = self.states["/Main/ModeSelector/Paused"]
  2399. self.states["/Main/ModeSelector/Running"].default_state = self.states["/Main/ModeSelector/Running/Continuous"]
  2400. self.states["/Main/ChildState"].default_state = self.states["/Main/ChildState/Uninitialized"]
  2401. self.states["/Main/Initializer"].default_state = self.states["/Main/Initializer/Waiting"]
  2402. self.states["/Main/SimulationFlow"].default_state = self.states["/Main/SimulationFlow/Started"]
  2403. # transition /Main/ModeSelector/Paused
  2404. _Main_ModeSelector_Paused_0 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Running/Continuous"]])
  2405. _Main_ModeSelector_Paused_0.setTrigger(Event("FSASmallStep.Execute", None))
  2406. self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_0)
  2407. # transition /Main/ChildState/Uninitialized
  2408. _Main_ChildState_Uninitialized_0 = Transition(self, self.states["/Main/ChildState/Uninitialized"], [self.states["/Main/ChildState/Initialized"]])
  2409. _Main_ChildState_Uninitialized_0.setTrigger(Event("FSATransition.Initialized", None))
  2410. self.states["/Main/ChildState/Uninitialized"].addTransition(_Main_ChildState_Uninitialized_0)
  2411. # transition /Main/ChildState/Initialized
  2412. _Main_ChildState_Initialized_0 = Transition(self, self.states["/Main/ChildState/Initialized"], [self.states["/Main/ChildState/Uninitialized"]])
  2413. _Main_ChildState_Initialized_0.setAction(self._Main_ChildState_Initialized_0_exec)
  2414. _Main_ChildState_Initialized_0.setTrigger(Event("FSATransition.Finished", None))
  2415. self.states["/Main/ChildState/Initialized"].addTransition(_Main_ChildState_Initialized_0)
  2416. # transition /Main/Initializer/Waiting
  2417. _Main_Initializer_Waiting_0 = Transition(self, self.states["/Main/Initializer/Waiting"], [self.states["/Main/Initializer/CreatingChildSimulator"]])
  2418. _Main_Initializer_Waiting_0.setAction(self._Main_Initializer_Waiting_0_exec)
  2419. _Main_Initializer_Waiting_0.setTrigger(None)
  2420. _Main_Initializer_Waiting_0.setGuard(self._Main_Initializer_Waiting_0_guard)
  2421. self.states["/Main/Initializer/Waiting"].addTransition(_Main_Initializer_Waiting_0)
  2422. # transition /Main/Initializer/CreatingChildSimulator
  2423. _Main_Initializer_CreatingChildSimulator_0 = Transition(self, self.states["/Main/Initializer/CreatingChildSimulator"], [self.states["/Main/Initializer/StartingChildSimulator"]])
  2424. _Main_Initializer_CreatingChildSimulator_0.setAction(self._Main_Initializer_CreatingChildSimulator_0_exec)
  2425. _Main_Initializer_CreatingChildSimulator_0.setTrigger(Event("instance_created", None))
  2426. self.states["/Main/Initializer/CreatingChildSimulator"].addTransition(_Main_Initializer_CreatingChildSimulator_0)
  2427. # transition /Main/Initializer/StartingChildSimulator
  2428. _Main_Initializer_StartingChildSimulator_0 = Transition(self, self.states["/Main/Initializer/StartingChildSimulator"], [self.states["/Main/Initializer/Running"]])
  2429. _Main_Initializer_StartingChildSimulator_0.setTrigger(Event("FSATransition.Initialized", None))
  2430. self.states["/Main/Initializer/StartingChildSimulator"].addTransition(_Main_Initializer_StartingChildSimulator_0)
  2431. # transition /Main/Initializer/Running
  2432. _Main_Initializer_Running_0 = Transition(self, self.states["/Main/Initializer/Running"], [self.states["/Main/Initializer/SettleBeforeWaiting"]])
  2433. _Main_Initializer_Running_0.setTrigger(Event("FSATransition.Finished", None))
  2434. self.states["/Main/Initializer/Running"].addTransition(_Main_Initializer_Running_0)
  2435. # transition /Main/Initializer/SettleBeforeWaiting
  2436. _Main_Initializer_SettleBeforeWaiting_0 = Transition(self, self.states["/Main/Initializer/SettleBeforeWaiting"], [self.states["/Main/Initializer/Waiting"]])
  2437. _Main_Initializer_SettleBeforeWaiting_0.setTrigger(Event("_0after"))
  2438. self.states["/Main/Initializer/SettleBeforeWaiting"].addTransition(_Main_Initializer_SettleBeforeWaiting_0)
  2439. # transition /Main/SimulationFlow/Started
  2440. _Main_SimulationFlow_Started_0 = Transition(self, self.states["/Main/SimulationFlow/Started"], [self.states["/Main/SimulationFlow/Initialized"]])
  2441. _Main_SimulationFlow_Started_0.setAction(self._Main_SimulationFlow_Started_0_exec)
  2442. _Main_SimulationFlow_Started_0.setTrigger(None)
  2443. self.states["/Main/SimulationFlow/Started"].addTransition(_Main_SimulationFlow_Started_0)
  2444. # transition /Main/SimulationFlow/Initialized
  2445. _Main_SimulationFlow_Initialized_0 = Transition(self, self.states["/Main/SimulationFlow/Initialized"], [self.states["/Main/SimulationFlow/InitializeDebugger"]])
  2446. _Main_SimulationFlow_Initialized_0.setTrigger(None)
  2447. self.states["/Main/SimulationFlow/Initialized"].addTransition(_Main_SimulationFlow_Initialized_0)
  2448. # transition /Main/SimulationFlow/InitializeDebugger
  2449. _Main_SimulationFlow_InitializeDebugger_0 = Transition(self, self.states["/Main/SimulationFlow/InitializeDebugger"], [self.states["/Main/SimulationFlow/DebuggerInitialized"]])
  2450. _Main_SimulationFlow_InitializeDebugger_0.setAction(self._Main_SimulationFlow_InitializeDebugger_0_exec)
  2451. _Main_SimulationFlow_InitializeDebugger_0.setTrigger(None)
  2452. self.states["/Main/SimulationFlow/InitializeDebugger"].addTransition(_Main_SimulationFlow_InitializeDebugger_0)
  2453. # transition /Main/SimulationFlow/DebuggerInitialized
  2454. _Main_SimulationFlow_DebuggerInitialized_0 = Transition(self, self.states["/Main/SimulationFlow/DebuggerInitialized"], [self.states["/Main/SimulationFlow/Waiting"]])
  2455. _Main_SimulationFlow_DebuggerInitialized_0.setAction(self._Main_SimulationFlow_DebuggerInitialized_0_exec)
  2456. _Main_SimulationFlow_DebuggerInitialized_0.setTrigger(None)
  2457. self.states["/Main/SimulationFlow/DebuggerInitialized"].addTransition(_Main_SimulationFlow_DebuggerInitialized_0)
  2458. # transition /Main/SimulationFlow/Waiting
  2459. _Main_SimulationFlow_Waiting_0 = Transition(self, self.states["/Main/SimulationFlow/Waiting"], [self.states["/Main/SimulationFlow/CheckTermination"]])
  2460. _Main_SimulationFlow_Waiting_0.setTrigger(None)
  2461. _Main_SimulationFlow_Waiting_0.setGuard(self._Main_SimulationFlow_Waiting_0_guard)
  2462. self.states["/Main/SimulationFlow/Waiting"].addTransition(_Main_SimulationFlow_Waiting_0)
  2463. # transition /Main/SimulationFlow/SettleBeforeCheckTermination
  2464. _Main_SimulationFlow_SettleBeforeCheckTermination_0 = Transition(self, self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"], [self.states["/Main/SimulationFlow/CheckTermination"]])
  2465. _Main_SimulationFlow_SettleBeforeCheckTermination_0.setTrigger(Event("_1after"))
  2466. self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"].addTransition(_Main_SimulationFlow_SettleBeforeCheckTermination_0)
  2467. # transition /Main/SimulationFlow/CheckTermination
  2468. _Main_SimulationFlow_CheckTermination_0 = Transition(self, self.states["/Main/SimulationFlow/CheckTermination"], [self.states["/Main/SimulationFlow/Executing"]])
  2469. _Main_SimulationFlow_CheckTermination_0.setAction(self._Main_SimulationFlow_CheckTermination_0_exec)
  2470. _Main_SimulationFlow_CheckTermination_0.setTrigger(None)
  2471. _Main_SimulationFlow_CheckTermination_0.setGuard(self._Main_SimulationFlow_CheckTermination_0_guard)
  2472. self.states["/Main/SimulationFlow/CheckTermination"].addTransition(_Main_SimulationFlow_CheckTermination_0)
  2473. _Main_SimulationFlow_CheckTermination_1 = Transition(self, self.states["/Main/SimulationFlow/CheckTermination"], [self.states["/Main/SimulationFlow/Stopped"]])
  2474. _Main_SimulationFlow_CheckTermination_1.setAction(self._Main_SimulationFlow_CheckTermination_1_exec)
  2475. _Main_SimulationFlow_CheckTermination_1.setTrigger(None)
  2476. _Main_SimulationFlow_CheckTermination_1.setGuard(self._Main_SimulationFlow_CheckTermination_1_guard)
  2477. self.states["/Main/SimulationFlow/CheckTermination"].addTransition(_Main_SimulationFlow_CheckTermination_1)
  2478. # transition /Main/SimulationFlow/Executing
  2479. _Main_SimulationFlow_Executing_0 = Transition(self, self.states["/Main/SimulationFlow/Executing"], [self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"]])
  2480. _Main_SimulationFlow_Executing_0.setAction(self._Main_SimulationFlow_Executing_0_exec)
  2481. _Main_SimulationFlow_Executing_0.setTrigger(Event("FSATransition.Finished", None))
  2482. self.states["/Main/SimulationFlow/Executing"].addTransition(_Main_SimulationFlow_Executing_0)
  2483. # transition /Main/ModeSelector/Running
  2484. _Main_ModeSelector_Running_0 = Transition(self, self.states["/Main/ModeSelector/Running"], [self.states["/Main/ModeSelector/Paused"]])
  2485. _Main_ModeSelector_Running_0.setTrigger(Event("FSASmallStep.Finished", None))
  2486. self.states["/Main/ModeSelector/Running"].addTransition(_Main_ModeSelector_Running_0)
  2487. def _Main_Initializer_SettleBeforeWaiting_enter(self):
  2488. self.addTimer(0, self.sccd_yield())
  2489. def _Main_Initializer_SettleBeforeWaiting_exit(self):
  2490. self.removeTimer(0)
  2491. def _Main_SimulationFlow_SettleBeforeCheckTermination_enter(self):
  2492. self.addTimer(1, self.sccd_yield())
  2493. def _Main_SimulationFlow_SettleBeforeCheckTermination_exit(self):
  2494. self.removeTimer(1)
  2495. def _Main_ChildState_Initialized_0_exec(self, parameters):
  2496. self.big_step.outputEventOM(Event("delete_instance", None, [self, 'child_simulator']))
  2497. def _Main_Initializer_Waiting_0_exec(self, parameters):
  2498. self.big_step.outputEventOM(Event("create_instance", None, [self, 'child_simulator', 'FSASimulator_Transition', self.selected_transition]))
  2499. def _Main_Initializer_Waiting_0_guard(self, parameters):
  2500. return self.inState(["/Main/ModeSelector/Running"]) and self.inState(["/Main/ChildState/Uninitialized"]) and not self.endCondition()
  2501. def _Main_Initializer_CreatingChildSimulator_0_exec(self, parameters):
  2502. self.big_step.outputEventOM(Event("start_instance", None, [self, 'child_simulator']))
  2503. def _Main_SimulationFlow_Started_0_exec(self, parameters):
  2504. self.initialize()
  2505. def _Main_SimulationFlow_InitializeDebugger_0_exec(self, parameters):
  2506. self.initializeDebugger()
  2507. def _Main_SimulationFlow_DebuggerInitialized_0_exec(self, parameters):
  2508. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("FSASmallStep.Initialized", None, [])]))
  2509. def _Main_SimulationFlow_Waiting_0_guard(self, parameters):
  2510. return self.inState(["/Main/ModeSelector/Running"])
  2511. def _Main_SimulationFlow_CheckTermination_0_exec(self, parameters):
  2512. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("FSATransition.Execute", None, [])]))
  2513. def _Main_SimulationFlow_CheckTermination_0_guard(self, parameters):
  2514. return self.inState(["/Main/ModeSelector/Running/Continuous"]) and self.inState(["/Main/ChildState/Initialized"]) and not self.endCondition()
  2515. def _Main_SimulationFlow_CheckTermination_1_exec(self, parameters):
  2516. # print '>>> (FSA) small step executed <<<'
  2517. self.finalize()
  2518. self.raiseInternalEvent(Event("FSASmallStep.Finished", None, []))
  2519. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("FSASmallStep.Finished", None, [self.clock, self.state, self.elapsed, self.event_list, self.current_event, self.selected_transition])]))
  2520. def _Main_SimulationFlow_CheckTermination_1_guard(self, parameters):
  2521. return self.endCondition()
  2522. def _Main_SimulationFlow_Executing_0_exec(self, parameters):
  2523. new_state = parameters[0]
  2524. self.transition_taken = True
  2525. self.state = new_state
  2526. def initializeStatechart(self):
  2527. # enter default state
  2528. self.default_targets = self.states["/Main"].getEffectiveTargetStates()
  2529. RuntimeClassBase.initializeStatechart(self)
  2530. class FSASimulator_Transition(RuntimeClassBase):
  2531. def __init__(self, controller, selectedTransition):
  2532. RuntimeClassBase.__init__(self, controller)
  2533. self.semantics.big_step_maximality = StatechartSemantics.TakeMany
  2534. self.semantics.internal_event_lifeline = StatechartSemantics.Queue
  2535. self.semantics.input_event_lifeline = StatechartSemantics.FirstComboStep
  2536. self.semantics.priority = StatechartSemantics.SourceParent
  2537. self.semantics.concurrency = StatechartSemantics.Single
  2538. # build Statechart structure
  2539. self.build_statechart_structure()
  2540. # call user defined constructor
  2541. FSASimulator_Transition.user_defined_constructor(self, selectedTransition)
  2542. def user_defined_constructor(self, selectedTransition):
  2543. self.selectedTransition = selectedTransition
  2544. def user_defined_destructor(self):
  2545. pass
  2546. # user defined method
  2547. def executeTransition(self):
  2548. self.newState = self.selectedTransition.target
  2549. # builds Statechart structure
  2550. def build_statechart_structure(self):
  2551. # state <root>
  2552. self.states[""] = State(0, self)
  2553. # state /Started
  2554. self.states["/Started"] = State(1, self)
  2555. # state /Waiting
  2556. self.states["/Waiting"] = State(2, self)
  2557. # state /Stopped
  2558. self.states["/Stopped"] = State(3, self)
  2559. # add children
  2560. self.states[""].addChild(self.states["/Started"])
  2561. self.states[""].addChild(self.states["/Waiting"])
  2562. self.states[""].addChild(self.states["/Stopped"])
  2563. self.states[""].fixTree()
  2564. self.states[""].default_state = self.states["/Started"]
  2565. # transition /Started
  2566. _Started_0 = Transition(self, self.states["/Started"], [self.states["/Waiting"]])
  2567. _Started_0.setAction(self._Started_0_exec)
  2568. _Started_0.setTrigger(None)
  2569. self.states["/Started"].addTransition(_Started_0)
  2570. # transition /Waiting
  2571. _Waiting_0 = Transition(self, self.states["/Waiting"], [self.states["/Stopped"]])
  2572. _Waiting_0.setAction(self._Waiting_0_exec)
  2573. _Waiting_0.setTrigger(Event("FSATransition.Execute", None))
  2574. self.states["/Waiting"].addTransition(_Waiting_0)
  2575. def _Started_0_exec(self, parameters):
  2576. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("FSATransition.Initialized", None, [])]))
  2577. def _Waiting_0_exec(self, parameters):
  2578. self.executeTransition()
  2579. # print '>>> (FSA) transition executed <<< %s' % self.newState
  2580. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("FSATransition.Finished", None, [self.newState])]))
  2581. def initializeStatechart(self):
  2582. # enter default state
  2583. self.default_targets = self.states["/Started"].getEffectiveTargetStates()
  2584. RuntimeClassBase.initializeStatechart(self)
  2585. class CBDSimulator_Simulation(RuntimeClassBase):
  2586. def __init__(self, controller, options, model, delta):
  2587. RuntimeClassBase.__init__(self, controller)
  2588. self.semantics.big_step_maximality = StatechartSemantics.TakeMany
  2589. self.semantics.internal_event_lifeline = StatechartSemantics.Queue
  2590. self.semantics.input_event_lifeline = StatechartSemantics.FirstComboStep
  2591. self.semantics.priority = StatechartSemantics.SourceParent
  2592. self.semantics.concurrency = StatechartSemantics.Single
  2593. # build Statechart structure
  2594. self.build_statechart_structure()
  2595. # call user defined constructor
  2596. CBDSimulator_Simulation.user_defined_constructor(self, options, model, delta)
  2597. def user_defined_constructor(self, options, model, delta):
  2598. self.options = options
  2599. self.delta = delta
  2600. self.model = model
  2601. self.initialized = False
  2602. def user_defined_destructor(self):
  2603. pass
  2604. # user defined method
  2605. def initialize(self):
  2606. self.iteration = 0
  2607. self.clock = 0
  2608. self.time_next = self.delta
  2609. self.cbd_controller = CBDController(self.model, self.delta / 1000.0)
  2610. self.cbd_controller.initSimulation()
  2611. self.state = {}
  2612. self.initialized = True
  2613. # user defined method
  2614. def endCondition(self):
  2615. return self.initialized and self.iteration >= self.options.getMaxIterations()
  2616. # user defined method
  2617. def finalize(self):
  2618. from bokeh.plotting import figure, output_file, show
  2619. times = []
  2620. values = []
  2621. for timeValuePair in self.model.getSignal("neg"):
  2622. times.append(timeValuePair.time)
  2623. values.append(timeValuePair.value)
  2624. output_file("./plot.html", title="Plot")
  2625. p = figure(title="Something vs Otherthing", x_axis_label="Time", y_axis_label="Values")
  2626. p.line(times, values, legend="Something", line_width=1, line_color="red")
  2627. show(p)
  2628. print 'Simulation finalized.'
  2629. # user defined method
  2630. def initializeDebugger(self):
  2631. self.breakpoints = []
  2632. self.triggered_bp = None
  2633. # user defined method
  2634. def waitTime(self):
  2635. # First, we convert from wall-clock time to simulated time.
  2636. # 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).
  2637. simulated_diff = (accurate_time.time() - self.realtime_start_time) * self.realtime_scale
  2638. # time_next and simulated_diff are both in simulated time: so now scale back to wall-clock time by dividing.
  2639. # This function returns an amount of miliseconds.
  2640. return ((self.time_next - simulated_diff) / self.realtime_scale)
  2641. # user defined method
  2642. def syncSimulatedTime(self):
  2643. diff = accurate_time.time() - self.realtime_start_time
  2644. self.clock = diff * self.realtime_scale
  2645. # user defined method
  2646. def addBreakpoint(self, name, function, enabled = None, disable_on_trigger = None):
  2647. if enabled == None: enabled = true
  2648. if disable_on_trigger == None: disable_on_trigger = true
  2649. if len([bp for bp in self.breakpoints if bp.name == name]) > 0:
  2650. return -1
  2651. self.breakpoints.append(Breakpoint(name, function, enabled, disable_on_trigger))
  2652. return 0
  2653. # user defined method
  2654. def delBreakpoint(self, name):
  2655. if len([bp for bp in self.breakpoints if bp.name == name]) == 0:
  2656. return -1
  2657. self.breakpoints = [bp for bp in self.breakpoints if bp.name != name]
  2658. return 0
  2659. # user defined method
  2660. def toggleBreakpoint(self, name):
  2661. if len([bp for bp in self.breakpoints if bp.name == name]) == 0:
  2662. return -1
  2663. for bp in self.breakpoints:
  2664. if bp.name == name:
  2665. bp.enabled = enabled
  2666. break
  2667. return 0
  2668. # user defined method
  2669. def breakpointTriggers(self, is_realtime_simulation):
  2670. self.triggered_bp = None
  2671. for bp in self.breakpoints:
  2672. if not bp.enabled:
  2673. continue
  2674. # include the function in the scope...
  2675. exec(bp.function)
  2676. # ... and execute it, note that the breakpoint thus has to start with "def breakpoint("
  2677. # note that we pass self.time_next instead of self.simulated_time in the case of as-fast-as-possible simulation (or stepping)
  2678. # 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')
  2679. # in case of realtime simulation, we do pass the current simulated time, since we can stop at (more or less) exactly the right time
  2680. if breakpoint({'clock': (self.clock if is_realtime_simulation else self.time_next) / 1000.0, 'state': self.state}):
  2681. # triggered!
  2682. self.triggered_bp = bp.name
  2683. if bp.disable_on_trigger:
  2684. bp.enabled = False
  2685. return True
  2686. else:
  2687. # not triggered, so continue
  2688. continue
  2689. return False
  2690. # user defined method
  2691. def godEvent(self, block_name, new_val):
  2692. if not self.initialized:
  2693. return -1
  2694. if block_name not in self.state:
  2695. return -1
  2696. for b in self.model.getBlocks():
  2697. if b.getBlockName() == block_name:
  2698. b.setSignal(new_val)
  2699. self.state = {}
  2700. return 0
  2701. # builds Statechart structure
  2702. def build_statechart_structure(self):
  2703. # state <root>
  2704. self.states[""] = State(0, self)
  2705. # state /Main
  2706. self.states["/Main"] = ParallelState(1, self)
  2707. # state /Main/ModeSelector
  2708. self.states["/Main/ModeSelector"] = State(2, self)
  2709. # state /Main/ModeSelector/Paused
  2710. self.states["/Main/ModeSelector/Paused"] = State(3, self)
  2711. # state /Main/ModeSelector/Running
  2712. self.states["/Main/ModeSelector/Running"] = State(4, self)
  2713. # state /Main/ModeSelector/Running/Continuous
  2714. self.states["/Main/ModeSelector/Running/Continuous"] = State(5, self)
  2715. # state /Main/ModeSelector/Running/Realtime
  2716. self.states["/Main/ModeSelector/Running/Realtime"] = State(6, self)
  2717. # state /Main/ModeSelector/Running/BigStep
  2718. self.states["/Main/ModeSelector/Running/BigStep"] = State(7, self)
  2719. # state /Main/ModeSelector/Running/SmallStep
  2720. self.states["/Main/ModeSelector/Running/SmallStep"] = State(8, self)
  2721. # state /Main/ChildState
  2722. self.states["/Main/ChildState"] = State(9, self)
  2723. # state /Main/ChildState/Uninitialized
  2724. self.states["/Main/ChildState/Uninitialized"] = State(10, self)
  2725. # state /Main/ChildState/Initialized
  2726. self.states["/Main/ChildState/Initialized"] = State(11, self)
  2727. # state /Main/Initializer
  2728. self.states["/Main/Initializer"] = State(12, self)
  2729. # state /Main/Initializer/Waiting
  2730. self.states["/Main/Initializer/Waiting"] = State(13, self)
  2731. # state /Main/Initializer/CreatingChildSimulator
  2732. self.states["/Main/Initializer/CreatingChildSimulator"] = State(14, self)
  2733. # state /Main/Initializer/StartingChildSimulator
  2734. self.states["/Main/Initializer/StartingChildSimulator"] = State(15, self)
  2735. # state /Main/Initializer/Running
  2736. self.states["/Main/Initializer/Running"] = State(16, self)
  2737. # state /Main/Initializer/SettleBeforeWaiting
  2738. self.states["/Main/Initializer/SettleBeforeWaiting"] = State(17, self)
  2739. self.states["/Main/Initializer/SettleBeforeWaiting"].setEnter(self._Main_Initializer_SettleBeforeWaiting_enter)
  2740. self.states["/Main/Initializer/SettleBeforeWaiting"].setExit(self._Main_Initializer_SettleBeforeWaiting_exit)
  2741. # state /Main/SimulationFlow
  2742. self.states["/Main/SimulationFlow"] = State(18, self)
  2743. # state /Main/SimulationFlow/Started
  2744. self.states["/Main/SimulationFlow/Started"] = State(19, self)
  2745. # state /Main/SimulationFlow/Initialized
  2746. self.states["/Main/SimulationFlow/Initialized"] = State(20, self)
  2747. # state /Main/SimulationFlow/InitializeDebugger
  2748. self.states["/Main/SimulationFlow/InitializeDebugger"] = State(21, self)
  2749. # state /Main/SimulationFlow/Waiting
  2750. self.states["/Main/SimulationFlow/Waiting"] = State(22, self)
  2751. # state /Main/SimulationFlow/SettleBeforeCheckTermination
  2752. self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"] = State(23, self)
  2753. self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"].setEnter(self._Main_SimulationFlow_SettleBeforeCheckTermination_enter)
  2754. self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"].setExit(self._Main_SimulationFlow_SettleBeforeCheckTermination_exit)
  2755. # state /Main/SimulationFlow/CheckTermination
  2756. self.states["/Main/SimulationFlow/CheckTermination"] = State(24, self)
  2757. # state /Main/SimulationFlow/WaitingRealtime
  2758. self.states["/Main/SimulationFlow/WaitingRealtime"] = State(25, self)
  2759. self.states["/Main/SimulationFlow/WaitingRealtime"].setEnter(self._Main_SimulationFlow_WaitingRealtime_enter)
  2760. self.states["/Main/SimulationFlow/WaitingRealtime"].setExit(self._Main_SimulationFlow_WaitingRealtime_exit)
  2761. # state /Main/SimulationFlow/Executing
  2762. self.states["/Main/SimulationFlow/Executing"] = State(26, self)
  2763. # state /Main/SimulationFlow/Stopped
  2764. self.states["/Main/SimulationFlow/Stopped"] = State(27, self)
  2765. # state /Main/GodEventManager
  2766. self.states["/Main/GodEventManager"] = State(28, self)
  2767. # state /Main/GodEventManager/Listening
  2768. self.states["/Main/GodEventManager/Listening"] = State(29, self)
  2769. # state /Main/BreakpointManager
  2770. self.states["/Main/BreakpointManager"] = State(30, self)
  2771. # state /Main/BreakpointManager/Listening
  2772. self.states["/Main/BreakpointManager/Listening"] = State(31, self)
  2773. # state /Stopped
  2774. self.states["/Stopped"] = State(32, self)
  2775. # add children
  2776. self.states[""].addChild(self.states["/Main"])
  2777. self.states[""].addChild(self.states["/Stopped"])
  2778. self.states["/Main"].addChild(self.states["/Main/ModeSelector"])
  2779. self.states["/Main"].addChild(self.states["/Main/ChildState"])
  2780. self.states["/Main"].addChild(self.states["/Main/Initializer"])
  2781. self.states["/Main"].addChild(self.states["/Main/SimulationFlow"])
  2782. self.states["/Main"].addChild(self.states["/Main/GodEventManager"])
  2783. self.states["/Main"].addChild(self.states["/Main/BreakpointManager"])
  2784. self.states["/Main/ModeSelector"].addChild(self.states["/Main/ModeSelector/Paused"])
  2785. self.states["/Main/ModeSelector"].addChild(self.states["/Main/ModeSelector/Running"])
  2786. self.states["/Main/ModeSelector/Running"].addChild(self.states["/Main/ModeSelector/Running/Continuous"])
  2787. self.states["/Main/ModeSelector/Running"].addChild(self.states["/Main/ModeSelector/Running/Realtime"])
  2788. self.states["/Main/ModeSelector/Running"].addChild(self.states["/Main/ModeSelector/Running/BigStep"])
  2789. self.states["/Main/ModeSelector/Running"].addChild(self.states["/Main/ModeSelector/Running/SmallStep"])
  2790. self.states["/Main/ChildState"].addChild(self.states["/Main/ChildState/Uninitialized"])
  2791. self.states["/Main/ChildState"].addChild(self.states["/Main/ChildState/Initialized"])
  2792. self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/Waiting"])
  2793. self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/CreatingChildSimulator"])
  2794. self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/StartingChildSimulator"])
  2795. self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/Running"])
  2796. self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/SettleBeforeWaiting"])
  2797. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Started"])
  2798. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Initialized"])
  2799. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/InitializeDebugger"])
  2800. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Waiting"])
  2801. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"])
  2802. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/CheckTermination"])
  2803. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/WaitingRealtime"])
  2804. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Executing"])
  2805. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Stopped"])
  2806. self.states["/Main/GodEventManager"].addChild(self.states["/Main/GodEventManager/Listening"])
  2807. self.states["/Main/BreakpointManager"].addChild(self.states["/Main/BreakpointManager/Listening"])
  2808. self.states[""].fixTree()
  2809. self.states[""].default_state = self.states["/Main"]
  2810. self.states["/Main/ModeSelector"].default_state = self.states["/Main/ModeSelector/Paused"]
  2811. self.states["/Main/ModeSelector/Running"].default_state = self.states["/Main/ModeSelector/Running/Continuous"]
  2812. self.states["/Main/ChildState"].default_state = self.states["/Main/ChildState/Uninitialized"]
  2813. self.states["/Main/Initializer"].default_state = self.states["/Main/Initializer/Waiting"]
  2814. self.states["/Main/SimulationFlow"].default_state = self.states["/Main/SimulationFlow/Started"]
  2815. self.states["/Main/GodEventManager"].default_state = self.states["/Main/GodEventManager/Listening"]
  2816. self.states["/Main/BreakpointManager"].default_state = self.states["/Main/BreakpointManager/Listening"]
  2817. # transition /Main/ModeSelector/Paused
  2818. _Main_ModeSelector_Paused_0 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Running/SmallStep"]])
  2819. _Main_ModeSelector_Paused_0.setAction(self._Main_ModeSelector_Paused_0_exec)
  2820. _Main_ModeSelector_Paused_0.setTrigger(Event("CBDSmallStep.Execute", None))
  2821. self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_0)
  2822. _Main_ModeSelector_Paused_1 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Running/BigStep"]])
  2823. _Main_ModeSelector_Paused_1.setAction(self._Main_ModeSelector_Paused_1_exec)
  2824. _Main_ModeSelector_Paused_1.setTrigger(Event("CBDBigStep.Execute", None))
  2825. self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_1)
  2826. _Main_ModeSelector_Paused_2 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Running/Continuous"]])
  2827. _Main_ModeSelector_Paused_2.setTrigger(Event("CBDSimulation.Execute", None))
  2828. self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_2)
  2829. _Main_ModeSelector_Paused_3 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Running/Realtime"]])
  2830. _Main_ModeSelector_Paused_3.setAction(self._Main_ModeSelector_Paused_3_exec)
  2831. _Main_ModeSelector_Paused_3.setTrigger(Event("CBDSimulation.ExecuteRealtime", None))
  2832. self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_3)
  2833. _Main_ModeSelector_Paused_4 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Paused"]])
  2834. _Main_ModeSelector_Paused_4.setAction(self._Main_ModeSelector_Paused_4_exec)
  2835. _Main_ModeSelector_Paused_4.setTrigger(Event("CBDBigStep.Finished", None))
  2836. self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_4)
  2837. # transition /Main/ModeSelector/Running/Continuous
  2838. _Main_ModeSelector_Running_Continuous_0 = Transition(self, self.states["/Main/ModeSelector/Running/Continuous"], [self.states["/Main/ModeSelector/Paused"]])
  2839. _Main_ModeSelector_Running_Continuous_0.setTrigger(Event("CBDSimulation.Pause", None))
  2840. self.states["/Main/ModeSelector/Running/Continuous"].addTransition(_Main_ModeSelector_Running_Continuous_0)
  2841. # transition /Main/ModeSelector/Running/Realtime
  2842. _Main_ModeSelector_Running_Realtime_0 = Transition(self, self.states["/Main/ModeSelector/Running/Realtime"], [self.states["/Main/ModeSelector/Paused"]])
  2843. _Main_ModeSelector_Running_Realtime_0.setTrigger(Event("CBDSimulation.Pause", None))
  2844. self.states["/Main/ModeSelector/Running/Realtime"].addTransition(_Main_ModeSelector_Running_Realtime_0)
  2845. _Main_ModeSelector_Running_Realtime_1 = Transition(self, self.states["/Main/ModeSelector/Running/Realtime"], [self.states["/Main/ModeSelector/Running/Realtime"]])
  2846. _Main_ModeSelector_Running_Realtime_1.setAction(self._Main_ModeSelector_Running_Realtime_1_exec)
  2847. _Main_ModeSelector_Running_Realtime_1.setTrigger(Event("CBDBigStep.Finished", None))
  2848. self.states["/Main/ModeSelector/Running/Realtime"].addTransition(_Main_ModeSelector_Running_Realtime_1)
  2849. # transition /Main/ModeSelector/Running/BigStep
  2850. _Main_ModeSelector_Running_BigStep_0 = Transition(self, self.states["/Main/ModeSelector/Running/BigStep"], [self.states["/Main/ModeSelector/Paused"]])
  2851. _Main_ModeSelector_Running_BigStep_0.setAction(self._Main_ModeSelector_Running_BigStep_0_exec)
  2852. _Main_ModeSelector_Running_BigStep_0.setTrigger(Event("CBDBigStep.Finished", None))
  2853. self.states["/Main/ModeSelector/Running/BigStep"].addTransition(_Main_ModeSelector_Running_BigStep_0)
  2854. # transition /Main/ModeSelector/Running/SmallStep
  2855. _Main_ModeSelector_Running_SmallStep_0 = Transition(self, self.states["/Main/ModeSelector/Running/SmallStep"], [self.states["/Main/ModeSelector/Paused"]])
  2856. _Main_ModeSelector_Running_SmallStep_0.setAction(self._Main_ModeSelector_Running_SmallStep_0_exec)
  2857. _Main_ModeSelector_Running_SmallStep_0.setTrigger(Event("CBDSmallStep.Finished", None))
  2858. self.states["/Main/ModeSelector/Running/SmallStep"].addTransition(_Main_ModeSelector_Running_SmallStep_0)
  2859. # transition /Main/ChildState/Uninitialized
  2860. _Main_ChildState_Uninitialized_0 = Transition(self, self.states["/Main/ChildState/Uninitialized"], [self.states["/Main/ChildState/Initialized"]])
  2861. _Main_ChildState_Uninitialized_0.setTrigger(Event("CBDBigStep.Initialized", None))
  2862. self.states["/Main/ChildState/Uninitialized"].addTransition(_Main_ChildState_Uninitialized_0)
  2863. # transition /Main/ChildState/Initialized
  2864. _Main_ChildState_Initialized_0 = Transition(self, self.states["/Main/ChildState/Initialized"], [self.states["/Main/ChildState/Uninitialized"]])
  2865. _Main_ChildState_Initialized_0.setAction(self._Main_ChildState_Initialized_0_exec)
  2866. _Main_ChildState_Initialized_0.setTrigger(Event("CBDBigStep.Finished", None))
  2867. self.states["/Main/ChildState/Initialized"].addTransition(_Main_ChildState_Initialized_0)
  2868. # transition /Main/Initializer/Waiting
  2869. _Main_Initializer_Waiting_0 = Transition(self, self.states["/Main/Initializer/Waiting"], [self.states["/Main/Initializer/CreatingChildSimulator"]])
  2870. _Main_Initializer_Waiting_0.setAction(self._Main_Initializer_Waiting_0_exec)
  2871. _Main_Initializer_Waiting_0.setTrigger(None)
  2872. _Main_Initializer_Waiting_0.setGuard(self._Main_Initializer_Waiting_0_guard)
  2873. self.states["/Main/Initializer/Waiting"].addTransition(_Main_Initializer_Waiting_0)
  2874. # transition /Main/Initializer/CreatingChildSimulator
  2875. _Main_Initializer_CreatingChildSimulator_0 = Transition(self, self.states["/Main/Initializer/CreatingChildSimulator"], [self.states["/Main/Initializer/StartingChildSimulator"]])
  2876. _Main_Initializer_CreatingChildSimulator_0.setAction(self._Main_Initializer_CreatingChildSimulator_0_exec)
  2877. _Main_Initializer_CreatingChildSimulator_0.setTrigger(Event("instance_created", None))
  2878. self.states["/Main/Initializer/CreatingChildSimulator"].addTransition(_Main_Initializer_CreatingChildSimulator_0)
  2879. # transition /Main/Initializer/StartingChildSimulator
  2880. _Main_Initializer_StartingChildSimulator_0 = Transition(self, self.states["/Main/Initializer/StartingChildSimulator"], [self.states["/Main/Initializer/Running"]])
  2881. _Main_Initializer_StartingChildSimulator_0.setTrigger(Event("CBDBigStep.Initialized", None))
  2882. self.states["/Main/Initializer/StartingChildSimulator"].addTransition(_Main_Initializer_StartingChildSimulator_0)
  2883. # transition /Main/Initializer/Running
  2884. _Main_Initializer_Running_0 = Transition(self, self.states["/Main/Initializer/Running"], [self.states["/Main/Initializer/SettleBeforeWaiting"]])
  2885. _Main_Initializer_Running_0.setTrigger(Event("CBDBigStep.Finished", None))
  2886. self.states["/Main/Initializer/Running"].addTransition(_Main_Initializer_Running_0)
  2887. # transition /Main/Initializer/SettleBeforeWaiting
  2888. _Main_Initializer_SettleBeforeWaiting_0 = Transition(self, self.states["/Main/Initializer/SettleBeforeWaiting"], [self.states["/Main/Initializer/Waiting"]])
  2889. _Main_Initializer_SettleBeforeWaiting_0.setTrigger(Event("_0after"))
  2890. self.states["/Main/Initializer/SettleBeforeWaiting"].addTransition(_Main_Initializer_SettleBeforeWaiting_0)
  2891. # transition /Main/SimulationFlow/Started
  2892. _Main_SimulationFlow_Started_0 = Transition(self, self.states["/Main/SimulationFlow/Started"], [self.states["/Main/SimulationFlow/Initialized"]])
  2893. _Main_SimulationFlow_Started_0.setAction(self._Main_SimulationFlow_Started_0_exec)
  2894. _Main_SimulationFlow_Started_0.setTrigger(None)
  2895. self.states["/Main/SimulationFlow/Started"].addTransition(_Main_SimulationFlow_Started_0)
  2896. # transition /Main/SimulationFlow/Initialized
  2897. _Main_SimulationFlow_Initialized_0 = Transition(self, self.states["/Main/SimulationFlow/Initialized"], [self.states["/Main/SimulationFlow/InitializeDebugger"]])
  2898. _Main_SimulationFlow_Initialized_0.setTrigger(None)
  2899. self.states["/Main/SimulationFlow/Initialized"].addTransition(_Main_SimulationFlow_Initialized_0)
  2900. # transition /Main/SimulationFlow/InitializeDebugger
  2901. _Main_SimulationFlow_InitializeDebugger_0 = Transition(self, self.states["/Main/SimulationFlow/InitializeDebugger"], [self.states["/Main/SimulationFlow/Waiting"]])
  2902. _Main_SimulationFlow_InitializeDebugger_0.setAction(self._Main_SimulationFlow_InitializeDebugger_0_exec)
  2903. _Main_SimulationFlow_InitializeDebugger_0.setTrigger(None)
  2904. self.states["/Main/SimulationFlow/InitializeDebugger"].addTransition(_Main_SimulationFlow_InitializeDebugger_0)
  2905. # transition /Main/SimulationFlow/Waiting
  2906. _Main_SimulationFlow_Waiting_0 = Transition(self, self.states["/Main/SimulationFlow/Waiting"], [self.states["/Main/SimulationFlow/CheckTermination"]])
  2907. _Main_SimulationFlow_Waiting_0.setTrigger(None)
  2908. _Main_SimulationFlow_Waiting_0.setGuard(self._Main_SimulationFlow_Waiting_0_guard)
  2909. self.states["/Main/SimulationFlow/Waiting"].addTransition(_Main_SimulationFlow_Waiting_0)
  2910. # transition /Main/SimulationFlow/SettleBeforeCheckTermination
  2911. _Main_SimulationFlow_SettleBeforeCheckTermination_0 = Transition(self, self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"], [self.states["/Main/SimulationFlow/CheckTermination"]])
  2912. _Main_SimulationFlow_SettleBeforeCheckTermination_0.setTrigger(Event("_1after"))
  2913. self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"].addTransition(_Main_SimulationFlow_SettleBeforeCheckTermination_0)
  2914. _Main_SimulationFlow_SettleBeforeCheckTermination_1 = Transition(self, self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"], [self.states["/Main/SimulationFlow/CheckTermination"]])
  2915. _Main_SimulationFlow_SettleBeforeCheckTermination_1.setAction(self._Main_SimulationFlow_SettleBeforeCheckTermination_1_exec)
  2916. _Main_SimulationFlow_SettleBeforeCheckTermination_1.setTrigger(None)
  2917. _Main_SimulationFlow_SettleBeforeCheckTermination_1.setGuard(self._Main_SimulationFlow_SettleBeforeCheckTermination_1_guard)
  2918. self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"].addTransition(_Main_SimulationFlow_SettleBeforeCheckTermination_1)
  2919. # transition /Main/SimulationFlow/CheckTermination
  2920. _Main_SimulationFlow_CheckTermination_0 = Transition(self, self.states["/Main/SimulationFlow/CheckTermination"], [self.states["/Main/SimulationFlow/Executing"]])
  2921. _Main_SimulationFlow_CheckTermination_0.setAction(self._Main_SimulationFlow_CheckTermination_0_exec)
  2922. _Main_SimulationFlow_CheckTermination_0.setTrigger(None)
  2923. _Main_SimulationFlow_CheckTermination_0.setGuard(self._Main_SimulationFlow_CheckTermination_0_guard)
  2924. self.states["/Main/SimulationFlow/CheckTermination"].addTransition(_Main_SimulationFlow_CheckTermination_0)
  2925. _Main_SimulationFlow_CheckTermination_1 = Transition(self, self.states["/Main/SimulationFlow/CheckTermination"], [self.states["/Main/SimulationFlow/Executing"]])
  2926. _Main_SimulationFlow_CheckTermination_1.setAction(self._Main_SimulationFlow_CheckTermination_1_exec)
  2927. _Main_SimulationFlow_CheckTermination_1.setTrigger(None)
  2928. _Main_SimulationFlow_CheckTermination_1.setGuard(self._Main_SimulationFlow_CheckTermination_1_guard)
  2929. self.states["/Main/SimulationFlow/CheckTermination"].addTransition(_Main_SimulationFlow_CheckTermination_1)
  2930. _Main_SimulationFlow_CheckTermination_2 = Transition(self, self.states["/Main/SimulationFlow/CheckTermination"], [self.states["/Main/SimulationFlow/WaitingRealtime"]])
  2931. _Main_SimulationFlow_CheckTermination_2.setTrigger(None)
  2932. _Main_SimulationFlow_CheckTermination_2.setGuard(self._Main_SimulationFlow_CheckTermination_2_guard)
  2933. self.states["/Main/SimulationFlow/CheckTermination"].addTransition(_Main_SimulationFlow_CheckTermination_2)
  2934. _Main_SimulationFlow_CheckTermination_3 = Transition(self, self.states["/Main/SimulationFlow/CheckTermination"], [self.states["/Main/SimulationFlow/Stopped"]])
  2935. _Main_SimulationFlow_CheckTermination_3.setAction(self._Main_SimulationFlow_CheckTermination_3_exec)
  2936. _Main_SimulationFlow_CheckTermination_3.setTrigger(None)
  2937. _Main_SimulationFlow_CheckTermination_3.setGuard(self._Main_SimulationFlow_CheckTermination_3_guard)
  2938. self.states["/Main/SimulationFlow/CheckTermination"].addTransition(_Main_SimulationFlow_CheckTermination_3)
  2939. # transition /Main/SimulationFlow/WaitingRealtime
  2940. _Main_SimulationFlow_WaitingRealtime_0 = Transition(self, self.states["/Main/SimulationFlow/WaitingRealtime"], [self.states["/Main/SimulationFlow/CheckTermination"]])
  2941. _Main_SimulationFlow_WaitingRealtime_0.setAction(self._Main_SimulationFlow_WaitingRealtime_0_exec)
  2942. _Main_SimulationFlow_WaitingRealtime_0.setTrigger(Event("_2after"))
  2943. _Main_SimulationFlow_WaitingRealtime_0.setGuard(self._Main_SimulationFlow_WaitingRealtime_0_guard)
  2944. self.states["/Main/SimulationFlow/WaitingRealtime"].addTransition(_Main_SimulationFlow_WaitingRealtime_0)
  2945. _Main_SimulationFlow_WaitingRealtime_1 = Transition(self, self.states["/Main/SimulationFlow/WaitingRealtime"], [self.states["/Main/SimulationFlow/CheckTermination"]])
  2946. _Main_SimulationFlow_WaitingRealtime_1.setAction(self._Main_SimulationFlow_WaitingRealtime_1_exec)
  2947. _Main_SimulationFlow_WaitingRealtime_1.setTrigger(None)
  2948. _Main_SimulationFlow_WaitingRealtime_1.setGuard(self._Main_SimulationFlow_WaitingRealtime_1_guard)
  2949. self.states["/Main/SimulationFlow/WaitingRealtime"].addTransition(_Main_SimulationFlow_WaitingRealtime_1)
  2950. _Main_SimulationFlow_WaitingRealtime_2 = Transition(self, self.states["/Main/SimulationFlow/WaitingRealtime"], [self.states["/Main/SimulationFlow/Executing"]])
  2951. _Main_SimulationFlow_WaitingRealtime_2.setAction(self._Main_SimulationFlow_WaitingRealtime_2_exec)
  2952. _Main_SimulationFlow_WaitingRealtime_2.setTrigger(None)
  2953. _Main_SimulationFlow_WaitingRealtime_2.setGuard(self._Main_SimulationFlow_WaitingRealtime_2_guard)
  2954. self.states["/Main/SimulationFlow/WaitingRealtime"].addTransition(_Main_SimulationFlow_WaitingRealtime_2)
  2955. # transition /Main/SimulationFlow/Executing
  2956. _Main_SimulationFlow_Executing_0 = Transition(self, self.states["/Main/SimulationFlow/Executing"], [self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"]])
  2957. _Main_SimulationFlow_Executing_0.setAction(self._Main_SimulationFlow_Executing_0_exec)
  2958. _Main_SimulationFlow_Executing_0.setTrigger(Event("CBDBigStep.Finished", None))
  2959. self.states["/Main/SimulationFlow/Executing"].addTransition(_Main_SimulationFlow_Executing_0)
  2960. # transition /Main/GodEventManager/Listening
  2961. _Main_GodEventManager_Listening_0 = Transition(self, self.states["/Main/GodEventManager/Listening"], [self.states["/Main/GodEventManager/Listening"]])
  2962. _Main_GodEventManager_Listening_0.setAction(self._Main_GodEventManager_Listening_0_exec)
  2963. _Main_GodEventManager_Listening_0.setTrigger(Event("CBDSimulation.GodEvent", None))
  2964. _Main_GodEventManager_Listening_0.setGuard(self._Main_GodEventManager_Listening_0_guard)
  2965. self.states["/Main/GodEventManager/Listening"].addTransition(_Main_GodEventManager_Listening_0)
  2966. # transition /Main/BreakpointManager/Listening
  2967. _Main_BreakpointManager_Listening_0 = Transition(self, self.states["/Main/BreakpointManager/Listening"], [self.states["/Main/BreakpointManager/Listening"]])
  2968. _Main_BreakpointManager_Listening_0.setAction(self._Main_BreakpointManager_Listening_0_exec)
  2969. _Main_BreakpointManager_Listening_0.setTrigger(Event("Breakpoint.Add", None))
  2970. self.states["/Main/BreakpointManager/Listening"].addTransition(_Main_BreakpointManager_Listening_0)
  2971. _Main_BreakpointManager_Listening_1 = Transition(self, self.states["/Main/BreakpointManager/Listening"], [self.states["/Main/BreakpointManager/Listening"]])
  2972. _Main_BreakpointManager_Listening_1.setAction(self._Main_BreakpointManager_Listening_1_exec)
  2973. _Main_BreakpointManager_Listening_1.setTrigger(Event("Breakpoint.Del", None))
  2974. self.states["/Main/BreakpointManager/Listening"].addTransition(_Main_BreakpointManager_Listening_1)
  2975. _Main_BreakpointManager_Listening_2 = Transition(self, self.states["/Main/BreakpointManager/Listening"], [self.states["/Main/BreakpointManager/Listening"]])
  2976. _Main_BreakpointManager_Listening_2.setAction(self._Main_BreakpointManager_Listening_2_exec)
  2977. _Main_BreakpointManager_Listening_2.setTrigger(Event("Breakpoint.Toggle", None))
  2978. self.states["/Main/BreakpointManager/Listening"].addTransition(_Main_BreakpointManager_Listening_2)
  2979. _Main_BreakpointManager_Listening_3 = Transition(self, self.states["/Main/BreakpointManager/Listening"], [self.states["/Main/BreakpointManager/Listening"]])
  2980. _Main_BreakpointManager_Listening_3.setAction(self._Main_BreakpointManager_Listening_3_exec)
  2981. _Main_BreakpointManager_Listening_3.setTrigger(Event("Breakpoint.List", None))
  2982. self.states["/Main/BreakpointManager/Listening"].addTransition(_Main_BreakpointManager_Listening_3)
  2983. # transition /Main/ModeSelector/Running
  2984. _Main_ModeSelector_Running_0 = Transition(self, self.states["/Main/ModeSelector/Running"], [self.states["/Main/ModeSelector/Paused"]])
  2985. _Main_ModeSelector_Running_0.setTrigger(Event("CBDSimulation.Finished", None))
  2986. self.states["/Main/ModeSelector/Running"].addTransition(_Main_ModeSelector_Running_0)
  2987. _Main_ModeSelector_Running_1 = Transition(self, self.states["/Main/ModeSelector/Running"], [self.states["/Main/ModeSelector/Paused"]])
  2988. _Main_ModeSelector_Running_1.setAction(self._Main_ModeSelector_Running_1_exec)
  2989. _Main_ModeSelector_Running_1.setTrigger(None)
  2990. _Main_ModeSelector_Running_1.setGuard(self._Main_ModeSelector_Running_1_guard)
  2991. self.states["/Main/ModeSelector/Running"].addTransition(_Main_ModeSelector_Running_1)
  2992. def _Main_Initializer_SettleBeforeWaiting_enter(self):
  2993. self.addTimer(0, self.sccd_yield())
  2994. def _Main_Initializer_SettleBeforeWaiting_exit(self):
  2995. self.removeTimer(0)
  2996. def _Main_SimulationFlow_SettleBeforeCheckTermination_enter(self):
  2997. self.addTimer(1, self.sccd_yield())
  2998. def _Main_SimulationFlow_SettleBeforeCheckTermination_exit(self):
  2999. self.removeTimer(1)
  3000. def _Main_SimulationFlow_WaitingRealtime_enter(self):
  3001. self.addTimer(2, self.sccd_yield())
  3002. def _Main_SimulationFlow_WaitingRealtime_exit(self):
  3003. self.removeTimer(2)
  3004. def _Main_ModeSelector_Running_1_exec(self, parameters):
  3005. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("Breakpoint.Triggered", None, [self.triggered_bp, self.clock, self.state])]))
  3006. def _Main_ModeSelector_Running_1_guard(self, parameters):
  3007. return self.breakpointTriggers(self.inState(["/Main/ModeSelector/Running/Realtime"]))
  3008. def _Main_ModeSelector_Paused_0_exec(self, parameters):
  3009. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("CBDSmallStep.Execute", None, [])]))
  3010. def _Main_ModeSelector_Paused_1_exec(self, parameters):
  3011. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("CBDBigStep.Execute", None, [])]))
  3012. def _Main_ModeSelector_Paused_3_exec(self, parameters):
  3013. realtime_scale = parameters[0]
  3014. self.realtime_scale = float(realtime_scale)
  3015. # If the simulation was paused, we need to reset the start time of the CBDSimulation.
  3016. # The start time of the simulation is equal to the point in wall-clock time where simulated time is 0.
  3017. # 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.
  3018. # 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)
  3019. self.realtime_start_time = accurate_time.time() - (self.clock / self.realtime_scale)
  3020. def _Main_ModeSelector_Paused_4_exec(self, parameters):
  3021. clock = parameters[0]
  3022. iteration = parameters[1]
  3023. time_next = parameters[2]
  3024. state = parameters[3]
  3025. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("CBDBigStep.Finished", None, [clock, iteration, time_next, state])]))
  3026. def _Main_ModeSelector_Running_Realtime_1_exec(self, parameters):
  3027. clock = parameters[0]
  3028. iteration = parameters[1]
  3029. time_next = parameters[2]
  3030. state = parameters[3]
  3031. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("CBDBigStep.Finished", None, [clock, iteration, time_next, state])]))
  3032. def _Main_ModeSelector_Running_BigStep_0_exec(self, parameters):
  3033. clock = parameters[0]
  3034. iteration = parameters[1]
  3035. time_next = parameters[2]
  3036. state = parameters[3]
  3037. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("CBDBigStep.Finished", None, [clock, iteration, time_next, state])]))
  3038. def _Main_ModeSelector_Running_SmallStep_0_exec(self, parameters):
  3039. current_component_idx = parameters[0]
  3040. state = parameters[1]
  3041. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("CBDSmallStep.Finished", None, [current_component_idx, state])]))
  3042. def _Main_ChildState_Initialized_0_exec(self, parameters):
  3043. self.big_step.outputEventOM(Event("delete_instance", None, [self, 'child_simulator']))
  3044. def _Main_Initializer_Waiting_0_exec(self, parameters):
  3045. self.big_step.outputEventOM(Event("create_instance", None, [self, 'child_simulator', 'CBDSimulator_BigStep', self.cbd_controller, self.clock, self.iteration, self.time_next, self.delta, self.state]))
  3046. def _Main_Initializer_Waiting_0_guard(self, parameters):
  3047. return self.inState(["/Main/ModeSelector/Running"]) and self.inState(["/Main/ChildState/Uninitialized"]) and not self.endCondition()
  3048. def _Main_Initializer_CreatingChildSimulator_0_exec(self, parameters):
  3049. self.big_step.outputEventOM(Event("start_instance", None, [self, 'child_simulator']))
  3050. def _Main_SimulationFlow_Started_0_exec(self, parameters):
  3051. self.initialize()
  3052. def _Main_SimulationFlow_InitializeDebugger_0_exec(self, parameters):
  3053. self.initializeDebugger()
  3054. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("CBDSimulation.Initialized", None, [self.clock, self.state, self.iteration, self.time_next])]))
  3055. def _Main_SimulationFlow_Waiting_0_guard(self, parameters):
  3056. return self.inState(["/Main/ModeSelector/Running"])
  3057. def _Main_SimulationFlow_SettleBeforeCheckTermination_1_exec(self, parameters):
  3058. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("CBDSimulation.Paused", None, [self.clock, self.state])]))
  3059. def _Main_SimulationFlow_SettleBeforeCheckTermination_1_guard(self, parameters):
  3060. return self.inState(["/Main/ModeSelector/Paused"])
  3061. def _Main_SimulationFlow_CheckTermination_0_exec(self, parameters):
  3062. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("CBDBigStep.Execute", None, [])]))
  3063. def _Main_SimulationFlow_CheckTermination_0_guard(self, parameters):
  3064. return (self.inState(["/Main/ModeSelector/Running/Continuous"]) or self.inState(["/Main/ModeSelector/Running/BigStep"])) and self.inState(["/Main/ChildState/Initialized"]) and not self.endCondition()
  3065. def _Main_SimulationFlow_CheckTermination_1_exec(self, parameters):
  3066. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("CBDSmallStep.Execute", None, [])]))
  3067. def _Main_SimulationFlow_CheckTermination_1_guard(self, parameters):
  3068. return self.inState(["/Main/ModeSelector/Running/SmallStep"]) and self.inState(["/Main/ChildState/Initialized"]) and not self.endCondition()
  3069. def _Main_SimulationFlow_CheckTermination_2_guard(self, parameters):
  3070. return self.inState(["/Main/ModeSelector/Running/Realtime"]) and self.inState(["/Main/ChildState/Initialized"]) and not self.endCondition()
  3071. def _Main_SimulationFlow_CheckTermination_3_exec(self, parameters):
  3072. # print '>>> (CBD) simulation executed <<<'
  3073. self.finalize()
  3074. self.raiseInternalEvent(Event("CBDSimulation.Finished", None, []))
  3075. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("CBDSimulation.Finished", None, [self.clock, self.state])]))
  3076. def _Main_SimulationFlow_CheckTermination_3_guard(self, parameters):
  3077. return self.endCondition()
  3078. def _Main_SimulationFlow_WaitingRealtime_0_exec(self, parameters):
  3079. self.syncSimulatedTime()
  3080. def _Main_SimulationFlow_WaitingRealtime_0_guard(self, parameters):
  3081. return self.inState(["/Main/ModeSelector/Running"])
  3082. def _Main_SimulationFlow_WaitingRealtime_1_exec(self, parameters):
  3083. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("CBDSimulation.Paused", None, [self.clock, self.state])]))
  3084. def _Main_SimulationFlow_WaitingRealtime_1_guard(self, parameters):
  3085. return self.inState(["/Main/ModeSelector/Paused"]) and (not ((self.waitTime() / 1000.0) <= self.sccd_yield()))
  3086. def _Main_SimulationFlow_WaitingRealtime_2_exec(self, parameters):
  3087. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("CBDBigStep.Execute", None, [])]))
  3088. def _Main_SimulationFlow_WaitingRealtime_2_guard(self, parameters):
  3089. return self.waitTime() / 1000.0 <= self.sccd_yield()
  3090. def _Main_SimulationFlow_Executing_0_exec(self, parameters):
  3091. clock = parameters[0]
  3092. iteration = parameters[1]
  3093. time_next = parameters[2]
  3094. state = parameters[3]
  3095. self.clock = clock
  3096. self.iteration = iteration
  3097. self.time_next = time_next
  3098. self.state = state
  3099. def _Main_GodEventManager_Listening_0_exec(self, parameters):
  3100. block_name = parameters[0]
  3101. new_val = parameters[1]
  3102. result = self.godEvent(block_name, new_val)
  3103. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("CBDSimulation.GodEventResult", None, [result])]))
  3104. def _Main_GodEventManager_Listening_0_guard(self, parameters):
  3105. block_name = parameters[0]
  3106. new_val = parameters[1]
  3107. return self.inState(["/Main/ModeSelector/Paused"])
  3108. def _Main_BreakpointManager_Listening_0_exec(self, parameters):
  3109. name = parameters[0]
  3110. function = parameters[1]
  3111. enabled = parameters[2]
  3112. disable_on_trigger = parameters[3]
  3113. result = self.addBreakpoint(name, function, bool(enabled), bool(disable_on_trigger))
  3114. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("Breakpoint.AddResult", None, [result])]))
  3115. def _Main_BreakpointManager_Listening_1_exec(self, parameters):
  3116. name = parameters[0]
  3117. result = self.delBreakpoint(name)
  3118. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("Breakpoint.DelResult", None, [result])]))
  3119. def _Main_BreakpointManager_Listening_2_exec(self, parameters):
  3120. name = parameters[0]
  3121. result = self.toggleBreakpoint(name)
  3122. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("Breakpoint.ToggleResult", None, [result])]))
  3123. def _Main_BreakpointManager_Listening_3_exec(self, parameters):
  3124. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("Breakpoint.ListResult", None, [[bp.name for bp in self.breakpoints]])]))
  3125. def initializeStatechart(self):
  3126. # enter default state
  3127. self.default_targets = self.states["/Main"].getEffectiveTargetStates()
  3128. RuntimeClassBase.initializeStatechart(self)
  3129. class CBDSimulator_BigStep(RuntimeClassBase):
  3130. def __init__(self, controller, cbd_controller, clock, iteration, time_next, delta, state):
  3131. RuntimeClassBase.__init__(self, controller)
  3132. self.semantics.big_step_maximality = StatechartSemantics.TakeMany
  3133. self.semantics.internal_event_lifeline = StatechartSemantics.Queue
  3134. self.semantics.input_event_lifeline = StatechartSemantics.FirstComboStep
  3135. self.semantics.priority = StatechartSemantics.SourceParent
  3136. self.semantics.concurrency = StatechartSemantics.Single
  3137. # build Statechart structure
  3138. self.build_statechart_structure()
  3139. # call user defined constructor
  3140. CBDSimulator_BigStep.user_defined_constructor(self, cbd_controller, clock, iteration, time_next, delta, state)
  3141. def user_defined_constructor(self, cbd_controller, clock, iteration, time_next, delta, state):
  3142. self.cbd_controller = cbd_controller
  3143. self.clock = clock
  3144. self.iteration = iteration
  3145. self.time_next = time_next
  3146. self.delta = delta
  3147. self.state = state
  3148. def user_defined_destructor(self):
  3149. pass
  3150. # user defined method
  3151. def initialize(self):
  3152. self.current_component_idx = 0
  3153. self.dependency_graph = self.cbd_controller.createDepGraph(self.iteration)
  3154. self.strong_component_list = self.cbd_controller.createStrongComponents(self.dependency_graph, self.iteration)
  3155. # user defined method
  3156. def initializeDebugger(self):
  3157. pass
  3158. # user defined method
  3159. def endCondition(self):
  3160. return self.current_component_idx >= len(self.strong_component_list)
  3161. # user defined method
  3162. def finalize(self):
  3163. self.advanceTime()
  3164. # user defined method
  3165. def advanceTime(self):
  3166. self.clock = self.time_next
  3167. self.iteration = self.iteration + 1
  3168. self.cbd_controller.advanceTimeStep()
  3169. self.time_next = self.clock + self.delta
  3170. # builds Statechart structure
  3171. def build_statechart_structure(self):
  3172. # state <root>
  3173. self.states[""] = State(0, self)
  3174. # state /Main
  3175. self.states["/Main"] = ParallelState(1, self)
  3176. # state /Main/ModeSelector
  3177. self.states["/Main/ModeSelector"] = State(2, self)
  3178. # state /Main/ModeSelector/Paused
  3179. self.states["/Main/ModeSelector/Paused"] = State(3, self)
  3180. # state /Main/ModeSelector/Running
  3181. self.states["/Main/ModeSelector/Running"] = State(4, self)
  3182. # state /Main/ModeSelector/Running/Continuous
  3183. self.states["/Main/ModeSelector/Running/Continuous"] = State(5, self)
  3184. # state /Main/ModeSelector/Running/SmallStep
  3185. self.states["/Main/ModeSelector/Running/SmallStep"] = State(6, self)
  3186. # state /Main/ChildState
  3187. self.states["/Main/ChildState"] = State(7, self)
  3188. # state /Main/ChildState/Uninitialized
  3189. self.states["/Main/ChildState/Uninitialized"] = State(8, self)
  3190. # state /Main/ChildState/Initialized
  3191. self.states["/Main/ChildState/Initialized"] = State(9, self)
  3192. # state /Main/Initializer
  3193. self.states["/Main/Initializer"] = State(10, self)
  3194. # state /Main/Initializer/Waiting
  3195. self.states["/Main/Initializer/Waiting"] = State(11, self)
  3196. # state /Main/Initializer/CreatingChildSimulator
  3197. self.states["/Main/Initializer/CreatingChildSimulator"] = State(12, self)
  3198. # state /Main/Initializer/StartingChildSimulator
  3199. self.states["/Main/Initializer/StartingChildSimulator"] = State(13, self)
  3200. # state /Main/Initializer/Running
  3201. self.states["/Main/Initializer/Running"] = State(14, self)
  3202. # state /Main/Initializer/SettleBeforeWaiting
  3203. self.states["/Main/Initializer/SettleBeforeWaiting"] = State(15, self)
  3204. self.states["/Main/Initializer/SettleBeforeWaiting"].setEnter(self._Main_Initializer_SettleBeforeWaiting_enter)
  3205. self.states["/Main/Initializer/SettleBeforeWaiting"].setExit(self._Main_Initializer_SettleBeforeWaiting_exit)
  3206. # state /Main/SimulationFlow
  3207. self.states["/Main/SimulationFlow"] = State(16, self)
  3208. # state /Main/SimulationFlow/Started
  3209. self.states["/Main/SimulationFlow/Started"] = State(17, self)
  3210. # state /Main/SimulationFlow/Initialized
  3211. self.states["/Main/SimulationFlow/Initialized"] = State(18, self)
  3212. # state /Main/SimulationFlow/InitializeDebugger
  3213. self.states["/Main/SimulationFlow/InitializeDebugger"] = State(19, self)
  3214. # state /Main/SimulationFlow/Waiting
  3215. self.states["/Main/SimulationFlow/Waiting"] = State(20, self)
  3216. # state /Main/SimulationFlow/SettleBeforeCheckTermination
  3217. self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"] = State(21, self)
  3218. self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"].setEnter(self._Main_SimulationFlow_SettleBeforeCheckTermination_enter)
  3219. self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"].setExit(self._Main_SimulationFlow_SettleBeforeCheckTermination_exit)
  3220. # state /Main/SimulationFlow/CheckTermination
  3221. self.states["/Main/SimulationFlow/CheckTermination"] = State(22, self)
  3222. # state /Main/SimulationFlow/Executing
  3223. self.states["/Main/SimulationFlow/Executing"] = State(23, self)
  3224. # state /Main/SimulationFlow/Stopped
  3225. self.states["/Main/SimulationFlow/Stopped"] = State(24, self)
  3226. # state /Stopped
  3227. self.states["/Stopped"] = State(25, self)
  3228. # add children
  3229. self.states[""].addChild(self.states["/Main"])
  3230. self.states[""].addChild(self.states["/Stopped"])
  3231. self.states["/Main"].addChild(self.states["/Main/ModeSelector"])
  3232. self.states["/Main"].addChild(self.states["/Main/ChildState"])
  3233. self.states["/Main"].addChild(self.states["/Main/Initializer"])
  3234. self.states["/Main"].addChild(self.states["/Main/SimulationFlow"])
  3235. self.states["/Main/ModeSelector"].addChild(self.states["/Main/ModeSelector/Paused"])
  3236. self.states["/Main/ModeSelector"].addChild(self.states["/Main/ModeSelector/Running"])
  3237. self.states["/Main/ModeSelector/Running"].addChild(self.states["/Main/ModeSelector/Running/Continuous"])
  3238. self.states["/Main/ModeSelector/Running"].addChild(self.states["/Main/ModeSelector/Running/SmallStep"])
  3239. self.states["/Main/ChildState"].addChild(self.states["/Main/ChildState/Uninitialized"])
  3240. self.states["/Main/ChildState"].addChild(self.states["/Main/ChildState/Initialized"])
  3241. self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/Waiting"])
  3242. self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/CreatingChildSimulator"])
  3243. self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/StartingChildSimulator"])
  3244. self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/Running"])
  3245. self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/SettleBeforeWaiting"])
  3246. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Started"])
  3247. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Initialized"])
  3248. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/InitializeDebugger"])
  3249. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Waiting"])
  3250. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"])
  3251. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/CheckTermination"])
  3252. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Executing"])
  3253. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Stopped"])
  3254. self.states[""].fixTree()
  3255. self.states[""].default_state = self.states["/Main"]
  3256. self.states["/Main/ModeSelector"].default_state = self.states["/Main/ModeSelector/Paused"]
  3257. self.states["/Main/ModeSelector/Running"].default_state = self.states["/Main/ModeSelector/Running/Continuous"]
  3258. self.states["/Main/ChildState"].default_state = self.states["/Main/ChildState/Uninitialized"]
  3259. self.states["/Main/Initializer"].default_state = self.states["/Main/Initializer/Waiting"]
  3260. self.states["/Main/SimulationFlow"].default_state = self.states["/Main/SimulationFlow/Started"]
  3261. # transition /Main/ModeSelector/Paused
  3262. _Main_ModeSelector_Paused_0 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Running/SmallStep"]])
  3263. _Main_ModeSelector_Paused_0.setAction(self._Main_ModeSelector_Paused_0_exec)
  3264. _Main_ModeSelector_Paused_0.setTrigger(Event("CBDSmallStep.Execute", None))
  3265. self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_0)
  3266. _Main_ModeSelector_Paused_1 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Running/Continuous"]])
  3267. _Main_ModeSelector_Paused_1.setTrigger(Event("CBDBigStep.Execute", None))
  3268. self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_1)
  3269. # transition /Main/ModeSelector/Running/SmallStep
  3270. _Main_ModeSelector_Running_SmallStep_0 = Transition(self, self.states["/Main/ModeSelector/Running/SmallStep"], [self.states["/Main/ModeSelector/Paused"]])
  3271. _Main_ModeSelector_Running_SmallStep_0.setAction(self._Main_ModeSelector_Running_SmallStep_0_exec)
  3272. _Main_ModeSelector_Running_SmallStep_0.setTrigger(Event("CBDSmallStep.Finished", None))
  3273. self.states["/Main/ModeSelector/Running/SmallStep"].addTransition(_Main_ModeSelector_Running_SmallStep_0)
  3274. # transition /Main/ChildState/Uninitialized
  3275. _Main_ChildState_Uninitialized_0 = Transition(self, self.states["/Main/ChildState/Uninitialized"], [self.states["/Main/ChildState/Initialized"]])
  3276. _Main_ChildState_Uninitialized_0.setTrigger(Event("CBDSmallStep.Initialized", None))
  3277. self.states["/Main/ChildState/Uninitialized"].addTransition(_Main_ChildState_Uninitialized_0)
  3278. # transition /Main/ChildState/Initialized
  3279. _Main_ChildState_Initialized_0 = Transition(self, self.states["/Main/ChildState/Initialized"], [self.states["/Main/ChildState/Uninitialized"]])
  3280. _Main_ChildState_Initialized_0.setAction(self._Main_ChildState_Initialized_0_exec)
  3281. _Main_ChildState_Initialized_0.setTrigger(Event("CBDSmallStep.Finished", None))
  3282. self.states["/Main/ChildState/Initialized"].addTransition(_Main_ChildState_Initialized_0)
  3283. # transition /Main/Initializer/Waiting
  3284. _Main_Initializer_Waiting_0 = Transition(self, self.states["/Main/Initializer/Waiting"], [self.states["/Main/Initializer/CreatingChildSimulator"]])
  3285. _Main_Initializer_Waiting_0.setAction(self._Main_Initializer_Waiting_0_exec)
  3286. _Main_Initializer_Waiting_0.setTrigger(None)
  3287. _Main_Initializer_Waiting_0.setGuard(self._Main_Initializer_Waiting_0_guard)
  3288. self.states["/Main/Initializer/Waiting"].addTransition(_Main_Initializer_Waiting_0)
  3289. # transition /Main/Initializer/CreatingChildSimulator
  3290. _Main_Initializer_CreatingChildSimulator_0 = Transition(self, self.states["/Main/Initializer/CreatingChildSimulator"], [self.states["/Main/Initializer/StartingChildSimulator"]])
  3291. _Main_Initializer_CreatingChildSimulator_0.setAction(self._Main_Initializer_CreatingChildSimulator_0_exec)
  3292. _Main_Initializer_CreatingChildSimulator_0.setTrigger(Event("instance_created", None))
  3293. self.states["/Main/Initializer/CreatingChildSimulator"].addTransition(_Main_Initializer_CreatingChildSimulator_0)
  3294. # transition /Main/Initializer/StartingChildSimulator
  3295. _Main_Initializer_StartingChildSimulator_0 = Transition(self, self.states["/Main/Initializer/StartingChildSimulator"], [self.states["/Main/Initializer/Running"]])
  3296. _Main_Initializer_StartingChildSimulator_0.setTrigger(Event("CBDSmallStep.Initialized", None))
  3297. self.states["/Main/Initializer/StartingChildSimulator"].addTransition(_Main_Initializer_StartingChildSimulator_0)
  3298. # transition /Main/Initializer/Running
  3299. _Main_Initializer_Running_0 = Transition(self, self.states["/Main/Initializer/Running"], [self.states["/Main/Initializer/SettleBeforeWaiting"]])
  3300. _Main_Initializer_Running_0.setTrigger(Event("CBDSmallStep.Finished", None))
  3301. self.states["/Main/Initializer/Running"].addTransition(_Main_Initializer_Running_0)
  3302. # transition /Main/Initializer/SettleBeforeWaiting
  3303. _Main_Initializer_SettleBeforeWaiting_0 = Transition(self, self.states["/Main/Initializer/SettleBeforeWaiting"], [self.states["/Main/Initializer/Waiting"]])
  3304. _Main_Initializer_SettleBeforeWaiting_0.setTrigger(Event("_0after"))
  3305. self.states["/Main/Initializer/SettleBeforeWaiting"].addTransition(_Main_Initializer_SettleBeforeWaiting_0)
  3306. # transition /Main/SimulationFlow/Started
  3307. _Main_SimulationFlow_Started_0 = Transition(self, self.states["/Main/SimulationFlow/Started"], [self.states["/Main/SimulationFlow/Initialized"]])
  3308. _Main_SimulationFlow_Started_0.setAction(self._Main_SimulationFlow_Started_0_exec)
  3309. _Main_SimulationFlow_Started_0.setTrigger(None)
  3310. self.states["/Main/SimulationFlow/Started"].addTransition(_Main_SimulationFlow_Started_0)
  3311. # transition /Main/SimulationFlow/Initialized
  3312. _Main_SimulationFlow_Initialized_0 = Transition(self, self.states["/Main/SimulationFlow/Initialized"], [self.states["/Main/SimulationFlow/InitializeDebugger"]])
  3313. _Main_SimulationFlow_Initialized_0.setTrigger(None)
  3314. self.states["/Main/SimulationFlow/Initialized"].addTransition(_Main_SimulationFlow_Initialized_0)
  3315. # transition /Main/SimulationFlow/InitializeDebugger
  3316. _Main_SimulationFlow_InitializeDebugger_0 = Transition(self, self.states["/Main/SimulationFlow/InitializeDebugger"], [self.states["/Main/SimulationFlow/Waiting"]])
  3317. _Main_SimulationFlow_InitializeDebugger_0.setAction(self._Main_SimulationFlow_InitializeDebugger_0_exec)
  3318. _Main_SimulationFlow_InitializeDebugger_0.setTrigger(None)
  3319. self.states["/Main/SimulationFlow/InitializeDebugger"].addTransition(_Main_SimulationFlow_InitializeDebugger_0)
  3320. # transition /Main/SimulationFlow/Waiting
  3321. _Main_SimulationFlow_Waiting_0 = Transition(self, self.states["/Main/SimulationFlow/Waiting"], [self.states["/Main/SimulationFlow/CheckTermination"]])
  3322. _Main_SimulationFlow_Waiting_0.setTrigger(None)
  3323. _Main_SimulationFlow_Waiting_0.setGuard(self._Main_SimulationFlow_Waiting_0_guard)
  3324. self.states["/Main/SimulationFlow/Waiting"].addTransition(_Main_SimulationFlow_Waiting_0)
  3325. # transition /Main/SimulationFlow/SettleBeforeCheckTermination
  3326. _Main_SimulationFlow_SettleBeforeCheckTermination_0 = Transition(self, self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"], [self.states["/Main/SimulationFlow/CheckTermination"]])
  3327. _Main_SimulationFlow_SettleBeforeCheckTermination_0.setTrigger(Event("_1after"))
  3328. self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"].addTransition(_Main_SimulationFlow_SettleBeforeCheckTermination_0)
  3329. # transition /Main/SimulationFlow/CheckTermination
  3330. _Main_SimulationFlow_CheckTermination_0 = Transition(self, self.states["/Main/SimulationFlow/CheckTermination"], [self.states["/Main/SimulationFlow/Executing"]])
  3331. _Main_SimulationFlow_CheckTermination_0.setAction(self._Main_SimulationFlow_CheckTermination_0_exec)
  3332. _Main_SimulationFlow_CheckTermination_0.setTrigger(None)
  3333. _Main_SimulationFlow_CheckTermination_0.setGuard(self._Main_SimulationFlow_CheckTermination_0_guard)
  3334. self.states["/Main/SimulationFlow/CheckTermination"].addTransition(_Main_SimulationFlow_CheckTermination_0)
  3335. _Main_SimulationFlow_CheckTermination_1 = Transition(self, self.states["/Main/SimulationFlow/CheckTermination"], [self.states["/Main/SimulationFlow/Stopped"]])
  3336. _Main_SimulationFlow_CheckTermination_1.setAction(self._Main_SimulationFlow_CheckTermination_1_exec)
  3337. _Main_SimulationFlow_CheckTermination_1.setTrigger(None)
  3338. _Main_SimulationFlow_CheckTermination_1.setGuard(self._Main_SimulationFlow_CheckTermination_1_guard)
  3339. self.states["/Main/SimulationFlow/CheckTermination"].addTransition(_Main_SimulationFlow_CheckTermination_1)
  3340. # transition /Main/SimulationFlow/Executing
  3341. _Main_SimulationFlow_Executing_0 = Transition(self, self.states["/Main/SimulationFlow/Executing"], [self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"]])
  3342. _Main_SimulationFlow_Executing_0.setAction(self._Main_SimulationFlow_Executing_0_exec)
  3343. _Main_SimulationFlow_Executing_0.setTrigger(Event("CBDSmallStep.Finished", None))
  3344. self.states["/Main/SimulationFlow/Executing"].addTransition(_Main_SimulationFlow_Executing_0)
  3345. # transition /Main/ModeSelector/Running
  3346. _Main_ModeSelector_Running_0 = Transition(self, self.states["/Main/ModeSelector/Running"], [self.states["/Main/ModeSelector/Paused"]])
  3347. _Main_ModeSelector_Running_0.setTrigger(Event("CBDBigStep.Finished", None))
  3348. self.states["/Main/ModeSelector/Running"].addTransition(_Main_ModeSelector_Running_0)
  3349. def _Main_Initializer_SettleBeforeWaiting_enter(self):
  3350. self.addTimer(0, self.sccd_yield())
  3351. def _Main_Initializer_SettleBeforeWaiting_exit(self):
  3352. self.removeTimer(0)
  3353. def _Main_SimulationFlow_SettleBeforeCheckTermination_enter(self):
  3354. self.addTimer(1, self.sccd_yield())
  3355. def _Main_SimulationFlow_SettleBeforeCheckTermination_exit(self):
  3356. self.removeTimer(1)
  3357. def _Main_ModeSelector_Paused_0_exec(self, parameters):
  3358. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("CBDSmallStep.Execute", None, [])]))
  3359. def _Main_ModeSelector_Running_SmallStep_0_exec(self, parameters):
  3360. new_current_component_idx = parameters[0]
  3361. new_state = parameters[1]
  3362. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("CBDSmallStep.Finished", None, [new_current_component_idx, new_state])]))
  3363. def _Main_ChildState_Initialized_0_exec(self, parameters):
  3364. self.big_step.outputEventOM(Event("delete_instance", None, [self, 'child_simulator']))
  3365. def _Main_Initializer_Waiting_0_exec(self, parameters):
  3366. self.big_step.outputEventOM(Event("create_instance", None, [self, 'child_simulator', 'CBDSimulator_SmallStep', self.cbd_controller, self.strong_component_list, self.current_component_idx, self.dependency_graph, self.iteration, self.state]))
  3367. def _Main_Initializer_Waiting_0_guard(self, parameters):
  3368. return self.inState(["/Main/ModeSelector/Running"]) and self.inState(["/Main/ChildState/Uninitialized"]) and not self.endCondition()
  3369. def _Main_Initializer_CreatingChildSimulator_0_exec(self, parameters):
  3370. self.big_step.outputEventOM(Event("start_instance", None, [self, 'child_simulator']))
  3371. def _Main_SimulationFlow_Started_0_exec(self, parameters):
  3372. self.initialize()
  3373. def _Main_SimulationFlow_InitializeDebugger_0_exec(self, parameters):
  3374. self.initializeDebugger()
  3375. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("CBDBigStep.Initialized", None, [])]))
  3376. def _Main_SimulationFlow_Waiting_0_guard(self, parameters):
  3377. return self.inState(["/Main/ModeSelector/Running"])
  3378. def _Main_SimulationFlow_CheckTermination_0_exec(self, parameters):
  3379. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("CBDSmallStep.Execute", None, [])]))
  3380. def _Main_SimulationFlow_CheckTermination_0_guard(self, parameters):
  3381. return (self.inState(["/Main/ModeSelector/Running/Continuous"]) or self.inState(["/Main/ModeSelector/Running/SmallStep"])) and self.inState(["/Main/ChildState/Initialized"]) and not self.endCondition()
  3382. def _Main_SimulationFlow_CheckTermination_1_exec(self, parameters):
  3383. self.finalize()
  3384. # print '>>> (CBD) big step executed <<<'
  3385. self.raiseInternalEvent(Event("CBDBigStep.Finished", None, []))
  3386. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("CBDBigStep.Finished", None, [self.clock, self.iteration, self.time_next, self.state])]))
  3387. def _Main_SimulationFlow_CheckTermination_1_guard(self, parameters):
  3388. return self.endCondition()
  3389. def _Main_SimulationFlow_Executing_0_exec(self, parameters):
  3390. new_current_component_idx = parameters[0]
  3391. new_state = parameters[1]
  3392. self.current_component_idx = new_current_component_idx
  3393. self.state = new_state
  3394. def initializeStatechart(self):
  3395. # enter default state
  3396. self.default_targets = self.states["/Main"].getEffectiveTargetStates()
  3397. RuntimeClassBase.initializeStatechart(self)
  3398. class CBDSimulator_SmallStep(RuntimeClassBase):
  3399. def __init__(self, controller, cbd_controller, strong_component_list, current_component_idx, dependency_graph, iteration, state):
  3400. RuntimeClassBase.__init__(self, controller)
  3401. self.semantics.big_step_maximality = StatechartSemantics.TakeMany
  3402. self.semantics.internal_event_lifeline = StatechartSemantics.Queue
  3403. self.semantics.input_event_lifeline = StatechartSemantics.FirstComboStep
  3404. self.semantics.priority = StatechartSemantics.SourceParent
  3405. self.semantics.concurrency = StatechartSemantics.Single
  3406. # build Statechart structure
  3407. self.build_statechart_structure()
  3408. # call user defined constructor
  3409. CBDSimulator_SmallStep.user_defined_constructor(self, cbd_controller, strong_component_list, current_component_idx, dependency_graph, iteration, state)
  3410. def user_defined_constructor(self, cbd_controller, strong_component_list, current_component_idx, dependency_graph, iteration, state):
  3411. self.cbd_controller = cbd_controller
  3412. self.strong_component_list = strong_component_list
  3413. self.current_component_idx = current_component_idx
  3414. self.dependency_graph = dependency_graph
  3415. self.iteration = iteration
  3416. self.state = state
  3417. def user_defined_destructor(self):
  3418. pass
  3419. # user defined method
  3420. def initialize(self):
  3421. self.small_step_executed = False
  3422. # user defined method
  3423. def initializeDebugger(self):
  3424. pass
  3425. # user defined method
  3426. def endCondition(self):
  3427. return self.small_step_executed
  3428. # user defined method
  3429. def finalize(self):
  3430. self.current_component_idx += 1
  3431. # builds Statechart structure
  3432. def build_statechart_structure(self):
  3433. # state <root>
  3434. self.states[""] = State(0, self)
  3435. # state /Main
  3436. self.states["/Main"] = ParallelState(1, self)
  3437. # state /Main/ModeSelector
  3438. self.states["/Main/ModeSelector"] = State(2, self)
  3439. # state /Main/ModeSelector/Paused
  3440. self.states["/Main/ModeSelector/Paused"] = State(3, self)
  3441. # state /Main/ModeSelector/Running
  3442. self.states["/Main/ModeSelector/Running"] = State(4, self)
  3443. # state /Main/ModeSelector/Running/Continuous
  3444. self.states["/Main/ModeSelector/Running/Continuous"] = State(5, self)
  3445. # state /Main/ChildState
  3446. self.states["/Main/ChildState"] = State(6, self)
  3447. # state /Main/ChildState/Uninitialized
  3448. self.states["/Main/ChildState/Uninitialized"] = State(7, self)
  3449. # state /Main/ChildState/Initialized
  3450. self.states["/Main/ChildState/Initialized"] = State(8, self)
  3451. # state /Main/Initializer
  3452. self.states["/Main/Initializer"] = State(9, self)
  3453. # state /Main/Initializer/Waiting
  3454. self.states["/Main/Initializer/Waiting"] = State(10, self)
  3455. # state /Main/Initializer/CreatingChildSimulator
  3456. self.states["/Main/Initializer/CreatingChildSimulator"] = State(11, self)
  3457. # state /Main/Initializer/StartingChildSimulator
  3458. self.states["/Main/Initializer/StartingChildSimulator"] = State(12, self)
  3459. # state /Main/Initializer/Running
  3460. self.states["/Main/Initializer/Running"] = State(13, self)
  3461. # state /Main/Initializer/SettleBeforeWaiting
  3462. self.states["/Main/Initializer/SettleBeforeWaiting"] = State(14, self)
  3463. self.states["/Main/Initializer/SettleBeforeWaiting"].setEnter(self._Main_Initializer_SettleBeforeWaiting_enter)
  3464. self.states["/Main/Initializer/SettleBeforeWaiting"].setExit(self._Main_Initializer_SettleBeforeWaiting_exit)
  3465. # state /Main/SimulationFlow
  3466. self.states["/Main/SimulationFlow"] = State(15, self)
  3467. # state /Main/SimulationFlow/Started
  3468. self.states["/Main/SimulationFlow/Started"] = State(16, self)
  3469. # state /Main/SimulationFlow/Initialized
  3470. self.states["/Main/SimulationFlow/Initialized"] = State(17, self)
  3471. # state /Main/SimulationFlow/InitializeDebugger
  3472. self.states["/Main/SimulationFlow/InitializeDebugger"] = State(18, self)
  3473. # state /Main/SimulationFlow/Waiting
  3474. self.states["/Main/SimulationFlow/Waiting"] = State(19, self)
  3475. # state /Main/SimulationFlow/SettleBeforeCheckTermination
  3476. self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"] = State(20, self)
  3477. self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"].setEnter(self._Main_SimulationFlow_SettleBeforeCheckTermination_enter)
  3478. self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"].setExit(self._Main_SimulationFlow_SettleBeforeCheckTermination_exit)
  3479. # state /Main/SimulationFlow/CheckTermination
  3480. self.states["/Main/SimulationFlow/CheckTermination"] = State(21, self)
  3481. # state /Main/SimulationFlow/Executing
  3482. self.states["/Main/SimulationFlow/Executing"] = State(22, self)
  3483. # state /Main/SimulationFlow/Stopped
  3484. self.states["/Main/SimulationFlow/Stopped"] = State(23, self)
  3485. # state /Stopped
  3486. self.states["/Stopped"] = State(24, self)
  3487. # add children
  3488. self.states[""].addChild(self.states["/Main"])
  3489. self.states[""].addChild(self.states["/Stopped"])
  3490. self.states["/Main"].addChild(self.states["/Main/ModeSelector"])
  3491. self.states["/Main"].addChild(self.states["/Main/ChildState"])
  3492. self.states["/Main"].addChild(self.states["/Main/Initializer"])
  3493. self.states["/Main"].addChild(self.states["/Main/SimulationFlow"])
  3494. self.states["/Main/ModeSelector"].addChild(self.states["/Main/ModeSelector/Paused"])
  3495. self.states["/Main/ModeSelector"].addChild(self.states["/Main/ModeSelector/Running"])
  3496. self.states["/Main/ModeSelector/Running"].addChild(self.states["/Main/ModeSelector/Running/Continuous"])
  3497. self.states["/Main/ChildState"].addChild(self.states["/Main/ChildState/Uninitialized"])
  3498. self.states["/Main/ChildState"].addChild(self.states["/Main/ChildState/Initialized"])
  3499. self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/Waiting"])
  3500. self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/CreatingChildSimulator"])
  3501. self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/StartingChildSimulator"])
  3502. self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/Running"])
  3503. self.states["/Main/Initializer"].addChild(self.states["/Main/Initializer/SettleBeforeWaiting"])
  3504. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Started"])
  3505. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Initialized"])
  3506. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/InitializeDebugger"])
  3507. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Waiting"])
  3508. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"])
  3509. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/CheckTermination"])
  3510. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Executing"])
  3511. self.states["/Main/SimulationFlow"].addChild(self.states["/Main/SimulationFlow/Stopped"])
  3512. self.states[""].fixTree()
  3513. self.states[""].default_state = self.states["/Main"]
  3514. self.states["/Main/ModeSelector"].default_state = self.states["/Main/ModeSelector/Paused"]
  3515. self.states["/Main/ModeSelector/Running"].default_state = self.states["/Main/ModeSelector/Running/Continuous"]
  3516. self.states["/Main/ChildState"].default_state = self.states["/Main/ChildState/Uninitialized"]
  3517. self.states["/Main/Initializer"].default_state = self.states["/Main/Initializer/Waiting"]
  3518. self.states["/Main/SimulationFlow"].default_state = self.states["/Main/SimulationFlow/Started"]
  3519. # transition /Main/ModeSelector/Paused
  3520. _Main_ModeSelector_Paused_0 = Transition(self, self.states["/Main/ModeSelector/Paused"], [self.states["/Main/ModeSelector/Running/Continuous"]])
  3521. _Main_ModeSelector_Paused_0.setTrigger(Event("CBDSmallStep.Execute", None))
  3522. self.states["/Main/ModeSelector/Paused"].addTransition(_Main_ModeSelector_Paused_0)
  3523. # transition /Main/ChildState/Uninitialized
  3524. _Main_ChildState_Uninitialized_0 = Transition(self, self.states["/Main/ChildState/Uninitialized"], [self.states["/Main/ChildState/Initialized"]])
  3525. _Main_ChildState_Uninitialized_0.setTrigger(Event("CBDBlock.Initialized", None))
  3526. self.states["/Main/ChildState/Uninitialized"].addTransition(_Main_ChildState_Uninitialized_0)
  3527. # transition /Main/ChildState/Initialized
  3528. _Main_ChildState_Initialized_0 = Transition(self, self.states["/Main/ChildState/Initialized"], [self.states["/Main/ChildState/Uninitialized"]])
  3529. _Main_ChildState_Initialized_0.setAction(self._Main_ChildState_Initialized_0_exec)
  3530. _Main_ChildState_Initialized_0.setTrigger(Event("CBDBlock.Finished", None))
  3531. self.states["/Main/ChildState/Initialized"].addTransition(_Main_ChildState_Initialized_0)
  3532. # transition /Main/Initializer/Waiting
  3533. _Main_Initializer_Waiting_0 = Transition(self, self.states["/Main/Initializer/Waiting"], [self.states["/Main/Initializer/CreatingChildSimulator"]])
  3534. _Main_Initializer_Waiting_0.setAction(self._Main_Initializer_Waiting_0_exec)
  3535. _Main_Initializer_Waiting_0.setTrigger(None)
  3536. _Main_Initializer_Waiting_0.setGuard(self._Main_Initializer_Waiting_0_guard)
  3537. self.states["/Main/Initializer/Waiting"].addTransition(_Main_Initializer_Waiting_0)
  3538. # transition /Main/Initializer/CreatingChildSimulator
  3539. _Main_Initializer_CreatingChildSimulator_0 = Transition(self, self.states["/Main/Initializer/CreatingChildSimulator"], [self.states["/Main/Initializer/StartingChildSimulator"]])
  3540. _Main_Initializer_CreatingChildSimulator_0.setAction(self._Main_Initializer_CreatingChildSimulator_0_exec)
  3541. _Main_Initializer_CreatingChildSimulator_0.setTrigger(Event("instance_created", None))
  3542. self.states["/Main/Initializer/CreatingChildSimulator"].addTransition(_Main_Initializer_CreatingChildSimulator_0)
  3543. # transition /Main/Initializer/StartingChildSimulator
  3544. _Main_Initializer_StartingChildSimulator_0 = Transition(self, self.states["/Main/Initializer/StartingChildSimulator"], [self.states["/Main/Initializer/Running"]])
  3545. _Main_Initializer_StartingChildSimulator_0.setTrigger(Event("CBDBlock.Initialized", None))
  3546. self.states["/Main/Initializer/StartingChildSimulator"].addTransition(_Main_Initializer_StartingChildSimulator_0)
  3547. # transition /Main/Initializer/Running
  3548. _Main_Initializer_Running_0 = Transition(self, self.states["/Main/Initializer/Running"], [self.states["/Main/Initializer/SettleBeforeWaiting"]])
  3549. _Main_Initializer_Running_0.setTrigger(Event("CBDBlock.Finished", None))
  3550. self.states["/Main/Initializer/Running"].addTransition(_Main_Initializer_Running_0)
  3551. # transition /Main/Initializer/SettleBeforeWaiting
  3552. _Main_Initializer_SettleBeforeWaiting_0 = Transition(self, self.states["/Main/Initializer/SettleBeforeWaiting"], [self.states["/Main/Initializer/Waiting"]])
  3553. _Main_Initializer_SettleBeforeWaiting_0.setTrigger(Event("_0after"))
  3554. self.states["/Main/Initializer/SettleBeforeWaiting"].addTransition(_Main_Initializer_SettleBeforeWaiting_0)
  3555. # transition /Main/SimulationFlow/Started
  3556. _Main_SimulationFlow_Started_0 = Transition(self, self.states["/Main/SimulationFlow/Started"], [self.states["/Main/SimulationFlow/Initialized"]])
  3557. _Main_SimulationFlow_Started_0.setAction(self._Main_SimulationFlow_Started_0_exec)
  3558. _Main_SimulationFlow_Started_0.setTrigger(None)
  3559. self.states["/Main/SimulationFlow/Started"].addTransition(_Main_SimulationFlow_Started_0)
  3560. # transition /Main/SimulationFlow/Initialized
  3561. _Main_SimulationFlow_Initialized_0 = Transition(self, self.states["/Main/SimulationFlow/Initialized"], [self.states["/Main/SimulationFlow/InitializeDebugger"]])
  3562. _Main_SimulationFlow_Initialized_0.setTrigger(None)
  3563. self.states["/Main/SimulationFlow/Initialized"].addTransition(_Main_SimulationFlow_Initialized_0)
  3564. # transition /Main/SimulationFlow/InitializeDebugger
  3565. _Main_SimulationFlow_InitializeDebugger_0 = Transition(self, self.states["/Main/SimulationFlow/InitializeDebugger"], [self.states["/Main/SimulationFlow/Waiting"]])
  3566. _Main_SimulationFlow_InitializeDebugger_0.setAction(self._Main_SimulationFlow_InitializeDebugger_0_exec)
  3567. _Main_SimulationFlow_InitializeDebugger_0.setTrigger(None)
  3568. self.states["/Main/SimulationFlow/InitializeDebugger"].addTransition(_Main_SimulationFlow_InitializeDebugger_0)
  3569. # transition /Main/SimulationFlow/Waiting
  3570. _Main_SimulationFlow_Waiting_0 = Transition(self, self.states["/Main/SimulationFlow/Waiting"], [self.states["/Main/SimulationFlow/CheckTermination"]])
  3571. _Main_SimulationFlow_Waiting_0.setTrigger(None)
  3572. _Main_SimulationFlow_Waiting_0.setGuard(self._Main_SimulationFlow_Waiting_0_guard)
  3573. self.states["/Main/SimulationFlow/Waiting"].addTransition(_Main_SimulationFlow_Waiting_0)
  3574. # transition /Main/SimulationFlow/SettleBeforeCheckTermination
  3575. _Main_SimulationFlow_SettleBeforeCheckTermination_0 = Transition(self, self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"], [self.states["/Main/SimulationFlow/CheckTermination"]])
  3576. _Main_SimulationFlow_SettleBeforeCheckTermination_0.setTrigger(Event("_1after"))
  3577. self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"].addTransition(_Main_SimulationFlow_SettleBeforeCheckTermination_0)
  3578. # transition /Main/SimulationFlow/CheckTermination
  3579. _Main_SimulationFlow_CheckTermination_0 = Transition(self, self.states["/Main/SimulationFlow/CheckTermination"], [self.states["/Main/SimulationFlow/Executing"]])
  3580. _Main_SimulationFlow_CheckTermination_0.setAction(self._Main_SimulationFlow_CheckTermination_0_exec)
  3581. _Main_SimulationFlow_CheckTermination_0.setTrigger(None)
  3582. _Main_SimulationFlow_CheckTermination_0.setGuard(self._Main_SimulationFlow_CheckTermination_0_guard)
  3583. self.states["/Main/SimulationFlow/CheckTermination"].addTransition(_Main_SimulationFlow_CheckTermination_0)
  3584. _Main_SimulationFlow_CheckTermination_1 = Transition(self, self.states["/Main/SimulationFlow/CheckTermination"], [self.states["/Main/SimulationFlow/Stopped"]])
  3585. _Main_SimulationFlow_CheckTermination_1.setAction(self._Main_SimulationFlow_CheckTermination_1_exec)
  3586. _Main_SimulationFlow_CheckTermination_1.setTrigger(None)
  3587. _Main_SimulationFlow_CheckTermination_1.setGuard(self._Main_SimulationFlow_CheckTermination_1_guard)
  3588. self.states["/Main/SimulationFlow/CheckTermination"].addTransition(_Main_SimulationFlow_CheckTermination_1)
  3589. # transition /Main/SimulationFlow/Executing
  3590. _Main_SimulationFlow_Executing_0 = Transition(self, self.states["/Main/SimulationFlow/Executing"], [self.states["/Main/SimulationFlow/SettleBeforeCheckTermination"]])
  3591. _Main_SimulationFlow_Executing_0.setAction(self._Main_SimulationFlow_Executing_0_exec)
  3592. _Main_SimulationFlow_Executing_0.setTrigger(Event("CBDBlock.Finished", None))
  3593. self.states["/Main/SimulationFlow/Executing"].addTransition(_Main_SimulationFlow_Executing_0)
  3594. # transition /Main/ModeSelector/Running
  3595. _Main_ModeSelector_Running_0 = Transition(self, self.states["/Main/ModeSelector/Running"], [self.states["/Main/ModeSelector/Paused"]])
  3596. _Main_ModeSelector_Running_0.setTrigger(Event("CBDSmallStep.Finished", None))
  3597. self.states["/Main/ModeSelector/Running"].addTransition(_Main_ModeSelector_Running_0)
  3598. def _Main_Initializer_SettleBeforeWaiting_enter(self):
  3599. self.addTimer(0, self.sccd_yield())
  3600. def _Main_Initializer_SettleBeforeWaiting_exit(self):
  3601. self.removeTimer(0)
  3602. def _Main_SimulationFlow_SettleBeforeCheckTermination_enter(self):
  3603. self.addTimer(1, self.sccd_yield())
  3604. def _Main_SimulationFlow_SettleBeforeCheckTermination_exit(self):
  3605. self.removeTimer(1)
  3606. def _Main_ChildState_Initialized_0_exec(self, parameters):
  3607. self.big_step.outputEventOM(Event("delete_instance", None, [self, 'child_simulator']))
  3608. def _Main_Initializer_Waiting_0_exec(self, parameters):
  3609. self.big_step.outputEventOM(Event("create_instance", None, [self, 'child_simulator', 'CBDSimulator_Block', self.cbd_controller, self.strong_component_list[self.current_component_idx], self.cbd_controller.componentIsCycle(self.strong_component_list[self.current_component_idx], self.dependency_graph), self.iteration]))
  3610. def _Main_Initializer_Waiting_0_guard(self, parameters):
  3611. return self.inState(["/Main/ModeSelector/Running"]) and self.inState(["/Main/ChildState/Uninitialized"]) and not self.endCondition()
  3612. def _Main_Initializer_CreatingChildSimulator_0_exec(self, parameters):
  3613. self.big_step.outputEventOM(Event("start_instance", None, [self, 'child_simulator']))
  3614. def _Main_SimulationFlow_Started_0_exec(self, parameters):
  3615. self.initialize()
  3616. def _Main_SimulationFlow_InitializeDebugger_0_exec(self, parameters):
  3617. self.initializeDebugger()
  3618. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("CBDSmallStep.Initialized", None, [])]))
  3619. def _Main_SimulationFlow_Waiting_0_guard(self, parameters):
  3620. return self.inState(["/Main/ModeSelector/Running"])
  3621. def _Main_SimulationFlow_CheckTermination_0_exec(self, parameters):
  3622. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'child_simulator', Event("CBDBlock.Execute", None, [])]))
  3623. def _Main_SimulationFlow_CheckTermination_0_guard(self, parameters):
  3624. return self.inState(["/Main/ModeSelector/Running/Continuous"]) and self.inState(["/Main/ChildState/Initialized"]) and not self.endCondition()
  3625. def _Main_SimulationFlow_CheckTermination_1_exec(self, parameters):
  3626. # print '>>> (CBD) small step executed <<<'
  3627. self.finalize()
  3628. self.raiseInternalEvent(Event("CBDSmallStep.Finished", None, []))
  3629. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("CBDSmallStep.Finished", None, [self.current_component_idx, self.state])]))
  3630. def _Main_SimulationFlow_CheckTermination_1_guard(self, parameters):
  3631. return self.endCondition()
  3632. def _Main_SimulationFlow_Executing_0_exec(self, parameters):
  3633. new_state = parameters[0]
  3634. self.small_step_executed = True
  3635. self.state = new_state
  3636. def initializeStatechart(self):
  3637. # enter default state
  3638. self.default_targets = self.states["/Main"].getEffectiveTargetStates()
  3639. RuntimeClassBase.initializeStatechart(self)
  3640. class CBDSimulator_Block(RuntimeClassBase):
  3641. def __init__(self, controller, cbd_controller, block_to_compute, is_cycle, iteration):
  3642. RuntimeClassBase.__init__(self, controller)
  3643. self.semantics.big_step_maximality = StatechartSemantics.TakeMany
  3644. self.semantics.internal_event_lifeline = StatechartSemantics.Queue
  3645. self.semantics.input_event_lifeline = StatechartSemantics.FirstComboStep
  3646. self.semantics.priority = StatechartSemantics.SourceParent
  3647. self.semantics.concurrency = StatechartSemantics.Single
  3648. # build Statechart structure
  3649. self.build_statechart_structure()
  3650. # call user defined constructor
  3651. CBDSimulator_Block.user_defined_constructor(self, cbd_controller, block_to_compute, is_cycle, iteration)
  3652. def user_defined_constructor(self, cbd_controller, block_to_compute, is_cycle, iteration):
  3653. self.cbd_controller = cbd_controller
  3654. self.block_to_compute = block_to_compute
  3655. self.is_cycle = is_cycle
  3656. self.iteration = iteration
  3657. def user_defined_destructor(self):
  3658. pass
  3659. # user defined method
  3660. def computeBlock(self):
  3661. if self.is_cycle:
  3662. self.cbd_controller.computeNextAlgebraicLoop(self.block_to_compute, self.iteration)
  3663. else:
  3664. self.cbd_controller.computeNextBlock(self.block_to_compute, self.iteration)
  3665. # builds Statechart structure
  3666. def build_statechart_structure(self):
  3667. # state <root>
  3668. self.states[""] = State(0, self)
  3669. # state /Started
  3670. self.states["/Started"] = State(1, self)
  3671. # state /Waiting
  3672. self.states["/Waiting"] = State(2, self)
  3673. # state /Stopped
  3674. self.states["/Stopped"] = State(3, self)
  3675. # add children
  3676. self.states[""].addChild(self.states["/Started"])
  3677. self.states[""].addChild(self.states["/Waiting"])
  3678. self.states[""].addChild(self.states["/Stopped"])
  3679. self.states[""].fixTree()
  3680. self.states[""].default_state = self.states["/Started"]
  3681. # transition /Started
  3682. _Started_0 = Transition(self, self.states["/Started"], [self.states["/Waiting"]])
  3683. _Started_0.setAction(self._Started_0_exec)
  3684. _Started_0.setTrigger(None)
  3685. self.states["/Started"].addTransition(_Started_0)
  3686. # transition /Waiting
  3687. _Waiting_0 = Transition(self, self.states["/Waiting"], [self.states["/Stopped"]])
  3688. _Waiting_0.setAction(self._Waiting_0_exec)
  3689. _Waiting_0.setTrigger(Event("CBDBlock.Execute", None))
  3690. self.states["/Waiting"].addTransition(_Waiting_0)
  3691. def _Started_0_exec(self, parameters):
  3692. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("CBDBlock.Initialized", None, [])]))
  3693. def _Waiting_0_exec(self, parameters):
  3694. self.computeBlock()
  3695. # print '>>> (CBD) block executed <<<'
  3696. self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("CBDBlock.Finished", None, [{}])]))
  3697. def initializeStatechart(self):
  3698. # enter default state
  3699. self.default_targets = self.states["/Started"].getEffectiveTargetStates()
  3700. RuntimeClassBase.initializeStatechart(self)
  3701. class ObjectManager(ObjectManagerBase):
  3702. def __init__(self, controller):
  3703. ObjectManagerBase.__init__(self, controller)
  3704. def instantiate(self, class_name, construct_params):
  3705. if class_name == "WovenSimulator_Coordinator":
  3706. instance = WovenSimulator_Coordinator(self.controller, construct_params[0], construct_params[1], construct_params[2])
  3707. instance.associations = {}
  3708. instance.associations["child_simulator"] = Association("WovenSimulator_Simulation", 0, 1)
  3709. elif class_name == "WovenSimulator_Simulation":
  3710. instance = WovenSimulator_Simulation(self.controller, construct_params[0], construct_params[1], construct_params[2], construct_params[3])
  3711. instance.associations = {}
  3712. instance.associations["parent"] = Association("WovenSimulator_Coordinator", 1, 1)
  3713. instance.associations["child_fsa_simulator"] = Association("FSASimulator_Simulation", 0, 1)
  3714. instance.associations["child_cbd_simulator"] = Association("CBDSimulator_Simulation", 0, 1)
  3715. elif class_name == "FSASimulator_Simulation":
  3716. instance = FSASimulator_Simulation(self.controller, construct_params[0], construct_params[1], construct_params[2])
  3717. instance.associations = {}
  3718. instance.associations["parent"] = Association("WovenSimulator_Coordinator", 1, 1)
  3719. instance.associations["child_simulator"] = Association("FSASimulator_BigStep", 0, 1)
  3720. elif class_name == "FSASimulator_BigStep":
  3721. 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])
  3722. instance.associations = {}
  3723. instance.associations["parent"] = Association("FSASimulator_Simulation", 1, 1)
  3724. instance.associations["child_simulator"] = Association("FSASimulator_SmallStep", 0, 1)
  3725. elif class_name == "FSASimulator_SmallStep":
  3726. 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])
  3727. instance.associations = {}
  3728. instance.associations["parent"] = Association("FSASimulator_BigStep", 1, 1)
  3729. instance.associations["child_simulator"] = Association("FSASimulator_Transition", 0, 1)
  3730. elif class_name == "FSASimulator_Transition":
  3731. instance = FSASimulator_Transition(self.controller, construct_params[0])
  3732. instance.associations = {}
  3733. instance.associations["parent"] = Association("FSASimulator_SmallStep", 1, 1)
  3734. elif class_name == "CBDSimulator_Simulation":
  3735. instance = CBDSimulator_Simulation(self.controller, construct_params[0], construct_params[1], construct_params[2])
  3736. instance.associations = {}
  3737. instance.associations["parent"] = Association("FSASimulator_Simulation", 1, 1)
  3738. instance.associations["child_simulator"] = Association("CBDSimulator_BigStep", 0, 1)
  3739. elif class_name == "CBDSimulator_BigStep":
  3740. instance = CBDSimulator_BigStep(self.controller, construct_params[0], construct_params[1], construct_params[2], construct_params[3], construct_params[4], construct_params[5])
  3741. instance.associations = {}
  3742. instance.associations["parent"] = Association("CBDSimulator_Simulation", 1, 1)
  3743. instance.associations["child_simulator"] = Association("CBDSimulator_SmallStep", 0, 1)
  3744. elif class_name == "CBDSimulator_SmallStep":
  3745. instance = CBDSimulator_SmallStep(self.controller, construct_params[0], construct_params[1], construct_params[2], construct_params[3], construct_params[4], construct_params[5])
  3746. instance.associations = {}
  3747. instance.associations["parent"] = Association("CBDSimulator_BigStep", 1, 1)
  3748. instance.associations["child_simulator"] = Association("CBDSimulator_Block", 0, 1)
  3749. elif class_name == "CBDSimulator_Block":
  3750. instance = CBDSimulator_Block(self.controller, construct_params[0], construct_params[1], construct_params[2], construct_params[3])
  3751. instance.associations = {}
  3752. instance.associations["parent"] = Association("CBDSimulator_SmallStep", 1, 1)
  3753. else:
  3754. raise Exception("Cannot instantiate class " + class_name)
  3755. return instance
  3756. class Controller(ThreadsControllerBase):
  3757. def __init__(self, woven_model, fsa_events, cbd_options, keep_running = None, behind_schedule_callback = None):
  3758. if keep_running == None: keep_running = True
  3759. if behind_schedule_callback == None: behind_schedule_callback = None
  3760. ThreadsControllerBase.__init__(self, ObjectManager(self), keep_running, behind_schedule_callback)
  3761. self.addInputPort("user_input")
  3762. self.addInputPort("user_output")
  3763. self.object_manager.createInstance("WovenSimulator_Coordinator", [woven_model, fsa_events, cbd_options])