Library thread Blink Led or other processes use RTOS

Dependents:   LedsThreading

Fork of BlinkLed by Satoshi Togawa

Example

https://developer.mbed.org/users/AVELARDEV/code/LedsThreading/

Revision:
3:f317d057edde
Parent:
2:1d0c09c1a8b4
--- a/BlinkLed.cpp	Mon Dec 24 06:38:42 2012 +0000
+++ b/BlinkLed.cpp	Tue May 24 06:38:16 2016 +0000
@@ -1,10 +1,8 @@
 #include "BlinkLed.h"
 
-BlinkLed::BlinkLed(PinName pin, float dutyChangeStep) :
+BlinkLed::BlinkLed(PinName pin, int n) :
     led(pin),
-    dutyChangeStep(dutyChangeStep),
-    pause(true),
-    thread(0)
+    n(n)
 {
 }
 
@@ -14,39 +12,16 @@
 
 void BlinkLed::startBlink()
 {
-    pause = false;
-    if(!thread)
-    {
-        thread = new Thread(blink, this, osPriorityNormal, 128, NULL);
-    }
-    thread->signal_set(1);
-}
-
-void BlinkLed::finishBlink()
-{
-    pause = true;
-}
-
-bool BlinkLed::isBlinking()
-{
-    return !pause;
+    thread = new Thread(blink, this);
 }
 
 void BlinkLed::blink(void const *argument)
 {
     BlinkLed* self = (BlinkLed*)argument;
 
-    bool sign = false;
     while(1)
     {
-        if(self->pause)
-        {
-            self->led = 0.0F;
-            Thread::signal_wait(1);
-        }
-        float brightness = self->led;
-        sign = (brightness <= 0.0F) ? true : (1.0F <= brightness) ? false : sign;
-        self->led = sign ? brightness + self->dutyChangeStep : brightness - self->dutyChangeStep;
-        Thread::wait(20);
+        self->led = !self->led;
+        Thread::wait(self->n);
     }
 }