First commit. Non blocking Led and Buzzer library

Dependents:   non_blocking_Led_Buzze_HelloWorld

Revision:
0:c18c119011ec
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Led.cpp	Mon Nov 21 06:40:27 2016 +0000
@@ -0,0 +1,70 @@
+/******************** (C) COPYRIGHT 2016 Delta Electronics, Inc. ***************
+*
+* File Name : Led.cpp
+* Authors   : Tsungta Wu - CPBG (tsungta.wu@deltaww.com)
+* Version   : V.1.0.1
+* Date      : 2016/Nov/14
+*
+*******************************************************************************/
+
+#include "Led.h"
+#include "mbed.h"
+
+static uint8_t on_logic; 
+
+using namespace mbed;
+ 
+Led::Led(PinName pin, uint8_t On_Logic) : _led(pin) {
+    on_logic = On_Logic;
+    _led = !on_logic;//turn off when init
+
+}
+
+static float Int;
+static uint8_t* Toggle;
+static uint16_t Num;
+static uint16_t toggle_cnt;
+
+ /**turn off led instantaneous 
+  * usually not used 
+  */
+  
+void Led::offLed() {
+     _led = !on_logic;
+     toggle_cnt = Num;
+}
+
+/** Turn on led with given duration.
+ * @param time - the duration of the tone in seconds
+ */
+     
+void Led::simpleBlink(float time) {
+    _led = on_logic;
+    tnext.attach(this,&Led::offLed, time);   // time to off
+}
+  
+void Led::nextToggle() {
+    if (++toggle_cnt < Num) {
+      if (Toggle[toggle_cnt] > 0)    
+        _led = on_logic;
+      else
+        _led = !on_logic;  
+      tnext.attach(this,&Led::nextToggle, Int);   // time to off
+    } else offLed();
+}
+
+void Led::toggleLed (uint8_t* toggle_on_off, uint16_t toggle_num, float tonggle_time) {
+    offLed();
+    
+    Int = tonggle_time;  
+    Num = toggle_num;
+    Toggle = toggle_on_off;
+    
+    toggle_cnt = 0;
+    if (on_logic)
+        _led = Toggle[toggle_cnt];
+    else
+        _led = !Toggle[toggle_cnt];  
+    tnext.attach(this,&Led::nextToggle, Int);   // time to off    
+}
+