This seems backwards.  This is the only place you're declaring that you've seen SoF (Start of Frame).  Does that mean that the HOTT protocol actually uses a gap of silence to declare SoF?

If that's the case, then won't you always declare in-frame (and also clear the receive_timer) when you have complete silence on the UART?  That seems bad.