Also es wird ein Clock-Signal geliefert - somit musst du den Takt nicht selber rausfinden, der entspricht logischerweise der Clock!
Habe meine mal angeschlossen gehabt (einfach per MAX232 an den PC) und es kamen Daten.
Allerdings müssen die Pausen erkannt werden ume eine anständige Auswertung zu machen, da hast du Recht.
Die UART kann einen Reset erkennen, wie sich das mit den Pausen mitten im Paket verhällt weiß ich nicht.

Shiftin ist nix anderes als den Zustand eines Pins in Abhängigkeit einer vorhandenen (oder selber generierten) Clock einzulesen.
Im Prinzip gehst du hin und fragst immer wieder den Clockpin ab. Wenn der sich ändert, dann greifst du dir den Datapin und speicherst seinen Zustand in das erste Bit der Ausgabe-Variable.
Dann Clock prüfen bis der umgekehrte Zustand eintritt, wieder Data abfragen, usw.

Wenn Clock jetzt nicht nach der erwarteten Zeit wechselt, dann gehst du erstmal von der Startpause aus und merkst dir das.
Falls die Pause noch länger ist, dann handelt es sich entweder um die End-Pause, oder es ist die Mittelpause. In den beiden letzten Fällen verwirfst du also erstmal eventuelle Daten.
Hast du die Start-Pause und es kommt ein normales Signal hinterher speicherst du das, erkennst die Mittelpause, nimmst den 2. Block Daten und erkennst das Ende, fertig.

Dann Daten verwursten, ausgeben und wieder von vorne.

Oder du entkernst dir das Listing aus meinem Link um nur die reine Ausleserei übrig zu behalten - und baust darauf dann dein eigenes Programm auf.