This program is for an autonomous robot for the competition at the Hochschule Luzern. http://cruisingcrepe.wordpress.com/ We are one of the 32 teams. http://cruisingcrepe.wordpress.com/ The postition control is based on this Documentation: Control of Wheeled Mobile Robots: An Experimental Overview from Alessandro De Luca, Giuseppe Oriolo, Marilena Vendittelli. For more information see here: http://www.dis.uniroma1.it/~labrob/pub/papers/Ramsete01.pdf

Dependencies:   mbed

Fork of autonomous Robot Android by Christian Burri

Task/Task.h

Committer:
chrigelburri
Date:
2013-04-07
Revision:
12:235e318a414f
Parent:
11:775ebb69d5e1
Child:
38:d76e488e725f

File content as of revision 12:235e318a414f:

#ifndef _TASK_H_
#define _TASK_H_

#include "mbed.h"

/**
 * @author Christian Burri
 *
 * @copyright Copyright © 2013 HSLU Pren Team #1 Cruising Crêpe
 * All rights reserved.
 *
 * @brief
 * The <code>Task</code> class allows to install periodic, time-triggered
 * tasks. An example of a simple user-defined task is given below:
 * <pre><code>
 * class MyTask : public Task {
 *   public:
 *     void run();
 * };
 *
 * void MyTask::run() {
 *   <span style="color:#FF0000">// code to be executed periodically</span>
 * }
 * </code></pre>
 * This task can then be created and started as follows:
 * <pre><code>
 * MyTask myTask(0.1);    <span style="color:#FF0000">// period in seconds</span>
 * myTask.start();
 * ...
 *
 * myTask.stop();
 * </code></pre>
 */
class Task
{

private:

    /** specifiying the interval in seconds */
    float       period;
    /** The Ticker interface is used to setup a recurring interrupt to
     *  repeatedly call a function at a specified rate.
     */
    Ticker      ticker;

public:

    /**
     * Creates a task object with a given period.
     * @param period the period of this task in seconds.
     */
    Task(float period);

    virtual ~Task();

    /**
     * Gets the period of this task.
     * @return the period in seconds.
     */
    float           getPeriod();

    /**
     * Starts this task.
     */
    void            start();

    /**
     * Stops this task.
     */
    void            stop();

    /**
     * This method needs to be implemented by a user task.
     */
    virtual void    run();
};

#endif