예제 #1
0
        def GetModelParameterFields(structTypeIdx, ParameterStruct, paramIdx, baseParName, paramList, recLev  ):
            if recLev == 10:
              raise Exception
            
            numFields = WrapperLib.WCAPI_GetDataTypeNumElements(
                DataTypeMap, structTypeIdx)
            elementMapIndex = WrapperLib.WCAPI_GetDataTypeElemMapIndex(
                DataTypeMap, structTypeIdx)
          # actual parameter value is retrieved
            paramAddrIdx = WrapperLib.WCAPI_GetModelParameterAddrIdx(
                ParameterStruct, paramIdx)
            paramDataAddr = WrapperLib.WCAPI_GetDataAddress(
                DataAddrMap, paramAddrIdx)
            #print('NUM FIELDS: '+str(numFields))
            for fieldIdx in range(numFields):
                fieldName = WrapperLib.WCAPI_GetElementName(
                    ElementMap, elementMapIndex + fieldIdx)
                fieldName = fieldName.decode("utf-8")
                #print('FIELD: '+baseParName+'-'+fieldName)
                fieldOffset = WrapperLib.WCAPI_GetElementOffset(
                    ElementMap, elementMapIndex + fieldIdx)
                  
                fieldTypeIdx = WrapperLib.WCAPI_GetElementDataTypeIdx(
                    ElementMap, elementMapIndex + fieldIdx)
                #print('fieldTypeIdx: '+str(fieldTypeIdx))
                fieldSLIdType = WrapperLib.WCAPI_GetDataTypeSLId(
                    DataTypeMap, fieldTypeIdx)
                #print('fieldSLIdType: '+str(fieldSLIdType))
                if fieldSLIdType == 0:
                    fieldMARTe2Typename = 'float64'
                    fieldPythonTypename = ctypes.c_double
                elif fieldSLIdType == 1:
                    fieldMARTe2Typename = 'float32'
                    fieldPythonTypename = ctypes.c_float
                elif fieldSLIdType == 2:
                    fieldMARTe2Typename = 'int8'
                    fieldPythonTypename = ctypes.c_int8
                elif fieldSLIdType == 3:
                    fieldMARTe2Typename = 'uint8'
                    fieldPythonTypename = ctypes.c_uint8
                elif fieldSLIdType == 4:
                    fieldMARTe2Typename = 'int16'
                    fieldPythonTypename = ctypes.c_int16
                elif fieldSLIdType == 5:
                    fieldMARTe2Typename = 'uint16'
                    fieldPythonTypename = ctypes.c_uint16
                elif fieldSLIdType == 6:
                    fieldMARTe2Typename = 'int32'
                    fieldPythonTypename = ctypes.c_int32
                elif fieldSLIdType == 7:
                    fieldMARTe2Typename = 'uint32'
                    fieldPythonTypename = ctypes.c_uint32
                elif fieldSLIdType == 8:
                    fieldMARTe2Typename = 'uint8'
                    fieldPythonTypename = ctypes.c_int8
                elif fieldSLIdType == 254:
                    fieldEnumType =  WrapperLib.WCAPI_GetDataEnumStorageType(DataTypeMap, fieldTypeIdx)
                    if fieldEnumType == 0:
                        fieldMARTe2Typename = 'float64'
                        fieldPythonTypename = ctypes.c_double
                    elif fieldEnumType == 1:
                        fieldMARTe2Typename = 'float32'
                        fieldPythonTypename = ctypes.c_float
                    elif fieldEnumType == 2:
                        fieldMARTe2Typename = 'int8'
                        fieldPythonTypename = ctypes.c_int8
                    elif fieldEnumType == 3:
                        fieldMARTe2Typename = 'uint8'
                        fieldPythonTypename = ctypes.c_uint8
                    elif fieldEnumType == 4:
                        fieldMARTe2Typename = 'int16'
                        fieldPythonTypename = ctypes.c_int16
                    elif fieldEnumType == 5:
                        fieldMARTe2Typename = 'uint16'
                        fieldPythonTypename = ctypes.c_uint16
                    elif fieldEnumType == 6:
                        fieldMARTe2Typename = 'int32'
                        fieldPythonTypename = ctypes.c_int32
                    elif fieldEnumType == 7:
                        fieldMARTe2Typename = 'uint32'
                        fieldPythonTypename = ctypes.c_uint32
                    else:
                        print('type '+str(fieldEnumType))
                        raise Exception('Unsupported Enum datatype.')
                else: #NESTED STRUCTURES!!!!!!!!!!!!!!!!
                    #print('TYPE '+str(fieldSLIdType) + '   '+str(fieldTypeIdx))
                    GetModelParameterFields(fieldTypeIdx, ParameterStruct, paramIdx, baseParName + '-'+fieldName, paramList, recLev+1)
                    continue #no direct data associated
        # field dimensions
                # dimensions are retrieved
                fieldDimIdx = WrapperLib.WCAPI_GetElementDimensionIdx(
                    ElementMap, elementMapIndex + fieldIdx)

                fieldDimArrayIdx = WrapperLib.WCAPI_GetDimArrayIndex(
                    DimensionMap, fieldDimIdx)  # Starting position in the dimensionArray
                # Number of elements in the dimensionArray referring to this signal
                fieldDimNum = WrapperLib.WCAPI_GetNumDims(
                    DimensionMap, fieldDimIdx)
                #print('fieldDimNum: '+ str(fieldDimNum))
                currDimension = []
                for currIdx in range(fieldDimNum):
                    currDimension.append(
                        DimensionArray[fieldDimArrayIdx + currIdx])
                if currDimension[0] == 1 and currDimension[1] == 1:
                    fieldDimension = 0
                elif currDimension[0] == 1 or currDimension[1] == 1:
                    fieldDimension = [
                        currDimension[0]*currDimension[1]]
                else:
                    fieldDimension = currDimension

                currParAddress = paramDataAddr + fieldOffset
                paramPointer = ctypes.cast(
                  currParAddress, ctypes.POINTER(fieldPythonTypename))


                if currDimension[0] == 1 and currDimension[1] == 1:  # scalar
                    dimension = 0
                    mdsplusValue = paramPointer[0]
                elif currDimension[0] == 1:  # vector
                    dimension = currDimension[0]*currDimension[1]
                    valueList = []
                    for idx in range(dimension):
                        valueList.append(paramPointer[idx])
                else:
                    # matrix or column vector (MARTe2 sees column vectors as matrices)
                    dimension = currDimension
                    idx = 0
                    valueList = []
                    valueRow = []
                    for nRow in range(currDimension[0]):
                        for nCol in range(currDimension[1]):
                            valueRow.append(paramPointer[idx])
                            idx = idx + 1
                        valueList.append(valueRow)
                        valueRow = []
                        
                if currDimension[0] != 1 or currDimension[1] != 1:
                    if fieldSLIdType == 0:
                        mdsplusValue = MDSplus.Float32Array(valueList)
                    elif fieldSLIdType == 1:
                        mdsplusValue = MDSplus.Float64Array(valueList)
                    elif fieldSLIdType == 2:
                        mdsplusValue = MDSplus.Int8Array(valueList)
                    elif fieldSLIdType == 3:
                        mdsplusValue = MDSplus.Uint8Array(valueList)
                    elif fieldSLIdType == 4:
                        mdsplusValue = MDSplus.Int16Array(valueList)
                    elif fieldSLIdType == 5:
                        mdsplusValue = MDSplus.Uint16Array(valueList)
                    elif fieldSLIdType == 6:
                        mdsplusValue = MDSplus.Int32Array(valueList)
                    elif fieldSLIdType == 7:
                        mdsplusValue = MDSplus.Uint32Array(valueList)
                    elif fieldSLIdType == 8:
                        mdsplusValue = MDSplus.Uint8Array(valueList)
                    else:
                        raise Exception('Unsupported parameter datatype.')
                      
                paramDict = dict(name=baseParName+'-'+fieldName,
                            type=fieldMARTe2Typename, dimensions=fieldDimension, value=mdsplusValue)
              # dictionary is appended to the MDSplus-style list
                paramList.append(paramDict)
예제 #2
0
        def GetModelParameterData(ParameterStruct, numOfParameters):

            paramList = []

            for paramIdx in range(numOfParameters):

                # name is retrieved
                retrievedName = WrapperLib.WCAPI_GetModelParameterName(
                    ParameterStruct, paramIdx)
                retrievedName = retrievedName.decode("utf-8")

                # type is retrieved
                retrievedTypeIdx = WrapperLib.WCAPI_GetModelParameterDataTypeIdx(
                    ParameterStruct, paramIdx)
                retrievedSLIdType = WrapperLib.WCAPI_GetDataTypeSLId(
                    DataTypeMap, retrievedTypeIdx)

                retrievedCTypename = WrapperLib.WCAPI_GetDataTypeCName(
                    DataTypeMap, retrievedTypeIdx)
                retrievedCTypename = retrievedCTypename.decode("utf-8")

                if retrievedSLIdType == 0:
                    MARTe2Typename = 'float64'
                    pythonTypename = ctypes.c_double
                elif retrievedSLIdType == 1:
                    MARTe2Typename = 'float32'
                    pythonTypename = ctypes.c_float
                elif retrievedSLIdType == 2:
                    MARTe2Typename = 'int8'
                    pythonTypename = ctypes.c_int8
                elif retrievedSLIdType == 3:
                    MARTe2Typename = 'uint8'
                    pythonTypename = ctypes.c_uint8
                elif retrievedSLIdType == 4:
                    MARTe2Typename = 'int16'
                    pythonTypename = ctypes.c_int16
                elif retrievedSLIdType == 5:
                    MARTe2Typename = 'uint16'
                    pythonTypename = ctypes.c_uint16
                elif retrievedSLIdType == 6:
                    MARTe2Typename = 'int32'
                    pythonTypename = ctypes.c_int32
                elif retrievedSLIdType == 7:
                    MARTe2Typename = 'uint32'
                    pythonTypename = ctypes.c_uint32
                elif retrievedSLIdType == 8:
                    MARTe2Typename = 'bool'
                    pythonTypename = ctypes.c_bool
                else:
                    raise Exception('Unsupported parameter datatype.')

                # actual parameter value is retrieved
                paramAddrIdx = WrapperLib.WCAPI_GetModelParameterAddrIdx(
                    ParameterStruct, paramIdx)
                paramDataAddr = WrapperLib.WCAPI_GetDataAddress(
                    DataAddrMap, paramAddrIdx)
                paramPointer = ctypes.cast(paramDataAddr,
                                           ctypes.POINTER(pythonTypename))

                # dimensions are retrieved
                dimIdx = WrapperLib.WCAPI_GetModelParameterDimensionIdx(
                    ParameterStruct, paramIdx)

                dimArrayIdx = WrapperLib.WCAPI_GetDimArrayIndex(
                    DimensionMap,
                    dimIdx)  # Starting position in the dimensionArray
                dimNum = WrapperLib.WCAPI_GetNumDims(
                    DimensionMap, dimIdx
                )  # Number of elements in the dimensionArray referring to this signal

                currDimension = []
                for currIdx in range(dimNum):
                    currDimension.append(DimensionArray[dimArrayIdx + currIdx])

                if currDimension[0] == 1 and currDimension[1] == 1:  # scalar
                    dimension = 0
                    mdsplusValue = paramPointer[0]
                elif currDimension[0] == 1:  # vector
                    dimension = currDimension[0] * currDimension[1]
                    valueList = []
                    for idx in range(dimension):
                        valueList.append(paramPointer[idx])
                else:
                    # matrix or column vector (MARTe2 sees column vectors as matrices)
                    dimension = currDimension
                    idx = 0
                    valueList = []
                    valueRow = []
                    for nRow in range(currDimension[0]):
                        for nCol in range(currDimension[1]):
                            valueRow.append(paramPointer[idx])
                            idx = idx + 1
                        valueList.append(valueRow)
                        valueRow = []

                if currDimension[0] != 1 or currDimension[1] != 1:
                    if retrievedSLIdType == 0:
                        mdsplusValue = MDSplus.Float32Array(valueList)
                    elif retrievedSLIdType == 1:
                        mdsplusValue = MDSplus.Float64Array(valueList)
                    elif retrievedSLIdType == 2:
                        mdsplusValue = MDSplus.Int8Array(valueList)
                    elif retrievedSLIdType == 3:
                        mdsplusValue = MDSplus.Uint8Array(valueList)
                    elif retrievedSLIdType == 4:
                        mdsplusValue = MDSplus.Int16Array(valueList)
                    elif retrievedSLIdType == 5:
                        mdsplusValue = MDSplus.Uint16Array(valueList)
                    elif retrievedSLIdType == 6:
                        mdsplusValue = MDSplus.Int32Array(valueList)
                    elif retrievedSLIdType == 7:
                        mdsplusValue = MDSplus.Uint32Array(valueList)
                    else:
                        raise Exception('Unsupported parameter datatype.')

                # retrieved data is saved to a dictionary
                paramDict = dict(name='Parameters.' + retrievedName,
                                 type=MARTe2Typename,
                                 dimensions=dimension,
                                 value=mdsplusValue)

                # dictionary is appended to the MDSplus-style list
                paramList.append(paramDict)

            return paramList
예제 #3
0
        def GetModelParameterData(ParameterStruct, numOfParameters):

            paramList = []

            for paramIdx in range(numOfParameters):

                # name is retrieved
                retrievedName = WrapperLib.WCAPI_GetModelParameterName(
                    ParameterStruct, paramIdx)
                retrievedName = retrievedName.decode("utf-8")
                #print('retrievedname: ', retrievedName)

                # type is retrieved
                retrievedTypeIdx = WrapperLib.WCAPI_GetModelParameterDataTypeIdx(
                    ParameterStruct, paramIdx)
                #print('retrievedTypeIdx: ', str(retrievedTypeIdx))
                retrievedSLIdType = WrapperLib.WCAPI_GetDataTypeSLId(
                    DataTypeMap, retrievedTypeIdx)
                #print('retrievedSLIdType: ', str(retrievedSLIdType))
                #retrievedCTypename = WrapperLib.WCAPI_GetDataTypeCName(
                #    DataTypeMap, retrievedTypeIdx)
                #retrievedCTypename = retrievedCTypename.decode("utf-8")
                #print('retrievedCTypename: '+retrievedCTypename)

                if retrievedSLIdType == 0:
                    MARTe2Typename = 'float64'
                    pythonTypename = ctypes.c_double
                elif retrievedSLIdType == 1:
                    MARTe2Typename = 'float32'
                    pythonTypename = ctypes.c_float
                elif retrievedSLIdType == 2:
                    MARTe2Typename = 'int8'
                    pythonTypename = ctypes.c_int8
                elif retrievedSLIdType == 3:
                    MARTe2Typename = 'uint8'
                    pythonTypename = ctypes.c_uint8
                elif retrievedSLIdType == 4:
                    MARTe2Typename = 'int16'
                    pythonTypename = ctypes.c_int16
                elif retrievedSLIdType == 5:
                    MARTe2Typename = 'uint16'
                    pythonTypename = ctypes.c_uint16
                elif retrievedSLIdType == 6:
                    MARTe2Typename = 'int32'
                    pythonTypename = ctypes.c_int32
                elif retrievedSLIdType == 7:
                    MARTe2Typename = 'uint32'
                    pythonTypename = ctypes.c_uint32
                elif retrievedSLIdType == 8:
                    MARTe2Typename = 'uint8'
                    pythonTypename = ctypes.c_bool
                elif retrievedSLIdType == 254:
                    fieldEnumType =  WrapperLib.WCAPI_GetDataEnumStorageType(DataTypeMap, retrievedTypeIdx)
                    if fieldEnumType == 0:
                        MARTe2Typename = 'float64'
                        pythonTypename = ctypes.c_double
                    elif fieldEnumType == 1:
                        MARTe2Typename = 'float32'
                        pythonTypename = ctypes.c_float
                    elif fieldEnumType == 2:
                        MARTe2Typename = 'int8'
                        pythonTypename = ctypes.c_int8
                    elif fieldEnumType == 3:
                        pythonTypename = ctypes.c_uint8
                        MARTe2Typename = 'uint8'
                    elif fieldEnumType == 4:
                        MARTe2Typename = 'int16'
                        pythonTypename = ctypes.c_int16
                    elif fieldEnumType == 5:
                        pythonTypename = ctypes.c_uint16
                        MARTe2Typename = 'uint16'
                    elif fieldEnumType == 6:
                        pythonTypename = ctypes.c_int32
                        MARTe2Typename = 'int32'
                    elif fieldEnumType == 7:
                        pythonTypename = ctypes.c_uint32
                        MARTe2Typename = 'uint32'
                    else:
                        print('type '+str(fieldEnumType))
                        raise Exception('Unsupported Enum datatype.')
                elif retrievedSLIdType == 255:
                    pass
                else:
                    raise Exception('Unsupported parameter datatype.')
                  
                if retrievedSLIdType != 255:  
                    # actual parameter value is retrieved
                    paramAddrIdx = WrapperLib.WCAPI_GetModelParameterAddrIdx(
                        ParameterStruct, paramIdx)
                    paramDataAddr = WrapperLib.WCAPI_GetDataAddress(
                        DataAddrMap, paramAddrIdx)
                    paramPointer = ctypes.cast(
                        paramDataAddr, ctypes.POINTER(pythonTypename))

                    # dimensions are retrieved
                    dimIdx = WrapperLib.WCAPI_GetModelParameterDimensionIdx(
                        ParameterStruct, paramIdx)

                    dimArrayIdx = WrapperLib.WCAPI_GetDimArrayIndex(
                        DimensionMap, dimIdx)  # Starting position in the dimensionArray
                    # Number of elements in the dimensionArray referring to this signal
                    dimNum = WrapperLib.WCAPI_GetNumDims(
                        DimensionMap,       dimIdx)

                    currDimension = []
                    for currIdx in range(dimNum):
                        currDimension.append(DimensionArray[dimArrayIdx + currIdx])

                    if currDimension[0] == 1 and currDimension[1] == 1:  # scalar
                        dimension = 0
                        mdsplusValue = paramPointer[0]
                    elif currDimension[0] == 1:  # vector
                        dimension = currDimension[0]*currDimension[1]
                        valueList = []
                        for idx in range(dimension):
                            valueList.append(paramPointer[idx])
                    else:
                        # matrix or column vector (MARTe2 sees column vectors as matrices)
                        dimension = currDimension
                        idx = 0
                        valueList = []
                        valueRow = []
                        for nRow in range(currDimension[0]):
                            for nCol in range(currDimension[1]):
                                valueRow.append(paramPointer[idx])
                                idx = idx + 1
                            valueList.append(valueRow)
                            valueRow = []

                    if currDimension[0] != 1 or currDimension[1] != 1:
                        if retrievedSLIdType == 0:
                            mdsplusValue = MDSplus.Float32Array(valueList)
                        elif retrievedSLIdType == 1:
                            mdsplusValue = MDSplus.Float64Array(valueList)
                        elif retrievedSLIdType == 2:
                            mdsplusValue = MDSplus.Int8Array(valueList)
                        elif retrievedSLIdType == 3:
                            mdsplusValue = MDSplus.Uint8Array(valueList)
                        elif retrievedSLIdType == 4:
                            mdsplusValue = MDSplus.Int16Array(valueList)
                        elif retrievedSLIdType == 5:
                            mdsplusValue = MDSplus.Uint16Array(valueList)
                        elif retrievedSLIdType == 6:
                            mdsplusValue = MDSplus.Int32Array(valueList)
                        elif retrievedSLIdType == 7:
                            mdsplusValue = MDSplus.Uint32Array(valueList)
                        else:
                            raise Exception('Unsupported parameter datatype.')

                    # retrieved data is saved to a dictionary
                    paramDict = dict(name='Parameters.'+retrievedName,
                                    type=MARTe2Typename, dimensions=dimension, value=mdsplusValue)

                    # dictionary is appended to the MDSplus-style list
                    paramList.append(paramDict)
                else: #retrievedSLIdType == 255  SRUCTURED PARAMETERS
                    GetModelParameterFields(retrievedTypeIdx, ParameterStruct, paramIdx, 'Parameters.'+retrievedName, paramList, 1)  
                  
                    #numFields = WrapperLib.WCAPI_GetDataTypeNumElements(
                        #DataTypeMap, retrievedTypeIdx)
                    #elementMapIndex = WrapperLib.WCAPI_GetDataTypeElemMapIndex(
                        #DataTypeMap, retrievedTypeIdx)
                  ## actual parameter value is retrieved
                    #paramAddrIdx = WrapperLib.WCAPI_GetModelParameterAddrIdx(
                        #ParameterStruct, paramIdx)
                    #paramDataAddr = WrapperLib.WCAPI_GetDataAddress(
                        #DataAddrMap, paramAddrIdx)
                    #print('NUM FIELDS: '+str(numFields))
                    #for fieldIdx in range(numFields):
                        #fieldName = WrapperLib.WCAPI_GetElementName(
                            #ElementMap, elementMapIndex + fieldIdx)
                        #fieldName = fieldName.decode("utf-8")
                        #print('FIELD: '+fieldName)
                        #fieldOffset = WrapperLib.WCAPI_GetElementOffset(
                            #ElementMap, elementMapIndex + fieldIdx)
                         
                        #fieldTypeIdx = WrapperLib.WCAPI_GetElementDataTypeIdx(
                            #ElementMap, elementMapIndex + fieldIdx)
                        #fieldSLIdType = WrapperLib.WCAPI_GetDataTypeSLId(
                            #DataTypeMap, fieldTypeIdx)
                        #if fieldSLIdType == 0:
                            #fieldMARTe2Typename = 'float64'
                            #fieldPythonTypename = ctypes.c_double
                        #elif fieldSLIdType == 1:
                            #fieldMARTe2Typename = 'float32'
                            #fieldPythonTypename = ctypes.c_float
                        #elif fieldSLIdType == 2:
                            #fieldMARTe2Typename = 'int8'
                            #fieldPythonTypename = ctypes.c_int8
                        #elif fieldSLIdType == 3:
                            #fieldMARTe2Typename = 'uint8'
                            #fieldPythonTypename = ctypes.c_uint8
                        #elif fieldSLIdType == 4:
                            #fieldMARTe2Typename = 'int16'
                            #fieldPythonTypename = ctypes.c_int16
                        #elif fieldSLIdType == 5:
                            #fieldMARTe2Typename = 'uint16'
                            #fieldPythonTypename = ctypes.c_uint16
                        #elif fieldSLIdType == 6:
                            #fieldMARTe2Typename = 'int32'
                            #fieldPythonTypename = ctypes.c_int32
                        #elif fieldSLIdType == 7:
                            #fieldMARTe2Typename = 'uint32'
                            #fieldPythonTypename = ctypes.c_uint32
                        #elif fieldSLIdType == 8:
                            #fieldMARTe2Typename = 'bool'
                            #fieldPythonTypename = ctypes.c_int8
                        #elif fieldSLIdType == 254:
                            #fieldEnumType =  WrapperLib.WCAPI_GetDataEnumStorageType(DataTypeMap, fieldTypeIdx)
                            #if fieldEnumType == 0:
                                #fieldMARTe2Typename = 'float64'
                                #fieldPythonTypename = ctypes.c_double
                            #elif fieldEnumType == 1:
                                #fieldMARTe2Typename = 'float32'
                                #fieldPythonTypename = ctypes.c_float
                            #elif fieldEnumType == 2:
                                #fieldMARTe2Typename = 'int8'
                                #fieldPythonTypename = ctypes.c_int8
                            #elif fieldEnumType == 3:
                                #fieldMARTe2Typename = 'uint8'
                                #fieldPythonTypename = ctypes.c_uint8
                            #elif fieldEnumType == 4:
                                #fieldMARTe2Typename = 'int16'
                                #fieldPythonTypename = ctypes.c_int16
                            #elif fieldEnumType == 5:
                                #fieldMARTe2Typename = 'uint16'
                                #fieldPythonTypename = ctypes.c_uint16
                            #elif fieldEnumType == 6:
                                #fieldMARTe2Typename = 'int32'
                                #fieldPythonTypename = ctypes.c_int32
                            #elif fieldEnumType == 7:
                                #fieldMARTe2Typename = 'uint32'
                                #fieldPythonTypename = ctypes.c_uint32
                            #else:
                                #print('type '+str(fieldEnumType))
                                #raise Exception('Unsupported Enum datatype.')
                        #else:
                            #print('type '+str(fieldSLIdType))
                            #raise Exception('Unsupported nested structures.')
                ## field dimensions
                       ## dimensions are retrieved
                        #fieldDimIdx = WrapperLib.WCAPI_GetElementDimensionIdx(
                            #ElementMap, elementMapIndex + fieldIdx)

                        #fieldDimArrayIdx = WrapperLib.WCAPI_GetDimArrayIndex(
                            #DimensionMap, fieldDimIdx)  # Starting position in the dimensionArray
                        ## Number of elements in the dimensionArray referring to this signal
                        #fieldDimNum = WrapperLib.WCAPI_GetNumDims(
                            #DimensionMap, fieldDimIdx)

                        #currDimension = []
                        #for currIdx in range(fieldDimNum):
                            #currDimension.append(
                                #DimensionArray[fieldDimArrayIdx + currIdx])
                        #if currDimension[0] == 1 and currDimension[1] == 1:
                            #fieldDimension = 0
                        #elif currDimension[0] == 1 or currDimension[1] == 1:
                            #fieldDimension = [
                                #currDimension[0]*currDimension[1]]
                        #else:
                            #fieldDimension = currDimension

                        #currParAddress = paramDataAddr + fieldOffset
                        #paramPointer = ctypes.cast(
                          #currParAddress, ctypes.POINTER(fieldPythonTypename))

 
                        #if currDimension[0] == 1 and currDimension[1] == 1:  # scalar
                            #dimension = 0
                            #mdsplusValue = paramPointer[0]
                        #elif currDimension[0] == 1:  # vector
                            #dimension = currDimension[0]*currDimension[1]
                            #valueList = []
                            #for idx in range(dimension):
                                #valueList.append(paramPointer[idx])
                        #else:
                            ## matrix or column vector (MARTe2 sees column vectors as matrices)
                            #dimension = currDimension
                            #idx = 0
                            #valueList = []
                            #valueRow = []
                            #for nRow in range(currDimension[0]):
                                #for nCol in range(currDimension[1]):
                                    #valueRow.append(paramPointer[idx])
                                    #idx = idx + 1
                                #valueList.append(valueRow)
                                #valueRow = []
                                
                        #if currDimension[0] != 1 or currDimension[1] != 1:
                            #if fieldSLIdType == 0:
                                #mdsplusValue = MDSplus.Float32Array(valueList)
                            #elif fieldSLIdType == 1:
                                #mdsplusValue = MDSplus.Float64Array(valueList)
                            #elif fieldSLIdType == 2:
                                #mdsplusValue = MDSplus.Int8Array(valueList)
                            #elif fieldSLIdType == 3:
                                #mdsplusValue = MDSplus.Uint8Array(valueList)
                            #elif fieldSLIdType == 4:
                                #mdsplusValue = MDSplus.Int16Array(valueList)
                            #elif fieldSLIdType == 5:
                                #mdsplusValue = MDSplus.Uint16Array(valueList)
                            #elif fieldSLIdType == 6:
                                #mdsplusValue = MDSplus.Int32Array(valueList)
                            #elif fieldSLIdType == 7:
                                #mdsplusValue = MDSplus.Uint32Array(valueList)
                            #else:
                                #raise Exception('Unsupported parameter datatype.')
                              
                        #paramDict = dict(name='Parameters.'+retrievedName+'-'+fieldName,
                                    #type=fieldMARTe2Typename, dimensions=fieldDimension, value=mdsplusValue)
                     ## dictionary is appended to the MDSplus-style list
                        #paramList.append(paramDict)
                 #endif STRUCTURED PARAMETER
            #endfor parameters
            #print('PARAMETRI FATTI')
            return paramList