/** * @brief Wrapper for HAL GPIO pins. * * Define **STA_HAL_GPIO_ENABLE** in `` to enable module. */ #ifndef STA_HAL_GPIO_PIN_HPP #define STA_HAL_GPIO_PIN_HPP #include #ifdef STA_HAL_GPIO_ENABLE #include #include namespace sta { /** * @brief Container for HAL GPIO Pin objects. */ class HalGpioPin : public GpioPin { public: HalGpioPin(GPIO_TypeDef * port, uint16_t pin); void setState(GpioPinState state) override; GPIO_TypeDef * getPort() const; uint16_t getPin() const; uint8_t getIndex() const; private: GPIO_TypeDef * port_; /**< GPIO port */ uint16_t pin_; /**< GPIO pin */ }; } /** * @brief Create HalGpioPin object from pin label. * * @param label Pin label */ #define STA_HAL_GPIO_PIN(label) sta::HalGpioPin{label##_GPIO_Port, label##_Pin} #endif // STA_HAL_GPIO_ENABLE #endif // STA_HAL_GPIO_PIN_HPP