List <double> PeriodChangeTimes(OsTask task)
        {
            List <double>         periods   = new List <double>();
            RunnableInstancesList runnables = task.Runnables;
            double prevPeriod = -1;

            for (int i = 0; i < runnables.Count; i++)
            {
                /* Check if period of runnable is other then the task's period */
                if (runnables[i].Defenition.PeriodMs != task.PeriodMs)
                {
                    if (runnables[i].Defenition.PeriodMs != prevPeriod)
                    {
                        prevPeriod = runnables[i].Defenition.PeriodMs;
                        periods.Add(runnables[i].Defenition.PeriodMs);
                    }
                }
                else
                {
                    prevPeriod = task.PeriodMs;
                }
            }

            return(periods);
        }
 public void UpdateAllRunnablesGrid()
 {
     allFreeRunnables = AutosarApplication.GetInstance().GetAllUnnassignedRunnables();
     allFreeRunnables.SortByName();
     RunnablesGrid.ItemsSource = null;
     RunnablesGrid.ItemsSource = allFreeRunnables;
 }
        public RunnableInstancesList GetAllRunnablesOrderedByStartup()
        {
            RunnableInstancesList           allrunnables     = GetAllRunnableInstances();
            List <PeriodicRunnableInstance> orderedRunnables = allrunnables.OrderBy(Obj => Obj.StartupOrder).ToList();

            allrunnables.Clear();
            allrunnables.AddRange(orderedRunnables);
            return(allrunnables);
        }
        public PeriodicRunnableInstance GetRunnableInstance(Guid GUID)
        {
            RunnableInstancesList allRunnables = GetAllRunnableInstances();

            foreach (PeriodicRunnableInstance runnable in allRunnables)
            {
                if (runnable.GUID.Equals(GUID))
                {
                    return(runnable);
                }
            }
            return(null);
        }
        public RunnableInstancesList GetAllRunnableInstances()
        {
            RunnableInstancesList runnables = new RunnableInstancesList();

            foreach (CompositionInstance composition in Compositions)
            {
                foreach (ComponentInstance component in composition.ComponentInstances)
                {
                    runnables.AddRange(component.RunableInstances);
                }
            }
            return(runnables);
        }
        public RunnableInstancesList GetAllUnnassignedRunnables()
        {
            RunnableInstancesList list         = new RunnableInstancesList();
            RunnableInstancesList allRunnables = GetAllRunnableInstances();

            foreach (PeriodicRunnableInstance runnable in allRunnables)
            {
                if (GetRunnableTask(runnable) == null)
                {
                    list.Add(runnable);
                }
            }

            return(list);
        }
        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);
        }