diff options
| author | Loic Guegan <manzerbredes@mailbox.org> | 2023-07-17 14:50:13 +0200 |
|---|---|---|
| committer | Loic Guegan <manzerbredes@mailbox.org> | 2023-07-17 14:50:13 +0200 |
| commit | e8417d7397564e2f16b484da357fe01f1c0ccf13 (patch) | |
| tree | 19e6b8e031549ba827d83a21f11c281d04f9bbfb | |
| parent | 44f332f91d48e43a3a3c30fec4353ea9358d51fd (diff) | |
Minor changes
| -rw-r--r-- | config.mk | 2 | ||||
| -rw-r--r-- | src/logger.c | 73 | ||||
| -rw-r--r-- | src/utils.h | 2 |
3 files changed, 54 insertions, 23 deletions
@@ -19,7 +19,7 @@ LOGGERS_DIR=/tmp/ina260_logs/ # LOGGERS_DELAY defines the delay between 2 consecutive # ina260 power read performed by the logger # Unit is milliseconds -LOGGERS_DELAY=1 +LOGGERS_DELAY=1000 # SUBSCRIBER_DIR will contain all the measurments # received from the publishers SUBSCRIBER_DIR=./data diff --git a/src/logger.c b/src/logger.c index 2501e9a..667627b 100644 --- a/src/logger.c +++ b/src/logger.c @@ -24,6 +24,21 @@ void sighandler(int signo){ } } +void publish(int queue_id); + +typedef struct record { + time_t secs; + long nsecs; + uint16_t power; +} record; + +typedef struct queue { + int length; + record records[RECORD_MAX]; +} queue; + +queue queues[RECORD_QUEUES]; + int main (int argc, char *argv []) { if(argc != 4){ @@ -52,7 +67,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); } @@ -62,38 +77,52 @@ 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; + while(!__stop){ interval=INTERVAL(__loginterval); - *logfilepath='\0'; // Clear previous path - sprintf(logfilepath,"%s/%ld",__logdir,interval); - logptr=fopen(logfilepath,"w"); - // Write file header: - fprintf(logptr,"timestamp,ns,power\n"); // Log current interval + queue_id=queue_id>=RECORD_QUEUES ? 0 : queue_id+1; + int record=0; while((TIMESTAMP()-interval)<__loginterval){ - // Read power: - fgets(buffer,STATIC_LEN,regptr); - power=atoi(buffer); - // Get power measurement timestamp: - clock_gettime(CLOCK_REALTIME,&power_ts); - // Write measurement in file: - fprintf(logptr,"%d,%ld,%d\n",power_ts.tv_sec,power_ts.tv_nsec,power); - // Reset power register file: - fseek(regptr,0,SEEK_SET); -#if LOGGERS_DELAY > 0 - usleep(LOGGERS_DELAY*1000); -#endif - //printf("Tick\n"); fflush(stdout); + 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++; + } else { + printf("Queue overflow, RECORD_MAX must be increase!! n=%d\n",record); + } } - fclose(logptr); + queues[queue_id].length=record; + publish(queue_id); } fclose(regptr); return 0; } + + +void publish(int queue_id){ + for(int i=0;i<queues[queue_id].length;i++){ + printf("%d,%ld,%d\n",queues[queue_id].records[i].secs,queues[queue_id].records[i].nsecs,queues[queue_id].records[i].power); + fflush(stdout); + } +}
\ No newline at end of file diff --git a/src/utils.h b/src/utils.h index bca8ee0..d7d884f 100644 --- a/src/utils.h +++ b/src/utils.h @@ -10,6 +10,8 @@ #define INA260_SYSFS "/sys/kernel/ina260" #define INA260_POWER_REGISTER "registers/power" #define STATIC_LEN 255 +#define RECORD_QUEUES 1 +#define RECORD_MAX 1000 #ifndef ZMQ_TOKEN #define ZMQ_TOKEN "ina260-zmq-publisher" |
