39 lines
1.1 KiB
C++
39 lines
1.1 KiB
C++
#pragma once
|
|
|
|
#include <stdio.h>
|
|
#include <inttypes.h>
|
|
#include "freertos/FreeRTOS.h"
|
|
#include "freertos/task.h"
|
|
#include "esp_system.h"
|
|
|
|
class TouchHandler {
|
|
public:
|
|
TouchHandler(QueueHandle_t touch_queue);
|
|
// the system_event_group is used to set touch-calibrated bit
|
|
virtual void init(EventGroupHandle_t system_event_group) = 0;
|
|
virtual void start_event_loop() = 0;
|
|
virtual ~TouchHandler() = 0;
|
|
private:
|
|
TouchHandler(const TouchHandler&) = delete;
|
|
TouchHandler& operator=(const TouchHandler&) = delete;
|
|
};
|
|
|
|
class EInkTouchHandler : public TouchHandler {
|
|
public:
|
|
EInkTouchHandler(QueueHandle_t touch_queue);
|
|
void init(EventGroupHandle_t system_event_group) override;
|
|
void start_event_loop() override;
|
|
~EInkTouchHandler() override;
|
|
|
|
private:
|
|
// Task adapter used for FreeRTOS task creation. Forwards to
|
|
// `run_event_loop()` using the `this` pointer passed as the task param.
|
|
static void task_adapter(void* arg);
|
|
|
|
// Instance method implementing the touch event loop.
|
|
void run_event_loop();
|
|
// prevent copying
|
|
EInkTouchHandler(const EInkTouchHandler&) = delete;
|
|
EInkTouchHandler& operator=(const EInkTouchHandler&) = delete;
|
|
};
|