Skip to content

Commit 16a9cf7

Browse files
authored
Add another Wire requestFrom function signature (#5768)
* Re-add with clean master * Address @me-no-dev's comments * static_cast<size_t> to static_cast<uint8_t>
1 parent b1497fb commit 16a9cf7

File tree

2 files changed

+15
-6
lines changed

2 files changed

+15
-6
lines changed

libraries/Wire/src/Wire.cpp

+14-6
Original file line numberDiff line numberDiff line change
@@ -447,32 +447,40 @@ void TwoWire::flush(void)
447447

448448
uint8_t TwoWire::requestFrom(uint8_t address, uint8_t quantity, uint8_t sendStop)
449449
{
450-
return requestFrom(static_cast<uint16_t>(address), static_cast<size_t>(quantity), static_cast<bool>(sendStop));
450+
return requestFrom(static_cast<uint16_t>(address), static_cast<uint8_t>(quantity), static_cast<bool>(sendStop));
451451
}
452452

453453
uint8_t TwoWire::requestFrom(uint16_t address, uint8_t quantity, uint8_t sendStop)
454454
{
455-
return requestFrom(address, static_cast<size_t>(quantity), static_cast<bool>(sendStop));
455+
return requestFrom(address, static_cast<uint8_t>(quantity), static_cast<bool>(sendStop));
456+
}
457+
458+
/* Added to match the Arduino function definition: https://github.com/arduino/ArduinoCore-API/blob/173e8eadced2ad32eeb93bcbd5c49f8d6a055ea6/api/HardwareI2C.h#L39
459+
* See: https://github.com/arduino-libraries/ArduinoECCX08/issues/25
460+
*/
461+
size_t TwoWire::requestFrom(uint8_t address, size_t len, bool stopBit)
462+
{
463+
return requestFrom((uint16_t)address, (uint8_t)len, stopBit);
456464
}
457465

458466
uint8_t TwoWire::requestFrom(uint8_t address, uint8_t quantity)
459467
{
460-
return requestFrom(static_cast<uint16_t>(address), static_cast<size_t>(quantity), true);
468+
return requestFrom(static_cast<uint16_t>(address), static_cast<uint8_t>(quantity), true);
461469
}
462470

463471
uint8_t TwoWire::requestFrom(uint16_t address, uint8_t quantity)
464472
{
465-
return requestFrom(address, static_cast<size_t>(quantity), true);
473+
return requestFrom(address, static_cast<uint8_t>(quantity), true);
466474
}
467475

468476
uint8_t TwoWire::requestFrom(int address, int quantity)
469477
{
470-
return requestFrom(static_cast<uint16_t>(address), static_cast<size_t>(quantity), true);
478+
return requestFrom(static_cast<uint16_t>(address), static_cast<uint8_t>(quantity), true);
471479
}
472480

473481
uint8_t TwoWire::requestFrom(int address, int quantity, int sendStop)
474482
{
475-
return static_cast<uint8_t>(requestFrom(static_cast<uint16_t>(address), static_cast<size_t>(quantity), static_cast<bool>(sendStop)));
483+
return static_cast<uint8_t>(requestFrom(static_cast<uint16_t>(address), static_cast<uint8_t>(quantity), static_cast<bool>(sendStop)));
476484
}
477485

478486
void TwoWire::beginTransmission(int address)

libraries/Wire/src/Wire.h

+1
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ class TwoWire: public Stream
9595

9696
uint8_t requestFrom(uint16_t address, uint8_t size, bool sendStop);
9797
uint8_t requestFrom(uint16_t address, uint8_t size, uint8_t sendStop);
98+
size_t requestFrom(uint8_t address, size_t len, bool stopBit);
9899
uint8_t requestFrom(uint16_t address, uint8_t size);
99100
uint8_t requestFrom(uint8_t address, uint8_t size, uint8_t sendStop);
100101
uint8_t requestFrom(uint8_t address, uint8_t size);

0 commit comments

Comments
 (0)