Files
firmware/src/input/UpDownInterruptBase.h

31 lines
1.1 KiB
C
Raw Normal View History

#pragma once
#include "InputBroker.h"
2023-03-11 22:48:08 +01:00
#include "mesh/NodeDB.h"
2024-04-14 15:11:22 +02:00
class UpDownInterruptBase : public Observable<const InputEvent *>, public concurrency::OSThread
{
public:
2022-05-07 20:31:21 +10:00
explicit UpDownInterruptBase(const char *name);
void init(uint8_t pinDown, uint8_t pinUp, uint8_t pinPress, char eventDown, char eventUp, char eventPressed,
void (*onIntDown)(), void (*onIntUp)(), void (*onIntPress)());
void intPressHandler();
void intDownHandler();
void intUpHandler();
2024-04-14 15:11:22 +02:00
int32_t runOnce() override;
protected:
enum UpDownInterruptBaseActionType { UPDOWN_ACTION_NONE, UPDOWN_ACTION_PRESSED, UPDOWN_ACTION_UP, UPDOWN_ACTION_DOWN };
volatile UpDownInterruptBaseActionType action = UPDOWN_ACTION_NONE;
private:
uint8_t _pinDown = 0;
uint8_t _pinUp = 0;
char _eventDown = meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_NONE;
char _eventUp = meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_NONE;
char _eventPressed = meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_NONE;
const char *_originName;
};