diff options
author | PA4WDH | 2023-05-24 12:57:25 +0200 |
---|---|---|
committer | PA4WDH | 2023-05-24 12:57:25 +0200 |
commit | 16fb812a46d0e8cde432b58f7dbf6fce147eb89f (patch) | |
tree | 9e019f98e515cb21e6c38ff487a82fe375675991 /logger.c | |
parent | Detect program name from argv[0] (diff) | |
download | cputemp2maxfreq-16fb812a46d0e8cde432b58f7dbf6fce147eb89f.tar.gz cputemp2maxfreq-16fb812a46d0e8cde432b58f7dbf6fce147eb89f.tar.bz2 cputemp2maxfreq-16fb812a46d0e8cde432b58f7dbf6fce147eb89f.zip |
Add CSV logging
Diffstat (limited to 'logger.c')
-rw-r--r-- | logger.c | 66 |
1 files changed, 63 insertions, 3 deletions
@@ -3,13 +3,16 @@ #include <syslog.h> #include <sys/time.h> #include <time.h> -#include "cputemp2maxfreq.h" #include <string.h> +#include <unistd.h> +#include "cputemp2maxfreq.h" +#include "debug.h" extern struct s_config config; +extern struct s_cpudata cpudata; -// These functions are not called directly. They are set by argparse in the -// config.logger function pointer. +// The logger_* functions are not called directly. They are set by argparse in +// the config.logger function pointer. // No logging at all void logger_none(char *format,...) { } @@ -69,3 +72,60 @@ void logger_kmsg(char *format,...) config.logger(buffer); } } + +// CSV logging fields: +// 1: Timestamp +// 2: CPU Minimum frequency +// 3: CPU Maximum frequency +// 4: CPU Current frequency +// 5: CPU Temperature +// 6: Target temperature +// 7: Scaling maximum frequency before increase/decrease +void csvlog_init() +{ + int exists; + + DEBUG1_LOG("Started\n"); + exists=access(config.csvlog,F_OK); + DEBUG1_LOG("File %s exists: %d\n",config.csvlog,exists); + + if ((exists!=0) || (config.csvoverwrite==1)) + { + DEBUG1_LOG("Creating/overwriting CSV file\n"); + config.csvfile=fopen(config.csvlog,"w"); + fputs("\"timestamp\"," + "\"CPU Minumum frequency\"," + "\"CPU Maximum frequency\"," + "\"CPU Current frequency\"," + "\"CPU Temperature\"," + "\"Target temperature\"," + "\"Scaling maximum frequency\"\n",config.csvfile); + } else { + DEBUG1_LOG("Appending to CSV file\n"); + config.csvfile=fopen(config.csvlog,"a"); + } +} + +// Write a single line of CSV data +void csvlog_write() +{ + struct timeval unixtime; + struct tm *time; + char timestring[255]; + + DEBUG1_LOG("Writing data series to CSV file\n"); + + gettimeofday(&unixtime,NULL); + time=localtime(&unixtime.tv_sec); + strftime(timestring,255,"%F %T",time); + + fprintf(config.csvfile,"\"%s\",\"%ld\",\"%ld\",\"%ld\",\"%ld\",\"%ld\",\"%ld\"\n",timestring,cpudata.min_freq,cpudata.max_freq,cpudata.cur_freq,cpudata.cur_temp/1000,config.max_temp/1000,cpudata.scale_max); +} + +// Close the CSV file +void csvlog_close() +{ + DEBUG1_LOG("Closing CSV file\n"); + fclose(config.csvfile); + config.csvfile=NULL; +} |