From f188b96e116e08293ee72aa4471041db923c59d7 Mon Sep 17 00:00:00 2001
From: aschwinn <al.schwinn@gsi.de>
Date: Fri, 9 Jun 2017 15:18:53 +0200
Subject: [PATCH] Bug 1381 - Remove @synchro and @mode to reduce complexity for
 the user

---
 .../xml/fesa/fesa_3_0_0/generateFesaDesign.py | 12 +++++-----
 .../xml/fesa/fesa_3_0_0/generateSourceCode.py |  6 ++---
 silecs-codegen/src/xml/model/Block.py         | 23 ++++++++++++++++---
 .../src/xml/test/generated_correct/AllTypes.h |  4 ++--
 4 files changed, 31 insertions(+), 14 deletions(-)

diff --git a/silecs-codegen/src/xml/fesa/fesa_3_0_0/generateFesaDesign.py b/silecs-codegen/src/xml/fesa/fesa_3_0_0/generateFesaDesign.py
index eb9a604..0759257 100644
--- a/silecs-codegen/src/xml/fesa/fesa_3_0_0/generateFesaDesign.py
+++ b/silecs-codegen/src/xml/fesa/fesa_3_0_0/generateFesaDesign.py
@@ -258,8 +258,8 @@ class FESADesignGenerator3_0_0(object):
         self.getOrCreateRegisterValueItems(prop,block,True)
         self.getOrCreateUpdateFlagItem(prop)
         self.getOrCreateCyleNameItem(prop)
-        self.getOrCreateAction(prop,'Set'+block.getFesaName(),'set',actionsNode,'custom')
-        self.getOrCreateAction(prop,'Get'+block.getFesaName(),'get',actionsNode,'custom')
+        self.getOrCreateAction(prop,block.fesaSetServerActionName,'set',actionsNode,'custom')
+        self.getOrCreateAction(prop,block.fesaGetServerActionName,'get',actionsNode,'custom')
         return prop
             
     def getOrCreateAcquisitionProperty(self,parent,actionsNode,block):
@@ -275,7 +275,7 @@ class FESADesignGenerator3_0_0(object):
         self.getOrCreateUpdateFlagItem(prop)
         self.getOrCreateCyleNameItem(prop)
         self.getOrCreateCyleStampItem(prop)
-        self.getOrCreateAction(prop,'Get'+block.getFesaName(),'get',actionsNode,'custom')
+        self.getOrCreateAction(prop,block.fesaGetServerActionName,'get',actionsNode,'custom')
         return prop
                 
             
@@ -287,8 +287,8 @@ class FESADesignGenerator3_0_0(object):
         self.getOrCreateRegisterValueItems(prop,block,True)
         self.getOrCreateUpdateFlagItem(prop)
         self.getOrCreateCyleNameItem(prop)
-        self.getOrCreateAction(prop,'Set'+block.getFesaName(),'set',actionsNode,'custom')
-        self.getOrCreateAction(prop,'Get'+block.getFesaName(),'get',actionsNode,'custom')
+        self.getOrCreateAction(prop,block.fesaSetServerActionName,'set',actionsNode,'custom')
+        self.getOrCreateAction(prop,block.fesaGetServerActionName,'get',actionsNode,'custom')
         return prop
             
     def getOrCreateGSIAcquisitionProperty(self,parent,actionsNode,block):
@@ -301,7 +301,7 @@ class FESADesignGenerator3_0_0(object):
         self.getOrCreateUpdateFlagItem(prop)
         self.getOrCreateCyleNameItem(prop)
         self.getOrCreateCyleStampItem(prop)
-        self.getOrCreateAction(prop,'Get'+block.getFesaName(),'get',actionsNode,'custom')
+        self.getOrCreateAction(prop,block.fesaGetServerActionName,'get',actionsNode,'custom')
         self.getOrCreateAcquisitionContextItem(prop)
         return prop
 
diff --git a/silecs-codegen/src/xml/fesa/fesa_3_0_0/generateSourceCode.py b/silecs-codegen/src/xml/fesa/fesa_3_0_0/generateSourceCode.py
index e3de017..e05e54f 100644
--- a/silecs-codegen/src/xml/fesa/fesa_3_0_0/generateSourceCode.py
+++ b/silecs-codegen/src/xml/fesa/fesa_3_0_0/generateSourceCode.py
@@ -35,11 +35,11 @@ from model.Block import DesignBlock
 from model.Class import DesignClass
 import libxml2
 
-def findBlockServerSetActionName(fesaRoot, blockName):
-    properties = fesaRoot.xpathEval("/equipment-model/interface/device-interface/*/*[@name='" + blockName + "']")
+def findBlockServerSetActionName(fesaRoot, propName):
+    properties = fesaRoot.xpathEval("/equipment-model/interface/device-interface/*/*[@name='" + propName + "']")
     for property in properties:
         return property.xpathEval("set-action/server-action-ref")[0].prop("server-action-name-ref")
-    raise Exception("Error: Server Action for Block '" + blockName + "' not found")
+    raise Exception("Error: Server Action for Property '" + propName + "' not found")
 
 #-------------------------------------------------------------------------  
 # Generates the H source file containing general methods
diff --git a/silecs-codegen/src/xml/model/Block.py b/silecs-codegen/src/xml/model/Block.py
index fa969e0..45ed1f6 100644
--- a/silecs-codegen/src/xml/model/Block.py
+++ b/silecs-codegen/src/xml/model/Block.py
@@ -99,15 +99,32 @@ class ParamBlock(Block):
     
                 
 class DesignBlock(Block):
+    generateFesaProperty = False
+    fesaPropertyName = ""
+    fesaGetServerActionName = ""
+    fesaSetServerActionName = ""
+            
     def __init__(self, xmlNode):
         super(DesignBlock, self).__init__(xmlNode)
-        self.fesaPropertyName = self.name
-        self.generateFesaProperty = False
+        
         if self.xmlNode.hasProp("fesaPropertyName"):
             self.fesaPropertyName = xmlNode.prop("fesaPropertyName")
+        else:
+            self.fesaPropertyName = self.name
+            
         if self.xmlNode.hasProp("generateFesaProperty"): #SilecsHEader does not have this attribute 
             self.generateFesaProperty = xsdBooleanToBoolean(xmlNode.prop("generateFesaProperty"))
-            
+
+        if self.xmlNode.hasProp("fesaGetServerActionName"):
+            self.fesaGetServerActionName = xmlNode.prop("fesaGetServerActionName")
+        else:
+            self.fesaGetServerActionName = 'Get' + self.fesaPropertyName
+
+        if self.xmlNode.hasProp("fesaSetServerActionName"):
+            self.fesaSetServerActionName = xmlNode.prop("fesaSetServerActionName")
+        else:
+            self.fesaSetServerActionName = 'Set' + self.fesaPropertyName
+
     def getFesaName(self):
         return self.fesaPropertyName
     
diff --git a/silecs-codegen/src/xml/test/generated_correct/AllTypes.h b/silecs-codegen/src/xml/test/generated_correct/AllTypes.h
index 544c28a..af3396c 100644
--- a/silecs-codegen/src/xml/test/generated_correct/AllTypes.h
+++ b/silecs-codegen/src/xml/test/generated_correct/AllTypes.h
@@ -10,8 +10,8 @@
 #include <SilecsService.h>
 #include <fesa-core/Synchronization/MultiplexingContext.h>
 #include <AllTypes/GeneratedCode/ServiceLocator.h>
-#include <AllTypes/Server/SendMyRWBlockProp.h>
-#include <AllTypes/Server/SendMyWOBlockProp.h>
+#include <AllTypes/Server/SetMyRWBlockProp.h>
+#include <AllTypes/Server/SetMyWOBlockProp.h>
 
 namespace AllTypes
 {
-- 
GitLab