Improve idle checking

This commit is contained in:
fvanroie 2020-12-07 15:25:30 +01:00
parent 2855dc7b38
commit aba681e351
4 changed files with 26 additions and 16 deletions

View File

@ -241,18 +241,31 @@ void dispatch_text_line(const char * cmnd)
}
// send idle state to the client
void dispatch_output_idle_state(const char * state)
void dispatch_output_idle_state(uint8_t state)
{
char buffer[6];
switch(state) {
case HASP_SLEEP_LONG:
memcpy_P(buffer, PSTR("LONG"), sizeof(buffer));
break;
case HASP_SLEEP_SHORT:
memcpy_P(buffer, PSTR("SHORT"), sizeof(buffer));
break;
default:
memcpy_P(buffer, PSTR("OFF"), sizeof(buffer));
}
#if !defined(HASP_USE_MQTT) && !defined(HASP_USE_TASMOTA_SLAVE)
Log.notice(TAG_MSGR, F("idle = %s"), state);
Log.notice(TAG_MSGR, F("idle = %s"), buffer);
#else
#if HASP_USE_MQTT > 0
mqtt_send_state(F("idle"), state);
mqtt_send_state(F("idle"), buffer);
#endif
#if HASP_USE_TASMOTA_SLAVE > 0
slave_send_state(F("idle"), state);
slave_send_state(F("idle"), buffer);
#endif
#endif

View File

@ -31,7 +31,7 @@ void dispatch_backlight(const char * payload);
void dispatch_web_update(const char * espOtaUrl);
void dispatch_reboot(bool saveConfig);
void dispatch_output_idle_state(const char * state);
void dispatch_output_idle_state(uint8_t state);
void dispatch_output_statusupdate(void);
void dispatch_output_current_page();

View File

@ -79,27 +79,23 @@ static Ticker tick; /* timer for interrupt handler */
static Ticker tick(lv_tick_handler, LVGL_TICK_PERIOD); // guiTickPeriod);
#endif
bool guiCheckSleep()
bool IRAM_ATTR guiCheckSleep()
{
char idle_state[6];
uint32_t idle = lv_disp_get_inactive_time(NULL);
if(idle >= (guiSleepTime1 + guiSleepTime2) * 1000U) {
if(guiSleeping != HASP_SLEEP_SHORT) {
snprintf_P(idle_state, sizeof(idle_state), PSTR("LONG"));
dispatch_output_idle_state(idle_state);
if(guiSleeping != HASP_SLEEP_LONG) {
dispatch_output_idle_state(HASP_SLEEP_LONG);
guiSleeping = HASP_SLEEP_LONG;
}
} else if(idle >= guiSleepTime1 * 1000U) {
if(guiSleeping != HASP_SLEEP_SHORT) {
snprintf_P(idle_state, sizeof(idle_state), PSTR("SHORT"));
dispatch_output_idle_state(idle_state);
dispatch_output_idle_state(HASP_SLEEP_SHORT);
guiSleeping = HASP_SLEEP_SHORT;
}
} else {
if(guiSleeping != HASP_SLEEP_OFF) {
snprintf_P(idle_state, sizeof(idle_state), PSTR("OFF"));
dispatch_output_idle_state(idle_state);
dispatch_output_idle_state(HASP_SLEEP_OFF);
guiSleeping = HASP_SLEEP_OFF;
}
}
@ -600,7 +596,8 @@ void guiSetup()
lv_bar_set_value(bar, 10, LV_ANIM_OFF);
lv_obj_set_size(bar, 200, 15);
lv_obj_align(bar, lv_layer_sys(), LV_ALIGN_CENTER, 0, -10);
lv_obj_set_user_data(bar, 10);
lv_obj_user_data_t udata = (lv_obj_user_data_t){10, 1, 0};
lv_obj_set_user_data(bar, udata);
lv_obj_set_style_local_value_color(bar, LV_BAR_PART_BG, LV_STATE_DEFAULT, LV_COLOR_WHITE);
lv_obj_set_style_local_value_align(bar, LV_BAR_PART_BG, LV_STATE_DEFAULT, LV_ALIGN_CENTER);
lv_obj_set_style_local_value_ofs_y(bar, LV_BAR_PART_BG, LV_STATE_DEFAULT, 20);

View File

@ -28,7 +28,7 @@ void guiSetDim(int8_t level);
int8_t guiGetDim(void);
void guiSetBacklight(bool lighton);
bool guiGetBacklight();
bool guiCheckSleep();
bool IRAM_ATTR guiCheckSleep();
/* ===== Read/Write Configuration ===== */
bool guiGetConfig(const JsonObject & settings);