Skip to content

read8 error handling #101

@Carl-UB

Description

@Carl-UB

Board: ESP32 (AZ-Delivery Devkit v4)
IDE: VSCode/PlatformIO

The read8 function does not check for errors when calling write_then_read:

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions