#include #include namespace sta { Device::Device(Interface * intf) : intf_{intf} { STA_ASSERT(intf != nullptr); } void Device::beginTransmission() { intf_->acquire(); select(); selected_ = true; } void Device::endTransmission() { deselect(); selected_ = false; intf_->release(); } void Device::transfer(uint8_t value) { STA_ASSERT(intf_->isAquired()); STA_ASSERT(selected_); intf_->transfer(value); } void Device::transfer16(uint16_t value) { STA_ASSERT(intf_->isAquired()); STA_ASSERT(selected_); intf_->transfer16(value); } void Device::transfer(const uint8_t * buffer, size_t size) { STA_ASSERT(intf_->isAquired()); STA_ASSERT(selected_); STA_ASSERT(buffer != nullptr); intf_->transfer(buffer, size); } void Device::transfer(const uint8_t * txBuffer, uint8_t * rxBuffer, size_t size) { STA_ASSERT(intf_->isAquired()); STA_ASSERT(selected_); STA_ASSERT(txBuffer != nullptr); STA_ASSERT(rxBuffer != nullptr); intf_->transfer(txBuffer, rxBuffer, size); } void Device::receive(uint8_t * buffer, size_t size) { STA_ASSERT(intf_->isAquired()); STA_ASSERT(selected_); STA_ASSERT(buffer != nullptr); intf_->receive(buffer, size); } void Device::fill(uint8_t value, size_t count) { STA_ASSERT(intf_->isAquired()); STA_ASSERT(selected_); intf_->fill(value, count); } } // namespace sta