Skip to content
Snippets Groups Projects
Commit ae931a25 authored by al.schwinn's avatar al.schwinn
Browse files

Bug 1407 - Remove Plugin specific design validation Rules

parent 792b7513
No related branches found
No related tags found
No related merge requests found
......@@ -464,36 +464,25 @@ cCommonGet = """
Silecs::Device* pPLCDevice = pPLC->getDevice(pDevice->plcDeviceLabel.get());
"""
cRegVar = """ Silecs::Register* pRegister = NULL;
"""
cGetArrayVar = """ uint32_t dim1 = 1;
"""
cGetArray2DVar = """ uint32_t dim2 = 1;
"""
cSetArrayVar = """ uint32_t dim1 = 1;
uint32_t fesaDim1;
"""
cSetArray2DVar = """ uint32_t dim2 = 1;
uint32_t fesaDim2;
"""
cRecv = """ if (recvNow) pPLCDevice -> recv(blockName_);
"""
cGetStringReg = """
pRegister = pPLCDevice->getRegister("${regName}");
pDevice->${fieldName}.set(pRegister->getValString().c_str(), pContext);
{
Silecs::Register* pRegister = pPLCDevice->getRegister("${regName}");
pDevice->${fieldName}.set(pRegister->getValString().c_str(), pContext);
}
"""
cGetStringArrayReg = """
{
pRegister = pPLCDevice->getRegister("${regName}");
dim1 = pRegister->getDimension1();
const std::string** stdStringArray = pRegister->getRefStringArray(dim1);
for (unsigned int i=0; i<dim1; i++)
{ pDevice->${fieldName}.setString(stdStringArray[i]->c_str(), i, pContext);
}
Silecs::Register* pRegister = pPLCDevice->getRegister("${regName}");
uint32_t dim1 = pRegister->getDimension1();
const std::string** stdStringArray = pRegister->getRefStringArray(dim1);
for (unsigned int i=0; i<dim1; i++)
{
pDevice->${fieldName}.setString(stdStringArray[i]->c_str(), i, pContext);
}
}
"""
......@@ -501,34 +490,42 @@ cGetScalarReg = """
pDevice->${fieldName}.set( pPLCDevice->getRegister("${regName}")->getVal${regType}(), pContext);"""
cGetArrayReg = """
pRegister = pPLCDevice->getRegister("${regName}");
dim1 = pRegister->getDimension1();
{
Silecs::Register* pRegister = pPLCDevice->getRegister("${regName}");
uint32_t dim1 = pRegister->getDimension1();
pDevice->${fieldName}.set(pRegister->getRef${regType}Array(dim1), dim1, pContext);
}
"""
cGetArray2DReg = """
pRegister = pPLCDevice->getRegister("${regName}");
dim1 = pRegister->getDimension1();
dim2 = pRegister->getDimension2();
pDevice->${fieldName}.set(pRegister->getRef${regType}Array2D(dim1, dim2), dim1, dim2, pContext);
{
Silecs::Register* pRegister = pPLCDevice->getRegister("${regName}");
uint32_t dim1 = pRegister->getDimension1();
uint32_t dim2 = pRegister->getDimension2();
pDevice->${fieldName}.set(pRegister->getRef${regType}Array2D(dim1, dim2), dim1, dim2, pContext);
}
"""
cGetUnsignedArrayReg = """
pRegister = pPLCDevice->getRegister("${regName}");
dim1 = pRegister->getDimension1();
{
Silecs::Register* pRegister = pPLCDevice->getRegister("${regName}");
uint32_t dim1 = pRegister->getDimension1();
${regType}* ${regName} = (${regType}*)calloc(dim1, sizeof(${regType}));
pRegister->getVal${regType}Array(${regName}, dim1);\t//use automatic conversion for JAVA non-supported type
pDevice->${fieldName}.set(${regName}, dim1, pContext);
free(${regName});
}
"""
cGetUnsignedArray2DReg = """
pRegister = pPLCDevice->getRegister("${regName}");
dim1 = pRegister->getDimension1();
dim2 = pRegister->getDimension2();
${fesaType]* ${regName} = (${fesaType]*)calloc(dim1*dim2, sizeof(${fesaType]));
pRegister->getVal${regType}Array2D(${regName}, dim1, dim2);\t//use automatic conversion for JAVA non-supported type
pDevice->${fieldName}.set(${regName}, dim1, dim2, pContext);
free(${regName});
{
Silecs::Register* pRegister = pPLCDevice->getRegister("${regName}");
uint32_t dim1 = pRegister->getDimension1();
uint32_t dim2 = pRegister->getDimension2();
${fesaType}* ${regName} = (${fesaType}*)calloc(dim1*dim2, sizeof(${fesaType}));
pRegister->getVal${regType}Array2D(${regName}, dim1, dim2);\t//use automatic conversion for JAVA non-supported type
pDevice->${fieldName}.set(${regName}, dim1, dim2, pContext);
free(${regName});
}
"""
cCommonSet = """
......@@ -563,12 +560,13 @@ cSetStringReg = """
cSetStringArrayReg = """
{
pRegister = pPLCDevice->getRegister("${regName}");
dim1 = pRegister->getDimension1();
std::string stdStringArray[dim1];
const char** cStringArray = pDevice->${fieldName}.get(fesaDim1, pContext);
for (unsigned int i=0; i<dim1; i++) stdStringArray[i] = (const char*)cStringArray[i];
pRegister->setValStringArray(stdStringArray, dim1);
Silecs::Register* pRegister = pPLCDevice->getRegister("${regName}");
uint32_t dim1 = pRegister->getDimension1();
std::string stdStringArray[dim1];
uint32_t fesaDim1;
const char** cStringArray = pDevice->${fieldName}.get(fesaDim1, pContext);
for (unsigned int i=0; i<dim1; i++) stdStringArray[i] = (const char*)cStringArray[i];
pRegister->setValStringArray(stdStringArray, dim1);
}
"""
......@@ -579,29 +577,41 @@ cSetScalarUReg = """
pPLCDevice->getRegister("${regName}")->setVal${regType}( (${lowerType})pDevice->${fieldName}.get(pContext));"""
cSetArrayReg = """
pRegister = pPLCDevice->getRegister("${regName}");
dim1 = pRegister->getDimension1();
{
Silecs::Register* pRegister = pPLCDevice->getRegister("${regName}");
uint32_t dim1 = pRegister->getDimension1();
uint32_t fesaDim1;
pRegister->setVal${regType}Array(pDevice->${fieldName}.get(fesaDim1, pContext), dim1);
}
"""
cSetArray2DReg = """
pRegister = pPLCDevice->getRegister("${regName}");
dim1 = pRegister->getDimension1();
dim2 = pRegister->getDimension2();
pRegister->setVal${regType}Array2D(pDevice->${fieldName}.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
{
Silecs::Register* pRegister = pPLCDevice->getRegister("${regName}");
uint32_t dim1 = pRegister->getDimension1();
dim2 = pRegister->getDimension2();
uint32_t fesaDim1,fesaDim2;
pRegister->setVal${regType}Array2D(pDevice->${fieldName}.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
}
"""
cSetUnsignedArrayReg = """
pRegister = pPLCDevice->getRegister("${regName}");
dim1 = pRegister->getDimension1();
pRegister->setVal${regType}Array(pDevice->${fieldName}.get(fesaDim1, pContext), dim1);\t//use automatic conversion for JAVA non-supported type
{
Silecs::Register* pRegister = pPLCDevice->getRegister("${regName}");
uint32_t dim1 = pRegister->getDimension1();
uint32_t fesaDim1;
pRegister->setVal${regType}Array(pDevice->${fieldName}.get(fesaDim1, pContext), dim1);\t//use automatic conversion for JAVA non-supported type
}
"""
cSetUnsignedArray2DReg = """
pRegister = pPLCDevice->getRegister("${regName}");
dim1 = pRegister->getDimension1();
dim2 = pRegister->getDimension2();
pRegister->setVal${regType}Array2D( pDevice->${fieldName}.get(fesaDim1, fesaDim2, pContext), dim1, dim2);\t//use automatic conversion for JAVA non-supported type
{
Silecs::Register* pRegister = pPLCDevice->getRegister("${regName}");
uint32_t dim1 = pRegister->getDimension1();
dim2 = pRegister->getDimension2();
uint32_t fesaDim1,fesaDim2;
pRegister->setVal${regType}Array2D( pDevice->${fieldName}.get(fesaDim1, fesaDim2, pContext), dim1, dim2);\t//use automatic conversion for JAVA non-supported type
}
"""
cSetStringRegData = """
......@@ -610,31 +620,41 @@ cSetStringRegData = """
cSetStringArrayRegData = """
{
pRegister = pPLCDevice->getRegister("${regName}");
dim1 = pRegister->getDimension1();
std::string stdStringArray[dim1];
const char** cStringArray = (data.is${fieldName_upper}Available() ? data.${fieldName}.get(fesaDim1) : pDevice->${fieldName}.get(fesaDim1, pContext));
for (unsigned int i=0; i<dim1; i++) stdStringArray[i] = (const char*)cStringArray[i];
pRegister->setValStringArray(stdStringArray, dim1);
Silecs::Register* pRegister = pPLCDevice->getRegister("${regName}");
uint32_t dim1 = pRegister->getDimension1();
std::string stdStringArray[dim1];
uint32_t fesaDim1;
const char** cStringArray = (data.is${fieldName_upper}Available() ? data.${fieldName}.get(fesaDim1) : pDevice->${fieldName}.get(fesaDim1, pContext));
for (unsigned int i=0; i<dim1; i++) stdStringArray[i] = (const char*)cStringArray[i];
pRegister->setValStringArray(stdStringArray, dim1);
}
"""
cSetScalarRegData = """
(data.is${fieldName_upper}Available()) ? pPLCDevice->getRegister("${regName}")->setVal${regType}( (${fesaType})data.${fieldName}.get()) :
pPLCDevice->getRegister("${regName}")->setVal${regType}( (${fesaType})pDevice->${fieldName}.get(pContext));"""
(data.is${fieldName_upper}Available()) ? pPLCDevice->getRegister("${regName}")->setVal${regType}( data.${fieldName}.get()) :
pPLCDevice->getRegister("${regName}")->setVal${regType}( pDevice->${fieldName}.get(pContext));"""
cSetScalarURegData = """
(data.is${fieldName_upper}Available()) ? pPLCDevice->getRegister("${regName}")->setVal${regType}( (${lowerType})data.${fieldName}.get()) :
pPLCDevice->getRegister("${regName}")->setVal${regType}( (${lowerType})pDevice->${fieldName}.get(pContext));"""
cSetArrayRegData = """
pRegister = pPLCDevice->getRegister("${regName}");
dim1 = pRegister->getDimension1();
{
Silecs::Register* pRegister = pPLCDevice->getRegister("${regName}");
uint32_t dim1 = pRegister->getDimension1();
uint32_t fesaDim1;
(data.is${fieldName_upper}Available()) ? pRegister->setVal${regType}Array( data.${fieldName}.get(fesaDim1), dim1) :
pRegister->setVal${regType}Array( pDevice->${fieldName}.get(fesaDim1, pContext), dim1);
pRegister->setVal${regType}Array( pDevice->${fieldName}.get(fesaDim1, pContext), dim1);
}
"""
cSetArray2DRegData = """
pRegister = pPLCDevice->getRegister("${regName}");
dim1 = pRegister->getDimension1();
dim2 = pRegister->getDimension2();
(data.is${fieldName_upper}Available()) ? pRegister->setVal${regType}Array2D(data.${fieldName}.get(fesaDim1, fesaDim2), dim1, dim2) :
pRegister->setVal${regType}Array2D(pDevice->${fieldName}.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
{
Silecs::Register* pRegister = pPLCDevice->getRegister("${regName}");
uint32_t dim1 = pRegister->getDimension1();
uint32_t dim2 = pRegister->getDimension2();
uint32_t fesaDim1,fesaDim2;
(data.is${fieldName_upper}Available()) ? pRegister->setVal${regType}Array2D(data.${fieldName}.get(fesaDim1, fesaDim2), dim1, dim2) :
pRegister->setVal${regType}Array2D(pDevice->${fieldName}.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
}
"""
makeDesign = """# Include SILECS library path
......@@ -761,7 +781,7 @@ def genCGetArrayReg(register):
def genCGetArray2DReg(register):
if iecommon.isUnsignedType(register.format):
return cGetUnsignedArray2DReg.replace('${regName}', register.name).replace('${regType}', iecommon.getSilecsDataTypeUpperCase(register.format)).replace('${fesaType]', iecommon.registerFormatType2FesaType(register.format)).replace('${fieldName}', register.getFesaName())
return cGetUnsignedArray2DReg.replace('${regName}', register.name).replace('${regType}', iecommon.getSilecsDataTypeUpperCase(register.format)).replace('${fesaType}', iecommon.registerFormatType2FesaType(register.format)).replace('${fieldName}', register.getFesaName())
else:
return cGetArray2DReg.replace('${regName}', register.name).replace('${regType}', iecommon.getSilecsDataTypeUpperCase(register.format)).replace('${fieldName}', register.getFesaName())
......@@ -779,7 +799,7 @@ def genCSetStringArrayReg(register):
def genCSetScalarReg(register):
if iecommon.isUnsignedType(register.format):
return cSetScalarUReg.replace('${regName}', register.name).replace('${regType}', iecommon.getSilecsDataTypeUpperCase(register.format)).replace('${lowerType}', lowerType).replace('${fieldName}', register.getFesaName())
return cSetScalarUReg.replace('${regName}', register.name).replace('${regType}', iecommon.getSilecsDataTypeUpperCase(register.format)).replace('${lowerType}', iecommon.registerFormatType2CType(register.format)).replace('${fieldName}', register.getFesaName())
else:
return cSetScalarReg.replace('${regName}', register.name).replace('${regType}', iecommon.getSilecsDataTypeUpperCase(register.format)).replace('${fieldName}', register.getFesaName())
......@@ -803,7 +823,10 @@ def genCSetStringArrayRegData(register):
return cSetStringArrayRegData.replace('${regName}', register.name).replace('${fieldName_upper}', iecommon.capitalizeString(register.getFesaName())).replace('${fieldName}', register.getFesaName())
def genCSetScalarRegData(register):
return cSetScalarRegData.replace('${regName}', register.name).replace('${fieldName_upper}', iecommon.capitalizeString(register.getFesaName())).replace('${regType}', iecommon.getSilecsDataTypeUpperCase(register.format)).replace('${fesaType}', iecommon.registerFormatType2FesaType(register.format)).replace('${fieldName}', register.getFesaName())
if iecommon.isUnsignedType(register.format):
return cSetScalarURegData.replace('${regName}', register.name).replace('${fieldName_upper}', iecommon.capitalizeString(register.getFesaName())).replace('${regType}', iecommon.getSilecsDataTypeUpperCase(register.format)).replace('${fieldName}', register.getFesaName()).replace('${lowerType}', iecommon.registerFormatType2CType(register.format))
else:
return cSetScalarRegData.replace('${regName}', register.name).replace('${fieldName_upper}', iecommon.capitalizeString(register.getFesaName())).replace('${regType}', iecommon.getSilecsDataTypeUpperCase(register.format)).replace('${fieldName}', register.getFesaName())
def genCSetArrayRegData(register):
return cSetArrayRegData.replace('${regName}', register.name).replace('${fieldName_upper}', iecommon.capitalizeString(register.getFesaName())).replace('${regType}', iecommon.getSilecsDataTypeUpperCase(register.format)).replace('${fieldName}', register.getFesaName())
......
......@@ -122,9 +122,6 @@ def genCppSource(className, silecsRoot, fesaRoot, sourcePath,logTopics):
for block in blockList:
if block.prop('mode') != 'WRITE-ONLY':
finalSource += fesaTemplates.genCCommonGet(block.prop('name'),className)
finalSource += fesaTemplates.cRegVar
finalSource += fesaTemplates.cGetArrayVar
finalSource += fesaTemplates.cGetArray2DVar
finalSource += '\n'
finalSource += fesaTemplates.cRecv
for registerNode in block.xpathEval('Register'):
......@@ -145,9 +142,6 @@ def genCppSource(className, silecsRoot, fesaRoot, sourcePath,logTopics):
if block.prop('mode') != 'READ-ONLY':
finalSource += fesaTemplates.genCCommonSet(block.prop('name'),className)
finalSource += fesaTemplates.cRegVar
finalSource += fesaTemplates.cSetArrayVar
finalSource += fesaTemplates.cSetArray2DVar
for registerNode in block.xpathEval('Register'):
register = DesignRegister(registerNode)
if register.valueType == 'string':
......@@ -165,9 +159,6 @@ def genCppSource(className, silecsRoot, fesaRoot, sourcePath,logTopics):
finalSource += fesaTemplates.cSend
finalSource += ' }\n'
finalSource += fesaTemplates.genCDatatypeSet(block.prop('name'),getFesaName(block), className)
finalSource += fesaTemplates.cRegVar
finalSource += fesaTemplates.cSetArrayVar
finalSource += fesaTemplates.cSetArray2DVar
for registerNode in block.xpathEval('Register'):
register = DesignRegister(registerNode)
......
......@@ -206,6 +206,10 @@ def getCDataType(silecsDataType):
'dt' :'double',
'string' :'std::string'
}[silecsDataType]
def registerFormatType2CType(registerFormatType):
type = iecommon.getSilecsDataType(registerFormatType)
return getCDataType(type)
#-------------------------------------------------------------------------
# Given PLC data type, returns the corresponding
# SILECS data type
......
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment