public CTaskSet ParseTaskSet(string FileContents)
        {
            string[] mainArray;
            string[] sa;
            string   s;

            mainArray = FileContents.Split('\n');
            CTaskSet ts = new CTaskSet();

            foreach (string sTmp in mainArray)
            {
                s = sTmp.Replace('\r', ' ');
                //Format of String : Event ID, priority, S, P, C
                if (!s.StartsWith("//") && s.Trim() != "")
                {
                    sa = s.Split(',');
                    CTask T = new CTask(sa[0],
                                        Convert.ToInt32(sa[1]),
                                        Convert.ToDouble(sa[3]),
                                        Convert.ToDouble(sa[4]),
                                        Convert.ToDouble(sa[2]),
                                        0);

                    ts.Add(T); //4 has a higher priority than 1
                }
            }
            return(ts);
        }
Example #2
0
        public void GenerateTaskSets(List <CPeriodSet> periodSets,
                                     List <double> executionTimes,
                                     List <double> releaseOffsets,
                                     CConfiguration config,
                                     CCallBack addTaskCallback)
        {
            CTaskSet ts;
            CTask    task;
            int      ii;
            int      executionTimeIdx = 0;
            int      releaseOffsetIdx = 0;
            int      count            = 0;



            _message = "";

            if (periodSets.Count < config.NumberOfTaskSets)
            {
                _message = "Number of period sets is lower than number of required tasks. This task generator can only generate number of tasks same as period sets";
            }


            periodSets.Sort();

            try
            {
                foreach (CPeriodSet ps in periodSets)
                {
                    ts = new CTaskSet();

                    if (count == config.NumberOfTaskSets)
                    {
                        break;
                    }

                    for (ii = 0; ii < ps.Count; ii++)
                    {
                        task = new CTask("T" + ii.ToString(), ii, ps.Get(ii),
                                         executionTimes[executionTimeIdx++],
                                         releaseOffsets[releaseOffsetIdx], 0);

                        ts.Add(task);

                        if (executionTimeIdx >= executionTimes.Count)
                        {
                            executionTimeIdx = 0;
                        }
                        if (releaseOffsetIdx >= releaseOffsets.Count)
                        {
                            releaseOffsetIdx = 0;
                        }
                    }

                    //Task Set Created, Now Call Delegate
                    if (addTaskCallback.AddGeneratedTaskSet(ts))
                    {
                        count++;
                    }
                }
            }
            catch (Exception e)
            {
                _message = "Error in Task Generation Routine : " + e.Message;
            }
        }