diff --git a/include/epd-spi/panel/lcd_zjy350c4001.h b/include/epd-spi/panel/lcd_zjy350c4001.h index 09b9585..bbb0ab1 100644 --- a/include/epd-spi/panel/lcd_zjy350c4001.h +++ b/include/epd-spi/panel/lcd_zjy350c4001.h @@ -31,8 +31,7 @@ typedef struct { } lcd_zjy350c4001_t; epd_ret_t lcd_zjy350c4001_init(lcd_zjy350c4001_t *lcd); -epd_ret_t lcd_zjy350c4001_upload(lcd_zjy350c4001_t *lcd, uint8_t *data, uint16_t x_start, uint16_t x_end, - uint16_t y_start, uint16_t y_end); +epd_ret_t lcd_zjy350c4001_upload(lcd_zjy350c4001_t *lcd, uint8_t *data, epd_coord_t *coord); epd_ret_t lcd_zjy350c4001_sleep(lcd_zjy350c4001_t *lcd, uint8_t sleep_mode); epd_ret_t lcd_zjy350c4001_display(lcd_zjy350c4001_t *lcd, uint8_t display_on); epd_ret_t lcd_zjy350c4001_config(lcd_zjy350c4001_t *lcd, LCD_ZJY350C4001_config_t *config); diff --git a/src/panel/lcd_zjy350c4001.c b/src/panel/lcd_zjy350c4001.c index b390d66..47fe2bf 100644 --- a/src/panel/lcd_zjy350c4001.c +++ b/src/panel/lcd_zjy350c4001.c @@ -4,7 +4,7 @@ #include "epd_private.h" -static uint8_t LCD_ZJY350C4001_init_seq_zjy_480_320[] = { +static uint8_t lcd_zjy350c4001_init_seq_zjy_480_320[] = { 0x01, 0xF0, 0xC3, // Enable command part 1 0x01, 0xF0, 0x96, // Enable command part 2 0x08, 0xE8, 0x40, 0x82, 0x07, 0x18, 0x27, 0x0A, 0xB6, 0x33, // DOCA @@ -16,21 +16,7 @@ static uint8_t LCD_ZJY350C4001_init_seq_zjy_480_320[] = { 0x01, 0xF0, 0x69, // Disable command part 2 }; -epd_ret_t _LCD_ZJY350C4001_init_seq(lcd_zjy350c4001_t *lcd) { - uint16_t i = 0; - - while (i < sizeof(LCD_ZJY350C4001_init_seq_zjy_480_320)) { - if (lcd->cb.write_command_cb(lcd->user_data, &LCD_ZJY350C4001_init_seq_zjy_480_320[i + 1], - LCD_ZJY350C4001_init_seq_zjy_480_320[i] + 1) != EPD_OK) { - return EPD_FAIL; - }; - i += LCD_ZJY350C4001_init_seq_zjy_480_320[i] + 2; - } - - return EPD_OK; -} - -epd_ret_t _LCD_ZJY350C4001_window(lcd_zjy350c4001_t *lcd, uint16_t x_start, uint16_t x_end, uint16_t y_start, uint16_t y_end) { +epd_ret_t lcd_zjy350c4001_window(lcd_zjy350c4001_t *lcd, epd_coord_t *coord) { uint16_t real_x_start, real_x_end, real_y_start, real_y_end; uint16_t x_offset, y_offset; @@ -56,10 +42,10 @@ epd_ret_t _LCD_ZJY350C4001_window(lcd_zjy350c4001_t *lcd, uint16_t x_start, uint y_offset = 0; } - real_x_start = x_start + x_offset; - real_x_end = x_end + x_offset; - real_y_start = y_start + y_offset; - real_y_end = y_end + y_offset; + real_x_start = coord->x_start + x_offset; + real_x_end = coord->x_end + x_offset; + real_y_start = coord->y_start + y_offset; + real_y_end = coord->y_end + y_offset; uint8_t tx_buf[5] = {0x2A, ((uint8_t)(real_x_start >> 0x08U) & 0xFFU), (real_x_start & 0xFFU), ((uint8_t)(real_x_end >> 0x08U) & 0xFFU), (real_x_end & 0xFFU)}; @@ -81,11 +67,11 @@ epd_ret_t _LCD_ZJY350C4001_window(lcd_zjy350c4001_t *lcd, uint16_t x_start, uint return EPD_OK; } -epd_ret_t _LCD_ZJY350C4001_reset(lcd_zjy350c4001_t *lcd) { return lcd->cb.reset_cb(lcd->user_data); } +epd_ret_t lcd_zjy350c4001_reset(lcd_zjy350c4001_t *lcd) { return lcd->cb.reset_cb(lcd->user_data); } epd_ret_t lcd_zjy350c4001_init(lcd_zjy350c4001_t *lcd) { - if (_LCD_ZJY350C4001_reset(lcd) != EPD_OK) return EPD_FAIL; - if (_LCD_ZJY350C4001_init_seq(lcd) != EPD_OK) return EPD_FAIL; + if (lcd_zjy350c4001_reset(lcd) != EPD_OK) return EPD_FAIL; + if(epd_common_execute_sequence(&lcd->cb, lcd->user_data, lcd_zjy350c4001_init_seq_zjy_480_320, sizeof(lcd_zjy350c4001_init_seq_zjy_480_320)) != EPD_OK) return EPD_FAIL; if (lcd_zjy350c4001_config(lcd, &lcd->config) != EPD_OK) return EPD_FAIL; if (lcd_zjy350c4001_sleep(lcd, 0) != EPD_OK) return EPD_FAIL; if (lcd_zjy350c4001_display(lcd, 1) != EPD_OK) return EPD_FAIL; @@ -93,9 +79,8 @@ epd_ret_t lcd_zjy350c4001_init(lcd_zjy350c4001_t *lcd) { return EPD_OK; } -epd_ret_t lcd_zjy350c4001_upload(lcd_zjy350c4001_t *lcd, uint8_t *data, uint16_t x_start, uint16_t x_end, - uint16_t y_start, uint16_t y_end) { - uint32_t pixel_count = (y_end - y_start + 1) * (x_end - x_start + 1); +epd_ret_t lcd_zjy350c4001_upload(lcd_zjy350c4001_t *lcd, uint8_t *data, epd_coord_t *coord) { + uint32_t pixel_count = (coord->y_end - coord->y_start + 1) * (coord->x_end - coord->x_start + 1); uint32_t data_len = 0; @@ -116,7 +101,7 @@ epd_ret_t lcd_zjy350c4001_upload(lcd_zjy350c4001_t *lcd, uint8_t *data, uint16_t } // Set cursor - if (_LCD_ZJY350C4001_window(lcd, x_start, x_end, y_start, y_end) != EPD_OK) { + if (lcd_zjy350c4001_window(lcd, coord) != EPD_OK) { return EPD_FAIL; }