nkolban / esp32-snippets

Sample ESP32 snippets and code fragments
https://leanpub.com/kolban-ESP32
Apache License 2.0
2.37k stars 710 forks source link

Gracefully fail when I2C device not present in u8g2_esp32_hal init #1197

Open amaschas opened 4 months ago

amaschas commented 4 months ago

I'm using u8g2_esp32_hal to interface with an I2C OLED device, and whenever the OLED screen is not connected the program aborts, causing a restart. The reason this happens is because ESP_ERROR_CHECK macros are used in several places, which simply abort the thread if they fail. I'm wondering if instead of using ESP_ERROR_CHECK, the relevant functions could print a message and return an error code that users could handle themselves.

Alternatively, maybe provide a function that can test the I2C connection without aborting?

This line is the one that generally causes the abort for me: https://github.com/nkolban/esp32-snippets/blob/fe3d318acddf87c6918944f24e8b899d63c816dd/hardware/displays/U8G2/u8g2_esp32_hal.c#L159