A very important part in any program development is debugging. Efficient debugging requires extensive testing, and to test an algorithm good data is needed. Real data is hard to collect, often compromising an experimental setup; hence an algorithm to store data for later use was developed. This algorithm records data sent by the sensor modules into a data files, later it is possible to reproduce back the data to the modules requiring it. The software consists of two modules, a Recorder module that does the message logging and a Player module that performs the playback. The software is able to log simple publish-subscribe messages and also more complicated query-server messages such as the ones exchanged through a shared memory (when efficiency is required). Using this method, modules that subscribe the logged messages do not “know” that they are using logged data and not real time data, and thus allows for simulation with real data.


Each log consists of several files, a header file and a variable number of data files. The header file contains information about which messages were received and were they were stored; it also stores generic information about the log, a more detailed list of the log fields is present bellow. The data files contain the messages data. The log header file uses XML format to allow easy expansion and user interface. Each time a message is received the recorder marshals it into a byte array, following the IPC format of the message, and stores that byte array into a data file.
  Message flow to the recorder. Publisher modules send messages to the subscribers; the recorder also receives those messages and saves them into a file in the hard drive.

GUI of the Player tool.



The player parses the XML header file and opens all the available data files. Each time a message is to be published the player reads the message from the corresponding data file, unmarshalles the data into a message structure using the specific message type format and the message and finally publishes it. To allow easy control of message publishing times, a graphic user interface was developed (GUI), Fig. 3. This GUI was developed using GTK+ in C programming language. It presents each message type stored in the log in a different time bar disposed vertically in parallel; each message is marked with a vertical line in the time bar against a white background. This GUI allows to fully control the playback of messages.
Message flow from the player. The player reads messages from all the data files and publishes them to the subscribing modules.
ATLAS group inserted into youtube two explanations about the use of player GUI