diff --git a/src/HAP.cpp b/src/HAP.cpp index a72df6a..b18eecc 100644 --- a/src/HAP.cpp +++ b/src/HAP.cpp @@ -342,7 +342,7 @@ void HAPClient::processRequest(){ return; } - if(homeSpan.webLog && !strncmp(body,homeSpan.webLog->statusURL.c_str(),homeSpan.webLog->statusURL.length())){ // GET STATUS - AN OPTIONAL, NON-HAP-R2 FEATURE + if(homeSpan.webLog.isEnabled && !strncmp(body,homeSpan.webLog.statusURL.c_str(),homeSpan.webLog.statusURL.length())){ // GET STATUS - AN OPTIONAL, NON-HAP-R2 FEATURE getStatusURL(); return; } @@ -1258,7 +1258,7 @@ int HAPClient::getStatusURL(){ char clocktime[33]; - if(homeSpan.webLog->timeInit){ + if(homeSpan.webLog.timeInit){ struct tm timeinfo; getLocalTime(&timeinfo,10); strftime(clocktime,sizeof(clocktime),"%c",&timeinfo); @@ -1286,37 +1286,37 @@ int HAPClient::getStatusURL(){ response+="\n"; response+="\n"; response+="\n"; - response+="\n"; + response+="\n"; response+="\n"; response+="\n"; response+="\n"; response+="\n"; response+="\n"; - response+="\n"; + response+="\n"; response+="
Up Time:" + String(uptime) + "
Current Time:" + String(clocktime) + "
Boot Time:" + String(homeSpan.webLog->bootTime) + "
Boot Time:" + String(homeSpan.webLog.bootTime) + "
ESP32 Board:" + String(ARDUINO_BOARD) + "
Arduino-ESP Version:" + String(ARDUINO_ESP_VERSION) + "
ESP-IDF Version:" + String(ESP_IDF_VERSION_MAJOR) + "." + String(ESP_IDF_VERSION_MINOR) + "." + String(ESP_IDF_VERSION_PATCH) + "
HomeSpan Version:" + String(HOMESPAN_VERSION) + "
Sketch Version:" + String(homeSpan.getSketchVersion()) + "
Max Log Entries:" + String(homeSpan.webLog->maxEntries) + "
Max Log Entries:" + String(homeSpan.webLog.maxEntries) + "
\n"; response+="

"; - if(homeSpan.webLog->maxEntries>0){ + if(homeSpan.webLog.maxEntries>0){ response+="\n"; - int lastIndex=homeSpan.webLog->nEntries-homeSpan.webLog->maxEntries; + int lastIndex=homeSpan.webLog.nEntries-homeSpan.webLog.maxEntries; if(lastIndex<0) lastIndex=0; - for(int i=homeSpan.webLog->nEntries-1;i>=lastIndex;i--){ - int index=i%homeSpan.webLog->maxEntries; - seconds=homeSpan.webLog->log[index].upTime/1e6; + for(int i=homeSpan.webLog.nEntries-1;i>=lastIndex;i--){ + int index=i%homeSpan.webLog.maxEntries; + seconds=homeSpan.webLog.log[index].upTime/1e6; secs=seconds%60; mins=(seconds/=60)%60; hours=(seconds/=60)%24; days=(seconds/=24); sprintf(uptime,"%d:%02d:%02d:%02d",days,hours,mins,secs); - if(homeSpan.webLog->log[index].clockTime.tm_year>0) - strftime(clocktime,sizeof(clocktime),"%c",&homeSpan.webLog->log[index].clockTime); + if(homeSpan.webLog.log[index].clockTime.tm_year>0) + strftime(clocktime,sizeof(clocktime),"%c",&homeSpan.webLog.log[index].clockTime); else sprintf(clocktime,"Unknown"); - response+=""; + response+=""; } response+="
EntryUp TimeLog TimeMessage
" + String(i+1) + "" + String(uptime) + "" + String(clocktime) + "" + String(homeSpan.webLog->log[index].message) + "
" + String(i+1) + "" + String(uptime) + "" + String(clocktime) + "" + String(homeSpan.webLog.log[index].message) + "
\n"; } diff --git a/src/HomeSpan.cpp b/src/HomeSpan.cpp index 0d7a4cb..0acb692 100644 --- a/src/HomeSpan.cpp +++ b/src/HomeSpan.cpp @@ -560,9 +560,9 @@ void Span::checkConnect(){ } } - if(webLog){ - Serial.printf("Web Logging enabled at http://%s.local:%d%swith max number of entries=%d\n\n",hostName,tcpPortNum,webLog->statusURL.c_str()+4,webLog->maxEntries); - webLog->initTime(); + if(webLog.isEnabled){ + Serial.printf("Web Logging enabled at http://%s.local:%d%swith max number of entries=%d\n\n",hostName,tcpPortNum,webLog.statusURL.c_str()+4,webLog.maxEntries); + webLog.initTime(); } Serial.printf("Starting HAP Server on port %d supporting %d simultaneous HomeKit Controller Connections...\n",tcpPortNum,maxConnections); @@ -1930,7 +1930,8 @@ SpanUserCommand::SpanUserCommand(char c, const char *s, void (*f)(const char *, // SpanWebLog // /////////////////////////////// -SpanWebLog::SpanWebLog(uint16_t maxEntries, const char *serv, const char *tz, const char *url){ +void SpanWebLog::init(uint16_t maxEntries, const char *serv, const char *tz, const char *url){ + isEnabled=true; this->maxEntries=maxEntries; timeServer=serv; timeZone=tz; diff --git a/src/HomeSpan.h b/src/HomeSpan.h index 748fd72..4f61d86 100644 --- a/src/HomeSpan.h +++ b/src/HomeSpan.h @@ -96,6 +96,7 @@ struct SpanBuf{ // temporary storage buffer for us /////////////////////////////// struct SpanWebLog{ // optional web status/log data + boolean isEnabled=false; // flag to inidicate WebLog has been enabled uint16_t maxEntries; // max number of log entries; int nEntries=0; // total cumulative number of log entries const char *timeServer; // optional time server to use for acquiring clock time @@ -110,7 +111,7 @@ struct SpanWebLog{ // optional web status/log data const char *message; // pointers to log entries of arbitrary size } *log=NULL; // array of log entries - SpanWebLog(uint16_t maxEntries, const char *serv, const char *tz, const char *url); + void init(uint16_t maxEntries, const char *serv, const char *tz, const char *url); void initTime(); void addLog(const char *m); }; @@ -163,7 +164,7 @@ struct Span{ Blinker statusLED; // indicates HomeSpan status PushButton controlButton; // controls HomeSpan configuration and resets Network network; // configures WiFi and Setup Code via either serial monitor or temporary Access Point - SpanWebLog *webLog=NULL; // optional web status/log + SpanWebLog webLog; // optional web status/log SpanConfig hapConfig; // track configuration changes to the HAP Accessory database; used to increment the configuration number (c#) when changes found vector Accessories; // vector of pointers to all Accessories @@ -225,7 +226,7 @@ struct Span{ void enableOTA(boolean auth=true){otaEnabled=true;otaAuth=auth;reserveSocketConnections(1);} // enables Over-the-Air updates, with (auth=true) or without (auth=false) authorization password void enableWebLog(uint16_t maxEntries=0, const char *serv=NULL, const char *tz="UTC", const char *url=DEFAULT_WEBLOG_URL){ // enable Web Logging - webLog=new SpanWebLog(maxEntries, serv, tz, url); + webLog.init(maxEntries, serv, tz, url); } [[deprecated("Please use reserveSocketConnections(n) method instead.")]]