You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

58 lines
1.3 KiB

3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
  1. /**
  2. * @file key.c
  3. * @author Finny (tianjialong0106@163.com)
  4. * @brief
  5. * @version 0.1
  6. * @date 2022-09-26
  7. *
  8. * @copyright Copyright (c) 2022
  9. *
  10. */
  11. #include "key.h"
  12. #include "port.h"
  13. #define key_long_press_time_ms 5000
  14. static T_key_structer_t *T_key_structer_s;
  15. static key_event_cb short_press_event_cb_s;
  16. static key_event_cb long_press_event_cb_s;
  17. void T_key_init(T_key_structer_t *T_key_structer)
  18. {
  19. T_key_structer_s = T_key_structer;
  20. }
  21. void T_key_registered_cb(key_event_cb short_press_event_cb, key_event_cb long_press_event_cb)
  22. {
  23. short_press_event_cb_s = short_press_event_cb;
  24. long_press_event_cb_s = long_press_event_cb;
  25. }
  26. void T_key_on_event(void)
  27. {
  28. }
  29. void T_key_schedule(void)
  30. {
  31. T_key_structer_s->key_now_state = T_key_get_level();
  32. if ((T_key_structer_s->key_before_state != T_key_structer_s->key_now_state) && (T_key_structer_s->key_now_state == true))
  33. {
  34. short_press_event_cb_s();
  35. T_key_structer_s->key_start_time = port_get_ticket();
  36. }
  37. if (T_key_structer_s->key_now_state)
  38. {
  39. if (port_get_ticket() - T_key_structer_s->key_start_time > key_long_press_time_ms)
  40. {
  41. long_press_event_cb_s();
  42. }
  43. }
  44. T_key_structer_s->key_before_state = T_key_structer_s->key_now_state;
  45. }
  46. bool T_key_get_level(void)
  47. {
  48. return false;
  49. }