Files
Watch-OS/hal/esp32/displays/viewe.hpp
Kazimierz Ciołek f17984820f Initialize git
2026-02-25 01:56:31 +01:00

124 lines
2.6 KiB
C++

#pragma once
#include <Arduino.h>
#include "Arduino_GFX_Library.h"
#ifdef ESPS3_2_06
#include "TouchDrvFT6X36.hpp"
#else
#include "TouchDrvCSTXXX.hpp"
#endif
#include "pins.h"
#define TFT_BLACK 0x00000
class DisplayWrapper
{
public:
Arduino_GFX *gfx;
#ifdef ESPS3_2_06
TouchDrvFT6X36 touch;
#else
TouchDrvCSTXXX touch;
#endif
DisplayWrapper()
{
static Arduino_DataBus *bus = new Arduino_ESP32QSPI(
LCD_CS /* CS */, LCD_SCK /* SCK */, LCD_SD0 /* SDIO0 */, LCD_SD1 /* SDIO1 */,
LCD_SD2 /* SDIO2 */, LCD_SD3 /* SDIO3 */);
gfx = new Arduino_CO5300(
bus,
LCD_RST /* RST */,
0 /* rotation */,
false /* IPS */,
SCREEN_WIDTH,
SCREEN_HEIGHT,
#ifdef ESPS3_2_06
22 /* col_offset1 */,
#else
6 /* col_offset1 */,
#endif
0 /* row_offset1 */,
0 /* col_offset2 */,
0 /* row_offset2 */
);
}
bool init(void)
{
#ifdef LCD_EN
pinMode(LCD_EN, OUTPUT);
digitalWrite(LCD_EN, HIGH);
#endif
bool state = gfx->begin();
touch.setPins(TOUCH_RST, TOUCH_IRQ);
#if defined(ESPS3_1_75)
touch.begin(Wire, 0x5A, TOUCH_SDA, TOUCH_SCL);
touch.setMaxCoordinates(466, 466);
touch.setMirrorXY(true, true);
#elif defined(ESPS3_2_06)
touch.begin(Wire, 0x38, TOUCH_SDA, TOUCH_SCL);
#else
touch.begin(Wire, 0x15, TOUCH_SDA, TOUCH_SCL);
#endif
return state;
}
void initDMA(void) {}
void fillScreen(uint16_t color)
{
gfx->fillScreen(color);
}
void setRotation(uint8_t rotation)
{
// gfx->setRotation(rotation); // Not supported in CO5300
}
void pushImage(int32_t x, int32_t y, int32_t w, int32_t h, uint16_t *data)
{
gfx->draw16bitBeRGBBitmap(x, y, data, w, h);
}
void pushImageDMA(int32_t x, int32_t y, int32_t w, int32_t h, uint16_t *data)
{
gfx->draw16bitBeRGBBitmap(x, y, data, w, h);
}
void startWrite(void) {}
uint32_t getStartCount(void)
{
return 0;
}
void endWrite(void) {}
void setBrightness(uint8_t brightness)
{
((Arduino_CO5300 *)gfx)->setBrightness(brightness);
}
void writePixel(int32_t x, int32_t y, const uint16_t color)
{
gfx->writePixel(x, y, color);
}
bool getTouch(uint16_t *x, uint16_t *y)
{
int16_t x_arr[5], y_arr[5];
uint8_t touched = touch.getPoint(x_arr, y_arr, touch.getSupportTouchPoint());
*x = x_arr[0];
*y = y_arr[0];
return touched;
}
};
DisplayWrapper tft;