Code:
tmp=(tmp<<1)|((datastream[i/8]<<(i%8))&(1<<8));//TODO dies kontrollieren
Diese Zeile macht für mich schon mal gar keinen Sinn. Mit tmp als uint8_t macht die Zeile nichts weiter als "tmp <<= 1;". Was sollte die Zeile denn eigentlich machen?