From 3b13d05cdcf68ac966a9e6fac266ad24f2d482e4 Mon Sep 17 00:00:00 2001
From: winckel <winckel@eurecom.fr>
Date: Tue, 14 Jan 2014 09:44:56 +0000
Subject: [PATCH] Modified ITTI message number format from binay to ASCII.

git-svn-id: http://svn.eurecom.fr/openair4G/trunk@4866 818b1a75-f10b-46b9-bf7c-635c3b92a50f
---
 common/utils/itti/intertask_interface_dump.c   | 18 +++++++++++-------
 common/utils/itti/itti_types.h                 |  4 +++-
 common/utils/itti_analyzer/libbuffers/socket.c |  4 ++--
 .../itti_analyzer/libui/ui_notifications.c     |  5 +++--
 4 files changed, 19 insertions(+), 12 deletions(-)

diff --git a/common/utils/itti/intertask_interface_dump.c b/common/utils/itti/intertask_interface_dump.c
index 60a00ebf67..53ce310988 100644
--- a/common/utils/itti/intertask_interface_dump.c
+++ b/common/utils/itti/intertask_interface_dump.c
@@ -158,8 +158,10 @@ static int itti_dump_send_message(int sd, itti_dump_queue_item_t *message)
     /* Preparing the header */
     new_message->socket_header.message_size = size;
     new_message->socket_header.message_type = ITTI_DUMP_MESSAGE_TYPE;
-
-    new_message->signal_header.message_number = message->message_number;
+    /* Adds message number in unsigned decimal ASCII format */
+    snprintf(new_message->signal_header.message_number_char, sizeof(new_message->signal_header.message_number_char),
+             MESSAGE_NUMBER_CHAR_FORMAT, message->message_number);
+    new_message->signal_header.message_number_char[sizeof(new_message->signal_header.message_number_char) - 1] = '\n';
     /* Appends message payload */
     memcpy(&new_message[1], message->data, message->data_size);
 
@@ -184,15 +186,17 @@ static int itti_dump_send_message(int sd, itti_dump_queue_item_t *message)
 
 static int itti_dump_fwrite_message(itti_dump_queue_item_t *message)
 {
-    itti_socket_header_t header;
+    itti_dump_message_t  new_message_header;
 
     if ((dump_file != NULL) && (message != NULL)) {
 
-        header.message_size = message->message_size + sizeof(itti_dump_message_t) + sizeof(itti_message_types_t);
-        header.message_type = message->message_type;
+        new_message_header.socket_header.message_size = message->message_size + sizeof(itti_dump_message_t) + sizeof(itti_message_types_t);
+        new_message_header.socket_header.message_type = message->message_type;
+        snprintf(new_message_header.signal_header.message_number_char, sizeof(new_message_header.signal_header.message_number_char),
+                 MESSAGE_NUMBER_CHAR_FORMAT, message->message_number);
+        new_message_header.signal_header.message_number_char[sizeof(new_message_header.signal_header.message_number_char) - 1] = '\n';
 
-        fwrite (&header, sizeof(itti_socket_header_t), 1, dump_file);
-        fwrite (&message->message_number, sizeof(message->message_number), 1, dump_file);
+        fwrite (&new_message_header, sizeof(itti_dump_message_t), 1, dump_file);
         fwrite (message->data, message->data_size, 1, dump_file);
         fwrite (&itti_dump_message_type_end, sizeof(itti_message_types_t), 1, dump_file);
 // #if !defined(RTAI)
diff --git a/common/utils/itti/itti_types.h b/common/utils/itti/itti_types.h
index 4f91b354c9..83e6cbeb7d 100644
--- a/common/utils/itti/itti_types.h
+++ b/common/utils/itti/itti_types.h
@@ -38,6 +38,8 @@
 
 #define CHARS_TO_UINT32(c1, c2, c3, c4) (((c4) << 24) | ((c3) << 16) | ((c2) << 8) | (c1))
 
+#define MESSAGE_NUMBER_CHAR_FORMAT      "%11u"
+
 /* Intertask message types */
 enum itti_message_types_e
 {
@@ -66,7 +68,7 @@ typedef struct {
 } itti_socket_header_t;
 
 typedef struct {
-    uint32_t message_number;
+    char message_number_char[12]; /* 9 chars are needed to store an unsigned 32 bits value in decimal, but must be a multiple of 32 bits to avoid alignment issues */
 } itti_signal_header_t;
 
 
diff --git a/common/utils/itti_analyzer/libbuffers/socket.c b/common/utils/itti_analyzer/libbuffers/socket.c
index d8f6deac04..916bee9481 100644
--- a/common/utils/itti_analyzer/libbuffers/socket.c
+++ b/common/utils/itti_analyzer/libbuffers/socket.c
@@ -115,7 +115,7 @@ static int socket_read_itti_message(socket_data_t        *socket_data,
         g_assert_not_reached();
     }
 
-    buffer->message_number = itti_signal_header.message_number;
+    sscanf (itti_signal_header.message_number_char, MESSAGE_NUMBER_CHAR_FORMAT, &buffer->message_number);
 //     buffer_dump(buffer, stdout);
 
     /* Update the number of signals received since last GUI update */
@@ -127,7 +127,7 @@ static int socket_read_itti_message(socket_data_t        *socket_data,
         socket_notify_gui_update(socket_data);
     }
 
-    g_debug("Successfully read new signal %u from socket", itti_signal_header.message_number);
+    g_debug("Successfully read new signal %u from socket", buffer->message_number);
 
     return total_data_read + sizeof(itti_signal_header);
 }
diff --git a/common/utils/itti_analyzer/libui/ui_notifications.c b/common/utils/itti_analyzer/libui/ui_notifications.c
index dae6654071..496545d910 100644
--- a/common/utils/itti_analyzer/libui/ui_notifications.c
+++ b/common/utils/itti_analyzer/libui/ui_notifications.c
@@ -223,7 +223,7 @@ int ui_messages_read(char *file_name)
                                 g_assert_not_reached ();
                             }
 
-                            buffer->message_number = itti_signal_header->message_number;
+                            sscanf (itti_signal_header->message_number_char, MESSAGE_NUMBER_CHAR_FORMAT, &buffer->message_number);
 
                             ui_signal_add_to_list (buffer, ((read_messages % 1000) == 0) ? (gpointer) 1 : NULL);
 
@@ -305,7 +305,8 @@ static void ui_message_write_callback(const gpointer buffer, const gchar *signal
     message_header.message_size = sizeof(itti_socket_header_t) + sizeof(itti_signal_header) + message_size + sizeof(itti_message_types_t);
     message_header.message_type = ITTI_DUMP_MESSAGE_TYPE;
 
-    itti_signal_header.message_number = message_number;
+    sprintf(itti_signal_header.message_number_char, MESSAGE_NUMBER_CHAR_FORMAT, message_number);
+    itti_signal_header.message_number_char[sizeof(itti_signal_header.message_number_char) - 1] = '\n';
     message_number++;
 
     fwrite (&message_header, sizeof(message_header), 1, messages_file);
-- 
GitLab