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