From cb8abf71cf1dba9fd7bcbbcddadcc7f2c593ad35 Mon Sep 17 00:00:00 2001 From: Dirk Ziegelmeier Date: Wed, 20 Dec 2023 21:41:31 +0100 Subject: [PATCH] Start working on eclipse epsilon generator --- experimental_epsilon/.classpath | 7 + experimental_epsilon/.project | 28 ++++ .../org.eclipse.core.resources.prefs | 2 + experimental_epsilon/META-INF/MANIFEST.MF | 9 ++ experimental_epsilon/bin/Declaration.egl | 16 ++ .../bin/DeclarationRegion.egl | 8 + experimental_epsilon/bin/DeclarationState.egl | 19 +++ .../bin/DeclarationTransition.egl | 14 ++ experimental_epsilon/bin/Instance.egl | 9 ++ experimental_epsilon/bin/Program.egx | 15 ++ .../bin/gen/IoArHandlerMainDeclaration.hxx | 139 ++++++++++++++++++ .../bin/gen/IoArHandlerMainInstance.hxx | 132 +++++++++++++++++ experimental_epsilon/plugin.xml | 7 + experimental_epsilon/src/Declaration.egl | 16 ++ .../src/DeclarationRegion.egl | 8 + experimental_epsilon/src/DeclarationState.egl | 19 +++ .../src/DeclarationTransition.egl | 14 ++ experimental_epsilon/src/Instance.egl | 9 ++ experimental_epsilon/src/Program.egx | 15 ++ .../src/gen/IoArHandlerMainDeclaration.hxx | 139 ++++++++++++++++++ .../src/gen/IoArHandlerMainInstance.hxx | 132 +++++++++++++++++ 21 files changed, 757 insertions(+) create mode 100644 experimental_epsilon/.classpath create mode 100644 experimental_epsilon/.project create mode 100644 experimental_epsilon/.settings/org.eclipse.core.resources.prefs create mode 100644 experimental_epsilon/META-INF/MANIFEST.MF create mode 100644 experimental_epsilon/bin/Declaration.egl create mode 100644 experimental_epsilon/bin/DeclarationRegion.egl create mode 100644 experimental_epsilon/bin/DeclarationState.egl create mode 100644 experimental_epsilon/bin/DeclarationTransition.egl create mode 100644 experimental_epsilon/bin/Instance.egl create mode 100644 experimental_epsilon/bin/Program.egx create mode 100644 experimental_epsilon/bin/gen/IoArHandlerMainDeclaration.hxx create mode 100644 experimental_epsilon/bin/gen/IoArHandlerMainInstance.hxx create mode 100644 experimental_epsilon/plugin.xml create mode 100644 experimental_epsilon/src/Declaration.egl create mode 100644 experimental_epsilon/src/DeclarationRegion.egl create mode 100644 experimental_epsilon/src/DeclarationState.egl create mode 100644 experimental_epsilon/src/DeclarationTransition.egl create mode 100644 experimental_epsilon/src/Instance.egl create mode 100644 experimental_epsilon/src/Program.egx create mode 100644 experimental_epsilon/src/gen/IoArHandlerMainDeclaration.hxx create mode 100644 experimental_epsilon/src/gen/IoArHandlerMainInstance.hxx 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;