3#if defined(ARDUINO) || defined(ROO_TESTING)
6#include "roo_backport.h"
7#include "roo_backport/byte.h"
13#include "roo_logging.h"
18class ArduinoI2cMasterBusHandle {
21 ArduinoI2cMasterBusHandle(
decltype(Wire)& wire = Wire) : wire_(wire) {}
23 void init() { wire_.begin(); }
25 void init(
int sda,
int scl, uint32_t frequency = 0) {
26 wire_.begin(sda, scl, frequency);
30 friend class ArduinoI2cSlaveDevice;
32 decltype(Wire)& wire_;
35class ArduinoI2cSlaveDevice {
37 ArduinoI2cSlaveDevice(ArduinoI2cMasterBusHandle& bus_handle,
38 uint8_t slave_address)
39 : wire_(bus_handle.wire_), slave_address_(slave_address) {}
43 bool transmit(
const roo::byte* data,
size_t len) {
44 wire_.beginTransmission(slave_address_);
45 size_t written = wire_.write((
const uint8_t*)data, len);
46 if (written < len)
return false;
47 uint8_t result = wire_.endTransmission();
51 size_t receive(roo::byte* data,
size_t len) {
52 size_t received = wire_.requestFrom(slave_address_, len);
53 for (
size_t i = 0; i < received; ++i) {
54 *data++ =
static_cast<roo::byte
>(wire_.read());
60 decltype(Wire)& wire_;
61 uint8_t slave_address_;
Defines 140 opaque HTML named colors.