Use mv for other objects than Axis
We are using optic
device in the ebs-tomo project.
This object have a magnification, have it own state, and is not an axis.
Some of them are movable (cause there is a bunch of mountable lenses using a motor, or because there is motors, or cause it can deal with some focal plan).
To move the magnification, an optic exposes right now a property which uses internally a umv
. That's not a very nice decoupling of the control and the user feedback. What if the optic is move remotely or from a script? -> This will always print stuffs.
BLISS already proposes a bunch of functions to move stuffs mv
, umv
, mvr
, umvr
.
I would like to propose the ability of movable object, to allow any controller to implement it's own way to behave to a mv
, umv
, mvr
, umvr
.
Basically i would like to be able to move the magnification such way:
mv(optic, 10) # which sounds quite consistent with the actual BLISS API
So what user can use umv
if he likes, or just mv
.
This still have to be analysed, because CLI interface have to be properly designed, but for now i think of
- A
Movable
ABC class to provide all the method expected do handle amv
command by a device - A
IsMovable
interface to allow an object to expose aMovable
instance
I don't think Movable
must be implemented by a device directly, because i don't think it's a very good idea to expose such internal API to end users. It's also a good thing to put such code together and decoupled from the main object.
What do you think?