From 427dda16d3763b37542754a7940de828def6b79b Mon Sep 17 00:00:00 2001
From: terratec <989319+terratec@users.noreply.github.com>
Date: Sun, 22 Dec 2024 15:16:50 +0100
Subject: [PATCH 1/3] Add config for display timeout
---
.../axe-os/src/app/components/edit/edit.component.html | 9 +++++++++
.../axe-os/src/app/components/edit/edit.component.ts | 1 +
.../src/app/components/settings/settings.component.ts | 1 +
.../axe-os/src/app/services/system.service.ts | 1 +
main/http_server/axe-os/src/models/ISystemInfo.ts | 1 +
main/http_server/http_server.c | 4 ++++
main/nvs_config.h | 1 +
7 files changed, 18 insertions(+)
diff --git a/main/http_server/axe-os/src/app/components/edit/edit.component.html b/main/http_server/axe-os/src/app/components/edit/edit.component.html
index 75c394d..ae6e01d 100644
--- a/main/http_server/axe-os/src/app/components/edit/edit.component.html
+++ b/main/http_server/axe-os/src/app/components/edit/edit.component.html
@@ -49,6 +49,15 @@
+
+
+
+
+
+
+
+
valueint);
}
+ if ((item = cJSON_GetObjectItem(root, "displayTimeout")) != NULL) {
+ nvs_config_set_u16(NVS_CONFIG_DISPLAY_TIMEOUT, item->valueint);
+ }
if ((item = cJSON_GetObjectItem(root, "invertfanpolarity")) != NULL) {
nvs_config_set_u16(NVS_CONFIG_INVERT_FAN_POLARITY, item->valueint);
}
@@ -595,6 +598,7 @@ static esp_err_t GET_system_info(httpd_req_t * req)
cJSON_AddNumberToObject(root, "overheat_mode", nvs_config_get_u16(NVS_CONFIG_OVERHEAT_MODE, 0));
cJSON_AddNumberToObject(root, "overclockEnabled", nvs_config_get_u16(NVS_CONFIG_OVERCLOCK_ENABLED, 0));
cJSON_AddNumberToObject(root, "invertscreen", nvs_config_get_u16(NVS_CONFIG_INVERT_SCREEN, 0));
+ cJSON_AddNumberToObject(root, "displayTimeout", nvs_config_get_u16(NVS_CONFIG_DISPLAY_TIMEOUT, 0));
cJSON_AddNumberToObject(root, "invertfanpolarity", nvs_config_get_u16(NVS_CONFIG_INVERT_FAN_POLARITY, 1));
cJSON_AddNumberToObject(root, "autofanspeed", nvs_config_get_u16(NVS_CONFIG_AUTO_FAN_SPEED, 1));
diff --git a/main/nvs_config.h b/main/nvs_config.h
index 50e0497..e8a2e93 100644
--- a/main/nvs_config.h
+++ b/main/nvs_config.h
@@ -23,6 +23,7 @@
#define NVS_CONFIG_BOARD_VERSION "boardversion"
#define NVS_CONFIG_FLIP_SCREEN "flipscreen"
#define NVS_CONFIG_INVERT_SCREEN "invertscreen"
+#define NVS_CONFIG_DISPLAY_TIMEOUT "displayTimeout"
#define NVS_CONFIG_INVERT_FAN_POLARITY "invertfanpol"
#define NVS_CONFIG_AUTO_FAN_SPEED "autofanspeed"
#define NVS_CONFIG_FAN_SPEED "fanspeed"
From e48e9e6bb6f8a0084cd327427b4ead7113304743 Mon Sep 17 00:00:00 2001
From: terratec <989319+terratec@users.noreply.github.com>
Date: Sun, 22 Dec 2024 16:48:37 +0100
Subject: [PATCH 2/3] Display timeout logic
---
main/display.c | 31 +++++++++++++++++++++++++++++--
main/display.h | 2 ++
main/screen.c | 13 +++++++++++++
3 files changed, 44 insertions(+), 2 deletions(-)
diff --git a/main/display.c b/main/display.c
index 1efdd94..bc91ff3 100644
--- a/main/display.c
+++ b/main/display.c
@@ -26,11 +26,17 @@
static const char * TAG = "display";
+static esp_lcd_panel_handle_t panel_handle = NULL;
+static bool display_state_on = false;
+
static lv_theme_t theme;
static lv_style_t scr_style;
extern const lv_font_t lv_font_portfolio_6x8;
+esp_err_t display_on(void);
+esp_err_t display_off(void);
+
static void theme_apply(lv_theme_t *theme, lv_obj_t *obj) {
if (lv_obj_get_parent(obj) == NULL) {
lv_obj_add_style(obj, &scr_style, LV_PART_MAIN);
@@ -61,7 +67,6 @@ esp_err_t display_init(void * pvParameters)
ESP_RETURN_ON_ERROR(esp_lcd_new_panel_io_i2c(i2c_master_bus_handle, &io_config, &io_handle), TAG, "Failed to initialise i2c panel bus");
ESP_LOGI(TAG, "Install SSD1306 panel driver");
- esp_lcd_panel_handle_t panel_handle = NULL;
esp_lcd_panel_dev_config_t panel_config = {
.bits_per_pixel = 1,
.reset_gpio_num = -1,
@@ -123,7 +128,10 @@ esp_err_t display_init(void * pvParameters)
}
// Only turn on the screen when it has been cleared
- ESP_RETURN_ON_ERROR(esp_lcd_panel_disp_on_off(panel_handle, true), TAG, "Panel display on failed");
+ esp_err_t esp_err = display_on();
+ if (ESP_OK != esp_err) {
+ return esp_err;
+ }
GLOBAL_STATE->SYSTEM_MODULE.is_screen_active = true;
} else {
@@ -132,3 +140,22 @@ esp_err_t display_init(void * pvParameters)
return ESP_OK;
}
+
+esp_err_t display_on(void)
+{
+ if (!display_state_on && (NULL != panel_handle)) {
+ ESP_RETURN_ON_ERROR(esp_lcd_panel_disp_on_off(panel_handle, true), TAG, "Panel display on failed");
+ display_state_on = true;
+ }
+
+ return ESP_OK;
+}
+esp_err_t display_off(void)
+{
+ if (display_state_on && (NULL != panel_handle)) {
+ ESP_RETURN_ON_ERROR(esp_lcd_panel_disp_on_off(panel_handle, false), TAG, "Panel display off failed");
+ display_state_on = false;
+ }
+
+ return ESP_OK;
+}
diff --git a/main/display.h b/main/display.h
index 9cdc5e9..79656ad 100644
--- a/main/display.h
+++ b/main/display.h
@@ -2,5 +2,7 @@
#define DISPLAY_H_
esp_err_t display_init(void * pvParameters);
+esp_err_t display_on(void);
+esp_err_t display_off(void);
#endif /* DISPLAY_H_ */
diff --git a/main/screen.c b/main/screen.c
index af20621..922d781 100644
--- a/main/screen.c
+++ b/main/screen.c
@@ -6,6 +6,8 @@
#include "esp_lvgl_port.h"
#include "global_state.h"
#include "screen.h"
+#include "nvs_config.h"
+#include "display.h"
// static const char * TAG = "screen";
@@ -311,6 +313,7 @@ static void screen_update_cb(lv_timer_t * timer)
if (LOGO_DELAY_COUNT > current_screen_counter) {
return;
}
+ lv_display_trigger_activity(NULL);
screen_show(SCR_CAROUSEL_START);
return;
}
@@ -347,6 +350,7 @@ static void screen_update_cb(lv_timer_t * timer)
lv_label_set_text_fmt(difficulty_label, "Best: %s !!! BLOCK FOUND !!!", module->best_session_diff_string);
screen_show(SCR_STATS);
+ lv_display_trigger_activity(NULL);
} else {
if (current_difficulty != module->best_session_nonce_diff) {
lv_label_set_text_fmt(difficulty_label, "Best: %s/%s", module->best_session_diff_string, module->best_diff_string);
@@ -362,6 +366,15 @@ static void screen_update_cb(lv_timer_t * timer)
current_difficulty = module->best_session_nonce_diff;
current_chip_temp = power_management->chip_temp_avg;
+ const uint32_t display_inactive_time = lv_display_get_inactive_time(NULL);
+ const uint16_t display_timeout_config = nvs_config_get_u16(NVS_CONFIG_DISPLAY_TIMEOUT, 0) * 60 * 1000;
+
+ if ((0 != display_timeout_config) && (display_inactive_time > display_timeout_config)) {
+ display_off();
+ } else {
+ display_on();
+ }
+
if (CAROUSEL_DELAY_COUNT > current_screen_counter || found_block) {
return;
}
From 1820153c41bbd0cd6471f42e677b165f9e2080ef Mon Sep 17 00:00:00 2001
From: terratec <989319+terratec@users.noreply.github.com>
Date: Sun, 16 Feb 2025 19:17:19 +0100
Subject: [PATCH 3/3] Move lv_display_trigger_activity into screen_show
---
main/screen.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/main/screen.c b/main/screen.c
index 922d781..718b211 100644
--- a/main/screen.c
+++ b/main/screen.c
@@ -229,6 +229,10 @@ static lv_obj_t * create_scr_stats() {
static void screen_show(screen_t screen)
{
+ if (SCR_CAROUSEL_START > current_screen) {
+ lv_display_trigger_activity(NULL);
+ }
+
if (current_screen != screen) {
lv_obj_t * scr = screens[screen];
@@ -313,7 +317,6 @@ static void screen_update_cb(lv_timer_t * timer)
if (LOGO_DELAY_COUNT > current_screen_counter) {
return;
}
- lv_display_trigger_activity(NULL);
screen_show(SCR_CAROUSEL_START);
return;
}