alienwalker 1 год назад
Родитель
Сommit
71dcaa86b0
3 измененных файлов с 14 добавлено и 2 удалено
  1. 10 2
      components/lcd/luat_lcd.c
  2. 2 0
      components/lcd/luat_lcd.h
  3. 2 0
      components/lcd/luat_lcd_jd9261t.c

+ 10 - 2
components/lcd/luat_lcd.c

@@ -224,7 +224,11 @@ int luat_lcd_sleep(luat_lcd_conf_t* conf) {
     if (conf->pin_pwr != LUAT_GPIO_NONE)
         luat_gpio_set(conf->pin_pwr, Luat_GPIO_LOW);
     luat_rtos_task_sleep(5);
-    lcd_write_cmd_data(conf,conf->opts->sleep_cmd?conf->opts->sleep_cmd:LUAT_LCD_DEFAULT_SLEEP, NULL, 0);
+    if (conf->opts->sleep_ctrl) {
+    	conf->opts->sleep_ctrl(conf, 1);
+    } else {
+    	lcd_write_cmd_data(conf,conf->opts->sleep_cmd?conf->opts->sleep_cmd:LUAT_LCD_DEFAULT_SLEEP, NULL, 0);
+    }
     return 0;
 }
 
@@ -232,7 +236,11 @@ int luat_lcd_wakeup(luat_lcd_conf_t* conf) {
     if (conf->pin_pwr != LUAT_GPIO_NONE)
         luat_gpio_set(conf->pin_pwr, Luat_GPIO_HIGH);
     luat_rtos_task_sleep(5);
-    lcd_write_cmd_data(conf,conf->opts->wakeup_cmd?conf->opts->wakeup_cmd:LUAT_LCD_DEFAULT_WAKEUP, NULL, 0);
+    if (conf->opts->sleep_ctrl) {
+    	conf->opts->sleep_ctrl(conf, 0);
+    } else {
+    	lcd_write_cmd_data(conf,conf->opts->wakeup_cmd?conf->opts->wakeup_cmd:LUAT_LCD_DEFAULT_WAKEUP, NULL, 0);
+    }
     return 0;
 }
 

+ 2 - 0
components/lcd/luat_lcd.h

@@ -128,6 +128,7 @@ typedef struct luat_lcd_opts {
     int (*write_cmd_data)(luat_lcd_conf_t* conf,const uint8_t cmd, const uint8_t *data, uint8_t data_len);
     int (*read_cmd_data)(luat_lcd_conf_t* conf,const uint8_t cmd, const uint8_t *data, uint8_t data_len, uint8_t dummy_bit);
     int (*lcd_draw)(luat_lcd_conf_t* conf, int16_t x1, int16_t y1, int16_t x2, int16_t y2, luat_color_t* color);
+    int (*sleep_ctrl)(luat_lcd_conf_t* conf, uint8_t on_off);
 } luat_lcd_opts_t;
 
 extern luat_lcd_opts_t lcd_opts_gc9106l;
@@ -198,6 +199,7 @@ void luat_lcd_IF_init(luat_lcd_conf_t* conf);
 int luat_lcd_IF_write_cmd_data(luat_lcd_conf_t* conf,const uint8_t cmd, const uint8_t *data, uint8_t data_len);
 int luat_lcd_IF_read_cmd_data(luat_lcd_conf_t* conf,const uint8_t cmd, uint8_t *data, uint8_t data_len, uint8_t dummy_bit);
 int luat_lcd_IF_draw(luat_lcd_conf_t* conf, int16_t x1, int16_t y1, int16_t x2, int16_t y2, luat_color_t* color);
+int luat_lcd_IF_sleep(luat_lcd_conf_t* conf, uint8_t on_off);
 /**
  * @brief luat_lcd_init放到service里跑,避免luat_lcd_init里漫长的delay带来的影响
  * @param conf lcd配置

+ 2 - 0
components/lcd/luat_lcd_jd9261t.c

@@ -43,6 +43,8 @@ static int jd9261t_inited_init(luat_lcd_conf_t* conf)
 
 luat_lcd_opts_t lcd_opts_jd9261t_inited = {
     .name = "jd9261t_inited",
+    .sleep_cmd = 0xff,			//不需要发命令
+    .wakeup_cmd = 0xff,			//不需要发命令
     .init_cmds_len = 0,
     .init_cmds = NULL,
     .direction0 = 0x00,