luat_tp.c 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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. static luat_rtos_task_handle g_s_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(g_s_tp_task_handle, &message_id, &luat_tp_config, LUAT_WAIT_FOREVER);
  13. luat_tp_data_t* tp_data = luat_tp_config->tp_data;
  14. luat_tp_config->opts->read(luat_tp_config,tp_data);
  15. if (luat_tp_config->callback == NULL){
  16. luat_tp_config->opts->read_done(luat_tp_config);
  17. }else{
  18. luat_tp_config->callback(luat_tp_config,tp_data);
  19. }
  20. }
  21. }
  22. int luat_tp_init(luat_tp_config_t* luat_tp_config){
  23. if (g_s_tp_task_handle == NULL){
  24. int ret = luat_rtos_task_create(&g_s_tp_task_handle, 4096, 10, "tp", luat_tp_task_entry, NULL, 32);
  25. if (ret){
  26. g_s_tp_task_handle = NULL;
  27. LLOGE("tp task create failed!");
  28. return -1;
  29. }
  30. }
  31. luat_tp_config->task_handle = g_s_tp_task_handle;
  32. if (luat_tp_config->opts->init){
  33. return luat_tp_config->opts->init(luat_tp_config);
  34. }else{
  35. LLOGE("tp init error, no init function found!");
  36. return -1;
  37. }
  38. }
  39. int luat_tp_irq_enable(luat_tp_config_t* luat_tp_config, uint8_t enabled){
  40. return luat_gpio_irq_enable(luat_tp_config->pin_int, enabled, luat_tp_config->int_type, luat_tp_config);
  41. }