Precommit fixes
This commit is contained in:
10
src/calc.cpp
10
src/calc.cpp
@ -97,8 +97,10 @@ int createFormula(RawFormulaData &fd, char *formulaBuffer,
|
|||||||
|
|
||||||
// If the deviation is more than 2 degress we mark it as failed.
|
// If the deviation is more than 2 degress we mark it as failed.
|
||||||
if (dev * 1000 > myAdvancedConfig.getMaxFormulaCreationDeviation()) {
|
if (dev * 1000 > myAdvancedConfig.getMaxFormulaCreationDeviation()) {
|
||||||
writeErrorLog("CALC: Validation failed on angle %F, deviation too large %.2F SG, formula order %d",
|
writeErrorLog(
|
||||||
fd.a[i], dev * 1000, order);
|
"CALC: Validation failed on angle %F, deviation too large %.2F "
|
||||||
|
"SG, formula order %d",
|
||||||
|
fd.a[i], dev * 1000, order);
|
||||||
valid = false;
|
valid = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -203,7 +205,9 @@ double gravityTemperatureCorrectionC(double gravitySG, double tempC,
|
|||||||
return g;
|
return g;
|
||||||
}
|
}
|
||||||
|
|
||||||
writeErrorLog("CALC: Failed to parse expression for gravity temperature correction %d", err);
|
writeErrorLog(
|
||||||
|
"CALC: Failed to parse expression for gravity temperature correction %d",
|
||||||
|
err);
|
||||||
return gravitySG;
|
return gravitySG;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -293,7 +293,8 @@ void GyroSensor::applyCalibration() {
|
|||||||
if ((_calibrationOffset.ax + _calibrationOffset.ay + _calibrationOffset.az +
|
if ((_calibrationOffset.ax + _calibrationOffset.ay + _calibrationOffset.az +
|
||||||
_calibrationOffset.gx + _calibrationOffset.gy + _calibrationOffset.gz) ==
|
_calibrationOffset.gx + _calibrationOffset.gy + _calibrationOffset.gz) ==
|
||||||
0) {
|
0) {
|
||||||
writeErrorLog("GYRO: No valid calibration values, please calibrate the device.");
|
writeErrorLog(
|
||||||
|
"GYRO: No valid calibration values, please calibrate the device.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@ void tcp_cleanup() {
|
|||||||
while (tcp_tw_pcbs) tcp_abort(tcp_tw_pcbs);
|
while (tcp_tw_pcbs) tcp_abort(tcp_tw_pcbs);
|
||||||
}
|
}
|
||||||
|
|
||||||
void writeErrorLog(const char *format, ...) {
|
void writeErrorLog(const char* format, ...) {
|
||||||
File f = LittleFS.open(ERR_FILENAME, "a");
|
File f = LittleFS.open(ERR_FILENAME, "a");
|
||||||
|
|
||||||
if (f && f.size() > ERR_FILEMAXSIZE) {
|
if (f && f.size() > ERR_FILEMAXSIZE) {
|
||||||
|
@ -37,7 +37,7 @@ SOFTWARE.
|
|||||||
void tcp_cleanup();
|
void tcp_cleanup();
|
||||||
|
|
||||||
// Error logging
|
// Error logging
|
||||||
void writeErrorLog(const char *format, ...);
|
void writeErrorLog(const char* format, ...);
|
||||||
|
|
||||||
// Sleep mode
|
// Sleep mode
|
||||||
void deepSleep(int t);
|
void deepSleep(int t);
|
||||||
|
@ -254,7 +254,8 @@ void PushTarget::addHttpHeader(HTTPClient& http, String header) {
|
|||||||
value.c_str());
|
value.c_str());
|
||||||
http.addHeader(name, value);
|
http.addHeader(name, value);
|
||||||
} else {
|
} else {
|
||||||
writeErrorLog("PUSH: Unable to set header, invalid value %s", header.c_str());
|
writeErrorLog("PUSH: Unable to set header, invalid value %s",
|
||||||
|
header.c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -330,7 +331,8 @@ void PushTarget::sendHttpPost(TemplatingEngine& engine, bool isSecure,
|
|||||||
_lastSuccess = true;
|
_lastSuccess = true;
|
||||||
Log.notice(F("PUSH: HTTP post successful, response=%d" CR), _lastCode);
|
Log.notice(F("PUSH: HTTP post successful, response=%d" CR), _lastCode);
|
||||||
} else {
|
} else {
|
||||||
writeErrorLog("PUSH: HTTP post failed response=%d http%d", _lastCode, index+1);
|
writeErrorLog("PUSH: HTTP post failed response=%d http%d", _lastCode,
|
||||||
|
index + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isSecure) {
|
if (isSecure) {
|
||||||
@ -485,7 +487,8 @@ void PushTarget::sendMqtt(TemplatingEngine& engine, bool isSecure,
|
|||||||
Log.notice(F("PUSH: MQTT publish successful on %s" CR), topic.c_str());
|
Log.notice(F("PUSH: MQTT publish successful on %s" CR), topic.c_str());
|
||||||
_lastCode = 0;
|
_lastCode = 0;
|
||||||
} else {
|
} else {
|
||||||
writeErrorLog("PUSH: MQTT push on %s failed error=%d", topic.c_str(), mqtt.lastError());
|
writeErrorLog("PUSH: MQTT push on %s failed error=%d", topic.c_str(),
|
||||||
|
mqtt.lastError());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -141,30 +141,30 @@ void TemplatingEngine::initialize(float angle, float gravitySG,
|
|||||||
//
|
//
|
||||||
// Create the data using defined template.
|
// Create the data using defined template.
|
||||||
//
|
//
|
||||||
const String& TemplatingEngine::create(TemplatingEngine::Templates idx) {
|
const char* TemplatingEngine::create(TemplatingEngine::Templates idx) {
|
||||||
String fname;
|
String fname;
|
||||||
baseTemplate.reserve(600);
|
_baseTemplate.reserve(600);
|
||||||
|
|
||||||
// Load templates from memory
|
// Load templates from memory
|
||||||
switch (idx) {
|
switch (idx) {
|
||||||
case TEMPLATE_HTTP1:
|
case TEMPLATE_HTTP1:
|
||||||
baseTemplate = String(iSpindleFormat);
|
_baseTemplate = String(iSpindleFormat);
|
||||||
fname = TPL_FNAME_HTTP1;
|
fname = TPL_FNAME_HTTP1;
|
||||||
break;
|
break;
|
||||||
case TEMPLATE_HTTP2:
|
case TEMPLATE_HTTP2:
|
||||||
baseTemplate = String(iSpindleFormat);
|
_baseTemplate = String(iSpindleFormat);
|
||||||
fname = TPL_FNAME_HTTP2;
|
fname = TPL_FNAME_HTTP2;
|
||||||
break;
|
break;
|
||||||
case TEMPLATE_HTTP3:
|
case TEMPLATE_HTTP3:
|
||||||
baseTemplate = String(iHttpGetFormat);
|
_baseTemplate = String(iHttpGetFormat);
|
||||||
fname = TPL_FNAME_HTTP3;
|
fname = TPL_FNAME_HTTP3;
|
||||||
break;
|
break;
|
||||||
case TEMPLATE_INFLUX:
|
case TEMPLATE_INFLUX:
|
||||||
baseTemplate = String(influxDbFormat);
|
_baseTemplate = String(influxDbFormat);
|
||||||
fname = TPL_FNAME_INFLUXDB;
|
fname = TPL_FNAME_INFLUXDB;
|
||||||
break;
|
break;
|
||||||
case TEMPLATE_MQTT:
|
case TEMPLATE_MQTT:
|
||||||
baseTemplate = String(mqttFormat);
|
_baseTemplate = String(mqttFormat);
|
||||||
fname = TPL_FNAME_MQTT;
|
fname = TPL_FNAME_MQTT;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -175,7 +175,7 @@ const String& TemplatingEngine::create(TemplatingEngine::Templates idx) {
|
|||||||
char buf[file.size() + 1];
|
char buf[file.size() + 1];
|
||||||
memset(&buf[0], 0, file.size() + 1);
|
memset(&buf[0], 0, file.size() + 1);
|
||||||
file.readBytes(&buf[0], file.size());
|
file.readBytes(&buf[0], file.size());
|
||||||
baseTemplate = String(&buf[0]);
|
_baseTemplate = String(&buf[0]);
|
||||||
file.close();
|
file.close();
|
||||||
Log.notice(F("TPL : Template loaded from disk %s." CR), fname.c_str());
|
Log.notice(F("TPL : Template loaded from disk %s." CR), fname.c_str());
|
||||||
}
|
}
|
||||||
@ -185,13 +185,16 @@ const String& TemplatingEngine::create(TemplatingEngine::Templates idx) {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Insert data into template.
|
// Insert data into template.
|
||||||
transform(baseTemplate);
|
transform();
|
||||||
|
_baseTemplate.clear();
|
||||||
|
|
||||||
#if LOG_LEVEL == 6
|
#if LOG_LEVEL == 6
|
||||||
// Log.verbose(F("TPL : Transformed '%s'." CR), baseTemplate.c_str());
|
// Log.verbose(F("TPL : Transformed '%s'." CR), baseTemplate.c_str());
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return baseTemplate;
|
if (_output) return _output;
|
||||||
|
|
||||||
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
// EOF
|
// EOF
|
||||||
|
@ -75,34 +75,35 @@ class TemplatingEngine {
|
|||||||
String val;
|
String val;
|
||||||
};
|
};
|
||||||
|
|
||||||
KeyVal items[23] = {{TPL_MDNS, ""}, {TPL_ID, ""},
|
KeyVal _items[23] = {{TPL_MDNS, ""}, {TPL_ID, ""},
|
||||||
{TPL_SLEEP_INTERVAL, ""}, {TPL_TEMP, ""},
|
{TPL_SLEEP_INTERVAL, ""}, {TPL_TEMP, ""},
|
||||||
{TPL_TEMP_C, ""}, {TPL_TEMP_F, ""},
|
{TPL_TEMP_C, ""}, {TPL_TEMP_F, ""},
|
||||||
{TPL_TEMP_UNITS, ""}, {TPL_BATTERY, ""},
|
{TPL_TEMP_UNITS, ""}, {TPL_BATTERY, ""},
|
||||||
{TPL_RSSI, ""}, {TPL_RUN_TIME, ""},
|
{TPL_RSSI, ""}, {TPL_RUN_TIME, ""},
|
||||||
{TPL_ANGLE, ""}, {TPL_TILT, ""},
|
{TPL_ANGLE, ""}, {TPL_TILT, ""},
|
||||||
{TPL_GRAVITY, ""}, {TPL_GRAVITY_G, ""},
|
{TPL_GRAVITY, ""}, {TPL_GRAVITY_G, ""},
|
||||||
{TPL_GRAVITY_P, ""}, {TPL_GRAVITY_CORR, ""},
|
{TPL_GRAVITY_P, ""}, {TPL_GRAVITY_CORR, ""},
|
||||||
{TPL_GRAVITY_CORR_G, ""}, {TPL_GRAVITY_CORR_P, ""},
|
{TPL_GRAVITY_CORR_G, ""}, {TPL_GRAVITY_CORR_P, ""},
|
||||||
{TPL_GRAVITY_UNIT, ""}, {TPL_TOKEN, ""},
|
{TPL_GRAVITY_UNIT, ""}, {TPL_TOKEN, ""},
|
||||||
{TPL_TOKEN2, ""}, {TPL_APP_VER, ""},
|
{TPL_TOKEN2, ""}, {TPL_APP_VER, ""},
|
||||||
{TPL_APP_BUILD, ""}};
|
{TPL_APP_BUILD, ""}};
|
||||||
|
|
||||||
char buffer[20];
|
char _buffer[20];
|
||||||
String baseTemplate;
|
String _baseTemplate;
|
||||||
|
char *_output = 0;
|
||||||
|
|
||||||
void setVal(String key, float val, int dec = 2) {
|
void setVal(String key, float val, int dec = 2) {
|
||||||
String s = convertFloatToString(val, &buffer[0], dec);
|
String s = convertFloatToString(val, &_buffer[0], dec);
|
||||||
s.trim();
|
s.trim();
|
||||||
setVal(key, s);
|
setVal(key, s);
|
||||||
}
|
}
|
||||||
void setVal(String key, int val) { setVal(key, String(val)); }
|
void setVal(String key, int val) { setVal(key, String(val)); }
|
||||||
void setVal(String key, char val) { setVal(key, String(val)); }
|
void setVal(String key, char val) { setVal(key, String(val)); }
|
||||||
void setVal(String key, String val) {
|
void setVal(String key, String val) {
|
||||||
int max = sizeof(items) / sizeof(KeyVal);
|
int max = sizeof(_items) / sizeof(KeyVal);
|
||||||
for (int i = 0; i < max; i++) {
|
for (int i = 0; i < max; i++) {
|
||||||
if (items[i].key.equals(key)) {
|
if (_items[i].key.equals(key)) {
|
||||||
items[i].val = val;
|
_items[i].val = val;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -110,21 +111,64 @@ class TemplatingEngine {
|
|||||||
Log.warning(F("TPL : Key not found %s." CR), key.c_str());
|
Log.warning(F("TPL : Key not found %s." CR), key.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
void transform(String& s) {
|
void transform() {
|
||||||
int max = sizeof(items) / sizeof(KeyVal);
|
const char *format = _baseTemplate.c_str();
|
||||||
for (int i = 0; i < max; i++) {
|
int len = _baseTemplate.length();
|
||||||
while (s.indexOf(items[i].key) != -1)
|
int size = len;
|
||||||
s.replace(items[i].key, items[i].val);
|
|
||||||
|
// Lets check how much memory will be needed to transform the template
|
||||||
|
for (int j = 0; j < len - 2; j++) {
|
||||||
|
if (*(format + j) == '$' && *(format + j + 1) == '{') {
|
||||||
|
// Start of format tag found
|
||||||
|
int max = sizeof(_items) / sizeof(KeyVal);
|
||||||
|
for (int i = 0; i < max; i++) {
|
||||||
|
if (strncmp(format + j, _items[i].key.c_str(),
|
||||||
|
_items[i].key.length()) == 0) {
|
||||||
|
// Found key
|
||||||
|
size = size - _items[i].key.length() + _items[i].val.length();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_output = static_cast<char *>(malloc(size + 20));
|
||||||
|
|
||||||
|
if (!_output) {
|
||||||
|
Log.error(F("TPL : Unable to allocate memory for transforming template, "
|
||||||
|
"needed %d." CR),
|
||||||
|
size);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
memset(_output, 0, size + 20);
|
||||||
|
|
||||||
|
// Lets do the transformation
|
||||||
|
int k = 0;
|
||||||
|
for (int j = 0; j < len - 2; j++) {
|
||||||
|
if (*(format + j) == '$' && *(format + j + 1) == '{') {
|
||||||
|
// Start of format tag found
|
||||||
|
int max = sizeof(_items) / sizeof(KeyVal);
|
||||||
|
for (int i = 0; i < max; i++) {
|
||||||
|
if (strncmp(format + j, _items[i].key.c_str(),
|
||||||
|
_items[i].key.length()) == 0) {
|
||||||
|
// Found key
|
||||||
|
strncat(_output, format + k, j - k);
|
||||||
|
strcat(_output, _items[i].val.c_str());
|
||||||
|
k = j + _items[i].key.length();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
strcat(_output, format + k);
|
||||||
}
|
}
|
||||||
|
|
||||||
void dumpAll() {
|
void dumpAll() {
|
||||||
int max = sizeof(items) / sizeof(KeyVal);
|
int max = sizeof(_items) / sizeof(KeyVal);
|
||||||
for (int i = 0; i < max; i++) {
|
for (int i = 0; i < max; i++) {
|
||||||
Serial.print("Key=\'");
|
Serial.print("Key=\'");
|
||||||
Serial.print(items[i].key.c_str());
|
Serial.print(_items[i].key.c_str());
|
||||||
Serial.print("\', Val=\'");
|
Serial.print("\', Val=\'");
|
||||||
Serial.print(items[i].val.c_str());
|
Serial.print(_items[i].val.c_str());
|
||||||
Serial.println("\'");
|
Serial.println("\'");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -138,9 +182,16 @@ class TemplatingEngine {
|
|||||||
TEMPLATE_MQTT = 4
|
TEMPLATE_MQTT = 4
|
||||||
};
|
};
|
||||||
|
|
||||||
|
TemplatingEngine() {}
|
||||||
|
~TemplatingEngine() { freeMemory(); }
|
||||||
|
|
||||||
|
void freeMemory() {
|
||||||
|
if (_output) free(_output);
|
||||||
|
_output = 0;
|
||||||
|
}
|
||||||
void initialize(float angle, float gravitySG, float corrGravitySG,
|
void initialize(float angle, float gravitySG, float corrGravitySG,
|
||||||
float tempC, float runTime);
|
float tempC, float runTime);
|
||||||
const String& create(TemplatingEngine::Templates idx);
|
const char *create(TemplatingEngine::Templates idx);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // SRC_TEMPLATING_HPP_
|
#endif // SRC_TEMPLATING_HPP_
|
||||||
|
@ -232,7 +232,8 @@ void WebServerHandler::webHandleUploadFile() {
|
|||||||
delay(500);
|
delay(500);
|
||||||
ESP_RESET();
|
ESP_RESET();
|
||||||
} else {
|
} else {
|
||||||
writeErrorLog("WEB : Failed to finish firmware flashing error=%d", Update.getError());
|
writeErrorLog("WEB : Failed to finish firmware flashing error=%d",
|
||||||
|
Update.getError());
|
||||||
_uploadReturn = 500;
|
_uploadReturn = 500;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -290,9 +291,6 @@ void WebServerHandler::webHandleCalibrate() {
|
|||||||
LOG_PERF_STOP("webserver-api-calibrate");
|
LOG_PERF_STOP("webserver-api-calibrate");
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
|
||||||
// Callback from webServer when / has been accessed.
|
|
||||||
//
|
|
||||||
void WebServerHandler::webHandleFactoryDefaults() {
|
void WebServerHandler::webHandleFactoryDefaults() {
|
||||||
String id = _server->arg(PARAM_ID);
|
String id = _server->arg(PARAM_ID);
|
||||||
Log.notice(F("WEB : webServer callback for /api/factory." CR));
|
Log.notice(F("WEB : webServer callback for /api/factory." CR));
|
||||||
@ -316,9 +314,20 @@ void WebServerHandler::webHandleFactoryDefaults() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
void WebServerHandler::webHandleLogClear() {
|
||||||
// Callback from webServer when / has been accessed.
|
String id = _server->arg(PARAM_ID);
|
||||||
//
|
Log.notice(F("WEB : webServer callback for /api/clearlog." CR));
|
||||||
|
|
||||||
|
if (!id.compareTo(myConfig.getID())) {
|
||||||
|
_server->send(200, "text/plain", "Removing logfiles...");
|
||||||
|
LittleFS.remove(ERR_FILENAME);
|
||||||
|
LittleFS.remove(ERR_FILENAME2);
|
||||||
|
_server->send(200, "text/plain", "Logfiles cleared.");
|
||||||
|
} else {
|
||||||
|
_server->send(400, "text/plain", "Unknown ID.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void WebServerHandler::webHandleStatus() {
|
void WebServerHandler::webHandleStatus() {
|
||||||
LOG_PERF_START("webserver-api-status");
|
LOG_PERF_START("webserver-api-status");
|
||||||
Log.notice(F("WEB : webServer callback for /api/status(get)." CR));
|
Log.notice(F("WEB : webServer callback for /api/status(get)." CR));
|
||||||
@ -385,9 +394,6 @@ void WebServerHandler::webHandleStatus() {
|
|||||||
LOG_PERF_STOP("webserver-api-status");
|
LOG_PERF_STOP("webserver-api-status");
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
|
||||||
// Callback from webServer when / has been accessed.
|
|
||||||
//
|
|
||||||
void WebServerHandler::webHandleClearWIFI() {
|
void WebServerHandler::webHandleClearWIFI() {
|
||||||
String id = _server->arg(PARAM_ID);
|
String id = _server->arg(PARAM_ID);
|
||||||
Log.notice(F("WEB : webServer callback for /api/clearwifi." CR));
|
Log.notice(F("WEB : webServer callback for /api/clearwifi." CR));
|
||||||
@ -408,9 +414,6 @@ void WebServerHandler::webHandleClearWIFI() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
|
||||||
// Used to force the device to never sleep.
|
|
||||||
//
|
|
||||||
void WebServerHandler::webHandleStatusSleepmode() {
|
void WebServerHandler::webHandleStatusSleepmode() {
|
||||||
LOG_PERF_START("webserver-api-sleepmode");
|
LOG_PERF_START("webserver-api-sleepmode");
|
||||||
String id = _server->arg(PARAM_ID);
|
String id = _server->arg(PARAM_ID);
|
||||||
@ -1299,27 +1302,22 @@ bool WebServerHandler::setupWebServer() {
|
|||||||
_server->serveStatic("/runtime", LittleFS, RUNTIME_FILENAME);
|
_server->serveStatic("/runtime", LittleFS, RUNTIME_FILENAME);
|
||||||
|
|
||||||
// Dynamic content
|
// Dynamic content
|
||||||
_server->on(
|
_server->on("/api/clearlog", HTTP_GET,
|
||||||
"/api/config", HTTP_GET,
|
std::bind(&WebServerHandler::webHandleLogClear, this));
|
||||||
std::bind(&WebServerHandler::webHandleConfig, this)); // Get config.json
|
_server->on("/api/config", HTTP_GET,
|
||||||
|
std::bind(&WebServerHandler::webHandleConfig, this));
|
||||||
_server->on("/api/formula", HTTP_GET,
|
_server->on("/api/formula", HTTP_GET,
|
||||||
std::bind(&WebServerHandler::webHandleFormulaRead,
|
std::bind(&WebServerHandler::webHandleFormulaRead, this));
|
||||||
this)); // Get formula.json (calibration page)
|
|
||||||
_server->on("/api/formula", HTTP_POST,
|
_server->on("/api/formula", HTTP_POST,
|
||||||
std::bind(&WebServerHandler::webHandleFormulaWrite,
|
std::bind(&WebServerHandler::webHandleFormulaWrite, this));
|
||||||
this)); // Get formula.json (calibration page)
|
|
||||||
_server->on("/api/calibrate", HTTP_POST,
|
_server->on("/api/calibrate", HTTP_POST,
|
||||||
std::bind(&WebServerHandler::webHandleCalibrate,
|
std::bind(&WebServerHandler::webHandleCalibrate, this));
|
||||||
this)); // Run calibration routine (param id)
|
|
||||||
_server->on("/api/factory", HTTP_GET,
|
_server->on("/api/factory", HTTP_GET,
|
||||||
std::bind(&WebServerHandler::webHandleFactoryDefaults,
|
std::bind(&WebServerHandler::webHandleFactoryDefaults, this));
|
||||||
this)); // Reset the device
|
|
||||||
_server->on("/api/status", HTTP_GET,
|
_server->on("/api/status", HTTP_GET,
|
||||||
std::bind(&WebServerHandler::webHandleStatus,
|
std::bind(&WebServerHandler::webHandleStatus, this));
|
||||||
this)); // Get the status.json
|
|
||||||
_server->on("/api/clearwifi", HTTP_GET,
|
_server->on("/api/clearwifi", HTTP_GET,
|
||||||
std::bind(&WebServerHandler::webHandleClearWIFI,
|
std::bind(&WebServerHandler::webHandleClearWIFI, this));
|
||||||
this)); // Clear wifi settings
|
|
||||||
_server->on(
|
_server->on(
|
||||||
"/api/upload", HTTP_GET,
|
"/api/upload", HTTP_GET,
|
||||||
std::bind(&WebServerHandler::webHandleUpload, this)); // Get upload.json
|
std::bind(&WebServerHandler::webHandleUpload, this)); // Get upload.json
|
||||||
@ -1366,9 +1364,6 @@ bool WebServerHandler::setupWebServer() {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
|
||||||
// called from main loop
|
|
||||||
//
|
|
||||||
void WebServerHandler::loop() {
|
void WebServerHandler::loop() {
|
||||||
#if defined(ESP8266)
|
#if defined(ESP8266)
|
||||||
MDNS.update();
|
MDNS.update();
|
||||||
|
@ -76,6 +76,7 @@ class WebServerHandler {
|
|||||||
void webHandleCalibrate();
|
void webHandleCalibrate();
|
||||||
void webHandleUploadFile();
|
void webHandleUploadFile();
|
||||||
void webHandleUpload();
|
void webHandleUpload();
|
||||||
|
void webHandleLogClear();
|
||||||
void webHandlePageNotFound();
|
void webHandlePageNotFound();
|
||||||
|
|
||||||
String readFile(String fname);
|
String readFile(String fname);
|
||||||
|
@ -203,7 +203,7 @@ bool WifiConnection::waitForConnection(int maxTime) {
|
|||||||
|
|
||||||
if (i++ >
|
if (i++ >
|
||||||
(maxTime * 10)) { // Try for maxTime seconds. Since delay is 100ms.
|
(maxTime * 10)) { // Try for maxTime seconds. Since delay is 100ms.
|
||||||
writeErrorLog("WIFI: Failed to connect to wifi %d",WiFi.status());
|
writeErrorLog("WIFI: Failed to connect to wifi %d", WiFi.status());
|
||||||
WiFi.disconnect();
|
WiFi.disconnect();
|
||||||
Serial.print(CR);
|
Serial.print(CR);
|
||||||
return false; // Return to main that we have failed to connect.
|
return false; // Return to main that we have failed to connect.
|
||||||
|
Reference in New Issue
Block a user