44 lines
1002 B
C++
44 lines
1002 B
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;
|
|
|
|
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
|