diff --git a/src/HAP.cpp b/src/HAP.cpp index b18eecc..fe5482f 100644 --- a/src/HAP.cpp +++ b/src/HAP.cpp @@ -1316,7 +1316,7 @@ int HAPClient::getStatusURL(){ else sprintf(clocktime,"Unknown"); - response+="" + String(i+1) + "" + String(uptime) + "" + String(clocktime) + "" + String(homeSpan.webLog.log[index].message) + ""; + response+="" + String(i+1) + "" + String(uptime) + "" + String(clocktime) + "" + String(homeSpan.webLog.log[index].message) + "\n"; } response+="\n"; } diff --git a/src/HomeSpan.cpp b/src/HomeSpan.cpp index 0acb692..3cd8658 100644 --- a/src/HomeSpan.cpp +++ b/src/HomeSpan.cpp @@ -1948,7 +1948,7 @@ void SpanWebLog::initTime(){ Serial.printf("Acquiring Time from %s (%s)... ",timeServer,timeZone); configTzTime(timeZone,timeServer); struct tm timeinfo; - if(getLocalTime(&timeinfo)){ + if(getLocalTime(&timeinfo,10000)){ strftime(bootTime,sizeof(bootTime),"%c",&timeinfo); Serial.printf("%s\n\n",bootTime); homeSpan.reserveSocketConnections(1); @@ -1960,7 +1960,7 @@ void SpanWebLog::initTime(){ /////////////////////////////// -void SpanWebLog::addLog(const char *m){ +void SpanWebLog::addLog(const char *fmt, ...){ if(maxEntries==0) return; @@ -1971,7 +1971,12 @@ void SpanWebLog::addLog(const char *m){ getLocalTime(&log[index].clockTime,10); else log[index].clockTime.tm_year=0; - log[index].message=m; + free(log[index].message); + va_list ap; + va_start(ap,fmt); + vasprintf(&log[index].message,fmt,ap); + va_end(ap); + nEntries++; } diff --git a/src/HomeSpan.h b/src/HomeSpan.h index 4f61d86..610b125 100644 --- a/src/HomeSpan.h +++ b/src/HomeSpan.h @@ -108,12 +108,12 @@ struct SpanWebLog{ // optional web status/log data struct log_t { // log entry type uint64_t upTime; // number of seconds since booting struct tm clockTime; // clock time - const char *message; // pointers to log entries of arbitrary size + char *message; // pointers to log entries of arbitrary size } *log=NULL; // array of log entries void init(uint16_t maxEntries, const char *serv, const char *tz, const char *url); void initTime(); - void addLog(const char *m); + void addLog(const char *fmr, ...); }; /////////////////////////////// diff --git a/src/Settings.h b/src/Settings.h index 6c975cc..0057897 100644 --- a/src/Settings.h +++ b/src/Settings.h @@ -100,8 +100,8 @@ #define LOG1(x) if(homeSpan.logLevel>0)Serial.print(x) #define LOG2(x) if(homeSpan.logLevel>1)Serial.print(x) +#define WEBLOG(format,...) homeSpan.webLog.addLog(format __VA_OPT__(,) __VA_ARGS__) - ////////////////////////////////////////////////////// // Types of Accessory Categories // // Reference: HAP Section 13 //