semf
ledblinking.cpp
Go to the documentation of this file.
1
12#include <limits>
13
14namespace semf
15{
16LedBlinking::LedBlinking(Gpio& ledPin, app::TimeBase& timebase, bool inverted)
17: m_pwm(ledPin, timebase, inverted),
18 m_inverted(inverted)
19{
20}
21
23{
24 SEMF_INFO("set on");
25 m_pwm.setMaxValue(10);
26 m_pwm.set(10);
27 m_pwm.start();
28 m_mode = Mode::On;
29}
30
32{
33 SEMF_INFO("set off");
34 m_pwm.set(0);
35 m_pwm.start();
36 m_mode = Mode::Off;
37}
38
40{
41 SEMF_INFO("toggle");
42 // Led is on, if value is maxValue
43 if (m_mode == Mode::On)
44 setOff();
45 else if (m_mode == Mode::Off)
46 setOn();
47}
48
49void LedBlinking::setBlinking(unsigned int onOffTime)
50{
51 setBlinking(onOffTime, onOffTime);
52}
53
54void LedBlinking::setBlinking(unsigned int onTime, unsigned int offTime)
55{
56 SEMF_INFO("set blinking with on time %u and off time %u", onTime, offTime);
57 m_pwm.setMaxValue(onTime + offTime);
58 m_pwm.set(onTime, m_inverted);
59 if (!m_pwm.isEnabled())
60 {
61 SEMF_INFO("start pwm");
62 m_pwm.start();
63 }
64 m_mode = Mode::Blinking;
65}
66
68{
69 return m_mode;
70}
71} /* namespace semf */
Interface class for using a GPIO pin of the microcontroller.
Definition: gpio.h:23
void setOn() override
Definition: ledblinking.cpp:22
Mode mode() const override
Returns the active mode of the led.
Definition: ledblinking.cpp:67
void setOff() override
Definition: ledblinking.cpp:31
void setBlinking(unsigned int onOffTime) override
Starts blinking the led with the same on and off time.
Definition: ledblinking.cpp:49
LedBlinking(Gpio &ledPin, app::TimeBase &timebase, bool inverted=false)
Constructor.
Definition: ledblinking.cpp:16
void toggle() override
Definition: ledblinking.cpp:39
void setMaxValue(unsigned int maxValue) override
Set the maximum possible PWM value.
Definition: softpwm.cpp:21
void set(unsigned int value, bool inverted=false) override
Set a PWM value. Duty cycle is value / maxValue.
Definition: softpwm.cpp:32
bool isEnabled() const override
Returns the current status of PWM module.
Definition: softpwm.cpp:61
void start() override
Definition: softpwm.cpp:48
A TimeBase is the bridge between e.g. a hardware timer (interrupt service routine) and TickReceiver o...
Definition: timebase.h:36
#define SEMF_INFO(...)
Definition: debug.h:41