Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Because of two situations, reboot and bus error, in which the ESP32 I2C state machine can get into a non-recoverable state where the busy flag remains set, potentially causing lockup or preventing I2C from running, the reset function has been added at the HAL layer and made available from Wire.
An attempt was made to time out operations and have i2cReset called internally, but that ended up creating more problems than it solved because the slave may need to release the line(s) first. At this point anyone who runs into bus errors that leave the I2C unusable after SDA and SCL go high can call the reset() function to reset the hardware I2C elements.