20 lines
427 B
C++
20 lines
427 B
C++
#pragma once
|
|
|
|
#include <Settings/NamespaceSettings.hpp>
|
|
#include <AH/Hardware/Arduino-Hardware-Types.hpp>
|
|
#include <hardware/structs/sio.h>
|
|
|
|
BEGIN_CS_NAMESPACE
|
|
|
|
struct DirectPinRead {
|
|
const volatile uint32_t *in_reg;
|
|
uint32_t bitmask;
|
|
bool read() const { return *in_reg & bitmask; }
|
|
};
|
|
|
|
inline DirectPinRead direct_pin_read(ArduinoPin_t pin) {
|
|
return {&sio_hw->gpio_in, uint32_t(1) << pin};
|
|
}
|
|
|
|
END_CS_NAMESPACE
|