luat_tp.h 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #ifndef LUAT_TP_H
  2. #define LUAT_TP_H
  3. #include "luat_mcu.h"
  4. #include "luat_rtos.h"
  5. #include "luat_i2c.h"
  6. #define LUAT_TP_TOUCH_MAX 10
  7. typedef struct luat_tp_config luat_tp_config_t;
  8. typedef struct luat_tp_opts luat_tp_opts_t;
  9. enum{
  10. LUAT_TP_ROTATE_0 = 0,
  11. LUAT_TP_ROTATE_90,
  12. LUAT_TP_ROTATE_180,
  13. LUAT_TP_ROTATE_270,
  14. };
  15. typedef struct{
  16. uint32_t timestamp;
  17. uint16_t x_coordinate;
  18. uint16_t y_coordinate;
  19. uint8_t event;
  20. uint8_t track_id;
  21. uint8_t width;
  22. } luat_tp_data_t;
  23. typedef struct luat_tp_config{
  24. char* name;
  25. luat_ei2c_t* soft_i2c;
  26. uint8_t address;
  27. uint8_t i2c_id;
  28. uint8_t pin_rst;
  29. uint8_t pin_int;
  30. uint8_t swap_xy;
  31. uint8_t direction; // 旋转方向(软件控制)
  32. uint8_t refresh_rate;
  33. uint8_t tp_num;
  34. uint8_t int_type;
  35. int16_t w;
  36. int16_t h;
  37. void* luat_cb;
  38. luat_tp_opts_t* opts;
  39. int (*callback)(luat_tp_config_t* luat_tp_config, luat_tp_data_t* luat_tp_data);
  40. luat_tp_data_t tp_data[LUAT_TP_TOUCH_MAX];
  41. luat_rtos_task_handle task_handle;
  42. } luat_tp_config_t;
  43. typedef struct luat_tp_opts {
  44. const char* name;
  45. int (*init)(luat_tp_config_t* luat_tp_config);
  46. int (*read)(luat_tp_config_t* luat_tp_config, uint8_t* data);
  47. void (*read_done)(luat_tp_config_t* luat_tp_config);
  48. void (*deinit)(luat_tp_config_t* luat_tp_config);
  49. } luat_tp_opts_t;
  50. typedef enum{
  51. TP_EVENT_TYPE_NONE = 0,
  52. TP_EVENT_TYPE_DOWN,
  53. TP_EVENT_TYPE_UP,
  54. TP_EVENT_TYPE_MOVE
  55. } luat_tp_event_type_t;
  56. extern luat_tp_opts_t tp_config_gt911;
  57. extern luat_tp_opts_t tp_config_gt9157;
  58. extern luat_tp_opts_t tp_config_jd9261t;
  59. extern luat_tp_opts_t tp_config_jd9261t_inited;
  60. extern luat_tp_opts_t tp_config_ft3x68;
  61. extern luat_tp_opts_t tp_config_cst820;
  62. extern luat_tp_opts_t tp_config_cst92xx;
  63. extern luat_tp_opts_t tp_config_pc;
  64. int luat_tp_init(luat_tp_config_t* luat_tp_config);
  65. int luat_tp_irq_enable(luat_tp_config_t* luat_tp_config, uint8_t enabled);
  66. #endif