2023-04-03 21:10:12 +02:00
|
|
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include "PinMapping.h"
|
2023-11-20 21:47:44 +01:00
|
|
|
#include <TaskSchedulerDeclarations.h>
|
2023-04-03 21:10:12 +02:00
|
|
|
#include <TimeoutHelper.h>
|
|
|
|
|
|
|
|
|
|
#define LEDSINGLE_UPDATE_INTERVAL 2000
|
|
|
|
|
|
|
|
|
|
class LedSingleClass {
|
|
|
|
|
public:
|
|
|
|
|
LedSingleClass();
|
2023-12-12 13:26:07 +01:00
|
|
|
void init(Scheduler& scheduler);
|
2023-04-03 21:10:12 +02:00
|
|
|
|
2023-08-25 13:15:55 +02:00
|
|
|
void turnAllOff();
|
|
|
|
|
void turnAllOn();
|
|
|
|
|
|
2023-04-03 21:10:12 +02:00
|
|
|
private:
|
2023-11-21 21:30:58 +01:00
|
|
|
void setLoop();
|
|
|
|
|
void outputLoop();
|
2023-11-20 21:47:44 +01:00
|
|
|
|
2023-12-12 00:21:14 +01:00
|
|
|
void setLed(const uint8_t ledNo, const bool ledState);
|
2023-12-07 12:46:38 +01:00
|
|
|
|
2023-11-21 21:30:58 +01:00
|
|
|
Task _setTask;
|
|
|
|
|
Task _outputTask;
|
2023-11-20 21:47:44 +01:00
|
|
|
|
2023-04-03 21:10:12 +02:00
|
|
|
enum class LedState_t {
|
|
|
|
|
On,
|
|
|
|
|
Off,
|
|
|
|
|
Blink,
|
|
|
|
|
};
|
|
|
|
|
|
2023-12-07 12:46:38 +01:00
|
|
|
LedState_t _ledMode[PINMAPPING_LED_COUNT];
|
|
|
|
|
LedState_t _allMode;
|
|
|
|
|
bool _ledStateCurrent[PINMAPPING_LED_COUNT];
|
2023-04-03 21:10:12 +02:00
|
|
|
TimeoutHelper _blinkTimeout;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
extern LedSingleClass LedSingle;
|