@@ -145,7 +145,7 @@ void common_hal_busio_i2c_deinit(busio_i2c_obj_t *self) {
145145}
146146
147147bool common_hal_busio_i2c_probe (busio_i2c_obj_t * self , uint8_t addr ) {
148- return common_hal_busio_i2c_write (self , addr , NULL , 0 , true ) == 0 ;
148+ return common_hal_busio_i2c_write (self , addr , NULL , 0 ) == 0 ;
149149}
150150
151151bool common_hal_busio_i2c_try_lock (busio_i2c_obj_t * self ) {
@@ -165,7 +165,7 @@ void common_hal_busio_i2c_unlock(busio_i2c_obj_t *self) {
165165 self -> has_lock = false;
166166}
167167
168- uint8_t common_hal_busio_i2c_write (busio_i2c_obj_t * self , uint16_t addr ,
168+ STATIC uint8_t _common_hal_busio_i2c_write (busio_i2c_obj_t * self , uint16_t addr ,
169169 const uint8_t * data , size_t len , bool transmit_stop_bit ) {
170170 if (len == 0 ) {
171171 // The RP2040 I2C peripheral will not perform 0 byte writes.
@@ -203,6 +203,11 @@ uint8_t common_hal_busio_i2c_write(busio_i2c_obj_t *self, uint16_t addr,
203203 }
204204}
205205
206+ uint8_t common_hal_busio_i2c_write (busio_i2c_obj_t * self , uint16_t addr ,
207+ const uint8_t * data , size_t len ) {
208+ return _common_hal_busio_i2c_write (self , addr , data , len , true);
209+ }
210+
206211uint8_t common_hal_busio_i2c_read (busio_i2c_obj_t * self , uint16_t addr ,
207212 uint8_t * data , size_t len ) {
208213 int result = i2c_read_timeout_us (self -> peripheral , addr , data , len , false, BUS_TIMEOUT_US );
@@ -219,6 +224,16 @@ uint8_t common_hal_busio_i2c_read(busio_i2c_obj_t *self, uint16_t addr,
219224 }
220225}
221226
227+ uint8_t common_hal_busio_i2c_write_read (busio_i2c_obj_t * self , uint16_t addr ,
228+ uint8_t * out_data , size_t out_len , uint8_t * in_data , size_t in_len ) {
229+ uint8_t result = _common_hal_busio_i2c_write (self , addr , out_data , out_len , false);
230+ if (result != 0 ) {
231+ return result ;
232+ }
233+
234+ return common_hal_busio_i2c_read (self , addr , in_data , in_len );
235+ }
236+
222237void common_hal_busio_i2c_never_reset (busio_i2c_obj_t * self ) {
223238 never_reset_i2c [i2c_hw_index (self -> peripheral )] = true;
224239
0 commit comments