Sorry, war im Urlaub, daher erst jetzt:

Zu 1:
Mit dcfbit = ... werden die 4 Bit-Varianten (0/1-Bit und 0/1-Lastbit, d.h. Telegrammende) bezeichnet.

Verwendet wird das dann später in 2 Abfragen:
if (dcfbit != BIT_ERROR) {...
Dieser Teil wird nur ausgeführt, wenn eine der 4 Varianten erkannt wurde.
... und ...
if (dcfbit & LASTBIT_0) {...
Da wird getestet, ob ein Lastbit (also Telegrammende) vorliegt.

Zu 2:
Stimmt: Immer wenn ein Lastbit erkannt wurde (Pause 1800 oder 1900ms), wird mit ...
bitstream_mask = 1;
... diese Variable wieder mit 1 vorgeladen, sonst um eine Stelle nach links geschoben.

Zu 3:
Ja.

Gruß Dirk