private void GenerateExampleXmls_Click(object sender, RoutedEventArgs e)
        {
            // Generate example sequence file.

            Frame exampleFrame1 = new Frame("Example Frame 1");
            Frame exampleFrame2 = new Frame("Example Frame 2");

            exampleFrame1.AddServoPosition(new ServoPosition(0, 100));
            exampleFrame1.AddServoPosition(new ServoPosition(1, 500));
            exampleFrame1.timeToDestination = 1;

            exampleFrame2.AddServoPosition(new ServoPosition(0, 200));
            exampleFrame2.AddServoPosition(new ServoPosition(1, 600));
            exampleFrame2.timeToDestination = 0.5;

            Sequence exampleSequence1 = new Sequence("Example Sequence 1");
            Sequence exampleSequence2 = new Sequence("Example Sequence 2");

            exampleSequence1.AddFrame(exampleFrame1);
            exampleSequence1.AddFrame(exampleFrame2);

            exampleSequence2.AddFrame(exampleFrame1);
            exampleSequence2.AddFrame(exampleFrame2);

            SequenceList exampleSequenceList = new SequenceList();
            exampleSequenceList.AddSequence(exampleSequence1);
            exampleSequenceList.AddSequence(exampleSequence2);

            exampleSequenceList.SaveToXml("ExampleSequenceFile.xml");

            // Generate example servo configuration file.

            servoManager.GenerateExampleConfigFile("ExampleServoConfig.xml");
        }
 public void AddSequence(Sequence newSequence)
 {
     sequenceList.Add(newSequence);
 }
        // Starts running the selected sequence in a new thread. Fails if another sequence
        // is already running.
        public void RunSequence(string sequenceName)
        {
            Sequence sequence = sequenceList.GetSequences().Find(x => x.name == sequenceName);

            if (sequence == null)
            {
                ErrorLogging.AddMessage(ErrorLogging.LoggingLevel.Error, "Sequence '" + sequenceName + "' not found.");
                return;
            }

            lock (sequenceLock)
            {
                if (sequenceIsRunning)
                {
                    ErrorLogging.AddMessage(ErrorLogging.LoggingLevel.Warning, "RunSequence() failed to run sequence '" + sequenceName + "', another sequence is already running.");
                    return;
                }
                else
                {
                    sequenceIsRunning = true;
                }
            }

            runningSequence = sequence;
            Thread oThread = new Thread(new ThreadStart(RunSequenceThread));

            // Start the thread
            oThread.Start();
        }