mirror of
https://git.intern.spaceteamaachen.de/ALPAKA/sta-core.git
synced 2025-08-06 18:37:34 +00:00
Some fixes for UART receiving with interrupts for SPATZ
This commit is contained in:
@@ -12,18 +12,16 @@ namespace sta
|
||||
{
|
||||
namespace spatz
|
||||
{
|
||||
sta::Mutex * mutex_ = nullptr;
|
||||
sta::Signal * signal_ = nullptr;
|
||||
Mutex * mutex_ = nullptr;
|
||||
Event * signal_ = nullptr;
|
||||
|
||||
void init(sta::Mutex * mutex, Signal * signal)
|
||||
void init(sta::Mutex * mutex, Event * signal)
|
||||
{
|
||||
mutex_ = mutex;
|
||||
signal_ = signal;
|
||||
|
||||
uint8_t msg = 0xFF;
|
||||
|
||||
sta::lock_guard<sta::Mutex> lock(*mutex_);
|
||||
|
||||
// Wait until SPATZ sends the init byte.
|
||||
while (msg != STA_INIT_SPATZ_ID)
|
||||
{
|
||||
@@ -41,13 +39,11 @@ namespace sta
|
||||
|
||||
void request(uint8_t id, float * buffer, size_t length)
|
||||
{
|
||||
mutex_->acquire();
|
||||
sta::lock_guard<sta::Mutex> lock(*mutex_);
|
||||
|
||||
HAL_UART_Receive_IT(&huart1, reinterpret_cast<uint8_t*>(buffer), length * sizeof(float));
|
||||
Debug->printf("%d", id);
|
||||
signal_->wait();
|
||||
|
||||
mutex_->release();
|
||||
signal_->wait(0x01);
|
||||
}
|
||||
|
||||
void request(uint8_t id, double * buffer, size_t length)
|
||||
@@ -57,6 +53,11 @@ namespace sta
|
||||
Debug->printf("%d", id);
|
||||
Debug->read(buffer, length);
|
||||
}
|
||||
|
||||
void notify(uint8_t id)
|
||||
{
|
||||
Debug->printf("%d", id);
|
||||
}
|
||||
} // namespace spatz
|
||||
} // namespace sta
|
||||
|
||||
@@ -64,7 +65,11 @@ namespace sta
|
||||
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
|
||||
{
|
||||
if (sta::spatz::signal_ != nullptr)
|
||||
sta::spatz::signal_->notify();
|
||||
{
|
||||
sta::spatz::signal_->set(0x01);
|
||||
sta::spatz::signal_->clear(0x01);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user