Adafruit-PWM-Servo-Driver-Library
Adafruit-PWM-Servo-Driver-Library copied to clipboard
read8 error handling
Board: ESP32 (AZ-Delivery Devkit v4) IDE: VSCode/PlatformIO
The read8 function does not check for errors when calling write_then_read:
https://github.com/adafruit/Adafruit-PWM-Servo-Driver-Library/blob/73cf3ecc79c7c33a72f8ce1a3d91ca556cd34ab3/Adafruit_PWMServoDriver.cpp#L365-L369
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.