First commit. Non blocking Led and Buzzer library

Dependents:   non_blocking_Led_Buzze_HelloWorld

Committer:
tsungta
Date:
Mon Nov 21 06:40:27 2016 +0000
Revision:
0:c18c119011ec
Library for non blocking Led and Buzzer controller

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tsungta 0:c18c119011ec 1 /******************** (C) COPYRIGHT 2016 Delta Electronics, Inc. ***************
tsungta 0:c18c119011ec 2 *
tsungta 0:c18c119011ec 3 * File Name : Led.cpp
tsungta 0:c18c119011ec 4 * Authors : Tsungta Wu - CPBG (tsungta.wu@deltaww.com)
tsungta 0:c18c119011ec 5 * Version : V.1.0.1
tsungta 0:c18c119011ec 6 * Date : 2016/Nov/14
tsungta 0:c18c119011ec 7 *
tsungta 0:c18c119011ec 8 *******************************************************************************/
tsungta 0:c18c119011ec 9
tsungta 0:c18c119011ec 10 #include "Led.h"
tsungta 0:c18c119011ec 11 #include "mbed.h"
tsungta 0:c18c119011ec 12
tsungta 0:c18c119011ec 13 static uint8_t on_logic;
tsungta 0:c18c119011ec 14
tsungta 0:c18c119011ec 15 using namespace mbed;
tsungta 0:c18c119011ec 16
tsungta 0:c18c119011ec 17 Led::Led(PinName pin, uint8_t On_Logic) : _led(pin) {
tsungta 0:c18c119011ec 18 on_logic = On_Logic;
tsungta 0:c18c119011ec 19 _led = !on_logic;//turn off when init
tsungta 0:c18c119011ec 20
tsungta 0:c18c119011ec 21 }
tsungta 0:c18c119011ec 22
tsungta 0:c18c119011ec 23 static float Int;
tsungta 0:c18c119011ec 24 static uint8_t* Toggle;
tsungta 0:c18c119011ec 25 static uint16_t Num;
tsungta 0:c18c119011ec 26 static uint16_t toggle_cnt;
tsungta 0:c18c119011ec 27
tsungta 0:c18c119011ec 28 /**turn off led instantaneous
tsungta 0:c18c119011ec 29 * usually not used
tsungta 0:c18c119011ec 30 */
tsungta 0:c18c119011ec 31
tsungta 0:c18c119011ec 32 void Led::offLed() {
tsungta 0:c18c119011ec 33 _led = !on_logic;
tsungta 0:c18c119011ec 34 toggle_cnt = Num;
tsungta 0:c18c119011ec 35 }
tsungta 0:c18c119011ec 36
tsungta 0:c18c119011ec 37 /** Turn on led with given duration.
tsungta 0:c18c119011ec 38 * @param time - the duration of the tone in seconds
tsungta 0:c18c119011ec 39 */
tsungta 0:c18c119011ec 40
tsungta 0:c18c119011ec 41 void Led::simpleBlink(float time) {
tsungta 0:c18c119011ec 42 _led = on_logic;
tsungta 0:c18c119011ec 43 tnext.attach(this,&Led::offLed, time); // time to off
tsungta 0:c18c119011ec 44 }
tsungta 0:c18c119011ec 45
tsungta 0:c18c119011ec 46 void Led::nextToggle() {
tsungta 0:c18c119011ec 47 if (++toggle_cnt < Num) {
tsungta 0:c18c119011ec 48 if (Toggle[toggle_cnt] > 0)
tsungta 0:c18c119011ec 49 _led = on_logic;
tsungta 0:c18c119011ec 50 else
tsungta 0:c18c119011ec 51 _led = !on_logic;
tsungta 0:c18c119011ec 52 tnext.attach(this,&Led::nextToggle, Int); // time to off
tsungta 0:c18c119011ec 53 } else offLed();
tsungta 0:c18c119011ec 54 }
tsungta 0:c18c119011ec 55
tsungta 0:c18c119011ec 56 void Led::toggleLed (uint8_t* toggle_on_off, uint16_t toggle_num, float tonggle_time) {
tsungta 0:c18c119011ec 57 offLed();
tsungta 0:c18c119011ec 58
tsungta 0:c18c119011ec 59 Int = tonggle_time;
tsungta 0:c18c119011ec 60 Num = toggle_num;
tsungta 0:c18c119011ec 61 Toggle = toggle_on_off;
tsungta 0:c18c119011ec 62
tsungta 0:c18c119011ec 63 toggle_cnt = 0;
tsungta 0:c18c119011ec 64 if (on_logic)
tsungta 0:c18c119011ec 65 _led = Toggle[toggle_cnt];
tsungta 0:c18c119011ec 66 else
tsungta 0:c18c119011ec 67 _led = !Toggle[toggle_cnt];
tsungta 0:c18c119011ec 68 tnext.attach(this,&Led::nextToggle, Int); // time to off
tsungta 0:c18c119011ec 69 }
tsungta 0:c18c119011ec 70