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

Committer:
bborredon
Date:
Thu Dec 24 12:32:33 2015 +0000
Revision:
0:5851c2ded0ed
Led library version 1.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bborredon 0:5851c2ded0ed 1 /***********************************************************
bborredon 0:5851c2ded0ed 2 Author: Bernard Borredon
bborredon 0:5851c2ded0ed 3 Date : 24 decembre 2015
bborredon 0:5851c2ded0ed 4 Version: 1.0
bborredon 0:5851c2ded0ed 5 - creation.
bborredon 0:5851c2ded0ed 6 ************************************************************/
bborredon 0:5851c2ded0ed 7
bborredon 0:5851c2ded0ed 8 #include "Led.h"
bborredon 0:5851c2ded0ed 9
bborredon 0:5851c2ded0ed 10 // Class LedBase
bborredon 0:5851c2ded0ed 11
bborredon 0:5851c2ded0ed 12 /* LedBase(PinName pin)
bborredon 0:5851c2ded0ed 13 * Class constructor : create and initialize LedBase instance
bborredon 0:5851c2ded0ed 14 * @param pin : name of the pin connected to the led (PinName)
bborredon 0:5851c2ded0ed 15 * @returns none
bborredon 0:5851c2ded0ed 16 */
bborredon 0:5851c2ded0ed 17 LedBase::LedBase(PinName pin) : _pin(pin)
bborredon 0:5851c2ded0ed 18 {
bborredon 0:5851c2ded0ed 19
bborredon 0:5851c2ded0ed 20 // Led is off
bborredon 0:5851c2ded0ed 21 _pin = 0;
bborredon 0:5851c2ded0ed 22 _isOn = 0;
bborredon 0:5851c2ded0ed 23 }
bborredon 0:5851c2ded0ed 24
bborredon 0:5851c2ded0ed 25 /* void toggle(void)
bborredon 0:5851c2ded0ed 26 * Toggle led
bborredon 0:5851c2ded0ed 27 * @param none
bborredon 0:5851c2ded0ed 28 * @returns none
bborredon 0:5851c2ded0ed 29 */
bborredon 0:5851c2ded0ed 30 void LedBase::toggle(void)
bborredon 0:5851c2ded0ed 31 {
bborredon 0:5851c2ded0ed 32 _isOn = !_isOn;
bborredon 0:5851c2ded0ed 33 _pin = !_pin;
bborredon 0:5851c2ded0ed 34 }
bborredon 0:5851c2ded0ed 35
bborredon 0:5851c2ded0ed 36 /* void on(void)
bborredon 0:5851c2ded0ed 37 * Light on led
bborredon 0:5851c2ded0ed 38 * @param none
bborredon 0:5851c2ded0ed 39 * @returns none
bborredon 0:5851c2ded0ed 40 */
bborredon 0:5851c2ded0ed 41 void LedBase::on(void)
bborredon 0:5851c2ded0ed 42 {
bborredon 0:5851c2ded0ed 43 if(!_isOn) {
bborredon 0:5851c2ded0ed 44 _isOn = true;
bborredon 0:5851c2ded0ed 45 _pin = 1;
bborredon 0:5851c2ded0ed 46 }
bborredon 0:5851c2ded0ed 47 }
bborredon 0:5851c2ded0ed 48
bborredon 0:5851c2ded0ed 49 /* void off(void)
bborredon 0:5851c2ded0ed 50 * Light off led
bborredon 0:5851c2ded0ed 51 * @param none
bborredon 0:5851c2ded0ed 52 * @returns none
bborredon 0:5851c2ded0ed 53 */
bborredon 0:5851c2ded0ed 54 void LedBase::off(void)
bborredon 0:5851c2ded0ed 55 {
bborredon 0:5851c2ded0ed 56 _isOn = false;
bborredon 0:5851c2ded0ed 57 _pin = 0;
bborredon 0:5851c2ded0ed 58 }
bborredon 0:5851c2ded0ed 59
bborredon 0:5851c2ded0ed 60 /* bool LedBase::isOn(void)
bborredon 0:5851c2ded0ed 61 * Get led status (on or off)
bborredon 0:5851c2ded0ed 62 * @param none
bborredon 0:5851c2ded0ed 63 * @returns led status (bool)
bborredon 0:5851c2ded0ed 64 * false : led is off
bborredon 0:5851c2ded0ed 65 * ture : led is on
bborredon 0:5851c2ded0ed 66 */
bborredon 0:5851c2ded0ed 67 bool LedBase::isOn(void)
bborredon 0:5851c2ded0ed 68 {
bborredon 0:5851c2ded0ed 69 return(_isOn);
bborredon 0:5851c2ded0ed 70 }
bborredon 0:5851c2ded0ed 71
bborredon 0:5851c2ded0ed 72 // Class Led
bborredon 0:5851c2ded0ed 73
bborredon 0:5851c2ded0ed 74 /* Led(PinName pin)
bborredon 0:5851c2ded0ed 75 * Class constructor : create and initialize Led instance
bborredon 0:5851c2ded0ed 76 * @param pin : name of the pin connected to the led (PinName)
bborredon 0:5851c2ded0ed 77 * @returns none
bborredon 0:5851c2ded0ed 78 */
bborredon 0:5851c2ded0ed 79 Led::Led(PinName pin) : LedBase(pin)
bborredon 0:5851c2ded0ed 80 {
bborredon 0:5851c2ded0ed 81
bborredon 0:5851c2ded0ed 82 // Create LedBase instance
bborredon 0:5851c2ded0ed 83 _led = new LedBase(pin);
bborredon 0:5851c2ded0ed 84 }
bborredon 0:5851c2ded0ed 85
bborredon 0:5851c2ded0ed 86 /* void atTimer(void)
bborredon 0:5851c2ded0ed 87 * Led on timer : light off the led when called (private fuction)
bborredon 0:5851c2ded0ed 88 * @param none
bborredon 0:5851c2ded0ed 89 * @returns none
bborredon 0:5851c2ded0ed 90 */
bborredon 0:5851c2ded0ed 91 void Led::atTimer(void)
bborredon 0:5851c2ded0ed 92 {
bborredon 0:5851c2ded0ed 93 _led->off();
bborredon 0:5851c2ded0ed 94 }
bborredon 0:5851c2ded0ed 95
bborredon 0:5851c2ded0ed 96 /* void toggleCB(void)
bborredon 0:5851c2ded0ed 97 * Led toggle timer : toggle the led when called (private function)
bborredon 0:5851c2ded0ed 98 * @param none
bborredon 0:5851c2ded0ed 99 * @returns none
bborredon 0:5851c2ded0ed 100 */
bborredon 0:5851c2ded0ed 101 void Led::toggleCB(void)
bborredon 0:5851c2ded0ed 102 {
bborredon 0:5851c2ded0ed 103 _led->toggle();
bborredon 0:5851c2ded0ed 104 }
bborredon 0:5851c2ded0ed 105
bborredon 0:5851c2ded0ed 106 /* void Led::toggle(uint16_t period, bool mode)
bborredon 0:5851c2ded0ed 107 * Periodically toggle led
bborredon 0:5851c2ded0ed 108 * @param period : toggle period in ms (uinit16_t)
bborredon 0:5851c2ded0ed 109 * @param mode : stop auto toggle if false (bool)
bborredon 0:5851c2ded0ed 110 * @returns none
bborredon 0:5851c2ded0ed 111 */
bborredon 0:5851c2ded0ed 112 void Led::toggle(uint16_t period, bool mode)
bborredon 0:5851c2ded0ed 113 {
bborredon 0:5851c2ded0ed 114 timestamp_t t;
bborredon 0:5851c2ded0ed 115
bborredon 0:5851c2ded0ed 116 // Attach togggleCB function to _tToggle Ticker if mode is true and led is off,
bborredon 0:5851c2ded0ed 117 // overwise detach the function.
bborredon 0:5851c2ded0ed 118 if(mode && !_led->isOn()) {
bborredon 0:5851c2ded0ed 119 t = period * 1000;
bborredon 0:5851c2ded0ed 120 _tToggle.attach_us(this, &Led::toggleCB,t);
bborredon 0:5851c2ded0ed 121 }
bborredon 0:5851c2ded0ed 122 else {
bborredon 0:5851c2ded0ed 123 _tToggle.detach();
bborredon 0:5851c2ded0ed 124 }
bborredon 0:5851c2ded0ed 125 }
bborredon 0:5851c2ded0ed 126
bborredon 0:5851c2ded0ed 127 /* void pulse(uint16_t time)
bborredon 0:5851c2ded0ed 128 * Light on led for a duration
bborredon 0:5851c2ded0ed 129 * @param time : light on duration in ms (uint16_t)
bborredon 0:5851c2ded0ed 130 * @returns none
bborredon 0:5851c2ded0ed 131 */
bborredon 0:5851c2ded0ed 132 void Led::pulse(uint16_t time)
bborredon 0:5851c2ded0ed 133 {
bborredon 0:5851c2ded0ed 134 timestamp_t t;
bborredon 0:5851c2ded0ed 135
bborredon 0:5851c2ded0ed 136 // Attach atTimer function to _tPulse Timer if led is off.
bborredon 0:5851c2ded0ed 137 if(!_led->isOn()) {
bborredon 0:5851c2ded0ed 138 _led->on();
bborredon 0:5851c2ded0ed 139 t = time * 1000;
bborredon 0:5851c2ded0ed 140 _tPulse.attach_us(this,&Led::atTimer,t);
bborredon 0:5851c2ded0ed 141 }
bborredon 0:5851c2ded0ed 142 }