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/

BlinkLed.cpp

Committer:
togayan
Date:
2012-09-01
Revision:
0:a55a3351317d
Child:
1:54071e781f77

File content as of revision 0:a55a3351317d:

#include "BlinkLed.h"
    
BlinkLed::BlinkLed(PinName pin, float dutyChangeStep) :
led(pin),
dutyChangeStep(dutyChangeStep),
pause(true),
thread(0)
{
}

BlinkLed::~BlinkLed()
{
}

void BlinkLed::startBlink()
{
    pause = false;
    if(thread == 0)
    {
        thread = new Thread(blink, this, osPriorityNormal, 128, NULL);
    }
}

void BlinkLed::finishBlink()
{
    pause = true;
}

void BlinkLed::blink(void const *argument)
{
    BlinkLed* self = (BlinkLed*)argument;
    
    bool sign = false;
    while (1)
    {
        if(self->pause)
        {
            self->led = 0.0F;
        }
        else
        {
            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);
    }
}