#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