-
Notifications
You must be signed in to change notification settings - Fork 323
Description
Board: ESP32 (AZ-Delivery Devkit v4)
IDE: VSCode/PlatformIO
The read8 function does not check for errors when calling write_then_read:
Adafruit-PWM-Servo-Driver-Library/Adafruit_PWMServoDriver.cpp
Lines 365 to 369 in 73cf3ec
| uint8_t Adafruit_PWMServoDriver::read8(uint8_t addr) { | |
| uint8_t buffer[1] = {addr}; | |
| i2c_dev->write_then_read(buffer, 1, buffer, 1); | |
| return buffer[0]; | |
| } |
If write_then_read returns false, then read8 may return an incorrect value. In my case it was just returning 0xFE (PCA9685_PRESCALE) as that was the address that was failing to read. This is problematic since 0xFE is a valid return value (and similarly for other addresses, they may also be valid return values) so errors cannot be distinguished.
It would be better if it could at least detect this error and indicate an error in some manner. read8 is private so could be changed without changing the interface.