Bypassing Motion and Idle time off

So MOTION_TIMEOUT is only really overriding a default time of 20 seconds with a custom time instead.
It is only used in the prop for SWING_ON so that you can still swing to turn on if more than 20 seconds has expired since turning off the blade, up to your custom defined time.
Regardless, a 20 second timeout minimum still exists in saber base in the following code block.
However, if NUM_BUTTONS == 0, I don’t think it should ever time out in the first place?

  static bool MotionRequested() {
#if NUM_BUTTONS == 0
    return true;
#else
    return IsOn() || (millis() - last_motion_request_) < 20000;
#endif
  }

Anyway, if you really wanted to, you could just remove the MOTION_TIMEOUT check all together by taking away the outer most condition here:

      if (millis() - saber_off_time_ < MOTION_TIMEOUT) {
        SaberBase::RequestMotion();
        if (swinging_ && fusor.swing_speed() < 100) {
          swinging_ = false;
        }
        if (!swinging_ && fusor.swing_speed() > 500) {
          swinging_ = true;
          Event(BUTTON_NONE, EVENT_SWING);
        }
      }

so that it’s just

        SaberBase::RequestMotion();
        if (swinging_ && fusor.swing_speed() < 100) {
          swinging_ = false;
        }
        if (!swinging_ && fusor.swing_speed() > 500) {
          swinging_ = true;
          Event(BUTTON_NONE, EVENT_SWING);
        }

This would effectively be constantly setting last_motion_request_ = millis();, so you’d never reach the default 20000ms, not use any MOTION_TIMEOUT, and the saber would just always respond to motion as long as there is power available.

-or-
as pointed out above, just set the MOTION_TIMEOUT to something ridiculously high and be done. :upside_down_face: