PersonalVotingMachine/extended-setup/main/impl/modules/ScreenModule.cpp
2020-12-22 14:30:09 +02:00

78 lines
1.5 KiB
C++

/**
* @file ScreenModule.cpp
* @brief ScreenModule implementation file
* */
#include "module.h"
#include "freertos/timers.h"
#include "esp_sleep.h"
#include "lvgl/lvgl.h"
#include "drv/disp_spi.h"
#include "drv/ili9341.h"
static void lv_task_timercb(void *timer){
/* Periodically call this function.
* The timing is not critical but should be between 1..10 ms */
lv_task_handler();
}
ScreenModule::ScreenModule(){};
void ScreenModule::setSCL(gpio_num_t scl_pin){
this->SCL_PIN = scl_pin;
}
void ScreenModule::setSDA(gpio_num_t sda_pin){
this->SDA_PIN = sda_pin;
}
void ScreenModule::setRST(gpio_num_t rst_pin){
this->RESET_PIN = rst_pin;
}
esp_err_t ScreenModule::init(){
lv_init();
disp_spi_init();
ili9341_init();
static lv_color_t buf1[DISP_BUF_SIZE];
static lv_color_t buf2[DISP_BUF_SIZE];
static lv_disp_buf_t disp_buf;
lv_disp_buf_init(&disp_buf, buf1, buf2, DISP_BUF_SIZE);
lv_disp_drv_t disp_drv;
lv_disp_drv_init(&disp_drv);
disp_drv.flush_cb = ili9341_flush;
disp_drv.buffer = &disp_buf;
disp_drv.rotated = 1 ;
lv_disp_drv_register(&disp_drv);
esp_timer_create_args_t lv_task_timer_conf = {
.callback = lv_task_timercb,
.name = "lv_task_timer"
};
esp_timer_handle_t lv_task_timer = NULL;
esp_timer_create(&lv_task_timer_conf, &lv_task_timer);
esp_timer_start_periodic(lv_task_timer, 5 * 1000U);
return ESP_OK;
}
esp_err_t ScreenModule::deinit(){
return ESP_OK;
}
ScreenModule& ScreenModule::Instance(){
static ScreenModule instance;
return instance;
}