button.h 865 B

123456789101112131415161718192021222324252627282930313233
  1. #ifndef BUTTON_H_
  2. #define BUTTON_H_
  3. #include <driver/gpio.h>
  4. #include <iot_button.h>
  5. #include <functional>
  6. class Button {
  7. public:
  8. #if CONFIG_SOC_ADC_SUPPORTED
  9. Button(const button_adc_config_t& cfg);
  10. #endif
  11. Button(gpio_num_t gpio_num, bool active_high = false);
  12. ~Button();
  13. void OnPressDown(std::function<void()> callback);
  14. void OnPressUp(std::function<void()> callback);
  15. void OnLongPress(std::function<void()> callback);
  16. void OnClick(std::function<void()> callback);
  17. void OnDoubleClick(std::function<void()> callback);
  18. private:
  19. gpio_num_t gpio_num_;
  20. button_handle_t button_handle_ = nullptr;
  21. std::function<void()> on_press_down_;
  22. std::function<void()> on_press_up_;
  23. std::function<void()> on_long_press_;
  24. std::function<void()> on_click_;
  25. std::function<void()> on_double_click_;
  26. };
  27. #endif // BUTTON_H_