#ifndef _GPIO_CLASS_H_
#define _GPIO_CLASS_H_
#include <stdint.h>
enum GPIO_MODE : uint32_t {
  GPIO_Speed_In    = 0u,
  GPIO_Speed_10MHz = 1u,
  GPIO_Speed_2MHz  = 2u,
  GPIO_Speed_50MHz = 3u,
};
enum GPIO_CNF : uint32_t {
  GPIO_AI_PPO    = 0u,
  GPIO_FI_ODO    = 1u << 2,
  GPIO_UPDI_MPPO = 2u << 2,
  GPIO_none_MPDO = 3u << 2,
};
enum GPIOPuPd_TypeDef {
  GPIO_PuPd_NOPULL = 0x00,
  GPIO_PuPd_UP     = 0x01,
  GPIO_PuPd_DOWN   = 0x02
};

class GpioClass {
  const uint32_t pin;
  public:
    explicit constexpr GpioClass (const uint32_t _pin, const uint32_t _mode = GPIO_AI_PPO) noexcept
    : pin(_pin) {
    }
    void operator<< (const bool b) const {
    }
    operator bool () const {
      return false;
    }
    void setPuPd (GPIOPuPd_TypeDef p) {
    }
};

#endif // _GPIO_CLASS_H_