Ejemplo n.º 1
0
        public PeriodicRunnableInstance CreateRunnableInstance(PeriodicRunnableDefenition runnableDefenition)
        {
            PeriodicRunnableInstance runable = new PeriodicRunnableInstance();

            runable.Name           = runnableDefenition.Name;
            runable.DefenitionGuid = runnableDefenition.GUID;
            return(runable);
        }
Ejemplo n.º 2
0
        public void AddRunnableButton_Click()
        {
            PeriodicRunnableDefenition runnable = ComponentFabric.GetInstance().CreateRunnableDefenition("Refresh");

            _componentDefenition.Runnables.Add(runnable);
            _componentDefenition.Runnables.DoSort();
            AutosarApplication.GetInstance().SyncronizeRunnables(_componentDefenition);
            RefreshPortsGridView();
            tree.UpdateAutosarTreeView(tree.SelectedItem);
        }
        void WriteCallOfOsRunnables(StreamWriter writer, OsTask osTask)
        {
            if (osTask.Runnables.Count > 0)
            {
                double lastPeriod     = -1;
                int    changeIndex    = 0;
                bool   wasBracersOpen = false;
                for (int runnableIndex = 0; runnableIndex < osTask.Runnables.Count; runnableIndex++)
                {
                    PeriodicRunnableDefenition runnableDefenition = AutosarApplication.GetInstance().FindRunnableDefenition(osTask.Runnables[runnableIndex].DefenitionGuid);
                    if ((runnableDefenition != null) && (osTask.PeriodMs != runnableDefenition.PeriodMs))
                    {
                        /* Close previous period */
                        if ((lastPeriod != runnableDefenition.PeriodMs) && wasBracersOpen)
                        {
                            writer.WriteLine("    }");
                        }

                        /* Add open bracers */
                        if (lastPeriod != runnableDefenition.PeriodMs)
                        {
                            lastPeriod = runnableDefenition.PeriodMs;
                            String periodVariableName = osTask.Name + "_" + RteFunctionsGenerator.CreateFrequencyDefineName(runnableDefenition.PeriodMs) + "_" + changeIndex.ToString();
                            int    ostatok            = (int)(runnableDefenition.PeriodMs / osTask.PeriodMs);
                            changeIndex++;
                            writer.WriteLine("    if (++" + periodVariableName + " >= " + ostatok + ")");
                            writer.WriteLine("    {");
                            writer.WriteLine("        " + periodVariableName + " = 0u;");
                        }

                        wasBracersOpen = true;
                        writer.WriteLine("        " + RteFunctionsGenerator.Generate_CallOfRunnable(osTask.Runnables[runnableIndex]));
                    }
                    else
                    {
                        if (wasBracersOpen)
                        {
                            wasBracersOpen = false;
                            writer.WriteLine("    }");
                        }
                        lastPeriod = osTask.PeriodMs;
                        writer.WriteLine("    " + RteFunctionsGenerator.Generate_CallOfRunnable(osTask.Runnables[runnableIndex]));
                    }
                }

                if (wasBracersOpen)
                {
                    writer.WriteLine("    }");
                }
            }
        }
        public PeriodicRunnableDefenition FindRunnableDefenition(Guid runnableDefGuid)
        {
            PeriodicRunnableDefenition runableDef = null;

            foreach (ComponentDefenition compDef in this.ComponentDefenitionsList)
            {
                runableDef = compDef.Runnables.FindObject(runnableDefGuid);
                if (runableDef != null)
                {
                    return(runableDef);
                }
            }
            return(null);
        }
        List <double> GetDifferentFrequences()
        {
            List <double>         frequences = new List <double>();
            RunnableInstancesList runnables  = AutosarApplication.GetInstance().GetAllRunnablesOrderedByStartup();

            foreach (PeriodicRunnableInstance runnable in runnables)
            {
                PeriodicRunnableDefenition runnableDefenition = AutosarApplication.GetInstance().FindRunnableDefenition(runnables[0].DefenitionGuid);
                if (!frequences.Exists(x => x == runnableDefenition.PeriodMs))
                {
                    frequences.Add(runnableDefenition.PeriodMs);
                }
            }

            return(frequences);
        }
 public ComponentDefenition FindComponentDefenitionByRunnnable(PeriodicRunnableDefenition runnableDef)
 {
     return(FindComponentDefenitionByRunnnableGuid(runnableDef.GUID));
 }
Ejemplo n.º 7
0
        void CreateRunnable(String dir, PeriodicRunnableDefenition runnable)
        {
            ComponentDefenition compDefenition = AutosarApplication.GetInstance().FindComponentDefenitionByRunnnable(runnable);
            String       filename = dir + compDefenition.Name + "_" + runnable.Name + ".c";
            StreamWriter writer   = new StreamWriter(filename);

            RteFunctionsGenerator.GenerateFileTitle(writer, filename, "Implementation for " + compDefenition.Name + "_" + runnable.Name);

            writer.WriteLine("");
            writer.WriteLine(RteFunctionsGenerator.IncludesLine);
            RteFunctionsGenerator.AddInclude(writer, compDefenition.Name + ".h");
            writer.WriteLine("");
            writer.WriteLine(RteFunctionsGenerator.EndOfIncludesLine);
            writer.WriteLine("");

            writer.WriteLine("");
            writer.WriteLine(RteFunctionsGenerator.MacrosLine);
            writer.WriteLine("");
            writer.WriteLine(RteFunctionsGenerator.EndOfMacrosLine);
            writer.WriteLine("");

            writer.WriteLine("");
            writer.WriteLine(RteFunctionsGenerator.TypeDefenitionsLine);
            writer.WriteLine("");
            writer.WriteLine(RteFunctionsGenerator.EndOfTypeDefenitionsLine);
            writer.WriteLine("");

            writer.WriteLine("");
            writer.WriteLine(RteFunctionsGenerator.VariablesLine);
            writer.WriteLine("");
            writer.WriteLine(RteFunctionsGenerator.EndOfVariableLine);
            writer.WriteLine("");

            writer.WriteLine("");
            writer.WriteLine(RteFunctionsGenerator.LocalFunctionsDeclarationLine);
            writer.WriteLine("");
            writer.WriteLine(RteFunctionsGenerator.EndOfLocalFunctionsDeclarationLine);
            writer.WriteLine("");

            writer.WriteLine("");
            writer.WriteLine(RteFunctionsGenerator.LocalFunctionsDefenitionsLine);
            writer.WriteLine("");
            writer.WriteLine(RteFunctionsGenerator.EndOfLocalFunctionsDefenitionsLine);
            writer.WriteLine("");

            writer.WriteLine("");
            writer.WriteLine(RteFunctionsGenerator.GlobalFunctionsDefenitionsLine);
            writer.WriteLine("");



            /* Fill all function names which component could use*/
            WriteAllFunctionWhichComponentCouldUse(compDefenition, writer);

            writer.WriteLine(RteFunctionsGenerator.Generate_RunnableFunction(compDefenition, runnable));
            writer.WriteLine("{");
            writer.WriteLine("    ");
            writer.WriteLine("}");
            writer.WriteLine("");

            writer.WriteLine(RteFunctionsGenerator.EndOfGlobalFunctionsDefenitionsLine);
            writer.WriteLine("");

            RteFunctionsGenerator.WriteEndOfFile(writer);
            writer.Close();
        }
Ejemplo n.º 8
0
        public PeriodicRunnableDefenition CreateRunnableDefenition(string Name)
        {
            PeriodicRunnableDefenition runable = new PeriodicRunnableDefenition(Name);

            return(runable);
        }
Ejemplo n.º 9
0
 public static String Generate_RunnableFunction(ComponentDefenition compDefenition, PeriodicRunnableDefenition runnable)
 {
     if (compDefenition.MultipleInstantiation)
     {
         return("void " + Generate_RunnableFunctionName(compDefenition, runnable) + "(" + ComponentInstancePointerDatatype + " instance)");
     }
     else /* Single instantiation */
     {
         return("void " + Generate_RunnableFunctionName(compDefenition, runnable) + "(void)");
     }
 }
Ejemplo n.º 10
0
 public static String Generate_RunnableFunctionName(ComponentDefenition compDefenition, PeriodicRunnableDefenition runnable)
 {
     return(compDefenition.Name + "_ru" + runnable.Name);
 }