commit 11229ed6e56, Fixed RVEL bug, made a change to be able
to set the .RVEL field in the motorRecord from a model 3 driver.
However, this mixes motorVelocity_,
which is a setpoint changed with every movement, with an actual value,
which changes while the motor is moving.
And goes to 0.0 when the motor has stopped.
Or stays at 0.0 when the motor refuse to start.
This may be caused by an interlock, limit switch, power off or others.
In short: Introduce a new asynParameter to store the value.
Compatiblity considarations:
Since the .RVEL field has never been working for an asynMotor,
we don't expect any.
If needed, code can be adopted at compile time, with something like this:
#ifdef motorActVelocityString
setDoubleParam(pC_->motorActVelocity_,
st_axis_status.fActVelocity);
#endif
The asyn module make the constructor
asynPortDriver::asynPortDriver(const char *portNameIn, int maxAddrIn,
int paramTableSize, int interfaceMask, int interruptMask,
int asynFlags, int autoConnect, int priority, int stackSize)
obsolete in R4.32.0, the more modern version should be used, which does
not have the parameter paramTableSize.
Using a modern version of asyn for the motor gives a compiler warning.
As I don't like compiler warnings, add a #ifdef construct to suppress it
for asyn > R4.32, and still allow to compile agains asyn >= R4.32
It calls the report function for each axis, and then the base class asynReportDriver::report.
asynMotorController::writeInt32 and writeFloat64 now call the appropriate new axis functions
(e.g. setHighLimit, setPGain) etc. for those functions.
asynMotoroController::writeInt32 can call the new controller function setDeferredMoves.
There is a base class implementation of setDeferredMoves.
This currently does nothing, but in the future it could implement deferred moves for
those controllers that simply need to issue a move to each axis.