mirror of
https://github.com/meshtastic/firmware.git
synced 2025-07-30 02:15:41 +00:00

* Tests to identify display model * (InkHUD) SSD1682 controller IC Has a few quirks, gets its own base class * (InkHUD) E0213A367 Display For Heltec Wireless Paper V1.1.1, V1.2 For Heltec VM-E213 V1.1 * (InkHUD) Select display model at boot * (BaseUI) Wrapper to combine multiple GxEPD2 drivers Workaround for issue of GxEPD2_BW objects not having a shared base class. Allows us to select a driver at runtime. https://github.com/meshtastic/firmware/issues/6851#issuecomment-2905353447 * (BaseUI) Select E-Ink model at boot * (InkHUD) SSD1682 deep sleep * (InkHUD) No deep sleep for SSD1682 * (InkHUD) Fully no-op deep sleep for SSD1682
35 lines
836 B
C
35 lines
836 B
C
#pragma once
|
|
|
|
#include "configuration.h"
|
|
|
|
enum class EInkDetectionResult : uint8_t {
|
|
LCMEN213EFC1 = 0, // V1.1
|
|
E0213A367 = 1, // V1.1.1, V1.2
|
|
};
|
|
|
|
EInkDetectionResult detectEInk()
|
|
{
|
|
// Test 1: Logic of BUSY pin
|
|
|
|
// Determines controller IC manufacturer
|
|
// Fitipower: busy when LOW
|
|
// Solomon Systech: busy when HIGH
|
|
|
|
// Force display BUSY by holding reset pin active
|
|
pinMode(PIN_EINK_RES, OUTPUT);
|
|
digitalWrite(PIN_EINK_RES, LOW);
|
|
|
|
delay(10);
|
|
|
|
// Read whether pin is HIGH or LOW while busy
|
|
pinMode(PIN_EINK_BUSY, INPUT);
|
|
bool busyLogic = digitalRead(PIN_EINK_BUSY);
|
|
|
|
// Test complete. Release pin
|
|
pinMode(PIN_EINK_RES, INPUT);
|
|
|
|
if (busyLogic == LOW)
|
|
return EInkDetectionResult::LCMEN213EFC1;
|
|
else // busy HIGH
|
|
return EInkDetectionResult::E0213A367;
|
|
} |