# LCM Log File format

Conceptually, an LCM Log file is an ordered list of events. Each event has four fields:

Field Name | Field Description
--- | ---
event number | monotonically increasing 64-bit integer that identifies each event. It should start at zero, and increase in increments of one.
timestamp | monotonically increasing 64-bit integer that identifies the number of microseconds since the epoch (00:00:00 UTC on January 1, 1970) at which the event was received.
channel | UTF-8 string identifying the LCM channel on which the message was received.
data | binary blob consisting of the exact message received.

## Event Encoding

Each event is encoded as a binary structure consisting of a header, followed by the channel and the data.

The header is 28 bytes and has the following format:

     0      7 8     15 16    23 24    31
    +--------+--------+--------+--------+
    |   LCM Sync Word                   |
    +--------+--------+--------+--------+
    |   Event Number (upper 32 bits)    |
    +--------+--------+--------+--------+
    |   Event Number (lower 32 bits)    |
    +--------+--------+--------+--------+
    |   Timestamp (upper 32 bits)       |
    +--------+--------+--------+--------+
    |   Timestamp (lower 32 bits)       |
    +--------+--------+--------+--------+
    |   Channel Length                  |
    +--------+--------+--------+--------+
    |   Data Length                     |
    +--------+--------+--------+--------+

`LCM Sync Word` is an unsigned 32-bit integer with value `0xEDA1DA01`

`Event Number` and `Timestamp` fields of the header are as described above.

`Channel Length` is an unsigned 32-bit integer describing the length of the channel name.

`Data Length` is an unsigned 32-bit integer describing the length of the data.

Each header is immediately followed by the UTF-8 encoding of the LCM channel, and then the message data. The channel is not NULL-terminated.

All integers are packed in network order (big endian)