.. _program_listing_file_include_spi_bus_spi.hh: Program Listing for File spi.hh =============================== |exhale_lsh| :ref:`Return to documentation for file ` (``include/spi_bus/spi.hh``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #ifndef IPLO_SPI_HH #define IPLO_SPI_HH #include namespace iplo { struct SpiConfig { std::uint8_t mode = 0; std::uint8_t bitsPerWord = 8; std::uint32_t speedHz = 1000000; std::uint16_t delayUs = 0; }; class SPI { const char* _fileName; int _fd; SpiConfig _spiConfig; void open(); void close() const; public: explicit SPI(const char* fileName); SPI(const char* fileName, const SpiConfig& config); [[nodiscard]] std::int32_t read(std::uint8_t* rxBuffer, std::uint8_t rxBufferLength); [[nodiscard]] std::int32_t write(std::uint8_t* txBuffer, std::uint8_t txBufferLength); [[nodiscard]] std::int32_t xfer(std::uint8_t* txBuffer, std::uint8_t txBufferLength, std::uint8_t* rxBuffer, std::uint8_t rxBufferLength); bool setSpeed(std::uint32_t speedHz); bool setMode(std::uint8_t mode); bool setBitsPerWord(std::uint8_t bits); bool setConfig(const SpiConfig& spiConfig); ~SPI(); }; } /* namespace iplo */ #endif /* IPLO_SPI_HH */