Converted webLog.addLog() to variadic form

Also created WEBLOG() variadic macro
This commit is contained in:
Gregg 2022-03-05 18:13:27 -06:00
parent d9a9e6f31c
commit 2787966c48
4 changed files with 12 additions and 7 deletions

View File

@ -1316,7 +1316,7 @@ int HAPClient::getStatusURL(){
else else
sprintf(clocktime,"Unknown"); sprintf(clocktime,"Unknown");
response+="<tr><td>" + String(i+1) + "</td><td>" + String(uptime) + "</td><td>" + String(clocktime) + "</td><td>" + String(homeSpan.webLog.log[index].message) + "</td/tr>"; response+="<tr><td>" + String(i+1) + "</td><td>" + String(uptime) + "</td><td>" + String(clocktime) + "</td><td>" + String(homeSpan.webLog.log[index].message) + "</td/tr>\n";
} }
response+="</table>\n"; response+="</table>\n";
} }

View File

@ -1948,7 +1948,7 @@ void SpanWebLog::initTime(){
Serial.printf("Acquiring Time from %s (%s)... ",timeServer,timeZone); Serial.printf("Acquiring Time from %s (%s)... ",timeServer,timeZone);
configTzTime(timeZone,timeServer); configTzTime(timeZone,timeServer);
struct tm timeinfo; struct tm timeinfo;
if(getLocalTime(&timeinfo)){ if(getLocalTime(&timeinfo,10000)){
strftime(bootTime,sizeof(bootTime),"%c",&timeinfo); strftime(bootTime,sizeof(bootTime),"%c",&timeinfo);
Serial.printf("%s\n\n",bootTime); Serial.printf("%s\n\n",bootTime);
homeSpan.reserveSocketConnections(1); 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) if(maxEntries==0)
return; return;
@ -1971,7 +1971,12 @@ void SpanWebLog::addLog(const char *m){
getLocalTime(&log[index].clockTime,10); getLocalTime(&log[index].clockTime,10);
else else
log[index].clockTime.tm_year=0; 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++; nEntries++;
} }

View File

@ -108,12 +108,12 @@ struct SpanWebLog{ // optional web status/log data
struct log_t { // log entry type struct log_t { // log entry type
uint64_t upTime; // number of seconds since booting uint64_t upTime; // number of seconds since booting
struct tm clockTime; // clock time 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 } *log=NULL; // array of log entries
void init(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 initTime();
void addLog(const char *m); void addLog(const char *fmr, ...);
}; };
/////////////////////////////// ///////////////////////////////

View File

@ -100,7 +100,7 @@
#define LOG1(x) if(homeSpan.logLevel>0)Serial.print(x) #define LOG1(x) if(homeSpan.logLevel>0)Serial.print(x)
#define LOG2(x) if(homeSpan.logLevel>1)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 // // Types of Accessory Categories //