Enclosure files + firmware
This commit is contained in:
46
firmware/include/controllers/InputController.h
Normal file
46
firmware/include/controllers/InputController.h
Normal file
@@ -0,0 +1,46 @@
|
||||
#pragma once
|
||||
|
||||
#include <Arduino.h>
|
||||
#include <OneButton.h>
|
||||
#include <RotaryEncoder.h>
|
||||
#include <functional>
|
||||
|
||||
class InputController
|
||||
{
|
||||
public:
|
||||
InputController(uint8_t buttonPin, uint8_t encoderPinA, uint8_t encoderPinB);
|
||||
void begin();
|
||||
void update();
|
||||
|
||||
void onPressHandler(std::function<void()> handler);
|
||||
void onDoublePressHandler(std::function<void()> handler);
|
||||
void onLongPressHandler(std::function<void()> handler);
|
||||
void onEncoderRotateHandler(std::function<void(int delta)> handler);
|
||||
|
||||
void releaseHandlers();
|
||||
|
||||
private:
|
||||
OneButton button;
|
||||
RotaryEncoder encoder;
|
||||
|
||||
uint8_t buttonPin;
|
||||
uint8_t encoderPinA;
|
||||
uint8_t encoderPinB;
|
||||
|
||||
std::function<void()> pressHandler = nullptr;
|
||||
std::function<void()> doublePressHandler = nullptr;
|
||||
std::function<void()> longPressHandler = nullptr;
|
||||
std::function<void(int delta)> encoderRotateHandler = nullptr;
|
||||
|
||||
int lastPosition;
|
||||
|
||||
void onButtonClick();
|
||||
void onButtonDoubleClick();
|
||||
void onButtonLongPress();
|
||||
void onEncoderRotate(int delta);
|
||||
|
||||
static void handleEncoderInterrupt();
|
||||
static void handleButtonInterrupt();
|
||||
};
|
||||
|
||||
extern InputController inputController;
|
||||
Reference in New Issue
Block a user