[SSD1306] Fix reboot loop with latest ESP32 platform (#1551)

This commit is contained in:
Northern Man authored and GitHub committed 2023-03-20 07:35:14 -05:00
1 parent 85650a6204
commit 4e93722098
3 files changed
+26 -15

No files matched your search

+20 -14
View File
@@ -102,7 +102,10 @@ void loopSSD1306() {
if (!Oled.displayPage(message)) {
Log.warning(F("[ssd1306] displayPage failed: %s" CR), message->title);
}
free(message);
if (currentOledMessage) {
free(currentOledMessage);
}
currentOledMessage = message;
nextDisplayPage = uptime() + DISPLAY_PAGE_INTERVAL;
logoDisplayed = false;
}
@@ -824,22 +827,22 @@ OledSerial Oled(0); // Not sure about this, came from Hardwareserial
OledSerial::OledSerial(int x) {
displayQueue = xQueueCreate(5, sizeof(displayQueueMessage*));
# if defined(WIFI_Kit_32) || defined(WIFI_LoRa_32) || defined(WIFI_LoRa_32_V2)
pinMode(RST_OLED, OUTPUT);
digitalWrite(RST_OLED, LOW);
delay(50);
digitalWrite(RST_OLED, HIGH);
// pinMode(RST_OLED, OUTPUT); // https://github.com/espressif/arduino-esp32/issues/4278
// digitalWrite(RST_OLED, LOW);
// delay(50);
// digitalWrite(RST_OLED, HIGH);
display = new SSD1306Wire(0x3c, SDA_OLED, SCL_OLED, GEOMETRY_128_64);
# elif defined(Wireless_Stick)
pinMode(RST_OLED, OUTPUT);
digitalWrite(RST_OLED, LOW);
delay(50);
digitalWrite(RST_OLED, HIGH);
// pinMode(RST_OLED, OUTPUT); // https://github.com/espressif/arduino-esp32/issues/4278
// digitalWrite(RST_OLED, LOW);
// delay(50);
// digitalWrite(RST_OLED, HIGH);
display = new SSD1306Wire(0x3c, SDA_OLED, SCL_OLED, GEOMETRY_64_32);
# elif defined(ARDUINO_TTGO_LoRa32_v21new) // LILYGO® Disaster-Radio LoRa V2.1_1.6.1
pinMode(OLED_RST, OUTPUT);
digitalWrite(OLED_RST, LOW);
delay(50);
digitalWrite(OLED_RST, HIGH);
// pinMode(OLED_RST, OUTPUT); // https://github.com/espressif/arduino-esp32/issues/4278
// digitalWrite(OLED_RST, LOW);
// delay(50);
// digitalWrite(OLED_RST, HIGH);
display = new SSD1306Wire(0x3c, OLED_SDA, OLED_SCL, GEOMETRY_128_64);
# endif
}
@@ -995,7 +998,7 @@ void OledSerial::drawLogo(int xshift, int yshift) {
}
}
void stateSSD1306Display() {
String stateSSD1306Display() {
//Publish display state
StaticJsonDocument<JSON_MSG_BUFFER> jsonBuffer;
JsonObject DISPLAYdata = jsonBuffer.to<JsonObject>();
@@ -1021,6 +1024,9 @@ void stateSSD1306Display() {
} else {
Oled.display->resetOrientation();
}
String output;
serializeJson(DISPLAYdata, output);
return output;
}
#endif
+5
View File
@@ -107,6 +107,7 @@
extern void setupSSD1306();
extern void loopSSD1306();
extern void MQTTtoSSD1306(char*, JsonObject&);
extern String stateSSD1306Display();
// Simple construct for displaying message in lcd and oled displays
@@ -140,6 +141,10 @@ struct displayQueueMessage {
char line4[OLED_TEXT_WIDTH];
};
displayQueueMessage* currentOledMessage;
/*-------------------End of Global Variables----------------------*/
// This pattern was borrowed from HardwareSerial and modified to support the ssd1306 display
class OledSerial : public Stream {