From 77505e2c230afeca785ceb23e4a3f569d0aba9d1 Mon Sep 17 00:00:00 2001
From: lhausamm <loic_hausammann@hotmail.com>
Date: Tue, 12 Dec 2017 14:39:51 +0100
Subject: [PATCH] Write timeBase (initial test implementation for data)

---
 src/logger.c | 36 +++++++++++++++++++++++++++++++++++-
 src/logger.h |  7 +++++++
 2 files changed, 42 insertions(+), 1 deletion(-)

diff --git a/src/logger.c b/src/logger.c
index 08affdfabd..cc56d2ad37 100644
--- a/src/logger.c
+++ b/src/logger.c
@@ -48,6 +48,33 @@ void logger_write_data(struct dump *d, size_t *offset, size_t size, void *p)
   memcpy(buff, p, size);
 }
 
+/**
+ * WARNING: name should be at max of size log->name
+ */
+void logger_write_general_data(struct dump *d, struct logger_const *log, size_t *offset,
+			       void *p, char* name, size_t data_type)
+{
+  char *buff;
+  /* write name */
+  buff = dump_get(d, log->name, offset);
+  memcpy(buff, name, log->name);
+
+  /* write data type */
+  buff = dump_get(d, LOGGER_DATATYPE_SIZE, offset);
+  memcpy(buff, &data_type, LOGGER_DATATYPE_SIZE);
+
+  /* write value */
+  size_t size = 0;
+  if (data_type == logger_data_double)
+    size = sizeof(double);
+  else
+    error("Not implemented");
+  
+  buff = dump_get(d, size, offset);
+  memcpy(buff, p, size);
+  
+}
+
 /**
  * @brief Compute the size of a message given its mask.
  *
@@ -344,8 +371,15 @@ void logger_write_file_header(struct dump *dump, struct engine *e) {
     logger_write_data(dump, file_offset, log_const.number, &log_const.masks_size[i]);
   }
 
-  /* Write data */
+  /* write mask data */
+  /* loop over each mask and each data in this mask */
+  /* write number of bytes for each field */
+  /* write data type (float, double, ...) */
+  /* write data name (mass, id, ...) */
   
+  /* Write data */
+  logger_write_general_data(dump, &log_const, file_offset, &e->timeBase,
+			    "timeBase", logger_data_double);
 
   /* last step */
   memcpy(skip_header, file_offset, log_const.offset);
diff --git a/src/logger.h b/src/logger.h
index a0dc44496f..6b5f1d4bd5 100644
--- a/src/logger.h
+++ b/src/logger.h
@@ -88,6 +88,7 @@ struct dump;
 #define LOGGER_MASK_SIZE 1 // size of the masks
 #define LOGGER_NBER_SIZE 1 // size of the number of elements
 #define LOGGER_OFFSET_SIZE 1// size of the offset size information
+#define LOGGER_DATATYPE_SIZE 1
 
 struct logger_const {
   size_t name; // labels size
@@ -101,6 +102,12 @@ struct logger_const {
   char *masks_type; // type of data (e.g. 'CHAR', 'INT', 'FLOAT')
 };
 
+enum logger_datatype {
+  logger_data_int,
+  logger_data_float,
+  logger_data_double,
+  logger_data_char,
+};
 
 /* Function prototypes. */
 int logger_size(unsigned int mask);
-- 
GitLab