Bus::end() calls Bus::canPause(false), which will always return false because Bus::state is Bus::INIT at this point, as we haven´t called Bus::begin(...) yet.
I suggest changing
|
if (state == IDLE) |
|
return true; |
to
if ((state == IDLE) || (state == INIT))