Parking Garage Control System
ESP32 Parking Garage – ESP-IDF/FreeRTOS
Loading...
Searching...
No Matches
EspGpioInput.h
Go to the documentation of this file.
1#pragma once
2
3#include "IGpioInput.h"
4#include "driver/gpio.h"
5#include "esp_attr.h"
6#include <functional>
7#include <memory>
8
18class EspGpioInput : public IGpioInput {
19 public:
25 explicit EspGpioInput(gpio_num_t pin, uint32_t debounceMs = 0);
26 ~EspGpioInput() override;
27
28 // Prevent copying
29 EspGpioInput(const EspGpioInput&) = delete;
31
32 [[nodiscard]] bool getLevel() const override;
33 void setInterruptHandler(std::function<void(bool level)> handler) override;
34 void enableInterrupt() override;
35 void disableInterrupt() override;
36
46 void simulateInterrupt(bool level);
47
48 private:
49 static IRAM_ATTR void gpioIsrHandler(void* arg);
50 void handleInterrupt();
51
52 gpio_num_t m_pin;
53 uint32_t m_debounceMs;
54 std::function<void(bool)> m_handler;
55 int64_t m_lastInterruptTime;
56};
ESP32 implementation of GPIO input with interrupt support.
Definition EspGpioInput.h:18
void simulateInterrupt(bool level)
Simulate an interrupt for testing purposes.
Definition EspGpioInput.cpp:79
EspGpioInput & operator=(const EspGpioInput &)=delete
void enableInterrupt() override
Enable interrupt for this GPIO.
Definition EspGpioInput.cpp:44
~EspGpioInput() override
Definition EspGpioInput.cpp:32
void disableInterrupt() override
Disable interrupt for this GPIO.
Definition EspGpioInput.cpp:74
bool getLevel() const override
Get current logic level of GPIO input.
Definition EspGpioInput.cpp:36
EspGpioInput(const EspGpioInput &)=delete
void setInterruptHandler(std::function< void(bool level)> handler) override
Set interrupt handler callback.
Definition EspGpioInput.cpp:40
Interface for GPIO input abstraction.
Definition IGpioInput.h:11
Coverage