No matching function for call to 'BitsAndD

Hi all.
The code below got compiling error, how to fix it?
no matching function for call to
BitsAndDroidsFlightConnector::BitsAndDroidsFlightConnector(bool)'
that is from: ESP32 TFT Touch Screen Display Camera Based Projects

Thanks
Adam

#include "SPI.h"
#include "SD.h"
#include "FS.h"
#include "esp_camera.h"
#define CAMERA_MODEL_MAKERFABS
#include "camera_pins.h"
#include "HTTPClient.h"

#include <LovyanGFX.hpp>
#include "makerfabs_pin.h"

#include <functional>   /// NEW ADD  https://stackoverflow.com/questions/50465070/function-in-namespace-std-does-not-name-a-template-type

//If undefine debug, will be faster
//#define SERIAL_DEBUG
//#define WIFI_MODE

#define ARRAY_LENGTH 320 * 240 * 3

//#define NS2009_TOUCH //Resistive screen driver
#define FT6236_TOUCH //Capacitive screen driver

#define SCRENN_ROTATION 3

#ifdef NS2009_TOUCH
#include "NS2009.h"
const int i2c_touch_addr = NS2009_ADDR;
#endif

#ifdef FT6236_TOUCH
#include "FT6236.h"
const int i2c_touch_addr = TOUCH_I2C_ADD;
#endif

//SPI control
#define SPI_ON_TFT digitalWrite(ESP32_TSC_9488_LCD_CS, LOW)
#define SPI_OFF_TFT digitalWrite(ESP32_TSC_9488_LCD_CS, HIGH)
#define SPI_ON_SD digitalWrite(ESP32_TSC_9488_SD_CS, LOW)
#define SPI_OFF_SD digitalWrite(ESP32_TSC_9488_SD_CS, HIGH)

struct LGFX_Config
{
    static constexpr spi_host_device_t spi_host = ESP32_TSC_9488_LCD_SPI_HOST;
    static constexpr int dma_channel = 1;
    static constexpr int spi_sclk = ESP32_TSC_9488_LCD_SCK;
    static constexpr int spi_mosi = ESP32_TSC_9488_LCD_MOSI;
    static constexpr int spi_miso = ESP32_TSC_9488_LCD_MISO;
};

static lgfx::LGFX_SPI<LGFX_Config> tft;

////static LGFX_SPI tft;
static LGFX_Sprite sprite(&tft);
static lgfx::Panel_ILI9488 panel;

const uint8_t img_rgb888_320_240_head[54] = {
    0x42, 0x4d, 0x36, 0x84, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x36, 0x0, 0x0, 0x0, 0x28, 0x0,
    0x0, 0x0, 0x40, 0x1, 0x0, 0x0, 0xf0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x18, 0x0, 0x0, 0x0,
    0x0, 0x0, 0x0, 0x84, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
    0x0, 0x0, 0x0, 0x0, 0x0, 0x0};

String imgname = "";
int img_index = 0;
int pos[2] = {0, 0};
int stream_flag = 1;

void setup()
{

    esp32_init();
    camera_init();
}

void loop()
{
#ifdef SERIAL_DEBUG
    unsigned long start = micros();
#endif

    camera_fb_t *fb = NULL;

    fb = esp_camera_fb_get();

    if (stream_flag == 1)
    {
#ifdef SERIAL_DEBUG
        Serial.println(micros() - start);
#endif
        //Display rgb565 picture
        drawRGBBitmap(fb->buf, fb->width, fb->height);

#ifdef SERIAL_DEBUG
        Serial.println(micros() - start);
#endif
    }

#ifdef NS2009_TOUCH
    ns2009_pos(pos);
#endif
#ifdef FT6236_TOUCH
    ft6236_pos(pos);
#endif

#ifdef SERIAL_DEBUG
    String pos_str = (String)pos[0] + "," + (String)pos[1] + "," + (String)ns2009_get_press();
    Serial.println(pos_str);
#endif
    pos_rotation(pos, SCRENN_ROTATION);

    if (320 < pos[0] && pos[0] < 480)
    {
        if (0 < pos[1] && pos[1] < 80)
        {
            if (stream_flag == 1)
            {

#ifdef SERIAL_DEBUG
                Serial.println("Take a photo");
#endif

                void *ptrVal = NULL;
                ptrVal = heap_caps_malloc(ARRAY_LENGTH, MALLOC_CAP_SPIRAM);
                uint8_t *rgb = (uint8_t *)ptrVal;
                fmt2rgb888(fb->buf, fb->len, PIXFORMAT_RGB565, rgb);
                if (save_image(SD, rgb) == -1)
                {
                    show_log(5);
                }
                else
                    show_log(0);
                heap_caps_free(ptrVal);
                rgb = NULL;
            }
            else
            {

#ifdef SERIAL_DEBUG
                Serial.println("Please start steam");
#endif
                show_log(3);
            }
        }

        if (pos[1] > 80 && pos[1] < 160)
        {
#ifdef SERIAL_DEBUG
            Serial.println("Last photo:");
            Serial.println(imgname);
#endif
            show_log(1);
            stream_flag = 0;
            tft.fillRect(0, 0, 320, 240, TFT_BLACK);
            print_img(SD, imgname);

#ifdef WIFI_MODE
            TestPostFileStream(imgname);
            show_log(4);
#endif
        }

        if (pos[1] < 240 && pos[1] > 160)
        {
#ifdef SERIAL_DEBUG
            Serial.println("START STREAM");
#endif
            stream_flag = 1;
            show_log(2);
        }
    }

    /*
    if (pos[0] < 320 && pos[0] > 220)
    {
        if (pos[1] < 480 && pos[1] > 440)
        {
#ifdef SERIAL_DEBUG
            Serial.println("START STREAM");
#endif
            stream_flag = 0;
            testFillScreen();
        }
    }
    */

    esp_camera_fb_return(fb);

#ifdef SERIAL_DEBUG
    Serial.println(micros() - start);
    Serial.println("over a circle");
#endif
}

//ILI9488 init and SD card init
void esp32_init()
{
    Serial.begin(115200);
    Serial.println("ILI9488 Test!");

    //I2C init
    Wire.begin(ESP32_TSC_9488_I2C_SDA, ESP32_TSC_9488_I2C_SCL);
    byte error, address;

    Wire.beginTransmission(i2c_touch_addr);
    error = Wire.endTransmission();

    if (error == 0)
    {
        Serial.print("I2C device found at address 0x");
        Serial.print(i2c_touch_addr, HEX);
        Serial.println("  !");
    }
    else if (error == 4)
    {
        Serial.print("Unknown error at address 0x");
        Serial.println(i2c_touch_addr, HEX);
    }

    //SPI init
    pinMode(ESP32_TSC_9488_SD_CS, OUTPUT);
    pinMode(ESP32_TSC_9488_LCD_CS, OUTPUT);
    SPI_OFF_SD;
    SPI_OFF_TFT;

    SPI.begin(ESP32_TSC_9488_HSPI_SCK, ESP32_TSC_9488_HSPI_MISO, ESP32_TSC_9488_HSPI_MOSI);

    //SD(SPI) init
    SPI_ON_SD;
    if (!SD.begin(ESP32_TSC_9488_SD_CS, SPI, 60000000))
    {
        Serial.println("Card Mount Failed");
        while (1)
            ;
    }
    else
    {
        Serial.println("Card Mount Successed");
    }
    SPI_OFF_SD;

    Serial.println("SD init over.");

    //TFT(SPI) init
    SPI_ON_TFT;
    set_tft();
    tft.begin();
    tft.setRotation(SCRENN_ROTATION);
    tft.fillScreen(TFT_BLACK);
    draw_button();
    SPI_OFF_TFT;
    Serial.println("TFT init over.");

#ifdef WIFI_MODE
    // Trying to solve pn open, type:2 0 error with this line:
    WiFi.mode(WIFI_OFF);

    for (uint8_t t = 4; t > 0; t--)
    {
        Serial.printf("[SETUP] WAIT %d...\n", t);
        Serial.flush();
        delay(200);
    }

    Serial.println("Connecting to WIFI");
    // wait for WiFi connection
    WiFi.mode(WIFI_STA);
    WiFi.begin("Makerfabs", "20160704");
    while (WiFi.status() != WL_CONNECTED)
    {
        Serial.print(".");
        delay(50);
    }
    Serial.println("\nWIFI CONNECTED");
#endif
}

//Camera setting
void camera_init()
{
    //camera config
    camera_config_t config;
    config.ledc_channel = LEDC_CHANNEL_0;
    config.ledc_timer = LEDC_TIMER_0;
    config.pin_d0 = Y2_GPIO_NUM;
    config.pin_d1 = Y3_GPIO_NUM;
    config.pin_d2 = Y4_GPIO_NUM;
    config.pin_d3 = Y5_GPIO_NUM;
    config.pin_d4 = Y6_GPIO_NUM;
    config.pin_d5 = Y7_GPIO_NUM;
    config.pin_d6 = Y8_GPIO_NUM;
    config.pin_d7 = Y9_GPIO_NUM;
    config.pin_xclk = XCLK_GPIO_NUM;
    config.pin_pclk = PCLK_GPIO_NUM;
    config.pin_vsync = VSYNC_GPIO_NUM;
    config.pin_href = HREF_GPIO_NUM;
    config.pin_sscb_sda = SIOD_GPIO_NUM;
    config.pin_sscb_scl = SIOC_GPIO_NUM;
    config.pin_pwdn = PWDN_GPIO_NUM;
    config.pin_reset = RESET_GPIO_NUM;
    config.xclk_freq_hz = 20000000;

    config.pixel_format = PIXFORMAT_RGB565;
    config.frame_size = FRAMESIZE_QVGA;
    config.jpeg_quality = 10;
    config.fb_count = 1;

    // camera init
    esp_err_t err = esp_camera_init(&config);
    if (err != ESP_OK)
    {
        Serial.printf("Camera init failed with error 0x%x", err);
        while (1)
            ;
    }

    sensor_t *s = esp_camera_sensor_get();
    //initial sensors are flipped vertically and colors are a bit saturated
    if (s->id.PID == OV2640_PID)
    {
        s->set_vflip(s, 1);      //flip it back
        s->set_brightness(s, 0); //up the blightness just a bit
        s->set_saturation(s, 1); //lower the saturation
    }
    //drop down frame size for higher initial frame rate
    s->set_framesize(s, FRAMESIZE_QVGA);

    show_log(2);
}

//Save image to SD card
int save_image(fs::FS &fs, uint8_t *rgb)
{
    SPI_ON_SD;
    imgname = "/" + String(img_index) + "write.bmp";
    img_index++;

    Serial.println("Image name:" + imgname);

    File f = fs.open(imgname, "w");
    if (!f)
    {
        Serial.println("Failed to open file for writing");
        return -1;
    }

    f.write(img_rgb888_320_240_head, 54);
    f.write(rgb, 230400);

    f.close();
    SPI_OFF_SD;
    return 0;
}

void draw_button()
{
    SPI_ON_TFT;
    tft.fillRect(330, 0, 150, 70, TFT_BLUE);
    tft.fillRect(330, 80, 150, 70, TFT_BLUE);
    tft.fillRect(330, 160, 150, 70, TFT_BLUE);
    //tft.fillRect(220, 440, 100, 40, TFT_GREEN);

    tft.setTextColor(TFT_WHITE);
    tft.setTextSize(1);
    tft.setCursor(340, 30);
    tft.println("TAKE PHOTO");
    tft.setCursor(340, 110);
    tft.println("LAST PHOTO");
    tft.setCursor(340, 190);
    tft.println("START STREAM");
    //tft.setCursor(230, 450);
    //tft.println("TEST");

    SPI_OFF_TFT;
}

//Display image from file
int print_img(fs::FS &fs, String filename)
{
    SPI_ON_SD;
    File f = fs.open(filename, "r");
    if (!f)
    {
        Serial.println("Failed to open file for reading");
        return 0;
    }

    f.seek(54);
    int X = 320;
    int Y = 240;
    uint8_t RGB[3 * X];
    for (int row = 0; row < Y; row++)
    {
        f.seek(54 + 3 * X * row);
        f.read(RGB, 3 * X);
        SPI_OFF_SD;
        SPI_ON_TFT;
        for (int col = 0; col < X; col++)
        {
            tft.drawPixel(col, row, tft.color565(RGB[col * 3 + 2], RGB[col * 3 + 1], RGB[col * 3]));
        }
        SPI_OFF_TFT;
        SPI_ON_SD;
    }

    f.close();
    SPI_OFF_SD;
    return 0;
}

void show_log(int cmd_type)
{
    SPI_ON_TFT;
    tft.fillRect(0, 240, 480, 80, TFT_BLACK);

    tft.setTextColor(TFT_RED);
    tft.setTextSize(2);
    tft.setCursor(30, 280);

    switch (cmd_type)
    {
    case 0:
        tft.println("TAKE PHOTO");
        tft.println(imgname);
        break;

    case 1:
        tft.println("Show last photo");
        tft.println(imgname);
        break;

    case 2:
        tft.println("STREAMING");
        break;

    case 3:
        tft.println("NEED STREAM");
        break;

    case 4:
        tft.println("Show last photo");
        tft.println(imgname);
        tft.println("Upload success");
        break;
    case 5:
        tft.println("Write sd card wrong");
        break;

    default:
        break;
    }
    SPI_OFF_TFT;
}

void drawRGBBitmap(uint8_t *bitmap, int16_t w, int16_t h)
{
    SPI_ON_TFT;
    tft.startWrite();
    for (int16_t j = 0; j < h; j++)
    {
        for (int16_t i = 0; i < w; i++)
        {
            uint16_t temp = bitmap[j * w * 2 + 2 * i] * 256 + bitmap[j * w * 2 + 2 * i + 1];
            tft.writePixel(i, j, temp);
        }
    }
    tft.endWrite();
    SPI_OFF_TFT;
}

unsigned long testFillScreen()
{
    SPI_ON_TFT;
    unsigned long start = micros();
    tft.fillRect(0, 0, 320, 240, TFT_YELLOW);
    tft.fillRect(0, 0, 320, 240, TFT_RED);
    tft.fillRect(0, 0, 320, 240, TFT_GREEN);
    tft.fillRect(0, 0, 320, 240, TFT_BLUE);
    tft.fillRect(0, 0, 320, 240, TFT_BLACK);
    start = micros() - start;
    tft.fillRect(0, 340, 220, 140, TFT_BLACK);
    tft.setCursor(0, 360);
    tft.println("cost:" + (String)start);
    return micros() - start;
    SPI_OFF_TFT;
}

#ifdef WIFI_MODE
void TestPostFileStream(String file_name)
{
    SPI_ON_SD;
    HTTPClient http;
    String filename = String(img_index - 1) + "write.bmp";
    String pathname = file_name;
    String archDomainAddress = "http://192.168.1.128:5002/json";

    http.begin(archDomainAddress);
    http.addHeader("Content-Type", "text/plain");

    File payloadFile = SD.open(pathname, FILE_READ);
    if (payloadFile)
    {
        Serial.println("File exists, starting POST");

        http.addHeader("File-Name", filename);
        int httpCode = http.sendRequest("POST", &payloadFile, payloadFile.size());

        if (httpCode > 0)
        {
            // HTTP header has been send and Server response header has been handled
            Serial.printf("[HTTP] POST... code: %d\n", httpCode);

            // file found at server
            if (httpCode >= 200 && httpCode < 300)
            {
                String payload = http.getString();
                Serial.println("SUCCESS! DATA RECEIVED: ");
                Serial.println(payload);
            }
        }
        else
        {
            Serial.printf("[HTTP] POST... failed, error: %s\n", http.errorToString(httpCode).c_str());
        }
    }
    else
    {
        Serial.println("File does not exist!");
    }
    payloadFile.close();
    http.end();
    SPI_OFF_SD;
    Serial.println("POST over");
}
#endif

void set_tft()
{
    
    panel.freq_write = 60000000;
    
    panel.freq_fill = 60000000;
   
    panel.freq_read = 16000000;

    panel.spi_mode = 0;

    panel.spi_mode_read = 0;

    panel.len_dummy_read_pixel = 8;

    panel.spi_read = true;

    panel.spi_3wire = false;

    panel.spi_cs = ESP32_TSC_9488_LCD_CS;

    panel.spi_dc = ESP32_TSC_9488_LCD_DC;

    panel.gpio_rst = ESP32_TSC_9488_LCD_RST;

    panel.gpio_bl = ESP32_TSC_9488_LCD_BL;

    panel.pwm_ch_bl = -1;

    panel.backlight_level = true;

    panel.invert = false;

    panel.rgb_order = false;

    panel.memory_width = ESP32_TSC_9488_LCD_WIDTH;
    panel.memory_height = ESP32_TSC_9488_LCD_HEIGHT;

    panel.panel_width = ESP32_TSC_9488_LCD_WIDTH;
    panel.panel_height = ESP32_TSC_9488_LCD_HEIGHT;

    panel.offset_x = 0;
    panel.offset_y = 0;

    panel.rotation = 0;

    panel.offset_rotation = 0;

    tft.setPanel(&panel);
}

void pos_rotation(int pos[2], int rotation)
{
    if (pos[0] == -1)
        return;
    if (rotation == 0)
    {
        return;
    }
    if (rotation == 3)
    {
        int tempx = 480 - pos[1];
        int tempy = pos[0];
        pos[0] = tempx;
        pos[1] = tempy;
    }
}

ERROR:

Arduino: 1.8.19 (Windows 7), Board: "ESP32 Dev Module, FTDI Adapter, Disabled, Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS), 240MHz (WiFi/BT), QIO, 40MHz, 4MB (32Mb), 921600, Core 1, Core 1, None, Disabled"

Camera:70:14: error: 'LGFX_SPI' in namespace 'lgfx' does not name a template type

 static lgfx::LGFX_SPI<LGFX_Config> tft;

              ^~~~~~~~

Camera:73:28: error: 'tft' was not declared in this scope

 static LGFX_Sprite sprite(&tft);

                            ^~~

E:\ENGINEERING\DIY\Electronic\ESP32\ESP32 GPS LCD map\ESP32_Touch_Camera\Camera\Camera\Camera.ino:73:28: note: suggested alternative: 'stat'

 static LGFX_Sprite sprite(&tft);

                            ^~~

                            stat

E:\ENGINEERING\DIY\Electronic\ESP32\ESP32 GPS LCD map\ESP32_Touch_Camera\Camera\Camera\Camera.ino: In function 'void loop()':

Camera:172:13: error: 'tft' was not declared in this scope

             tft.fillRect(0, 0, 320, 240, TFT_BLACK);

             ^~~

E:\ENGINEERING\DIY\Electronic\ESP32\ESP32 GPS LCD map\ESP32_Touch_Camera\Camera\Camera\Camera.ino: In function 'void esp32_init()':

Camera:265:5: error: 'tft' was not declared in this scope

     tft.begin();

     ^~~

E:\ENGINEERING\DIY\Electronic\ESP32\ESP32 GPS LCD map\ESP32_Touch_Camera\Camera\Camera\Camera.ino:265:5: note: suggested alternative: 'stat'

     tft.begin();

     ^~~

     stat

E:\ENGINEERING\DIY\Electronic\ESP32\ESP32 GPS LCD map\ESP32_Touch_Camera\Camera\Camera\Camera.ino: In function 'void draw_button()':

Camera:376:5: error: 'tft' was not declared in this scope

     tft.fillRect(330, 0, 150, 70, TFT_BLUE);

     ^~~

E:\ENGINEERING\DIY\Electronic\ESP32\ESP32 GPS LCD map\ESP32_Touch_Camera\Camera\Camera\Camera.ino:376:5: note: suggested alternative: 'stat'

     tft.fillRect(330, 0, 150, 70, TFT_BLUE);

     ^~~

     stat

E:\ENGINEERING\DIY\Electronic\ESP32\ESP32 GPS LCD map\ESP32_Touch_Camera\Camera\Camera\Camera.ino: In function 'int print_img(fs::FS&, String)':

Camera:418:13: error: 'tft' was not declared in this scope

             tft.drawPixel(col, row, tft.color565(RGB[col * 3 + 2], RGB[col * 3 + 1], RGB[col * 3]));

             ^~~

E:\ENGINEERING\DIY\Electronic\ESP32\ESP32 GPS LCD map\ESP32_Touch_Camera\Camera\Camera\Camera.ino: In function 'void show_log(int)':

Camera:432:5: error: 'tft' was not declared in this scope

     tft.fillRect(0, 240, 480, 80, TFT_BLACK);

     ^~~

E:\ENGINEERING\DIY\Electronic\ESP32\ESP32 GPS LCD map\ESP32_Touch_Camera\Camera\Camera\Camera.ino:432:5: note: suggested alternative: 'stat'

     tft.fillRect(0, 240, 480, 80, TFT_BLACK);

     ^~~

     stat

E:\ENGINEERING\DIY\Electronic\ESP32\ESP32 GPS LCD map\ESP32_Touch_Camera\Camera\Camera\Camera.ino: In function 'void drawRGBBitmap(uint8_t*, int16_t, int16_t)':

Camera:476:5: error: 'tft' was not declared in this scope

     tft.startWrite();

     ^~~

E:\ENGINEERING\DIY\Electronic\ESP32\ESP32 GPS LCD map\ESP32_Touch_Camera\Camera\Camera\Camera.ino:476:5: note: suggested alternative: 'stat'

     tft.startWrite();

     ^~~

     stat

E:\ENGINEERING\DIY\Electronic\ESP32\ESP32 GPS LCD map\ESP32_Touch_Camera\Camera\Camera\Camera.ino: In function 'long unsigned int testFillScreen()':

Camera:493:5: error: 'tft' was not declared in this scope

     tft.fillRect(0, 0, 320, 240, TFT_YELLOW);

     ^~~

E:\ENGINEERING\DIY\Electronic\ESP32\ESP32 GPS LCD map\ESP32_Touch_Camera\Camera\Camera\Camera.ino:493:5: note: suggested alternative: 'stat'

     tft.fillRect(0, 0, 320, 240, TFT_YELLOW);

     ^~~

     stat

E:\ENGINEERING\DIY\Electronic\ESP32\ESP32 GPS LCD map\ESP32_Touch_Camera\Camera\Camera\Camera.ino: In function 'void set_tft()':

Camera:558:11: error: 'struct lgfx::v1::Panel_ILI9488' has no member named 'freq_write'; did you mean 'endWrite'?

     panel.freq_write = 60000000;

           ^~~~~~~~~~

           endWrite

Camera:560:11: error: 'struct lgfx::v1::Panel_ILI9488' has no member named 'freq_fill'

     panel.freq_fill = 60000000;

           ^~~~~~~~~

Camera:562:11: error: 'struct lgfx::v1::Panel_ILI9488' has no member named 'freq_read'

     panel.freq_read = 16000000;

           ^~~~~~~~~

Camera:564:11: error: 'struct lgfx::v1::Panel_ILI9488' has no member named 'spi_mode'; did you mean '_epd_mode'?

     panel.spi_mode = 0;

           ^~~~~~~~

           _epd_mode

Camera:566:11: error: 'struct lgfx::v1::Panel_ILI9488' has no member named 'spi_mode_read'

     panel.spi_mode_read = 0;

           ^~~~~~~~~~~~~

Camera:568:11: error: 'struct lgfx::v1::Panel_ILI9488' has no member named 'len_dummy_read_pixel'

     panel.len_dummy_read_pixel = 8;

           ^~~~~~~~~~~~~~~~~~~~

Camera:570:11: error: 'struct lgfx::v1::Panel_ILI9488' has no member named 'spi_read'

     panel.spi_read = true;

           ^~~~~~~~

Camera:572:11: error: 'struct lgfx::v1::Panel_ILI9488' has no member named 'spi_3wire'

     panel.spi_3wire = false;

           ^~~~~~~~~

Camera:574:11: error: 'struct lgfx::v1::Panel_ILI9488' has no member named 'spi_cs'; did you mean 'init_cs'?

     panel.spi_cs = ESP32_TSC_9488_LCD_CS;

           ^~~~~~

           init_cs

Camera:576:11: error: 'struct lgfx::v1::Panel_ILI9488' has no member named 'spi_dc'

     panel.spi_dc = ESP32_TSC_9488_LCD_DC;

           ^~~~~~

Camera:578:11: error: 'struct lgfx::v1::Panel_ILI9488' has no member named 'gpio_rst'; did you mean 'init_rst'?

     panel.gpio_rst = ESP32_TSC_9488_LCD_RST;

           ^~~~~~~~

           init_rst

Camera:580:11: error: 'struct lgfx::v1::Panel_ILI9488' has no member named 'gpio_bl'

     panel.gpio_bl = ESP32_TSC_9488_LCD_BL;

           ^~~~~~~

Camera:582:11: error: 'struct lgfx::v1::Panel_ILI9488' has no member named 'pwm_ch_bl'

     panel.pwm_ch_bl = -1;

           ^~~~~~~~~

Camera:584:11: error: 'struct lgfx::v1::Panel_ILI9488' has no member named 'backlight_level'

     panel.backlight_level = true;

           ^~~~~~~~~~~~~~~

Camera:586:11: error: 'struct lgfx::v1::Panel_ILI9488' has no member named 'invert'; did you mean '_invert'?

     panel.invert = false;

           ^~~~~~

           _invert

Camera:588:11: error: 'struct lgfx::v1::Panel_ILI9488' has no member named 'rgb_order'

     panel.rgb_order = false;

           ^~~~~~~~~

Camera:590:11: error: 'struct lgfx::v1::Panel_ILI9488' has no member named 'memory_width'; did you mean '_width'?

     panel.memory_width = ESP32_TSC_9488_LCD_WIDTH;

           ^~~~~~~~~~~~

           _width

Camera:591:11: error: 'struct lgfx::v1::Panel_ILI9488' has no member named 'memory_height'; did you mean '_height'?

     panel.memory_height = ESP32_TSC_9488_LCD_HEIGHT;

           ^~~~~~~~~~~~~

           _height

Camera:593:11: error: 'struct lgfx::v1::Panel_ILI9488' has no member named 'panel_width'; did you mean '_width'?

     panel.panel_width = ESP32_TSC_9488_LCD_WIDTH;

           ^~~~~~~~~~~

           _width

Camera:594:11: error: 'struct lgfx::v1::Panel_ILI9488' has no member named 'panel_height'; did you mean '_height'?

     panel.panel_height = ESP32_TSC_9488_LCD_HEIGHT;

           ^~~~~~~~~~~~

           _height

Camera:596:11: error: 'struct lgfx::v1::Panel_ILI9488' has no member named 'offset_x'

     panel.offset_x = 0;

           ^~~~~~~~

Camera:597:11: error: 'struct lgfx::v1::Panel_ILI9488' has no member named 'offset_y'

     panel.offset_y = 0;

           ^~~~~~~~

Camera:599:11: error: 'struct lgfx::v1::Panel_ILI9488' has no member named 'rotation'; did you mean '_rotation'?

     panel.rotation = 0;

           ^~~~~~~~

           _rotation

Camera:601:11: error: 'struct lgfx::v1::Panel_ILI9488' has no member named 'offset_rotation'; did you mean 'setRotation'?

     panel.offset_rotation = 0;

           ^~~~~~~~~~~~~~~

           setRotation

Camera:603:5: error: 'tft' was not declared in this scope

     tft.setPanel(&panel);

     ^~~

E:\ENGINEERING\DIY\Electronic\ESP32\ESP32 GPS LCD map\ESP32_Touch_Camera\Camera\Camera\Camera.ino:603:5: note: suggested alternative: 'stat'

     tft.setPanel(&panel);

     ^~~

     stat

exit status 1

'LGFX_SPI' in namespace 'lgfx' does not name a template type

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

I have no idea about the first part of the error, but do you need to declare "tft"?

1 Like

Thank you.
Sorry abouy my mistake, I copied a wrong code there and have just edited.

1 Like

let's see this simple code:

#include <LovyanGFX.hpp>

//...............
#include <LGFX_AUTODETECT.hpp>  // 
//....................

struct LGFX_Config
{
  static constexpr spi_host_device_t spi_host = VSPI_HOST;
  static constexpr int dma_channel  = 1;
  static constexpr int spi_miso     = -1; //19;
  static constexpr int spi_sclk     = 18;
  static constexpr int spi_mosi     = 23;
  static constexpr int spi_dlen     = 8;
};


//// static lgfx::LGFX_SPI<LGFX_Config> lcd;

static LGFX lcd;                 // 
static lgfx::Panel_ST7789 panel;


void setup(void)
{
///  panel.freq_write            = 20000000;
///  panel.freq_fill             = 27000000;
///  panel.freq_read             = 16000000;
  panel.spi_mode              = 0;
  panel.spi_mode_read         = 0;
  panel.len_dummy_read_pixel  = 8;
  panel.spi_read              = true;
  panel.spi_3wire             = true; //false;

  panel.spi_cs                = -1;
  panel.spi_dc                = 4;
  panel.gpio_rst              = 2;
  panel.gpio_bl               = 5;

  panel.pwm_ch_bl             = 7;
  panel.backlight_level       = true;
  panel.reverse_invert        = false;
  panel.rgb_order             = false;
  
  panel.memory_width          = 240;
  panel.memory_height         = 240;
  panel.panel_width           = 240;
  panel.panel_height          = 240;

  panel.offset_x              = 0;
  panel.offset_y              = 0;

  panel.rotation              = 0;
  panel.offset_rotation       = 0;

  lcd.setPanel(&panel);
  lcd.init();
}

uint32_t count = ~0;
void loop(void)
{
  delay(10);
  lcd.startWrite();
  lcd.setRotation(++count & 7);
  lcd.setColorDepth((count & 8) ? 16 : 24);

  lcd.setTextColor(random(65536));
  lcd.drawNumber(lcd.getRotation(), 16, 0);

  lcd.setTextColor(0xFF0000U);
  lcd.drawString("R", 30, 16);
  lcd.setTextColor(0x00FF00U);
  lcd.drawString("G", 40, 16);
  lcd.setTextColor(0x0000FFU);
  lcd.drawString("B", 50, 16);

  lcd.drawRect(30,30,lcd.width()-60,lcd.height()-60,random(65536));

  lcd.endWrite();
}

got compiling ERROR:

Arduino: 1.8.19 (Windows 10), Board: "ESP32 Dev Module, Disabled, Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS), 240MHz (WiFi/BT), QIO, 40MHz, 4MB (32Mb), 921600, Core 1, Core 1, None, Disabled"

C:\Users\Xinzhou\Documents\Arduino\sketch_jun09a\sketch_jun09a.ino: In function 'void setup()':

sketch_jun09a:29:9: error: 'struct lgfx::v1::Panel_ST7789' has no member named 'spi_mode'; did you mean '_epd_mode'?

   panel.spi_mode              = 0;

         ^~~~~~~~

         _epd_mode

sketch_jun09a:30:9: error: 'struct lgfx::v1::Panel_ST7789' has no member named 'spi_mode_read'

   panel.spi_mode_read         = 0;

         ^~~~~~~~~~~~~

sketch_jun09a:31:9: error: 'struct lgfx::v1::Panel_ST7789' has no member named 'len_dummy_read_pixel'

   panel.len_dummy_read_pixel  = 8;

         ^~~~~~~~~~~~~~~~~~~~

sketch_jun09a:32:9: error: 'struct lgfx::v1::Panel_ST7789' has no member named 'spi_read'

   panel.spi_read              = true;

         ^~~~~~~~

sketch_jun09a:33:9: error: 'struct lgfx::v1::Panel_ST7789' has no member named 'spi_3wire'

   panel.spi_3wire             = true; //false;

         ^~~~~~~~~

sketch_jun09a:35:9: error: 'struct lgfx::v1::Panel_ST7789' has no member named 'spi_cs'; did you mean 'init_cs'?

   panel.spi_cs                = -1;

         ^~~~~~

         init_cs

sketch_jun09a:36:9: error: 'struct lgfx::v1::Panel_ST7789' has no member named 'spi_dc'

   panel.spi_dc                = 4;

         ^~~~~~

sketch_jun09a:37:9: error: 'struct lgfx::v1::Panel_ST7789' has no member named 'gpio_rst'; did you mean 'init_rst'?

   panel.gpio_rst              = 2;

         ^~~~~~~~

         init_rst

sketch_jun09a:38:9: error: 'struct lgfx::v1::Panel_ST7789' has no member named 'gpio_bl'

   panel.gpio_bl               = 5;

         ^~~~~~~

sketch_jun09a:40:9: error: 'struct lgfx::v1::Panel_ST7789' has no member named 'pwm_ch_bl'

   panel.pwm_ch_bl             = 7;

         ^~~~~~~~~

sketch_jun09a:41:9: error: 'struct lgfx::v1::Panel_ST7789' has no member named 'backlight_level'

   panel.backlight_level       = true;

         ^~~~~~~~~~~~~~~

sketch_jun09a:42:9: error: 'struct lgfx::v1::Panel_ST7789' has no member named 'reverse_invert'; did you mean 'setInvert'?

   panel.reverse_invert        = false;

         ^~~~~~~~~~~~~~

         setInvert

sketch_jun09a:43:9: error: 'struct lgfx::v1::Panel_ST7789' has no member named 'rgb_order'

   panel.rgb_order             = false;

         ^~~~~~~~~

sketch_jun09a:45:9: error: 'struct lgfx::v1::Panel_ST7789' has no member named 'memory_width'; did you mean '_width'?

   panel.memory_width          = 240;

         ^~~~~~~~~~~~

         _width

sketch_jun09a:46:9: error: 'struct lgfx::v1::Panel_ST7789' has no member named 'memory_height'; did you mean '_height'?

   panel.memory_height         = 240;

         ^~~~~~~~~~~~~

         _height

sketch_jun09a:47:9: error: 'struct lgfx::v1::Panel_ST7789' has no member named 'panel_width'; did you mean '_width'?

   panel.panel_width           = 240;

         ^~~~~~~~~~~

         _width

sketch_jun09a:48:9: error: 'struct lgfx::v1::Panel_ST7789' has no member named 'panel_height'; did you mean '_height'?

   panel.panel_height          = 240;

         ^~~~~~~~~~~~

         _height

sketch_jun09a:50:9: error: 'struct lgfx::v1::Panel_ST7789' has no member named 'offset_x'

   panel.offset_x              = 0;

         ^~~~~~~~

sketch_jun09a:51:9: error: 'struct lgfx::v1::Panel_ST7789' has no member named 'offset_y'

   panel.offset_y              = 0;

         ^~~~~~~~

sketch_jun09a:53:9: error: 'struct lgfx::v1::Panel_ST7789' has no member named 'rotation'; did you mean '_rotation'?

   panel.rotation              = 0;

         ^~~~~~~~

         _rotation

sketch_jun09a:54:9: error: 'struct lgfx::v1::Panel_ST7789' has no member named 'offset_rotation'; did you mean 'setRotation'?

   panel.offset_rotation       = 0;

         ^~~~~~~~~~~~~~~

         setRotation

exit status 1

'struct lgfx::v1::Panel_ST7789' has no member named 'spi_mode'; did you mean '_epd_mode'?



This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

the LGFX_PANEL_ST7789_HPP do have: spi_mode
why?

#ifndef LGFX_PANEL_ST7789_HPP_
#define LGFX_PANEL_ST7789_HPP_

#include "PanelIlitekCommon.hpp"

namespace lgfx
{
 inline namespace v0
 {
//----------------------------------------------------------------------------

  struct Panel_ST7789  : public PanelIlitekCommon
  {
    Panel_ST7789(void)
    {
      panel_height = memory_height = 320;

      freq_write = 40000000;
      freq_read  = 20000000;
      freq_fill  = 40000000;

      spi_mode = 3;
      spi_mode_read = 1;

      len_dummy_read_pixel = 16;
    }

  protected:

    struct CMD : public CommandCommon
    {
      static constexpr uint8_t PORCTRL  = 0xB2;      // Porch control
      static constexpr uint8_t GCTRL    = 0xB7;      // Gate control
      static constexpr uint8_t VCOMS    = 0xBB;      // VCOMS setting
      static constexpr uint8_t LCMCTRL  = 0xC0;      // LCM control
      static constexpr uint8_t VDVVRHEN = 0xC2;      // VDV and VRH command enable
      static constexpr uint8_t VRHS     = 0xC3;      // VRH set
      static constexpr uint8_t VDVSET   = 0xC4;      // VDV setting
      static constexpr uint8_t FRCTR2   = 0xC6;      // FR Control 2
      static constexpr uint8_t PWCTRL1  = 0xD0;      // Power control 1
      static constexpr uint8_t PVGAMCTRL= 0xE0;      // Positive voltage gamma control
      static constexpr uint8_t NVGAMCTRL= 0xE1;      // Negative voltage gamma control
    };
    const uint8_t* getInitCommands(uint8_t listno) const override {
      static constexpr uint8_t list0[] = {
          CMD::SLPOUT , CMD_INIT_DELAY, 120,
          CMD::NORON  , CMD_INIT_DELAY, 0,
          0xB6        , 2, 0x0A,0x82,
          CMD::PORCTRL, 5, 0x0c, 0x0c, 0x00, 0x33, 0x33,
          CMD::GCTRL  , 1, 0x35,

          CMD::VCOMS  , 1, 0x28,  // JLX240 display datasheet
          CMD::LCMCTRL, 1, 0x0C,
          CMD::VDVVRHEN,2, 0x01, 0xFF,
          CMD::VRHS   , 1, 0x10,      // voltage VRHS
          CMD::VDVSET , 1, 0x20,
          CMD::FRCTR2 , 1, 0x0f,
          CMD::PWCTRL1, 2, 0xa4, 0xa1,
          //--------------------------------ST7789V gamma setting---------------------------------------//
          CMD::PVGAMCTRL,14, 0xd0,0x00,0x02,0x07,
                             0x0a,0x28,0x32,0x44,
                             0x42,0x06,0x0e,0x12,
                             0x14,0x17,
          CMD::NVGAMCTRL,14, 0xd0,0x00,0x02,0x07,
                             0x0a,0x28,0x31,0x54,
                             0x47,0x0e,0x1c,0x17,
                             0x1b,0x1e,
          CMD::SLPOUT, CMD_INIT_DELAY, 130,
          CMD::IDMOFF, 0,
          CMD::DISPON, 0,
          0xFF,0xFF, // end
      };
      switch (listno) {
      case 0: return list0;
      default: return nullptr;
      }
    }
  };

//----------------------------------------------------------------------------
 }
}

#endif

I think the first program in post #4 , you need to add more types to the struct?
No idea about the second program.
Hope this helps.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.