コード例 #1
0
 /// <summary>
 /// This function is called for each interpreter invocation before Main.
 /// Don't perform MGA operations here unless you open a transaction.
 /// </summary>
 /// <param name="project">The handle of the project opened in GME, for which the interpreter was called.</param>
 public void Initialize(MgaProject project)
 {
     if (Logger == null)
     {
         Logger = new GMELogger(project, ComponentName);
     }
     MgaGateway = new MgaGateway(project);
 }
コード例 #2
0
 public void DisposeLogger()
 {
     if (Logger != null)
     {
         Logger.Dispose();
         Logger = null;
     }
 }
コード例 #3
0
        /// <summary>
        /// No GUI and interactive elements are allowed within this function.
        /// </summary>
        /// <param name="parameters">Main parameters for this run and GUI configuration.</param>
        /// <returns>Result of the run, which contains a success flag.</returns>
        public IInterpreterResult Main(IInterpreterMainParameters parameters)
        {
            if (Logger == null)
            {
                Logger = new GMELogger(parameters.Project, ComponentName);
            }

            this.runtime.Clear();
            this.mainParameters = parameters;
            var configSuccess = this.mainParameters != null;

            this.UpdateSuccess("Configuration", configSuccess);
            this.result.Labels = "RF";

            try
            {
                MgaGateway.PerformInTransaction(delegate
                {
                    this.WorkInMainTransaction();
                },
                                                transactiontype_enum.TRANSACTION_NON_NESTED,
                                                abort: true
                                                );

                this.PrintRuntimeStatistics();
                if (this.result.Success)
                {
                    Logger.WriteInfo("Generated files are here: <a href=\"file:///{0}\" target=\"_blank\">{0}</a>", this.mainParameters.OutputDirectory);
                    Logger.WriteInfo("RF simulation has been created. [SUCCESS: {0}, Labels: {1}]", this.result.Success, this.result.Labels);
                }
                else
                {
                    Logger.WriteError("RF simulation cannot be created! See error messages above.");
                }
            }
            catch (Exception ex)
            {
                Logger.WriteError("Exception: {0}<br> {1}", ex.Message, ex.StackTrace);
            }
            finally
            {
                MgaGateway = null;
                if (Logger != null)
                {
                    Logger.Dispose();
                    Logger = null;
                }
                GC.Collect();
                GC.WaitForPendingFinalizers();
                GC.Collect();
                GC.WaitForPendingFinalizers();
            }

            META.Logger.RemoveFileListener(this.ComponentName);

            return(this.result);
        }
コード例 #4
0
        public void MainInTransaction(InterpreterMainParameters parameters, bool exportPackage = false)
        {
            this.mainParameters = (InterpreterMainParameters)parameters;

            Boolean disposeLogger = false;

            if (Logger == null)
            {
                Logger        = new GMELogger(mainParameters.Project, "CyPhyDesignExporter");
                disposeLogger = true;
            }

            var    currentObject          = mainParameters.CurrentFCO;
            var    currentOutputDirectory = mainParameters.OutputDirectory;
            string artifactName           = string.Empty;
            string metaBaseName           = currentObject.MetaBase.Name;

            try
            {
                if (metaBaseName == typeof(CyPhyClasses.DesignContainer).Name)
                {
                    artifactName = ExportToFile(CyPhyClasses.DesignContainer.Cast(currentObject), currentOutputDirectory);
                }
                else if (metaBaseName == typeof(CyPhyClasses.ComponentAssembly).Name)
                {
                    if (exportPackage)
                    {
                        artifactName = ExportToPackage(CyPhyClasses.ComponentAssembly.Cast(currentObject), currentOutputDirectory);
                    }
                    else
                    {
                        artifactName = ExportToFile(CyPhyClasses.ComponentAssembly.Cast(currentObject), currentOutputDirectory);
                    }
                }
                else if (IsTestBenchType(metaBaseName))
                {
                    artifactName = ExportToFile(CyPhyClasses.TestBenchType.Cast(currentObject), currentOutputDirectory);
                }

                if (!string.IsNullOrWhiteSpace(artifactName))
                {
                    var manifest = AVM.DDP.MetaTBManifest.OpenForUpdate(currentOutputDirectory);
                    manifest.AddArtifact(Path.GetFileName(artifactName), "Design Model");
                    manifest.Serialize(currentOutputDirectory);
                }
            }
            finally
            {
                if (disposeLogger)
                {
                    DisposeLogger();
                }
            }
        }
コード例 #5
0
        public void InvokeEx(MgaProject project, MgaFCO currentobj, MgaFCOs selectedobjs, int param)
        {
            if (!enabled)
            {
                return;
            }

            try
            {
                if (Logger == null)
                {
                    Logger = new GMELogger(project, ComponentName);
                }
                MgaGateway = new MgaGateway(project);

                this.mainParameters = new InterpreterMainParameters()
                {
                    Project        = project,
                    CurrentFCO     = currentobj as MgaFCO,
                    SelectedFCOs   = selectedobjs,
                    StartModeParam = param
                };

                _Main(this.mainParameters);

                //this.PrintRuntimeStatistics();
            }
            catch (Exception ex)
            {
                Logger.WriteError("Exception: {0}<br> {1}", ex.Message, ex.StackTrace);
            }
            finally
            {
                MgaGateway   = null;
                project      = null;
                currentobj   = null;
                selectedobjs = null;
                DisposeLogger();
                GC.Collect();
                GC.WaitForPendingFinalizers();
            }
        }
コード例 #6
0
        public Unroller(MgaProject proj, IMgaTraceability Traceability = null, GMELogger Logger = null)
        {
            this.ConnectorsProcessed          = new List <MgaModel>();
            this.ConnectorToStandalonePortMap = new Dictionary <MgaModel, List <PortWrapper> >();

            SupportedPortTypesMeta = new HashSet <int>();
            foreach (var kind in SupportedPortTypes)
            {
                SupportedPortTypesMeta.Add(proj.RootMeta.RootFolder.DefinedFCOByName[kind, true].MetaRef);
            }

            MetaRef = new Dictionary <String, int>();
            MetaRef.Add("Component", proj.RootMeta.RootFolder.DefinedFCOByName["Component", true].MetaRef);
            MetaRef.Add("ComponentAssembly", proj.RootMeta.RootFolder.DefinedFCOByName["ComponentAssembly", true].MetaRef);
            MetaRef.Add("Connector", proj.RootMeta.RootFolder.DefinedFCOByName["Connector", true].MetaRef);
            MetaRef.Add("TestBench", proj.RootMeta.RootFolder.DefinedFCOByName["TestBench", true].MetaRef);
            MetaRef.Add("TestComponent", proj.RootMeta.RootFolder.DefinedFCOByName["TestComponent", true].MetaRef);

            if (Logger == null)
            {
                this.Logger = new GMELogger(proj, "ConnectorUnroller");
                myLogger    = true;
                this.Logger.LoggingLevel = SmartLogger.MessageType_enum.Warning;
            }
            else
            {
                this.Logger = Logger;
                myLogger    = false;
            }

            if (Traceability == null)
            {
                this.Traceability = new META.MgaTraceability();
            }
            else
            {
                this.Traceability = Traceability;
            }
        }
コード例 #7
0
 public CyPhyParser(GMELogger Logger)
 {
     logger = Logger;
 }
コード例 #8
0
 public CodeGenerator(CyPhyGUIs.IInterpreterMainParameters parameters, Mode mode, GMELogger Logger)
 {
     this.Logger           = Logger;
     this.mainParameters   = parameters;
     CodeGenerator.verbose = ((CyPhy2RF.CyPhy2RF_Settings)parameters.config).Verbose;
     this.mode             = mode;
 }
コード例 #9
0
 public UnzipToTemp(GMELogger logger = null)
 {
     Logger = logger;
 }
コード例 #10
0
 private void InitializeLogger(MgaProject project)
 {
     Logger = new GMELogger(project, this.ComponentName);
 }