Parking Garage Control System
ESP32 Parking Garage – ESP-IDF/FreeRTOS
Loading...
Searching...
No Matches
Gate.h
Go to the documentation of this file.
1#pragma once
2
3#include "IGate.h"
4#include "EspGpioInput.h"
5#include "EspServoOutput.h"
6#include "driver/gpio.h"
7#include "driver/ledc.h"
8#include <memory>
9
15class Gate : public IGate {
16 public:
23 Gate(gpio_num_t lightBarrierPin, gpio_num_t motorPin, ledc_channel_t ledcChannel);
24
33 Gate(gpio_num_t buttonPin, uint32_t buttonDebounceMs,
34 gpio_num_t lightBarrierPin, gpio_num_t motorPin, ledc_channel_t ledcChannel);
35
36 void open() override;
37 void close() override;
38 bool isOpen() const override;
39 bool isCarDetected() const override;
40
44 bool hasButton() const { return m_button != nullptr; }
45
50 EspGpioInput& getButton() { return *m_button; }
51
56 EspGpioInput& getLightBarrier() { return *m_lightBarrier; }
57
58 private:
59 std::unique_ptr<EspGpioInput> m_button; // Optional
60 std::unique_ptr<EspGpioInput> m_lightBarrier;
61 std::unique_ptr<EspServoOutput> m_motor;
62 bool m_isOpen;
63};
ESP32 implementation of GPIO input with interrupt support.
Definition EspGpioInput.h:18
Concrete gate implementation using GPIO.
Definition Gate.h:15
void open() override
Open the barrier.
Definition Gate.cpp:29
EspGpioInput & getButton()
Get button for interrupt configuration.
Definition Gate.h:50
bool isOpen() const override
Check if barrier is currently open.
Definition Gate.cpp:45
void close() override
Close the barrier.
Definition Gate.cpp:37
bool isCarDetected() const override
Check if car is detected in light barrier.
Definition Gate.cpp:49
bool hasButton() const
Check if gate has a button.
Definition Gate.h:44
EspGpioInput & getLightBarrier()
Get light barrier for interrupt configuration.
Definition Gate.h:56
Gate interface for barrier control abstraction.
Definition IGate.h:9
Coverage