;***************************************************;
;        Smart Panlee ZX3D95CE01S with TFT 3.95"    ;
;               - Custom esp32-s3 board             ;
;               - gc9503v TFT                       ;
;               - ft6336 touch controller           ;
;***************************************************;

[panlee-zw3d95ce01s]
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}
    ;-DARDUINO_USB_CDC_ON_BOOT
	;-DUSE_USB_CDC_CONSOLE

;region -- ArduinoGFX build options ------------------------
    -D HASP_USE_ARDUINOGFX=1
    -D GC9503V_DRIVER=1
    -D TOUCH_DRIVER=0x6336
    -D TFT_WIDTH=480
    -D TFT_HEIGHT=480
    -D TFT_HSYNC_POLARITY=1
    -D TFT_VSYNC_POLARITY=1
    ;-D TFT_PCLK_ACTIVE_NEG=1
    ;-D TFT_PREFER_SPEED=9000000
    -D TFT_AUTO_FLUSH=1
    ; Touch Setttings
    -D I2C_TOUCH_FREQUENCY=400000
    -D I2C_TOUCH_ADDRESS=0x38
    -D I2C_TOUCH_PORT=1
;endregion

lib_deps =
    ${arduino_esp32s3_v2.lib_deps}
    ${arduinogfx.lib_deps}
    ${ft6336.lib_deps}


[env:panlee-zw3d95ce01s-ur-4848_16MB]
extends = panlee-zw3d95ce01s, flash_16mb
build_flags =
    -D HASP_MODEL="ZX3D95CE01S-UR-4848"
    ${panlee-zw3d95ce01s.build_flags}
    -D TOUCH_RST=-1  ; Touch reset GPIO5, multiplexed with LCD reset
    -D TOUCH_SCL=6  ; touch I2C bus clock, multiplexed with external interface
    -D TOUCH_SDA=15 ; Touch I2C bus data, multiplexed with external interface
    -D TOUCH_INT=7  ; Touch interrupt
    -D TFT_RST=5    ; LCD reset, multiplexed with touch reset
    -D TFT_DC=-1
    -D TFT_CS=38    ; LCD SPI bus CS
    -D TFT_SCLK=45  ; LCD SPI bus SCLK
    -D TFT_MOSI=48  ; LCD SPI bus MOSI
    -D TFT_MISO=-1 ; LCD SPI bus MISO
    -D TFT_DE=40    ; LCD RGB interface DE
    -D TFT_VSYNC=41    ; LCD RGB interface VS
    -D TFT_HSYNC=42    ; LCD RGB interface HS
    -D TFT_PCLK=39  ; LCD RGB interface PCLK
    -D TFT_B0=45    ; LCD RGB interface D0
    -D TFT_B1=48    ; LCD RGB interface D1
    -D TFT_B2=47    ; LCD RGB interface D2
    -D TFT_B3=21    ; LCD RGB interface D3
    -D TFT_B4=14    ; LCD RGB interface D4
    -D TFT_G0=13    ; LCD RGB interface D5
    -D TFT_G1=12    ; LCD RGB interface D6
    -D TFT_G2=11    ; LCD RGB interface D7
    -D TFT_G3=10    ; LCD RGB interface D8
    -D TFT_G4=16    ; LCD RGB interface D9
    -D TFT_G5=17   ; LCD RGB interface D10
    -D TFT_R0=18   ; LCD RGB interface D11
    -D TFT_R1=8    ; LCD RGB interface D12
    -D TFT_R2=3    ; LCD RGB interface D13
    -D TFT_R3=46   ; LCD RGB interface D14
    -D TFT_R4=9    ; LCD RGB interface D15
    -D TFT_BCKL=4   ; LCD backlight control, high level enable
    -D TFT_HSYNC_FRONT_PORCH=10
    -D TFT_HSYNC_PULSE_WIDTH=8
    -D TFT_HSYNC_BACK_PORCH=50
    -D TFT_VSYNC_FRONT_PORCH=10
    -D TFT_VSYNC_PULSE_WIDTH=8
    -D TFT_VSYNC_BACK_PORCH=20

[env:panlee-zw3d95ce01s-ar-4848_16MB]
extends = panlee-zw3d95ce01s, flash_16mb
build_flags =
    -D HASP_MODEL="ZX3D95CE01S-AR-4848"
    ${panlee-zw3d95ce01s.build_flags}
    -D TOUCH_SCL=6 ; touch screen IIC, multiplexed with multiple peripherals
    -D TOUCH_SDA=7 ; touch screen IIC, multiplexed with multiple peripherals
    -D TOUCH_INT=-1 ; Missed
    -D TOUCH_RST=-1 ; Missed
    -D TFT_RST=-1 ; RC reset used
    -D TFT_DC=-1
    -D TFT_CS=0 ; LCD SPI bus CS
    -D TFT_SCLK=10 ; LCD SPI bus SCLK
    -D TFT_MOSI=9 ; LCD SPI bus MOSI
    -D TFT_MISO=-1 ; LCD SPI bus MISO
    -D TFT_DE=13 ; LCD RGB interface DE
    -D TFT_VSYNC=12 ; LCD RGB interface VS
    -D TFT_HSYNC=11 ; LCD RGB interface HS
    -D TFT_PCLK=14 ; LCD RGB interface PCLK
    -D TFT_B0=10 ; LCD RGB interface D0
    -D TFT_B1=9 ; LCD RGB interface D1
    -D TFT_B2=40 ; LCD RGB interface D2
    -D TFT_B3=20 ; LCD RGB interface D3
    -D TFT_B4=19 ; LCD RGB interface D4
    -D TFT_G0=41 ; LCD RGB interface D5
    -D TFT_G1=46 ; LCD RGB interface D6
    -D TFT_G2=3 ; LCD RGB interface D7
    -D TFT_G3=42 ; LCD RGB interface D8
    -D TFT_G4=8 ; LCD RGB interface D9
    -D TFT_G5=18 ; LCD RGB interface D10
    -D TFT_R0=2 ; LCD RGB interface D11
    -D TFT_R1=17 ; LCD RGB interface D12
    -D TFT_R2=16 ; LCD RGB interface D13
    -D TFT_R3=1 ; LCD RGB interface D14
    -D TFT_R4=15 ; LCD RGB interface D15
    -D TFT_BCKL=45 ; LCD backlight control, high level enable
    -D TFT_HSYNC_FRONT_PORCH=10
    -D TFT_HSYNC_PULSE_WIDTH=8
    -D TFT_HSYNC_BACK_PORCH=50
    -D TFT_VSYNC_FRONT_PORCH=10
    -D TFT_VSYNC_PULSE_WIDTH=8
    -D TFT_VSYNC_BACK_PORCH=20
    -D I2S_MCLK=38 ; I2S bus MCLK
    -D I2S_SCLK=48 ; I2S bus SCLK
    -D I2S_LRCK=47 ; I2S bus LRCK
    -D I2S_SDO=21 ; I2S bus SDO
    -D I2S_SDI=39 ; I2S bus SDI
    -D I2C_SCL=6 ; I2C bus, used to configure CODEC, multiplexed peripherals
    -D I2C_SDA=7 ; I2C bus, used to configure CODEC, multiplexed peripherals

[env:panlee-zw3d95ce01s-tr-4848_16MB]
extends = panlee-zw3d95ce01s, flash_16mb
build_flags =
    -D HASP_MODEL="ZX3D95CE01S-TR-4848"
    ${panlee-zw3d95ce01s.build_flags}
    -D TOUCH_RST=-1 ; Using RC reset
    -D TOUCH_SCL=6  ; touch I2C bus clock, multiplexed with external interface
    -D TOUCH_SDA=15 ; Touch I2C bus data, multiplexed with external interface
    -D TOUCH_INT=4  ; Touch interrupt
    -D TFT_RST=41   ; LCD autoreset, use RGB_VS (TFT_VSYNC) signal to keep working
    -D TFT_DC=-1
    -D TFT_CS=38    ; LCD SPI bus CS
    -D TFT_SCLK=45  ; LCD SPI bus SCLK
    -D TFT_MOSI=48  ; LCD SPI bus MOSI
    -D TFT_MISO=-1 ; LCD SPI bus MISO
    -D TFT_DE=40    ; LCD RGB interface DE
    -D TFT_VSYNC=41    ; LCD RGB interface VS
    -D TFT_HSYNC=42    ; LCD RGB interface HS
    -D TFT_PCLK=39  ; LCD RGB interface PCLK
    -D TFT_B0=45    ; LCD RGB interface D0
    -D TFT_B1=48    ; LCD RGB interface D1
    -D TFT_B2=47    ; LCD RGB interface D2
    -D TFT_B3=0     ; LCD RGB interface D3
    -D TFT_B4=21    ; LCD RGB interface D4
    -D TFT_G0=14    ; LCD RGB interface D5
    -D TFT_G1=13    ; LCD RGB interface D6
    -D TFT_G2=12    ; LCD RGB interface D7
    -D TFT_G3=11    ; LCD RGB interface D8
    -D TFT_G4=16    ; LCD RGB interface D9
    -D TFT_G5=17   ; LCD RGB interface D10
    -D TFT_R0=18   ; LCD RGB interface D11
    -D TFT_R1=8    ; LCD RGB interface D12
    -D TFT_R2=3    ; LCD RGB interface D13
    -D TFT_R3=46   ; LCD RGB interface D14
    -D TFT_R4=10    ; LCD RGB interface D15
    -D TFT_BCKL=5   ; LCD backlight control, high level enable (datasheet states: 4, schematics states: 5 )
    -D TFT_HSYNC_PULSE_WIDTH=10
    -D TFT_HSYNC_BACK_PORCH=40
    -D TFT_HSYNC_FRONT_PORCH=8
    -D TFT_VSYNC_PULSE_WIDTH=10
    -D TFT_VSYNC_BACK_PORCH=40
    -D TFT_VSYNC_FRONT_PORCH=10
