OneCompiler

fault1

1239

Example heading with h2 size

Example heading with h3 size

Following is sample java code.


# -*- coding: cp1252 -*-
"""
File:           EESPortConfiguration.py

Description:    This Python script demonstrates how to create and edit EESPortConfiguration file

Preconditions:  No hardware is required.
                The user must have rights to save the port configuration file to path specified in variable 'portConfigSavePath'.
               
Tip/Remarks:    eesPort object must be deleted at the end of the function.
                You must use the try:-finally: block to ensure
                their deletion within the finally: part.

Limitations:    -

Version:        1.0

Date:           2015-06-08

                dSPACE GmbH shall not be liable for errors contained herein or
                direct, indirect, special, incidental, or consequential damages
                in connection with the furnishing, performance, or use of this
                file.
                Brand names or product names are trademarks or registered
                trademarks of their respective companies or organizations.

Copyright 2014, dSPACE GmbH. All rights reserved.
"""
#--------------------------------------------------------------------------------------------------
# Import python modules.
#--------------------------------------------------------------------------------------------------
import os
import sys

#--------------------------------------------------------------------------------------------------
# Import .NET assemblies
#--------------------------------------------------------------------------------------------------
import clr
import System


# Load ASAM assemblies from the global assembly cache (GAC)
assemblyString = "ASAM.XIL.Interfaces, Version=2.1.0.0, Culture=neutral, PublicKeyToken=bf471dff114ae984"
clr.AddReference(assemblyString)

assemblyString = "ASAM.XIL.Implementation.TestbenchFactory, Version=2.1.0.0, Culture=neutral, PublicKeyToken=fc9d65855b27d387"
clr.AddReference(assemblyString)

# 2018-B
assemblyString = "dSPACE.XIL.Testbench.EESPort.Interfaces.Extended, Version=6.0.0.0, Culture=neutral, PublicKeyToken=f9604847d8afbfbb"
clr.AddReference(assemblyString)

# Import XIL API .NET classes from the .NET assemblies
from ASAM.XIL.Implementation.TestbenchFactory.Testbench import TestbenchFactory
from ASAM.XIL.Interfaces.Testbench.EESPort.Error import EESPortException
from ASAM.XIL.Interfaces.Testbench.EESPort.Enum import EESPortState, ErrorCategory, ErrorType, LoadType, TriggerType
from ASAM.XIL.Interfaces.Testbench.EESPort import IEESPortConfig
from dSPACE.XIL.Testbench.EESPort.Interfaces.Extended import IDSEESPort, ConfigurationType, PotentialType, IDSMidSizeFullSizeVariant1Configuration, IDSFullSizeVariant2Configuration, IDSScalexioConfiguration
from dSPACE.XIL.Testbench.EESPort.Interfaces.Extended import DSCANAPIVersion, CANVendorNames, CANInterfaceNames

#----------------------------------------------------------------------
# Define the variables to use in this demo
#----------------------------------------------------------------------
vendorName           = "dSPACE GmbH"
productName          = "XIL API"
productVersion       = "2020-A"

# Get the directory of this script
workingDir = os.path.dirname(os.path.realpath(__file__))
if os.path.isdir(workingDir) == 0:
    workingDir = os.getcwd()

workingDir = os.path.abspath(workingDir)

#-------------------------------------------------------------------------------------
# The following file path variable must be modified by user.
#-------------------------------------------------------------------------------------
signalListFilePathFullSizeVariant1 = System.IO.Path.GetFullPath(System.IO.Path.Combine(workingDir, r"..\Common\PortConfigurations\FullSizeVariant1\signallist full-size ds291.csv"))
signalListFilePathFullSizeVariant2 = System.IO.Path.GetFullPath(System.IO.Path.Combine(workingDir, r"..\Common\PortConfigurations\FullSizeVariant2\signallist full-size ds293.csv"))
signalListFilePathMidSizeBasedOnDS2210DS789 = System.IO.Path.GetFullPath(System.IO.Path.Combine(workingDir, r"..\Common\PortConfigurations\MidSizeBasedOnDS2210\signallist mid-size ds789.csv"))
signalListFilePathMidSizeBasedOnDS2210DS749 = System.IO.Path.GetFullPath(System.IO.Path.Combine(workingDir, r"..\Common\PortConfigurations\MidSizeBasedOnDS2210\signallist mid-size ds749.csv"))
signalListFilePathMidSizeBasedOnDS2211 = System.IO.Path.GetFullPath(System.IO.Path.Combine(workingDir, r"..\Common\PortConfigurations\MidSizeBasedOnDS2211\signallist mid-size ds2211.csv"))
rtaFilePathSCALEXIO = System.IO.Path.GetFullPath(System.IO.Path.Combine(workingDir, r"..\Common\PortConfigurations\SCALEXIO\turnlamp.rta"))

# Generated port configuration file path.
portConfigSavePath = System.IO.Path.GetFullPath(System.IO.Path.Combine(workingDir, r"..\Common\PortConfigurations\PortConfig_Generated.portconfig"))

ActiveErrorSetVariable = "XIL API/EESPort/Active ErrorSet"
ErrorActivatedVariable = "XIL API/EESPort/Error Activated"
ErrorSwitchingVariable = "XIL API/EESPort/Error Switching"
FlagsVariable          = "XIL API/EESPort/Flags"
TriggerVariable        = "XIL API/EESPort/Trigger"

PlatformName = "VEOS"
SystemDescriptionFilePath = System.IO.Path.GetFullPath(System.IO.Path.Combine(workingDir, r"..\..\SampleExperiments\TurnSignal_VEOS\BuildResult\turnlamp.sdf"))

ScalexioPlatformName = "Scalexio Real-Time PC"
ScalexioSystemDescriptionFilePath = System.IO.Path.GetFullPath(System.IO.Path.Combine(workingDir, r"..\..\SampleExperiments\TurnSignal_SCALEXIO\BuildResult\turnlamp.sdf"))

#--------------------------------------------------------------------------------------------------
# Helpers
#--------------------------------------------------------------------------------------------------
def GetStateAsString(eesPort):
    """get eesport state as string
    @param eesPort - the eesport instance
    """
    if eesPort.State == EESPortState.eDISCONNECTED:
        return 'Disconnected'
    elif eesPort.State == EESPortState.eCONNECTED:
        return 'Connected'
    elif eesPort.State == EESPortState.eDOWNLOADED:
        return 'Downloaded'
    elif eesPort.State == EESPortState.eACTIVATED:
        return 'Activated'
    else:
        return '<????>'

#------------------------------------------------------------------------------
# Define the demo function.
#------------------------------------------------------------------------------
def CreatePortConfigFullSizeVariant1():
    """Create FullSizeVariant1 port configuration.
    """

    testbenchFactory = None
    testbench = None
    eesPort = None
    eesPortConfig = None
    errorConfiguration = None
    success = False

    #--------------------------------------------------------------------------
    # Enclose XIL API class objects with try:-finally: block, to ensure that
    # these objects are deleted at the end of the function.
    #--------------------------------------------------------------------------
    try:
        # Create TestBenchFactory.
        testbenchFactory = TestbenchFactory()
        testbench = testbenchFactory.CreateVendorSpecificTestbench(vendorName, productName, productVersion)

        # Create an EESPort instance.
        print(" 1. Create EESPort.") 
        eesPort = testbench.EESPortFactory.CreateEESPort("Demo: EESPort PortConfiguration")

        # Casting EESPort Object to IDSEESPort is not ASASM Standard but dSPACE specific.
        # --------- Start - dSPACE Specific Code ----------------------
        # Cast EESPort Object to dSPACE specific EESPort (IDSEESPort)
        print(" 2. Create PortConfiguration.") 
        dsEESPort = IDSEESPort(eesPort)
        dsEESPortConfig = dsEESPort.CreateConfiguration()

        print(" 3. Add a hardware configuration of type FullSizeVariant1 to PortConfiguration.")
        dsConfiguration = IDSMidSizeFullSizeVariant1Configuration(dsEESPortConfig.Configurations.Add(ConfigurationType.MidSizeFullSizeVariant1))
        dsConfiguration.SignalListFilePath = signalListFilePathFullSizeVariant1
        dsConfiguration.ECUVersion = 1
        dsConfiguration.COMPort = "COM3"

        print(" 4. Add signal mapping")
        dsConfiguration.Signals.Add('Signal 1', 'CFCxxxF', 'GEAR1')
        dsConfiguration.Signals.Add('Signal 2', 'CFCxxxF', 'GEAR2')
        dsConfiguration.Signals.Add('Signal 3','CFCxxxF','SHIFT1')

        print(" 5. Add Real-Time Configuration")
        dsEESPortConfig.RealTimeConfiguration.PlatformName = PlatformName
        dsEESPortConfig.RealTimeConfiguration.SystemDescriptionFilePath = SystemDescriptionFilePath

        # Enable Tracing.
        dsEESPortConfig.RealTimeConfiguration.Enabled = False

        # Set trace variable paths
        dsEESPortConfig.RealTimeConfiguration.Tracing.ActiveErrorSetVariable = ActiveErrorSetVariable
        dsEESPortConfig.RealTimeConfiguration.Tracing.ErrorActivatedVariable = ErrorActivatedVariable
        dsEESPortConfig.RealTimeConfiguration.Tracing.ErrorSwitchingVariable = ErrorSwitchingVariable
        dsEESPortConfig.RealTimeConfiguration.Tracing.FlagsVariable = FlagsVariable
        dsEESPortConfig.RealTimeConfiguration.Tracing.TriggerVariable = TriggerVariable

        print(" 6. Save PortConfiguration")
        dsEESPortConfig.Save(portConfigSavePath,'2020-A')

        print(" 7. Load PortConfiguration")
        dsEESPortConfig.Load(portConfigSavePath)

        success = True
        # --------- End - dSPACE Specific Code ----------------------
    except EESPortException as e:
        print("EESPortException caught: %s" % e.Message)
        #print("VendorCode: %s, VendorCodeDescription: %s" % (e.VendorCode, e.VendorCodeDescription))
        #print(e.StackTrace)
        
    except System.ArgumentOutOfRangeException as e:
        print("ArgumentOutOfRangeException caught: %s" % e.Message)
        ##Show StackTrace
        #print(e.StackTrace)

    except System.Exception as e:
        print("Exception caught: %s" % e.Message)
        ##Show StackTrace
        #print(e.StackTrace)

    finally:
        eesPortConfig       = None
        errorConfiguration  = None
        testbench           = None
        testbenchFactory    = None
        
        if eesPort:
            print(" 8. Dispose EESPort.")
            eesPort.Dispose()
            eesPort = None

    return success

def CreatePortConfigMidSize2210DS749():
    """Create MidSize2210 - DS749 port configuration.
    """
    
    testbenchFactory = None
    testbench = None
    eesPort = None
    eesPortConfig = None
    errorConfiguration = None
    success = False

    #--------------------------------------------------------------------------
    # Enclose XIL API class objects with try:-finally: block, to ensure that
    # these objects are deleted at the end of the function.
    #--------------------------------------------------------------------------    
    try:
        # Create TestBenchFactory.
        testbenchFactory = TestbenchFactory()
        testbench = testbenchFactory.CreateVendorSpecificTestbench(vendorName, productName, productVersion)

        # Create an EESPort instance.
        print(" 1. Create EESPort.") 
        eesPort = testbench.EESPortFactory.CreateEESPort("Demo: EESPort PortConfiguration")

        # Casting EESPort Object to IDSEESPort is not ASASM Standard but dSPACE specific.
        # --------- Start - dSPACE Specific Code ----------------------
        # Cast EESPort Object to dSPACE specific EESPort (IDSEESPort)
        print(" 2. Create PortConfiguration.") 
        dsEESPort = IDSEESPort(eesPort)
        dsEESPortConfig = dsEESPort.CreateConfiguration()

        print(" 3. Add a hardware configuration of type MidSize DS749 to PortConfiguration.")
        dsConfiguration = IDSMidSizeFullSizeVariant1Configuration(dsEESPortConfig.Configurations.Add(ConfigurationType.MidSizeFullSizeVariant1))
        dsConfiguration.SignalListFilePath = signalListFilePathMidSizeBasedOnDS2210DS749
        dsConfiguration.ECUVersion = 1
        dsConfiguration.COMPort = "COM3"

        print(" 4. Add signal mapping")
        dsConfiguration.Signals.Add('Signal1', 'ECU 1', 'Test_ADC1+')
        dsConfiguration.Signals.Add('Signal2', 'ECU 1', 'Test_ADC2+')
        dsConfiguration.Signals.Add('Signal3', 'ECU 1', 'Test_ADC3+')

        print(" 5. Add Real-Time Configuration")
        dsEESPortConfig.RealTimeConfiguration.PlatformName = PlatformName
        dsEESPortConfig.RealTimeConfiguration.SystemDescriptionFilePath = SystemDescriptionFilePath

        # Enable Tracing.
        dsEESPortConfig.RealTimeConfiguration.Enabled = False

        # Set trace variable paths
        dsEESPortConfig.RealTimeConfiguration.Tracing.ActiveErrorSetVariable = ActiveErrorSetVariable
        dsEESPortConfig.RealTimeConfiguration.Tracing.ErrorActivatedVariable = ErrorActivatedVariable
        dsEESPortConfig.RealTimeConfiguration.Tracing.ErrorSwitchingVariable = ErrorSwitchingVariable
        dsEESPortConfig.RealTimeConfiguration.Tracing.FlagsVariable = FlagsVariable
        dsEESPortConfig.RealTimeConfiguration.Tracing.TriggerVariable = TriggerVariable

        print(" 6. Save PortConfiguration")
        dsEESPortConfig.Save(portConfigSavePath,'2020-A')

        print(" 7. Load PortConfiguration")
        dsEESPortConfig.Load(portConfigSavePath)

        success = True

        # --------- End - dSPACE Specific Code ----------------------

    except EESPortException as e:
        print("EESPortException caught: %s" % e.Message)
        #print("VendorCode: %s, VendorCodeDescription: %s" % (e.VendorCode, e.VendorCodeDescription))
        #print(e.StackTrace)
        
    except System.ArgumentOutOfRangeException as e:
        print("ArgumentOutOfRangeException caught: %s" % e.Message)
        ##Show StackTrace
        #print(e.StackTrace)

    except System.Exception as e:
        print("Exception caught: %s" % e.Message)
        ##Show StackTrace
        #print(e.StackTrace)

    finally:
        eesPortConfig       = None
        errorConfiguration  = None
        testbench           = None
        testbenchFactory    = None
        
        if eesPort:
            print(" 8. Dispose EESPort.")
            eesPort.Dispose()
            eesPort = None

    return success

def CreatePortConfigMidSize2210DS789():
    """Create MidSize2210 - DS789 port configuration.
    """

    testbenchFactory = None
    testbench = None
    eesPort = None
    eesPortConfig = None
    errorConfiguration = None
    success = False

    #--------------------------------------------------------------------------
    # Enclose XIL API class objects with try:-finally: block, to ensure that
    # these objects are deleted at the end of the function.
    #--------------------------------------------------------------------------
    try:
        # Create TestBenchFactory.
        testbenchFactory = TestbenchFactory()
        testbench = testbenchFactory.CreateVendorSpecificTestbench(vendorName, productName, productVersion)

        # Create an EESPort instance.
        print(" 1. Create EESPort.") 
        eesPort = testbench.EESPortFactory.CreateEESPort("Demo: EESPort PortConfiguration")

        # Casting EESPort Object to IDSEESPort is not ASASM Standard but dSPACE specific.
        # --------- Start - dSPACE Specific Code ----------------------
        # Cast EESPort Object to dSPACE specific EESPort (IDSEESPort)
        print(" 2. Create PortConfiguration.") 
        dsEESPort = IDSEESPort(eesPort)
        dsEESPortConfig = dsEESPort.CreateConfiguration()

        print(" 3. Add a hardware configuration of type MidSize 789 to PortConfiguration.")
        dsConfiguration = IDSMidSizeFullSizeVariant1Configuration(dsEESPortConfig.Configurations.Add(ConfigurationType.MidSizeFullSizeVariant1))
        dsConfiguration.SignalListFilePath = signalListFilePathMidSizeBasedOnDS2210DS789
        dsConfiguration.ECUVersion = 1
        dsConfiguration.COMPort = "COM3"

        print(" 4. Add potential mapping")
        dsConfiguration.Potentials.Add('VBAT', PotentialType.Ubat)
        dsConfiguration.Potentials.Add('VTest1', PotentialType.Gnd)
        dsConfiguration.Potentials.Add('SensorSupply1', PotentialType.Potential)
        dsConfiguration.Potentials.Add('SensorSupply2', PotentialType.Potential)
        
        print(" 5. Add signal mapping")
        dsConfiguration.Signals.Add('Signal1', 'ECU_1', 'Test_Crank')
        dsConfiguration.Signals.Add('Signal2', 'ECU_1', 'Test_Crank_ref')
        dsConfiguration.Signals.Add('Signal3', 'ECU_1', 'Test_Cam_1')

        print(" 6. Add Real-Time Configuration")
        dsEESPortConfig.RealTimeConfiguration.PlatformName = PlatformName
        dsEESPortConfig.RealTimeConfiguration.SystemDescriptionFilePath = SystemDescriptionFilePath

        # Enable Tracing.
        dsEESPortConfig.RealTimeConfiguration.Enabled = False

        # Set trace variable paths
        dsEESPortConfig.RealTimeConfiguration.Tracing.ActiveErrorSetVariable = ActiveErrorSetVariable
        dsEESPortConfig.RealTimeConfiguration.Tracing.ErrorActivatedVariable = ErrorActivatedVariable
        dsEESPortConfig.RealTimeConfiguration.Tracing.ErrorSwitchingVariable = ErrorSwitchingVariable
        dsEESPortConfig.RealTimeConfiguration.Tracing.FlagsVariable = FlagsVariable
        dsEESPortConfig.RealTimeConfiguration.Tracing.TriggerVariable = TriggerVariable
        
        print(" 7. Save PortConfiguration")
        dsEESPortConfig.Save(portConfigSavePath,'2020-A')

        print(" 8. Load PortConfiguration")
        dsEESPortConfig.Load(portConfigSavePath)

        success = True

        # --------- End - dSPACE Specific Code ----------------------
    except EESPortException as e:
        print("EESPortException caught: %s" % e.Message)
        #print("VendorCode: %s, VendorCodeDescription: %s" % (e.VendorCode, e.VendorCodeDescription))
        #print(e.StackTrace)
        
    except System.ArgumentOutOfRangeException as e:
        print("ArgumentOutOfRangeException caught: %s" % e.Message)
        ##Show StackTrace
        #print(e.StackTrace)

    except System.Exception as e:
        print("Exception caught: %s" % e.Message)
        ##Show StackTrace
        #print(e.StackTrace)

    finally:
        eesPortConfig       = None
        errorConfiguration  = None
        testbench           = None
        testbenchFactory    = None
        
        if eesPort:
            print(" 9. Dispose EESPort.")
            eesPort.Dispose()
            eesPort = None

    return success

def CreatePortConfigMidSize2211():
    """Create MidSize2211 port configuration.
    """

    testbenchFactory = None
    testbench = None
    eesPort = None
    eesPortConfig = None
    errorConfiguration = None
    success = False

    #--------------------------------------------------------------------------
    # Enclose XIL API class objects with try:-finally: block, to ensure that
    # these objects are deleted at the end of the function.
    #--------------------------------------------------------------------------
    try:
        # Create TestBenchFactory.
        testbenchFactory = TestbenchFactory()
        testbench = testbenchFactory.CreateVendorSpecificTestbench(vendorName, productName, productVersion)

        # Create an EESPort instance.
        print(" 1. Create EESPort.") 
        eesPort = testbench.EESPortFactory.CreateEESPort("Demo: EESPort PortConfiguration")

        # Casting EESPort Object to IDSEESPort is not ASASM Standard but dSPACE specific.
        # --------- Start - dSPACE Specific Code ----------------------
        # Cast EESPort Object to dSPACE specific EESPort (IDSEESPort)
        print(" 2. Create PortConfiguration.") 
        dsEESPort = IDSEESPort(eesPort)
        dsEESPortConfig = dsEESPort.CreateConfiguration()

        print(" 3. Add a hardware configuration of type MidSize2211 to PortConfiguration.")
        dsConfiguration = IDSMidSizeFullSizeVariant1Configuration(dsEESPortConfig.Configurations.Add(ConfigurationType.MidSizeFullSizeVariant1))
        dsConfiguration.SignalListFilePath = signalListFilePathMidSizeBasedOnDS2211
        dsConfiguration.ECUVersion = 1
        dsConfiguration.COMPort = "COM3"

        print(" 4. Add potential mapping")
        dsConfiguration.Potentials.Add('VBAT1', PotentialType.Potential)
        dsConfiguration.Potentials.Add('VBAT2', PotentialType.Potential)
        dsConfiguration.Potentials.Add('GND', PotentialType.Gnd)
        
        print(" 5. Add signal mapping")
        dsConfiguration.Signals.Add('Signal1', 'ECU_1', 'Crank_sensor')
        dsConfiguration.Signals.Add('Signal2', 'ECU_1', 'Crank_sensor_ref')
        dsConfiguration.Signals.Add('Signal3', 'ECU_1', 'Cam1_sensor')

        print(" 6. Add Real-Time Configuration")
        dsEESPortConfig.RealTimeConfiguration.PlatformName = PlatformName
        dsEESPortConfig.RealTimeConfiguration.SystemDescriptionFilePath = SystemDescriptionFilePath

        # Enable Tracing.
        dsEESPortConfig.RealTimeConfiguration.Enabled = False

        # Set trace variable paths
        dsEESPortConfig.RealTimeConfiguration.Tracing.ActiveErrorSetVariable = ActiveErrorSetVariable
        dsEESPortConfig.RealTimeConfiguration.Tracing.ErrorActivatedVariable = ErrorActivatedVariable
        dsEESPortConfig.RealTimeConfiguration.Tracing.ErrorSwitchingVariable = ErrorSwitchingVariable
        dsEESPortConfig.RealTimeConfiguration.Tracing.FlagsVariable = FlagsVariable
        dsEESPortConfig.RealTimeConfiguration.Tracing.TriggerVariable = TriggerVariable
        
        print(" 7. Save PortConfiguration")
        dsEESPortConfig.Save(portConfigSavePath,'2020-A')

        print(" 8. Load PortConfiguration")
        dsEESPortConfig.Load(portConfigSavePath)

        success = True

        # --------- End - dSPACE Specific Code ----------------------
    except EESPortException as e:
        print("EESPortException caught: %s" % e.Message)
        #print("VendorCode: %s, VendorCodeDescription: %s" % (e.VendorCode, e.VendorCodeDescription))
        #print(e.StackTrace)
        
    except System.ArgumentOutOfRangeException as e:
        print("ArgumentOutOfRangeException caught: %s" % e.Message)
        ##Show StackTrace
        #print(e.StackTrace)

    except System.Exception as e:
        print("Exception caught: %s" % e.Message)
        ##Show StackTrace
        #print(e.StackTrace)

    finally:
        eesPortConfig       = None
        errorConfiguration  = None
        testbench           = None
        testbenchFactory    = None
        
        if eesPort:
            print(" 9. Dispose EESPort.")
            eesPort.Dispose()
            eesPort = None
    return success

def CreatePortConfigFullSizeVariant2():
    """Create FullSizeVariant2 - DS749 port configuration.
    """

    testbenchFactory = None
    testbench = None
    eesPort = None
    eesPortConfig = None
    errorConfiguration = None
    success = False

    #--------------------------------------------------------------------------
    # Enclose XIL API class objects with try:-finally: block, to ensure that
    # these objects are deleted at the end of the function.
    #--------------------------------------------------------------------------
    try:
        # Create TestBenchFactory.
        testbenchFactory = TestbenchFactory()
        testbench = testbenchFactory.CreateVendorSpecificTestbench(vendorName, productName, productVersion)

        # Create an EESPort instance.
        print(" 1. Create EESPort.") 
        eesPort = testbench.EESPortFactory.CreateEESPort("Demo: EESPort PortConfiguration")

        # Casting EESPort Object to IDSEESPort is not ASASM Standard but dSPACE specific.
        # --------- Start - dSPACE Specific Code ----------------------
        # Cast EESPort Object to dSPACE specific EESPort (IDSEESPort)
        print(" 2. Create PortConfiguration.") 
        dsEESPort = IDSEESPort(eesPort)
        dsEESPortConfig = dsEESPort.CreateConfiguration()

        print(" 3. Add a hardware configuration of type FullSizeVariant2 to PortConfiguration.")
        dsConfiguration = IDSFullSizeVariant2Configuration(dsEESPortConfig.Configurations.Add(ConfigurationType.FullSizeVariant2))
        dsConfiguration.SignalListFilePath = signalListFilePathFullSizeVariant2
        dsConfiguration.ECUVersion = 1
        dsConfiguration.CANAPIVersion = DSCANAPIVersion.v20;
        dsConfiguration.VendorName = CANVendorNames.dSPACE
        dsConfiguration.InterfaceName = CANInterfaceNames.DCICAN2
        dsConfiguration.ChannelIdentifier = "1"
        dsConfiguration.SerialNumber = "0"

        print(" 4. Add potential mapping")
        dsConfiguration.Potentials.Add('Ubat', PotentialType.Ubat)
        dsConfiguration.Potentials.Add('Gnd', PotentialType.Gnd)
        dsConfiguration.Potentials.Add('Pot2', PotentialType.Potential)
        dsConfiguration.Potentials.Add('Pot3', PotentialType.Potential)
        dsConfiguration.Potentials.Add('Pot4', PotentialType.Potential)
        
        print(" 5. Add signal mapping")
        dsConfiguration.Signals.Add('Signal1', 'ECU1', 'Pin 1')
        dsConfiguration.Signals.Add('Signal2', 'ECU1', 'Pin 2')
        dsConfiguration.Signals.Add('Signal3', 'ECU2', 'Pin 3')

        print(" 6. Add Real-Time Configuration")
        dsEESPortConfig.RealTimeConfiguration.PlatformName = PlatformName
        dsEESPortConfig.RealTimeConfiguration.SystemDescriptionFilePath = SystemDescriptionFilePath

        # Enable Tracing.
        dsEESPortConfig.RealTimeConfiguration.Enabled = False

        # Set trace variable paths
        dsEESPortConfig.RealTimeConfiguration.Tracing.ActiveErrorSetVariable = ActiveErrorSetVariable
        dsEESPortConfig.RealTimeConfiguration.Tracing.ErrorActivatedVariable = ErrorActivatedVariable
        dsEESPortConfig.RealTimeConfiguration.Tracing.ErrorSwitchingVariable = ErrorSwitchingVariable
        dsEESPortConfig.RealTimeConfiguration.Tracing.FlagsVariable = FlagsVariable
        dsEESPortConfig.RealTimeConfiguration.Tracing.TriggerVariable = TriggerVariable
        
        print(" 7. Save PortConfiguration")
        dsEESPortConfig.Save(portConfigSavePath,'2020-A')

        print(" 8. Load PortConfiguration")
        dsEESPortConfig.Load(portConfigSavePath)

        success = True

        # --------- End - dSPACE Specific Code ----------------------
    except EESPortException as e:
        print("EESPortException caught: %s" % e.Message)
        #print("VendorCode: %s, VendorCodeDescription: %s" % (e.VendorCode, e.VendorCodeDescription))
        #print(e.StackTrace)
        
    except System.ArgumentOutOfRangeException as e:
        print("ArgumentOutOfRangeException caught: %s" % e.Message)
        ##Show StackTrace
        #print(e.StackTrace)

    except System.Exception as e:
        print("Exception caught: %s" % e.Message)
        ##Show StackTrace
        #print(e.StackTrace)

    finally:
        eesPortConfig       = None
        errorConfiguration  = None
        testbench           = None
        testbenchFactory    = None
        
        if eesPort:
            print(" 9. Dispose EESPort.")
            eesPort.Dispose()
            eesPort = None

    return success
            
def CreatePortConfigSCALEXIO():
    """Create Scalexio port configuration.
    """

    testbenchFactory = None
    testbench = None
    eesPort = None
    eesPortConfig = None
    errorConfiguration = None
    success = False

    #--------------------------------------------------------------------------
    # Enclose XIL API class objects with try:-finally: block, to ensure that
    # these objects are deleted at the end of the function.
    #--------------------------------------------------------------------------
    try:
        # Create TestBenchFactory.
        testbenchFactory = TestbenchFactory()
        testbench = testbenchFactory.CreateVendorSpecificTestbench(vendorName, productName, productVersion)

        # Create an EESPort instance.
        print(" 1. Create EESPort.") 
        eesPort = testbench.EESPortFactory.CreateEESPort("Demo: EESPort PortConfiguration")

        # Casting EESPort Object to IDSEESPort is not ASASM Standard but dSPACE specific.
        # --------- Start - dSPACE Specific Code ----------------------
        # Cast EESPort Object to dSPACE specific EESPort (IDSEESPort)
        print(" 2. Create PortConfiguration.") 
        dsEESPort = IDSEESPort(eesPort)
        dsEESPortConfig = dsEESPort.CreateConfiguration()

        print(" 3. Add a hardware configuration to PortConfiguration.")
        dsConfiguration = IDSScalexioConfiguration(dsEESPortConfig.Configurations.Add(ConfigurationType.SCALEXIO))
        dsConfiguration.PlatformName = "SCALEXIO Real-Time PC"
        dsConfiguration.RTAFilePath = rtaFilePathSCALEXIO

        print(" 4. Add potential mapping")
        dsConfiguration.Potentials.Add('Power Switch 1\VBat', PotentialType.Potential)
        dsConfiguration.Potentials.Add('Power Switch 2\VBat', PotentialType.Potential)
        dsConfiguration.Potentials.Add('Power Switch 3\VBat', PotentialType.Ubat)
        
        print(" 5. Add signal mapping")
        dsConfiguration.Signals.Add('Signal1', 'ECU 1', 'Pin Group 1\Pin 1')
        dsConfiguration.Signals.Add('Signal2', 'ECU 1', 'Pin Group 1\Pin 2')
        dsConfiguration.Signals.Add('Signal3', 'ECU 1', 'Pin Group 1\Pin 3')

        print(" 6. Add Real-Time Configuration")
        dsEESPortConfig.RealTimeConfiguration.PlatformName = ScalexioPlatformName
        dsEESPortConfig.RealTimeConfiguration.SystemDescriptionFilePath = ScalexioSystemDescriptionFilePath

        # Enable Tracing.
        dsEESPortConfig.RealTimeConfiguration.Enabled = False

        # Set trace variable paths
        dsEESPortConfig.RealTimeConfiguration.Tracing.ActiveErrorSetVariable = ActiveErrorSetVariable
        dsEESPortConfig.RealTimeConfiguration.Tracing.ErrorActivatedVariable = ErrorActivatedVariable
        dsEESPortConfig.RealTimeConfiguration.Tracing.ErrorSwitchingVariable = ErrorSwitchingVariable
        dsEESPortConfig.RealTimeConfiguration.Tracing.FlagsVariable = FlagsVariable
        dsEESPortConfig.RealTimeConfiguration.Tracing.TriggerVariable = TriggerVariable
        
        print(" 7. Save PortConfiguration")
        dsEESPortConfig.Save(portConfigSavePath,'2020-A')

        print(" 8. Load PortConfiguration")
        dsEESPortConfig.Load(portConfigSavePath)

        success = True

        # --------- End - dSPACE Specific Code ----------------------
    except EESPortException as e:
        print("EESPortException caught: %s" % e.Message)
        #print("VendorCode: %s, VendorCodeDescription: %s" % (e.VendorCode, e.VendorCodeDescription))
        #print(e.StackTrace)
        
    except System.ArgumentOutOfRangeException as e:
        print("ArgumentOutOfRangeException caught: %s" % e.Message)
        ##Show StackTrace
        #print(e.StackTrace)

    except System.Exception as e:
        print("Exception caught: %s" % e.Message)
        ##Show StackTrace
        #print(e.StackTrace)

    finally:
        eesPortConfig       = None
        errorConfiguration  = None
        testbench           = None
        testbenchFactory    = None
        
        if eesPort:
            print(" 9. Dispose EESPort.")
            eesPort.Dispose()
            eesPort = None

    return success

#------------------------------------------------------------------------------
# Define the demo function.
#------------------------------------------------------------------------------	
def ExecuteDemo():
    # Execute Demos.
    result = True
    # Create PortConfiguration for FullSizeVariant1.
    print("----------------Execute CreatePortConfigFullSizeVariant1-------------------")
    success = CreatePortConfigFullSizeVariant1()
    if success == False:
        result = False
    print("---------------------------------------------------------------------------")

    # Create PortConfiguration for MidSize2210 DS749.
    print("----------------Execute CreatePortConfigMidSize2210DS749-------------------")
    success = CreatePortConfigMidSize2210DS749()
    if success == False:
        result = False
    print("---------------------------------------------------------------------------")

    # Create PortConfiguration for MidSize2210 DS789.
    print("----------------Execute CreatePortConfigMidSize2210DS789-------------------")
    success = CreatePortConfigMidSize2210DS789()
    if success == False:
        result = False    
    print("---------------------------------------------------------------------------")

    # Create PortConfiguration for MidSize2211.
    print("----------------Execute CreatePortConfigMidSize2211-------------------")
    success = CreatePortConfigMidSize2211()
    if success == False:
        result = False   
    print("---------------------------------------------------------------------------")

    # Create PortConfiguration for FullSizeVariant2.
    print("----------------Execute CreatePortConfigFullSizeVariant2-------------------")
    success = CreatePortConfigFullSizeVariant2()
    if success == False:
        result = False  
    print("---------------------------------------------------------------------------")

    # Create PortConfiguration for SCALEXIO.
    print("----------------Execute CreatePortConfigSCALEXIO-------------------")
    success = CreatePortConfigSCALEXIO()
    if success == False:
        result = False
    print("---------------------------------------------------------------------------")
    
    return result

#--------------------------------------------------------------------------------------------------
# Main Program
#--------------------------------------------------------------------------------------------------
if __name__ == '__main__':

    print("\n---------------------------------------------------------------------")
    print("            XIL API EESPort Demo : EESPort Configuration         ")
    print("-----------------------------------------------------------------------")
            
    ExecuteDemo()

    print("-----------------------------------------------------------------------")
    print("      XIL API EESPort Demo : EESPort Configuration finished!     ")
    print("-----------------------------------------------------------------------")