59 void begin(uint8_t sda, uint8_t scl);
67 void pins(uint8_t sda, uint8_t scl);
109 uint8_t
requestFrom(uint8_t address, uint8_t size,
bool sendStop =
true);
120 size_t write(
const uint8_t*,
size_t)
override;
143 uint8_t twi_dcount{18};
144 unsigned twi_clockStretchLimit{0};
147 uint8_t rxBufferIndex{0};
148 uint8_t rxBufferLength{0};
150 uint8_t txAddress{0};
152 uint8_t txBufferIndex{0};
153 uint8_t txBufferLength{0};
155 bool transmitting{
false};
158 void onRequestService();
159 void onReceiveService(uint8_t*,
int);
161 void twi_delay(uint8_t v);
162 bool twi_write_start();
163 bool twi_write_stop();
164 bool twi_write_bit(
bool bit);
166 bool twi_write_byte(uint8_t
byte);
167 uint8_t twi_read_byte(
bool nack);
168 Error twi_writeTo(uint8_t address,
const uint8_t* buf,
size_t len,
bool sendStop);
169 Error twi_readFrom(uint8_t address, uint8_t* buf,
size_t len,
bool sendStop);
172 #if !defined(NO_GLOBAL_INSTANCES) && !defined(NO_GLOBAL_TWOWIRE)
#define bit(x)
Definition: BitManipulations.h:12
#define DEFAULT_SCL_PIN
Definition: Esp32/Core/twi_arch.h:24
#define DEFAULT_SDA_PIN
Definition: Esp32/Core/twi_arch.h:23
virtual size_t write(uint8_t c)=0
Writes a single character to output stream.
Base Stream class.
Definition: Wiring/Stream.h:33
void setClock(uint32_t frequency)
Set approximate clock frequency.
size_t write(const uint8_t *, size_t) override
Writes characters from a buffer to output stream.
void end()
End TwoWire operation.
void beginTransmission(uint8_t address)
Signal start of transaction.
Status
Definition: Wire.h:34
@ I2C_SCL_HELD_LOW_AFTER_READ
Definition: Wire.h:37
@ I2C_SDA_HELD_LOW_AFTER_INIT
Definition: Wire.h:39
@ I2C_OK
Definition: Wire.h:35
@ I2C_SDA_HELD_LOW
Definition: Wire.h:38
@ I2C_SCL_HELD_LOW
Definition: Wire.h:36
Status status()
Query bus status.
TwoWire()
Definition: Wire.h:52
static constexpr size_t BUFFER_LENGTH
Definition: Wire.h:32
size_t write(uint8_t) override
Writes a single character to output stream.
uint8_t requestFrom(uint8_t address, uint8_t size, bool sendStop=true)
Perform a complete 'read' transaction.
void begin(uint8_t sda, uint8_t scl)
Initialise using selected pins.
void(*)() UserRequest
Definition: Wire.h:49
void onReceive(UserReceive callback)
Definition: Wire.h:129
void pins(uint8_t sda, uint8_t scl)
Switch to selected pins.
void setClockStretchLimit(uint32_t limit)
Set approximate time in microseconds that clocks may be stretched by.
void(*)(int len) UserReceive
Definition: Wire.h:50
void begin()
Initialise using current pin values.
Error endTransmission(bool sendStop=true)
Perform actual transaction with device.
Error
Definition: Wire.h:42
@ I2C_ERR_LINE_BUSY
Definition: Wire.h:46
@ I2C_ERR_SUCCESS
Definition: Wire.h:43
@ I2C_ERR_ADDR_NACK
Definition: Wire.h:44
@ I2C_ERR_DATA_NACK
Definition: Wire.h:45
void onRequest(UserRequest callback)
Definition: Wire.h:135