-#include <msp/core/except.h>
#include <msp/core/maputils.h>
#include <msp/time/units.h>
#include "simplecontroller.h"
else if(name==reverse.name)
{
if(target_speed.value || speed)
- throw InvalidState("Must be stopped to change reverse");
+ throw logic_error("Must be stopped to change reverse");
reverse.set(v);
signal_control_changed.emit(reverse);
}
{
float secs = dt/Time::sec;
if(speed<target_speed.value)
- {
- speed += secs*accel;
- if(speed>target_speed.value)
- speed = target_speed.value;
- }
+ speed = min(speed+secs*accel, target_speed.value);
else if(speed>target_speed.value)
- {
- speed -= secs*accel;
- if(speed<target_speed.value)
- speed = target_speed.value;
- }
+ speed = max(speed-secs*accel, target_speed.value);
}
} // namespace R2C2