First commit. Non blocking Led and Buzzer library
Dependents: non_blocking_Led_Buzze_HelloWorld
Led.cpp@0:c18c119011ec, 2016-11-21 (annotated)
- 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?
User | Revision | Line number | New 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 |