Files
MeshCore/src/helpers/ui/DisplaySelect.h
T
shade 17f3b639d0
Build and deploy Docs site to GitHub Pages / github-pages (push) Canceled after 0s
PR Build Check / build (Heltec_v3_companion_radio_ble) (push) Canceled after 0s
PR Build Check / build (Heltec_v3_repeater) (push) Canceled after 0s
PR Build Check / build (Heltec_v3_room_server) (push) Canceled after 0s
PR Build Check / build (LilyGo_Tlora_C6_repeater_) (push) Canceled after 0s
PR Build Check / build (PicoW_repeater) (push) Canceled after 0s
PR Build Check / build (RAK_4631_companion_radio_ble) (push) Canceled after 0s
PR Build Check / build (RAK_4631_companion_radio_ethernet) (push) Canceled after 0s
PR Build Check / build (RAK_4631_repeater) (push) Canceled after 0s
PR Build Check / build (RAK_4631_repeater_ethernet) (push) Canceled after 0s
PR Build Check / build (RAK_4631_room_server) (push) Canceled after 0s
PR Build Check / build (RAK_4631_room_server_ethernet) (push) Canceled after 0s
PR Build Check / build (Tbeam_SX1276_repeater) (push) Canceled after 0s
PR Build Check / build (wio-e5-mini_repeater) (push) Canceled after 0s
PR Build Check / build (wio_wm1110_repeater) (push) Canceled after 0s
Run Unit Tests / test (push) Canceled after 0s
выбор драйвера дисплея по DISPLAY_CLASS, правки SH1106 и OLED_RU
2026-10-07 09:33:41 +03:00

42 lines
1.6 KiB
C

#pragma once
// Единая точка подключения драйвера дисплея по макросу DISPLAY_CLASS.
//
// Вариант задаёт в platformio.ini только имя класса, например
// -D DISPLAY_CLASS=SH1106Display
// и больше ничего не правит: ни target.h, ни build_src_filter (последний
// обрабатывает build_as_lib.py, либо он задан явно в env).
//
// Приём: имена классов на время вычисления подменяются числовыми маркерами,
// поэтому DISPLAY_CLASS можно сравнить через #if. Маркеры снимаются до
// include драйвера, чтобы имя класса осталось обычным идентификатором, а не
// макросом (иначе `extern DISPLAY_CLASS display;` превратился бы в `extern 1
// display;`).
//
// Чтобы добавить драйвер: дописать маркер, ветку и #include ниже.
#ifdef DISPLAY_CLASS
#define SSD1306Display 1
#define SH1106Display 2
#if DISPLAY_CLASS == 1
#define MC_DISPLAY_SSD1306
#elif DISPLAY_CLASS == 2
#define MC_DISPLAY_SH1106
#else
#error "DisplaySelect.h: unsupported DISPLAY_CLASS (SSD1306Display or SH1106Display expected)"
#endif
#undef SSD1306Display
#undef SH1106Display
#ifdef MC_DISPLAY_SSD1306
#include "SSD1306Display.h"
#endif
#ifdef MC_DISPLAY_SH1106
#include "SH1106Display.h"
#endif
#endif // DISPLAY_CLASS