WiNRADiO Signal Strength Recorder (SSR) File Format
---------------------------------------------------

Signal strength recordings are stored in time sequence in designated chunks
(like the spectrum sweep file). Common data for each chunk include the "Chunk
ID" and length of the chunk (both fields are four bytes each).  New data for
future releases can either expand on an existing chunk (and not subtract from
it) or create new chunks. The file contains a file header which is 36 bytes
in size containing the string: "WiNRADiO Signal Strength Recording" followed
by character 26 (Ctrl+Z) and a NULL terminator character (0). The rest of the
file contains chunks of data.

Each chunk starts with the following header:

    typedef struct _CHUNKHEADER
    {
        DWORD dwChunkID;    // four letter chunk ID
        DWORD dwLength;     // length of data in chunk (not including header)
    } CHUNKHEADER, FAR *LPCHUNKHEADER;

The SSR files have the following chunks:

  Trace data chunk (TRCD = 0x44435254)

    The trace data consists of the following fields:  trace number, frequency,
    mode, colour and active status. These chunks should only appear before a
    session chunk (TSES).

        typedef struct _TRACEDATA
        {
            WORD wNumber;           // trace number
            DWORD dwFrequency;
            WORD wMode;             // radio's mode
            WORD wColour;           // one of 40 predefined colours
            WORD fActive;
        } TRACEDATA, FAR *LPTRACEDATA;

  Session data chunk (TSES = 0x53455354)

    The session data consists of the following fields: starting date, starting
    time, duration, interval, number of samples per trace and the number of
    traces (all the active trace chunks MUST immediately follow this chunk,
    then any new data chunks after).  This chunk should follow a TRCD chunk.

        typedef struct _TRACESESSION
        {
            DWORD dwStartDate;      // # of days from 1/1/0001
            DWORD dwStartTime;      // # of seconds since midnight
            DWORD dwDuration;       // length in seconds
            DWORD dwInterval;       // sampling interval in seconds
            DWORD dwNumSamples;     // number of samples per trace
        } TRACESESSION, FAR *LPTRACESESSION;

  Trace samples chunk (TRCS = 0x53435254)

    This contains the trace number and the samples for the trace.  This chunk
    must follow either a previous TRCS chunk or a TSES chunk. For each sample,
    the first 3 bytes (bits 0 to 23) specifies the time of day in 1/10s of
    seconds since midnight, the most significant byte contains the signal
    strength.

        typedef struct _TRACE
        {
            WORD wNumber;           // trace # (details in TRACEDATA chunk)
            DWORD dwSamples[];
        } TRACE, FAR *LPTRACE;
