;***************************************************;
;    Sunton ESP32-S3 TFT 4.3", 5.0", 7.0"           ;
;          - Custom esp32-s3 board                  ;
;          - ili6485 480x272 or st7262 IPS 800x480  ;
;          - xpt2046 or gt911 touch controller      ;
;***************************************************;

[sunton-esp32-s3-tft]
extends = arduino_esp32s3_v2
board = esp32-s3-devkitc-1
board_build.arduino.memory_type = qio_opi

build_flags =
    ${arduino_esp32s3_v2.build_flags}
    ${esp32s3.ps_ram}
    ; -D HASP_MODEL="Sunton 4.3\""
    ;-DARDUINO_USB_CDC_ON_BOOT
	;-DUSE_USB_CDC_CONSOLE

;region -- ArduinoGFX build options ------------------------
    -D HASP_USE_ARDUINOGFX=1
    -D HASP_LV_USE_SW_ROTATE=1
    -D TFT_BCKL=2
;endregion

lib_deps =
    ${arduino_esp32s3_v2.lib_deps}
    ${arduinogfx.lib_deps}
    Arduino_RPi_DPI_RGBPanel_mod
    ${goodix.lib_deps}


[sunton-tft-common-pins]
build_flags =
    ; Bus Settings
    -D TFT_DE=40
    -D TFT_VSYNC=41
    -D TFT_HSYNC=39
    -D TFT_PCLK=42
    -D TFT_R0=45
    -D TFT_R1=48
    -D TFT_R2=47
    -D TFT_R3=21
    -D TFT_R4=14
    -D TFT_G0=5
    -D TFT_G1=6
    -D TFT_G2=7
    -D TFT_G3=15
    -D TFT_G4=16
    -D TFT_G5=4
    -D TFT_B0=8
    -D TFT_B1=3
    -D TFT_B2=46
    -D TFT_B3=9
    -D TFT_B4=1

[sunton-4827s043r_16MB]
extends = sunton-esp32-s3-tft, flash_16mb

build_flags =
    -D HASP_MODEL="Sunton ESP32-4827S043R"
    ${sunton-esp32-s3-tft.build_flags}
    ${sunton-tft-common-pins.build_flags}
    ; Bus Settings
    -D TFT_WIDTH=480
    -D TFT_HEIGHT=272
    ; Panel Settings
    -D TFT_HSYNC_POLARITY=0
    -D TFT_HSYNC_FRONT_PORCH=64   ; Maximum HSYNC Front Porch
    -D TFT_HSYNC_PULSE_WIDTH=4    ; Typical HSYNC Pulse Width
    -D TFT_HSYNC_BACK_PORCH=43    ; Typical HSYNC Back Porch
    -D TFT_VSYNC_POLARITY=0
    -D TFT_VSYNC_FRONT_PORCH=64   ; Maximum VSYNC Front Porch
    -D TFT_VSYNC_PULSE_WIDTH=4    ; Typical VSYNC Pulse Width
    -D TFT_VSYNC_BACK_PORCH=12    ; Typical VSYNC Back Porch
    -D TFT_PCLK_ACTIVE_NEG=1
    -D TFT_PREFER_SPEED=9000000   ; Typical DCLK Frequency
    -D TFT_AUTO_FLUSH=1
    ; Touch Settings
    ;-D TOUCH_DRIVER=0x2046
    -D TOUCH_SCLK=12
    -D TOUCH_MISO=13
    -D TOUCH_MOSI=11
    -D TOUCH_CS=38
    -D TOUCH_IRQ=18


[env:sunton-4827s043c_16MB]
extends = sunton-esp32-s3-tft, flash_16mb

build_flags =
    -D HASP_MODEL="Sunton ESP32-4827S043C"
    ${sunton-esp32-s3-tft.build_flags}
    ${sunton-tft-common-pins.build_flags}
    ; Bus Settings
    -D TFT_WIDTH=480
    -D TFT_HEIGHT=272
    ; Panel Settings
    -D TFT_HSYNC_POLARITY=0
    -D TFT_HSYNC_FRONT_PORCH=64   ; Maximum HSYNC Front Porch
    -D TFT_HSYNC_PULSE_WIDTH=4    ; Typical HSYNC Pulse Width
    -D TFT_HSYNC_BACK_PORCH=43    ; Typical HSYNC Back Porch
    -D TFT_VSYNC_POLARITY=0
    -D TFT_VSYNC_FRONT_PORCH=64   ; Maximum VSYNC Front Porch
    -D TFT_VSYNC_PULSE_WIDTH=4    ; Typical VSYNC Pulse Width
    -D TFT_VSYNC_BACK_PORCH=12    ; Typical VSYNC Back Porch
    -D TFT_PCLK_ACTIVE_NEG=1
    -D TFT_PREFER_SPEED=9000000   ; Typical DCLK Frequency
    -D TFT_AUTO_FLUSH=1
    ; Touch Settings
    -D TOUCH_DRIVER=0x911
    -D TOUCH_SCL=20
    -D TOUCH_SDA=19
    -D TOUCH_IRQ=-1
    -D TOUCH_RST=38
    -D I2C_TOUCH_ADDRESS=0x14 ; or 0x5D
    -D I2C_TOUCH_FREQUENCY=400000
lib_deps =
    ${sunton-esp32-s3-tft.lib_deps}
    ${goodix.lib_deps}


[env:sunton-8048s043c_16MB]
extends = sunton-esp32-s3-tft, flash_16mb

build_flags =
    -D HASP_MODEL="Sunton ESP32-8048S043C"
    ${sunton-esp32-s3-tft.build_flags}
    ${sunton-tft-common-pins.build_flags}
    ; Bus Settings
    -D LV_VDB_SIZE=76800 ; 10% of full framebuffer
    -D TFT_WIDTH=800
    -D TFT_HEIGHT=480
    ; Panel Settings
    -D TFT_HSYNC_POLARITY=0
    -D TFT_HSYNC_FRONT_PORCH=48   ; Maximum HSYNC Front Porch
    -D TFT_HSYNC_PULSE_WIDTH=4    ; Typical HSYNC Pulse Width
    -D TFT_HSYNC_BACK_PORCH=8     ; Typical HSYNC Back Porch
    -D TFT_VSYNC_POLARITY=0
    -D TFT_VSYNC_FRONT_PORCH=12   ; Maximum VSYNC Front Porch
    -D TFT_VSYNC_PULSE_WIDTH=4    ; Typical VSYNC Pulse Width
    -D TFT_VSYNC_BACK_PORCH=8     ; Typical VSYNC Back Porch
    -D TFT_PCLK_ACTIVE_NEG=1
    -D TFT_PREFER_SPEED=14000000  ; 1/2 of Typical DCLK Frequency
    -D TFT_AUTO_FLUSH=1
    ; Touch Settings
    -D TOUCH_WIDTH=480
    -D TOUCH_HEIGHT=272
    -D TOUCH_DRIVER=0x911
    -D TOUCH_SCL=20
    -D TOUCH_SDA=19
    -D TOUCH_IRQ=-1
    -D TOUCH_RST=38
    -D I2C_TOUCH_ADDRESS=0x14 ; or 0x5D
    -D I2C_TOUCH_FREQUENCY=400000
lib_deps =
    ${sunton-esp32-s3-tft.lib_deps}
    ${goodix.lib_deps}


[env:sunton-8048s050c_16MB]
extends = sunton-esp32-s3-tft, flash_16mb

build_flags =
    -D HASP_MODEL="Sunton ESP32-8048S050C"
    ${sunton-esp32-s3-tft.build_flags}
    ${sunton-tft-common-pins.build_flags}
    ; Bus Settings
    -D LV_VDB_SIZE=76800 ; 10% of full framebuffer
    -D TFT_WIDTH=800
    -D TFT_HEIGHT=480
    ; Panel Settings
    -D TFT_HSYNC_POLARITY=0
    -D TFT_HSYNC_FRONT_PORCH=48   ; Maximum HSYNC Front Porch
    -D TFT_HSYNC_PULSE_WIDTH=4    ; Typical HSYNC Pulse Width
    -D TFT_HSYNC_BACK_PORCH=8     ; Typical HSYNC Back Porch
    -D TFT_VSYNC_POLARITY=0
    -D TFT_VSYNC_FRONT_PORCH=12   ; Maximum VSYNC Front Porch
    -D TFT_VSYNC_PULSE_WIDTH=4    ; Typical VSYNC Pulse Width
    -D TFT_VSYNC_BACK_PORCH=8     ; Typical VSYNC Back Porch
    -D TFT_PCLK_ACTIVE_NEG=1
    -D TFT_PREFER_SPEED=14000000  ; 1/2 of Typical DCLK Frequency
    -D TFT_AUTO_FLUSH=1
    ; Touch Settings
    -D TOUCH_WIDTH=800
    -D TOUCH_HEIGHT=480
    -D TOUCH_DRIVER=0x911
    -D TOUCH_SCL=20
    -D TOUCH_SDA=19
    -D TOUCH_IRQ=-1
    -D TOUCH_RST=38
    -D I2C_TOUCH_ADDRESS=0x14 ; or 0x5D
    -D I2C_TOUCH_FREQUENCY=400000
lib_deps =
    ${sunton-esp32-s3-tft.lib_deps}
    ${goodix.lib_deps}
    

[env:sunton-8048s070c_16MB]
extends = sunton-esp32-s3-tft, flash_16mb

build_flags =
    -D HASP_MODEL="Sunton ESP32-8048S070C"
    ${sunton-esp32-s3-tft.build_flags}
    -D LV_VDB_SIZE=76800 ; 10% of full framebuffer
    -D TFT_WIDTH=800
    -D TFT_HEIGHT=480
    ; Bus Settings
    -D TFT_DE=41
    -D TFT_VSYNC=40
    -D TFT_HSYNC=39
    -D TFT_PCLK=42
    -D TFT_R0=14
    -D TFT_R1=21
    -D TFT_R2=47
    -D TFT_R3=48
    -D TFT_R4=45
    -D TFT_G0=9
    -D TFT_G1=46
    -D TFT_G2=3
    -D TFT_G3=8
    -D TFT_G4=16
    -D TFT_G5=1
    -D TFT_B0=15
    -D TFT_B1=7
    -D TFT_B2=6
    -D TFT_B3=5
    -D TFT_B4=4
    ; Panel Settings
    -D TFT_HSYNC_POLARITY=0
    -D TFT_HSYNC_FRONT_PORCH=8  ; Maximum HSYNC Front Porch / 8 GOOD
    -D TFT_HSYNC_PULSE_WIDTH=10   ; Typical HSYNC Pulse Width / 10 GOOD
    -D TFT_HSYNC_BACK_PORCH=43    ; Typical HSYNC Back Porch / 43 GOOD
    -D TFT_VSYNC_POLARITY=0
    -D TFT_VSYNC_FRONT_PORCH=8   ; Maximum VSYNC Front Porch / 8 GOOD
    -D TFT_VSYNC_PULSE_WIDTH=8   ; Typical VSYNC Pulse Width / 8 GOOD
    -D TFT_VSYNC_BACK_PORCH=12    ; Typical VSYNC Back Porch / 12 GOOD
    -D TFT_PCLK_ACTIVE_NEG=1
    -D TFT_PREFER_SPEED=14500000  ; 1/2 of Typical DCLK Frequency / 12000000 GOOD
    -D TFT_AUTO_FLUSH=1
    ; Touch Settings
    -D TOUCH_WIDTH=800
    -D TOUCH_HEIGHT=480
    -D TOUCH_DRIVER=0x911
    -D TOUCH_SCL=20
    -D TOUCH_SDA=19
    -D TOUCH_IRQ=-1
    -D TOUCH_RST=38
    -D I2C_TOUCH_ADDRESS=0x5d ; or 0x14
    -D I2C_TOUCH_FREQUENCY=400000
lib_deps =
    ${sunton-esp32-s3-tft.lib_deps}
    ${goodix.lib_deps}
