diff --git a/include/sta/debug_printf.hpp b/include/sta/debug_printf.hpp new file mode 100644 index 0000000..42f85a6 --- /dev/null +++ b/include/sta/debug_printf.hpp @@ -0,0 +1,49 @@ +#ifndef STA_CORE_DEBUG_PRINTF_HPP +#define STA_CORE_DEBUG_PRINTF_HPP + +#include + +// Determine if module should be enabled +// Condition 1: STA_DEBUG_PRINTF is defined +// Condition 2: +// STA_DEBUG_PRINTF_FORCE is defined +// or +// DEBUG is defined but not NDEBUG +#ifdef STA_DEBUG_PRINTF +# ifdef STA_DEBUG_PRINTF_FORCE +# define STA_DEBUG_SERIAL_ENABLED +# else // !STA_DEBUG_PRINTF_FORCE +# if defined(DEBUG) && !defined(NDEBUG) +# define STA_DEBUG_PRINTF_ENABLED +# endif // DEBUG && !NDEBUG +# endif // !STA_DEBUG_PRINTF_FORCE +#endif // STA_DEBUG_PRINTF + +#if defined(STA_DEBUG_PRINTF_ENABLED) || defined(DOXYGEN) + +#include + +/** + * @brief Print debug output. + * + * @param ... See @ref sta::PrintableUART::print + * + * @ingroup sta_core_debug + */ +# define STA_DEBUG_PRINT(...) sta::print(__VA_ARGS__) +/** + * @brief Print debug output followed by new-line to UART. + * + * @param ... See @ref sta::PrintableUART::println + * + * @ingroup sta_core_debug + */ +# define STA_DEBUG_PRINTLN(...) sta::println(__VA_ARGS__) + + +#else // !STA_DEBUG_PRINTF_ENABLED +# define STA_DEBUG_PRINT(...) ((void)0) +# define STA_DEBUG_PRINTLN(...) ((void)0) +#endif // !STA_DEBUG_PRINTF_ENABLED + +#endif // STA_CORE_DEBUG_PRINTF_HPP \ No newline at end of file diff --git a/include/sta/printable.hpp b/include/sta/printable.hpp new file mode 100644 index 0000000..e94f253 --- /dev/null +++ b/include/sta/printable.hpp @@ -0,0 +1,206 @@ +/** + * @file + * @brief Printable UART interface definition. + */ +#ifndef STA_CORE_PRINTABLE_HPP +#define STA_CORE_PRINTABLE_HPP + +#include + +#include +#include + + +namespace sta +{ + /** + * @brief Integer representation. + * + * @ingroup sta_core + */ + enum class IntegerBase + { + DEC, /**< Decimal */ + BIN, /**< Binary */ + HEX /**< Hexadecimal */ + }; + + /** + * @brief Print single character. + * + * @param c Character to print + */ + void print(char c); + + /** + * @brief Print boolean value. + * + * @param b Boolean value + */ + void print(bool b); + + /** + * @brief Print floating point value. + * + * @param d Floating point value + */ + void print(double d); + + /** + * @brief Print integer in selected base. + * + * @param num 8-bit unsigned integer + * @param base Integer base + */ + void print(uint8_t num, IntegerBase base = IntegerBase::DEC); + + /** + * @brief Print integer in selected base. + * + * @param num 16-bit unsigned integer + * @param base Integer base + */ + void print(uint16_t num, IntegerBase base = IntegerBase::DEC); + + /** + * @brief Print integer in selected base. + * + * @param num 32-bit unsigned integer + * @param base Integer base + */ + void print(uint32_t num, IntegerBase base = IntegerBase::DEC); + + /** + * @brief Print integer in selected base. + * + * @param num Integer + * @param base Integer base + */ + void print(size_t num, IntegerBase base = IntegerBase::DEC); + + /** + * @brief Print c-string. + * + * @param str Null terminated string + */ + void print(const char * str); + + /** + * @brief Print string. + * + * @param str String buffer + * @param length String length + */ + void print(const char * str, size_t length); + + /** + * @brief Print new-line. + */ + void println(); + + /** + * @brief Print single character followed by a new-line. + * + * @param c Character to print + */ + void println(char c); + + /** + * @brief Print boolean value followed by a new-line. + * + * @param b Boolean value + */ + void println(bool b); + + /** + * @brief Print floating point value followed by a new-line. + * + * @param d Floating point value + */ + void println(double d); + + /** + * @brief Print integer in selected base followed by a new-line. + * + * @param num 8-bit unsigned integer + * @param base Integer base + */ + void println(uint8_t num, IntegerBase base = IntegerBase::DEC); + + /** + * @brief Print integer in selected base followed by a new-line. + * + * @param num 16-bit unsigned integer + * @param base Integer base + */ + void println(uint16_t num, IntegerBase base = IntegerBase::DEC); + + /** + * @brief Print integer in selected base followed by a new-line. + * + * @param num 32-bit unsigned integer + * @param base Integer base + */ + void println(uint32_t num, IntegerBase base = IntegerBase::DEC); + + /** + * @brief Print integer in selected base followed by a new-line. + * + * @param num Integer + * @param base Integer base + */ + void println(size_t num, IntegerBase base = IntegerBase::DEC); + + /** + * @brief Print c-string followed by a new-line. + * + * @param str Null terminated string + */ + void println(const char * str); + + /** + * @brief Print string followed by a new-line. + * + * @param str String buffer + * @param length String length + */ + void println(const char * str, size_t length); + + /** + * @brief Print unsigned integer in selected base. + * + * @param value Unsigned integer value + * @param base Integer base + * @param fmt printf format string for base 10 + * @param size Size of value in bytes + */ + void printBase(uintmax_t value, IntegerBase base, const char * fmt, size_t size); + + /** + * @brief Print unsigned integer in base 10. + * + * @param value Unsigned integer value + * @param fmt printf format string + */ + void printDec(uintmax_t value, const char * fmt); + + /** + * @brief Print unsigned integer in base 2. + * + * @param value Unsigned integer value + * @param digits Number of digits to print + */ + void printBin(uintmax_t value, size_t digits); + + /** + * @brief Print unsigned integer in base 16. + * + * @param value Unsigned integer value + * @param digits Number of digits to print + */ + void printHex(uintmax_t value, size_t digits); + +} // namespace sta + + +#endif // STA_CORE_PRINTABLE_HPP \ No newline at end of file diff --git a/include/sta/printable_uart.hpp b/include/sta/printable_uart.hpp index d5473fc..9dfb3ee 100644 --- a/include/sta/printable_uart.hpp +++ b/include/sta/printable_uart.hpp @@ -77,13 +77,6 @@ namespace sta * @param base Integer base */ void print(uint32_t num, IntegerBase base = IntegerBase::DEC); - /** - * @brief Print integer in selected base. - * - * @param num Integer - * @param base Integer base - */ - void print(size_t num, IntegerBase base = IntegerBase::DEC); /** * @brief Print c-string. * @@ -142,13 +135,6 @@ namespace sta * @param base Integer base */ void println(uint32_t num, IntegerBase base = IntegerBase::DEC); - /** - * @brief Print integer in selected base followed by a new-line. - * - * @param num Integer - * @param base Integer base - */ - void println(size_t num, IntegerBase base = IntegerBase::DEC); /** * @brief Print c-string followed by a new-line. * diff --git a/include/sta/raspi/gpio_pin.hpp b/include/sta/raspi/gpio_pin.hpp index 64d5ee6..4174bbe 100644 --- a/include/sta/raspi/gpio_pin.hpp +++ b/include/sta/raspi/gpio_pin.hpp @@ -15,7 +15,7 @@ namespace sta { - class RaspiGpioPin : GpioPin + class RaspiGpioPin : public GpioPin { public: enum class GpioMode { @@ -31,18 +31,18 @@ namespace sta void setState(GpioPinState state) override; - static RaspiGpioPin DUMMY_GPIO; + static RaspiGpioPin * DUMMY_GPIO; private: uint8_t pin_; GpioMode mode_; }; - class DummyGpioPin : RaspiGpioPin { + class DummyGpioPin : public RaspiGpioPin { DummyGpioPin(); void setState(GpioPinState state) override; - } + }; } // namespace sta #endif // STA_RASPI_GPIO_ENABLED diff --git a/include/sta/raspi/hal.hpp b/include/sta/raspi/hal.hpp index 5b6173a..112597c 100644 --- a/include/sta/raspi/hal.hpp +++ b/include/sta/raspi/hal.hpp @@ -2,7 +2,7 @@ #define STA_CORE_RASPI_HAL_HPP #include -#include +#include #include #endif //STA_CORE_RASPI_HAL_HPP diff --git a/include/sta/raspi/mcu/common.hpp b/include/sta/raspi/mcu/common.hpp new file mode 100644 index 0000000..89ce60f --- /dev/null +++ b/include/sta/raspi/mcu/common.hpp @@ -0,0 +1,13 @@ +/** + * @file + * @brief Common configuration for Raspberry Pi MCUs + */ +#ifndef STA_CORE_RASPI_MCU_COMMON_HPP +#define STA_CORE_RASPI_MCU_COMMON_HPP + +#define STA_MCU_LITTLE_ENDIAN + +// Enable STM32 platform +#define STA_PLATFORM_RASPI + +#endif // STA_CORE_RASPI_MCU_COMMON_HPP \ No newline at end of file diff --git a/include/sta/raspi/spi.hpp b/include/sta/raspi/spi.hpp index cc8e741..c081aeb 100644 --- a/include/sta/raspi/spi.hpp +++ b/include/sta/raspi/spi.hpp @@ -9,10 +9,15 @@ namespace sta { + enum class SPINode { + DEV_0_0, + DEV_0_1 + }; + class RaspiSPI : public SPI { public: - RaspiSPI(const char * dev, const SPISettings & settings, Mutex * mutex = nullptr); + RaspiSPI(SPINode node, const SPISettings & settings, Mutex * mutex = nullptr, bool persistent_open = true); ~RaspiSPI(); void transfer(uint8_t value) override; @@ -30,18 +35,17 @@ namespace sta char * spidev_; int spifd_; bool open_; + const bool persistent_open_; void update_setting(int setting, int value); + int get_setting(int setting, void * rslt_ptr); + void update_settings(); }; - class RaspiSPIDevice : SPIDevice + class RaspiSPIDevice : public SPIDevice { public: RaspiSPIDevice(RaspiSPI * intf); - - void select() override; - - void deselect() override; }; } // namespace sta diff --git a/include/sta/spi/device.hpp b/include/sta/spi/device.hpp index 7821bff..657b6b1 100644 --- a/include/sta/spi/device.hpp +++ b/include/sta/spi/device.hpp @@ -93,7 +93,7 @@ namespace sta * * @return SPI settings */ - const SpiSettings & settings() const; + const SPISettings & settings() const; /** diff --git a/src/assert.cpp b/src/assert.cpp index 5ba23b2..3c02c58 100644 --- a/src/assert.cpp +++ b/src/assert.cpp @@ -1,7 +1,13 @@ #include #ifdef STA_ASSERT_ENABLED -#include +// TODO: This will probably destroy some stuff when working with stm32! +#ifdef STA_PRINTF_USE_STDLIB +# include +#else +# include +#endif + #include diff --git a/src/printable.cpp b/src/printable.cpp new file mode 100644 index 0000000..61d094c --- /dev/null +++ b/src/printable.cpp @@ -0,0 +1,117 @@ +#include + +#include +#include + +namespace sta +{ + void print(char c) + { + print(&c, 1); + } + + void print(bool b) + { + print(b ? "true" : "false"); + } + + void print(double d) + { + char buffer[64]; + snprintf(buffer, sizeof(buffer), "%f", d); + print(buffer); + } + + void print(uint8_t num, IntegerBase base /* = IntegerBase::DEC */) + { + printBase(num, base, "%" PRIu8, sizeof(num)); + } + + void print(uint16_t num, IntegerBase base /* = IntegerBase::DEC */) + { + printBase(num, base, "%" PRIu16, sizeof(num)); + } + + void print(uint32_t num, IntegerBase base /* = IntegerBase::DEC */) + { + printBase(num, base, "%" PRIu32, sizeof(num)); + } + + void print(const char * str) + { + print(str, strlen(str)); + } + + void println() + { + print("\r\n", 2); + } + + void println(char c) + { + print(&c, 1); + println(); + } + + void println(bool b) + { + print(b); + println(); + } + + void println(double d) + { + print(d); + println(); + } + + void println(uint8_t num, IntegerBase base /* = IntegerBase::DEC */) + { + print(num, base); + println(); + } + + void println(uint16_t num, IntegerBase base /* = IntegerBase::DEC */) + { + print(num, base); + println(); + } + + void println(uint32_t num, IntegerBase base /* = IntegerBase::DEC */) + { + print(num, base); + println(); + } + + void println(const char * str) + { + println(str, strlen(str)); + } + + void println(const char * str, size_t length) + { + print(str, length); + println(); + } + + void printBase(uintmax_t value, IntegerBase base, const char * fmt, size_t size) + { + + } + + void printDec(uintmax_t value, const char * fmt) + { + + } + + void printBin(uintmax_t value, size_t digits) + { + + } + + void printHex(uintmax_t value, size_t digits) + { + + } + +} // namespace sta \ No newline at end of file diff --git a/src/printable_uart.cpp b/src/printable_uart.cpp index 4462ac9..fbc48cf 100644 --- a/src/printable_uart.cpp +++ b/src/printable_uart.cpp @@ -49,11 +49,6 @@ namespace sta printBase(num, base, "%" PRIu32, sizeof(num)); } - void PrintableUART::print(size_t num, IntegerBase base /* = IntegerBase::DEC */) - { - printBase(num, base, "%z", sizeof(num)); - } - void PrintableUART::print(const char * str) { print(str, strlen(str)); @@ -106,12 +101,6 @@ namespace sta println(); } - void PrintableUART::println(size_t num, IntegerBase base /* = IntegerBase::DEC */) - { - print(num, base); - println(); - } - void PrintableUART::println(const char * str) { println(str, strlen(str)); diff --git a/src/raspi/gpio_pin.cpp b/src/raspi/gpio_pin.cpp index 01773d0..476e067 100644 --- a/src/raspi/gpio_pin.cpp +++ b/src/raspi/gpio_pin.cpp @@ -21,15 +21,13 @@ namespace sta } - DummyGpioPin::setState(GpioPinState state) + void DummyGpioPin::setState(GpioPinState state) { - // If this gets called, something is wrong! - STA_UNREACHABLE(); + // Don't do anything. } static DummyGpioPin dummyGpio; - RaspiGpioPin * RaspiGpioPin::DUMMY_GPIO = &dummyGpio; } // namespace sta diff --git a/src/raspi/spi.cpp b/src/raspi/spi.cpp index fa214e2..12baaec 100644 --- a/src/raspi/spi.cpp +++ b/src/raspi/spi.cpp @@ -1,8 +1,9 @@ #include + #ifdef STA_PLATFORM_RASPI - #include +#include #include #include #include @@ -10,28 +11,36 @@ #include #include +// Imports needed for SPI handling on Linux. +#include +#include +#include +#include -#define SYSTEM_ENDIANNESS __cpp_lib_endian +#define STA_DEBUG_IOCTL_WRITE(result) STA_ASSERT_MSG(result >= 0, "ioctl writing failed!") +#define STA_DEBUG_IOCTL_READ(result) STA_ASSERT_MSG(result >= 0, "ioctl reading failed!") +#define STA_DEBUG_IOCTL_SEND(result) STA_ASSERT_MSG(result >= 0, "ioctl sending spi message failed!") + +#define STA_DEBUG_FD_OPEN() STA_ASSERT_MSG(open_, "File descriptor wasn't opened!") +#define STA_DEBUG_NULLPTR(ptr) STA_ASSERT_MSG(ptr != nullptr, "Pointer is nullptr!") -// TODO: Check out "cpu_to_leXX()" and "leXX()_to_cpu()" on Linux! namespace sta { - RaspiSPI::RaspiSPI(const char * dev, const SPISettings & settings, Mutex * mutex = nullptr) - : SPI(settings, mutex) + RaspiSPI::RaspiSPI(SPINode node, const SPISettings & settings, Mutex * mutex, bool persistent_open = true) + : SPI(settings, mutex), open_{ false }, persistent_open_{ persistent_open } { // Check validity of parameters. - STA_ASSERT(dev != nullptr); - STA_ASSERT(mutex != nullptr); + STA_DEBUG_NULLPTR(mutex); open_ = false; - spidev_ = (char *)malloc(strlen(dev)+1); + + // Safer version of malloc + strcpy + spidev_ = strdup(node == SPINode::DEV_0_0 ? "/dev/spidev0.0" : "/dev/spidev0.1"); // Check if memory allocation was successful. - STA_ASSERT(spidev_ != nullptr); - - strcpy(spidev_ , dev); + STA_DEBUG_NULLPTR(spidev_); } RaspiSPI::~RaspiSPI() @@ -48,37 +57,37 @@ namespace sta void RaspiSPI::transfer(uint8_t value) { - STA_ASSERT(open_); + STA_DEBUG_FD_OPEN(); struct spi_ioc_transfer spi_message[1]; memset(spi_message, 0, sizeof(spi_message)); spi_message[0].tx_buf = (unsigned long)&value; spi_message[0].len = 1; - int result = ioctl(m_spifd, SPI_IOC_MESSAGE(1), spi_message); + int result = ioctl(spifd_, SPI_IOC_MESSAGE(1), spi_message); - STA_ASSERT(result == 0); + STA_DEBUG_IOCTL_SEND(result); } void RaspiSPI::transfer16(uint16_t value) { - STA_ASSERT(open_); + STA_DEBUG_FD_OPEN(); struct spi_ioc_transfer spi_message[1]; memset(spi_message, 0, sizeof(spi_message)); spi_message[0].tx_buf = (unsigned long)&value; spi_message[0].len = 1; - int result = ioctl(m_spifd, SPI_IOC_MESSAGE(1), spi_message); + int result = ioctl(spifd_, SPI_IOC_MESSAGE(1), spi_message); - STA_ASSERT(result == 0); + STA_DEBUG_IOCTL_SEND(result); } void RaspiSPI::transfer(const uint8_t * buffer, size_t size) { - STA_ASSERT(open_); - STA_ASSERT(buffer != nullptr); - STA_ASSERT(size != 0); + STA_DEBUG_FD_OPEN(); + STA_DEBUG_NULLPTR(buffer); + STA_ASSERT_MSG(size != 0, "Buffer size cannot be 0!"); struct spi_ioc_transfer spi_message[1]; memset(spi_message, 0, sizeof(spi_message)); @@ -87,14 +96,15 @@ namespace sta int result = ioctl(spifd_, SPI_IOC_MESSAGE(1), spi_message); - STA_ASSERT(result == 0); + STA_DEBUG_IOCTL_SEND(result); } void RaspiSPI::transfer(const uint8_t * txBuffer, uint8_t * rxBuffer, size_t size) { - STA_ASSERT(txBuffer != nullptr); - STA_ASSERT(rxBuffer != nullptr); - STA_ASSERT(size != 0); + STA_DEBUG_FD_OPEN(); + STA_DEBUG_NULLPTR(txBuffer); + STA_DEBUG_NULLPTR(rxBuffer); + STA_ASSERT_MSG(size != 0, "Buffer size cannot be 0!"); struct spi_ioc_transfer spi_message[1]; memset(spi_message, 0, sizeof(spi_message)); @@ -105,24 +115,30 @@ namespace sta int result = ioctl(spifd_, SPI_IOC_MESSAGE(1), spi_message); - STA_ASSERT(result == 0); + STA_DEBUG_IOCTL_SEND(result); } void RaspiSPI::receive(uint8_t * buffer, size_t size) { - STA_ASSERT(buffer != nullptr); + STA_DEBUG_FD_OPEN(); + STA_DEBUG_NULLPTR(buffer); + STA_ASSERT_MSG(size != 0, "Buffer size cannot be 0!"); struct spi_ioc_transfer spi_message[1]; memset(spi_message, 0, sizeof(spi_message)); spi_message[0].rx_buf = (unsigned long)buffer; spi_message[0].len = size; - return ioctl(spifd_, SPI_IOC_MESSAGE(1), spi_message); + + int result = ioctl(spifd_, SPI_IOC_MESSAGE(1), spi_message); + + STA_DEBUG_IOCTL_SEND(result); } void RaspiSPI::fill(uint8_t value, size_t count) { - STA_ASSERT(count != 0); + STA_DEBUG_FD_OPEN(); + STA_ASSERT_MSG(count != 0, "Buffer size cannot be 0!"); uint8_t * buffer = new uint8_t[count]; memset(buffer, value, count); @@ -134,15 +150,78 @@ namespace sta int result = ioctl(spifd_, SPI_IOC_MESSAGE(1), spi_message); + STA_DEBUG_IOCTL_SEND(result); + delete[] buffer; } void RaspiSPI::update_setting(int setting, int value) { - STA_ASSERT(open_); - + STA_DEBUG_FD_OPEN(); int result = ioctl(spifd_, setting, value); - STA_ASSERT(result >= 0); + STA_DEBUG_IOCTL_WRITE(result); + } + + int RaspiSPI::get_setting(int setting, void * rslt_ptr) + { + STA_DEBUG_FD_OPEN(); + int result = ioctl(spifd_, setting, rslt_ptr); + STA_DEBUG_IOCTL_READ(result); + } + + void RaspiSPI::update_settings() + { + SPISettings settings = this->settings(); + int mode; + + switch (settings.mode) + { + case SPIMode::MODE_0: + mode = SPI_MODE_0; + break; + case SPIMode::MODE_1: + mode = SPI_MODE_1; + break; + case SPIMode::MODE_2: + mode = SPI_MODE_2; + break; + case SPIMode::MODE_3: + mode = SPI_MODE_3; + break; + default: + STA_ASSERT_MSG(false, "Case for SPIMode enum not handled"); + STA_UNREACHABLE(); + } + + // Set the spi mode. + update_setting(SPI_IOC_WR_MODE, mode); + + // Set the word size. According to the documentation "the value zero signifies eight bits". + update_setting(SPI_IOC_WR_BITS_PER_WORD, settings.dataSize == SPIDataSize::SIZE_8 ? 0 : 16); + + // Set the bit order. According to the documentation zero means MSB first, everything else means LSB first. + update_setting(SPI_IOC_WR_LSB_FIRST, settings.bitOrder == SPIBitOrder::MSB ? 0 : 1); + + // Set the maximum clock speed. + update_setting(SPI_IOC_WR_MAX_SPEED_HZ, settings.clkSpeed); + + #if defined(DEBUG) + uint8_t r_mode = 0; + get_setting(SPI_IOC_RD_MODE, &r_mode); + STA_ASSERT_MSG(r_mode == mode, "The mode wasn't set correctly!"); + + uint8_t r_dataSize = 0; + get_setting(SPI_IOC_WR_BITS_PER_WORD, &r_dataSize); + STA_ASSERT_MSG(r_dataSize == (settings.dataSize == SPIDataSize::SIZE_8 ? 0 : 16), "The data size wasn't set correctly!"); + + uint8_t r_bitOrder = 0; + get_setting(SPI_IOC_RD_LSB_FIRST, &r_bitOrder); + STA_ASSERT_MSG(r_bitOrder == (settings.bitOrder == SPIBitOrder::MSB ? 0 : 1), "The data size wasn't set correctly!"); + + uint32_t r_clk_Speed; + get_setting(SPI_IOC_RD_MAX_SPEED_HZ, &r_clk_Speed); + STA_ASSERT_MSG(r_clk_Speed == settings.clkSpeed, "The clock speed wasn't set correctly!"); + #endif // STA_DEBUG } void RaspiSPI::acquire() @@ -156,20 +235,19 @@ namespace sta return; spifd_ = open(spidev_, O_RDWR); - STA_ASSERT(spifd_ < 0); + STA_ASSERT(spifd_ >= 0); open_ = true; - update_setting(SPI_IOC_WR_MODE, &m_spiconfig.mode); - update_setting(SPI_IOC_RD_MODE, &m_spiconfig.mode); - update_setting(SPI_IOC_WR_BITS_PER_WORD, &m_spiconfig.bits_per_word); - update_setting(SPI_IOC_RD_BITS_PER_WORD, &m_spiconfig.bits_per_word); - uppdate_setting(SPI_IOC_WR_MAX_SPEED_HZ, &m_spiconfig.speed); - update_setting(SPI_IOC_RD_MAX_SPEED_HZ, &m_spiconfig.speed); + update_settings(); } void RaspiSPI::release() { + if (!persistent_open_) { + close(spifd_); + } + SPI::release(); } @@ -177,16 +255,6 @@ namespace sta { } - - RaspiSPIDevice::select() - { - // do nothing since the raspi SPI API doesn't require GPIO interaction. - } - - RaspiSPIDevice::deselect() - { - // do nothing since the raspi SPI API doesn't require GPIO interaction. - } } // namespace sta diff --git a/src/spi/device.cpp b/src/spi/device.cpp index cced053..86a5210 100644 --- a/src/spi/device.cpp +++ b/src/spi/device.cpp @@ -70,7 +70,7 @@ namespace sta } - const SpiSettings & SPIDevice::settings() const + const SPISettings & SPIDevice::settings() const { return intf_->settings(); } @@ -78,11 +78,11 @@ namespace sta void SPIDevice::select() { - csPin_->setState(GpioPinState::LOW); + csPin_->setState(GpioPinState::GPIO_LOW); } void SPIDevice::deselect() { - csPin_->setState(GpioPinState::HIGH); + csPin_->setState(GpioPinState::GPIO_HIGH); } } // namespace sta