diff --git a/linux/gpio/LinuxLibgpioIF.cpp b/linux/gpio/LinuxLibgpioIF.cpp index 2a645fc..cfdac2b 100644 --- a/linux/gpio/LinuxLibgpioIF.cpp +++ b/linux/gpio/LinuxLibgpioIF.cpp @@ -155,6 +155,7 @@ ReturnValue_t LinuxLibgpioIF::pullHigh(gpioId_t gpioId) { } gpioCallback->callback(gpioMapIter->first, gpio::GpioOperation::WRITE, 1, gpioCallback->callbackArgs); + return RETURN_OK; } return GPIO_TYPE_FAILURE; } @@ -176,6 +177,7 @@ ReturnValue_t LinuxLibgpioIF::pullLow(gpioId_t gpioId) { } gpioCallback->callback(gpioMapIter->first, gpio::GpioOperation::WRITE, 0, gpioCallback->callbackArgs); + return RETURN_OK; } return GPIO_TYPE_FAILURE; } diff --git a/linux/i2c/I2cComIF.cpp b/linux/i2c/I2cComIF.cpp index a88b019..aa336c7 100644 --- a/linux/i2c/I2cComIF.cpp +++ b/linux/i2c/I2cComIF.cpp @@ -147,7 +147,6 @@ ReturnValue_t I2cComIF::requestReceiveMessage(CookieIF *cookie, uint8_t* replyBuffer = i2cDeviceMapIter->second.replyBuffer.data(); int readLen = read(fd, replyBuffer, requestLen); - if (readLen != static_cast(requestLen)) { #if FSFW_VERBOSE_LEVEL >= 1 and FSFW_CPP_OSTREAM_ENABLED == 1 sif::error << "I2cComIF::requestReceiveMessage: Reading from I2C " @@ -157,6 +156,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