Files
lishanpi/bsp/device/touch/touch.h
T
hm 5ec8c122e7 refactor(lvgl): redesign System Monitor UI with Control panel and touch input
- 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
2026-04-29 22:46:14 +08:00

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