epd-spi/include/epd-spi/driver/lcd_st7789.h

50 lines
1.3 KiB
C

#ifndef LCD_ST7789_H
#define LCD_ST7789_H
#include "epd-spi/epd_common.h"
typedef enum {
LCD_ST7789_DIR_0 = 0x08U,
LCD_ST7789_DIR_90 = 0x68U,
LCD_ST7789_DIR_180 = 0xC8U,
LCD_ST7789_DIR_270 = 0xA8U,
} lcd_st7789_direction_t;
typedef enum {
LCD_ST7789_RGB444 = 3,
LCD_ST7789_RGB565 = 5,
LCD_ST7789_RGB666 = 6,
LCD_ST7789_RGB888 = 7,
} lcd_st7789_pixel_format_t;
typedef struct {
uint8_t *init_struct;
uint32_t init_struct_length;
uint16_t ram_offset_x;
uint16_t ram_offset_y;
uint16_t size_x;
uint16_t size_y;
bool inversion;
bool bgr_filter;
} st7789_panel_config_t;
typedef struct {
void *user_data;
epd_cb_t cb;
const st7789_panel_config_t *panel_config;
lcd_st7789_direction_t direction;
lcd_st7789_pixel_format_t pixel_format;
} lcd_st7789_t;
epd_ret_t lcd_st7789_init(lcd_st7789_t *lcd, const st7789_panel_config_t *config);
epd_ret_t lcd_st7789_load(lcd_st7789_t *lcd, epd_coord_t *coord, const uint8_t *data);
epd_ret_t lcd_st7789_set_pixel_format(lcd_st7789_t *lcd, lcd_st7789_pixel_format_t format);
epd_ret_t lcd_st7789_set_direction(lcd_st7789_t *lcd, lcd_st7789_direction_t direction);
epd_ret_t lcd_st7789_set_inversion(lcd_st7789_t *lcd, bool invert);
#endif // LCD_ST7789_H