From ae931a255d8718d4493211c093e5665d89f582d9 Mon Sep 17 00:00:00 2001 From: aschwinn <al.schwinn@gsi.de> Date: Tue, 6 Jun 2017 15:12:54 +0200 Subject: [PATCH] Bug 1407 - Remove Plugin specific design validation Rules --- .../src/xml/fesa/fesa_3_0_0/fesaTemplates.py | 173 +-- .../xml/fesa/fesa_3_0_0/generateSourceCode.py | 9 - silecs-codegen/src/xml/iecommon.py | 4 + .../xml/test/generated_correct/AllTypes.cpp | 1004 ++++++++++------- 4 files changed, 705 insertions(+), 485 deletions(-) diff --git a/silecs-codegen/src/xml/fesa/fesa_3_0_0/fesaTemplates.py b/silecs-codegen/src/xml/fesa/fesa_3_0_0/fesaTemplates.py index 1c74d2f..7aed315 100644 --- a/silecs-codegen/src/xml/fesa/fesa_3_0_0/fesaTemplates.py +++ b/silecs-codegen/src/xml/fesa/fesa_3_0_0/fesaTemplates.py @@ -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()) 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 4698210..d79b74f 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 @@ -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) diff --git a/silecs-codegen/src/xml/iecommon.py b/silecs-codegen/src/xml/iecommon.py index 65cb502..120f37b 100644 --- a/silecs-codegen/src/xml/iecommon.py +++ b/silecs-codegen/src/xml/iecommon.py @@ -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 diff --git a/silecs-codegen/src/xml/test/generated_correct/AllTypes.cpp b/silecs-codegen/src/xml/test/generated_correct/AllTypes.cpp index 1ac635b..40f7be4 100644 --- a/silecs-codegen/src/xml/test/generated_correct/AllTypes.cpp +++ b/silecs-codegen/src/xml/test/generated_correct/AllTypes.cpp @@ -192,9 +192,6 @@ namespace AllTypes } Silecs::PLC* pPLC = pCluster_->getPLC(pDevice->plcHostName.get(),pDevice->parameterFile.get()); Silecs::Device* pPLCDevice = pPLC->getDevice(pDevice->plcDeviceLabel.get()); - Silecs::Register* pRegister = NULL; - uint32_t dim1 = 1; - uint32_t dim2 = 1; if (recvNow) pPLCDevice -> recv(blockName_); @@ -205,8 +202,10 @@ namespace AllTypes pDevice->RO_int32_fesa.set( pPLCDevice->getRegister("RO_int32")->getValInt32(), pContext); pDevice->RO_uint32_fesa.set( pPLCDevice->getRegister("RO_uint32")->getValUInt32(), pContext); pDevice->RO_float32_fesa.set( pPLCDevice->getRegister("RO_float32")->getValFloat32(), pContext); - pRegister = pPLCDevice->getRegister("RO_string"); - pDevice->RO_string_fesa.set(pRegister->getValString().c_str(), pContext); + { + Silecs::Register* pRegister = pPLCDevice->getRegister("RO_string"); + pDevice->RO_string_fesa.set(pRegister->getValString().c_str(), pContext); + } pDevice->RO_date_fesa.set( pPLCDevice->getRegister("RO_date")->getValDate(), pContext); pDevice->RO_char_fesa.set( pPLCDevice->getRegister("RO_char")->getValInt8(), pContext); @@ -227,109 +226,138 @@ namespace AllTypes } Silecs::PLC* pPLC = pCluster_->getPLC(pDevice->plcHostName.get(),pDevice->parameterFile.get()); Silecs::Device* pPLCDevice = pPLC->getDevice(pDevice->plcDeviceLabel.get()); - Silecs::Register* pRegister = NULL; - uint32_t dim1 = 1; - uint32_t dim2 = 1; if (recvNow) pPLCDevice -> recv(blockName_); - pRegister = pPLCDevice->getRegister("RW_int8"); - dim1 = pRegister->getDimension1(); - dim2 = pRegister->getDimension2(); - pDevice->RW_int8.set(pRegister->getRefInt8Array2D(dim1, dim2), dim1, dim2, pContext); - - pRegister = pPLCDevice->getRegister("RW_uint8"); - dim1 = pRegister->getDimension1(); - dim2 = pRegister->getDimension2(); - int16_t* RW_uint8 = (int16_t*)calloc(dim1*dim2, sizeof(int16_t)); - pRegister->getValUInt8Array2D(RW_uint8, dim1, dim2); //use automatic conversion for JAVA non-supported type - pDevice->RW_uint8_fesa.set(RW_uint8, dim1, dim2, pContext); - free(RW_uint8); - - pRegister = pPLCDevice->getRegister("RW_int16"); - dim1 = pRegister->getDimension1(); - dim2 = pRegister->getDimension2(); - pDevice->RW_int16_fesa.set(pRegister->getRefInt16Array2D(dim1, dim2), dim1, dim2, pContext); - - pRegister = pPLCDevice->getRegister("RW_uint16"); - dim1 = pRegister->getDimension1(); - dim2 = pRegister->getDimension2(); - int32_t* RW_uint16 = (int32_t*)calloc(dim1*dim2, sizeof(int32_t)); - pRegister->getValUInt16Array2D(RW_uint16, dim1, dim2); //use automatic conversion for JAVA non-supported type - pDevice->RW_uint16_fesa.set(RW_uint16, dim1, dim2, pContext); - free(RW_uint16); - - pRegister = pPLCDevice->getRegister("RW_int32"); - dim1 = pRegister->getDimension1(); - dim2 = pRegister->getDimension2(); - pDevice->RW_int32_fesa.set(pRegister->getRefInt32Array2D(dim1, dim2), dim1, dim2, pContext); - - pRegister = pPLCDevice->getRegister("RW_uint32"); - dim1 = pRegister->getDimension1(); - dim2 = pRegister->getDimension2(); - int64_t* RW_uint32 = (int64_t*)calloc(dim1*dim2, sizeof(int64_t)); - pRegister->getValUInt32Array2D(RW_uint32, dim1, dim2); //use automatic conversion for JAVA non-supported type - pDevice->RW_uint32_fesa.set(RW_uint32, dim1, dim2, pContext); - free(RW_uint32); - - pRegister = pPLCDevice->getRegister("RW_float32"); - dim1 = pRegister->getDimension1(); - dim2 = pRegister->getDimension2(); - pDevice->RW_float32_fesa.set(pRegister->getRefFloat32Array2D(dim1, dim2), dim1, dim2, pContext); - - pRegister = pPLCDevice->getRegister("RW_date"); - dim1 = pRegister->getDimension1(); - dim2 = pRegister->getDimension2(); - pDevice->RW_date_fesa.set(pRegister->getRefDateArray2D(dim1, dim2), dim1, dim2, pContext); - - pRegister = pPLCDevice->getRegister("RW_char"); - dim1 = pRegister->getDimension1(); - dim2 = pRegister->getDimension2(); - pDevice->RW_char_fesa.set(pRegister->getRefInt8Array2D(dim1, dim2), dim1, dim2, pContext); - - pRegister = pPLCDevice->getRegister("RW_byte"); - dim1 = pRegister->getDimension1(); - dim2 = pRegister->getDimension2(); - int16_t* RW_byte = (int16_t*)calloc(dim1*dim2, sizeof(int16_t)); - pRegister->getValUInt8Array2D(RW_byte, dim1, dim2); //use automatic conversion for JAVA non-supported type - pDevice->RW_byte_fesa.set(RW_byte, dim1, dim2, pContext); - free(RW_byte); - - pRegister = pPLCDevice->getRegister("RW_word"); - dim1 = pRegister->getDimension1(); - dim2 = pRegister->getDimension2(); - int32_t* RW_word = (int32_t*)calloc(dim1*dim2, sizeof(int32_t)); - pRegister->getValUInt16Array2D(RW_word, dim1, dim2); //use automatic conversion for JAVA non-supported type - pDevice->RW_word_fesa.set(RW_word, dim1, dim2, pContext); - free(RW_word); - - pRegister = pPLCDevice->getRegister("RW_dword"); - dim1 = pRegister->getDimension1(); - dim2 = pRegister->getDimension2(); - int64_t* RW_dword = (int64_t*)calloc(dim1*dim2, sizeof(int64_t)); - pRegister->getValUInt32Array2D(RW_dword, dim1, dim2); //use automatic conversion for JAVA non-supported type - pDevice->RW_dword_fesa.set(RW_dword, dim1, dim2, pContext); - free(RW_dword); - - pRegister = pPLCDevice->getRegister("RW_int"); - dim1 = pRegister->getDimension1(); - dim2 = pRegister->getDimension2(); - pDevice->RW_int_fesa.set(pRegister->getRefInt16Array2D(dim1, dim2), dim1, dim2, pContext); - - pRegister = pPLCDevice->getRegister("RW_dint"); - dim1 = pRegister->getDimension1(); - dim2 = pRegister->getDimension2(); - pDevice->RW_dint_fesa.set(pRegister->getRefInt32Array2D(dim1, dim2), dim1, dim2, pContext); - - pRegister = pPLCDevice->getRegister("RW_real"); - dim1 = pRegister->getDimension1(); - dim2 = pRegister->getDimension2(); - pDevice->RW_real_fesa.set(pRegister->getRefFloat32Array2D(dim1, dim2), dim1, dim2, pContext); - - pRegister = pPLCDevice->getRegister("RW_dt"); - dim1 = pRegister->getDimension1(); - dim2 = pRegister->getDimension2(); - pDevice->RW_dt_fesa.set(pRegister->getRefDateArray2D(dim1, dim2), dim1, dim2, pContext); + { + Silecs::Register* pRegister = pPLCDevice->getRegister("RW_int8"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t dim2 = pRegister->getDimension2(); + pDevice->RW_int8.set(pRegister->getRefInt8Array2D(dim1, dim2), dim1, dim2, pContext); + } + + { + Silecs::Register* pRegister = pPLCDevice->getRegister("RW_uint8"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t dim2 = pRegister->getDimension2(); + int16_t* RW_uint8 = (int16_t*)calloc(dim1*dim2, sizeof(int16_t)); + pRegister->getValUInt8Array2D(RW_uint8, dim1, dim2); //use automatic conversion for JAVA non-supported type + pDevice->RW_uint8_fesa.set(RW_uint8, dim1, dim2, pContext); + free(RW_uint8); + } + + { + Silecs::Register* pRegister = pPLCDevice->getRegister("RW_int16"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t dim2 = pRegister->getDimension2(); + pDevice->RW_int16_fesa.set(pRegister->getRefInt16Array2D(dim1, dim2), dim1, dim2, pContext); + } + + { + Silecs::Register* pRegister = pPLCDevice->getRegister("RW_uint16"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t dim2 = pRegister->getDimension2(); + int32_t* RW_uint16 = (int32_t*)calloc(dim1*dim2, sizeof(int32_t)); + pRegister->getValUInt16Array2D(RW_uint16, dim1, dim2); //use automatic conversion for JAVA non-supported type + pDevice->RW_uint16_fesa.set(RW_uint16, dim1, dim2, pContext); + free(RW_uint16); + } + + { + Silecs::Register* pRegister = pPLCDevice->getRegister("RW_int32"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t dim2 = pRegister->getDimension2(); + pDevice->RW_int32_fesa.set(pRegister->getRefInt32Array2D(dim1, dim2), dim1, dim2, pContext); + } + + { + Silecs::Register* pRegister = pPLCDevice->getRegister("RW_uint32"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t dim2 = pRegister->getDimension2(); + int64_t* RW_uint32 = (int64_t*)calloc(dim1*dim2, sizeof(int64_t)); + pRegister->getValUInt32Array2D(RW_uint32, dim1, dim2); //use automatic conversion for JAVA non-supported type + pDevice->RW_uint32_fesa.set(RW_uint32, dim1, dim2, pContext); + free(RW_uint32); + } + + { + Silecs::Register* pRegister = pPLCDevice->getRegister("RW_float32"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t dim2 = pRegister->getDimension2(); + pDevice->RW_float32_fesa.set(pRegister->getRefFloat32Array2D(dim1, dim2), dim1, dim2, pContext); + } + + { + Silecs::Register* pRegister = pPLCDevice->getRegister("RW_date"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t dim2 = pRegister->getDimension2(); + pDevice->RW_date_fesa.set(pRegister->getRefDateArray2D(dim1, dim2), dim1, dim2, pContext); + } + + { + Silecs::Register* pRegister = pPLCDevice->getRegister("RW_char"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t dim2 = pRegister->getDimension2(); + pDevice->RW_char_fesa.set(pRegister->getRefInt8Array2D(dim1, dim2), dim1, dim2, pContext); + } + + { + Silecs::Register* pRegister = pPLCDevice->getRegister("RW_byte"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t dim2 = pRegister->getDimension2(); + int16_t* RW_byte = (int16_t*)calloc(dim1*dim2, sizeof(int16_t)); + pRegister->getValUInt8Array2D(RW_byte, dim1, dim2); //use automatic conversion for JAVA non-supported type + pDevice->RW_byte_fesa.set(RW_byte, dim1, dim2, pContext); + free(RW_byte); + } + + { + Silecs::Register* pRegister = pPLCDevice->getRegister("RW_word"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t dim2 = pRegister->getDimension2(); + int32_t* RW_word = (int32_t*)calloc(dim1*dim2, sizeof(int32_t)); + pRegister->getValUInt16Array2D(RW_word, dim1, dim2); //use automatic conversion for JAVA non-supported type + pDevice->RW_word_fesa.set(RW_word, dim1, dim2, pContext); + free(RW_word); + } + + { + Silecs::Register* pRegister = pPLCDevice->getRegister("RW_dword"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t dim2 = pRegister->getDimension2(); + int64_t* RW_dword = (int64_t*)calloc(dim1*dim2, sizeof(int64_t)); + pRegister->getValUInt32Array2D(RW_dword, dim1, dim2); //use automatic conversion for JAVA non-supported type + pDevice->RW_dword_fesa.set(RW_dword, dim1, dim2, pContext); + free(RW_dword); + } + + { + Silecs::Register* pRegister = pPLCDevice->getRegister("RW_int"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t dim2 = pRegister->getDimension2(); + pDevice->RW_int_fesa.set(pRegister->getRefInt16Array2D(dim1, dim2), dim1, dim2, pContext); + } + + { + Silecs::Register* pRegister = pPLCDevice->getRegister("RW_dint"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t dim2 = pRegister->getDimension2(); + pDevice->RW_dint_fesa.set(pRegister->getRefInt32Array2D(dim1, dim2), dim1, dim2, pContext); + } + + { + Silecs::Register* pRegister = pPLCDevice->getRegister("RW_real"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t dim2 = pRegister->getDimension2(); + pDevice->RW_real_fesa.set(pRegister->getRefFloat32Array2D(dim1, dim2), dim1, dim2, pContext); + } + + { + Silecs::Register* pRegister = pPLCDevice->getRegister("RW_dt"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t dim2 = pRegister->getDimension2(); + pDevice->RW_dt_fesa.set(pRegister->getRefDateArray2D(dim1, dim2), dim1, dim2, pContext); + } } @@ -341,91 +369,134 @@ namespace AllTypes } Silecs::PLC* pPLC = pCluster_->getPLC(pDevice->plcHostName.get(),pDevice->parameterFile.get()); Silecs::Device* pPLCDevice = pPLC->getDevice(pDevice->plcDeviceLabel.get()); - Silecs::Register* pRegister = NULL; - uint32_t dim1 = 1; - uint32_t fesaDim1; - uint32_t dim2 = 1; - uint32_t fesaDim2; - - pRegister = pPLCDevice->getRegister("RW_int8"); - dim1 = pRegister->getDimension1(); - dim2 = pRegister->getDimension2(); - pRegister->setValInt8Array2D(pDevice->RW_int8.get(fesaDim1, fesaDim2, pContext), dim1, dim2); - - pRegister = pPLCDevice->getRegister("RW_uint8"); - dim1 = pRegister->getDimension1(); - dim2 = pRegister->getDimension2(); - pRegister->setValUInt8Array2D( pDevice->RW_uint8_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); //use automatic conversion for JAVA non-supported type - - pRegister = pPLCDevice->getRegister("RW_int16"); - dim1 = pRegister->getDimension1(); - dim2 = pRegister->getDimension2(); - pRegister->setValInt16Array2D(pDevice->RW_int16_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); - - pRegister = pPLCDevice->getRegister("RW_uint16"); - dim1 = pRegister->getDimension1(); - dim2 = pRegister->getDimension2(); - pRegister->setValUInt16Array2D( pDevice->RW_uint16_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); //use automatic conversion for JAVA non-supported type - - pRegister = pPLCDevice->getRegister("RW_int32"); - dim1 = pRegister->getDimension1(); - dim2 = pRegister->getDimension2(); - pRegister->setValInt32Array2D(pDevice->RW_int32_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); - - pRegister = pPLCDevice->getRegister("RW_uint32"); - dim1 = pRegister->getDimension1(); - dim2 = pRegister->getDimension2(); - pRegister->setValUInt32Array2D( pDevice->RW_uint32_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); //use automatic conversion for JAVA non-supported type - - pRegister = pPLCDevice->getRegister("RW_float32"); - dim1 = pRegister->getDimension1(); - dim2 = pRegister->getDimension2(); - pRegister->setValFloat32Array2D(pDevice->RW_float32_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); - - pRegister = pPLCDevice->getRegister("RW_date"); - dim1 = pRegister->getDimension1(); - dim2 = pRegister->getDimension2(); - pRegister->setValDateArray2D(pDevice->RW_date_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); - - pRegister = pPLCDevice->getRegister("RW_char"); - dim1 = pRegister->getDimension1(); - dim2 = pRegister->getDimension2(); - pRegister->setValInt8Array2D(pDevice->RW_char_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); - - pRegister = pPLCDevice->getRegister("RW_byte"); - dim1 = pRegister->getDimension1(); - dim2 = pRegister->getDimension2(); - pRegister->setValUInt8Array2D( pDevice->RW_byte_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); //use automatic conversion for JAVA non-supported type - - pRegister = pPLCDevice->getRegister("RW_word"); - dim1 = pRegister->getDimension1(); - dim2 = pRegister->getDimension2(); - pRegister->setValUInt16Array2D( pDevice->RW_word_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); //use automatic conversion for JAVA non-supported type - - pRegister = pPLCDevice->getRegister("RW_dword"); - dim1 = pRegister->getDimension1(); - dim2 = pRegister->getDimension2(); - pRegister->setValUInt32Array2D( pDevice->RW_dword_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); //use automatic conversion for JAVA non-supported type - - pRegister = pPLCDevice->getRegister("RW_int"); - dim1 = pRegister->getDimension1(); - dim2 = pRegister->getDimension2(); - pRegister->setValInt16Array2D(pDevice->RW_int_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); - - pRegister = pPLCDevice->getRegister("RW_dint"); - dim1 = pRegister->getDimension1(); - dim2 = pRegister->getDimension2(); - pRegister->setValInt32Array2D(pDevice->RW_dint_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); - - pRegister = pPLCDevice->getRegister("RW_real"); - dim1 = pRegister->getDimension1(); - dim2 = pRegister->getDimension2(); - pRegister->setValFloat32Array2D(pDevice->RW_real_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); - - pRegister = pPLCDevice->getRegister("RW_dt"); - dim1 = pRegister->getDimension1(); - dim2 = pRegister->getDimension2(); - pRegister->setValDateArray2D(pDevice->RW_dt_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); + + { + Silecs::Register* pRegister = pPLCDevice->getRegister("RW_int8"); + uint32_t dim1 = pRegister->getDimension1(); + dim2 = pRegister->getDimension2(); + uint32_t fesaDim1,fesaDim2; + pRegister->setValInt8Array2D(pDevice->RW_int8.get(fesaDim1, fesaDim2, pContext), dim1, dim2); + } + + { + Silecs::Register* pRegister = pPLCDevice->getRegister("RW_uint8"); + uint32_t dim1 = pRegister->getDimension1(); + dim2 = pRegister->getDimension2(); + uint32_t fesaDim1,fesaDim2; + pRegister->setValUInt8Array2D( pDevice->RW_uint8_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); //use automatic conversion for JAVA non-supported type + } + + { + Silecs::Register* pRegister = pPLCDevice->getRegister("RW_int16"); + uint32_t dim1 = pRegister->getDimension1(); + dim2 = pRegister->getDimension2(); + uint32_t fesaDim1,fesaDim2; + pRegister->setValInt16Array2D(pDevice->RW_int16_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); + } + + { + Silecs::Register* pRegister = pPLCDevice->getRegister("RW_uint16"); + uint32_t dim1 = pRegister->getDimension1(); + dim2 = pRegister->getDimension2(); + uint32_t fesaDim1,fesaDim2; + pRegister->setValUInt16Array2D( pDevice->RW_uint16_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); //use automatic conversion for JAVA non-supported type + } + + { + Silecs::Register* pRegister = pPLCDevice->getRegister("RW_int32"); + uint32_t dim1 = pRegister->getDimension1(); + dim2 = pRegister->getDimension2(); + uint32_t fesaDim1,fesaDim2; + pRegister->setValInt32Array2D(pDevice->RW_int32_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); + } + + { + Silecs::Register* pRegister = pPLCDevice->getRegister("RW_uint32"); + uint32_t dim1 = pRegister->getDimension1(); + dim2 = pRegister->getDimension2(); + uint32_t fesaDim1,fesaDim2; + pRegister->setValUInt32Array2D( pDevice->RW_uint32_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); //use automatic conversion for JAVA non-supported type + } + + { + Silecs::Register* pRegister = pPLCDevice->getRegister("RW_float32"); + uint32_t dim1 = pRegister->getDimension1(); + dim2 = pRegister->getDimension2(); + uint32_t fesaDim1,fesaDim2; + pRegister->setValFloat32Array2D(pDevice->RW_float32_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); + } + + { + Silecs::Register* pRegister = pPLCDevice->getRegister("RW_date"); + uint32_t dim1 = pRegister->getDimension1(); + dim2 = pRegister->getDimension2(); + uint32_t fesaDim1,fesaDim2; + pRegister->setValDateArray2D(pDevice->RW_date_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); + } + + { + Silecs::Register* pRegister = pPLCDevice->getRegister("RW_char"); + uint32_t dim1 = pRegister->getDimension1(); + dim2 = pRegister->getDimension2(); + uint32_t fesaDim1,fesaDim2; + pRegister->setValInt8Array2D(pDevice->RW_char_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); + } + + { + Silecs::Register* pRegister = pPLCDevice->getRegister("RW_byte"); + uint32_t dim1 = pRegister->getDimension1(); + dim2 = pRegister->getDimension2(); + uint32_t fesaDim1,fesaDim2; + pRegister->setValUInt8Array2D( pDevice->RW_byte_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); //use automatic conversion for JAVA non-supported type + } + + { + Silecs::Register* pRegister = pPLCDevice->getRegister("RW_word"); + uint32_t dim1 = pRegister->getDimension1(); + dim2 = pRegister->getDimension2(); + uint32_t fesaDim1,fesaDim2; + pRegister->setValUInt16Array2D( pDevice->RW_word_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); //use automatic conversion for JAVA non-supported type + } + + { + Silecs::Register* pRegister = pPLCDevice->getRegister("RW_dword"); + uint32_t dim1 = pRegister->getDimension1(); + dim2 = pRegister->getDimension2(); + uint32_t fesaDim1,fesaDim2; + pRegister->setValUInt32Array2D( pDevice->RW_dword_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); //use automatic conversion for JAVA non-supported type + } + + { + Silecs::Register* pRegister = pPLCDevice->getRegister("RW_int"); + uint32_t dim1 = pRegister->getDimension1(); + dim2 = pRegister->getDimension2(); + uint32_t fesaDim1,fesaDim2; + pRegister->setValInt16Array2D(pDevice->RW_int_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); + } + + { + Silecs::Register* pRegister = pPLCDevice->getRegister("RW_dint"); + uint32_t dim1 = pRegister->getDimension1(); + dim2 = pRegister->getDimension2(); + uint32_t fesaDim1,fesaDim2; + pRegister->setValInt32Array2D(pDevice->RW_dint_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); + } + + { + Silecs::Register* pRegister = pPLCDevice->getRegister("RW_real"); + uint32_t dim1 = pRegister->getDimension1(); + dim2 = pRegister->getDimension2(); + uint32_t fesaDim1,fesaDim2; + pRegister->setValFloat32Array2D(pDevice->RW_real_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); + } + + { + Silecs::Register* pRegister = pPLCDevice->getRegister("RW_dt"); + uint32_t dim1 = pRegister->getDimension1(); + dim2 = pRegister->getDimension2(); + uint32_t fesaDim1,fesaDim2; + pRegister->setValDateArray2D(pDevice->RW_dt_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); + } if (sendNow) pPLCDevice->send(blockName_); } @@ -438,107 +509,150 @@ namespace AllTypes } Silecs::PLC* pPLC = pCluster_->getPLC(pDevice->plcHostName.get(),pDevice->parameterFile.get()); Silecs::Device* pPLCDevice = pPLC->getDevice(pDevice->plcDeviceLabel.get()); - Silecs::Register* pRegister = NULL; - uint32_t dim1 = 1; - uint32_t fesaDim1; - uint32_t dim2 = 1; - uint32_t fesaDim2; - - pRegister = pPLCDevice->getRegister("RW_int8"); - dim1 = pRegister->getDimension1(); - dim2 = pRegister->getDimension2(); - (data.isRW_int8Available()) ? pRegister->setValInt8Array2D(data.RW_int8.get(fesaDim1, fesaDim2), dim1, dim2) : - pRegister->setValInt8Array2D(pDevice->RW_int8.get(fesaDim1, fesaDim2, pContext), dim1, dim2); - - pRegister = pPLCDevice->getRegister("RW_uint8"); - dim1 = pRegister->getDimension1(); - dim2 = pRegister->getDimension2(); - (data.isRW_uint8_fesaAvailable()) ? pRegister->setValUInt8Array2D(data.RW_uint8_fesa.get(fesaDim1, fesaDim2), dim1, dim2) : - pRegister->setValUInt8Array2D(pDevice->RW_uint8_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); - - pRegister = pPLCDevice->getRegister("RW_int16"); - dim1 = pRegister->getDimension1(); - dim2 = pRegister->getDimension2(); - (data.isRW_int16_fesaAvailable()) ? pRegister->setValInt16Array2D(data.RW_int16_fesa.get(fesaDim1, fesaDim2), dim1, dim2) : - pRegister->setValInt16Array2D(pDevice->RW_int16_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); - - pRegister = pPLCDevice->getRegister("RW_uint16"); - dim1 = pRegister->getDimension1(); - dim2 = pRegister->getDimension2(); - (data.isRW_uint16_fesaAvailable()) ? pRegister->setValUInt16Array2D(data.RW_uint16_fesa.get(fesaDim1, fesaDim2), dim1, dim2) : - pRegister->setValUInt16Array2D(pDevice->RW_uint16_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); - - pRegister = pPLCDevice->getRegister("RW_int32"); - dim1 = pRegister->getDimension1(); - dim2 = pRegister->getDimension2(); - (data.isRW_int32_fesaAvailable()) ? pRegister->setValInt32Array2D(data.RW_int32_fesa.get(fesaDim1, fesaDim2), dim1, dim2) : - pRegister->setValInt32Array2D(pDevice->RW_int32_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); - - pRegister = pPLCDevice->getRegister("RW_uint32"); - dim1 = pRegister->getDimension1(); - dim2 = pRegister->getDimension2(); - (data.isRW_uint32_fesaAvailable()) ? pRegister->setValUInt32Array2D(data.RW_uint32_fesa.get(fesaDim1, fesaDim2), dim1, dim2) : - pRegister->setValUInt32Array2D(pDevice->RW_uint32_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); - - pRegister = pPLCDevice->getRegister("RW_float32"); - dim1 = pRegister->getDimension1(); - dim2 = pRegister->getDimension2(); - (data.isRW_float32_fesaAvailable()) ? pRegister->setValFloat32Array2D(data.RW_float32_fesa.get(fesaDim1, fesaDim2), dim1, dim2) : - pRegister->setValFloat32Array2D(pDevice->RW_float32_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); - - pRegister = pPLCDevice->getRegister("RW_date"); - dim1 = pRegister->getDimension1(); - dim2 = pRegister->getDimension2(); - (data.isRW_date_fesaAvailable()) ? pRegister->setValDateArray2D(data.RW_date_fesa.get(fesaDim1, fesaDim2), dim1, dim2) : - pRegister->setValDateArray2D(pDevice->RW_date_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); - - pRegister = pPLCDevice->getRegister("RW_char"); - dim1 = pRegister->getDimension1(); - dim2 = pRegister->getDimension2(); - (data.isRW_char_fesaAvailable()) ? pRegister->setValInt8Array2D(data.RW_char_fesa.get(fesaDim1, fesaDim2), dim1, dim2) : - pRegister->setValInt8Array2D(pDevice->RW_char_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); - - pRegister = pPLCDevice->getRegister("RW_byte"); - dim1 = pRegister->getDimension1(); - dim2 = pRegister->getDimension2(); - (data.isRW_byte_fesaAvailable()) ? pRegister->setValUInt8Array2D(data.RW_byte_fesa.get(fesaDim1, fesaDim2), dim1, dim2) : - pRegister->setValUInt8Array2D(pDevice->RW_byte_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); - - pRegister = pPLCDevice->getRegister("RW_word"); - dim1 = pRegister->getDimension1(); - dim2 = pRegister->getDimension2(); - (data.isRW_word_fesaAvailable()) ? pRegister->setValUInt16Array2D(data.RW_word_fesa.get(fesaDim1, fesaDim2), dim1, dim2) : - pRegister->setValUInt16Array2D(pDevice->RW_word_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); - - pRegister = pPLCDevice->getRegister("RW_dword"); - dim1 = pRegister->getDimension1(); - dim2 = pRegister->getDimension2(); - (data.isRW_dword_fesaAvailable()) ? pRegister->setValUInt32Array2D(data.RW_dword_fesa.get(fesaDim1, fesaDim2), dim1, dim2) : - pRegister->setValUInt32Array2D(pDevice->RW_dword_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); - - pRegister = pPLCDevice->getRegister("RW_int"); - dim1 = pRegister->getDimension1(); - dim2 = pRegister->getDimension2(); - (data.isRW_int_fesaAvailable()) ? pRegister->setValInt16Array2D(data.RW_int_fesa.get(fesaDim1, fesaDim2), dim1, dim2) : - pRegister->setValInt16Array2D(pDevice->RW_int_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); - - pRegister = pPLCDevice->getRegister("RW_dint"); - dim1 = pRegister->getDimension1(); - dim2 = pRegister->getDimension2(); - (data.isRW_dint_fesaAvailable()) ? pRegister->setValInt32Array2D(data.RW_dint_fesa.get(fesaDim1, fesaDim2), dim1, dim2) : - pRegister->setValInt32Array2D(pDevice->RW_dint_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); - - pRegister = pPLCDevice->getRegister("RW_real"); - dim1 = pRegister->getDimension1(); - dim2 = pRegister->getDimension2(); - (data.isRW_real_fesaAvailable()) ? pRegister->setValFloat32Array2D(data.RW_real_fesa.get(fesaDim1, fesaDim2), dim1, dim2) : - pRegister->setValFloat32Array2D(pDevice->RW_real_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); - - pRegister = pPLCDevice->getRegister("RW_dt"); - dim1 = pRegister->getDimension1(); - dim2 = pRegister->getDimension2(); - (data.isRW_dt_fesaAvailable()) ? pRegister->setValDateArray2D(data.RW_dt_fesa.get(fesaDim1, fesaDim2), dim1, dim2) : - pRegister->setValDateArray2D(pDevice->RW_dt_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); + + { + Silecs::Register* pRegister = pPLCDevice->getRegister("RW_int8"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t dim2 = pRegister->getDimension2(); + uint32_t fesaDim1,fesaDim2; + (data.isRW_int8Available()) ? pRegister->setValInt8Array2D(data.RW_int8.get(fesaDim1, fesaDim2), dim1, dim2) : + pRegister->setValInt8Array2D(pDevice->RW_int8.get(fesaDim1, fesaDim2, pContext), dim1, dim2); + } + + { + Silecs::Register* pRegister = pPLCDevice->getRegister("RW_uint8"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t dim2 = pRegister->getDimension2(); + uint32_t fesaDim1,fesaDim2; + (data.isRW_uint8_fesaAvailable()) ? pRegister->setValUInt8Array2D(data.RW_uint8_fesa.get(fesaDim1, fesaDim2), dim1, dim2) : + pRegister->setValUInt8Array2D(pDevice->RW_uint8_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); + } + + { + Silecs::Register* pRegister = pPLCDevice->getRegister("RW_int16"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t dim2 = pRegister->getDimension2(); + uint32_t fesaDim1,fesaDim2; + (data.isRW_int16_fesaAvailable()) ? pRegister->setValInt16Array2D(data.RW_int16_fesa.get(fesaDim1, fesaDim2), dim1, dim2) : + pRegister->setValInt16Array2D(pDevice->RW_int16_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); + } + + { + Silecs::Register* pRegister = pPLCDevice->getRegister("RW_uint16"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t dim2 = pRegister->getDimension2(); + uint32_t fesaDim1,fesaDim2; + (data.isRW_uint16_fesaAvailable()) ? pRegister->setValUInt16Array2D(data.RW_uint16_fesa.get(fesaDim1, fesaDim2), dim1, dim2) : + pRegister->setValUInt16Array2D(pDevice->RW_uint16_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); + } + + { + Silecs::Register* pRegister = pPLCDevice->getRegister("RW_int32"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t dim2 = pRegister->getDimension2(); + uint32_t fesaDim1,fesaDim2; + (data.isRW_int32_fesaAvailable()) ? pRegister->setValInt32Array2D(data.RW_int32_fesa.get(fesaDim1, fesaDim2), dim1, dim2) : + pRegister->setValInt32Array2D(pDevice->RW_int32_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); + } + + { + Silecs::Register* pRegister = pPLCDevice->getRegister("RW_uint32"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t dim2 = pRegister->getDimension2(); + uint32_t fesaDim1,fesaDim2; + (data.isRW_uint32_fesaAvailable()) ? pRegister->setValUInt32Array2D(data.RW_uint32_fesa.get(fesaDim1, fesaDim2), dim1, dim2) : + pRegister->setValUInt32Array2D(pDevice->RW_uint32_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); + } + + { + Silecs::Register* pRegister = pPLCDevice->getRegister("RW_float32"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t dim2 = pRegister->getDimension2(); + uint32_t fesaDim1,fesaDim2; + (data.isRW_float32_fesaAvailable()) ? pRegister->setValFloat32Array2D(data.RW_float32_fesa.get(fesaDim1, fesaDim2), dim1, dim2) : + pRegister->setValFloat32Array2D(pDevice->RW_float32_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); + } + + { + Silecs::Register* pRegister = pPLCDevice->getRegister("RW_date"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t dim2 = pRegister->getDimension2(); + uint32_t fesaDim1,fesaDim2; + (data.isRW_date_fesaAvailable()) ? pRegister->setValDateArray2D(data.RW_date_fesa.get(fesaDim1, fesaDim2), dim1, dim2) : + pRegister->setValDateArray2D(pDevice->RW_date_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); + } + + { + Silecs::Register* pRegister = pPLCDevice->getRegister("RW_char"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t dim2 = pRegister->getDimension2(); + uint32_t fesaDim1,fesaDim2; + (data.isRW_char_fesaAvailable()) ? pRegister->setValInt8Array2D(data.RW_char_fesa.get(fesaDim1, fesaDim2), dim1, dim2) : + pRegister->setValInt8Array2D(pDevice->RW_char_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); + } + + { + Silecs::Register* pRegister = pPLCDevice->getRegister("RW_byte"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t dim2 = pRegister->getDimension2(); + uint32_t fesaDim1,fesaDim2; + (data.isRW_byte_fesaAvailable()) ? pRegister->setValUInt8Array2D(data.RW_byte_fesa.get(fesaDim1, fesaDim2), dim1, dim2) : + pRegister->setValUInt8Array2D(pDevice->RW_byte_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); + } + + { + Silecs::Register* pRegister = pPLCDevice->getRegister("RW_word"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t dim2 = pRegister->getDimension2(); + uint32_t fesaDim1,fesaDim2; + (data.isRW_word_fesaAvailable()) ? pRegister->setValUInt16Array2D(data.RW_word_fesa.get(fesaDim1, fesaDim2), dim1, dim2) : + pRegister->setValUInt16Array2D(pDevice->RW_word_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); + } + + { + Silecs::Register* pRegister = pPLCDevice->getRegister("RW_dword"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t dim2 = pRegister->getDimension2(); + uint32_t fesaDim1,fesaDim2; + (data.isRW_dword_fesaAvailable()) ? pRegister->setValUInt32Array2D(data.RW_dword_fesa.get(fesaDim1, fesaDim2), dim1, dim2) : + pRegister->setValUInt32Array2D(pDevice->RW_dword_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); + } + + { + Silecs::Register* pRegister = pPLCDevice->getRegister("RW_int"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t dim2 = pRegister->getDimension2(); + uint32_t fesaDim1,fesaDim2; + (data.isRW_int_fesaAvailable()) ? pRegister->setValInt16Array2D(data.RW_int_fesa.get(fesaDim1, fesaDim2), dim1, dim2) : + pRegister->setValInt16Array2D(pDevice->RW_int_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); + } + + { + Silecs::Register* pRegister = pPLCDevice->getRegister("RW_dint"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t dim2 = pRegister->getDimension2(); + uint32_t fesaDim1,fesaDim2; + (data.isRW_dint_fesaAvailable()) ? pRegister->setValInt32Array2D(data.RW_dint_fesa.get(fesaDim1, fesaDim2), dim1, dim2) : + pRegister->setValInt32Array2D(pDevice->RW_dint_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); + } + + { + Silecs::Register* pRegister = pPLCDevice->getRegister("RW_real"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t dim2 = pRegister->getDimension2(); + uint32_t fesaDim1,fesaDim2; + (data.isRW_real_fesaAvailable()) ? pRegister->setValFloat32Array2D(data.RW_real_fesa.get(fesaDim1, fesaDim2), dim1, dim2) : + pRegister->setValFloat32Array2D(pDevice->RW_real_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); + } + + { + Silecs::Register* pRegister = pPLCDevice->getRegister("RW_dt"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t dim2 = pRegister->getDimension2(); + uint32_t fesaDim1,fesaDim2; + (data.isRW_dt_fesaAvailable()) ? pRegister->setValDateArray2D(data.RW_dt_fesa.get(fesaDim1, fesaDim2), dim1, dim2) : + pRegister->setValDateArray2D(pDevice->RW_dt_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2); + } if (sendNow) pPLCDevice->send(blockName_); @@ -552,84 +666,128 @@ namespace AllTypes } Silecs::PLC* pPLC = pCluster_->getPLC(pDevice->plcHostName.get(),pDevice->parameterFile.get()); Silecs::Device* pPLCDevice = pPLC->getDevice(pDevice->plcDeviceLabel.get()); - Silecs::Register* pRegister = NULL; - uint32_t dim1 = 1; - uint32_t fesaDim1; - uint32_t dim2 = 1; - uint32_t fesaDim2; - - pRegister = pPLCDevice->getRegister("WO_int8"); - dim1 = pRegister->getDimension1(); + + { + Silecs::Register* pRegister = pPLCDevice->getRegister("WO_int8"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t fesaDim1; pRegister->setValInt8Array(pDevice->WO_int8.get(fesaDim1, pContext), dim1); + } - pRegister = pPLCDevice->getRegister("WO_uint8"); - dim1 = pRegister->getDimension1(); - pRegister->setValUInt8Array(pDevice->WO_uint8_fesa.get(fesaDim1, pContext), dim1); //use automatic conversion for JAVA non-supported type + { + Silecs::Register* pRegister = pPLCDevice->getRegister("WO_uint8"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t fesaDim1; + pRegister->setValUInt8Array(pDevice->WO_uint8_fesa.get(fesaDim1, pContext), dim1); //use automatic conversion for JAVA non-supported type + } - pRegister = pPLCDevice->getRegister("WO_int16"); - dim1 = pRegister->getDimension1(); + { + Silecs::Register* pRegister = pPLCDevice->getRegister("WO_int16"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t fesaDim1; pRegister->setValInt16Array(pDevice->WO_int16_fesa.get(fesaDim1, pContext), dim1); + } - pRegister = pPLCDevice->getRegister("WO_uint16"); - dim1 = pRegister->getDimension1(); - pRegister->setValUInt16Array(pDevice->WO_uint16_fesa.get(fesaDim1, pContext), dim1); //use automatic conversion for JAVA non-supported type + { + Silecs::Register* pRegister = pPLCDevice->getRegister("WO_uint16"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t fesaDim1; + pRegister->setValUInt16Array(pDevice->WO_uint16_fesa.get(fesaDim1, pContext), dim1); //use automatic conversion for JAVA non-supported type + } - pRegister = pPLCDevice->getRegister("WO_int32"); - dim1 = pRegister->getDimension1(); + { + Silecs::Register* pRegister = pPLCDevice->getRegister("WO_int32"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t fesaDim1; pRegister->setValInt32Array(pDevice->WO_int32_fesa.get(fesaDim1, pContext), dim1); + } - pRegister = pPLCDevice->getRegister("WO_uint32"); - dim1 = pRegister->getDimension1(); - pRegister->setValUInt32Array(pDevice->WO_uint32_fesa.get(fesaDim1, pContext), dim1); //use automatic conversion for JAVA non-supported type + { + Silecs::Register* pRegister = pPLCDevice->getRegister("WO_uint32"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t fesaDim1; + pRegister->setValUInt32Array(pDevice->WO_uint32_fesa.get(fesaDim1, pContext), dim1); //use automatic conversion for JAVA non-supported type + } - pRegister = pPLCDevice->getRegister("WO_float32"); - dim1 = pRegister->getDimension1(); + { + Silecs::Register* pRegister = pPLCDevice->getRegister("WO_float32"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t fesaDim1; pRegister->setValFloat32Array(pDevice->WO_float32_fesa.get(fesaDim1, pContext), dim1); + } { - pRegister = pPLCDevice->getRegister("WO_string"); - dim1 = pRegister->getDimension1(); - std::string stdStringArray[dim1]; - const char** cStringArray = pDevice->WO_string_fesa.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("WO_string"); + uint32_t dim1 = pRegister->getDimension1(); + std::string stdStringArray[dim1]; + uint32_t fesaDim1; + const char** cStringArray = pDevice->WO_string_fesa.get(fesaDim1, pContext); + for (unsigned int i=0; i<dim1; i++) stdStringArray[i] = (const char*)cStringArray[i]; + pRegister->setValStringArray(stdStringArray, dim1); } - pRegister = pPLCDevice->getRegister("WO_date"); - dim1 = pRegister->getDimension1(); + { + Silecs::Register* pRegister = pPLCDevice->getRegister("WO_date"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t fesaDim1; pRegister->setValDateArray(pDevice->WO_date_fesa.get(fesaDim1, pContext), dim1); + } - pRegister = pPLCDevice->getRegister("WO_char"); - dim1 = pRegister->getDimension1(); + { + Silecs::Register* pRegister = pPLCDevice->getRegister("WO_char"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t fesaDim1; pRegister->setValInt8Array(pDevice->WO_char_fesa.get(fesaDim1, pContext), dim1); + } - pRegister = pPLCDevice->getRegister("WO_byte"); - dim1 = pRegister->getDimension1(); - pRegister->setValUInt8Array(pDevice->WO_byte_fesa.get(fesaDim1, pContext), dim1); //use automatic conversion for JAVA non-supported type + { + Silecs::Register* pRegister = pPLCDevice->getRegister("WO_byte"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t fesaDim1; + pRegister->setValUInt8Array(pDevice->WO_byte_fesa.get(fesaDim1, pContext), dim1); //use automatic conversion for JAVA non-supported type + } - pRegister = pPLCDevice->getRegister("WO_word"); - dim1 = pRegister->getDimension1(); - pRegister->setValUInt16Array(pDevice->WO_word_fesa.get(fesaDim1, pContext), dim1); //use automatic conversion for JAVA non-supported type + { + Silecs::Register* pRegister = pPLCDevice->getRegister("WO_word"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t fesaDim1; + pRegister->setValUInt16Array(pDevice->WO_word_fesa.get(fesaDim1, pContext), dim1); //use automatic conversion for JAVA non-supported type + } - pRegister = pPLCDevice->getRegister("WO_dword"); - dim1 = pRegister->getDimension1(); - pRegister->setValUInt32Array(pDevice->WO_dword_fesa.get(fesaDim1, pContext), dim1); //use automatic conversion for JAVA non-supported type + { + Silecs::Register* pRegister = pPLCDevice->getRegister("WO_dword"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t fesaDim1; + pRegister->setValUInt32Array(pDevice->WO_dword_fesa.get(fesaDim1, pContext), dim1); //use automatic conversion for JAVA non-supported type + } - pRegister = pPLCDevice->getRegister("WO_int"); - dim1 = pRegister->getDimension1(); + { + Silecs::Register* pRegister = pPLCDevice->getRegister("WO_int"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t fesaDim1; pRegister->setValInt16Array(pDevice->WO_int_fesa.get(fesaDim1, pContext), dim1); + } - pRegister = pPLCDevice->getRegister("WO_dint"); - dim1 = pRegister->getDimension1(); + { + Silecs::Register* pRegister = pPLCDevice->getRegister("WO_dint"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t fesaDim1; pRegister->setValInt32Array(pDevice->WO_dint_fesa.get(fesaDim1, pContext), dim1); + } - pRegister = pPLCDevice->getRegister("WO_real"); - dim1 = pRegister->getDimension1(); + { + Silecs::Register* pRegister = pPLCDevice->getRegister("WO_real"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t fesaDim1; pRegister->setValFloat32Array(pDevice->WO_real_fesa.get(fesaDim1, pContext), dim1); + } - pRegister = pPLCDevice->getRegister("WO_dt"); - dim1 = pRegister->getDimension1(); + { + Silecs::Register* pRegister = pPLCDevice->getRegister("WO_dt"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t fesaDim1; pRegister->setValDateArray(pDevice->WO_dt_fesa.get(fesaDim1, pContext), dim1); + } if (sendNow) pPLCDevice->send(blockName_); } @@ -642,100 +800,144 @@ namespace AllTypes } Silecs::PLC* pPLC = pCluster_->getPLC(pDevice->plcHostName.get(),pDevice->parameterFile.get()); Silecs::Device* pPLCDevice = pPLC->getDevice(pDevice->plcDeviceLabel.get()); - Silecs::Register* pRegister = NULL; - uint32_t dim1 = 1; - uint32_t fesaDim1; - uint32_t dim2 = 1; - uint32_t fesaDim2; - - pRegister = pPLCDevice->getRegister("WO_int8"); - dim1 = pRegister->getDimension1(); + + { + Silecs::Register* pRegister = pPLCDevice->getRegister("WO_int8"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t fesaDim1; (data.isWO_int8Available()) ? pRegister->setValInt8Array( data.WO_int8.get(fesaDim1), dim1) : - pRegister->setValInt8Array( pDevice->WO_int8.get(fesaDim1, pContext), dim1); + pRegister->setValInt8Array( pDevice->WO_int8.get(fesaDim1, pContext), dim1); + } - pRegister = pPLCDevice->getRegister("WO_uint8"); - dim1 = pRegister->getDimension1(); + { + Silecs::Register* pRegister = pPLCDevice->getRegister("WO_uint8"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t fesaDim1; (data.isWO_uint8_fesaAvailable()) ? pRegister->setValUInt8Array( data.WO_uint8_fesa.get(fesaDim1), dim1) : - pRegister->setValUInt8Array( pDevice->WO_uint8_fesa.get(fesaDim1, pContext), dim1); + pRegister->setValUInt8Array( pDevice->WO_uint8_fesa.get(fesaDim1, pContext), dim1); + } - pRegister = pPLCDevice->getRegister("WO_int16"); - dim1 = pRegister->getDimension1(); + { + Silecs::Register* pRegister = pPLCDevice->getRegister("WO_int16"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t fesaDim1; (data.isWO_int16_fesaAvailable()) ? pRegister->setValInt16Array( data.WO_int16_fesa.get(fesaDim1), dim1) : - pRegister->setValInt16Array( pDevice->WO_int16_fesa.get(fesaDim1, pContext), dim1); + pRegister->setValInt16Array( pDevice->WO_int16_fesa.get(fesaDim1, pContext), dim1); + } - pRegister = pPLCDevice->getRegister("WO_uint16"); - dim1 = pRegister->getDimension1(); + { + Silecs::Register* pRegister = pPLCDevice->getRegister("WO_uint16"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t fesaDim1; (data.isWO_uint16_fesaAvailable()) ? pRegister->setValUInt16Array( data.WO_uint16_fesa.get(fesaDim1), dim1) : - pRegister->setValUInt16Array( pDevice->WO_uint16_fesa.get(fesaDim1, pContext), dim1); + pRegister->setValUInt16Array( pDevice->WO_uint16_fesa.get(fesaDim1, pContext), dim1); + } - pRegister = pPLCDevice->getRegister("WO_int32"); - dim1 = pRegister->getDimension1(); + { + Silecs::Register* pRegister = pPLCDevice->getRegister("WO_int32"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t fesaDim1; (data.isWO_int32_fesaAvailable()) ? pRegister->setValInt32Array( data.WO_int32_fesa.get(fesaDim1), dim1) : - pRegister->setValInt32Array( pDevice->WO_int32_fesa.get(fesaDim1, pContext), dim1); + pRegister->setValInt32Array( pDevice->WO_int32_fesa.get(fesaDim1, pContext), dim1); + } - pRegister = pPLCDevice->getRegister("WO_uint32"); - dim1 = pRegister->getDimension1(); + { + Silecs::Register* pRegister = pPLCDevice->getRegister("WO_uint32"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t fesaDim1; (data.isWO_uint32_fesaAvailable()) ? pRegister->setValUInt32Array( data.WO_uint32_fesa.get(fesaDim1), dim1) : - pRegister->setValUInt32Array( pDevice->WO_uint32_fesa.get(fesaDim1, pContext), dim1); + pRegister->setValUInt32Array( pDevice->WO_uint32_fesa.get(fesaDim1, pContext), dim1); + } - pRegister = pPLCDevice->getRegister("WO_float32"); - dim1 = pRegister->getDimension1(); + { + Silecs::Register* pRegister = pPLCDevice->getRegister("WO_float32"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t fesaDim1; (data.isWO_float32_fesaAvailable()) ? pRegister->setValFloat32Array( data.WO_float32_fesa.get(fesaDim1), dim1) : - pRegister->setValFloat32Array( pDevice->WO_float32_fesa.get(fesaDim1, pContext), dim1); + pRegister->setValFloat32Array( pDevice->WO_float32_fesa.get(fesaDim1, pContext), dim1); + } { - pRegister = pPLCDevice->getRegister("WO_string"); - dim1 = pRegister->getDimension1(); - std::string stdStringArray[dim1]; - const char** cStringArray = (data.isWO_string_fesaAvailable() ? data.WO_string_fesa.get(fesaDim1) : pDevice->WO_string_fesa.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("WO_string"); + uint32_t dim1 = pRegister->getDimension1(); + std::string stdStringArray[dim1]; + uint32_t fesaDim1; + const char** cStringArray = (data.isWO_string_fesaAvailable() ? data.WO_string_fesa.get(fesaDim1) : pDevice->WO_string_fesa.get(fesaDim1, pContext)); + for (unsigned int i=0; i<dim1; i++) stdStringArray[i] = (const char*)cStringArray[i]; + pRegister->setValStringArray(stdStringArray, dim1); } - pRegister = pPLCDevice->getRegister("WO_date"); - dim1 = pRegister->getDimension1(); + { + Silecs::Register* pRegister = pPLCDevice->getRegister("WO_date"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t fesaDim1; (data.isWO_date_fesaAvailable()) ? pRegister->setValDateArray( data.WO_date_fesa.get(fesaDim1), dim1) : - pRegister->setValDateArray( pDevice->WO_date_fesa.get(fesaDim1, pContext), dim1); + pRegister->setValDateArray( pDevice->WO_date_fesa.get(fesaDim1, pContext), dim1); + } - pRegister = pPLCDevice->getRegister("WO_char"); - dim1 = pRegister->getDimension1(); + { + Silecs::Register* pRegister = pPLCDevice->getRegister("WO_char"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t fesaDim1; (data.isWO_char_fesaAvailable()) ? pRegister->setValInt8Array( data.WO_char_fesa.get(fesaDim1), dim1) : - pRegister->setValInt8Array( pDevice->WO_char_fesa.get(fesaDim1, pContext), dim1); + pRegister->setValInt8Array( pDevice->WO_char_fesa.get(fesaDim1, pContext), dim1); + } - pRegister = pPLCDevice->getRegister("WO_byte"); - dim1 = pRegister->getDimension1(); + { + Silecs::Register* pRegister = pPLCDevice->getRegister("WO_byte"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t fesaDim1; (data.isWO_byte_fesaAvailable()) ? pRegister->setValUInt8Array( data.WO_byte_fesa.get(fesaDim1), dim1) : - pRegister->setValUInt8Array( pDevice->WO_byte_fesa.get(fesaDim1, pContext), dim1); + pRegister->setValUInt8Array( pDevice->WO_byte_fesa.get(fesaDim1, pContext), dim1); + } - pRegister = pPLCDevice->getRegister("WO_word"); - dim1 = pRegister->getDimension1(); + { + Silecs::Register* pRegister = pPLCDevice->getRegister("WO_word"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t fesaDim1; (data.isWO_word_fesaAvailable()) ? pRegister->setValUInt16Array( data.WO_word_fesa.get(fesaDim1), dim1) : - pRegister->setValUInt16Array( pDevice->WO_word_fesa.get(fesaDim1, pContext), dim1); + pRegister->setValUInt16Array( pDevice->WO_word_fesa.get(fesaDim1, pContext), dim1); + } - pRegister = pPLCDevice->getRegister("WO_dword"); - dim1 = pRegister->getDimension1(); + { + Silecs::Register* pRegister = pPLCDevice->getRegister("WO_dword"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t fesaDim1; (data.isWO_dword_fesaAvailable()) ? pRegister->setValUInt32Array( data.WO_dword_fesa.get(fesaDim1), dim1) : - pRegister->setValUInt32Array( pDevice->WO_dword_fesa.get(fesaDim1, pContext), dim1); + pRegister->setValUInt32Array( pDevice->WO_dword_fesa.get(fesaDim1, pContext), dim1); + } - pRegister = pPLCDevice->getRegister("WO_int"); - dim1 = pRegister->getDimension1(); + { + Silecs::Register* pRegister = pPLCDevice->getRegister("WO_int"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t fesaDim1; (data.isWO_int_fesaAvailable()) ? pRegister->setValInt16Array( data.WO_int_fesa.get(fesaDim1), dim1) : - pRegister->setValInt16Array( pDevice->WO_int_fesa.get(fesaDim1, pContext), dim1); + pRegister->setValInt16Array( pDevice->WO_int_fesa.get(fesaDim1, pContext), dim1); + } - pRegister = pPLCDevice->getRegister("WO_dint"); - dim1 = pRegister->getDimension1(); + { + Silecs::Register* pRegister = pPLCDevice->getRegister("WO_dint"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t fesaDim1; (data.isWO_dint_fesaAvailable()) ? pRegister->setValInt32Array( data.WO_dint_fesa.get(fesaDim1), dim1) : - pRegister->setValInt32Array( pDevice->WO_dint_fesa.get(fesaDim1, pContext), dim1); + pRegister->setValInt32Array( pDevice->WO_dint_fesa.get(fesaDim1, pContext), dim1); + } - pRegister = pPLCDevice->getRegister("WO_real"); - dim1 = pRegister->getDimension1(); + { + Silecs::Register* pRegister = pPLCDevice->getRegister("WO_real"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t fesaDim1; (data.isWO_real_fesaAvailable()) ? pRegister->setValFloat32Array( data.WO_real_fesa.get(fesaDim1), dim1) : - pRegister->setValFloat32Array( pDevice->WO_real_fesa.get(fesaDim1, pContext), dim1); + pRegister->setValFloat32Array( pDevice->WO_real_fesa.get(fesaDim1, pContext), dim1); + } - pRegister = pPLCDevice->getRegister("WO_dt"); - dim1 = pRegister->getDimension1(); + { + Silecs::Register* pRegister = pPLCDevice->getRegister("WO_dt"); + uint32_t dim1 = pRegister->getDimension1(); + uint32_t fesaDim1; (data.isWO_dt_fesaAvailable()) ? pRegister->setValDateArray( data.WO_dt_fesa.get(fesaDim1), dim1) : - pRegister->setValDateArray( pDevice->WO_dt_fesa.get(fesaDim1, pContext), dim1); + pRegister->setValDateArray( pDevice->WO_dt_fesa.get(fesaDim1, pContext), dim1); + } if (sendNow) pPLCDevice->send(blockName_); -- GitLab