sta-core/src/bus/interface.cpp

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