Assignments as side-effects of evaluating a predicate are a bit ugly.  In particular, due to short-circuit evaluation of the predicates, some of the later ones may not even be evaluated which can lead to using the value of an uninitialized variable.

In effect, your code needs to acknowledge that both gyroTimeout and accelTimeout have 3 possible states:
* true
* false
* uninitialized stack data

You now have a very strict dependency between the 'if' statement above and the cascading 'if'/'else if' that occurs below.  A mismatch between the two blocks of code can introduce an entirely unexpected (and very subtle) bug.