event_inquire.c 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #include <rtthread.h>
  2. #include <rtdevice.h>
  3. #include "multi_button.h"
  4. static struct button btn;
  5. #define BUTTON_PIN (10)
  6. static uint8_t button_read_pin(void)
  7. {
  8. return rt_pin_read(BUTTON_PIN);
  9. }
  10. void btn_test_thread_entry(void *p)
  11. {
  12. uint32_t btn_event_val;
  13. while(1)
  14. {
  15. if(btn_event_val != get_button_event(&btn))
  16. {
  17. btn_event_val = get_button_event(&btn);
  18. switch(btn_event_val)
  19. {
  20. case PRESS_DOWN:
  21. rt_kprintf("button press down\n");
  22. break;
  23. case PRESS_UP:
  24. rt_kprintf("button press up\n");
  25. break;
  26. case PRESS_REPEAT:
  27. rt_kprintf("button press repeat\n");
  28. break;
  29. case SINGLE_CLICK:
  30. rt_kprintf("button single click\n");
  31. break;
  32. case DOUBLE_CLICK:
  33. rt_kprintf("button double click\n");
  34. break;
  35. case LONG_PRESS_START:
  36. rt_kprintf("button long press start\n");
  37. break;
  38. case LONG_PRESS_HOLD:
  39. rt_kprintf("button long press hold\n");
  40. break;
  41. }
  42. }
  43. button_ticks();
  44. rt_thread_delay(RT_TICK_PER_SECOND/200);
  45. }
  46. }
  47. int multi_button_test(void)
  48. {
  49. rt_thread_t thread = RT_NULL;
  50. thread = rt_thread_create("btn_test", btn_test_thread_entry, RT_NULL, 1024, 15, 10);
  51. if(thread == RT_NULL)
  52. {
  53. return RT_ERROR;
  54. }
  55. rt_thread_startup(thread);
  56. /* low level drive */
  57. rt_pin_mode (BUTTON_PIN, PIN_MODE_INPUT);
  58. button_init (&btn, button_read_pin, PIN_LOW);
  59. button_start(&btn);
  60. return RT_EOK;
  61. }
  62. INIT_APP_EXPORT(multi_button_test);