Und das ist ein sehr interessanter Fall, weil man hier nämlich mit einer Kombination aus beiden Techniken arbeiten kann/muss. Du hast einen Protokollkopf (bei dir ein Byte), der mitteilt was für einen Datagrammtyp eigentlich gesendet wird. Der Zustandsautomat müsste folglich das erste Mal eine Prüfung starten, wenn der Protokollkopf vollständig ist. Danach könnte der Code dann warten bis das Datagramm komplettiert wurde. Das reduziert die Anzahl der Zustände auf Datagrammanzahl + 1 anstelle der max. Datagrammlänge bei der reinen Zustandsautomatenlösung.
Übrigens: In einem union können mehrere Datenstrukturen überlagert werden. Zum Beispiel besagter Protokollkopf, Datagrammtyp1, Datagrammtyp2 etc., womit du gleich auf alles bequem zugreifen kannst.
Grüße,
Markus
Lesezeichen