Reclock I2C for sensors is aware of screen I2C frequency (#9898)

* Add define for screen I2C frequency

* Add functions to get I2C screen frequency and port

* Make reclock function aware of screen-set I2C speeds

* Refurbish ReClockI2C API

* Make ReClockI2C API class
* Use new API in AirQualityTelemetry module
* Minor changes on some logs

* Update esp8266-oled library

* Fix esp8266 library

* Minor logging changes

* Improve setClock and restoreClock cases

* Make getter functions const, fix capitalisaiton of new functions

* Minor typo, remove pragma once

* Low prio debug fixes

* Mark getter functions as const (properly)

* Fix LOG based on coderabbit feedback

---------

Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
This commit is contained in:
oscgonfer
2026-07-02 14:32:48 -05:00
committed by GitHub
co-authored by GitHub Ben Meadors
parent a5cf82c69e
commit 4673ed22fc
17 changed files with 443 additions and 386 deletions
+20
View File
@@ -73,6 +73,9 @@ class Screen
void showOverlayBanner(BannerOverlayOptions) {}
void setFrames(FrameFocus focus) {}
void endAlert() {}
bool getIsI2cScreen() const { return false; }
uint32_t getI2cFrequency() const { return 0; }
ScanI2C::I2CPort getI2CPort() const { return ScanI2C::I2CPort::NO_I2C; }
};
} // namespace graphics
#else
@@ -260,6 +263,22 @@ class Screen : public concurrency::OSThread
Screen &operator=(const Screen &) = delete;
ScanI2C::DeviceAddress address_found;
bool getIsI2cScreen() const { return isI2cScreen; }
// Return I2C Speed, or 0 if none
uint32_t getI2cFrequency() const
{
if (getIsI2cScreen())
return dispdev->getI2cFrequency();
else
return 0;
}
ScanI2C::I2CPort getI2CPort() const
{
if (getIsI2cScreen())
return address_found.port;
else
return ScanI2C::I2CPort::NO_I2C;
}
meshtastic_Config_DisplayConfig_OledType model;
OLEDDISPLAY_GEOMETRY geometry;
@@ -654,6 +673,7 @@ class Screen : public concurrency::OSThread
int32_t runOnce() final;
bool isAUTOOled = false;
bool isI2cScreen = false;
// Screen dimensions (for convenience)
// Defined during Screen::setup