From 78b28ce9234647709b8a60fb8b9f72ebaf874a1b Mon Sep 17 00:00:00 2001 From: Loic Guegan Date: Mon, 17 Jul 2023 17:58:20 +0200 Subject: Minor changes --- src/logger.c | 86 ++++++++++++++++++-------------------------------------- src/subscriber.c | 1 + src/utils.h | 3 +- 3 files changed, 30 insertions(+), 60 deletions(-) (limited to 'src') diff --git a/src/logger.c b/src/logger.c index b44b5d0..a94f110 100644 --- a/src/logger.c +++ b/src/logger.c @@ -30,19 +30,12 @@ void sighandler(int signo){ void publish(int queue_id, void* publisher); -typedef struct record { - time_t secs; - long nsecs; - uint16_t power; -} record; - typedef struct queue { - int length; - long interval; - record records[RECORD_MAX]; + int size; + char msg[ZMQ_MSG_SIZE]; } queue; -queue queues[RECORD_QUEUES]; +queue queues[MAX_QUEUES]; int main (int argc, char *argv []) { @@ -75,7 +68,7 @@ int main (int argc, char *argv []) printf("Log interval is too small (min=%ds)\n",MIN_INTERVAL); exit(2); } - if(!FILE_EXISTS(__regpower)){ + if(FILE_EXISTS(__regpower)){ printf("Logger cannot access to %s\n",__regpower); exit(3); } @@ -98,43 +91,45 @@ int main (int argc, char *argv []) FILE *regptr,*logptr; char logfilepath[STATIC_LEN]=""; - regptr=fopen(__regpower,"r"); + regptr=fopen("/home/loic/out.txt","r"); char buffer[STATIC_LEN]; int power; time_t interval; struct timespec power_ts; int queue_id=0; + char *header[STATIC_LEN]; while(!__stop){ interval=INTERVAL(__loginterval); // Log current interval - queue_id=(queue_id+1)>=RECORD_QUEUES ? 0 : (queue_id+1); + queue_id=(queue_id+1)>=MAX_QUEUES ? 0 : (queue_id+1); printf("Queue id %d",queue_id); - queues[queue_id].interval=interval; - int record=0; + *queues[queue_id].msg='\0'; + sprintf(queues[queue_id].msg,"%s\n%s\n%s\n%ld\n",ZMQ_TOKEN,__key,__client,interval); + queues[queue_id].size=strlen(queues[queue_id].msg); while((TIMESTAMP()-interval)<__loginterval){ if(__stop) break; - if(record < RECORD_MAX){ - // Read power: - fgets(buffer,STATIC_LEN,regptr); - // Get power measurement timestamp: - clock_gettime(CLOCK_REALTIME,&power_ts); - queues[queue_id].records[record].secs=power_ts.tv_sec; - queues[queue_id].records[record].nsecs=power_ts.tv_nsec; - queues[queue_id].records[record].power=atoi(buffer); - // Reset power register file: - fseek(regptr,0,SEEK_SET); - #if LOGGERS_DELAY > 0 - usleep(LOGGERS_DELAY*1000); - #endif - printf("Tick\n"); fflush(stdout); - record++; + // Read power: + fgets(buffer,STATIC_LEN,regptr); + // Get power measurement timestamp: + clock_gettime(CLOCK_REALTIME,&power_ts); + char line[STATIC_LEN]; + sprintf(line,"%ld,%ld,%d\n",power_ts.tv_sec,power_ts.tv_nsec,atoi(buffer)); + int linelen=strlen(line); + if(queues[queue_id].size+linelen>ZMQ_MSG_SIZE){ + printf("To many measurements to publish. Please increase ZMQ_MSG_SIZE\n"); } else { - printf("Queue overflow, RECORD_MAX must be increase!! n=%d\n",record); + strcat(queues[queue_id].msg,line); + queues[queue_id].size+=strlen(line); } + // Reset power register file: + fseek(regptr,0,SEEK_SET); +#if LOGGERS_DELAY > 0 + usleep(LOGGERS_DELAY*1000); +#endif + printf("Tick\n"); fflush(stdout); } - queues[queue_id].length=record; publish(queue_id,publisher); } @@ -148,30 +143,5 @@ int main (int argc, char *argv []) void publish(int queue_id, void* publisher){ printf("Publishing...\n"); - // Build message header: - char buffer[ZMQ_MSG_SIZE]; - sprintf(buffer,"%s\n%s\n%s\n%ld\n",ZMQ_TOKEN,__key,__client,queues[queue_id].interval); - int msglen=strlen(buffer); - - // Put every lines in the buffer and send it - char line[STATIC_LEN]; - for(int record=0;record4){ fwrite(token, strlen(token), 1, fptr); + printf("%s\n",token); fwrite("\n",1,1,fptr); } diff --git a/src/utils.h b/src/utils.h index 6705ebf..f27ff9e 100644 --- a/src/utils.h +++ b/src/utils.h @@ -10,8 +10,7 @@ #define INA260_SYSFS "/sys/kernel/ina260" #define INA260_POWER_REGISTER "registers/power" #define STATIC_LEN 255 -#define RECORD_QUEUES 1 -#define RECORD_MAX 100000 +#define MAX_QUEUES 1 #ifndef ZMQ_TOKEN #define ZMQ_TOKEN "ina260-zmq-publisher" -- cgit v1.2.3