From e3ddb8b3badab7077a5e2fcc315eac17a319d5c7 Mon Sep 17 00:00:00 2001 From: Martin Zietz Date: Mon, 21 Jun 2021 14:49:20 +0200 Subject: [PATCH] adaptions for spi callback --- linux/i2c/I2cComIF.cpp | 5 +++++ linux/spi/SpiComIF.h | 4 ++-- linux/spi/SpiCookie.cpp | 4 ++++ linux/spi/SpiCookie.h | 6 ++++++ 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/linux/i2c/I2cComIF.cpp b/linux/i2c/I2cComIF.cpp index a88b019..7abcd2c 100644 --- a/linux/i2c/I2cComIF.cpp +++ b/linux/i2c/I2cComIF.cpp @@ -147,9 +147,13 @@ ReturnValue_t I2cComIF::requestReceiveMessage(CookieIF *cookie, uint8_t* replyBuffer = i2cDeviceMapIter->second.replyBuffer.data(); int readLen = read(fd, replyBuffer, requestLen); +<<<<<<< Updated upstream if (readLen != static_cast(requestLen)) { #if FSFW_VERBOSE_LEVEL >= 1 and FSFW_CPP_OSTREAM_ENABLED == 1 +======= + if (readLen != static_cast(requestLen)) { +>>>>>>> Stashed changes sif::error << "I2cComIF::requestReceiveMessage: Reading from I2C " << "device failed with error code " << errno <<". Description" << " of error: " << strerror(errno) << std::endl; @@ -157,6 +161,7 @@ ReturnValue_t I2cComIF::requestReceiveMessage(CookieIF *cookie, << requestLen << " bytes" << std::endl; #endif i2cDeviceMapIter->second.replyLen = 0; + sif::debug << "I2cComIF::requestReceiveMessage: Read " << readLen << " of " << requestLen << " bytes" << std::endl; return HasReturnvaluesIF::RETURN_FAILED; } diff --git a/linux/spi/SpiComIF.h b/linux/spi/SpiComIF.h index 13f7603..676c7cb 100644 --- a/linux/spi/SpiComIF.h +++ b/linux/spi/SpiComIF.h @@ -64,6 +64,8 @@ public: void setSpiSpeedAndMode(int spiFd, spi::SpiModes mode, uint32_t speed); void performSpiWiretapping(SpiCookie* spiCookie); + ReturnValue_t getReadBuffer(address_t spiAddress, uint8_t** buffer); + private: struct SpiInstance { @@ -83,8 +85,6 @@ private: SpiDeviceMap spiDeviceMap; ReturnValue_t performHalfDuplexReception(SpiCookie* spiCookie); - - ReturnValue_t getReadBuffer(address_t spiAddress, uint8_t** buffer); }; #endif /* LINUX_SPI_SPICOMIF_H_ */ diff --git a/linux/spi/SpiCookie.cpp b/linux/spi/SpiCookie.cpp index 15ba3e9..e34ea36 100644 --- a/linux/spi/SpiCookie.cpp +++ b/linux/spi/SpiCookie.cpp @@ -105,6 +105,10 @@ void SpiCookie::setCallbackMode(spi::send_callback_function_t callback, this->callbackArgs = args; } +void SpiCookie::setCallbackArgs(void *args) { + this->callbackArgs = args; +} + spi_ioc_transfer* SpiCookie::getTransferStructHandle() { return &spiTransferStruct; } diff --git a/linux/spi/SpiCookie.h b/linux/spi/SpiCookie.h index 174ca9e..acf7c77 100644 --- a/linux/spi/SpiCookie.h +++ b/linux/spi/SpiCookie.h @@ -75,6 +75,12 @@ public: */ void setCallbackMode(spi::send_callback_function_t callback, void* args); + /** + * Can be used to set the callback arguments and a later point than initialization. + * @param args + */ + void setCallbackArgs(void* args); + /** * True if SPI transfers should be performed in full duplex mode * @return