49 LinuxSPI(
const std::string& device =
"/dev/spidev0.0",
50 uint32_t speed = 1000000,
77 std::vector<uint8_t>
transfer(
const std::vector<uint8_t>& write_data,
size_t read_length = 0);
103 bool pinMode(uint8_t pin, uint8_t mode);
115 std::string gpio_path =
"/sys/class/gpio/gpio" + std::to_string(pin);
118 if (access(gpio_path.c_str(), F_OK) == -1) {
120 std::ofstream export_file(
"/sys/class/gpio/export");
121 if (!export_file.is_open()) {
129 std::string edge_path = gpio_path +
"/edge";
130 std::ofstream edge_file(edge_path);
131 if (!edge_file.is_open()) {
134 edge_file << (enable ?
"both" :
"none");
Implementation of SPIInterface using Linux spidev.
Definition LinuxSPI.hpp:40
bool digitalWrite(uint8_t pin, bool value)
Sets the value of a GPIO pin.
Definition LinuxSPI.cpp:272
std::string gpio_export_path
Definition LinuxSPI.hpp:172
int interrupt_pin
Definition LinuxSPI.hpp:180
std::vector< uint8_t > transfer(const std::vector< uint8_t > &write_data, size_t read_length=0)
Transfers data over the SPI interface.
Definition LinuxSPI.cpp:96
void close()
Closes the SPI device.
Definition LinuxSPI.cpp:77
bool open()
Opens the SPI device.
Definition LinuxSPI.cpp:36
bool enableInterrupt(bool enable) override
Enable or disable interrupts.
Definition LinuxSPI.cpp:307
uint32_t speed_hz
Definition LinuxSPI.hpp:167
bool configureInterrupt(uint8_t pin, bool enable) override
Configure interrupt settings for a GPIO pin.
Definition LinuxSPI.hpp:112
bool writeGPIOValue(uint8_t pin, bool value)
Writes a value to a GPIO pin.
Definition LinuxSPI.cpp:221
bool digitalRead(uint8_t pin)
Reads the value of a GPIO pin.
Definition LinuxSPI.cpp:276
~LinuxSPI()
Destroys the LinuxSPI object.
Definition LinuxSPI.cpp:32
int fd
Definition LinuxSPI.hpp:169
bool readGPIOValue(uint8_t pin)
Reads the value of a GPIO pin.
Definition LinuxSPI.cpp:246
bool isActive() const override
Check if the device is active/connected.
Definition LinuxSPI.hpp:161
std::atomic< bool > interrupt_running
Definition LinuxSPI.hpp:178
bool setInterruptCallback(InterruptCallback callback) override
Set interrupt callback.
Definition LinuxSPI.cpp:302
std::string device_path
Definition LinuxSPI.hpp:166
InterruptCallback interruptCallback
Definition LinuxSPI.hpp:177
std::string gpio_unexport_path
Definition LinuxSPI.hpp:173
bool exportGPIO(uint8_t pin)
Exports a GPIO pin for use.
Definition LinuxSPI.cpp:143
std::thread interrupt_thread
Definition LinuxSPI.hpp:179
bool pinMode(uint8_t pin, uint8_t mode)
Sets the mode of a GPIO pin.
Definition LinuxSPI.cpp:280
InterruptCallback interrupt_callback
Definition LinuxSPI.hpp:181
bool setGPIODirection(uint8_t pin, const std::string &direction)
Sets the direction of a GPIO pin.
Definition LinuxSPI.cpp:194
uint8_t spi_mode
Definition LinuxSPI.hpp:168
bool unexportGPIO(uint8_t pin)
Unexports a GPIO pin.
Definition LinuxSPI.cpp:174
bool interrupt_enabled
Definition LinuxSPI.hpp:182
void interruptThread()
Definition LinuxSPI.cpp:351
std::map< uint8_t, std::string > gpio_pin_paths
Definition LinuxSPI.hpp:174
Abstract interface for SPI communication.
Definition SPIInterface.hpp:21
std::function< void(void)> InterruptCallback
Definition SPIInterface.hpp:89