cs-midi/Submodules/Encoder/DirectPinRead.hpp

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