Module openrtdynamics2.lang.diagram_core.system_manifest

Expand source code
from . import code_generation_helper as cgh


    
def makeSignalDescription(signals, json : bool):
    signalDescription = {}
    signalDescription['names'] = cgh.signal_list_to_name_list(signals)
    signalDescription['cpptypes'] = cgh.signalListHelper_typeNames(signals)

    signalDescription['properties'] = []
    signalDescription['port_numbers'] = []
    for s in signals:
        signalDescription['properties'].append( s.properties )
        signalDescription['port_numbers'].append( s.port )

    if not json:
        # types will not be available when exported to JSON
        signalDescription['types'] = cgh.signalListHelper_types(signals)

    return signalDescription


class SystemManifest(object):

    def __init__(self, mainSimulation ):

        self.mainSimulation = mainSimulation

        # the manifest containts meta-information about the simulation and its interface
        # i.e. input and output signals names and datatypes
        
        self.API_functionNames = self.mainSimulation.API_functionNames
        self.API_functions = self.mainSimulation.API_functions


        # I/O
        self._io_inputs = {}
        self._io_outputs = {}

        #
        # make strings
        # 

        for functionExportName, API_command in self.API_functions.items():
             self._io_inputs[functionExportName] = makeSignalDescription( API_command.inputSignals, json=False )
             self._io_outputs[functionExportName] = makeSignalDescription( API_command.outputSignals, json=False )


    @property
    def io_inputs(self):
        return self._io_inputs

    @property
    def io_outputs(self):
        return self._io_outputs

    @property
    def API_name(self):
        return self.mainSimulation.API_name

    @property
    def number_of_default_ouputs(self):
        return len( self._io_outputs['calculate_output']['names'] )



    def getAPIFunctionName(self, identifier : str ):
        """
            identifier : one of 'reset', 'calculate_output', 'state_update'
        """
        return self.API_functionNames[identifier]
    


    def export_json(self):
        self.manifest = {}
        self.manifest['api_name'] = self.mainSimulation.API_name
        self.manifest['api_functions'] = self.API_functionNames

        # I/O
        io_inputs = {}
        io_outputs = {}

        for functionExportName, API_command in self.API_functions.items():
             io_inputs[functionExportName] = makeSignalDescription( API_command.inputSignals, json=True )
             io_outputs[functionExportName] = makeSignalDescription( API_command.outputSignals, json=True )


        self.manifest['io'] = {}
        self.manifest['io']['outputs'] = io_outputs
        self.manifest['io']['inputs'] = io_inputs

        return self.manifest

Functions

def makeSignalDescription(signals, json: bool)
Expand source code
def makeSignalDescription(signals, json : bool):
    signalDescription = {}
    signalDescription['names'] = cgh.signal_list_to_name_list(signals)
    signalDescription['cpptypes'] = cgh.signalListHelper_typeNames(signals)

    signalDescription['properties'] = []
    signalDescription['port_numbers'] = []
    for s in signals:
        signalDescription['properties'].append( s.properties )
        signalDescription['port_numbers'].append( s.port )

    if not json:
        # types will not be available when exported to JSON
        signalDescription['types'] = cgh.signalListHelper_types(signals)

    return signalDescription

Classes

class SystemManifest (mainSimulation)
Expand source code
class SystemManifest(object):

    def __init__(self, mainSimulation ):

        self.mainSimulation = mainSimulation

        # the manifest containts meta-information about the simulation and its interface
        # i.e. input and output signals names and datatypes
        
        self.API_functionNames = self.mainSimulation.API_functionNames
        self.API_functions = self.mainSimulation.API_functions


        # I/O
        self._io_inputs = {}
        self._io_outputs = {}

        #
        # make strings
        # 

        for functionExportName, API_command in self.API_functions.items():
             self._io_inputs[functionExportName] = makeSignalDescription( API_command.inputSignals, json=False )
             self._io_outputs[functionExportName] = makeSignalDescription( API_command.outputSignals, json=False )


    @property
    def io_inputs(self):
        return self._io_inputs

    @property
    def io_outputs(self):
        return self._io_outputs

    @property
    def API_name(self):
        return self.mainSimulation.API_name

    @property
    def number_of_default_ouputs(self):
        return len( self._io_outputs['calculate_output']['names'] )



    def getAPIFunctionName(self, identifier : str ):
        """
            identifier : one of 'reset', 'calculate_output', 'state_update'
        """
        return self.API_functionNames[identifier]
    


    def export_json(self):
        self.manifest = {}
        self.manifest['api_name'] = self.mainSimulation.API_name
        self.manifest['api_functions'] = self.API_functionNames

        # I/O
        io_inputs = {}
        io_outputs = {}

        for functionExportName, API_command in self.API_functions.items():
             io_inputs[functionExportName] = makeSignalDescription( API_command.inputSignals, json=True )
             io_outputs[functionExportName] = makeSignalDescription( API_command.outputSignals, json=True )


        self.manifest['io'] = {}
        self.manifest['io']['outputs'] = io_outputs
        self.manifest['io']['inputs'] = io_inputs

        return self.manifest

Instance variables

var API_name
Expand source code
@property
def API_name(self):
    return self.mainSimulation.API_name
var io_inputs
Expand source code
@property
def io_inputs(self):
    return self._io_inputs
var io_outputs
Expand source code
@property
def io_outputs(self):
    return self._io_outputs
var number_of_default_ouputs
Expand source code
@property
def number_of_default_ouputs(self):
    return len( self._io_outputs['calculate_output']['names'] )

Methods

def export_json(self)
Expand source code
def export_json(self):
    self.manifest = {}
    self.manifest['api_name'] = self.mainSimulation.API_name
    self.manifest['api_functions'] = self.API_functionNames

    # I/O
    io_inputs = {}
    io_outputs = {}

    for functionExportName, API_command in self.API_functions.items():
         io_inputs[functionExportName] = makeSignalDescription( API_command.inputSignals, json=True )
         io_outputs[functionExportName] = makeSignalDescription( API_command.outputSignals, json=True )


    self.manifest['io'] = {}
    self.manifest['io']['outputs'] = io_outputs
    self.manifest['io']['inputs'] = io_inputs

    return self.manifest
def getAPIFunctionName(self, identifier: str)

identifier : one of 'reset', 'calculate_output', 'state_update'

Expand source code
def getAPIFunctionName(self, identifier : str ):
    """
        identifier : one of 'reset', 'calculate_output', 'state_update'
    """
    return self.API_functionNames[identifier]