ina260-zmq-publisher/src/logger.c

84 lines
1.9 KiB
C
Raw Normal View History

2023-07-14 20:42:12 +02:00
// Weather update client
// Connects SUB socket to tcp://localhost:5556
// Collects weather updates and finds avg temp in zipcode
#include <zmq.h>
#include <assert.h>
#include <time.h>
2023-07-14 22:03:40 +02:00
#include <stdlib.h>
2023-07-14 20:42:12 +02:00
#include <string.h>
2023-07-14 22:03:40 +02:00
#include <libgen.h>
#include <unistd.h>
2023-07-14 22:09:39 +02:00
#include <sys/stat.h>
2023-07-15 08:38:33 +02:00
#include "utils.h"
2023-07-14 22:30:02 +02:00
#include <time.h>
2023-07-14 22:03:40 +02:00
2023-07-15 09:25:30 +02:00
// Global:
2023-07-15 10:11:50 +02:00
char *__client;
char __logdir[255];
char __regpower[100];
2023-07-15 10:31:36 +02:00
int __loginterval;
2023-07-15 09:25:30 +02:00
2023-07-14 20:42:12 +02:00
int main (int argc, char *argv [])
{
2023-07-15 10:11:50 +02:00
if(argc != 4){
2023-07-15 10:31:36 +02:00
printf("Usage: %s <abslogdir> <client> <loginterval>",argv[0]);
2023-07-14 22:03:40 +02:00
exit(1);
}
2023-07-15 10:11:50 +02:00
//----- Init global variables
__client=argv[2];
2023-07-15 10:31:36 +02:00
__loginterval=atoi(argv[3]);
2023-07-15 10:11:50 +02:00
// __logdir:
strcat(__logdir,argv[1]);
strcat(__logdir,"/");
strcat(__logdir,__client);
// __regpower:
strcat(__regpower,INA260_SYSFS);
strcat(__regpower,"/");
strcat(__regpower,__client);
strcat(__regpower,"/");
strcat(__regpower,INA260_POWER_REGISTER);
2023-07-15 10:31:36 +02:00
//----- Sanity checks
mkdirp(__logdir);
2023-07-15 10:34:20 +02:00
if(__loginterval<MIN_INTERVAL){
printf("Log interval is too small (min=%ds)\n",MIN_INTERVAL);
exit(2);
}
2023-07-15 10:57:40 +02:00
if(FILE_EXISTS(__regpower)){
2023-07-15 10:31:36 +02:00
printf("Logger cannot access to %s\n",__regpower);
2023-07-15 10:34:20 +02:00
exit(3);
2023-07-15 10:31:36 +02:00
}
//----- Start logging
printf("Logger started [client=%s,interval=%ds]\n",__client,__loginterval);
2023-07-15 10:57:40 +02:00
FILE *regptr,*logptr;
char logfilepath[255]="";
regptr=fopen("/home/loic/out.txt","r");
2023-07-15 11:48:06 +02:00
char buffer[255];
int power;
time_t interval;
2023-07-15 13:54:03 +02:00
while(1){
2023-07-15 11:48:06 +02:00
interval=INTERVAL(__loginterval);
2023-07-15 11:43:41 +02:00
*logfilepath='\0';
2023-07-15 12:26:46 +02:00
sprintf(logfilepath,"%s/%ld",__logdir,interval);
2023-07-15 11:43:41 +02:00
logptr=fopen(logfilepath,"w");
fprintf(logptr,"timestamp,power\n");
// Log current interval
while((TIMESTAMP()-interval)<__loginterval){
fgets(buffer,255,regptr);
power=atoi(buffer);
fprintf(logptr,"%ld,%d\n",TIMESTAMP(),power);
fseek(regptr,0,SEEK_SET);
sleep(1);
printf("Tick\n");
}
fclose(logptr);
}
2023-07-15 10:57:40 +02:00
fclose(regptr);
2023-07-14 22:03:40 +02:00
return 0;
}