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); }
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; } }