mirror of
https://git.intern.spaceteamaachen.de/ALPAKA/sta-core.git
synced 2025-06-10 16:55:58 +00:00
52 lines
1.1 KiB
C++
52 lines
1.1 KiB
C++
#include <sta/bus/interface.hpp>
|
|
|
|
#include <sta/debug/assert.hpp>
|
|
|
|
namespace sta
|
|
{
|
|
Interface::Interface(Mutex * mutex)
|
|
: mutex_{mutex}, acquired_{false}
|
|
{
|
|
STA_ASSERT(mutex != nullptr);
|
|
}
|
|
|
|
bool Interface::writeMemory(uint8_t regAddr, const uint8_t * buffer, size_t size, uint32_t timeout /* = STA_MAX_TIMEOUT */)
|
|
{
|
|
if (!transfer(regAddr, timeout))
|
|
return false;
|
|
|
|
if (!transfer(buffer, size, timeout))
|
|
return false;
|
|
|
|
return true;
|
|
}
|
|
|
|
bool Interface::readMemory(uint8_t regAddr, uint8_t * buffer, size_t size, uint32_t timeout /* = STA_MAX_TIMEOUT */)
|
|
{
|
|
if (!transfer(regAddr, timeout))
|
|
return false;
|
|
|
|
if (!receive(buffer, size, timeout))
|
|
return false;
|
|
|
|
return true;
|
|
}
|
|
|
|
void Interface::acquire(uint32_t timeout /* = STA_MAX_TIMEOUT */)
|
|
{
|
|
mutex_->acquire();
|
|
acquired_ = true;
|
|
}
|
|
|
|
void Interface::release(uint32_t timeout /* = STA_MAX_TIMEOUT */)
|
|
{
|
|
acquired_ = false;
|
|
mutex_->release();
|
|
}
|
|
|
|
bool Interface::isAcquired()
|
|
{
|
|
return acquired_;
|
|
}
|
|
} // namespace sta
|