mirror of
https://github.com/HASwitchPlate/openHASP.git
synced 2025-07-28 13:46:36 +00:00
Update to lvgl 7.6.1
This commit is contained in:
parent
c072e87f7e
commit
9e2795600c
6
esp32_partition_app1300k_spiffs1216k.csv
Normal file
6
esp32_partition_app1300k_spiffs1216k.csv
Normal file
@ -0,0 +1,6 @@
|
||||
# Name, Type, SubType, Offset, Size, Flags
|
||||
nvs, data, nvs, 0x9000, 0x5000,
|
||||
otadata, data, ota, 0xe000, 0x2000,
|
||||
app0, app, ota_0, 0x10000, 0x160000,
|
||||
app1, app, ota_1, 0x170000, 0x160000,
|
||||
spiffs, data, spiffs, 0x2D0000, 0x130000,
|
|
@ -94,7 +94,7 @@
|
||||
#include "hasp_spiffs.h"
|
||||
|
||||
#if defined(ARDUINO_ARCH_ESP32) || defined(ARDUINO_ARCH_ESP8266)
|
||||
//#include "lv_zifont.h"
|
||||
#include "lv_zifont.h"
|
||||
#endif
|
||||
#endif // SPIFFS
|
||||
|
||||
|
@ -78,15 +78,15 @@ static inline bool openFont(File & file, const char * filename)
|
||||
|
||||
file = SPIFFS.open(filename, "r");
|
||||
if(!file) {
|
||||
// Log.error(F("FONT: %sOpening font: %s"), filename);
|
||||
// return false;
|
||||
Log.error(F("FONT: %sOpening font: %s"), filename);
|
||||
return false;
|
||||
}
|
||||
return file;
|
||||
}
|
||||
|
||||
static inline void initCharacterFrame(size_t size)
|
||||
{
|
||||
if(size > lv_mem_get_size(charBitmap_p)) {
|
||||
if(size > _lv_mem_get_size(charBitmap_p)) {
|
||||
if(charBitmap_p) lv_mem_free(charBitmap_p);
|
||||
charBitmap_p = (uint8_t *)lv_mem_alloc(size);
|
||||
}
|
||||
@ -100,14 +100,14 @@ int lv_zifont_font_init(lv_font_t ** font, const char * font_path, uint16_t size
|
||||
if(!*font) {
|
||||
*font = (lv_font_t *)lv_mem_alloc(sizeof(lv_font_t));
|
||||
LV_ASSERT_MEM(*font);
|
||||
lv_memset(*font, 0x00, sizeof(lv_font_t)); // lv_mem_alloc might be dirty
|
||||
memset(*font, 0x00, sizeof(lv_font_t)); // lv_mem_alloc might be dirty
|
||||
}
|
||||
|
||||
lv_font_fmt_zifont_dsc_t * dsc;
|
||||
if(!(*font)->dsc) {
|
||||
dsc = (lv_font_fmt_zifont_dsc_t *)lv_mem_alloc(sizeof(lv_font_fmt_zifont_dsc_t));
|
||||
LV_ASSERT_MEM(dsc);
|
||||
lv_memset(dsc, 0x00, sizeof(lv_font_fmt_zifont_dsc_t)); // lv_mem_alloc might be dirty
|
||||
memset(dsc, 0x00, sizeof(lv_font_fmt_zifont_dsc_t)); // lv_mem_alloc might be dirty
|
||||
} else {
|
||||
dsc = (lv_font_fmt_zifont_dsc_t *)(*font)->dsc;
|
||||
}
|
||||
@ -116,7 +116,7 @@ int lv_zifont_font_init(lv_font_t ** font, const char * font_path, uint16_t size
|
||||
|
||||
/* Initialize Last Glyph DSC */
|
||||
dsc->last_glyph_dsc = (lv_zifont_char_t *)lv_mem_alloc(sizeof(lv_zifont_char_t));
|
||||
lv_memset(dsc->last_glyph_dsc, 0x00, sizeof(lv_zifont_char_t)); // lv_mem_alloc might be dirty
|
||||
memset(dsc->last_glyph_dsc, 0x00, sizeof(lv_zifont_char_t)); // lv_mem_alloc might be dirty
|
||||
|
||||
if(dsc->last_glyph_dsc == NULL) return ZIFONT_ERROR_OUT_OF_MEMORY;
|
||||
dsc->last_glyph_dsc->width = 0;
|
||||
@ -155,8 +155,8 @@ int lv_zifont_font_init(lv_font_t ** font, const char * font_path, uint16_t size
|
||||
if(!dsc->ascii_glyph_dsc) {
|
||||
dsc->ascii_glyph_dsc = (lv_zifont_char_t *)lv_mem_alloc(sizeof(lv_zifont_char_t) * CHAR_CACHE_SIZE);
|
||||
LV_ASSERT_MEM(dsc->ascii_glyph_dsc);
|
||||
lv_memset(dsc->ascii_glyph_dsc, 0x00,
|
||||
sizeof(lv_zifont_char_t) * CHAR_CACHE_SIZE); // lv_mem_alloc might be dirty
|
||||
memset(dsc->ascii_glyph_dsc, 0x00,
|
||||
sizeof(lv_zifont_char_t) * CHAR_CACHE_SIZE); // lv_mem_alloc might be dirty
|
||||
}
|
||||
if(dsc->ascii_glyph_dsc == NULL) {
|
||||
file.close();
|
||||
@ -406,8 +406,10 @@ bool IRAM_ATTR lv_font_get_glyph_dsc_fmt_zifont(const lv_font_t * font, lv_font_
|
||||
uint32_t unicode_letter, uint32_t unicode_letter_next)
|
||||
{
|
||||
/* Only ascii characteres supported for now */
|
||||
if(unicode_letter < 0x20) return false;
|
||||
if(unicode_letter > 0xff && unicode_letter < 0xf000) return false;
|
||||
// returning true with a box_h of 0 does not display an error
|
||||
dsc_out->box_w = dsc_out->box_h = 0; // Prevents glyph not found error messages when true is returned
|
||||
if(unicode_letter < 0x20) return true;
|
||||
if(unicode_letter > 0xff && unicode_letter < 0xf000) return true;
|
||||
// if(unicode_letter > 0xff) Serial.printf("Char# %u\n", unicode_letter);
|
||||
|
||||
// ulong startMillis = millis();
|
||||
@ -438,7 +440,7 @@ bool IRAM_ATTR lv_font_get_glyph_dsc_fmt_zifont(const lv_font_t * font, lv_font_
|
||||
if(unicode_letter >= 0xF000) {
|
||||
char filename[32];
|
||||
sprintf_P(filename, PSTR("/fontawesome%u.zi"), fdsc->CharHeight);
|
||||
if(!openFont(file, filename)) return false;
|
||||
if(!openFont(file, filename)) return true; // suppress glyph not found errors for icon font
|
||||
} else {
|
||||
if(!openFont(file, (char *)font->user_data)) return false;
|
||||
}
|
||||
|
2
lib/lvgl
2
lib/lvgl
@ -1 +1 @@
|
||||
Subproject commit ecd0d4fb0907d73e07788283c16e5a4ab1e829b6
|
||||
Subproject commit d01d1357ad28e10c606b9e426f7fdf0c23b1e5ac
|
@ -48,11 +48,11 @@ lib_deps =
|
||||
https://github.com/netwizeBE/TFT_eSPI.git
|
||||
;TFT_eSPI@^2.2.2 ; Tft SPI drivers
|
||||
;TFT_eSPI@^1.4.20 ; Tft SPI drivers
|
||||
PubSubClient@^2.7.0 ; MQTT client
|
||||
ArduinoJson@^6.15.1,>6.15.0 ; needs at least 6.15.0
|
||||
PubSubClient@^2.8.0 ; MQTT client
|
||||
ArduinoJson@^6.16.1 ; JSON Parser
|
||||
StreamUtils@^1.4.0
|
||||
Syslog@^2.0.0
|
||||
AceButton@^1.4.0
|
||||
AceButton@^1.6.1
|
||||
;AsyncTCP
|
||||
;https://github.com/me-no-dev/ESPAsyncWebServer/archive/master.zip
|
||||
;https://github.com/me-no-dev/ESPAsyncTCP/archive/master.zip
|
||||
@ -129,27 +129,6 @@ hspi32 =
|
||||
; 7 - mirror content, and rotate 90 deg anti-clockwise
|
||||
|
||||
|
||||
;***************************************************
|
||||
; D1 Mini ESP32 with Lolin TFT 2.4"
|
||||
;***************************************************
|
||||
[env:d1mini32-lolintft24]
|
||||
platform = espressif32@^1.12.0
|
||||
board = wemos_d1_mini32
|
||||
upload_port = COM5 ; To change the port, use platform_override.ini
|
||||
monitor_port = COM5 ; To change the port, use platform_override.ini
|
||||
board_build.partitions = default.csv
|
||||
build_flags =
|
||||
${flags.esp32_flags}
|
||||
; -- TFT_eSPI build options ------------------------
|
||||
${lcd.lolin24}
|
||||
${pins.vspi32}
|
||||
-D TFT_DC=5
|
||||
-D TFT_CS=26
|
||||
-D TFT_RST=-1 ; RST
|
||||
-D TFT_BCKL=-1 ; None, configurable via web UI (e.g. 21)
|
||||
-D TOUCH_CS=17 ; (can also be 22 or 16)
|
||||
|
||||
|
||||
;***************************************************
|
||||
; Lolin D32 Pro with Lolin TFT 2.4"
|
||||
;***************************************************
|
||||
@ -159,7 +138,7 @@ platform = espressif32
|
||||
board = lolin_d32_pro
|
||||
upload_port = COM6 ; To change the port, use platform_override.ini
|
||||
monitor_port = COM6 ; To change the port, use platform_override.ini
|
||||
board_build.partitions = default.csv
|
||||
board_build.partitions = esp32_partition_app1300k_spiffs1216k.csv ; default.csv
|
||||
build_flags =
|
||||
${flags.esp32_flags}
|
||||
; -- TFT_eSPI build options ------------------------
|
||||
|
40
src/hasp.cpp
40
src/hasp.cpp
@ -362,12 +362,24 @@ void haspSetup()
|
||||
|
||||
/* ********** Font Initializations ********** */
|
||||
defaultFont = LV_FONT_DEFAULT; // Use default font
|
||||
#if ESP32
|
||||
lv_font_t * font_small = defaultFont;
|
||||
lv_font_t * font_normal = &lv_font_montserrat_12;
|
||||
lv_font_t * font_subtitle = &lv_font_montserrat_16;
|
||||
lv_font_t * font_title = &lv_font_montserrat_22;
|
||||
#else
|
||||
lv_font_t * font_small = defaultFont;
|
||||
lv_font_t * font_normal = defaultFont;
|
||||
lv_font_t * font_subtitle = defaultFont;
|
||||
lv_font_t * font_title = defaultFont;
|
||||
#endif
|
||||
|
||||
#if HASP_USE_SPIFFS > 0
|
||||
#if defined(ARDUINO_ARCH_ESP32) || defined(ARDUINO_ARCH_ESP8266)
|
||||
lv_zifont_init();
|
||||
|
||||
if(lv_zifont_font_init(&haspFonts[0], haspZiFontPath, 24) != 0) {
|
||||
Log.error(F("HASP: Failed to set the custom font to %s"), haspZiFontPath);
|
||||
Log.error(F("HASP: Failed to set font to %s"), haspZiFontPath);
|
||||
} else {
|
||||
defaultFont = haspFonts[0];
|
||||
}
|
||||
@ -390,14 +402,20 @@ void haspSetup()
|
||||
#endif
|
||||
#if(LV_USE_THEME_MONO == 1) || (LV_USE_THEME_EMPTY == 1)
|
||||
case 3:
|
||||
th = lv_theme_empty_init(LV_COLOR_PURPLE, LV_COLOR_BLACK, LV_THEME_DEFAULT_FLAGS, defaultFont, defaultFont,
|
||||
defaultFont, defaultFont);
|
||||
th = lv_theme_mono_init(LV_COLOR_PURPLE, LV_COLOR_BLACK, LV_THEME_DEFAULT_FLAGS, font_small, font_normal,
|
||||
font_subtitle, font_title);
|
||||
break;
|
||||
#endif
|
||||
#if LV_USE_THEME_MATERIAL == 1
|
||||
case 4:
|
||||
th = lv_theme_material_init(LV_COLOR_PURPLE, LV_COLOR_ORANGE, LV_THEME_DEFAULT_FLAGS, defaultFont,
|
||||
defaultFont, defaultFont, defaultFont);
|
||||
th = lv_theme_material_init(LV_COLOR_PURPLE, LV_COLOR_ORANGE,
|
||||
LV_THEME_MATERIAL_FLAG_LIGHT + LV_THEME_MATERIAL_FLAG_NO_FOCUS, font_small,
|
||||
font_normal, font_subtitle, font_title);
|
||||
break;
|
||||
case 9:
|
||||
th = lv_theme_material_init(LV_COLOR_PURPLE, LV_COLOR_ORANGE,
|
||||
LV_THEME_MATERIAL_FLAG_DARK + LV_THEME_MATERIAL_FLAG_NO_FOCUS, font_small,
|
||||
font_normal, font_subtitle, font_title);
|
||||
break;
|
||||
#endif
|
||||
|
||||
@ -418,8 +436,8 @@ void haspSetup()
|
||||
#endif
|
||||
#if(LV_USE_THEME_HASP == 1) || (LV_USE_THEME_TEMPLATE == 1)
|
||||
case 8:
|
||||
th = lv_theme_template_init(LV_COLOR_PURPLE, LV_COLOR_ORANGE, LV_THEME_DEFAULT_FLAGS, defaultFont,
|
||||
defaultFont, defaultFont, defaultFont);
|
||||
th = lv_theme_template_init(LV_COLOR_PURPLE, LV_COLOR_ORANGE, LV_THEME_DEFAULT_FLAGS, font_small,
|
||||
font_normal, font_subtitle, font_title);
|
||||
break;
|
||||
#endif
|
||||
/* case 0:
|
||||
@ -431,8 +449,8 @@ void haspSetup()
|
||||
break;
|
||||
*/
|
||||
default:
|
||||
th = lv_theme_material_init(LV_COLOR_PURPLE, LV_COLOR_ORANGE, LV_THEME_DEFAULT_FLAGS, defaultFont,
|
||||
defaultFont, defaultFont, defaultFont);
|
||||
th = lv_theme_template_init(LV_COLOR_PURPLE, LV_COLOR_ORANGE, LV_THEME_DEFAULT_FLAGS, font_small,
|
||||
font_normal, font_subtitle, font_title);
|
||||
Log.error(F("HASP: Unknown theme selected"));
|
||||
}
|
||||
|
||||
@ -450,13 +468,13 @@ void haspSetup()
|
||||
lv_style_set_text_font(&pagefont, LV_STATE_DEFAULT, defaultFont);
|
||||
|
||||
list = lv_obj_get_style_list(lv_disp_get_layer_top(NULL), LV_OBJ_PART_MAIN);
|
||||
lv_style_list_add_style(list, &pagefont);
|
||||
_lv_style_list_add_style(list, &pagefont);
|
||||
|
||||
/* Create all screens using the theme */
|
||||
for(uint8_t i = 0; i < (sizeof pages / sizeof *pages); i++) {
|
||||
pages[i] = lv_obj_create(NULL, NULL);
|
||||
list = lv_obj_get_style_list(pages[i], LV_OBJ_PART_MAIN);
|
||||
lv_style_list_add_style(list, &pagefont);
|
||||
_lv_style_list_add_style(list, &pagefont);
|
||||
// lv_obj_set_size(pages[0], hres, vres);
|
||||
}
|
||||
|
||||
|
@ -11,7 +11,7 @@
|
||||
LV_FONT_DECLARE(unscii_8_icon);
|
||||
extern lv_font_t * haspFonts[8];
|
||||
|
||||
static inline bool is_true(const char * s);
|
||||
static bool is_true(const char * s);
|
||||
static inline bool only_digits(const char * s);
|
||||
|
||||
/* 16-bit hashing function http://www.cse.yorku.ca/~oz/hash.html */
|
||||
@ -57,32 +57,32 @@ static lv_color_t haspPayloadToColor(const char * payload)
|
||||
{
|
||||
switch(strlen(payload)) {
|
||||
case 3:
|
||||
if(!strcmp_P(payload, PSTR("red"))) return haspLogColor(LV_COLOR_RED);
|
||||
if(!strcasecmp_P(payload, PSTR("red"))) return haspLogColor(LV_COLOR_RED);
|
||||
break;
|
||||
case 4:
|
||||
if(!strcmp_P(payload, PSTR("blue"))) return haspLogColor(LV_COLOR_BLUE);
|
||||
if(!strcmp_P(payload, PSTR("cyan"))) return haspLogColor(LV_COLOR_CYAN);
|
||||
if(!strcmp_P(payload, PSTR("gray"))) return haspLogColor(LV_COLOR_GRAY);
|
||||
/* if(!strcmp_P(payload, PSTR("aqua"))) return haspLogColor(LV_COLOR_AQUA);
|
||||
if(!strcmp_P(payload, PSTR("lime"))) return haspLogColor(LV_COLOR_LIME);
|
||||
if(!strcmp_P(payload, PSTR("teal"))) return haspLogColor(LV_COLOR_TEAL);
|
||||
if(!strcmp_P(payload, PSTR("navy"))) return haspLogColor(LV_COLOR_NAVY);*/
|
||||
if(!strcasecmp_P(payload, PSTR("blue"))) return haspLogColor(LV_COLOR_BLUE);
|
||||
if(!strcasecmp_P(payload, PSTR("cyan"))) return haspLogColor(LV_COLOR_CYAN);
|
||||
if(!strcasecmp_P(payload, PSTR("gray"))) return haspLogColor(LV_COLOR_GRAY);
|
||||
// if(!strcmp_P(payload, PSTR("aqua"))) return haspLogColor(LV_COLOR_AQUA);
|
||||
// if(!strcmp_P(payload, PSTR("lime"))) return haspLogColor(LV_COLOR_LIME);
|
||||
// if(!strcmp_P(payload, PSTR("teal"))) return haspLogColor(LV_COLOR_TEAL);
|
||||
// if(!strcmp_P(payload, PSTR("navy"))) return haspLogColor(LV_COLOR_NAVY);
|
||||
break;
|
||||
case 5:
|
||||
if(!strcmp_P(payload, PSTR("green"))) return haspLogColor(LV_COLOR_GREEN);
|
||||
if(!strcmp_P(payload, PSTR("white"))) return haspLogColor(LV_COLOR_WHITE);
|
||||
if(!strcmp_P(payload, PSTR("black"))) return haspLogColor(LV_COLOR_BLACK);
|
||||
if(!strcasecmp_P(payload, PSTR("green"))) return haspLogColor(LV_COLOR_GREEN);
|
||||
if(!strcasecmp_P(payload, PSTR("white"))) return haspLogColor(LV_COLOR_WHITE);
|
||||
if(!strcasecmp_P(payload, PSTR("black"))) return haspLogColor(LV_COLOR_BLACK);
|
||||
// if(!strcmp_P(payload, PSTR("olive"))) return haspLogColor(LV_COLOR_OLIVE);
|
||||
break;
|
||||
case 6:
|
||||
if(!strcmp_P(payload, PSTR("yellow"))) return haspLogColor(LV_COLOR_YELLOW);
|
||||
if(!strcmp_P(payload, PSTR("orange"))) return haspLogColor(LV_COLOR_ORANGE);
|
||||
if(!strcmp_P(payload, PSTR("purple"))) return haspLogColor(LV_COLOR_PURPLE);
|
||||
if(!strcmp_P(payload, PSTR("silver"))) return haspLogColor(LV_COLOR_SILVER);
|
||||
if(!strcasecmp_P(payload, PSTR("yellow"))) return haspLogColor(LV_COLOR_YELLOW);
|
||||
if(!strcasecmp_P(payload, PSTR("orange"))) return haspLogColor(LV_COLOR_ORANGE);
|
||||
if(!strcasecmp_P(payload, PSTR("purple"))) return haspLogColor(LV_COLOR_PURPLE);
|
||||
if(!strcasecmp_P(payload, PSTR("silver"))) return haspLogColor(LV_COLOR_SILVER);
|
||||
// if(!strcmp_P(payload, PSTR("maroon"))) return haspLogColor(LV_COLOR_MAROON);
|
||||
break;
|
||||
case 7:
|
||||
if(!strcmp_P(payload, PSTR("magenta"))) return haspLogColor(LV_COLOR_MAGENTA);
|
||||
if(!strcasecmp_P(payload, PSTR("magenta"))) return haspLogColor(LV_COLOR_MAGENTA);
|
||||
|
||||
default:
|
||||
// if(!strcmp_P(payload, PSTR("darkblue"))) return haspLogColor(LV_COLOR_MAKE(0, 51, 102));
|
||||
@ -118,19 +118,43 @@ static lv_color_t haspPayloadToColor(const char * payload)
|
||||
return LV_COLOR_BLACK;
|
||||
}
|
||||
|
||||
static lv_font_t * haspPayloadToFont(const char * payload)
|
||||
{
|
||||
int16_t var = atoi(payload);
|
||||
|
||||
switch(var) {
|
||||
case 8:
|
||||
return &unscii_8_icon;
|
||||
|
||||
#if ESP32
|
||||
case 12:
|
||||
return &lv_font_montserrat_12;
|
||||
case 16:
|
||||
return &lv_font_montserrat_16;
|
||||
case 22:
|
||||
return &lv_font_montserrat_22;
|
||||
case 28:
|
||||
return &lv_font_montserrat_28_compressed;
|
||||
#endif
|
||||
|
||||
default:
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
static void hasp_process_label_long_mode(lv_obj_t * obj, const char * payload, bool update)
|
||||
{
|
||||
if(update) {
|
||||
lv_label_long_mode_t mode = LV_LABEL_LONG_EXPAND;
|
||||
if(!strcmp_P(payload, PSTR("expand"))) {
|
||||
if(!strcasecmp_P(payload, PSTR("expand"))) {
|
||||
mode = LV_LABEL_LONG_EXPAND;
|
||||
} else if(!strcmp_P(payload, PSTR("break"))) {
|
||||
} else if(!strcasecmp_P(payload, PSTR("break"))) {
|
||||
mode = LV_LABEL_LONG_BREAK;
|
||||
} else if(!strcmp_P(payload, PSTR("dots"))) {
|
||||
} else if(!strcasecmp_P(payload, PSTR("dots"))) {
|
||||
mode = LV_LABEL_LONG_DOT;
|
||||
} else if(!strcmp_P(payload, PSTR("scroll"))) {
|
||||
} else if(!strcasecmp_P(payload, PSTR("scroll"))) {
|
||||
mode = LV_LABEL_LONG_SROLL;
|
||||
} else if(!strcmp_P(payload, PSTR("loop"))) {
|
||||
} else if(!strcasecmp_P(payload, PSTR("loop"))) {
|
||||
mode = LV_LABEL_LONG_SROLL_CIRC;
|
||||
} else {
|
||||
return Log.warning(F("Invalid long mode"));
|
||||
@ -202,60 +226,142 @@ static void hasp_attribute_get_part_state(lv_obj_t * obj, const char * attr_in,
|
||||
uint8_t & state)
|
||||
{
|
||||
int len = strlen(attr_in);
|
||||
if(len > 0 && len < 32) {
|
||||
// Check Trailing partnumber
|
||||
if(attr_in[len - 1] == '1') {
|
||||
part = LV_TABLE_PART_CELL1;
|
||||
} else if(attr_in[len - 1] == '2') {
|
||||
part = LV_TABLE_PART_CELL2;
|
||||
} else if(attr_in[len - 1] == '3') {
|
||||
part = LV_TABLE_PART_CELL3;
|
||||
} else if(attr_in[len - 1] == '4') {
|
||||
part = LV_TABLE_PART_CELL4;
|
||||
}
|
||||
if(len <= 0 || len >= 32) {
|
||||
attr_out[0] = 0; // empty string
|
||||
part = LV_OBJ_PART_MAIN;
|
||||
state = LV_STATE_DEFAULT;
|
||||
return;
|
||||
}
|
||||
int index = atoi(&attr_in[len - 1]);
|
||||
|
||||
// Remove Trailing part digit
|
||||
if(part != LV_TABLE_PART_BG && len > 0) {
|
||||
len--;
|
||||
// Drop Trailing partnumber
|
||||
if(attr_in[len - 1] == '0' || index > 0) {
|
||||
part = LV_TABLE_PART_BG;
|
||||
len--;
|
||||
}
|
||||
strncpy(attr_out, attr_in, len);
|
||||
attr_out[len] = 0;
|
||||
|
||||
/* Attributes depending on objecttype */
|
||||
lv_obj_type_t list;
|
||||
lv_obj_get_type(obj, &list);
|
||||
const char * objtype = list.type[0];
|
||||
|
||||
if(check_obj_type(objtype, LV_HASP_BUTTON)) {
|
||||
switch(index) {
|
||||
case 1:
|
||||
state = LV_BTN_STATE_PRESSED;
|
||||
break;
|
||||
case 2:
|
||||
state = LV_BTN_STATE_DISABLED;
|
||||
break;
|
||||
case 3:
|
||||
state = LV_BTN_STATE_CHECKED_RELEASED;
|
||||
break;
|
||||
case 4:
|
||||
state = LV_BTN_STATE_CHECKED_PRESSED;
|
||||
break;
|
||||
case 5:
|
||||
state = LV_BTN_STATE_CHECKED_DISABLED;
|
||||
break;
|
||||
default:
|
||||
state = LV_BTN_STATE_RELEASED;
|
||||
}
|
||||
strncpy(attr_out, attr_in, len + 1);
|
||||
attr_out[len] = 0;
|
||||
} else {
|
||||
attr_out[0] = 0;
|
||||
part = LV_BTN_PART_MAIN;
|
||||
return;
|
||||
}
|
||||
|
||||
if(check_obj_type(objtype, LV_HASP_BAR)) {
|
||||
if(index == 1) {
|
||||
part = LV_BAR_PART_INDIC;
|
||||
} else {
|
||||
part = LV_BAR_PART_BG;
|
||||
}
|
||||
state = LV_STATE_DEFAULT;
|
||||
return;
|
||||
}
|
||||
|
||||
if(check_obj_type(objtype, LV_HASP_CHECKBOX)) {
|
||||
if(index == 1) {
|
||||
part = LV_CHECKBOX_PART_BULLET;
|
||||
} else {
|
||||
part = LV_CHECKBOX_PART_BG;
|
||||
}
|
||||
state = LV_STATE_DEFAULT;
|
||||
return;
|
||||
}
|
||||
|
||||
if(check_obj_type(objtype, LV_HASP_CPICKER)) {
|
||||
if(index == 1) {
|
||||
part = LV_CPICKER_PART_KNOB;
|
||||
} else {
|
||||
part = LV_CPICKER_PART_MAIN;
|
||||
}
|
||||
state = LV_STATE_DEFAULT;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Change or Retrieve the value of a local attribute of an object PART
|
||||
* @param obj lv_obj_t*: the object to get/set the attribute
|
||||
* @param attr_p char*: the attribute name (with or without leading ".")
|
||||
* @param attr_hash uint16_t: the sbdm hash of the attribute name without leading "."
|
||||
* @param payload char*: the new value of the attribute
|
||||
* @param update bool: change/set the value if true, dispatch/get value if false
|
||||
* @note setting a value won't return anything, getting will dispatch the value
|
||||
*/
|
||||
static void hasp_local_style_attr(lv_obj_t * obj, const char * attr_p, uint16_t attr_hash, const char * payload,
|
||||
bool update)
|
||||
{
|
||||
char attr[32];
|
||||
uint8_t part = LV_TABLE_PART_BG;
|
||||
uint8_t part = LV_OBJ_PART_MAIN;
|
||||
uint8_t state = LV_STATE_DEFAULT;
|
||||
int16_t var = atoi(payload);
|
||||
|
||||
hasp_attribute_get_part_state(obj, attr_p, attr, part, state);
|
||||
attr_hash = sdbm(attr); // attribute name without the index number
|
||||
|
||||
/* ***** WARNING ****************************************************
|
||||
* when using hasp_out use attr_p for the original attribute name
|
||||
* *************************************************************** */
|
||||
|
||||
switch(attr_hash) {
|
||||
|
||||
/* 1: Use other blend modes than normal (`LV_BLEND_MODE_...`)*/
|
||||
#if LV_USE_BLEND_MODES
|
||||
case ATTR_BG_BLEND_MODE:
|
||||
return attribute_bg_blend_mode(obj, part, state, update, attr_p, (lv_blend_mode_t)var);
|
||||
case ATTR_TEXT_BLEND_MODE:
|
||||
return lv_obj_set_style_local_text_blend_mode(obj, part, state, (lv_blend_mode_t)var);
|
||||
case ATTR_BORDER_BLEND_MODE:
|
||||
return lv_obj_set_style_local_border_blend_mode(obj, part, state, (lv_blend_mode_t)var);
|
||||
case ATTR_OUTLINE_BLEND_MODE:
|
||||
return lv_obj_set_style_local_outline_blend_mode(obj, part, state, (lv_blend_mode_t)var);
|
||||
case ATTR_SHADOW_BLEND_MODE:
|
||||
return lv_obj_set_style_local_shadow_blend_mode(obj, part, state, (lv_blend_mode_t)var);
|
||||
case ATTR_LINE_BLEND_MODE:
|
||||
return lv_obj_set_style_local_line_blend_mode(obj, part, state, (lv_blend_mode_t)var);
|
||||
case ATTR_VALUE_BLEND_MODE:
|
||||
return lv_obj_set_style_local_value_blend_mode(obj, part, state, (lv_blend_mode_t)var);
|
||||
case ATTR_PATTERN_BLEND_MODE:
|
||||
return lv_obj_set_style_local_pattern_blend_mode(obj, part, state, (lv_blend_mode_t)var);
|
||||
#endif
|
||||
|
||||
case ATTR_SIZE:
|
||||
return attribute_size(obj, part, state, update, attr_p, var);
|
||||
case ATTR_RADIUS:
|
||||
return attribute_radius(obj, part, state, update, attr_p, var);
|
||||
case ATTR_CLIP_CORNER:
|
||||
return attribute_clip_corner(obj, part, state, update, attr_p, var);
|
||||
case ATTR_SIZE:
|
||||
return attribute_size(obj, part, state, update, attr_p, var);
|
||||
case ATTR_TRANSFORM_WIDTH:
|
||||
return lv_obj_set_style_local_transform_width(obj, part, state, (lv_style_int_t)var);
|
||||
case ATTR_TRANSFORM_HEIGHT:
|
||||
return lv_obj_set_style_local_transform_height(obj, part, state, (lv_style_int_t)var);
|
||||
case ATTR_OPA_SCALE:
|
||||
return lv_obj_set_style_local_opa_scale(obj, part, state, (lv_opa_t)var);
|
||||
return attribute_opa_scale(obj, part, state, update, attr_p, (lv_opa_t)var);
|
||||
case ATTR_TRANSFORM_WIDTH:
|
||||
return attribute_transform_width(obj, part, state, update, attr_p, (lv_style_int_t)var);
|
||||
case ATTR_TRANSFORM_HEIGHT:
|
||||
return attribute_transform_height(obj, part, state, update, attr_p, (lv_style_int_t)var);
|
||||
|
||||
/* Background attributes */
|
||||
case ATTR_BG_BLEND_MODE:
|
||||
return attribute_bg_blend_mode(obj, part, state, update, attr_p, (lv_blend_mode_t)var);
|
||||
/* Background attributes */
|
||||
case ATTR_BG_MAIN_STOP:
|
||||
return attribute_bg_main_stop(obj, part, state, update, attr_p, (lv_style_int_t)var);
|
||||
case ATTR_BG_GRAD_STOP:
|
||||
@ -276,25 +382,25 @@ static void hasp_local_style_attr(lv_obj_t * obj, const char * attr_p, uint16_t
|
||||
|
||||
/* Padding attributes */
|
||||
case ATTR_PAD_TOP:
|
||||
return attribute_pad_top(obj, part, state, update, attr_p, (lv_blend_mode_t)var);
|
||||
return attribute_pad_top(obj, part, state, update, attr_p, (lv_style_int_t)var);
|
||||
case ATTR_PAD_BOTTOM:
|
||||
return attribute_pad_bottom(obj, part, state, update, attr_p, (lv_style_int_t)var);
|
||||
case ATTR_PAD_LEFT:
|
||||
return attribute_pad_left(obj, part, state, update, attr_p, (lv_style_int_t)var);
|
||||
case ATTR_PAD_RIGHT:
|
||||
return attribute_pad_right(obj, part, state, update, attr_p, (lv_grad_dir_t)var);
|
||||
return attribute_pad_right(obj, part, state, update, attr_p, (lv_style_int_t)var);
|
||||
case ATTR_PAD_INNER:
|
||||
return attribute_pad_inner(obj, part, state, update, attr_p, (lv_opa_t)var);
|
||||
return attribute_pad_inner(obj, part, state, update, attr_p, (lv_style_int_t)var);
|
||||
|
||||
/* Text attributes */
|
||||
case ATTR_TEXT_LETTER_SPACE:
|
||||
return lv_obj_set_style_local_text_letter_space(obj, part, state, (lv_style_int_t)var);
|
||||
return attribute_text_letter_space(obj, part, state, update, attr_p, (lv_style_int_t)var);
|
||||
case ATTR_TEXT_LINE_SPACE:
|
||||
return lv_obj_set_style_local_text_line_space(obj, part, state, (lv_style_int_t)var);
|
||||
return attribute_text_line_space(obj, part, state, update, attr_p, (lv_style_int_t)var);
|
||||
case ATTR_TEXT_DECOR:
|
||||
return lv_obj_set_style_local_text_decor(obj, part, state, (lv_text_decor_t)var);
|
||||
case ATTR_TEXT_BLEND_MODE:
|
||||
return lv_obj_set_style_local_text_blend_mode(obj, part, state, (lv_blend_mode_t)var);
|
||||
return attribute_text_decor(obj, part, state, update, attr_p, (lv_text_decor_t)var);
|
||||
case ATTR_TEXT_OPA:
|
||||
return attribute_text_opa(obj, part, state, update, attr_p, (lv_opa_t)var);
|
||||
case ATTR_TEXT_COLOR: {
|
||||
lv_color_t color = haspPayloadToColor(payload);
|
||||
return lv_obj_set_style_local_text_color(obj, part, state, color);
|
||||
@ -303,210 +409,149 @@ static void hasp_local_style_attr(lv_obj_t * obj, const char * attr_p, uint16_t
|
||||
lv_color_t color = haspPayloadToColor(payload);
|
||||
return lv_obj_set_style_local_text_sel_color(obj, part, state, color);
|
||||
}
|
||||
case ATTR_TEXT_OPA:
|
||||
return lv_obj_set_style_local_text_opa(obj, part, state, (lv_opa_t)var);
|
||||
case ATTR_TEXT_FONT: {
|
||||
lv_font_t * font = haspPayloadToFont(payload);
|
||||
if(font) {
|
||||
return lv_obj_set_style_local_text_font(obj, part, state, font);
|
||||
} else {
|
||||
return Log.warning(F("HASP: Unknown Font ID %s"), attr_p);
|
||||
}
|
||||
}
|
||||
|
||||
/* Border attributes */
|
||||
case ATTR_BORDER_WIDTH:
|
||||
return lv_obj_set_style_local_border_width(obj, part, state, (lv_style_int_t)var);
|
||||
return attribute_border_width(obj, part, state, update, attr_p, (lv_style_int_t)var);
|
||||
case ATTR_BORDER_SIDE:
|
||||
return lv_obj_set_style_local_border_side(obj, part, state, (lv_border_side_t)var);
|
||||
case ATTR_BORDER_BLEND_MODE:
|
||||
return lv_obj_set_style_local_border_blend_mode(obj, part, state, (lv_blend_mode_t)var);
|
||||
return attribute_border_side(obj, part, state, update, attr_p, (lv_border_side_t)var);
|
||||
case ATTR_BORDER_POST:
|
||||
return lv_obj_set_style_local_border_post(obj, part, state, (bool)var);
|
||||
return attribute_border_post(obj, part, state, update, attr_p, is_true(payload));
|
||||
case ATTR_BORDER_OPA:
|
||||
return attribute_border_opa(obj, part, state, update, attr_p, (lv_opa_t)var);
|
||||
case ATTR_BORDER_COLOR: {
|
||||
lv_color_t color = haspPayloadToColor(payload);
|
||||
return lv_obj_set_style_local_border_color(obj, part, state, color);
|
||||
}
|
||||
|
||||
case ATTR_BORDER_OPA:
|
||||
return lv_obj_set_style_local_border_opa(obj, part, state, (lv_opa_t)var);
|
||||
|
||||
/* Outline attributes */
|
||||
/* Outline attributes */
|
||||
case ATTR_OUTLINE_WIDTH:
|
||||
return lv_obj_set_style_local_outline_width(obj, part, state, (lv_style_int_t)var);
|
||||
return attribute_outline_width(obj, part, state, update, attr_p, (lv_style_int_t)var);
|
||||
case ATTR_OUTLINE_PAD:
|
||||
return lv_obj_set_style_local_outline_pad(obj, part, state, (lv_style_int_t)var);
|
||||
case ATTR_OUTLINE_BLEND_MODE:
|
||||
return lv_obj_set_style_local_outline_blend_mode(obj, part, state, (lv_blend_mode_t)var);
|
||||
return attribute_outline_pad(obj, part, state, update, attr_p, (lv_style_int_t)var);
|
||||
case ATTR_OUTLINE_OPA:
|
||||
return attribute_outline_opa(obj, part, state, update, attr_p, (lv_opa_t)var);
|
||||
case ATTR_OUTLINE_COLOR: {
|
||||
lv_color_t color = haspPayloadToColor(payload);
|
||||
return lv_obj_set_style_local_outline_color(obj, part, state, color);
|
||||
}
|
||||
case ATTR_OUTLINE_OPA:
|
||||
return lv_obj_set_style_local_outline_opa(obj, part, state, (lv_opa_t)var);
|
||||
|
||||
/* Shadow attributes */
|
||||
#if LV_USE_SHADOW
|
||||
case ATTR_SHADOW_WIDTH:
|
||||
return lv_obj_set_style_local_shadow_width(obj, part, state, (lv_style_int_t)var);
|
||||
return attribute_shadow_width(obj, part, state, update, attr_p, (lv_style_int_t)var);
|
||||
case ATTR_SHADOW_OFS_X:
|
||||
return lv_obj_set_style_local_shadow_ofs_x(obj, part, state, (lv_style_int_t)var);
|
||||
return attribute_shadow_ofs_x(obj, part, state, update, attr_p, (lv_style_int_t)var);
|
||||
case ATTR_SHADOW_OFS_Y:
|
||||
return lv_obj_set_style_local_shadow_ofs_y(obj, part, state, (lv_style_int_t)var);
|
||||
return attribute_shadow_ofs_y(obj, part, state, update, attr_p, (lv_style_int_t)var);
|
||||
case ATTR_SHADOW_SPREAD:
|
||||
return lv_obj_set_style_local_shadow_spread(obj, part, state, (lv_style_int_t)var);
|
||||
case ATTR_SHADOW_BLEND_MODE:
|
||||
return lv_obj_set_style_local_shadow_blend_mode(obj, part, state, (lv_blend_mode_t)var);
|
||||
return attribute_shadow_spread(obj, part, state, update, attr_p, (lv_style_int_t)var);
|
||||
case ATTR_SHADOW_OPA:
|
||||
return attribute_shadow_opa(obj, part, state, update, attr_p, (lv_opa_t)var);
|
||||
case ATTR_SHADOW_COLOR: {
|
||||
lv_color_t color = haspPayloadToColor(payload);
|
||||
return lv_obj_set_style_local_shadow_color(obj, part, state, color);
|
||||
}
|
||||
case ATTR_SHADOW_OPA:
|
||||
return lv_obj_set_style_local_shadow_opa(obj, part, state, (lv_opa_t)var);
|
||||
#endif
|
||||
|
||||
/* Line attributes */
|
||||
case ATTR_LINE_WIDTH:
|
||||
return lv_obj_set_style_local_line_width(obj, part, state, (lv_style_int_t)var);
|
||||
case ATTR_LINE_BLEND_MODE:
|
||||
return lv_obj_set_style_local_line_blend_mode(obj, part, state, (lv_blend_mode_t)var);
|
||||
return attribute_line_width(obj, part, state, update, attr_p, (lv_style_int_t)var);
|
||||
case ATTR_LINE_DASH_WIDTH:
|
||||
return lv_obj_set_style_local_line_dash_width(obj, part, state, (lv_style_int_t)var);
|
||||
return attribute_line_dash_width(obj, part, state, update, attr_p, (lv_style_int_t)var);
|
||||
case ATTR_LINE_DASH_GAP:
|
||||
return lv_obj_set_style_local_line_dash_gap(obj, part, state, (lv_style_int_t)var);
|
||||
return attribute_line_dash_gap(obj, part, state, update, attr_p, (lv_style_int_t)var);
|
||||
case ATTR_LINE_ROUNDED:
|
||||
return lv_obj_set_style_local_line_rounded(obj, part, state, (bool)var);
|
||||
return attribute_line_rounded(obj, part, state, update, attr_p, is_true(payload));
|
||||
case ATTR_LINE_OPA:
|
||||
return attribute_line_opa(obj, part, state, update, attr_p, (lv_opa_t)var);
|
||||
case ATTR_LINE_COLOR: {
|
||||
lv_color_t color = haspPayloadToColor(payload);
|
||||
return lv_obj_set_style_local_line_color(obj, part, state, color);
|
||||
}
|
||||
case ATTR_LINE_OPA:
|
||||
return lv_obj_set_style_local_line_opa(obj, part, state, (lv_opa_t)var);
|
||||
|
||||
/* Value attributes */
|
||||
case ATTR_VALUE_LETTER_SPACE:
|
||||
return lv_obj_set_style_local_value_letter_space(obj, part, state, (lv_style_int_t)var);
|
||||
|
||||
return attribute_value_letter_space(obj, part, state, update, attr_p, (lv_style_int_t)var);
|
||||
case ATTR_VALUE_LINE_SPACE:
|
||||
return lv_obj_set_style_local_value_line_space(obj, part, state, (lv_style_int_t)var);
|
||||
case ATTR_VALUE_BLEND_MODE:
|
||||
return lv_obj_set_style_local_value_blend_mode(obj, part, state, (lv_blend_mode_t)var);
|
||||
return attribute_value_line_space(obj, part, state, update, attr_p, (lv_style_int_t)var);
|
||||
case ATTR_VALUE_OFS_X:
|
||||
return lv_obj_set_style_local_value_ofs_x(obj, part, state, (lv_style_int_t)var);
|
||||
return attribute_value_ofs_x(obj, part, state, update, attr_p, (lv_style_int_t)var);
|
||||
case ATTR_VALUE_OFS_Y:
|
||||
return lv_obj_set_style_local_value_ofs_y(obj, part, state, (lv_style_int_t)var);
|
||||
return attribute_value_ofs_y(obj, part, state, update, attr_p, (lv_style_int_t)var);
|
||||
case ATTR_VALUE_ALIGN:
|
||||
return lv_obj_set_style_local_value_align(obj, part, state, (lv_align_t)var);
|
||||
return attribute_value_align(obj, part, state, update, attr_p, (lv_align_t)var);
|
||||
case ATTR_VALUE_OPA:
|
||||
return attribute_value_opa(obj, part, state, update, attr_p, (lv_opa_t)var);
|
||||
case ATTR_VALUE_STR: {
|
||||
if(update) {
|
||||
// Free previous string
|
||||
const char * str = lv_obj_get_style_value_str(obj, part);
|
||||
lv_obj_set_style_local_value_str(obj, part, state, NULL);
|
||||
lv_mem_free(str);
|
||||
|
||||
// Create new string
|
||||
size_t len = strlen(payload);
|
||||
if(len > 0) {
|
||||
len++;
|
||||
char * str_p = (char *)lv_mem_alloc(len);
|
||||
memset(str_p, 0, len);
|
||||
memccpy(str_p, payload, 0, len);
|
||||
lv_obj_set_style_local_value_str(obj, part, state, str_p);
|
||||
}
|
||||
} else {
|
||||
hasp_out_str(obj, attr, lv_obj_get_style_value_str(obj, part));
|
||||
}
|
||||
return;
|
||||
}
|
||||
case ATTR_VALUE_COLOR: {
|
||||
lv_color_t color = haspPayloadToColor(payload);
|
||||
return lv_obj_set_style_local_value_color(obj, part, state, color);
|
||||
}
|
||||
case ATTR_VALUE_OPA:
|
||||
return lv_obj_set_style_local_value_opa(obj, part, state, (lv_opa_t)var);
|
||||
case ATTR_VALUE_STR:
|
||||
return lv_obj_set_style_local_value_str(obj, part, state, (const char *)payload);
|
||||
case ATTR_VALUE_FONT: {
|
||||
lv_font_t * font = haspPayloadToFont(payload);
|
||||
if(font) {
|
||||
return lv_obj_set_style_local_value_font(obj, part, state, font);
|
||||
} else {
|
||||
return Log.warning(F("HASP: Unknown Font ID %s"), attr_p);
|
||||
}
|
||||
}
|
||||
|
||||
/* Pattern attributes */
|
||||
case ATTR_PATTERN_REPEAT:
|
||||
return lv_obj_set_style_local_pattern_repeat(obj, part, state, (bool)var);
|
||||
case ATTR_PATTERN_BLEND_MODE:
|
||||
return lv_obj_set_style_local_pattern_blend_mode(obj, part, state, (lv_blend_mode_t)var);
|
||||
return attribute_pattern_repeat(obj, part, state, update, attr_p, is_true(payload));
|
||||
case ATTR_PATTERN_OPA:
|
||||
return attribute_pattern_opa(obj, part, state, update, attr_p, (lv_opa_t)var);
|
||||
case ATTR_PATTERN_RECOLOR_OPA:
|
||||
return attribute_pattern_recolor_opa(obj, part, state, update, attr_p, (lv_opa_t)var);
|
||||
case ATTR_PATTERN_IMAGE:
|
||||
// return lv_obj_set_style_local_pattern_image(obj, part, state, (constvoid *)var);
|
||||
break;
|
||||
case ATTR_PATTERN_RECOLOR: {
|
||||
lv_color_t color = haspPayloadToColor(payload);
|
||||
return lv_obj_set_style_local_pattern_recolor(obj, part, state, color);
|
||||
}
|
||||
case ATTR_PATTERN_OPA:
|
||||
return lv_obj_set_style_local_pattern_opa(obj, part, state, (lv_opa_t)var);
|
||||
case ATTR_PATTERN_RECOLOR_OPA:
|
||||
return lv_obj_set_style_local_pattern_recolor_opa(obj, part, state, (lv_opa_t)var);
|
||||
case ATTR_PATTERN_IMAGE:
|
||||
// return lv_obj_set_style_local_pattern_image(obj, part, state, (constvoid *)var);
|
||||
break;
|
||||
|
||||
/* Image attributes */
|
||||
// Todo
|
||||
|
||||
/* Scale attributes */
|
||||
// Todo
|
||||
|
||||
/* Transition attributes */
|
||||
// Todo
|
||||
}
|
||||
Log.warning(F("HASP: Unknown property %s"), attr_p);
|
||||
}
|
||||
|
||||
static void hasp_local_style_attr_font(lv_obj_t * obj, const char * attr_p, uint16_t attr_hash, const char * payload,
|
||||
bool update)
|
||||
{
|
||||
uint8_t part = LV_TABLE_PART_BG;
|
||||
uint8_t state = LV_STATE_DEFAULT;
|
||||
int16_t var = atoi(payload);
|
||||
|
||||
int len = strlen(attr_p);
|
||||
if(len > 0 && len < 32) {
|
||||
// Check Trailing partnumber
|
||||
if(attr_p[len - 1] == '1') {
|
||||
part = LV_TABLE_PART_CELL1;
|
||||
} else if(attr_p[len - 1] == '2') {
|
||||
part = LV_TABLE_PART_CELL2;
|
||||
} else if(attr_p[len - 1] == '3') {
|
||||
part = LV_TABLE_PART_CELL3;
|
||||
} else if(attr_p[len - 1] == '4') {
|
||||
part = LV_TABLE_PART_CELL4;
|
||||
// } else if(attr[len - 1] == '9') {
|
||||
// part = LV_PAGE_PART_SCROLLBAR;
|
||||
}
|
||||
|
||||
// Remove Trailing part digit
|
||||
char attr[32];
|
||||
if(part != LV_TABLE_PART_BG && len > 0) {
|
||||
len--;
|
||||
}
|
||||
strncpy(attr, attr_p, len + 1);
|
||||
attr[len] = 0;
|
||||
|
||||
// debugPrintln(strAttr + "&" + part);
|
||||
|
||||
/* ***** WARNING ****************************************************
|
||||
* when using hasp_out use attr_p for the original attribute name
|
||||
* *************************************************************** */
|
||||
|
||||
if(!strcmp_P(attr, PSTR("value_font"))) {
|
||||
#if ESP32
|
||||
switch(var) {
|
||||
case 8:
|
||||
lv_obj_set_style_local_value_font(obj, part, state, &unscii_8_icon);
|
||||
break;
|
||||
case 12:
|
||||
lv_obj_set_style_local_value_font(obj, part, state, &lv_font_montserrat_12);
|
||||
break;
|
||||
case 16:
|
||||
lv_obj_set_style_local_value_font(obj, part, state, &lv_font_montserrat_16);
|
||||
break;
|
||||
case 22:
|
||||
lv_obj_set_style_local_value_font(obj, part, state, &lv_font_montserrat_22);
|
||||
break;
|
||||
case 28:
|
||||
lv_obj_set_style_local_value_font(obj, part, state, &lv_font_montserrat_28_compressed);
|
||||
break;
|
||||
}
|
||||
return;
|
||||
#endif
|
||||
// return lv_obj_set_style_local_value_font(obj, part, state, (constlv_font_t *)var);
|
||||
|
||||
} else if(!strcmp_P(attr, PSTR("text_font"))) {
|
||||
#if ESP32
|
||||
switch(var) {
|
||||
case 0:
|
||||
lv_obj_set_style_local_text_font(obj, part, state, haspFonts[0]);
|
||||
Log.verbose(F("Changing font to : %s"), (char *)haspFonts[0]->user_data);
|
||||
break;
|
||||
case 8:
|
||||
lv_obj_set_style_local_text_font(obj, part, state, &unscii_8_icon);
|
||||
break;
|
||||
case 12:
|
||||
lv_obj_set_style_local_text_font(obj, part, state, &lv_font_montserrat_12);
|
||||
break;
|
||||
case 16:
|
||||
lv_obj_set_style_local_text_font(obj, part, state, &lv_font_montserrat_16);
|
||||
break;
|
||||
case 22:
|
||||
lv_obj_set_style_local_text_font(obj, part, state, &lv_font_montserrat_22);
|
||||
break;
|
||||
case 28:
|
||||
lv_obj_set_style_local_text_font(obj, part, state, &lv_font_montserrat_28_compressed);
|
||||
break;
|
||||
}
|
||||
return;
|
||||
#endif
|
||||
// return lv_obj_set_style_local_text_font(obj, part, state, (constlv_font_t *)var);
|
||||
}
|
||||
}
|
||||
|
||||
Log.warning(F("HASP: Unknown property %s"), attr_p);
|
||||
}
|
||||
|
||||
// OK
|
||||
static void hasp_process_obj_attribute_txt(lv_obj_t * obj, const char * attr, const char * payload, bool update)
|
||||
{
|
||||
@ -640,8 +685,14 @@ static void hasp_process_obj_attribute_range(lv_obj_t * obj, const char * attr,
|
||||
}
|
||||
}
|
||||
|
||||
// OK
|
||||
// @param update bool: change the value if true, dispatch value if false
|
||||
/**
|
||||
* Change or Retrieve the value of the attribute of an object
|
||||
* @param obj lv_obj_t*: the object to get/set the attribute
|
||||
* @param attr_p char*: the attribute name (with or without leading ".")
|
||||
* @param payload char*: the new value of the attribute
|
||||
* @param update bool: change/set the value if true, dispatch/get value if false
|
||||
* @note setting a value won't return anything, getting will dispatch the value
|
||||
*/
|
||||
void hasp_process_obj_attribute(lv_obj_t * obj, const char * attr_p, const char * payload, bool update)
|
||||
{
|
||||
unsigned long start = millis();
|
||||
@ -789,11 +840,9 @@ void hasp_process_obj_attribute(lv_obj_t * obj, const char * attr_p, const char
|
||||
/* **************************
|
||||
* Static Inline functions
|
||||
* **************************/
|
||||
static inline bool is_true(const char * s)
|
||||
static bool is_true(const char * s)
|
||||
{
|
||||
return (!strcmp_P(s, PSTR("true")) || !strcmp_P(s, PSTR("TRUE")) || !strcmp_P(s, PSTR("True")) ||
|
||||
!strcmp_P(s, PSTR("on")) || !strcmp_P(s, PSTR("ON")) || !strcmp_P(s, PSTR("On")) ||
|
||||
!strcmp_P(s, PSTR("yes")) || !strcmp_P(s, PSTR("YES")) || !strcmp_P(s, PSTR("Yes")) ||
|
||||
return (!strcasecmp_P(s, PSTR("true")) || !strcasecmp_P(s, PSTR("on")) || !strcasecmp_P(s, PSTR("yes")) ||
|
||||
!strcmp_P(s, PSTR("1")));
|
||||
}
|
||||
|
||||
@ -821,6 +870,13 @@ void inline hasp_out_color(lv_obj_t * obj, const char * attr, lv_color_t color)
|
||||
hasp_send_obj_attribute_color(obj, attr, color);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if an lvgl object typename corresponds to a given HASP object ID
|
||||
* @param lvobjtype a char* to a string
|
||||
* @param haspobjtype the HASP object ID to check against
|
||||
* @return true or false wether the types match
|
||||
* @note
|
||||
*/
|
||||
bool check_obj_type(const char * lvobjtype, lv_hasp_obj_type_t haspobjtype)
|
||||
{
|
||||
lvobjtype += 3; // skip "lv_"
|
||||
@ -869,6 +925,13 @@ bool check_obj_type(const char * lvobjtype, lv_hasp_obj_type_t haspobjtype)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if an lvgl objecttype name corresponds to a given HASP object ID
|
||||
* @param obj an lv_obj_t* of the object to check its type
|
||||
* @param haspobjtype the HASP object ID to check against
|
||||
* @return true or false wether the types match
|
||||
* @note
|
||||
*/
|
||||
bool check_obj_type(lv_obj_t * obj, lv_hasp_obj_type_t haspobjtype)
|
||||
{
|
||||
lv_obj_type_t list;
|
||||
|
@ -28,8 +28,8 @@ bool check_obj_type(lv_obj_t * obj, lv_hasp_obj_type_t haspobjtype);
|
||||
if(update) { \
|
||||
return lv_obj_set_style_local_##func_name(obj, part, state, (value_type)val); \
|
||||
} else { \
|
||||
value_type temp; \
|
||||
lv_obj_get_style_local_##func_name(obj, part, state, &temp); \
|
||||
value_type temp = lv_obj_get_style_##func_name(obj, part); \
|
||||
/*lv_obj_get_style_##func_name(obj, part, state, &temp);*/ \
|
||||
return hasp_out_int(obj, attr, temp); \
|
||||
} \
|
||||
}
|
||||
@ -45,7 +45,17 @@ _HASP_ATTRIBUTE(PAD_BOTTOM, pad_bottom, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(PAD_LEFT, pad_left, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(PAD_RIGHT, pad_right, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(PAD_INNER, pad_inner, lv_style_int_t)
|
||||
#if LV_USE_BLEND_MODES
|
||||
_HASP_ATTRIBUTE(BG_BLEND_MODE, bg_blend_mode, lv_blend_mode_t)
|
||||
_HASP_ATTRIBUTE(BORDER_BLEND_MODE, border_blend_mode, lv_blend_mode_t)
|
||||
_HASP_ATTRIBUTE(OUTLINE_BLEND_MODE, outline_blend_mode, lv_blend_mode_t)
|
||||
_HASP_ATTRIBUTE(SHADOW_BLEND_MODE, shadow_blend_mode, lv_blend_mode_t)
|
||||
_HASP_ATTRIBUTE(PATTERN_BLEND_MODE, pattern_blend_mode, lv_blend_mode_t)
|
||||
_HASP_ATTRIBUTE(VALUE_BLEND_MODE, value_blend_mode, lv_blend_mode_t)
|
||||
_HASP_ATTRIBUTE(TEXT_BLEND_MODE, text_blend_mode, lv_blend_mode_t)
|
||||
_HASP_ATTRIBUTE(LINE_BLEND_MODE, line_blend_mode, lv_blend_mode_t)
|
||||
_HASP_ATTRIBUTE(IMAGE_BLEND_MODE, image_blend_mode, lv_blend_mode_t)
|
||||
#endif
|
||||
_HASP_ATTRIBUTE(BG_MAIN_STOP, bg_main_stop, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(BG_GRAD_STOP, bg_grad_stop, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(BG_GRAD_DIR, bg_grad_dir, lv_grad_dir_t)
|
||||
@ -54,31 +64,28 @@ _HASP_ATTRIBUTE(BG_GRAD_DIR, bg_grad_dir, lv_grad_dir_t)
|
||||
_HASP_ATTRIBUTE(BG_OPA, bg_opa, lv_opa_t)
|
||||
_HASP_ATTRIBUTE(BORDER_WIDTH, border_width, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(BORDER_SIDE, border_side, lv_border_side_t)
|
||||
_HASP_ATTRIBUTE(BORDER_BLEND_MODE, border_blend_mode, lv_blend_mode_t)
|
||||
_HASP_ATTRIBUTE(BORDER_POST, border_post, bool)
|
||||
//_HASP_ATTRIBUTE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar)
|
||||
_HASP_ATTRIBUTE(BORDER_OPA, border_opa, lv_opa_t)
|
||||
_HASP_ATTRIBUTE(OUTLINE_WIDTH, outline_width, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(OUTLINE_PAD, outline_pad, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(OUTLINE_BLEND_MODE, outline_blend_mode, lv_blend_mode_t)
|
||||
//_HASP_ATTRIBUTE(OUTLINE_COLOR, outline_color, lv_color_t, _color, nonscalar)
|
||||
_HASP_ATTRIBUTE(OUTLINE_OPA, outline_opa, lv_opa_t)
|
||||
#if LV_USE_SHADOW
|
||||
_HASP_ATTRIBUTE(SHADOW_WIDTH, shadow_width, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(SHADOW_OFS_X, shadow_ofs_x, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(SHADOW_OFS_Y, shadow_ofs_y, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(SHADOW_SPREAD, shadow_spread, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(SHADOW_BLEND_MODE, shadow_blend_mode, lv_blend_mode_t)
|
||||
//_HASP_ATTRIBUTE(SHADOW_COLOR, shadow_color, lv_color_t, _color, nonscalar)
|
||||
_HASP_ATTRIBUTE(SHADOW_OPA, shadow_opa, lv_opa_t)
|
||||
#endif
|
||||
_HASP_ATTRIBUTE(PATTERN_REPEAT, pattern_repeat, bool)
|
||||
_HASP_ATTRIBUTE(PATTERN_BLEND_MODE, pattern_blend_mode, lv_blend_mode_t)
|
||||
//_HASP_ATTRIBUTE(PATTERN_RECOLOR, pattern_recolor, lv_color_t, _color, nonscalar)
|
||||
_HASP_ATTRIBUTE(PATTERN_OPA, pattern_opa, lv_opa_t)
|
||||
_HASP_ATTRIBUTE(PATTERN_RECOLOR_OPA, pattern_recolor_opa, lv_opa_t)
|
||||
//_HASP_ATTRIBUTE(PATTERN_IMAGE, pattern_image, const void *, _data_ptr, scalar)
|
||||
_HASP_ATTRIBUTE(VALUE_LETTER_SPACE, value_letter_space, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(VALUE_LINE_SPACE, value_line_space, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(VALUE_BLEND_MODE, value_blend_mode, lv_blend_mode_t)
|
||||
_HASP_ATTRIBUTE(VALUE_OFS_X, value_ofs_x, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(VALUE_OFS_Y, value_ofs_y, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(VALUE_ALIGN, value_align, lv_align_t)
|
||||
@ -89,19 +96,16 @@ _HASP_ATTRIBUTE(VALUE_OPA, value_opa, lv_opa_t)
|
||||
_HASP_ATTRIBUTE(TEXT_LETTER_SPACE, text_letter_space, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(TEXT_DECOR, text_decor, lv_text_decor_t)
|
||||
_HASP_ATTRIBUTE(TEXT_BLEND_MODE, text_blend_mode, lv_blend_mode_t)
|
||||
//_HASP_ATTRIBUTE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar)
|
||||
//_HASP_ATTRIBUTE(TEXT_SEL_COLOR, text_sel_color, lv_color_t, _color, nonscalar)
|
||||
_HASP_ATTRIBUTE(TEXT_OPA, text_opa, lv_opa_t)
|
||||
//_HASP_ATTRIBUTE(TEXT_FONT, text_font, const lv_font_t *, _data_ptr, scalar)
|
||||
_HASP_ATTRIBUTE(LINE_WIDTH, line_width, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(LINE_BLEND_MODE, line_blend_mode, lv_blend_mode_t)
|
||||
_HASP_ATTRIBUTE(LINE_DASH_WIDTH, line_dash_width, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(LINE_DASH_GAP, line_dash_gap, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(LINE_ROUNDED, line_rounded, bool)
|
||||
//_HASP_ATTRIBUTE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar)
|
||||
_HASP_ATTRIBUTE(LINE_OPA, line_opa, lv_opa_t)
|
||||
_HASP_ATTRIBUTE(IMAGE_BLEND_MODE, image_blend_mode, lv_blend_mode_t)
|
||||
//_HASP_ATTRIBUTE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar)
|
||||
_HASP_ATTRIBUTE(IMAGE_OPA, image_opa, lv_opa_t)
|
||||
_HASP_ATTRIBUTE(IMAGE_RECOLOR_OPA, image_recolor_opa, lv_opa_t)
|
||||
@ -122,92 +126,116 @@ _HASP_ATTRIBUTE(SCALE_END_LINE_WIDTH, scale_end_line_width, lv_style_int_t)
|
||||
//_HASP_ATTRIBUTE(SCALE_END_COLOR, scale_end_color, lv_color_t, _color, nonscalar)
|
||||
|
||||
/* attribute hashes */
|
||||
/* Object Part Attributes */
|
||||
#define ATTR_SIZE 16417
|
||||
#define ATTR_BG_OPA 48966
|
||||
#define ATTR_RADIUS 20786
|
||||
#define ATTR_PAD_TOP 59081
|
||||
#define ATTR_LINE_OPA 24501
|
||||
#define ATTR_BG_COLOR 64969
|
||||
#define ATTR_PAD_LEFT 43123
|
||||
#define ATTR_TEXT_OPA 37166
|
||||
#define ATTR_IMAGE_OPA 58140
|
||||
#define ATTR_OPA_SCALE 64875
|
||||
#define ATTR_PAD_INNER 9930
|
||||
#define ATTR_PAD_RIGHT 65104
|
||||
#define ATTR_BORDER_OPA 2061
|
||||
#define ATTR_VALUE_OPA 50482
|
||||
#define ATTR_LINE_WIDTH 25467
|
||||
#define ATTR_LINE_COLOR 22200
|
||||
#define ATTR_PAD_BOTTOM 3767
|
||||
#define ATTR_TEXT_FONT 22465
|
||||
#define ATTR_VALUE_STR 1091
|
||||
#define ATTR_SHADOW_OPA 38401
|
||||
#define ATTR_TEXT_COLOR 23473
|
||||
#define ATTR_TEXT_DECOR 1971
|
||||
#define ATTR_BORDER_SIDE 53962
|
||||
#define ATTR_VALUE_FONT 9405
|
||||
#define ATTR_CLIP_CORNER 9188
|
||||
#define ATTR_PATTERN_OPA 43633
|
||||
#define ATTR_OUTLINE_OPA 23011
|
||||
#define ATTR_BORDER_POST 49491
|
||||
#define ATTR_OUTLINE_PAD 26038
|
||||
#define ATTR_SCALE_WIDTH 36017
|
||||
#define ATTR_OPA_SCALE 64875
|
||||
#define ATTR_TRANSFORM_HEIGHT 55994
|
||||
#define ATTR_TRANSFORM_WIDTH 48627
|
||||
|
||||
/* Background Attributes */
|
||||
#define ATTR_BG_OPA 48966
|
||||
#define ATTR_BG_COLOR 64969
|
||||
#define ATTR_BG_GRAD_DIR 41782
|
||||
#define ATTR_VALUE_ALIGN 27895
|
||||
#define ATTR_VALUE_COLOR 52661
|
||||
#define ATTR_BG_GRAD_STOP 4025
|
||||
#define ATTR_VALUE_OFS_X 21415
|
||||
#define ATTR_VALUE_OFS_Y 21416
|
||||
#define ATTR_BG_MAIN_STOP 63118
|
||||
#define ATTR_BORDER_WIDTH 24531
|
||||
#define ATTR_LINE_ROUNDED 15042
|
||||
#define ATTR_BORDER_COLOR 21264
|
||||
#define ATTR_BG_BLEND_MODE 31147
|
||||
#define ATTR_BG_GRAD_COLOR 44140
|
||||
#define ATTR_SHADOW_WIDTH 13255
|
||||
#define ATTR_IMAGE_RECOLOR 52204
|
||||
#define ATTR_SHADOW_COLOR 9988
|
||||
#define ATTR_LINE_DASH_GAP 49332
|
||||
#define ATTR_OUTLINE_WIDTH 9897
|
||||
#define ATTR_SHADOW_OFS_X 44278
|
||||
#define ATTR_SHADOW_OFS_Y 44279
|
||||
#define ATTR_PATTERN_IMAGE 61292
|
||||
#define ATTR_SHADOW_SPREAD 21138
|
||||
#define ATTR_OUTLINE_COLOR 6630
|
||||
|
||||
/* Padding Attributes */
|
||||
#define ATTR_PAD_TOP 59081
|
||||
#define ATTR_PAD_LEFT 43123
|
||||
#define ATTR_PAD_INNER 9930
|
||||
#define ATTR_PAD_RIGHT 65104
|
||||
#define ATTR_PAD_BOTTOM 3767
|
||||
|
||||
/* Text Attributes */
|
||||
#define ATTR_TEXT_OPA 37166
|
||||
#define ATTR_TEXT_FONT 22465
|
||||
#define ATTR_TEXT_COLOR 23473
|
||||
#define ATTR_TEXT_DECOR 1971
|
||||
#define ATTR_TEXT_LETTER_SPACE 62079
|
||||
#define ATTR_TEXT_SEL_COLOR 32076
|
||||
#define ATTR_LINE_DASH_WIDTH 32676
|
||||
#define ATTR_PATTERN_REPEAT 31338
|
||||
#define ATTR_LINE_BLEND_MODE 60284
|
||||
#define ATTR_TEXT_LINE_SPACE 54829
|
||||
#define ATTR_TEXT_BLEND_MODE 32195
|
||||
|
||||
/* Border Attributes */
|
||||
#define ATTR_BORDER_OPA 2061
|
||||
#define ATTR_BORDER_SIDE 53962
|
||||
#define ATTR_BORDER_POST 49491
|
||||
#define ATTR_BORDER_BLEND_MODE 23844
|
||||
#define ATTR_BORDER_WIDTH 24531
|
||||
#define ATTR_BORDER_COLOR 21264
|
||||
|
||||
/* Outline Attributes */
|
||||
#define ATTR_OUTLINE_OPA 23011
|
||||
#define ATTR_OUTLINE_PAD 26038
|
||||
#define ATTR_OUTLINE_COLOR 6630
|
||||
#define ATTR_OUTLINE_BLEND_MODE 25038
|
||||
#define ATTR_OUTLINE_WIDTH 9897
|
||||
|
||||
/* Shadow Attributes */
|
||||
#define ATTR_SHADOW_OPA 38401
|
||||
#define ATTR_SHADOW_WIDTH 13255
|
||||
#define ATTR_SHADOW_OFS_X 44278
|
||||
#define ATTR_SHADOW_OFS_Y 44279
|
||||
#define ATTR_SHADOW_SPREAD 21138
|
||||
#define ATTR_SHADOW_BLEND_MODE 64048
|
||||
#define ATTR_SHADOW_COLOR 9988
|
||||
|
||||
/* Line Attributes */
|
||||
#define ATTR_LINE_OPA 24501
|
||||
#define ATTR_LINE_WIDTH 25467
|
||||
#define ATTR_LINE_COLOR 22200
|
||||
#define ATTR_LINE_DASH_WIDTH 32676
|
||||
#define ATTR_LINE_ROUNDED 15042
|
||||
#define ATTR_LINE_DASH_GAP 49332
|
||||
#define ATTR_LINE_BLEND_MODE 60284
|
||||
|
||||
/* Value Attributes */
|
||||
#define ATTR_VALUE_OPA 50482
|
||||
#define ATTR_VALUE_STR 1091
|
||||
#define ATTR_VALUE_FONT 9405
|
||||
#define ATTR_VALUE_ALIGN 27895
|
||||
#define ATTR_VALUE_COLOR 52661
|
||||
#define ATTR_VALUE_OFS_X 21415
|
||||
#define ATTR_VALUE_OFS_Y 21416
|
||||
#define ATTR_VALUE_LINE_SPACE 26921
|
||||
#define ATTR_VALUE_BLEND_MODE 4287
|
||||
#define ATTR_VALUE_LETTER_SPACE 51067
|
||||
|
||||
/* Pattern attributes */
|
||||
#define ATTR_PATTERN_BLEND_MODE 43456
|
||||
#define ATTR_PATTERN_RECOLOR_OPA 35074
|
||||
#define ATTR_PATTERN_RECOLOR 7745
|
||||
#define ATTR_PATTERN_REPEAT 31338
|
||||
#define ATTR_PATTERN_OPA 43633
|
||||
#define ATTR_PATTERN_IMAGE 61292
|
||||
|
||||
#define ATTR_TRANSITION_PROP_1 49343
|
||||
#define ATTR_TRANSITION_PROP_2 49344
|
||||
#define ATTR_SCALE_END_COLOR 44074
|
||||
#define ATTR_TRANSITION_PROP_3 49345
|
||||
#define ATTR_TRANSFORM_WIDTH 48627
|
||||
#define ATTR_TRANSITION_PROP_4 49346
|
||||
#define ATTR_TRANSITION_PROP_5 49347
|
||||
#define ATTR_TRANSITION_PROP_6 49348
|
||||
#define ATTR_TRANSITION_TIME 26263
|
||||
#define ATTR_PATTERN_RECOLOR 7745
|
||||
#define ATTR_TRANSITION_PATH 43343
|
||||
#define ATTR_IMAGE_BLEND_MODE 11349
|
||||
#define ATTR_VALUE_LINE_SPACE 26921
|
||||
#define ATTR_BORDER_BLEND_MODE 23844
|
||||
#define ATTR_VALUE_BLEND_MODE 4287
|
||||
#define ATTR_IMAGE_RECOLOR_OPA 43949
|
||||
#define ATTR_TRANSITION_DELAY 64537
|
||||
#define ATTR_SCALE_GRAD_COLOR 47239
|
||||
#define ATTR_SHADOW_BLEND_MODE 64048
|
||||
#define ATTR_TRANSFORM_HEIGHT 55994
|
||||
#define ATTR_TEXT_LETTER_SPACE 62079
|
||||
#define ATTR_OUTLINE_BLEND_MODE 25038
|
||||
#define ATTR_PATTERN_BLEND_MODE 43456
|
||||
#define ATTR_SCALE_BORDER_WIDTH 2440
|
||||
#define ATTR_VALUE_LETTER_SPACE 51067
|
||||
#define ATTR_PATTERN_RECOLOR_OPA 35074
|
||||
|
||||
#define ATTR_IMAGE_OPA 58140
|
||||
#define ATTR_IMAGE_RECOLOR 52204
|
||||
#define ATTR_IMAGE_BLEND_MODE 11349
|
||||
#define ATTR_IMAGE_RECOLOR_OPA 43949
|
||||
|
||||
#define ATTR_SCALE_END_LINE_WIDTH 30324
|
||||
#define ATTR_SCALE_END_BORDER_WIDTH 34380
|
||||
#define ATTR_SCALE_BORDER_WIDTH 2440
|
||||
#define ATTR_SCALE_GRAD_COLOR 47239
|
||||
#define ATTR_SCALE_WIDTH 36017
|
||||
#define ATTR_SCALE_END_COLOR 44074
|
||||
|
||||
/* Object Attributes */
|
||||
#define ATTR_X 120
|
||||
#define ATTR_Y 121
|
||||
#define ATTR_W 119
|
||||
|
@ -71,7 +71,7 @@ Syslog * syslog;
|
||||
#endif // USE_SYSLOG
|
||||
|
||||
// Serial Settings
|
||||
uint8_t serialInputIndex = 0; // Empty buffer
|
||||
uint8_t serialInputIndex = 0; // Empty buffer
|
||||
char serialInputBuffer[1024];
|
||||
uint16_t debugSerialBaud = SERIAL_SPEED / 10; // Multiplied by 10
|
||||
bool debugSerialStarted = false;
|
||||
@ -97,7 +97,8 @@ String debugHaspHeader()
|
||||
String header((char *)0);
|
||||
header.reserve(256);
|
||||
if(debugAnsiCodes) header += TERM_COLOR_YELLOW;
|
||||
header += F(" _____ _____ _____ _____\r\n"
|
||||
header += F("\r\n"
|
||||
" _____ _____ _____ _____\r\n"
|
||||
" | | | _ | __| _ |\r\n"
|
||||
" | | |__ | __|\r\n"
|
||||
" |__|__|__|__|_____|__|\r\n"
|
||||
@ -381,7 +382,7 @@ void debugLvgl(lv_log_level_t level, const char * file, uint32_t line, const cha
|
||||
|
||||
void debugLoop()
|
||||
{
|
||||
while(Serial.available()) {
|
||||
while(Serial.available()) {
|
||||
char ch = Serial.read();
|
||||
Serial.print(ch);
|
||||
if(ch == 13 || ch == 10) {
|
||||
|
@ -19,7 +19,7 @@ inline void dispatchPrintln(String header, String & data)
|
||||
|
||||
bool isON(const char * payload)
|
||||
{
|
||||
return strcmp_P(payload, PSTR("ON")) == 0;
|
||||
return strcasecmp_P(payload, PSTR("ON")) == 0;
|
||||
}
|
||||
|
||||
String getOnOff(bool state)
|
||||
@ -362,21 +362,21 @@ void dispatchConfig(const char * topic, const char * payload)
|
||||
update = true;
|
||||
}
|
||||
|
||||
if(strcmp_P(topic, PSTR("debug")) == 0) {
|
||||
if(strcasecmp_P(topic, PSTR("debug")) == 0) {
|
||||
if(update)
|
||||
debugSetConfig(settings);
|
||||
else
|
||||
debugGetConfig(settings);
|
||||
}
|
||||
|
||||
else if(strcmp_P(topic, PSTR("gui")) == 0) {
|
||||
else if(strcasecmp_P(topic, PSTR("gui")) == 0) {
|
||||
if(update)
|
||||
guiSetConfig(settings);
|
||||
else
|
||||
guiGetConfig(settings);
|
||||
}
|
||||
|
||||
else if(strcmp_P(topic, PSTR("hasp")) == 0) {
|
||||
else if(strcasecmp_P(topic, PSTR("hasp")) == 0) {
|
||||
if(update)
|
||||
haspSetConfig(settings);
|
||||
else
|
||||
@ -384,14 +384,14 @@ void dispatchConfig(const char * topic, const char * payload)
|
||||
}
|
||||
|
||||
#if HASP_USE_WIFI > 0
|
||||
else if(strcmp_P(topic, PSTR("wifi")) == 0) {
|
||||
else if(strcasecmp_P(topic, PSTR("wifi")) == 0) {
|
||||
if(update)
|
||||
wifiSetConfig(settings);
|
||||
else
|
||||
wifiGetConfig(settings);
|
||||
}
|
||||
#if HASP_USE_MQTT > 0
|
||||
else if(strcmp_P(topic, PSTR("mqtt")) == 0) {
|
||||
else if(strcasecmp_P(topic, PSTR("mqtt")) == 0) {
|
||||
if(update)
|
||||
mqttSetConfig(settings);
|
||||
else
|
||||
@ -399,11 +399,11 @@ void dispatchConfig(const char * topic, const char * payload)
|
||||
}
|
||||
#endif
|
||||
#if HASP_USE_TELNET > 0
|
||||
// else if(strcmp_P(topic, PSTR("telnet")) == 0)
|
||||
// else if(strcasecmp_P(topic, PSTR("telnet")) == 0)
|
||||
// telnetGetConfig(settings[F("telnet")]);
|
||||
#endif
|
||||
#if HASP_USE_MDNS > 0
|
||||
else if(strcmp_P(topic, PSTR("mdns")) == 0) {
|
||||
else if(strcasecmp_P(topic, PSTR("mdns")) == 0) {
|
||||
if(update)
|
||||
mdnsSetConfig(settings);
|
||||
else
|
||||
@ -411,7 +411,7 @@ void dispatchConfig(const char * topic, const char * payload)
|
||||
}
|
||||
#endif
|
||||
#if HASP_USE_HTTP > 0
|
||||
else if(strcmp_P(topic, PSTR("http")) == 0) {
|
||||
else if(strcasecmp_P(topic, PSTR("http")) == 0) {
|
||||
if(update)
|
||||
httpSetConfig(settings);
|
||||
else
|
||||
|
@ -1286,10 +1286,11 @@ void webHandleHaspConfig()
|
||||
httpMessage += getOption(3, F("Mono"), themeid == 3);
|
||||
#endif
|
||||
#if LV_USE_THEME_MATERIAL == 1
|
||||
httpMessage += getOption(4, F("Material"), themeid == 4);
|
||||
httpMessage += getOption(4, F("Material Light"), themeid == 4);
|
||||
httpMessage += getOption(9, F("Material Dark"), themeid == 9);
|
||||
#endif
|
||||
#if LV_USE_THEME_ZEN == 1
|
||||
httpMessage += getOption(5, F("Zen"), themeid == 5);
|
||||
// httpMessage += getOption(5, F("Zen"), themeid == 5);
|
||||
#endif
|
||||
#if LV_USE_THEME_NEMO == 1
|
||||
httpMessage += getOption(6, F("Nemo"), themeid == 6);
|
||||
|
@ -303,7 +303,7 @@ static void mqtt_message_cb(char * topic_p, byte * payload, unsigned int length)
|
||||
}
|
||||
|
||||
// catch a dangling LWT from a previous connection if it appears
|
||||
if(!strcmp_P(topic, PSTR("status")) && !strcmp_P((char *)payload, PSTR("OFF"))) {
|
||||
if(!strcmp_P(topic, PSTR("status")) && !strcasecmp_P((char *)payload, PSTR("OFF"))) {
|
||||
char topicBuffer[128];
|
||||
snprintf_P(topicBuffer, sizeof(topicBuffer), PSTR("%sstatus"), mqttNodeTopic);
|
||||
mqttClient.publish(topicBuffer, "ON", true);
|
||||
|
@ -146,7 +146,7 @@ static void telnetProcessLine()
|
||||
}
|
||||
default:
|
||||
if(telnetInputIndex > 0) {
|
||||
if(strcmp_P(telnetInputBuffer, PSTR("exit")) == 0) {
|
||||
if(strcasecmp_P(telnetInputBuffer, PSTR("exit")) == 0) {
|
||||
telnetClientDisconnect();
|
||||
} else {
|
||||
dispatchCommand(telnetInputBuffer);
|
||||
|
@ -8,9 +8,9 @@
|
||||
[env:d1mini32-lolintft24]
|
||||
platform = espressif32@^1.12.0
|
||||
board = wemos_d1_mini32
|
||||
upload_port = COM5 ; To change the port, use platform_override.ini
|
||||
monitor_port = COM5 ; To change the port, use platform_override.ini
|
||||
board_build.partitions = default.csv
|
||||
upload_port = COM6 ; To change the port, use platform_override.ini
|
||||
monitor_port = COM6 ; To change the port, use platform_override.ini
|
||||
board_build.partitions = esp32_partition_app1300k_spiffs1216k.csv ; default.csv
|
||||
build_flags =
|
||||
${flags.esp32_flags}
|
||||
; -- TFT_eSPI build options ------------------------
|
||||
|
Loading…
x
Reference in New Issue
Block a user