Library thread Blink Led or other processes use RTOS
Fork of BlinkLed by
Example
https://developer.mbed.org/users/AVELARDEV/code/LedsThreading/
BlinkLed.cpp
- Committer:
- togayan
- Date:
- 2012-09-01
- Revision:
- 1:54071e781f77
- Parent:
- 0:a55a3351317d
- Child:
- 2:1d0c09c1a8b4
File content as of revision 1:54071e781f77:
#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) { thread = new Thread(blink, this, osPriorityNormal, 128, NULL); } thread->signal_set(1); } 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; 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); } }