This library is used to dirve a led with pluse for a duration and periodic toggle. Version 1.0

Led.h

Committer:
bborredon
Date:
2015-12-24
Revision:
0:5851c2ded0ed

File content as of revision 0:5851c2ded0ed:

#ifndef __Led_H__
#define __Led_H__

/***********************************************************
Author: Bernard Borredon
Date : 24 decembre 2015
Version: 1.0
  - creation.
************************************************************/

#include "mbed.h"

/** Led class
 *  Used to drive a led : on, on for a duration, off, toggle, toggle with a period.
 *
 * @code
 * #include "Led.h"
 *
 * Led led1(LED1);  // LPC1768 LED1
 * Led led2(LED2);  // LPC1768 LED2
 * Led led3(LED3);  // LPC1768 LED3
 * Led led4(LED4);  // LPC1768 LED4
 *
 * int main()
 * {
 *   int32_t count = 0;
  
 *   // Light on LED1
 *   led1.on();
 * 
 *   // Toggle LED2 with a 2000ms period
 *   led2.toggle(2000);
 *
 *   // Toggle LED3 with a 4000ms period
 *   led3.toggle(4000,true);
 * 
 *  while(1) {
 *             // Pulse LED4 for 1000ms each 10s
 *              led4.pulse(1000);
 *              count++;
 *              wait(10.0);
 *              
 *              // After 60s stop toggle LED2
 *              if(count == 6)
 *                led2.toggle(0,false);
 *   }
 *   return(0);
 * }
 * @endcode
 */

/** LedBase class
 *  Used to drive a led : on, off, toggle.
 *
 */

class LedBase {
    public :
        /** Class constructor : create and initialize LedBase instance
         * @param pin : name of the pin connected to the led (PinName)
         * @returns none
         */
        LedBase(PinName pin);
        
        /** Toggle led 
         * @param none
         * @returns none
         */
        void toggle(void);
        
        /** Light on led
         * @param none
         * @returns none
         */
        void on(void);
        
        /** Light off led
         * @param none
         * @returns none
         */
        void off(void);
        
        /** Get led status (on or off)
         * @param none
         * @returns led status (bool)
         *      false : led is off
         *      ture  : led is on
         */
        bool isOn(void);
        
    protected :
        DigitalOut _pin;
        bool _isOn;
};
 
class Led : public LedBase {
    public :
        /** Class constructor : create and initialize Led instance
         * @param pin : name of the pin connected to the led (PinName)
         * @returns none
         */
        Led(PinName pin);
         
        /** Periodically toggle led
         * @param period : toggle period in ms (uinit16_t)
         * @param mode : stop auto toggle if false (bool)
         * @returns none
         */
        void toggle(uint16_t period, bool mode = true);
        
        /** Light on led for a duration
         * @param time : light on duration in ms (uint16_t)
         * @returns none
         */
        virtual void pulse(uint16_t time);
    
    private :
        LedBase *_led;
        Timeout _tPulse;
        Ticker _tToggle;
        void atTimer(void);
        void toggleCB(void);
};

#endif