22 #include <sys/ioctl.h> 23 #include <linux/types.h> 24 #include <linux/spi/spidev.h> 35 void LinuxSpiDriverComponentImpl::SpiReadWrite_handler(
39 if (this->m_fd == -1) {
45 memset(&tr, 0,
sizeof(tr));
46 tr.tx_buf =
reinterpret_cast<__u64
>(writeBuffer.
getData());
47 tr.rx_buf =
reinterpret_cast<__u64
>(readBuffer.
getData());
59 PlatformIntType stat = ioctl(this->m_fd, SPI_IOC_MESSAGE(1), &tr);
64 this->m_bytes += readBuffer.
getSize();
72 FW_ASSERT(device >= 0, static_cast<FwAssertArgType>(device));
73 FW_ASSERT(select >= 0, static_cast<FwAssertArgType>(select));
75 this->m_device = device;
76 this->m_select = select;
118 ret = ioctl(fd, SPI_IOC_WR_MODE, &mode);
124 ret = ioctl(fd, SPI_IOC_RD_MODE, &mode);
134 ret = ioctl(fd, SPI_IOC_WR_BITS_PER_WORD, &bits);
140 ret = ioctl(fd, SPI_IOC_RD_BITS_PER_WORD, &bits);
149 ret = ioctl(fd, SPI_IOC_WR_MAX_SPEED_HZ, &clock);
155 ret = ioctl(fd, SPI_IOC_RD_MAX_SPEED_HZ, &clock);
166 (void) close(this->m_fd);
bool open(FwIndexType device, FwIndexType select, SpiFrequency clock, SpiMode spiMode=SpiMode::SPI_MODE_CPOL_LOW_CPHA_LOW)
Open device.
void log_WARNING_HI_SPI_ConfigError(I32 device, I32 select, I32 error) const
void log_WARNING_HI_SPI_WriteError(I32 device, I32 select, I32 error)
#define FW_USE_PRINTF_FAMILY_FUNCTIONS_IN_STRING_FORMATTING
void tlmWrite_SPI_Bytes(U32 arg, Fw::Time _tlmTime=Fw::Time()) const
const char * toChar() const
FormatStatus format(const CHAR *formatString,...)
write formatted string to buffer
void log_WARNING_HI_SPI_OpenError(I32 device, I32 select, I32 error) const
~LinuxSpiDriverComponentImpl()
uint8_t U8
8-bit unsigned integer
PlatformIndexType FwIndexType
FormatStatus
status of string format calls