luat_tp.c 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #include "luat_base.h"
  2. #include "luat_tp.h"
  3. #include "luat_mem.h"
  4. #include "luat_gpio.h"
  5. #define LUAT_LOG_TAG "tp"
  6. #include "luat_log.h"
  7. luat_rtos_task_handle tp_task_handle = NULL;
  8. void luat_tp_task_entry(void* param){
  9. uint32_t message_id = 0;
  10. luat_tp_config_t *luat_tp_config = NULL;
  11. while (1){
  12. luat_rtos_message_recv(tp_task_handle, &message_id, &luat_tp_config, LUAT_WAIT_FOREVER);
  13. luat_tp_data_t* tp_data = luat_tp_config->tp_data;
  14. uint8_t touch_num = luat_tp_config->opts->read(luat_tp_config,tp_data);
  15. if (touch_num){
  16. if (luat_tp_config->callback == NULL){
  17. luat_gpio_irq_enable(luat_tp_config->pin_int, 1);
  18. }else{
  19. luat_tp_config->callback(luat_tp_config,tp_data);
  20. }
  21. }else{
  22. luat_gpio_irq_enable(luat_tp_config->pin_int, 1);
  23. }
  24. }
  25. }
  26. int luat_tp_init(luat_tp_config_t* luat_tp_config){
  27. if (tp_task_handle == 0){
  28. luat_rtos_task_create(&tp_task_handle, 4096, 10, "tp", luat_tp_task_entry, NULL, 10);
  29. }
  30. tp_config_gt911.init(luat_tp_config);
  31. return 0;
  32. }