important bugfix
This commit is contained in:
parent
f7f6e4d520
commit
be88bf1d50
@ -99,7 +99,7 @@ ReturnValue_t SpiComIF::initializeInterface(CookieIF *cookie) {
|
|||||||
auto gpioPort = spiCookie->getChipSelectGpioPort();
|
auto gpioPort = spiCookie->getChipSelectGpioPort();
|
||||||
|
|
||||||
GPIO_InitTypeDef chipSelect = {};
|
GPIO_InitTypeDef chipSelect = {};
|
||||||
chipSelect.Pin = GPIO_PIN_14;
|
chipSelect.Pin = gpioPin;
|
||||||
chipSelect.Mode = GPIO_MODE_OUTPUT_PP;
|
chipSelect.Mode = GPIO_MODE_OUTPUT_PP;
|
||||||
HAL_GPIO_Init(gpioPort, &chipSelect);
|
HAL_GPIO_Init(gpioPort, &chipSelect);
|
||||||
HAL_GPIO_WritePin(gpioPort, gpioPin, GPIO_PIN_SET);
|
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) {
|
switch(transferMode) {
|
||||||
case(spi::TransferModes::POLLING): {
|
case(spi::TransferModes::POLLING): {
|
||||||
return handlePollingSendOperation(iter, spiCookie, sendData, sendLen);
|
return handlePollingSendOperation(iter->second.replyBuffer.data(), spiCookie, sendData,
|
||||||
|
sendLen);
|
||||||
}
|
}
|
||||||
case(spi::TransferModes::INTERRUPT): {
|
case(spi::TransferModes::INTERRUPT): {
|
||||||
break;
|
return handleInterruptSendOperation(iter->second.replyBuffer.data(), spiCookie, sendData,
|
||||||
|
sendLen);
|
||||||
}
|
}
|
||||||
case(spi::TransferModes::DMA): {
|
case(spi::TransferModes::DMA): {
|
||||||
break;
|
return handleDmaSendOperation(iter->second.replyBuffer.data(), spiCookie, sendData,
|
||||||
|
sendLen);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return HasReturnvaluesIF::RETURN_OK;
|
return HasReturnvaluesIF::RETURN_OK;
|
||||||
@ -149,15 +152,14 @@ ReturnValue_t SpiComIF::readReceivedMessage(CookieIF *cookie, uint8_t **buffer,
|
|||||||
return HasReturnvaluesIF::RETURN_OK;
|
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) {
|
const uint8_t *sendData, size_t sendLen) {
|
||||||
auto gpioPort = spiCookie->getChipSelectGpioPort();
|
auto gpioPort = spiCookie->getChipSelectGpioPort();
|
||||||
auto gpioPin = spiCookie->getChipSelectGpioPin();
|
auto gpioPin = spiCookie->getChipSelectGpioPin();
|
||||||
spiMutex->lockMutex(timeoutType, timeoutMs);
|
spiMutex->lockMutex(timeoutType, timeoutMs);
|
||||||
HAL_GPIO_WritePin(gpioPort, gpioPin, GPIO_PIN_RESET);
|
HAL_GPIO_WritePin(gpioPort, gpioPin, GPIO_PIN_RESET);
|
||||||
auto result = HAL_SPI_TransmitReceive(spiHandle, const_cast<uint8_t*>(sendData),
|
auto result = HAL_SPI_TransmitReceive(spiHandle, const_cast<uint8_t*>(sendData),
|
||||||
iter->second.replyBuffer.data(),
|
recvPtr, sendLen, defaultPollingTimeout);
|
||||||
sendLen, defaultPollingTimeout);
|
|
||||||
HAL_GPIO_WritePin(gpioPort, gpioPin, GPIO_PIN_SET);
|
HAL_GPIO_WritePin(gpioPort, gpioPin, GPIO_PIN_SET);
|
||||||
spiMutex->unlockMutex();
|
spiMutex->unlockMutex();
|
||||||
switch(result) {
|
switch(result) {
|
||||||
@ -192,3 +194,13 @@ ReturnValue_t SpiComIF::handlePollingSendOperation(SpiDeviceMapIter iter, SpiCoo
|
|||||||
}
|
}
|
||||||
return HasReturnvaluesIF::RETURN_OK;
|
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;
|
||||||
|
}
|
||||||
|
@ -81,7 +81,11 @@ private:
|
|||||||
|
|
||||||
SpiDeviceMap spiDeviceMap;
|
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);
|
const uint8_t * sendData, size_t sendLen);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user