5ec8c122e7
- Replace old PERIPHERALS card with new CONTROL card (LED indicators + toggle switches + task start button) - Add touch input support via lv_port_indev_feed() in main loop - Rewrite update_ui() with real-time touch coordinate display and LED state tracking - Fix GT1151 touch driver: expose x()/y() getters as public, const-correct isActive() - Fix GT1151 scan() to clear IRQ flag on no-touch - Adjust layout spacing to accommodate wider control panel
46 lines
1.1 KiB
C++
46 lines
1.1 KiB
C++
#ifndef __TOUCH_H__
|
|
#define __TOUCH_H__
|
|
|
|
#include <cstdint>
|
|
#include "common_types.h"
|
|
|
|
class GT1151 {
|
|
public:
|
|
static GT1151 &instance();
|
|
|
|
static constexpr uint8_t kMaxTouch = 5;
|
|
static constexpr uint8_t kPressDown = 0x80;
|
|
static constexpr uint8_t kCathPress = 0x40;
|
|
|
|
RetCode init();
|
|
uint8_t scan(uint8_t mode);
|
|
|
|
uint16_t x(uint8_t index) const;
|
|
uint16_t y(uint8_t index) const;
|
|
uint8_t status() const;
|
|
bool isActive(uint8_t index) const;
|
|
uint8_t activeCount() const;
|
|
|
|
static volatile uint8_t irq_flag;
|
|
|
|
void readRegister(uint16_t reg, uint8_t *buf, uint8_t len) { readReg(reg, buf, len); }
|
|
|
|
private:
|
|
GT1151();
|
|
~GT1151() = default;
|
|
GT1151(const GT1151 &) = delete;
|
|
GT1151 &operator=(const GT1151 &) = delete;
|
|
|
|
uint8_t writeReg(uint16_t reg, const uint8_t *buf, uint8_t len);
|
|
void readReg(uint16_t reg, uint8_t *buf, uint8_t len);
|
|
uint8_t sendConfig(uint8_t mode);
|
|
void extiInit();
|
|
|
|
uint16_t x_[kMaxTouch] = {0};
|
|
uint16_t y_[kMaxTouch] = {0};
|
|
uint8_t sta_ = 0;
|
|
uint8_t touchtype_ = 0;
|
|
};
|
|
|
|
#endif
|