Skip to content

Commit 7bb30b3

Browse files
Maelstrom96flaviutme-no-dev
authored
Refactoring TwoWire::requestFrom() headers in Wire.cpp (#5935)
* Refactoring function headers Changing the header so the main TwoWire::requestFrom() definition uses a `size_t` instead of a `uint8_t`, removing the 255 bytes limit on I2C requests. Co-authored-by: Flaviu Tamas <[email protected]> Co-authored-by: Me No Dev <[email protected]>
1 parent 4b638de commit 7bb30b3

File tree

2 files changed

+21
-15
lines changed

2 files changed

+21
-15
lines changed

Diff for: libraries/Wire/src/Wire.cpp

+20-15
Original file line numberDiff line numberDiff line change
@@ -354,7 +354,7 @@ uint8_t TwoWire::endTransmission(bool sendStop)
354354
return 4;
355355
}
356356

357-
uint8_t TwoWire::requestFrom(uint16_t address, uint8_t size, bool sendStop)
357+
size_t TwoWire::requestFrom(uint16_t address, size_t size, bool sendStop)
358358
{
359359
if(is_slave){
360360
log_e("Bus is in Slave Mode");
@@ -445,42 +445,47 @@ void TwoWire::flush(void)
445445
//i2cFlush(num); // cleanup
446446
}
447447

448-
uint8_t TwoWire::requestFrom(uint8_t address, uint8_t quantity, uint8_t sendStop)
448+
size_t TwoWire::requestFrom(uint8_t address, size_t len, bool sendStop)
449449
{
450-
return requestFrom(static_cast<uint16_t>(address), static_cast<uint8_t>(quantity), static_cast<bool>(sendStop));
450+
return requestFrom(static_cast<uint16_t>(address), static_cast<size_t>(len), static_cast<bool>(sendStop));
451+
}
452+
453+
uint8_t TwoWire::requestFrom(uint8_t address, uint8_t len, uint8_t sendStop)
454+
{
455+
return requestFrom(static_cast<uint16_t>(address), static_cast<size_t>(len), static_cast<bool>(sendStop));
451456
}
452457

453-
uint8_t TwoWire::requestFrom(uint16_t address, uint8_t quantity, uint8_t sendStop)
458+
uint8_t TwoWire::requestFrom(uint16_t address, uint8_t len, uint8_t sendStop)
454459
{
455-
return requestFrom(address, static_cast<uint8_t>(quantity), static_cast<bool>(sendStop));
460+
return requestFrom(address, static_cast<size_t>(len), static_cast<bool>(sendStop));
456461
}
457462

458463
/* Added to match the Arduino function definition: https://github.com/arduino/ArduinoCore-API/blob/173e8eadced2ad32eeb93bcbd5c49f8d6a055ea6/api/HardwareI2C.h#L39
459464
* See: https://github.com/arduino-libraries/ArduinoECCX08/issues/25
460465
*/
461-
size_t TwoWire::requestFrom(uint8_t address, size_t len, bool stopBit)
466+
uint8_t TwoWire::requestFrom(uint16_t address, uint8_t len, bool stopBit)
462467
{
463-
return requestFrom((uint16_t)address, (uint8_t)len, stopBit);
468+
return requestFrom((uint16_t)address, (size_t)len, stopBit);
464469
}
465470

466-
uint8_t TwoWire::requestFrom(uint8_t address, uint8_t quantity)
471+
uint8_t TwoWire::requestFrom(uint8_t address, uint8_t len)
467472
{
468-
return requestFrom(static_cast<uint16_t>(address), static_cast<uint8_t>(quantity), true);
473+
return requestFrom(static_cast<uint16_t>(address), static_cast<size_t>(len), true);
469474
}
470475

471-
uint8_t TwoWire::requestFrom(uint16_t address, uint8_t quantity)
476+
uint8_t TwoWire::requestFrom(uint16_t address, uint8_t len)
472477
{
473-
return requestFrom(address, static_cast<uint8_t>(quantity), true);
478+
return requestFrom(address, static_cast<size_t>(len), true);
474479
}
475480

476-
uint8_t TwoWire::requestFrom(int address, int quantity)
481+
uint8_t TwoWire::requestFrom(int address, int len)
477482
{
478-
return requestFrom(static_cast<uint16_t>(address), static_cast<uint8_t>(quantity), true);
483+
return requestFrom(static_cast<uint16_t>(address), static_cast<size_t>(len), true);
479484
}
480485

481-
uint8_t TwoWire::requestFrom(int address, int quantity, int sendStop)
486+
uint8_t TwoWire::requestFrom(int address, int len, int sendStop)
482487
{
483-
return static_cast<uint8_t>(requestFrom(static_cast<uint16_t>(address), static_cast<uint8_t>(quantity), static_cast<bool>(sendStop)));
488+
return static_cast<uint8_t>(requestFrom(static_cast<uint16_t>(address), static_cast<size_t>(len), static_cast<bool>(sendStop)));
484489
}
485490

486491
void TwoWire::beginTransmission(int address)

Diff for: libraries/Wire/src/Wire.h

+1
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ class TwoWire: public Stream
9393
uint8_t endTransmission(bool sendStop);
9494
uint8_t endTransmission(void);
9595

96+
size_t requestFrom(uint16_t address, size_t size, bool sendStop);
9697
uint8_t requestFrom(uint16_t address, uint8_t size, bool sendStop);
9798
uint8_t requestFrom(uint16_t address, uint8_t size, uint8_t sendStop);
9899
size_t requestFrom(uint8_t address, size_t len, bool stopBit);

0 commit comments

Comments
 (0)