important bugfix

This commit is contained in:
Robin Müller 2021-06-05 00:11:35 +02:00
parent f7f6e4d520
commit be88bf1d50
No known key found for this signature in database
GPG Key ID: BE6480244DFE612C
2 changed files with 24 additions and 8 deletions

View File

@ -99,7 +99,7 @@ ReturnValue_t SpiComIF::initializeInterface(CookieIF *cookie) {
auto gpioPort = spiCookie->getChipSelectGpioPort();
GPIO_InitTypeDef chipSelect = {};
chipSelect.Pin = GPIO_PIN_14;
chipSelect.Pin = gpioPin;
chipSelect.Mode = GPIO_MODE_OUTPUT_PP;
HAL_GPIO_Init(gpioPort, &chipSelect);
HAL_GPIO_WritePin(gpioPort, gpioPin, GPIO_PIN_SET);
@ -121,13 +121,16 @@ ReturnValue_t SpiComIF::sendMessage(CookieIF *cookie, const uint8_t *sendData, s
}
switch(transferMode) {
case(spi::TransferModes::POLLING): {
return handlePollingSendOperation(iter, spiCookie, sendData, sendLen);
return handlePollingSendOperation(iter->second.replyBuffer.data(), spiCookie, sendData,
sendLen);
}
case(spi::TransferModes::INTERRUPT): {
break;
return handleInterruptSendOperation(iter->second.replyBuffer.data(), spiCookie, sendData,
sendLen);
}
case(spi::TransferModes::DMA): {
break;
return handleDmaSendOperation(iter->second.replyBuffer.data(), spiCookie, sendData,
sendLen);
}
}
return HasReturnvaluesIF::RETURN_OK;
@ -149,15 +152,14 @@ ReturnValue_t SpiComIF::readReceivedMessage(CookieIF *cookie, uint8_t **buffer,
return HasReturnvaluesIF::RETURN_OK;
}
ReturnValue_t SpiComIF::handlePollingSendOperation(SpiDeviceMapIter iter, SpiCookie *spiCookie,
ReturnValue_t SpiComIF::handlePollingSendOperation(uint8_t* recvPtr, SpiCookie *spiCookie,
const uint8_t *sendData, size_t sendLen) {
auto gpioPort = spiCookie->getChipSelectGpioPort();
auto gpioPin = spiCookie->getChipSelectGpioPin();
spiMutex->lockMutex(timeoutType, timeoutMs);
HAL_GPIO_WritePin(gpioPort, gpioPin, GPIO_PIN_RESET);
auto result = HAL_SPI_TransmitReceive(spiHandle, const_cast<uint8_t*>(sendData),
iter->second.replyBuffer.data(),
sendLen, defaultPollingTimeout);
recvPtr, sendLen, defaultPollingTimeout);
HAL_GPIO_WritePin(gpioPort, gpioPin, GPIO_PIN_SET);
spiMutex->unlockMutex();
switch(result) {
@ -192,3 +194,13 @@ ReturnValue_t SpiComIF::handlePollingSendOperation(SpiDeviceMapIter iter, SpiCoo
}
return HasReturnvaluesIF::RETURN_OK;
}
ReturnValue_t SpiComIF::handleInterruptSendOperation(uint8_t* recvPtr, SpiCookie* spiCookie,
const uint8_t * sendData, size_t sendLen) {
return HasReturnvaluesIF::RETURN_OK;
}
ReturnValue_t SpiComIF::handleDmaSendOperation(uint8_t* recvPtr, SpiCookie* spiCookie,
const uint8_t * sendData, size_t sendLen) {
return HasReturnvaluesIF::RETURN_OK;
}

View File

@ -81,7 +81,11 @@ private:
SpiDeviceMap spiDeviceMap;
ReturnValue_t handlePollingSendOperation(SpiDeviceMapIter iter, SpiCookie* spiCookie,
ReturnValue_t handlePollingSendOperation(uint8_t* recvPtr, SpiCookie* spiCookie,
const uint8_t * sendData, size_t sendLen);
ReturnValue_t handleInterruptSendOperation(uint8_t* recvPtr, SpiCookie* spiCookie,
const uint8_t * sendData, size_t sendLen);
ReturnValue_t handleDmaSendOperation(uint8_t* recvPtr, SpiCookie* spiCookie,
const uint8_t * sendData, size_t sendLen);
};