Skip to content

Binary log file structure

The log file that Ping Viewer provides has a header description structure that allows program to identify different types of information, the header structure is defined as the following:

  • Header (String)
  • Log structure version (int32)
  • Information about the program that have generated the log
  • Ping Viewer commit hash (String)
  • Ping Viewer build date (String)
  • Ping Viewer release tag (String)
  • Operating System name (String)
  • Operating System version (String)
  • Sensor information
  • Sensor type (int32)
  • Sensor model (int32)

Note: The binary file structure is done in big-endian.

Arrays (Strings) are defined with the following structure: - Array size (uint32) - Array data (byte_array[])

The source code that defines this structure can be found in Ping Viewer source code LogSensorStruct file.

After the header block, the messages are organized in the following format: [Timestamp string][Byte array from the serial buffer]

Where the timestamp string follows the format: hh:mm:ss.zzz.

Note that the byte array part may not contain a full valid message, it just contains the data available on the serial buffer during the sample time of the timestamp.

Python example

You can check this minimal Python example (needs Python 3.7+).

It's necessary to install bluerobotics-ping python package before running it.

It outputs the Header content, and after an user input, it decodes some specific messages from the file. E.g:

    String: PingViewer sensor log file
    Version: 1
        hash: b0461486
        date: 2020-01-03T14:31:14-03:00
        tag: development
            name: Arch Linux
            version: unknown
        Family: 1
        Type: 2

Press Enter to continue and decode received messages...