Incredibly ugly workaround

This commit is contained in:
dario 2024-08-01 15:06:07 +02:00
parent f0dd514bdd
commit dd20df9952
2 changed files with 28 additions and 9 deletions

View File

@ -6,6 +6,10 @@
# error "The ID used to communicate SPATZ initialization was not defined."
#endif // STA_INIT_SPATZ_ID
#include <cmsis_os2.h>
#include <FreeRTOS.h>
#include <usart.h>
namespace sta
{
namespace spatz
@ -30,26 +34,41 @@ namespace sta
{
sta::lock_guard<sta::Mutex> lock(*mutex_);
Debug->println("%d", id);
Debug->read(buffer, length);
Debug->printf("%d", id);
Debug->read(buffer, length);
}
void request(uint8_t id, float * buffer, size_t length)
{
sta::lock_guard<sta::Mutex> lock(*mutex_);
mutex_->acquire();
// Debug->println(id, IntegerBase::DEC);
bool success = false;
Debug->printf("%d", id);
Debug->read(buffer, length);
while (!success)
{
Debug->printf("%d", id);
HAL_StatusTypeDef state = HAL_UART_Receive(&huart1, reinterpret_cast<uint8_t*>(buffer), length * sizeof(float), 100);
if (state == HAL_TIMEOUT)
{
success = false;
Debug->println(">ERROR");
break;
}
success = true;
}
mutex_->release();
}
void request(uint8_t id, double * buffer, size_t length)
{
sta::lock_guard<sta::Mutex> lock(*mutex_);
Debug->println("%d", id);
Debug->read(buffer, length);
Debug->printf("%d", id);
Debug->read(buffer, length);
}
} // namespace spatz
} // namespace sta

View File

@ -33,7 +33,7 @@ namespace sta
{
STA_ASSERT(buffer != nullptr);
HAL_UART_Receive(handle_, buffer, size, HAL_MAX_DELAY);
HAL_UART_Receive(handle_, buffer, size, 1);
}
void STM32UART::fill(uint8_t value, size_t count)