diff --git a/experimental_epsilon/.classpath b/experimental_epsilon/.classpath
new file mode 100644
index 0000000..1a82131
--- /dev/null
+++ b/experimental_epsilon/.classpath
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/experimental_epsilon/.project b/experimental_epsilon/.project
new file mode 100644
index 0000000..4d4ae7e
--- /dev/null
+++ b/experimental_epsilon/.project
@@ -0,0 +1,28 @@
+
+
+ EMF
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+ org.eclipse.pde.ManifestBuilder
+
+
+
+
+ org.eclipse.pde.SchemaBuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+ org.eclipse.pde.PluginNature
+
+
diff --git a/experimental_epsilon/.settings/org.eclipse.core.resources.prefs b/experimental_epsilon/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/experimental_epsilon/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/=UTF-8
diff --git a/experimental_epsilon/META-INF/MANIFEST.MF b/experimental_epsilon/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..d95d802
--- /dev/null
+++ b/experimental_epsilon/META-INF/MANIFEST.MF
@@ -0,0 +1,9 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: EMF
+Bundle-SymbolicName: EMF; singleton:=true
+Bundle-Version: 0.1.0.qualifier
+Require-Bundle: org.eclipse.emf.ecore,
+ org.eclipse.epsilon.emc.uml;bundle-version="2.5.0",
+ org.eclipse.epsilon.emc.uml.dt;bundle-version="2.5.0",
+ org.eclipse.ocl.uml;bundle-version="5.19.0"
diff --git a/experimental_epsilon/bin/Declaration.egl b/experimental_epsilon/bin/Declaration.egl
new file mode 100644
index 0000000..c346029
--- /dev/null
+++ b/experimental_epsilon/bin/Declaration.egl
@@ -0,0 +1,16 @@
+// Statemachine [%=sm.name%] declaration
+
+#pragma once
+
+class [%=sm.name%] : public [%=sm.name%]Base
+{
+public:
+ static const StatePtr kInitialState;
+[% for (region in sm.regions) {
+ var regionTemplate : Template = TemplateFactory.load("DeclarationRegion.egl");
+ regionTemplate.populate("region", region);
+ regionTemplate.populate("sm", sm);
+%]
+ [%=regionTemplate.process()%]
+[%}%]
+};
diff --git a/experimental_epsilon/bin/DeclarationRegion.egl b/experimental_epsilon/bin/DeclarationRegion.egl
new file mode 100644
index 0000000..ed2944b
--- /dev/null
+++ b/experimental_epsilon/bin/DeclarationRegion.egl
@@ -0,0 +1,8 @@
+[% for (state in region.subvertices.select(s|s.type.name == "State")) {
+ var stateTemplate : Template = TemplateFactory.load("DeclarationState.egl");
+ stateTemplate.populate("state", state);
+ stateTemplate.populate("sm", sm);
+%]
+
+[%=stateTemplate.process()%]
+[%}%]
diff --git a/experimental_epsilon/bin/DeclarationState.egl b/experimental_epsilon/bin/DeclarationState.egl
new file mode 100644
index 0000000..8add0c5
--- /dev/null
+++ b/experimental_epsilon/bin/DeclarationState.egl
@@ -0,0 +1,19 @@
+// State [%=state.name%]
+static Transition [%=state.name%]Handler(ImplPtr impl, Event event);
+static const State k[%=state.name%];
+[% for (outgoing_transition in state.outgoing) {
+ var transitionTemplate : Template = TemplateFactory.load("DeclarationTransition.egl");
+ transitionTemplate.populate("start_transition", outgoing_transition);
+ transitionTemplate.populate("transition", outgoing_transition);
+ transitionTemplate.populate("state", state);
+ transitionTemplate.populate("sm", sm);
+%]
+[%=transitionTemplate.process()%]
+[%}%]
+[% for (sub_region in state.regions) {
+ var regionTemplate : Template = TemplateFactory.load("DeclarationRegion.egl");
+ regionTemplate.populate("region", sub_region);
+ regionTemplate.populate("sm", sm);
+%]
+[%=regionTemplate.process()%]
+[%}%]
diff --git a/experimental_epsilon/bin/DeclarationTransition.egl b/experimental_epsilon/bin/DeclarationTransition.egl
new file mode 100644
index 0000000..cbe1c39
--- /dev/null
+++ b/experimental_epsilon/bin/DeclarationTransition.egl
@@ -0,0 +1,14 @@
+[%if (transition.target.type.name == "State") {%]
+// Transition [%=start_transition.trigger.first.event.name%]: [%=start_transition.source.name%] -> [%=transition.target.name%]
+static const Transition::ActionType k[%=start_transition.source.name%]To[%=transition.target.name%]By[%=start_transition.trigger.first.event.name%]Actions[];
+static const Transition k[%=start_transition.source.name%]To[%=transition.target.name%]By[%=start_transition.trigger.first.event.name%];
+[%} else if ((transition.target.type.name == "Pseudostate") and (transition.target.kind.name == "choice")) {
+ for (choice_transition in transition.target.outgoing) {
+ var transitionTemplate : Template = TemplateFactory.load("DeclarationTransition.egl");
+ transitionTemplate.populate("start_transition", start_transition);
+ transitionTemplate.populate("transition", choice_transition);
+ transitionTemplate.populate("state", state);
+ transitionTemplate.populate("sm", sm);
+%]
+[%=transitionTemplate.process()%]
+[%}}%]
diff --git a/experimental_epsilon/bin/Instance.egl b/experimental_epsilon/bin/Instance.egl
new file mode 100644
index 0000000..931bb54
--- /dev/null
+++ b/experimental_epsilon/bin/Instance.egl
@@ -0,0 +1,9 @@
+// Statemachine [%=sm.name%] instance
+
+[% for (region in sm.regions) {
+ var regionTemplate : Template = TemplateFactory.load("DeclarationRegion.egl");
+ regionTemplate.populate("region", region);
+ regionTemplate.populate("sm", sm);
+%]
+ [%=regionTemplate.process()%]
+[%}%]
diff --git a/experimental_epsilon/bin/Program.egx b/experimental_epsilon/bin/Program.egx
new file mode 100644
index 0000000..b20be72
--- /dev/null
+++ b/experimental_epsilon/bin/Program.egx
@@ -0,0 +1,15 @@
+rule StatemachineDeclaration
+ transform sm : UML!StateMachine {
+
+ template : "Declaration.egl"
+
+ target : "gen/" + sm.name + "Declaration.hxx"
+}
+
+rule StatemachineInstance
+ transform sm : UML!StateMachine {
+
+ template : "Instance.egl"
+
+ target : "gen/" + sm.name + "Instance.hxx"
+}
diff --git a/experimental_epsilon/bin/gen/IoArHandlerMainDeclaration.hxx b/experimental_epsilon/bin/gen/IoArHandlerMainDeclaration.hxx
new file mode 100644
index 0000000..f11a0c9
--- /dev/null
+++ b/experimental_epsilon/bin/gen/IoArHandlerMainDeclaration.hxx
@@ -0,0 +1,139 @@
+// Statemachine IoArHandlerMain declaration
+
+#pragma once
+
+class IoArHandlerMain : public IoArHandlerMainBase
+{
+ public:
+ static const StatePtr kInitialState;
+
+ // State Closed
+ static Transition ClosedHandler(ImplPtr impl, Event event);
+ static const State kClosed;
+ // Transition S_PNS_ArOpend_ind: Closed -> Open
+ static const Transition::ActionType kClosedToOpenByS_PNS_ArOpend_indActions[];
+ static const Transition kClosedToOpenByS_PNS_ArOpend_ind;
+ // Transition S_PNS_SwitchoverRequestPrimary: Closed -> Closed
+ static const Transition::ActionType kClosedToClosedByS_PNS_SwitchoverRequestPrimaryActions[];
+ static const Transition kClosedToClosedByS_PNS_SwitchoverRequestPrimary;
+ // Transition S_PNS_SwitchoverRequestBackup: Closed -> Closed
+ static const Transition::ActionType kClosedToClosedByS_PNS_SwitchoverRequestBackupActions[];
+ static const Transition kClosedToClosedByS_PNS_SwitchoverRequestBackup;
+ // Transition S_PNS_ReadReq: Closed -> Closed
+ static const Transition::ActionType kClosedToClosedByS_PNS_ReadReqActions[];
+ static const Transition kClosedToClosedByS_PNS_ReadReq;
+ // Transition S_PNS_WriteReq: Closed -> Closed
+ static const Transition::ActionType kClosedToClosedByS_PNS_WriteReqActions[];
+ static const Transition kClosedToClosedByS_PNS_WriteReq;
+
+ // State Open
+ static Transition OpenHandler(ImplPtr impl, Event event);
+ static const State kOpen;
+ // Transition S_PNS_SwitchoverRequestPrimary: Open -> Open
+ static const Transition::ActionType kOpenToOpenByS_PNS_SwitchoverRequestPrimaryActions[];
+ static const Transition kOpenToOpenByS_PNS_SwitchoverRequestPrimary;
+ // Transition S_PNS_SwitchoverRequestBackup: Open -> Open
+ static const Transition::ActionType kOpenToOpenByS_PNS_SwitchoverRequestBackupActions[];
+ static const Transition kOpenToOpenByS_PNS_SwitchoverRequestBackup;
+ // Transition S_PNS_WriteReq: Open -> Open
+ static const Transition::ActionType kOpenToOpenByS_PNS_WriteReqActions[];
+ static const Transition kOpenToOpenByS_PNS_WriteReq;
+ // Transition S_PNS_ReadReq: Open -> Open
+ static const Transition::ActionType kOpenToOpenByS_PNS_ReadReqActions[];
+ static const Transition kOpenToOpenByS_PNS_ReadReq;
+ // Transition S_PNS_ArClosed_ind: Open -> Closed
+ static const Transition::ActionType kOpenToClosedByS_PNS_ArClosed_indActions[];
+ static const Transition kOpenToClosedByS_PNS_ArClosed_ind;
+ // Transition S_PNS_CheckModuleDiff: Open -> Open
+ static const Transition::ActionType kOpenToOpenByS_PNS_CheckModuleDiffActions[];
+ static const Transition kOpenToOpenByS_PNS_CheckModuleDiff;
+
+ // State WaitApplicationReadyCnf
+ static Transition WaitApplicationReadyCnfHandler(ImplPtr impl, Event event);
+ static const State kWaitApplicationReadyCnf;
+ // Transition S_PNS_ApplicationReady_cnf: WaitApplicationReadyCnf -> ApplicationReady
+ static const Transition::ActionType kWaitApplicationReadyCnfToApplicationReadyByS_PNS_ApplicationReady_cnfActions[];
+ static const Transition kWaitApplicationReadyCnfToApplicationReadyByS_PNS_ApplicationReady_cnf;
+ // Transition S_PNS_ApplicationReady_cnf: WaitApplicationReadyCnf -> WaitApplicationReadyCnf
+ static const Transition::ActionType kWaitApplicationReadyCnfToWaitApplicationReadyCnfByS_PNS_ApplicationReady_cnfActions[];
+ static const Transition kWaitApplicationReadyCnfToWaitApplicationReadyCnfByS_PNS_ApplicationReady_cnf;
+
+ // State WaitApplicationReady
+ static Transition WaitApplicationReadyHandler(ImplPtr impl, Event event);
+ static const State kWaitApplicationReady;
+ // Transition SPnpbAppTimeout: WaitApplicationReady -> WaitApplicationReadyCnf
+ static const Transition::ActionType kWaitApplicationReadyToWaitApplicationReadyCnfBySPnpbAppTimeoutActions[];
+ static const Transition kWaitApplicationReadyToWaitApplicationReadyCnfBySPnpbAppTimeout;
+ // Transition SPnpbAppTimeout: WaitApplicationReady -> WaitApplicationReady
+ static const Transition::ActionType kWaitApplicationReadyToWaitApplicationReadyBySPnpbAppTimeoutActions[];
+ static const Transition kWaitApplicationReadyToWaitApplicationReadyBySPnpbAppTimeout;
+
+ // State Parameterizing
+ static Transition ParameterizingHandler(ImplPtr impl, Event event);
+ static const State kParameterizing;
+ // Transition S_PNS_ParamEndInd: Parameterizing -> WaitApplicationReady
+ static const Transition::ActionType kParameterizingToWaitApplicationReadyByS_PNS_ParamEndIndActions[];
+ static const Transition kParameterizingToWaitApplicationReadyByS_PNS_ParamEndInd;
+ // Transition S_PNS_ParamEndInd: Parameterizing -> WaitApplicationReadyCnf
+ static const Transition::ActionType kParameterizingToWaitApplicationReadyCnfByS_PNS_ParamEndIndActions[];
+ static const Transition kParameterizingToWaitApplicationReadyCnfByS_PNS_ParamEndInd;
+
+ // State ApplicationReady
+ static Transition ApplicationReadyHandler(ImplPtr impl, Event event);
+ static const State kApplicationReady;
+
+ // State DynamicReconfigurationRunning
+ static Transition DynamicReconfigurationRunningHandler(ImplPtr impl, Event event);
+ static const State kDynamicReconfigurationRunning;
+ // Transition SPnioAppTimeoutDynReconf: DynamicReconfigurationRunning -> DynamicReconfigurationRunning
+ static const Transition::ActionType kDynamicReconfigurationRunningToDynamicReconfigurationRunningBySPnioAppTimeoutDynReconfActions[];
+ static const Transition kDynamicReconfigurationRunningToDynamicReconfigurationRunningBySPnioAppTimeoutDynReconf;
+
+ // State DrWaitPullCnf
+ static Transition DrWaitPullCnfHandler(ImplPtr impl, Event event);
+ static const State kDrWaitPullCnf;
+ // Transition S_PNS_PullSubmodule_cnf: DrWaitPullCnf -> Ready
+ static const Transition::ActionType kDrWaitPullCnfToReadyByS_PNS_PullSubmodule_cnfActions[];
+ static const Transition kDrWaitPullCnfToReadyByS_PNS_PullSubmodule_cnf;
+
+ // State DrWaitApplicationReadyCnfPlugSubmodule
+ static Transition DrWaitApplicationReadyCnfPlugSubmoduleHandler(ImplPtr impl, Event event);
+ static const State kDrWaitApplicationReadyCnfPlugSubmodule;
+ // Transition S_PNS_PlugApplicationReady_cnf: DrWaitApplicationReadyCnfPlugSubmodule -> Ready
+ static const Transition::ActionType kDrWaitApplicationReadyCnfPlugSubmoduleToReadyByS_PNS_PlugApplicationReady_cnfActions[];
+ static const Transition kDrWaitApplicationReadyCnfPlugSubmoduleToReadyByS_PNS_PlugApplicationReady_cnf;
+
+ // State DrPlugPrmSequence
+ static Transition DrPlugPrmSequenceHandler(ImplPtr impl, Event event);
+ static const State kDrPlugPrmSequence;
+ // Transition S_PNS_PlugParamEndInd: DrPlugPrmSequence -> DrWaitApplicationReadyPlugSubmodule
+ static const Transition::ActionType kDrPlugPrmSequenceToDrWaitApplicationReadyPlugSubmoduleByS_PNS_PlugParamEndIndActions[];
+ static const Transition kDrPlugPrmSequenceToDrWaitApplicationReadyPlugSubmoduleByS_PNS_PlugParamEndInd;
+
+ // State DrWaitPlugCnf
+ static Transition DrWaitPlugCnfHandler(ImplPtr impl, Event event);
+ static const State kDrWaitPlugCnf;
+ // Transition S_PNS_PlugSubmodule_cnf: DrWaitPlugCnf -> DrPlugPrmSequence
+ static const Transition::ActionType kDrWaitPlugCnfToDrPlugPrmSequenceByS_PNS_PlugSubmodule_cnfActions[];
+ static const Transition kDrWaitPlugCnfToDrPlugPrmSequenceByS_PNS_PlugSubmodule_cnf;
+
+ // State DrWaitApplicationReadyPlugSubmodule
+ static Transition DrWaitApplicationReadyPlugSubmoduleHandler(ImplPtr impl, Event event);
+ static const State kDrWaitApplicationReadyPlugSubmodule;
+ // Transition SPnpbAppTimeout: DrWaitApplicationReadyPlugSubmodule -> DrWaitApplicationReadyCnfPlugSubmodule
+ static const Transition::ActionType kDrWaitApplicationReadyPlugSubmoduleToDrWaitApplicationReadyCnfPlugSubmoduleBySPnpbAppTimeoutActions[];
+ static const Transition kDrWaitApplicationReadyPlugSubmoduleToDrWaitApplicationReadyCnfPlugSubmoduleBySPnpbAppTimeout;
+ // Transition SPnpbAppTimeout: DrWaitApplicationReadyPlugSubmodule -> DrWaitApplicationReadyPlugSubmodule
+ static const Transition::ActionType kDrWaitApplicationReadyPlugSubmoduleToDrWaitApplicationReadyPlugSubmoduleBySPnpbAppTimeoutActions[];
+ static const Transition kDrWaitApplicationReadyPlugSubmoduleToDrWaitApplicationReadyPlugSubmoduleBySPnpbAppTimeout;
+
+ // State Ready
+ static Transition ReadyHandler(ImplPtr impl, Event event);
+ static const State kReady;
+ // Transition S_PNS_DynReconfPull: Ready -> DrWaitPullCnf
+ static const Transition::ActionType kReadyToDrWaitPullCnfByS_PNS_DynReconfPullActions[];
+ static const Transition kReadyToDrWaitPullCnfByS_PNS_DynReconfPull;
+ // Transition S_PNS_DynReconfPlug: Ready -> DrWaitPlugCnf
+ static const Transition::ActionType kReadyToDrWaitPlugCnfByS_PNS_DynReconfPlugActions[];
+ static const Transition kReadyToDrWaitPlugCnfByS_PNS_DynReconfPlug;
+};
diff --git a/experimental_epsilon/bin/gen/IoArHandlerMainInstance.hxx b/experimental_epsilon/bin/gen/IoArHandlerMainInstance.hxx
new file mode 100644
index 0000000..b63f62e
--- /dev/null
+++ b/experimental_epsilon/bin/gen/IoArHandlerMainInstance.hxx
@@ -0,0 +1,132 @@
+// Statemachine IoArHandlerMain instance
+
+
+// State Closed
+static Transition ClosedHandler(ImplPtr impl, Event event);
+static const State kClosed;
+// Transition S_PNS_ArOpend_ind: Closed -> Open
+static const Transition::ActionType kClosedToOpenByS_PNS_ArOpend_indActions[];
+static const Transition kClosedToOpenByS_PNS_ArOpend_ind;
+// Transition S_PNS_SwitchoverRequestPrimary: Closed -> Closed
+static const Transition::ActionType kClosedToClosedByS_PNS_SwitchoverRequestPrimaryActions[];
+static const Transition kClosedToClosedByS_PNS_SwitchoverRequestPrimary;
+// Transition S_PNS_SwitchoverRequestBackup: Closed -> Closed
+static const Transition::ActionType kClosedToClosedByS_PNS_SwitchoverRequestBackupActions[];
+static const Transition kClosedToClosedByS_PNS_SwitchoverRequestBackup;
+// Transition S_PNS_ReadReq: Closed -> Closed
+static const Transition::ActionType kClosedToClosedByS_PNS_ReadReqActions[];
+static const Transition kClosedToClosedByS_PNS_ReadReq;
+// Transition S_PNS_WriteReq: Closed -> Closed
+static const Transition::ActionType kClosedToClosedByS_PNS_WriteReqActions[];
+static const Transition kClosedToClosedByS_PNS_WriteReq;
+
+// State Open
+static Transition OpenHandler(ImplPtr impl, Event event);
+static const State kOpen;
+// Transition S_PNS_SwitchoverRequestPrimary: Open -> Open
+static const Transition::ActionType kOpenToOpenByS_PNS_SwitchoverRequestPrimaryActions[];
+static const Transition kOpenToOpenByS_PNS_SwitchoverRequestPrimary;
+// Transition S_PNS_SwitchoverRequestBackup: Open -> Open
+static const Transition::ActionType kOpenToOpenByS_PNS_SwitchoverRequestBackupActions[];
+static const Transition kOpenToOpenByS_PNS_SwitchoverRequestBackup;
+// Transition S_PNS_WriteReq: Open -> Open
+static const Transition::ActionType kOpenToOpenByS_PNS_WriteReqActions[];
+static const Transition kOpenToOpenByS_PNS_WriteReq;
+// Transition S_PNS_ReadReq: Open -> Open
+static const Transition::ActionType kOpenToOpenByS_PNS_ReadReqActions[];
+static const Transition kOpenToOpenByS_PNS_ReadReq;
+// Transition S_PNS_ArClosed_ind: Open -> Closed
+static const Transition::ActionType kOpenToClosedByS_PNS_ArClosed_indActions[];
+static const Transition kOpenToClosedByS_PNS_ArClosed_ind;
+// Transition S_PNS_CheckModuleDiff: Open -> Open
+static const Transition::ActionType kOpenToOpenByS_PNS_CheckModuleDiffActions[];
+static const Transition kOpenToOpenByS_PNS_CheckModuleDiff;
+
+// State WaitApplicationReadyCnf
+static Transition WaitApplicationReadyCnfHandler(ImplPtr impl, Event event);
+static const State kWaitApplicationReadyCnf;
+// Transition S_PNS_ApplicationReady_cnf: WaitApplicationReadyCnf -> ApplicationReady
+static const Transition::ActionType kWaitApplicationReadyCnfToApplicationReadyByS_PNS_ApplicationReady_cnfActions[];
+static const Transition kWaitApplicationReadyCnfToApplicationReadyByS_PNS_ApplicationReady_cnf;
+// Transition S_PNS_ApplicationReady_cnf: WaitApplicationReadyCnf -> WaitApplicationReadyCnf
+static const Transition::ActionType kWaitApplicationReadyCnfToWaitApplicationReadyCnfByS_PNS_ApplicationReady_cnfActions[];
+static const Transition kWaitApplicationReadyCnfToWaitApplicationReadyCnfByS_PNS_ApplicationReady_cnf;
+
+// State WaitApplicationReady
+static Transition WaitApplicationReadyHandler(ImplPtr impl, Event event);
+static const State kWaitApplicationReady;
+// Transition SPnpbAppTimeout: WaitApplicationReady -> WaitApplicationReadyCnf
+static const Transition::ActionType kWaitApplicationReadyToWaitApplicationReadyCnfBySPnpbAppTimeoutActions[];
+static const Transition kWaitApplicationReadyToWaitApplicationReadyCnfBySPnpbAppTimeout;
+// Transition SPnpbAppTimeout: WaitApplicationReady -> WaitApplicationReady
+static const Transition::ActionType kWaitApplicationReadyToWaitApplicationReadyBySPnpbAppTimeoutActions[];
+static const Transition kWaitApplicationReadyToWaitApplicationReadyBySPnpbAppTimeout;
+
+// State Parameterizing
+static Transition ParameterizingHandler(ImplPtr impl, Event event);
+static const State kParameterizing;
+// Transition S_PNS_ParamEndInd: Parameterizing -> WaitApplicationReady
+static const Transition::ActionType kParameterizingToWaitApplicationReadyByS_PNS_ParamEndIndActions[];
+static const Transition kParameterizingToWaitApplicationReadyByS_PNS_ParamEndInd;
+// Transition S_PNS_ParamEndInd: Parameterizing -> WaitApplicationReadyCnf
+static const Transition::ActionType kParameterizingToWaitApplicationReadyCnfByS_PNS_ParamEndIndActions[];
+static const Transition kParameterizingToWaitApplicationReadyCnfByS_PNS_ParamEndInd;
+
+// State ApplicationReady
+static Transition ApplicationReadyHandler(ImplPtr impl, Event event);
+static const State kApplicationReady;
+
+// State DynamicReconfigurationRunning
+static Transition DynamicReconfigurationRunningHandler(ImplPtr impl, Event event);
+static const State kDynamicReconfigurationRunning;
+// Transition SPnioAppTimeoutDynReconf: DynamicReconfigurationRunning -> DynamicReconfigurationRunning
+static const Transition::ActionType kDynamicReconfigurationRunningToDynamicReconfigurationRunningBySPnioAppTimeoutDynReconfActions[];
+static const Transition kDynamicReconfigurationRunningToDynamicReconfigurationRunningBySPnioAppTimeoutDynReconf;
+
+// State DrWaitPullCnf
+static Transition DrWaitPullCnfHandler(ImplPtr impl, Event event);
+static const State kDrWaitPullCnf;
+// Transition S_PNS_PullSubmodule_cnf: DrWaitPullCnf -> Ready
+static const Transition::ActionType kDrWaitPullCnfToReadyByS_PNS_PullSubmodule_cnfActions[];
+static const Transition kDrWaitPullCnfToReadyByS_PNS_PullSubmodule_cnf;
+
+// State DrWaitApplicationReadyCnfPlugSubmodule
+static Transition DrWaitApplicationReadyCnfPlugSubmoduleHandler(ImplPtr impl, Event event);
+static const State kDrWaitApplicationReadyCnfPlugSubmodule;
+// Transition S_PNS_PlugApplicationReady_cnf: DrWaitApplicationReadyCnfPlugSubmodule -> Ready
+static const Transition::ActionType kDrWaitApplicationReadyCnfPlugSubmoduleToReadyByS_PNS_PlugApplicationReady_cnfActions[];
+static const Transition kDrWaitApplicationReadyCnfPlugSubmoduleToReadyByS_PNS_PlugApplicationReady_cnf;
+
+// State DrPlugPrmSequence
+static Transition DrPlugPrmSequenceHandler(ImplPtr impl, Event event);
+static const State kDrPlugPrmSequence;
+// Transition S_PNS_PlugParamEndInd: DrPlugPrmSequence -> DrWaitApplicationReadyPlugSubmodule
+static const Transition::ActionType kDrPlugPrmSequenceToDrWaitApplicationReadyPlugSubmoduleByS_PNS_PlugParamEndIndActions[];
+static const Transition kDrPlugPrmSequenceToDrWaitApplicationReadyPlugSubmoduleByS_PNS_PlugParamEndInd;
+
+// State DrWaitPlugCnf
+static Transition DrWaitPlugCnfHandler(ImplPtr impl, Event event);
+static const State kDrWaitPlugCnf;
+// Transition S_PNS_PlugSubmodule_cnf: DrWaitPlugCnf -> DrPlugPrmSequence
+static const Transition::ActionType kDrWaitPlugCnfToDrPlugPrmSequenceByS_PNS_PlugSubmodule_cnfActions[];
+static const Transition kDrWaitPlugCnfToDrPlugPrmSequenceByS_PNS_PlugSubmodule_cnf;
+
+// State DrWaitApplicationReadyPlugSubmodule
+static Transition DrWaitApplicationReadyPlugSubmoduleHandler(ImplPtr impl, Event event);
+static const State kDrWaitApplicationReadyPlugSubmodule;
+// Transition SPnpbAppTimeout: DrWaitApplicationReadyPlugSubmodule -> DrWaitApplicationReadyCnfPlugSubmodule
+static const Transition::ActionType kDrWaitApplicationReadyPlugSubmoduleToDrWaitApplicationReadyCnfPlugSubmoduleBySPnpbAppTimeoutActions[];
+static const Transition kDrWaitApplicationReadyPlugSubmoduleToDrWaitApplicationReadyCnfPlugSubmoduleBySPnpbAppTimeout;
+// Transition SPnpbAppTimeout: DrWaitApplicationReadyPlugSubmodule -> DrWaitApplicationReadyPlugSubmodule
+static const Transition::ActionType kDrWaitApplicationReadyPlugSubmoduleToDrWaitApplicationReadyPlugSubmoduleBySPnpbAppTimeoutActions[];
+static const Transition kDrWaitApplicationReadyPlugSubmoduleToDrWaitApplicationReadyPlugSubmoduleBySPnpbAppTimeout;
+
+// State Ready
+static Transition ReadyHandler(ImplPtr impl, Event event);
+static const State kReady;
+// Transition S_PNS_DynReconfPull: Ready -> DrWaitPullCnf
+static const Transition::ActionType kReadyToDrWaitPullCnfByS_PNS_DynReconfPullActions[];
+static const Transition kReadyToDrWaitPullCnfByS_PNS_DynReconfPull;
+// Transition S_PNS_DynReconfPlug: Ready -> DrWaitPlugCnf
+static const Transition::ActionType kReadyToDrWaitPlugCnfByS_PNS_DynReconfPlugActions[];
+static const Transition kReadyToDrWaitPlugCnfByS_PNS_DynReconfPlug;
diff --git a/experimental_epsilon/plugin.xml b/experimental_epsilon/plugin.xml
new file mode 100644
index 0000000..79367c5
--- /dev/null
+++ b/experimental_epsilon/plugin.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/experimental_epsilon/src/Declaration.egl b/experimental_epsilon/src/Declaration.egl
new file mode 100644
index 0000000..c346029
--- /dev/null
+++ b/experimental_epsilon/src/Declaration.egl
@@ -0,0 +1,16 @@
+// Statemachine [%=sm.name%] declaration
+
+#pragma once
+
+class [%=sm.name%] : public [%=sm.name%]Base
+{
+public:
+ static const StatePtr kInitialState;
+[% for (region in sm.regions) {
+ var regionTemplate : Template = TemplateFactory.load("DeclarationRegion.egl");
+ regionTemplate.populate("region", region);
+ regionTemplate.populate("sm", sm);
+%]
+ [%=regionTemplate.process()%]
+[%}%]
+};
diff --git a/experimental_epsilon/src/DeclarationRegion.egl b/experimental_epsilon/src/DeclarationRegion.egl
new file mode 100644
index 0000000..ed2944b
--- /dev/null
+++ b/experimental_epsilon/src/DeclarationRegion.egl
@@ -0,0 +1,8 @@
+[% for (state in region.subvertices.select(s|s.type.name == "State")) {
+ var stateTemplate : Template = TemplateFactory.load("DeclarationState.egl");
+ stateTemplate.populate("state", state);
+ stateTemplate.populate("sm", sm);
+%]
+
+[%=stateTemplate.process()%]
+[%}%]
diff --git a/experimental_epsilon/src/DeclarationState.egl b/experimental_epsilon/src/DeclarationState.egl
new file mode 100644
index 0000000..8add0c5
--- /dev/null
+++ b/experimental_epsilon/src/DeclarationState.egl
@@ -0,0 +1,19 @@
+// State [%=state.name%]
+static Transition [%=state.name%]Handler(ImplPtr impl, Event event);
+static const State k[%=state.name%];
+[% for (outgoing_transition in state.outgoing) {
+ var transitionTemplate : Template = TemplateFactory.load("DeclarationTransition.egl");
+ transitionTemplate.populate("start_transition", outgoing_transition);
+ transitionTemplate.populate("transition", outgoing_transition);
+ transitionTemplate.populate("state", state);
+ transitionTemplate.populate("sm", sm);
+%]
+[%=transitionTemplate.process()%]
+[%}%]
+[% for (sub_region in state.regions) {
+ var regionTemplate : Template = TemplateFactory.load("DeclarationRegion.egl");
+ regionTemplate.populate("region", sub_region);
+ regionTemplate.populate("sm", sm);
+%]
+[%=regionTemplate.process()%]
+[%}%]
diff --git a/experimental_epsilon/src/DeclarationTransition.egl b/experimental_epsilon/src/DeclarationTransition.egl
new file mode 100644
index 0000000..cbe1c39
--- /dev/null
+++ b/experimental_epsilon/src/DeclarationTransition.egl
@@ -0,0 +1,14 @@
+[%if (transition.target.type.name == "State") {%]
+// Transition [%=start_transition.trigger.first.event.name%]: [%=start_transition.source.name%] -> [%=transition.target.name%]
+static const Transition::ActionType k[%=start_transition.source.name%]To[%=transition.target.name%]By[%=start_transition.trigger.first.event.name%]Actions[];
+static const Transition k[%=start_transition.source.name%]To[%=transition.target.name%]By[%=start_transition.trigger.first.event.name%];
+[%} else if ((transition.target.type.name == "Pseudostate") and (transition.target.kind.name == "choice")) {
+ for (choice_transition in transition.target.outgoing) {
+ var transitionTemplate : Template = TemplateFactory.load("DeclarationTransition.egl");
+ transitionTemplate.populate("start_transition", start_transition);
+ transitionTemplate.populate("transition", choice_transition);
+ transitionTemplate.populate("state", state);
+ transitionTemplate.populate("sm", sm);
+%]
+[%=transitionTemplate.process()%]
+[%}}%]
diff --git a/experimental_epsilon/src/Instance.egl b/experimental_epsilon/src/Instance.egl
new file mode 100644
index 0000000..931bb54
--- /dev/null
+++ b/experimental_epsilon/src/Instance.egl
@@ -0,0 +1,9 @@
+// Statemachine [%=sm.name%] instance
+
+[% for (region in sm.regions) {
+ var regionTemplate : Template = TemplateFactory.load("DeclarationRegion.egl");
+ regionTemplate.populate("region", region);
+ regionTemplate.populate("sm", sm);
+%]
+ [%=regionTemplate.process()%]
+[%}%]
diff --git a/experimental_epsilon/src/Program.egx b/experimental_epsilon/src/Program.egx
new file mode 100644
index 0000000..b20be72
--- /dev/null
+++ b/experimental_epsilon/src/Program.egx
@@ -0,0 +1,15 @@
+rule StatemachineDeclaration
+ transform sm : UML!StateMachine {
+
+ template : "Declaration.egl"
+
+ target : "gen/" + sm.name + "Declaration.hxx"
+}
+
+rule StatemachineInstance
+ transform sm : UML!StateMachine {
+
+ template : "Instance.egl"
+
+ target : "gen/" + sm.name + "Instance.hxx"
+}
diff --git a/experimental_epsilon/src/gen/IoArHandlerMainDeclaration.hxx b/experimental_epsilon/src/gen/IoArHandlerMainDeclaration.hxx
new file mode 100644
index 0000000..50de7a3
--- /dev/null
+++ b/experimental_epsilon/src/gen/IoArHandlerMainDeclaration.hxx
@@ -0,0 +1,139 @@
+// Statemachine IoArHandlerMain declaration
+
+#pragma once
+
+class IoArHandlerMain : public IoArHandlerMainBase
+{
+ public:
+ static const StatePtr kInitialState;
+
+ // State Closed
+ static Transition ClosedHandler(ImplPtr impl, Event event);
+ static const State kClosed;
+ // Transition S_PNS_ArOpend_ind: Closed -> Open
+ static const Transition::ActionType kClosedToOpenByS_PNS_ArOpend_indActions[];
+ static const Transition kClosedToOpenByS_PNS_ArOpend_ind;
+ // Transition S_PNS_SwitchoverRequestPrimary: Closed -> Closed
+ static const Transition::ActionType kClosedToClosedByS_PNS_SwitchoverRequestPrimaryActions[];
+ static const Transition kClosedToClosedByS_PNS_SwitchoverRequestPrimary;
+ // Transition S_PNS_SwitchoverRequestBackup: Closed -> Closed
+ static const Transition::ActionType kClosedToClosedByS_PNS_SwitchoverRequestBackupActions[];
+ static const Transition kClosedToClosedByS_PNS_SwitchoverRequestBackup;
+ // Transition S_PNS_ReadReq: Closed -> Closed
+ static const Transition::ActionType kClosedToClosedByS_PNS_ReadReqActions[];
+ static const Transition kClosedToClosedByS_PNS_ReadReq;
+ // Transition S_PNS_WriteReq: Closed -> Closed
+ static const Transition::ActionType kClosedToClosedByS_PNS_WriteReqActions[];
+ static const Transition kClosedToClosedByS_PNS_WriteReq;
+
+ // State Open
+ static Transition OpenHandler(ImplPtr impl, Event event);
+ static const State kOpen;
+ // Transition S_PNS_SwitchoverRequestPrimary: Open -> Open
+ static const Transition::ActionType kOpenToOpenByS_PNS_SwitchoverRequestPrimaryActions[];
+ static const Transition kOpenToOpenByS_PNS_SwitchoverRequestPrimary;
+ // Transition S_PNS_SwitchoverRequestBackup: Open -> Open
+ static const Transition::ActionType kOpenToOpenByS_PNS_SwitchoverRequestBackupActions[];
+ static const Transition kOpenToOpenByS_PNS_SwitchoverRequestBackup;
+ // Transition S_PNS_WriteReq: Open -> Open
+ static const Transition::ActionType kOpenToOpenByS_PNS_WriteReqActions[];
+ static const Transition kOpenToOpenByS_PNS_WriteReq;
+ // Transition S_PNS_ReadReq: Open -> Open
+ static const Transition::ActionType kOpenToOpenByS_PNS_ReadReqActions[];
+ static const Transition kOpenToOpenByS_PNS_ReadReq;
+ // Transition S_PNS_ArClosed_ind: Open -> Closed
+ static const Transition::ActionType kOpenToClosedByS_PNS_ArClosed_indActions[];
+ static const Transition kOpenToClosedByS_PNS_ArClosed_ind;
+ // Transition S_PNS_CheckModuleDiff: Open -> Open
+ static const Transition::ActionType kOpenToOpenByS_PNS_CheckModuleDiffActions[];
+ static const Transition kOpenToOpenByS_PNS_CheckModuleDiff;
+
+ // State ApplicationReady
+ static Transition ApplicationReadyHandler(ImplPtr impl, Event event);
+ static const State kApplicationReady;
+
+ // State Ready
+ static Transition ReadyHandler(ImplPtr impl, Event event);
+ static const State kReady;
+ // Transition S_PNS_DynReconfPull: Ready -> DrWaitPullCnf
+ static const Transition::ActionType kReadyToDrWaitPullCnfByS_PNS_DynReconfPullActions[];
+ static const Transition kReadyToDrWaitPullCnfByS_PNS_DynReconfPull;
+ // Transition S_PNS_DynReconfPlug: Ready -> DrWaitPlugCnf
+ static const Transition::ActionType kReadyToDrWaitPlugCnfByS_PNS_DynReconfPlugActions[];
+ static const Transition kReadyToDrWaitPlugCnfByS_PNS_DynReconfPlug;
+
+ // State DynamicReconfigurationRunning
+ static Transition DynamicReconfigurationRunningHandler(ImplPtr impl, Event event);
+ static const State kDynamicReconfigurationRunning;
+ // Transition SPnioAppTimeoutDynReconf: DynamicReconfigurationRunning -> DynamicReconfigurationRunning
+ static const Transition::ActionType kDynamicReconfigurationRunningToDynamicReconfigurationRunningBySPnioAppTimeoutDynReconfActions[];
+ static const Transition kDynamicReconfigurationRunningToDynamicReconfigurationRunningBySPnioAppTimeoutDynReconf;
+
+ // State DrWaitApplicationReadyPlugSubmodule
+ static Transition DrWaitApplicationReadyPlugSubmoduleHandler(ImplPtr impl, Event event);
+ static const State kDrWaitApplicationReadyPlugSubmodule;
+ // Transition SPnpbAppTimeout: DrWaitApplicationReadyPlugSubmodule -> DrWaitApplicationReadyCnfPlugSubmodule
+ static const Transition::ActionType kDrWaitApplicationReadyPlugSubmoduleToDrWaitApplicationReadyCnfPlugSubmoduleBySPnpbAppTimeoutActions[];
+ static const Transition kDrWaitApplicationReadyPlugSubmoduleToDrWaitApplicationReadyCnfPlugSubmoduleBySPnpbAppTimeout;
+ // Transition SPnpbAppTimeout: DrWaitApplicationReadyPlugSubmodule -> DrWaitApplicationReadyPlugSubmodule
+ static const Transition::ActionType kDrWaitApplicationReadyPlugSubmoduleToDrWaitApplicationReadyPlugSubmoduleBySPnpbAppTimeoutActions[];
+ static const Transition kDrWaitApplicationReadyPlugSubmoduleToDrWaitApplicationReadyPlugSubmoduleBySPnpbAppTimeout;
+
+ // State DrWaitPullCnf
+ static Transition DrWaitPullCnfHandler(ImplPtr impl, Event event);
+ static const State kDrWaitPullCnf;
+ // Transition S_PNS_PullSubmodule_cnf: DrWaitPullCnf -> Ready
+ static const Transition::ActionType kDrWaitPullCnfToReadyByS_PNS_PullSubmodule_cnfActions[];
+ static const Transition kDrWaitPullCnfToReadyByS_PNS_PullSubmodule_cnf;
+
+ // State DrWaitApplicationReadyCnfPlugSubmodule
+ static Transition DrWaitApplicationReadyCnfPlugSubmoduleHandler(ImplPtr impl, Event event);
+ static const State kDrWaitApplicationReadyCnfPlugSubmodule;
+ // Transition S_PNS_PlugApplicationReady_cnf: DrWaitApplicationReadyCnfPlugSubmodule -> Ready
+ static const Transition::ActionType kDrWaitApplicationReadyCnfPlugSubmoduleToReadyByS_PNS_PlugApplicationReady_cnfActions[];
+ static const Transition kDrWaitApplicationReadyCnfPlugSubmoduleToReadyByS_PNS_PlugApplicationReady_cnf;
+
+ // State DrWaitPlugCnf
+ static Transition DrWaitPlugCnfHandler(ImplPtr impl, Event event);
+ static const State kDrWaitPlugCnf;
+ // Transition S_PNS_PlugSubmodule_cnf: DrWaitPlugCnf -> DrPlugPrmSequence
+ static const Transition::ActionType kDrWaitPlugCnfToDrPlugPrmSequenceByS_PNS_PlugSubmodule_cnfActions[];
+ static const Transition kDrWaitPlugCnfToDrPlugPrmSequenceByS_PNS_PlugSubmodule_cnf;
+
+ // State DrPlugPrmSequence
+ static Transition DrPlugPrmSequenceHandler(ImplPtr impl, Event event);
+ static const State kDrPlugPrmSequence;
+ // Transition S_PNS_PlugParamEndInd: DrPlugPrmSequence -> DrWaitApplicationReadyPlugSubmodule
+ static const Transition::ActionType kDrPlugPrmSequenceToDrWaitApplicationReadyPlugSubmoduleByS_PNS_PlugParamEndIndActions[];
+ static const Transition kDrPlugPrmSequenceToDrWaitApplicationReadyPlugSubmoduleByS_PNS_PlugParamEndInd;
+
+ // State Parameterizing
+ static Transition ParameterizingHandler(ImplPtr impl, Event event);
+ static const State kParameterizing;
+ // Transition S_PNS_ParamEndInd: Parameterizing -> WaitApplicationReady
+ static const Transition::ActionType kParameterizingToWaitApplicationReadyByS_PNS_ParamEndIndActions[];
+ static const Transition kParameterizingToWaitApplicationReadyByS_PNS_ParamEndInd;
+ // Transition S_PNS_ParamEndInd: Parameterizing -> WaitApplicationReadyCnf
+ static const Transition::ActionType kParameterizingToWaitApplicationReadyCnfByS_PNS_ParamEndIndActions[];
+ static const Transition kParameterizingToWaitApplicationReadyCnfByS_PNS_ParamEndInd;
+
+ // State WaitApplicationReadyCnf
+ static Transition WaitApplicationReadyCnfHandler(ImplPtr impl, Event event);
+ static const State kWaitApplicationReadyCnf;
+ // Transition S_PNS_ApplicationReady_cnf: WaitApplicationReadyCnf -> ApplicationReady
+ static const Transition::ActionType kWaitApplicationReadyCnfToApplicationReadyByS_PNS_ApplicationReady_cnfActions[];
+ static const Transition kWaitApplicationReadyCnfToApplicationReadyByS_PNS_ApplicationReady_cnf;
+ // Transition S_PNS_ApplicationReady_cnf: WaitApplicationReadyCnf -> WaitApplicationReadyCnf
+ static const Transition::ActionType kWaitApplicationReadyCnfToWaitApplicationReadyCnfByS_PNS_ApplicationReady_cnfActions[];
+ static const Transition kWaitApplicationReadyCnfToWaitApplicationReadyCnfByS_PNS_ApplicationReady_cnf;
+
+ // State WaitApplicationReady
+ static Transition WaitApplicationReadyHandler(ImplPtr impl, Event event);
+ static const State kWaitApplicationReady;
+ // Transition SPnpbAppTimeout: WaitApplicationReady -> WaitApplicationReadyCnf
+ static const Transition::ActionType kWaitApplicationReadyToWaitApplicationReadyCnfBySPnpbAppTimeoutActions[];
+ static const Transition kWaitApplicationReadyToWaitApplicationReadyCnfBySPnpbAppTimeout;
+ // Transition SPnpbAppTimeout: WaitApplicationReady -> WaitApplicationReady
+ static const Transition::ActionType kWaitApplicationReadyToWaitApplicationReadyBySPnpbAppTimeoutActions[];
+ static const Transition kWaitApplicationReadyToWaitApplicationReadyBySPnpbAppTimeout;
+};
diff --git a/experimental_epsilon/src/gen/IoArHandlerMainInstance.hxx b/experimental_epsilon/src/gen/IoArHandlerMainInstance.hxx
new file mode 100644
index 0000000..6b0d721
--- /dev/null
+++ b/experimental_epsilon/src/gen/IoArHandlerMainInstance.hxx
@@ -0,0 +1,132 @@
+// Statemachine IoArHandlerMain instance
+
+
+// State Closed
+static Transition ClosedHandler(ImplPtr impl, Event event);
+static const State kClosed;
+// Transition S_PNS_ArOpend_ind: Closed -> Open
+static const Transition::ActionType kClosedToOpenByS_PNS_ArOpend_indActions[];
+static const Transition kClosedToOpenByS_PNS_ArOpend_ind;
+// Transition S_PNS_SwitchoverRequestPrimary: Closed -> Closed
+static const Transition::ActionType kClosedToClosedByS_PNS_SwitchoverRequestPrimaryActions[];
+static const Transition kClosedToClosedByS_PNS_SwitchoverRequestPrimary;
+// Transition S_PNS_SwitchoverRequestBackup: Closed -> Closed
+static const Transition::ActionType kClosedToClosedByS_PNS_SwitchoverRequestBackupActions[];
+static const Transition kClosedToClosedByS_PNS_SwitchoverRequestBackup;
+// Transition S_PNS_ReadReq: Closed -> Closed
+static const Transition::ActionType kClosedToClosedByS_PNS_ReadReqActions[];
+static const Transition kClosedToClosedByS_PNS_ReadReq;
+// Transition S_PNS_WriteReq: Closed -> Closed
+static const Transition::ActionType kClosedToClosedByS_PNS_WriteReqActions[];
+static const Transition kClosedToClosedByS_PNS_WriteReq;
+
+// State Open
+static Transition OpenHandler(ImplPtr impl, Event event);
+static const State kOpen;
+// Transition S_PNS_SwitchoverRequestPrimary: Open -> Open
+static const Transition::ActionType kOpenToOpenByS_PNS_SwitchoverRequestPrimaryActions[];
+static const Transition kOpenToOpenByS_PNS_SwitchoverRequestPrimary;
+// Transition S_PNS_SwitchoverRequestBackup: Open -> Open
+static const Transition::ActionType kOpenToOpenByS_PNS_SwitchoverRequestBackupActions[];
+static const Transition kOpenToOpenByS_PNS_SwitchoverRequestBackup;
+// Transition S_PNS_WriteReq: Open -> Open
+static const Transition::ActionType kOpenToOpenByS_PNS_WriteReqActions[];
+static const Transition kOpenToOpenByS_PNS_WriteReq;
+// Transition S_PNS_ReadReq: Open -> Open
+static const Transition::ActionType kOpenToOpenByS_PNS_ReadReqActions[];
+static const Transition kOpenToOpenByS_PNS_ReadReq;
+// Transition S_PNS_ArClosed_ind: Open -> Closed
+static const Transition::ActionType kOpenToClosedByS_PNS_ArClosed_indActions[];
+static const Transition kOpenToClosedByS_PNS_ArClosed_ind;
+// Transition S_PNS_CheckModuleDiff: Open -> Open
+static const Transition::ActionType kOpenToOpenByS_PNS_CheckModuleDiffActions[];
+static const Transition kOpenToOpenByS_PNS_CheckModuleDiff;
+
+// State ApplicationReady
+static Transition ApplicationReadyHandler(ImplPtr impl, Event event);
+static const State kApplicationReady;
+
+// State Ready
+static Transition ReadyHandler(ImplPtr impl, Event event);
+static const State kReady;
+// Transition S_PNS_DynReconfPull: Ready -> DrWaitPullCnf
+static const Transition::ActionType kReadyToDrWaitPullCnfByS_PNS_DynReconfPullActions[];
+static const Transition kReadyToDrWaitPullCnfByS_PNS_DynReconfPull;
+// Transition S_PNS_DynReconfPlug: Ready -> DrWaitPlugCnf
+static const Transition::ActionType kReadyToDrWaitPlugCnfByS_PNS_DynReconfPlugActions[];
+static const Transition kReadyToDrWaitPlugCnfByS_PNS_DynReconfPlug;
+
+// State DynamicReconfigurationRunning
+static Transition DynamicReconfigurationRunningHandler(ImplPtr impl, Event event);
+static const State kDynamicReconfigurationRunning;
+// Transition SPnioAppTimeoutDynReconf: DynamicReconfigurationRunning -> DynamicReconfigurationRunning
+static const Transition::ActionType kDynamicReconfigurationRunningToDynamicReconfigurationRunningBySPnioAppTimeoutDynReconfActions[];
+static const Transition kDynamicReconfigurationRunningToDynamicReconfigurationRunningBySPnioAppTimeoutDynReconf;
+
+// State DrWaitApplicationReadyPlugSubmodule
+static Transition DrWaitApplicationReadyPlugSubmoduleHandler(ImplPtr impl, Event event);
+static const State kDrWaitApplicationReadyPlugSubmodule;
+// Transition SPnpbAppTimeout: DrWaitApplicationReadyPlugSubmodule -> DrWaitApplicationReadyCnfPlugSubmodule
+static const Transition::ActionType kDrWaitApplicationReadyPlugSubmoduleToDrWaitApplicationReadyCnfPlugSubmoduleBySPnpbAppTimeoutActions[];
+static const Transition kDrWaitApplicationReadyPlugSubmoduleToDrWaitApplicationReadyCnfPlugSubmoduleBySPnpbAppTimeout;
+// Transition SPnpbAppTimeout: DrWaitApplicationReadyPlugSubmodule -> DrWaitApplicationReadyPlugSubmodule
+static const Transition::ActionType kDrWaitApplicationReadyPlugSubmoduleToDrWaitApplicationReadyPlugSubmoduleBySPnpbAppTimeoutActions[];
+static const Transition kDrWaitApplicationReadyPlugSubmoduleToDrWaitApplicationReadyPlugSubmoduleBySPnpbAppTimeout;
+
+// State DrWaitPullCnf
+static Transition DrWaitPullCnfHandler(ImplPtr impl, Event event);
+static const State kDrWaitPullCnf;
+// Transition S_PNS_PullSubmodule_cnf: DrWaitPullCnf -> Ready
+static const Transition::ActionType kDrWaitPullCnfToReadyByS_PNS_PullSubmodule_cnfActions[];
+static const Transition kDrWaitPullCnfToReadyByS_PNS_PullSubmodule_cnf;
+
+// State DrWaitApplicationReadyCnfPlugSubmodule
+static Transition DrWaitApplicationReadyCnfPlugSubmoduleHandler(ImplPtr impl, Event event);
+static const State kDrWaitApplicationReadyCnfPlugSubmodule;
+// Transition S_PNS_PlugApplicationReady_cnf: DrWaitApplicationReadyCnfPlugSubmodule -> Ready
+static const Transition::ActionType kDrWaitApplicationReadyCnfPlugSubmoduleToReadyByS_PNS_PlugApplicationReady_cnfActions[];
+static const Transition kDrWaitApplicationReadyCnfPlugSubmoduleToReadyByS_PNS_PlugApplicationReady_cnf;
+
+// State DrWaitPlugCnf
+static Transition DrWaitPlugCnfHandler(ImplPtr impl, Event event);
+static const State kDrWaitPlugCnf;
+// Transition S_PNS_PlugSubmodule_cnf: DrWaitPlugCnf -> DrPlugPrmSequence
+static const Transition::ActionType kDrWaitPlugCnfToDrPlugPrmSequenceByS_PNS_PlugSubmodule_cnfActions[];
+static const Transition kDrWaitPlugCnfToDrPlugPrmSequenceByS_PNS_PlugSubmodule_cnf;
+
+// State DrPlugPrmSequence
+static Transition DrPlugPrmSequenceHandler(ImplPtr impl, Event event);
+static const State kDrPlugPrmSequence;
+// Transition S_PNS_PlugParamEndInd: DrPlugPrmSequence -> DrWaitApplicationReadyPlugSubmodule
+static const Transition::ActionType kDrPlugPrmSequenceToDrWaitApplicationReadyPlugSubmoduleByS_PNS_PlugParamEndIndActions[];
+static const Transition kDrPlugPrmSequenceToDrWaitApplicationReadyPlugSubmoduleByS_PNS_PlugParamEndInd;
+
+// State Parameterizing
+static Transition ParameterizingHandler(ImplPtr impl, Event event);
+static const State kParameterizing;
+// Transition S_PNS_ParamEndInd: Parameterizing -> WaitApplicationReady
+static const Transition::ActionType kParameterizingToWaitApplicationReadyByS_PNS_ParamEndIndActions[];
+static const Transition kParameterizingToWaitApplicationReadyByS_PNS_ParamEndInd;
+// Transition S_PNS_ParamEndInd: Parameterizing -> WaitApplicationReadyCnf
+static const Transition::ActionType kParameterizingToWaitApplicationReadyCnfByS_PNS_ParamEndIndActions[];
+static const Transition kParameterizingToWaitApplicationReadyCnfByS_PNS_ParamEndInd;
+
+// State WaitApplicationReadyCnf
+static Transition WaitApplicationReadyCnfHandler(ImplPtr impl, Event event);
+static const State kWaitApplicationReadyCnf;
+// Transition S_PNS_ApplicationReady_cnf: WaitApplicationReadyCnf -> ApplicationReady
+static const Transition::ActionType kWaitApplicationReadyCnfToApplicationReadyByS_PNS_ApplicationReady_cnfActions[];
+static const Transition kWaitApplicationReadyCnfToApplicationReadyByS_PNS_ApplicationReady_cnf;
+// Transition S_PNS_ApplicationReady_cnf: WaitApplicationReadyCnf -> WaitApplicationReadyCnf
+static const Transition::ActionType kWaitApplicationReadyCnfToWaitApplicationReadyCnfByS_PNS_ApplicationReady_cnfActions[];
+static const Transition kWaitApplicationReadyCnfToWaitApplicationReadyCnfByS_PNS_ApplicationReady_cnf;
+
+// State WaitApplicationReady
+static Transition WaitApplicationReadyHandler(ImplPtr impl, Event event);
+static const State kWaitApplicationReady;
+// Transition SPnpbAppTimeout: WaitApplicationReady -> WaitApplicationReadyCnf
+static const Transition::ActionType kWaitApplicationReadyToWaitApplicationReadyCnfBySPnpbAppTimeoutActions[];
+static const Transition kWaitApplicationReadyToWaitApplicationReadyCnfBySPnpbAppTimeout;
+// Transition SPnpbAppTimeout: WaitApplicationReady -> WaitApplicationReady
+static const Transition::ActionType kWaitApplicationReadyToWaitApplicationReadyBySPnpbAppTimeoutActions[];
+static const Transition kWaitApplicationReadyToWaitApplicationReadyBySPnpbAppTimeout;