Graupner frame have variable frame sizes. The third byte set the number of transmitted channels. At start i set the expected frame size to 3. It could also be HSUM_MAX_FRAME_LENGTH. After the third byte is received, i can calculate the real frame size. When all bytes collected, i try to interpret the frame. HSUM_MAX_FRAME_LENGTH prevents buffer overruns caused by wrong data.