diff --git a/RTCP/Cobalt/OutputProc/src/TBB_Frame.h b/RTCP/Cobalt/OutputProc/src/TBB_Frame.h index fda504b29d6ce8bb816c99d56a2f3c9e201e1a06..db308a1a0b13157e11a536bbcfa482edb8a08bb3 100644 --- a/RTCP/Cobalt/OutputProc/src/TBB_Frame.h +++ b/RTCP/Cobalt/OutputProc/src/TBB_Frame.h @@ -77,11 +77,14 @@ namespace LOFAR * In the TBBs, transient samples are packed (2 samples per 3 bytes) with the checksum all the way at the end. This changes on transfer. * * TBB stores a frame in 2040 bytes (actually, 2048 with preamble and gaps). It sends a frame at a time, so derive our max from it. + * + * In spectral mode the frame size is only 2012 bytes! */ -#define MAX_TBB_DATA_SIZE (2040 - sizeof(TBB_Header) - sizeof(uint32_t)) // 1948: TBB frame size without header and payload crc32. +#define MAX_TBB_DATA_SIZE_SPECTRAL_MODE (2012 - sizeof(TBB_Header) - sizeof(uint32_t)) +#define MAX_TBB_DATA_SIZE_TRANSIENT_MODE (2040 - sizeof(TBB_Header) - sizeof(uint32_t)) // 1948: TBB frame size without header and payload crc32. -#define MAX_TBB_TRANSIENT_NSAMPLES (MAX_TBB_DATA_SIZE / 3 * 2) // 1298 (.666: 1 byte padding when indeed 1298 samples would ever be stored in TBB) -#define MAX_TBB_SPECTRAL_NSAMPLES (MAX_TBB_DATA_SIZE / (2 * sizeof(int16_t))) // 487 +#define MAX_TBB_TRANSIENT_NSAMPLES (MAX_TBB_DATA_SIZE_TRANSIENT_MODE / 3 * 2) // 1298 (.666: 1 byte padding when indeed 1298 samples would ever be stored in TBB) +#define MAX_TBB_SPECTRAL_NSAMPLES (MAX_TBB_DATA_SIZE_SPECTRAL_MODE / (2 * sizeof(int16_t))) // 487 // Unpacked, sign-extended (for transient) samples without padding, i.e. as received. // Frames might not be full; the doc says the crc32 is always sent right after (no padding),