| 92 | } |
| 93 | |
| 94 | std::shared_ptr<tt::hal::display::DisplayDriver> EspLcdDisplay::getDisplayDriver() { |
| 95 | assert(lvglDisplay == nullptr); // Still attached to LVGL context. Call stopLvgl() first. |
| 96 | if (displayDriver == nullptr) { |
| 97 | auto lvgl_port_config = getLvglPortDisplayConfig(ioHandle, panelHandle); |
| 98 | |
| 99 | tt::hal::display::ColorFormat color_format; |
| 100 | if (lvgl_port_config.color_format == LV_COLOR_FORMAT_I1) { |
| 101 | color_format = tt::hal::display::ColorFormat::Monochrome; |
| 102 | } else if (lvgl_port_config.color_format == LV_COLOR_FORMAT_RGB565) { |
| 103 | if (rgbElementOrder == LCD_RGB_ELEMENT_ORDER_RGB) { |
| 104 | if (lvgl_port_config.flags.swap_bytes) { |
| 105 | color_format = tt::hal::display::ColorFormat::RGB565Swapped; |
| 106 | } else { |
| 107 | color_format = tt::hal::display::ColorFormat::RGB565; |
| 108 | } |
| 109 | } else { |
| 110 | if (lvgl_port_config.flags.swap_bytes) { |
| 111 | color_format = tt::hal::display::ColorFormat::BGR565Swapped; |
| 112 | } else { |
| 113 | color_format = tt::hal::display::ColorFormat::BGR565; |
| 114 | } |
| 115 | } |
| 116 | } else if (lvgl_port_config.color_format == LV_COLOR_FORMAT_RGB888) { |
| 117 | color_format = tt::hal::display::ColorFormat::RGB888; |
| 118 | } else { |
| 119 | check(false, "unsupported driver"); |
| 120 | } |
| 121 | |
| 122 | displayDriver = std::make_shared<EspLcdDisplayDriver>( |
| 123 | panelHandle, |
| 124 | lvgl_port_config.hres, |
| 125 | lvgl_port_config.vres, |
| 126 | color_format |
| 127 | ); |
| 128 | } |
| 129 | return displayDriver; |
| 130 | } |
no test coverage detected