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:
co-authored by
GitHub
Ben Meadors
parent
a5cf82c69e
commit
4673ed22fc
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user