55class TwoWire :
public Stream {
57 typedef std::function<void(
int)> cb_function_receive_t;
58 typedef std::function<void(
void)> cb_function_request_t;
62 uint16_t rxBufferAllocated;
63 uint16_t rxBufferIndex;
64 uint16_t rxBufferLength;
68 uint16_t txBufferAllocated;
80 std::function<void(
int)> user_onReceive;
81 std::function<void(
void)> user_onRequest;
83 static void onRequestService(i2c_t *);
84 static void onReceiveService(i2c_t *);
86 void allocateRxBuffer(
size_t length);
87 size_t allocateTxBuffer(
size_t length);
89 void resetRxBuffer(
void);
90 void resetTxBuffer(
void);
91 void recoverBus(
void);
95 TwoWire(uint32_t sda, uint32_t scl);
98 void setSCL(uint32_t scl)
100 _i2c.scl = digitalPinToPinName(scl);
102 void setSDA(uint32_t sda)
104 _i2c.sda = digitalPinToPinName(sda);
106 void setSCL(PinName scl)
110 void setSDA(PinName sda)
114 void begin(
bool generalCall =
false);
115 void begin(uint32_t, uint32_t);
116 void begin(uint8_t,
bool generalCall =
false,
bool NoStretchMode =
false);
117 void begin(
int,
bool generalCall =
false,
bool NoStretchMode =
false);
119 void setClock(uint32_t);
120 void setWireTimeout(uint32_t timeout = 25000U,
bool reset_with_timeout =
false);
121 void beginTransmission(uint8_t);
122 void beginTransmission(
int);
123 uint8_t endTransmission(
void);
124 uint8_t endTransmission(uint8_t);
125 uint8_t requestFrom(uint8_t, uint8_t);
126 uint8_t requestFrom(uint8_t, uint8_t, uint8_t);
127 uint8_t requestFrom(uint8_t,
size_t,
bool);
128 uint8_t requestFrom(uint8_t, uint8_t, uint32_t, uint8_t, uint8_t);
129 uint8_t requestFrom(
int,
int);
130 uint8_t requestFrom(
int,
int,
int);
131 virtual size_t write(uint8_t);
132 virtual size_t write(
const uint8_t *,
size_t);
133 virtual int available(
void);
134 virtual int read(
void);
135 virtual int peek(
void);
136 virtual void flush(
void);
138 void onReceive(cb_function_receive_t callback);
139 void onRequest(cb_function_request_t callback);
141 inline size_t write(
unsigned long n)
143 return write((uint8_t)n);
145 inline size_t write(
long n)
147 return write((uint8_t)n);
149 inline size_t write(
unsigned int n)
151 return write((uint8_t)n);
153 inline size_t write(
int n)
155 return write((uint8_t)n);
160 I2C_HandleTypeDef *getHandle(
void)
162 return &(_i2c.handle);
215 uint8_t
scanSlaves (
const uint8_t starting_address = 0x01);