luat_tp.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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. typedef struct{
  10. uint32_t timestamp;
  11. uint16_t x_coordinate;
  12. uint16_t y_coordinate;
  13. uint8_t event;
  14. uint8_t track_id;
  15. uint8_t width;
  16. } luat_tp_data_t;
  17. typedef struct luat_tp_config{
  18. char* name;
  19. luat_ei2c_t* soft_i2c;
  20. uint8_t address;
  21. uint8_t i2c_id;
  22. uint8_t pin_rst;
  23. uint8_t pin_int;
  24. uint8_t swap_xy;
  25. uint8_t refresh_rate;
  26. uint8_t tp_num;
  27. uint8_t int_type;
  28. int16_t w;
  29. int16_t h;
  30. void* luat_cb;
  31. luat_tp_opts_t* opts;
  32. int (*callback)(luat_tp_config_t* luat_tp_config, luat_tp_data_t* luat_tp_data);
  33. luat_tp_data_t tp_data[LUAT_TP_TOUCH_MAX];
  34. luat_rtos_task_handle task_handle;
  35. } luat_tp_config_t;
  36. typedef struct luat_tp_opts {
  37. const char* name;
  38. int (*init)(luat_tp_config_t* luat_tp_config);
  39. int (*read)(luat_tp_config_t* luat_tp_config, uint8_t* data);
  40. void (*read_done)(luat_tp_config_t* luat_tp_config);
  41. void (*deinit)(luat_tp_config_t* luat_tp_config);
  42. } luat_tp_opts_t;
  43. typedef enum{
  44. TP_EVENT_TYPE_NONE = 0,
  45. TP_EVENT_TYPE_DOWN,
  46. TP_EVENT_TYPE_UP,
  47. TP_EVENT_TYPE_MOVE
  48. } luat_tp_event_type_t;
  49. extern luat_tp_opts_t tp_config_gt911;
  50. extern luat_tp_opts_t tp_config_gt9157;
  51. extern luat_tp_opts_t tp_config_jd9261t;
  52. extern luat_tp_opts_t tp_config_jd9261t_inited;
  53. int luat_tp_init(luat_tp_config_t* luat_tp_config);
  54. int luat_tp_irq_enable(luat_tp_config_t* luat_tp_config, uint8_t enabled);
  55. #endif