diff --git a/src/drv/hasp_drv_touch.cpp b/src/drv/hasp_drv_touch.cpp
index 8cfa4318..1d36fae9 100644
--- a/src/drv/hasp_drv_touch.cpp
+++ b/src/drv/hasp_drv_touch.cpp
@@ -188,7 +188,7 @@ bool IRAM_ATTR drv_touch_read(lv_indev_drv_t * indev_driver, lv_indev_data_t * d
return false;
}
-void IRAM_ATTR drv_touch_loop()
+void drv_touch_loop()
{
#if TOUCH_DRIVER == 911
GT911_loop();
diff --git a/src/hasp/hasp.cpp b/src/hasp/hasp.cpp
index 54b92d2b..34fae42e 100644
--- a/src/hasp/hasp.cpp
+++ b/src/hasp/hasp.cpp
@@ -103,7 +103,7 @@ lv_font_t * hasp_get_font(uint8_t fontid)
/**
* Check if sleep state needs to be updated
*/
-bool IRAM_ATTR hasp_update_sleep_state()
+bool hasp_update_sleep_state()
{
uint32_t idle = lv_disp_get_inactive_time(NULL);
@@ -522,11 +522,11 @@ void haspClearPage(uint16_t pageid)
{
lv_obj_t * page = get_page_obj(pageid);
if(!page || (pageid > HASP_NUM_PAGES)) {
- Log.warning(TAG_HASP, F("Invalid page %u"), pageid);
+ Log.warning(TAG_HASP, F(D_HASP_INVALID_PAGE), pageid);
} else if(page == lv_layer_sys() /*|| page == lv_layer_top()*/) {
- Log.warning(TAG_HASP, F("Cannot clear system layer"));
+ Log.warning(TAG_HASP, F(D_HASP_INVALID_LAYER));
} else {
- Log.notice(TAG_HASP, F("Clearing page %u"), pageid);
+ Log.notice(TAG_HASP, F(D_HASP_CLEAR_PAGE), pageid);
lv_obj_clean(page);
}
}
@@ -540,9 +540,9 @@ void haspSetPage(uint8_t pageid)
{
lv_obj_t * page = get_page_obj(pageid);
if(!page || pageid == 0 || pageid > HASP_NUM_PAGES) {
- Log.warning(TAG_HASP, F("Invalid page %u"), pageid);
+ Log.warning(TAG_HASP, F(D_HASP_INVALID_PAGE), pageid);
} else {
- Log.notice(TAG_HASP, F("Changing page to %u"), pageid);
+ Log.notice(TAG_HASP, F(D_HASP_CHANGE_PAGE), pageid);
current_page = pageid;
lv_scr_load(page);
hasp_object_tree(page, pageid, 0);
diff --git a/src/hasp/hasp.h b/src/hasp/hasp.h
index 8e6a791e..1836dcbe 100644
--- a/src/hasp/hasp.h
+++ b/src/hasp/hasp.h
@@ -70,7 +70,7 @@ bool haspSetConfig(const JsonObject & settings);
lv_font_t * hasp_get_font(uint8_t fontid);
-bool IRAM_ATTR hasp_update_sleep_state();
+bool hasp_update_sleep_state();
void hasp_get_sleep_time(uint16_t & short_time, uint16_t & long_time);
void hasp_set_sleep_time(uint16_t short_time, uint16_t long_time);
diff --git a/src/hasp/hasp_attribute.cpp b/src/hasp/hasp_attribute.cpp
index bf3b3b8e..7e921a0d 100644
--- a/src/hasp/hasp_attribute.cpp
+++ b/src/hasp/hasp_attribute.cpp
@@ -371,7 +371,7 @@ static void my_btnmatrix_map_create(lv_obj_t * obj, const char * payload)
Log.verbose(TAG_ATTR, F("%s %d lbl addr: %x"), __FILE__, __LINE__, buffer_addr);
for(JsonVariant btn : arr) {
size_t len = btn.as().length() + 1;
- Log.verbose(TAG_ATTR, F(" * Adding button: %s (%d bytes) %x"), btn.as().c_str(), len,
+ Log.verbose(TAG_ATTR, F(D_BULLET"Adding button: %s (%d bytes) %x"), btn.as().c_str(), len,
buffer_addr + pos);
memccpy(buffer_addr + pos, btn.as().c_str(), 0, len); // Copy the label text into the buffer
map_data_str[index++] = buffer_addr + pos; // save pointer to the label in the array
@@ -423,7 +423,7 @@ static void line_set_points(lv_obj_t * obj, const char * payload)
JsonArray point = v.as(); // Parse point
point_arr[index].x = point[0].as();
point_arr[index].y = point[1].as();
- Log.verbose(TAG_ATTR, F(" * Adding point %d: %d,%d"), index, point_arr[index].x, point_arr[index].y);
+ Log.verbose(TAG_ATTR, F(D_BULLET"Adding point %d: %d,%d"), index, point_arr[index].x, point_arr[index].y);
index++;
}
@@ -1188,7 +1188,7 @@ static void hasp_local_style_attr(lv_obj_t * obj, const char * attr_p, uint16_t
/* Transition attributes */
// Todo
}
- Log.warning(TAG_ATTR, F("Unknown property %s"), attr_p);
+ Log.warning(TAG_ATTR, F(D_ATTRIBUTE_UNKNOWN), attr_p);
}
static void hasp_process_arc_attribute(lv_obj_t * obj, const char * attr_p, uint16_t attr_hash, const char * payload,
@@ -1232,7 +1232,7 @@ static void hasp_process_arc_attribute(lv_obj_t * obj, const char * attr_p, uint
return (update) ? lv_arc_set_end_angle(obj, val) : hasp_out_int(obj, attr, lv_arc_get_angle_end(obj));
}
- Log.warning(TAG_ATTR, F("Unknown property %s"), attr_p);
+ Log.warning(TAG_ATTR, F(D_ATTRIBUTE_UNKNOWN), attr_p);
}
static void hasp_process_lmeter_attribute(lv_obj_t * obj, const char * attr_p, uint16_t attr_hash, const char * payload,
@@ -1264,7 +1264,7 @@ static void hasp_process_lmeter_attribute(lv_obj_t * obj, const char * attr_p, u
return (update) ? lv_linemeter_set_scale(obj, val, line_count) : hasp_out_int(obj, attr, angle);
}
- Log.warning(TAG_ATTR, F("Unknown property %s"), attr_p);
+ Log.warning(TAG_ATTR, F(D_ATTRIBUTE_UNKNOWN), attr_p);
}
static void hasp_process_gauge_attribute(lv_obj_t * obj, const char * attr_p, uint16_t attr_hash, const char * payload,
@@ -1321,7 +1321,7 @@ static void hasp_process_gauge_attribute(lv_obj_t * obj, const char * attr_p, ui
return;
}
- Log.warning(TAG_ATTR, F("Unknown property %s"), attr_p);
+ Log.warning(TAG_ATTR, F(D_ATTRIBUTE_UNKNOWN), attr_p);
}
// ##################### Common Attributes ########################################################
@@ -1365,7 +1365,7 @@ static void hasp_process_obj_attribute_txt(lv_obj_t * obj, const char * attr, co
}
#endif
- Log.warning(TAG_ATTR, F("Unknown property %s"), attr);
+ Log.warning(TAG_ATTR, F(D_ATTRIBUTE_UNKNOWN), attr);
}
bool hasp_process_obj_attribute_val(lv_obj_t * obj, const char * attr, const char * payload, bool update)
@@ -1475,7 +1475,7 @@ static void hasp_process_obj_attribute_range(lv_obj_t * obj, const char * attr,
: hasp_out_int(obj, attr, set_min ? min : max);
}
- Log.warning(TAG_ATTR, F("Unknown property %s"), attr);
+ Log.warning(TAG_ATTR, F(D_ATTRIBUTE_UNKNOWN), attr);
}
// ##################### Default Attributes ########################################################
@@ -1491,7 +1491,7 @@ static void hasp_process_obj_attribute_range(lv_obj_t * obj, const char * attr,
void hasp_process_obj_attribute(lv_obj_t * obj, const char * attr_p, const char * payload, bool update)
{
// unsigned long start = millis();
- if(!obj) return Log.warning(TAG_ATTR, F("Unknown object"));
+ if(!obj) return Log.warning(TAG_ATTR, F(D_OBJECT_UNKNOWN));
int16_t val = atoi(payload);
char * attr = (char *)attr_p;
@@ -1760,21 +1760,21 @@ void hasp_process_obj_attribute(lv_obj_t * obj, const char * attr_p, const char
case ATTR_DELETE:
if(!lv_obj_get_parent(obj)) {
- return Log.error(TAG_ATTR, F("Unable to call %s on a page"), attr_p);
+ return Log.error(TAG_ATTR, F(D_ATTRIBUTE_PAGE_METHOD_INVALID), attr_p);
}
lv_obj_del_async(obj);
break; // attribute_found
case ATTR_TO_FRONT:
if(!lv_obj_get_parent(obj)) {
- return Log.error(TAG_ATTR, F("Unable to call %s on a page"), attr_p);
+ return Log.error(TAG_ATTR, F(D_ATTRIBUTE_PAGE_METHOD_INVALID), attr_p);
}
lv_obj_move_foreground(obj);
break; // attribute_found
case ATTR_TO_BACK:
if(!lv_obj_get_parent(obj)) {
- return Log.error(TAG_ATTR, F("Unable to call %s on a page"), attr_p);
+ return Log.error(TAG_ATTR, F(D_ATTRIBUTE_PAGE_METHOD_INVALID), attr_p);
}
lv_obj_move_background(obj);
break; // attribute_found
@@ -1789,5 +1789,5 @@ attribute_found:
return;
attribute_not_found:
- Log.warning(TAG_ATTR, F("Unknown property %s (%d)"), attr_p, attr_hash);
+ Log.warning(TAG_ATTR, F(D_ATTRIBUTE_UNKNOWN " (%d)"), attr_p, attr_hash);
}
\ No newline at end of file
diff --git a/src/hasp/hasp_dispatch.cpp b/src/hasp/hasp_dispatch.cpp
index 5edd5651..cda5c35c 100644
--- a/src/hasp/hasp_dispatch.cpp
+++ b/src/hasp/hasp_dispatch.cpp
@@ -87,7 +87,7 @@ bool dispatch_factory_reset()
void dispatch_json_error(uint8_t tag, DeserializationError & jsonError)
{
- Log.error(tag, F("JSON parsing failed: %s"), jsonError.c_str());
+ Log.error(tag, F(D_JSON_FAILED " %s"), jsonError.c_str());
}
// p[x].b[y].attr=value
@@ -175,7 +175,7 @@ void dispatch_command(const char * topic, const char * payload)
#if HASP_USE_WIFI > 0
} else if(!strcmp_P(topic, F_CONFIG_SSID) || !strcmp_P(topic, F_CONFIG_PASS)) {
- DynamicJsonDocument settings(45);
+ StaticJsonDocument<64> settings;
settings[topic] = payload;
wifiSetConfig(settings.as());
#endif // HASP_USE_WIFI
@@ -188,7 +188,7 @@ void dispatch_command(const char * topic, const char * payload)
// memset(item, 0, sizeof(item));
// strncpy(item, topic + 4, 4);
- DynamicJsonDocument settings(45);
+ StaticJsonDocument<64> settings;
settings[topic + 4] = payload;
mqttSetConfig(settings.as());
#endif // HASP_USE_MQTT
@@ -199,7 +199,7 @@ void dispatch_command(const char * topic, const char * payload)
if(strlen(payload) == 0) {
// dispatch_text_line(topic); // Could cause an infinite loop!
}
- Log.warning(TAG_MSGR, F("Command '%s' not found => %s"), topic, payload);
+ Log.warning(TAG_MSGR, F(D_DISPATCH_COMMAND_NOT_FOUND " => %s"), topic, payload);
}
}
@@ -258,11 +258,11 @@ void dispatch_text_line(const char * cmnd)
memcpy(topic, cmnd, sizeof(topic) - 1);
// topic is before '=', payload is after '=' position
- Log.notice(TAG_MSGR, F("%s = %s"), topic, cmnd + pos + 1);
+ Log.notice(TAG_MSGR, F("%s=%s"), topic, cmnd + pos + 1);
dispatch_topic_payload(topic, cmnd + pos + 1);
} else {
char empty_payload[1] = {0};
- Log.notice(TAG_MSGR, F("%s = %s"), cmnd, empty_payload);
+ Log.notice(TAG_MSGR, F("%s=%s"), cmnd, empty_payload);
dispatch_topic_payload(cmnd, empty_payload);
}
}
@@ -604,7 +604,7 @@ void dispatch_parse_json(const char *, const char * payload)
dispatch_text_line(json.as().c_str());
} else {
- Log.warning(TAG_MSGR, F("Failed to parse incoming JSON command"));
+ Log.warning(TAG_MSGR, F(D_DISPATCH_COMMAND_NOT_FOUND), payload);
}
}
@@ -617,32 +617,23 @@ void dispatch_parse_jsonl(std::istringstream & stream)
uint8_t savedPage = haspGetPage();
size_t line = 1;
DynamicJsonDocument jsonl(MQTT_MAX_PACKET_SIZE / 2 + 128); // max ~256 characters per line
- DeserializationError err = deserializeJson(jsonl, stream);
+ DeserializationError jsonError = deserializeJson(jsonl, stream);
stream.setTimeout(25);
// guiStop();
- while(err == DeserializationError::Ok) {
+ while(jsonError == DeserializationError::Ok) {
hasp_new_object(jsonl.as(), savedPage);
- err = deserializeJson(jsonl, stream);
+ jsonError = deserializeJson(jsonl, stream);
line++;
}
// guiStart();
/* For debugging pourposes */
- if(err == DeserializationError::EmptyInput) {
- Log.trace(TAG_MSGR, F("Jsonl parsed successfully"));
+ if(jsonError == DeserializationError::EmptyInput) {
+ Log.trace(TAG_MSGR, F(D_JSONL_SUCCEEDED));
- } else if(err == DeserializationError::InvalidInput || err == DeserializationError::IncompleteInput) {
- Log.error(TAG_MSGR, F("Jsonl: Invalid Input at object %d"), line);
-
- } else if(err == DeserializationError::NoMemory) {
- Log.error(TAG_MSGR, F("Jsonl: Object line %d is too long"), line);
-
- } else if(err == DeserializationError::NotSupported) {
- Log.error(TAG_MSGR, F("Jsonl: Not Supported at object %d"), line);
-
- } else if(err == DeserializationError::TooDeep) {
- Log.error(TAG_MSGR, F("Jsonl: Too Deep at object %d"), line);
+ } else {
+ Log.error(TAG_MSGR, F(D_JSONL_FAILED ": %s"), line, jsonError.c_str());
}
}
@@ -680,7 +671,7 @@ void dispatch_page(const char *, const char * page)
} else if(!strcasecmp_P(page, PSTR("next"))) {
dispatch_page_next();
} else {
- Log.warning(TAG_MSGR, PSTR("Invalid page %s"), page);
+ Log.warning(TAG_MSGR, PSTR(D_DISPATCH_INVALID_PAGE), page);
}
return;
}
@@ -794,7 +785,7 @@ void dispatch_backlight(const char *, const char * payload)
void dispatch_web_update(const char *, const char * espOtaUrl)
{
#if HASP_USE_OTA > 0
- Log.notice(TAG_MSGR, F("Checking for updates at URL: %s"), espOtaUrl);
+ Log.notice(TAG_MSGR, F(D_OTA_CHECK_UPDATE), espOtaUrl);
otaHttpUpdate(espOtaUrl);
#endif
}
@@ -815,7 +806,7 @@ void dispatch_reboot(bool saveConfig)
wifiStop();
#endif
Log.verbose(TAG_MSGR, F("-------------------------------------"));
- Log.notice(TAG_MSGR, F("HALT: Properly Rebooting the MCU now!"));
+ Log.notice(TAG_MSGR, F(D_DISPATCH_REBOOT));
Serial.flush();
halRestartMcu();
}
@@ -904,7 +895,7 @@ void dispatch_factory_reset(const char *, const char *)
static void dispatch_add_command(const char * p_cmdstr, void (*func)(const char *, const char *))
{
if(nCommands >= sizeof(commands) / sizeof(haspCommand_t)) {
- Log.fatal(TAG_MSGR, F("CMD overflow %d"), nCommands);
+ Log.fatal(TAG_MSGR, F("CMD_OVERFLOW %d"), nCommands);
while(1) {
}
} else {
diff --git a/src/hasp/hasp_object.cpp b/src/hasp/hasp_object.cpp
index 609e15d7..9f751be1 100644
--- a/src/hasp/hasp_object.cpp
+++ b/src/hasp/hasp_object.cpp
@@ -324,13 +324,13 @@ void generic_event_handler(lv_obj_t * obj, lv_event_t event)
return;
case LV_EVENT_DELETE:
- Log.verbose(TAG_HASP, F("Object deleted Event %d occured"), event);
+ Log.verbose(TAG_HASP, F(D_OBJECT_DELETED));
hasp_object_delete(obj); // free and destroy persistent memory allocated for certain objects
last_press_was_short = false;
return;
default:
- Log.warning(TAG_HASP, F("Unknown Event %d occured"), event);
+ Log.warning(TAG_HASP, F(D_OBJECT_EVENT_UNKNOWN), event);
last_press_was_short = false;
return;
}
@@ -388,7 +388,7 @@ void toggle_event_handler(lv_obj_t * obj, lv_event_t event)
dispatch_normalized_group_value(obj->user_data.groupid, NORMALIZE(val, 0, 1), obj);
} else if(event == LV_EVENT_DELETE) {
- Log.verbose(TAG_HASP, F("Object deleted Event %d occured"), event);
+ Log.verbose(TAG_HASP, F(D_OBJECT_DELETED));
hasp_object_delete(obj);
}
}
@@ -450,7 +450,7 @@ static void selector_event_handler(lv_obj_t * obj, lv_event_t event)
if(max > 0) dispatch_normalized_group_value(obj->user_data.groupid, NORMALIZE(val, 0, max), obj);
} else if(event == LV_EVENT_DELETE) {
- Log.verbose(TAG_HASP, F("Object deleted Event %d occured"), event);
+ Log.verbose(TAG_HASP, F(D_OBJECT_DELETED));
hasp_object_delete(obj);
}
}
@@ -495,7 +495,7 @@ void slider_event_handler(lv_obj_t * obj, lv_event_t event)
dispatch_normalized_group_value(obj->user_data.groupid, NORMALIZE(val, min, max), obj);
} else if(event == LV_EVENT_DELETE) {
- Log.verbose(TAG_HASP, F("Object deleted Event %d occured"), event);
+ Log.verbose(TAG_HASP, F(D_OBJECT_DELETED));
hasp_object_delete(obj);
}
}
@@ -514,7 +514,7 @@ static void cpicker_event_handler(lv_obj_t * obj, lv_event_t event)
hasp_update_sleep_state(); // wakeup?
hasp_send_obj_attribute_color(obj, color, lv_cpicker_get_color(obj));
} else if(event == LV_EVENT_DELETE) {
- Log.verbose(TAG_HASP, F("Object deleted Event %d occured"), event);
+ Log.verbose(TAG_HASP, F(D_OBJECT_DELETED));
hasp_object_delete(obj);
}
}
@@ -586,7 +586,7 @@ void hasp_process_attribute(uint8_t pageid, uint8_t objid, const char * attr, co
if(lv_obj_t * obj = hasp_find_obj_from_parent_id(get_page_obj(pageid), objid)) {
hasp_process_obj_attribute(obj, attr, payload, strlen(payload) > 0);
} else {
- Log.warning(TAG_HASP, F("Unknown object " HASP_OBJECT_NOTATION ""), pageid, objid);
+ Log.warning(TAG_HASP, F(D_OBJECT_UNKNOWN " " HASP_OBJECT_NOTATION), pageid, objid);
}
}
@@ -604,7 +604,7 @@ void hasp_new_object(const JsonObject & config, uint8_t & saved_page_id)
uint8_t pageid = config[F("page")].isNull() ? saved_page_id : config[F("page")].as();
lv_obj_t * parent_obj = get_page_obj(pageid);
if(!parent_obj) {
- return Log.warning(TAG_HASP, F("Page ID %u not defined"), pageid);
+ return Log.warning(TAG_HASP, F(D_OBJECT_PAGE_UNKNOWN), pageid);
} else {
saved_page_id = pageid; /* save the current pageid */
}
@@ -627,10 +627,9 @@ void hasp_new_object(const JsonObject & config, uint8_t & saved_page_id)
/* Define Objects*/
lv_obj_t * obj = hasp_find_obj_from_parent_id(parent_obj, id);
- if(obj) {
- // return Log.warning(TAG_HASP, F("Object ID %u already exists!"), id);
+ if(!obj) {
- } else {
+ /* Create the object first */
/* Validate type */
if(config[F("objid")].isNull()) { // TODO: obsolete objid
@@ -950,7 +949,7 @@ void hasp_new_object(const JsonObject & config, uint8_t & saved_page_id)
/* No object was actually created */
if(!obj) {
- return Log.error(TAG_HASP, F("Object ID %u is NULL, skipping..."), id);
+ return Log.error(TAG_HASP, F(D_OBJECT_CREATE_FAILED), id);
}
// Prevent losing press when the press is slid out of the objects.
@@ -965,18 +964,18 @@ void hasp_new_object(const JsonObject & config, uint8_t & saved_page_id)
/** testing start **/
uint8_t temp;
if(!hasp_find_id_from_obj(obj, &pageid, &temp)) {
- return Log.error(TAG_HASP, F("Lost track of the created object, not found!"));
+ return Log.error(TAG_HASP, F(D_OBJECT_LOST));
}
/** verbose reporting **/
lv_obj_type_t list;
lv_obj_get_type(obj, &list);
- Log.verbose(TAG_HASP, F(" * " HASP_OBJECT_NOTATION " = %s"), pageid, temp, list.type[0]);
+ Log.verbose(TAG_HASP, F(D_BULLET HASP_OBJECT_NOTATION " = %s"), pageid, temp, list.type[0]);
/* test double-check */
lv_obj_t * test = hasp_find_obj_from_parent_id(get_page_obj(pageid), (uint8_t)temp);
if(test != obj) {
- return Log.error(TAG_HASP, F("Objects DO NOT match!"));
+ return Log.error(TAG_HASP, F(D_OBJECT_MISMATCH));
}
}
diff --git a/src/hasp_config.cpp b/src/hasp_config.cpp
index 70c209a3..461e9b45 100644
--- a/src/hasp_config.cpp
+++ b/src/hasp_config.cpp
@@ -3,26 +3,26 @@
#if HASP_USE_CONFIG > 0
-#include "ArduinoJson.h"
-#include "StreamUtils.h" // For EEPromStream
+ #include "ArduinoJson.h"
+ #include "StreamUtils.h" // For EEPromStream
-#include "hasp_conf.h"
+ #include "hasp_conf.h"
-#include "hasp_config.h"
-#include "hasp_debug.h"
-#include "hasp_gui.h"
+ #include "hasp_config.h"
+ #include "hasp_debug.h"
+ #include "hasp_gui.h"
-//#include "hasp_ota.h" included in conf
-//#include "hasp_filesystem.h" included in conf
-//#include "hasp_telnet.h" included in conf
-//#include "hasp_gpio.h" included in conf
+ //#include "hasp_ota.h" included in conf
+ //#include "hasp_filesystem.h" included in conf
+ //#include "hasp_telnet.h" included in conf
+ //#include "hasp_gpio.h" included in conf
-//#include "hasp_eeprom.h"
-#include "hasp/hasp.h"
+ //#include "hasp_eeprom.h"
+ #include "hasp/hasp.h"
-#if HASP_USE_EEPROM > 0
-#include "EEPROM.h"
-#endif
+ #if HASP_USE_EEPROM > 0
+ #include "EEPROM.h"
+ #endif
void confDebugSet(const __FlashStringHelper * fstr_name)
{
@@ -73,17 +73,17 @@ void configStartDebug(bool setupdebug, String & configFile)
{
if(setupdebug) {
debugStart(); // Debug started, now we can use it; HASP header sent
-#if HASP_USE_SPIFFS > 0 || HASP_USE_LITTLEFS > 0
+ #if HASP_USE_SPIFFS > 0 || HASP_USE_LITTLEFS > 0
Log.trace(TAG_CONF, F("[SUCCESS] SPI flash FS mounted"));
filesystemInfo();
filesystemList();
-#endif
+ #endif
}
-#if HASP_USE_SPIFFS > 0 || HASP_USE_LITTLEFS > 0
+ #if HASP_USE_SPIFFS > 0 || HASP_USE_LITTLEFS > 0
Log.notice(TAG_CONF, F("Loading %s"), configFile.c_str());
-#else
+ #else
Log.notice(TAG_CONF, F("reading EEPROM"));
-#endif
+ #endif
}
void configGetConfig(JsonDocument & settings, bool setupdebug = false)
@@ -93,7 +93,7 @@ void configGetConfig(JsonDocument & settings, bool setupdebug = false)
configFile = String(FPSTR(HASP_CONFIG_FILE));
DeserializationError error;
-#if HASP_USE_SPIFFS > 0 || HASP_USE_LITTLEFS > 0
+ #if HASP_USE_SPIFFS > 0 || HASP_USE_LITTLEFS > 0
File file = HASP_FS.open(configFile, "r");
if(file) {
@@ -116,7 +116,7 @@ void configGetConfig(JsonDocument & settings, bool setupdebug = false)
// show settings in log
String output;
serializeJson(settings, output);
- String passmask = F("********");
+ String passmask = F(D_PASSWORD_MASK);
output.replace(settings[F("http")][F("pass")].as(), passmask);
output.replace(settings[F("mqtt")][F("pass")].as(), passmask);
output.replace(settings[F("wifi")][F("pass")].as(), passmask);
@@ -127,14 +127,14 @@ void configGetConfig(JsonDocument & settings, bool setupdebug = false)
return;
}
}
-#else
+ #else
-#if HASP_USE_EEPROM > 0
+ #if HASP_USE_EEPROM > 0
EepromStream eepromStream(0, 1024);
error = deserializeJson(settings, eepromStream);
-#endif
+ #endif
-#endif
+ #endif
// File does not exist or error reading file
if(setupdebug) {
@@ -142,9 +142,9 @@ void configGetConfig(JsonDocument & settings, bool setupdebug = false)
}
configStartDebug(setupdebug, configFile);
-#if HASP_USE_SPIFFS > 0 || HASP_USE_LITTLEFS > 0
+ #if HASP_USE_SPIFFS > 0 || HASP_USE_LITTLEFS > 0
Log.error(TAG_CONF, F("Failed to load %s"), configFile.c_str());
-#endif
+ #endif
}
/*
void configBackupToEeprom()
@@ -204,7 +204,7 @@ void configWriteConfig()
bool changed = false;
const __FlashStringHelper * module;
-#if HASP_USE_WIFI > 0
+ #if HASP_USE_WIFI > 0
module = F("wifi");
if(settings[module].as().isNull()) settings.createNestedObject(module);
changed = wifiGetConfig(settings[module]);
@@ -213,9 +213,9 @@ void configWriteConfig()
configOutput(settings[module], TAG_WIFI);
writefile = true;
}
-#endif
+ #endif
-#if HASP_USE_MQTT > 0
+ #if HASP_USE_MQTT > 0
module = F("mqtt");
if(settings[module].as().isNull()) settings.createNestedObject(module);
changed = mqttGetConfig(settings[module]);
@@ -224,9 +224,9 @@ void configWriteConfig()
configOutput(settings[module], TAG_MQTT);
writefile = true;
}
-#endif
+ #endif
-#if HASP_USE_TELNET > 0
+ #if HASP_USE_TELNET > 0
module = F("telnet");
if(settings[module].as().isNull()) settings.createNestedObject(module);
changed = telnetGetConfig(settings[module]);
@@ -235,9 +235,9 @@ void configWriteConfig()
configOutput(settings[module], TAG_TELN);
writefile = true;
}
-#endif
+ #endif
-#if HASP_USE_MDNS > 0
+ #if HASP_USE_MDNS > 0
module = F("mdns");
if(settings[module].as().isNull()) settings.createNestedObject(module);
changed = mdnsGetConfig(settings[module]);
@@ -246,9 +246,9 @@ void configWriteConfig()
configOutput(settings[module], TAG_MDNS);
writefile = true;
}
-#endif
+ #endif
-#if HASP_USE_HTTP > 0
+ #if HASP_USE_HTTP > 0
if(settings[F("http")].as().isNull()) settings.createNestedObject(F("http"));
changed = httpGetConfig(settings[F("http")]);
if(changed) {
@@ -256,9 +256,9 @@ void configWriteConfig()
configOutput(settings[F("http")], TAG_HTTP);
writefile = true;
}
-#endif
+ #endif
-#if HASP_USE_GPIO > 0
+ #if HASP_USE_GPIO > 0
module = F("gpio");
if(settings[module].as().isNull()) settings.createNestedObject(module);
changed = gpioGetConfig(settings[module]);
@@ -267,7 +267,7 @@ void configWriteConfig()
configOutput(settings[module], TAG_GPIO);
writefile = true;
}
-#endif
+ #endif
module = F("debug");
if(settings[module].as().isNull()) settings.createNestedObject(module);
@@ -297,7 +297,7 @@ void configWriteConfig()
// changed |= otaGetConfig(settings[F("ota")].as());
if(writefile) {
-#if HASP_USE_SPIFFS > 0 || HASP_USE_LITTLEFS > 0
+ #if HASP_USE_SPIFFS > 0 || HASP_USE_LITTLEFS > 0
File file = HASP_FS.open(configFile, "w");
if(file) {
Log.notice(TAG_CONF, F("Writing %s"), configFile.c_str());
@@ -312,7 +312,7 @@ void configWriteConfig()
} else {
Log.error(TAG_CONF, F("Failed to write %s"), configFile.c_str());
}
-#endif
+ #endif
// Method 1
// Log.trace(TAG_CONF,F("Writing to EEPROM"));
@@ -322,7 +322,7 @@ void configWriteConfig()
// bufferedWifiClient.flush(); // <- OPTIONAL
// eepromStream.flush(); // (for ESP)
-#if defined(STM32F4xx)
+ #if defined(STM32F4xx)
// Method 2
Log.trace(TAG_CONF, F("Writing to EEPROM"));
char buffer[1024 + 128];
@@ -336,7 +336,7 @@ void configWriteConfig()
} else {
Log.error(TAG_CONF, F("Failed to save config to EEPROM"));
}
-#endif
+ #endif
} else {
Log.trace(TAG_CONF, F("Configuration did not change"));
@@ -353,19 +353,19 @@ void configSetup()
Serial.println(__LINE__);
if(i == 0) {
-#if HASP_USE_SPIFFS > 0
+ #if HASP_USE_SPIFFS > 0
EepromStream eepromStream(0, 2048);
DeserializationError err = deserializeJson(settings, eepromStream);
-#else
+ #else
continue;
-#endif
+ #endif
} else {
-#if HASP_USE_SPIFFS > 0 || HASP_USE_LITTLEFS > 0
+ #if HASP_USE_SPIFFS > 0 || HASP_USE_LITTLEFS > 0
if(!filesystemSetup()) {
Log.error(TAG_CONF, F("FILE: SPI flash init failed. Unable to mount FS: Using default settings..."));
return;
}
-#endif
+ #endif
configGetConfig(settings, true);
}
@@ -378,35 +378,35 @@ void configSetup()
haspSetConfig(settings[F("hasp")]);
// otaGetConfig(settings[F("ota")]);
-#if HASP_USE_WIFI > 0
+ #if HASP_USE_WIFI > 0
Log.trace(TAG_WIFI, F("Loading WiFi settings"));
wifiSetConfig(settings[F("wifi")]);
-#endif
+ #endif
-#if HASP_USE_MQTT > 0
+ #if HASP_USE_MQTT > 0
Log.trace(TAG_MQTT, F("Loading MQTT settings"));
mqttSetConfig(settings[F("mqtt")]);
-#endif
+ #endif
-#if HASP_USE_TELNET > 0
+ #if HASP_USE_TELNET > 0
Log.trace(TAG_TELN, F("Loading Telnet settings"));
telnetSetConfig(settings[F("telnet")]);
-#endif
+ #endif
-#if HASP_USE_MDNS > 0
+ #if HASP_USE_MDNS > 0
Log.trace(TAG_MDNS, F("Loading MDNS settings"));
mdnsSetConfig(settings[F("mdns")]);
-#endif
+ #endif
-#if HASP_USE_HTTP > 0
+ #if HASP_USE_HTTP > 0
Log.trace(TAG_HTTP, F("Loading HTTP settings"));
httpSetConfig(settings[F("http")]);
-#endif
+ #endif
-#if HASP_USE_GPIO > 0
+ #if HASP_USE_GPIO > 0
Log.trace(TAG_GPIO, F("Loading GPIO settings"));
gpioSetConfig(settings[F("gpio")]);
-#endif
+ #endif
Log.trace(TAG_CONF, F("User configuration loaded"));
}
@@ -421,7 +421,7 @@ void configOutput(const JsonObject & settings, uint8_t tag)
String passmask((char *)0);
passmask.reserve(128);
- passmask = F("\"pass\":\"********\"");
+ passmask = F("\"pass\":\"" D_PASSWORD_MASK "\"");
String password((char *)0);
password.reserve(128);
@@ -460,7 +460,7 @@ void configOutput(const JsonObject & settings, uint8_t tag)
bool configClearEeprom()
{
-#if defined(STM32F4xx)
+ #if defined(STM32F4xx)
Log.notice(TAG_CONF, F("Clearing EEPROM"));
char buffer[1024 + 128];
memset(buffer, 1, sizeof(buffer));
@@ -475,11 +475,11 @@ bool configClearEeprom()
Log.error(TAG_CONF, F("Failed to clear to EEPROM"));
return false;
}
-#elif HASP_USE_SPIFFS > 0 || HASP_USE_LITTLEFS > 0
+ #elif HASP_USE_SPIFFS > 0 || HASP_USE_LITTLEFS > 0
return HASP_FS.format();
-#else
+ #else
return false;
-#endif
+ #endif
}
#endif // HAS_USE_CONFIG
\ No newline at end of file
diff --git a/src/hasp_debug.cpp b/src/hasp_debug.cpp
index 872a9c40..09236cbb 100644
--- a/src/hasp_debug.cpp
+++ b/src/hasp_debug.cpp
@@ -151,7 +151,7 @@ void debugSetup()
{
// memset(serialInputBuffer, 0, sizeof(serialInputBuffer));
// serialInputIndex = 0;
- Log.notice(TAG_DEBG, F("Setting the console parser"));
+ Log.notice(TAG_DEBG, F(D_SERVICE_STARTING)); // Starting console
debugConsole.setLineCallback(dispatch_text_line);
}
@@ -172,10 +172,10 @@ void debugStartSyslog()
if(syslogClient) {
if(syslogClient->beginPacket(debugSyslogHost, debugSyslogPort)) {
Log.registerOutput(2, syslogClient, LOG_LEVEL_VERBOSE, true);
- Log.trace(TAG_DEBG, F("Syslog client started"));
+ Log.trace(TAG_SYSL, F(D_SERVICE_STARTED));
}
} else {
- Log.error(TAG_DEBG, F("Failed to start syslog client"));
+ Log.error(TAG_SYSL, F(D_SERVICE_START_FAILED));
}
}
#endif
@@ -185,6 +185,7 @@ void debugStopSyslog()
{
#if HASP_USE_SYSLOG > 0
if(strlen(debugSyslogHost) > 0) {
+ Log.warning(TAG_SYSL, F(D_SERVICE_STOPPED));
Log.unregisterOutput(2);
}
#endif
diff --git a/src/hasp_debug.h b/src/hasp_debug.h
index 64e5fa16..6851281d 100644
--- a/src/hasp_debug.h
+++ b/src/hasp_debug.h
@@ -8,6 +8,8 @@
#include "ArduinoLog.h"
#include "lvgl.h"
+#include "lang/lang.h"
+
/* ===== Default Event Processors ===== */
void debugPreSetup(JsonObject settings);
void debugSetup();
diff --git a/src/hasp_gpio.cpp b/src/hasp_gpio.cpp
index 7f19e2f7..4c1f2539 100644
--- a/src/hasp_gpio.cpp
+++ b/src/hasp_gpio.cpp
@@ -318,7 +318,7 @@ void gpio_set_normalized_value(hasp_gpio_config_t gpio, uint16_t state)
default:
return;
}
- Log.verbose(TAG_GPIO, F(" * Group %d - Pin %d = %d"), gpio.group, gpio.pin, gpio.val);
+ Log.verbose(TAG_GPIO, F(D_BULLET "Group %d - Pin %d = %d"), gpio.group, gpio.pin, gpio.val);
}
// void gpio_set_group_onoff(uint8_t groupid, bool ison)
diff --git a/src/hasp_oobe.cpp b/src/hasp_oobe.cpp
index ec2178f1..557121f6 100644
--- a/src/hasp_oobe.cpp
+++ b/src/hasp_oobe.cpp
@@ -57,7 +57,7 @@ static void peek_password_cb(lv_obj_t * obj, lv_event_t event)
static void kb_event_cb(lv_obj_t * event_kb, lv_event_t event)
{
if(event == LV_EVENT_APPLY) {
- DynamicJsonDocument settings(256);
+ StaticJsonDocument<256> settings;
char ssid[32] = "";
char pass[32] = "";
lv_obj_t * obj;
@@ -77,7 +77,7 @@ static void kb_event_cb(lv_obj_t * event_kb, lv_event_t event)
if(strlen(ssid) > 0 && wifiValidateSsid(ssid, pass)) {
wifiSetConfig(settings.as());
- Log.notice(TAG_OOBE, F("SSID %s validated"), ssid);
+ Log.notice(TAG_OOBE, F(D_OOBE_SSID_VALIDATED), ssid);
dispatch_reboot(true);
}
@@ -324,10 +324,10 @@ bool oobeSetup()
lv_obj_set_click(lv_disp_get_layer_sys(NULL), true);
if(oobeAutoCalibrate) {
lv_obj_set_event_cb(lv_disp_get_layer_sys(NULL), oobe_calibrate_cb);
- Log.trace(TAG_OOBE, F("Enabled Auto Calibrate on touch"));
+ Log.trace(TAG_OOBE, F(D_OOBE_AUTO_CALIBRATE));
} else {
lv_obj_set_event_cb(lv_disp_get_layer_sys(NULL), gotoPage1_cb);
- Log.trace(TAG_OOBE, F("Already calibrated"));
+ Log.trace(TAG_OOBE, F(D_OOBE_CALIBRATED));
}
oobeSetPage(0);
return true;
@@ -355,9 +355,9 @@ void oobeFakeSetup(const char *, const char *)
if(oobeAutoCalibrate) {
lv_obj_set_click(lv_disp_get_layer_sys(NULL), true);
lv_obj_set_event_cb(lv_disp_get_layer_sys(NULL), oobe_calibrate_cb);
- Log.trace(TAG_OOBE, F("Enabled Auto Calibrate on touch"));
+ Log.trace(TAG_OOBE, F(D_OOBE_AUTO_CALIBRATE));
} else {
- Log.trace(TAG_OOBE, F("Already calibrated"));
+ Log.trace(TAG_OOBE, F(D_OOBE_CALIBRATED));
}
#endif
}
diff --git a/src/lang/en_US.h b/src/lang/en_US.h
new file mode 100644
index 00000000..9cc557b9
--- /dev/null
+++ b/src/lang/en_US.h
@@ -0,0 +1,110 @@
+#ifndef HASP_LANG_EN_US_H
+#define HASP_LANG_EN_US_H
+
+#define D_SERVICE_STARTING "Starting..."
+#define D_SERVICE_STARTED "Started"
+#define D_SERVICE_START_FAILED "Failed to start"
+#define D_SERVICE_STOPPED "Stopped"
+#define D_SERVICE_DISABLED "Disabled"
+#define D_SERVICE_CONNECTED "Connected"
+#define D_SERVICE_DISCONNECTED "Disconnected"
+
+#define D_NETWORK_IP_ADDRESS_RECEIVED "Received IP address %s"
+#define D_NETWORK_ONLINE "online"
+#define D_NETWORK_OFFLINE "offline"
+#define D_NETWORK_CONNECTION_FAILED "Connection failed"
+
+#define D_MQTT_DEFAULT_NAME "plate_%s"
+#define D_MQTT_CONNECTING "Connecting..."
+#define D_MQTT_CONNECTED "Connected to broker %s as clientID %s"
+#define D_MQTT_NOT_CONNECTED "Not connected ???"
+#define D_MQTT_DISCONNECTING "Disconnecting..."
+#define D_MQTT_DISCONNECTED "Disconnected"
+#define D_MQTT_RECONNECTING "Disconnected from broker, reconnection..."
+#define D_MQTT_NOT_CONFIGURED "Broker not configured"
+#define D_MQTT_STARTED "Started: %d bytes"
+#define D_MQTT_FAILED "Failed:"
+#define D_MQTT_INVALID_TOPIC "Message has invalid topic"
+#define D_MQTT_SUBSCRIBED "Subscribed to %s"
+#define D_MQTT_NOT_SUBSCRIBED "Failed to subscribe to %s"
+#define D_MQTT_HA_AUTO_DISCOVERY "Register HA auto-discovery"
+
+#define D_TELNET_CLOSING_CONNECTION "Closing session from %s"
+#define D_TELNET_CLIENT_LOGIN_FROM "Client login from %s"
+#define D_TELNET_CLIENT_CONNECT_FROM "Client connected from %s"
+#define D_TELNET_CLIENT_NOT_CONNECTED "Client NOT connected"
+#define D_TELNET_USERNAME "Username:"
+#define D_TELNET_PASSWORD "Password:"
+#define D_TELNET_AUTHENTICATION_FAILED "Authorization failed!"
+#define D_TELNET_INCORRECT_LOGIN_ATTEMPT "Incorrect login attempt from %s"
+#define D_TELNET_STARTED "Telnet console started"
+#define D_TELNET_FAILED "Failed to start telnet console"
+#define D_TELNET_CLIENT_CONNECTED "Client connected"
+#define D_TELNET_CLIENT_NOT_CONNECTED "Client NOT connected"
+#define D_TELNET_CLIENT_REJECTED "Client rejected"
+
+#define D_HASP_INVALID_PAGE "Invalid page %u"
+#define D_HASP_INVALID_LAYER "Cannot clear system layer"
+#define D_HASP_CHANGE_PAGE "Changing page to %u"
+#define D_HASP_CLEAR_PAGE "Clearing page %u"
+
+#define D_OBJECT_DELETED "Object deleted"
+#define D_OBJECT_UNKNOWN "Unknown object"
+#define D_OBJECT_MISMATCH "Objects DO NOT match!"
+#define D_OBJECT_LOST "Lost object!"
+#define D_OBJECT_CREATE_FAILED "Object %u failed"
+#define D_OBJECT_PAGE_UNKNOWN "Page ID %u not defined"
+#define D_OBJECT_EVENT_UNKNOWN "Unknown Event %d"
+
+#define D_ATTRIBUTE_UNKNOWN "Unknown property %s"
+#define D_ATTRIBUTE_PAGE_METHOD_INVALID "Unable to call %s on a page"
+
+#define D_OOBE_SSID_VALIDATED "SSID %s validated"
+#define D_OOBE_AUTO_CALIBRATE "Auto calibrate enabled"
+#define D_OOBE_CALIBRATED "Already calibrated"
+
+#define D_DISPATCH_COMMAND_NOT_FOUND "Command '%s' not found"
+#define D_DISPATCH_INVALID_PAGE "Invalid page %s"
+#define D_DISPATCH_REBOOT "Rebooting the MCU now!"
+
+#define D_JSON_FAILED "JSON parsing failed:"
+#define D_JSONL_FAILED "JSONL parsing failed at line %d"
+#define D_JSONL_SUCCEEDED "Jsonl fully parsed"
+
+#define D_OTA_CHECK_UPDATE "Checking updates URL: %s"
+#define D_OTA_CHECK_COMPLETE "Update check complete"
+#define D_OTA_CHECK_FAILED "Update check failed: %s"
+#define D_OTA_UPDATE_FIRMWARE "OTA Update firmware"
+#define D_OTA_UPDATE_COMPLETE "OTA Update complete"
+#define D_OTA_UPDATE_APPLY "Applying Firmware & Reboot"
+#define D_OTA_UPDATE_FAILED "OTA Update failed"
+
+#define D_HTTP_HASP_DESIGN "HASP Design"
+#define D_HTTP_INFORMATION "Information"
+#define D_HTTP_HTTP_SETTINGS "HTTP Settings"
+#define D_HTTP_WIFI_SETTINGS "Wifi Settings"
+#define D_HTTP_MQTT_SETTINGS "MQTT Settings"
+#define D_HTTP_GPIO_SETTINGS "GPIO Settings"
+#define D_HTTP_MDNS_SETTINGS "mDNS Settings"
+#define D_HTTP_TELNET_SETTINGS "Telnet Settings"
+#define D_HTTP_DEBUG_SETTINGS "Debug Settings"
+#define D_HTTP_GUI_SETTINGS "Display Settings"
+#define D_HTTP_SAVE_SETTINGS "Save Settings"
+#define D_HTTP_UPLOAD_FILE "Upload File"
+#define D_HTTP_ERASE_DEVICE "Reset All Settings"
+#define D_HTTP_ADD_GPIO "Add New Pin"
+#define D_HTTP_BACK "Back"
+#define D_HTTP_REFRESH "Refresh"
+#define D_HTTP_PREV_PAGE "Prev Page"
+#define D_HTTP_NEXT_PAGE "Next Page"
+#define D_HTTP_CALIBRATE "Calibrate"
+#define D_HTTP_SCREENSHOT "Screenshot"
+#define D_HTTP_FILE_BROWSER "File Browser"
+#define D_HTTP_FIRMWARE_UPGRADE "Firmware Upgrade"
+#define D_HTTP_UPDATE_FIRMWARE "Update Firmware"
+#define D_HTTP_FACTORY_RESET "Factory Reset"
+#define D_HTTP_MAIN_MENU "Main Menu"
+#define D_HTTP_REBOOT "Restart"
+#define D_HTTP_CONFIGURATION "Configuration"
+
+#endif
\ No newline at end of file
diff --git a/src/lang/lang.h b/src/lang/lang.h
new file mode 100644
index 00000000..23b1ceea
--- /dev/null
+++ b/src/lang/lang.h
@@ -0,0 +1,9 @@
+#ifndef HASP_LANG_H
+#define HASP_LANG_H
+
+#include "nl_NL.h"
+
+#define D_PASSWORD_MASK "********"
+#define D_BULLET " * "
+
+#endif
\ No newline at end of file
diff --git a/src/lang/nl_NL.h b/src/lang/nl_NL.h
new file mode 100644
index 00000000..1da41df2
--- /dev/null
+++ b/src/lang/nl_NL.h
@@ -0,0 +1,110 @@
+#ifndef HASP_LANG_EN_US_H
+#define HASP_LANG_EN_US_H
+
+#define D_SERVICE_STARTING "Starten..."
+#define D_SERVICE_STARTED "Gestart"
+#define D_SERVICE_START_FAILED "Starten mislukt"
+#define D_SERVICE_STOPPED "Gestopt"
+#define D_SERVICE_DISABLED "Uitgeschakeld"
+#define D_SERVICE_CONNECTED "Verbonden"
+#define D_SERVICE_DISCONNECTED "Verbroken"
+
+#define D_NETWORK_IP_ADDRESS_RECEIVED "IP adres %s ontvangen"
+#define D_NETWORK_ONLINE "online"
+#define D_NETWORK_OFFLINE "offline"
+#define D_NETWORK_CONNECTION_FAILED "Verbinding mislukt"
+
+#define D_MQTT_DEFAULT_NAME "plaat_%s"
+#define D_MQTT_CONNECTING "Verbinden..."
+#define D_MQTT_CONNECTED "Verbonden met broker %s als clientID %s"
+#define D_MQTT_NOT_CONNECTED "Niet verbonden ???"
+#define D_MQTT_DISCONNECTING "Verbinding verbreken..."
+#define D_MQTT_DISCONNECTED "Verbinding verbroken"
+#define D_MQTT_RECONNECTING "Verbinding verbroken, opnieuw verbinden..."
+#define D_MQTT_NOT_CONFIGURED "Broker niet ingesteld"
+#define D_MQTT_STARTED "Gestart: %d bytes"
+#define D_MQTT_FAILED "Mislukt:"
+#define D_MQTT_INVALID_TOPIC "Boodschap met ongeldig onderwerp"
+#define D_MQTT_SUBSCRIBED "Ingeschreven op %s"
+#define D_MQTT_NOT_SUBSCRIBED "Inschrijving op %s mislukt"
+#define D_MQTT_HA_AUTO_DISCOVERY "Registeren HA auto-configuratie"
+
+#define D_TELNET_CLOSING_CONNECTION "Sessie sluiten van %s"
+#define D_TELNET_CLIENT_LOGIN_FROM "Client aangemeld van %s"
+#define D_TELNET_CLIENT_CONNECT_FROM "Client verbonden van %s"
+#define D_TELNET_CLIENT_NOT_CONNECTED "Client NIET vzebonden"
+#define D_TELNET_USERNAME "Gebruikersnaam:"
+#define D_TELNET_PASSWORD "Wachtwoord:"
+#define D_TELNET_AUTHENTICATION_FAILED "Autorisatie mislukt!"
+#define D_TELNET_INCORRECT_LOGIN_ATTEMPT "Aanmelding van %s mislukt"
+#define D_TELNET_STARTED "Telnet console gestart"
+#define D_TELNET_FAILED "Telnet console starten is mislukt"
+#define D_TELNET_CLIENT_CONNECTED "Client verbonden"
+#define D_TELNET_CLIENT_NOT_CONNECTED "Client NIET verbonden"
+#define D_TELNET_CLIENT_REJECTED "Client geweigerd"
+
+#define D_HASP_INVALID_PAGE "Ongeldige pagina %u"
+#define D_HASP_INVALID_LAYER "Kan systeemlaag niet wissen"
+#define D_HASP_CHANGE_PAGE "Pagina %u laden"
+#define D_HASP_CLEAR_PAGE "Pagina %u wissen"
+
+#define D_OBJECT_DELETED "Object verwijderd"
+#define D_OBJECT_UNKNOWN "Onbekend object"
+#define D_OBJECT_MISMATCH "Objecten komen niet overeen!"
+#define D_OBJECT_LOST "Object kwijt!"
+#define D_OBJECT_CREATE_FAILED "Object %u mislukt"
+#define D_OBJECT_PAGE_UNKNOWN "Paginga %u niet gedefinieerd"
+#define D_OBJECT_EVENT_UNKNOWN "Onbekend Event %d"
+
+#define D_ATTRIBUTE_UNKNOWN "Onbekend attribuut %s"
+#define D_ATTRIBUTE_PAGE_METHOD_INVALID "%s is ongeldig voor een pagina"
+
+#define D_OOBE_SSID_VALIDATED "SSID %s gevalideerd"
+#define D_OOBE_AUTO_CALIBRATE "Auto calibratie actief"
+#define D_OOBE_CALIBRATED "Reeds gecalibreerd"
+
+#define D_DISPATCH_COMMAND_NOT_FOUND "Opdracht '%s' niet gevonden"
+#define D_DISPATCH_INVALID_PAGE "Ongeldige pagina %s"
+#define D_DISPATCH_REBOOT "De MCU wordt herstart!"
+
+#define D_JSON_FAILED "JSON verwerking mislukt:"
+#define D_JSONL_FAILED "JSONL verwerking mislukt op lijn %d"
+#define D_JSONL_SUCCEEDED "Jsonl volledig verwerkt"
+
+#define D_OTA_CHECK_UPDATE "Checking updates URL: %s"
+#define D_OTA_CHECK_COMPLETE "Update check complete"
+#define D_OTA_CHECK_FAILED "Update check failed: %s"
+#define D_OTA_UPDATE_FIRMWARE "OTA Update firmware"
+#define D_OTA_UPDATE_COMPLETE "OTA Update complete"
+#define D_OTA_UPDATE_APPLY "Applying Firmware & Reboot"
+#define D_OTA_UPDATE_FAILED "OTA Update failed"
+
+#define D_HTTP_HASP_DESIGN "HASP Ontwerp"
+#define D_HTTP_INFORMATION "Informatie"
+#define D_HTTP_HTTP_SETTINGS "HTTP Instellingen"
+#define D_HTTP_WIFI_SETTINGS "Wifi Instellingen"
+#define D_HTTP_MQTT_SETTINGS "MQTT Instellingen"
+#define D_HTTP_GPIO_SETTINGS "GPIO Instellingen"
+#define D_HTTP_MDNS_SETTINGS "mDNS Instellingen"
+#define D_HTTP_TELNET_SETTINGS "Telnet Instellingen"
+#define D_HTTP_DEBUG_SETTINGS "Debug Instellingen"
+#define D_HTTP_GUI_SETTINGS "Scherm Instellingen"
+#define D_HTTP_SAVE_SETTINGS "Bewaar Instellingen"
+#define D_HTTP_UPLOAD_FILE "Bestand Opladen"
+#define D_HTTP_ERASE_DEVICE "Alle Instellingen Wissen"
+#define D_HTTP_ADD_GPIO "Pin Toevoegen"
+#define D_HTTP_BACK "Terug"
+#define D_HTTP_REFRESH "Vernieuwen"
+#define D_HTTP_PREV_PAGE "Vorige Pagina"
+#define D_HTTP_NEXT_PAGE "Volgende Pagina"
+#define D_HTTP_CALIBRATE "Calibratie"
+#define D_HTTP_SCREENSHOT "Schermafbeelding"
+#define D_HTTP_FILE_BROWSER "Bestandsverkenner"
+#define D_HTTP_FIRMWARE_UPGRADE "Firmware Upgrade"
+#define D_HTTP_UPDATE_FIRMWARE "Firmware Bijwerken"
+#define D_HTTP_FACTORY_RESET "Fabrieksinstellingen"
+#define D_HTTP_MAIN_MENU "Hoofdmenu"
+#define D_HTTP_REBOOT "Herstarten"
+#define D_HTTP_CONFIGURATION "Configuratie"
+
+#endif
\ No newline at end of file
diff --git a/src/net/hasp_ethernet_esp32.cpp b/src/net/hasp_ethernet_esp32.cpp
index 29167fdc..b5b61c21 100644
--- a/src/net/hasp_ethernet_esp32.cpp
+++ b/src/net/hasp_ethernet_esp32.cpp
@@ -15,12 +15,12 @@ void EthernetEvent(WiFiEvent_t event)
{
switch(event) {
case SYSTEM_EVENT_ETH_START:
- Log.notice(TAG_ETH, F("Started"));
+ Log.notice(TAG_ETH, F(D_SERVICE_STARTED));
// set eth hostname here
ETH.setHostname(mqttGetNodename().c_str());
break;
case SYSTEM_EVENT_ETH_CONNECTED:
- Log.notice(TAG_ETH, F("Connected"));
+ Log.notice(TAG_ETH, F(D_SERVICE_CONNECTED));
eth_connected = true;
break;
case SYSTEM_EVENT_ETH_GOT_IP:
@@ -35,12 +35,12 @@ void EthernetEvent(WiFiEvent_t event)
networkStart(); // Start network services
break;
case SYSTEM_EVENT_ETH_DISCONNECTED:
- Log.notice(TAG_ETH, F("Disconnected"));
+ Log.notice(TAG_ETH, F(D_SERVICE_DISCONNECTED));
eth_connected = false;
networkStop(); // Stop network services
break;
case SYSTEM_EVENT_ETH_STOP:
- Log.notice(TAG_ETH, F("Stopped"));
+ Log.warning(TAG_ETH, F(D_SERVICE_STOPPED));
eth_connected = false;
break;
default:
@@ -59,7 +59,7 @@ void IRAM_ATTR ethernetLoop(void)
bool ethernetEvery5Seconds()
{
- // Log.warning(TAG_ETH, eth_connected ? F("ONLINE") : F("OFFLINE"));
+ // Log.warning(TAG_ETH, eth_connected ? F(D_NETWORK_ONLINE) : F(D_NETWORK_OFFLINE));
return eth_connected;
}
diff --git a/src/net/hasp_ethernet_stm32.cpp b/src/net/hasp_ethernet_stm32.cpp
index 6ef34e6e..23173c50 100644
--- a/src/net/hasp_ethernet_stm32.cpp
+++ b/src/net/hasp_ethernet_stm32.cpp
@@ -15,7 +15,7 @@ void ethernetSetup()
{
#if USE_BUILTIN_ETHERNET > 0
// start Ethernet and UDP
- Log.notice(TAG_ETH, F("Begin Ethernet LAN8720"));
+ Log.notice(TAG_ETH, F("LAN8720 "D_SERVICE_STARTING));
if(Ethernet.begin() == 0) {
Log.notice(TAG_ETH, F("Failed to configure Ethernet using DHCP"));
eth_connected = false;
@@ -44,7 +44,7 @@ void ethernetSetup()
Ethernet.setCsPin(W5500_CS);
Ethernet.setRstPin(W5500_RST);
Ethernet.setHostname(ethHostname);
- Log.notice(TAG_ETH, F("Begin Ethernet W5500"));
+ Log.notice(TAG_ETH, F("W5500 "D_SERVICE_STARTING));
if(Ethernet.begin(mac) == 0) {
Log.notice(TAG_ETH, F("Failed to configure Ethernet using DHCP"));
} else {
@@ -59,7 +59,7 @@ void ethernetLoop(void)
switch(Ethernet.maintain()) {
case 1:
// renewed fail
- Log.notice(TAG_ETH, F("Error: renewed fail"));
+ Log.error(TAG_ETH, F("Error: renewed fail"));
break;
case 2:
@@ -70,7 +70,7 @@ void ethernetLoop(void)
case 3:
// rebind fail
- Log.notice(TAG_ETH, F("Error: rebind fail"));
+ Log.error(TAG_ETH, F("Error: rebind fail"));
break;
case 4:
@@ -93,7 +93,7 @@ bool ethernetEvery5Seconds()
#else
state = Ethernet.link() == 1;
#endif
- Log.warning(TAG_ETH, state ? F("ONLINE") : F("OFFLINE"));
+ Log.warning(TAG_ETH, state ? F(D_NETWORK_ONLINE) : F(D_NETWORK_OFFLINE));
return state;
}
diff --git a/src/net/hasp_wifi.cpp b/src/net/hasp_wifi.cpp
index 818f47a9..457a2c18 100644
--- a/src/net/hasp_wifi.cpp
+++ b/src/net/hasp_wifi.cpp
@@ -62,10 +62,10 @@ static void wifiConnected(IPAddress ipaddress)
ip = WiFi.localIP();
Log.notice(TAG_WIFI, F("Received IP address %d.%d.%d.%d"), ip[0], ip[1], ip[2], ip[3]);
#else
- Log.notice(TAG_WIFI, F("Received IP address %s"), ipaddress.toString().c_str());
+ Log.notice(TAG_WIFI, F(D_NETWORK_IP_ADDRESS_RECEIVED), ipaddress.toString().c_str());
#endif
- Log.verbose(TAG_WIFI, F("Connected = %s"), WiFi.status() == WL_CONNECTED ? PSTR("yes") : PSTR("no"));
+ Log.verbose(TAG_WIFI, F("Connected = %s"), WiFi.status() == WL_CONNECTED ? PSTR(D_NETWORK_ONLINE) : PSTR(D_NETWORK_OFFLINE));
networkStart();
}
@@ -259,7 +259,7 @@ static void wifiDisconnected(const char * ssid, uint8_t reason)
snprintf_P(buffer, sizeof(buffer), PSTR("handshake failed"));
break;
case WIFI_REASON_CONNECTION_FAIL:
- snprintf_P(buffer, sizeof(buffer), PSTR("connection failed"));
+ snprintf_P(buffer, sizeof(buffer), PSTR(D_NETWORK_CONNECTION_FAILED));
break;
#endif
@@ -471,14 +471,14 @@ bool wifiValidateSsid(const char * ssid, const char * pass)
delay(500);
}
#if defined(STM32F4xx)
- Log.trace(TAG_WIFI, F("Received IP addres %s"), espIp);
+ Log.trace(TAG_WIFI, F(D_NETWORK_IP_ADDRESS_RECEIVED), espIp);
if((WiFi.status() == WL_CONNECTED && String(espIp) != F("0.0.0.0"))) return true;
#else
- Log.trace(TAG_WIFI, F("Received IP addres %s"), WiFi.localIP().toString().c_str());
+ Log.trace(TAG_WIFI, F(D_NETWORK_IP_ADDRESS_RECEIVED), WiFi.localIP().toString().c_str());
if((WiFi.status() == WL_CONNECTED && WiFi.localIP().toString() != F("0.0.0.0"))) return true;
#endif
- Log.warning(TAG_WIFI, F("Received IP addres %s"), WiFi.localIP().toString().c_str());
+ Log.warning(TAG_WIFI, F(D_NETWORK_IP_ADDRESS_RECEIVED), WiFi.localIP().toString().c_str());
WiFi.disconnect();
return false;
}
@@ -490,7 +490,7 @@ void wifiStop()
#if !defined(STM32F4xx)
WiFi.mode(WIFI_OFF);
#endif
- Log.warning(TAG_WIFI, F("Stopped"));
+ Log.warning(TAG_WIFI, F(D_SERVICE_STOPPED));
}
void wifi_get_statusupdate(char * buffer, size_t len)
@@ -543,7 +543,7 @@ bool wifiSetConfig(const JsonObject & settings)
}
if(!settings[FPSTR(F_CONFIG_PASS)].isNull() &&
- settings[FPSTR(F_CONFIG_PASS)].as() != String(FPSTR("********"))) {
+ settings[FPSTR(F_CONFIG_PASS)].as() != String(FPSTR(D_PASSWORD_MASK))) {
changed |= strcmp(wifiPassword, settings[FPSTR(F_CONFIG_PASS)]) != 0;
strncpy(wifiPassword, settings[FPSTR(F_CONFIG_PASS)], sizeof(wifiPassword));
}
diff --git a/src/svc/hasp_http.cpp b/src/svc/hasp_http.cpp
index 36be338d..bbda1e2c 100644
--- a/src/svc/hasp_http.cpp
+++ b/src/svc/hasp_http.cpp
@@ -23,16 +23,18 @@
#if HASP_USE_HTTP > 0
-bool httpEnable = true;
-bool webServerStarted = false;
-uint16_t httpPort = 80;
-
#if defined(ARDUINO_ARCH_ESP8266) || defined(ARDUINO_ARCH_ESP32)
File fsUploadFile;
#endif
-char httpUser[32] = "";
-char httpPassword[32] = "";
+bool webServerStarted = false;
+
+// bool httpEnable = true;
+// uint16_t httpPort = 80;
+// char httpUser[32] = "";
+// char httpPassword[32] = "";
+hasp_http_config_t http_config;
+
#define HTTP_PAGE_SIZE (6 * 256)
#if defined(STM32F4xx) && HASP_USE_ETHERNET > 0
@@ -59,7 +61,7 @@ WebServer webServer(80);
HTTPUpload * upload;
const char MAIN_MENU_BUTTON[] PROGMEM =
- "
";
+ "";
const char MIT_LICENSE[] PROGMEM = "MIT License";
const char HTTP_DOCTYPE[] PROGMEM =
@@ -68,19 +70,23 @@ const char HTTP_DOCTYPE[] PROGMEM =
const char HTTP_META_GO_BACK[] PROGMEM = "";
const char HTTP_HEADER[] PROGMEM = "%s";
const char HTTP_STYLE[] PROGMEM =
- "";
+ // ".button3{background-color:#f44336;}"
+ // ".button4{background-color:#e7e7e7;color:black;}"
+ // ".button5{background-color:#555555;}"
+ // ".button6{background-color:#4CAF50;}"
+ "";
const char HTTP_SCRIPT[] PROGMEM = "";
@@ -90,11 +96,6 @@ const char HTTP_END[] PROGMEM = "<
"style='color:#aaa;'>HASP ";
const char HTTP_FOOTER[] PROGMEM = " by Francis Van Roie