34 this->gpioWrite(lhs.operator
bool());
38 inline void setGpio(gpio_pin_t gpio)
override {
41 assert((_port > 0) && (_port < 11) && (_pin < 8));
43 inline gpio_pin_t getGpio()
const override {
44 return (_port << 8) | _pin;
49 void gpioMode (gpio_mode_t mode)
override;
50 bool gpioRead ()
const override;
51 void gpioWrite (
bool value)
override;
52 void gpioToggle()
override;
55 void gpioAttachIrq (gpio_mode_t mode,
56 function<
void()> handler)
override;
57 void gpioDetachIrq ()
override;
58 void gpioEnableIrq ()
override;
59 void gpioDisableIrq()
override;
63 void setSEL (uint8_t sel)
const;
64 void setMode(gpio_mode_t mode);
68 friend void PORT1_IRQHandler(
void);
69 friend void PORT2_IRQHandler(
void);
70 friend void PORT3_IRQHandler(
void);
71 friend void PORT4_IRQHandler(
void);
72 friend void PORT5_IRQHandler(
void);
73 friend void PORT6_IRQHandler(
void);
75 using gpio_interface::operator =;
76 using gpio_interface::operator bool;
81 bool _open_source {
false};
82 bool _open_drain {
false};
83 bool _pull_up {
false};
84 bool _pull_down {
false};
86 static void handleIrq(uint8_t port, uint8_t pin);
87 static function<void()> _intHandler[6][8];
88 static bool _both[6][8];