Source code for pydevmgr_elt.devices.drot.rpcs

from pydevmgr_core import  NodeAlias1, Defaults 
from pydevmgr_elt.base import EltDevice,  GROUP
from pydevmgr_elt.devices.motor import Motor
from pydevmgr_elt.devices.drot.stat import MODE
from pydevmgr_elt.base.tools import _inc, enum_group, enum_txt
from pydevmgr_ua import UaInt16

from enum import Enum
Base = Motor.Rpcs

R = Base.Rpc # Base Node
RC = R.Config
RD = Defaults[RC] # this typing var says that it is a Rpc object holding default values 

to_int16 = UaInt16()

# RPC_ERROR are iddentical to Motor 

class TRACK_MODE(int, Enum):
    SKY  = MODE.SKY.value 
    ELEV = MODE.ELEV.value 
        

def mode_parser(mode):
    if isinstance(mode, str):
        try:
            mode = getattr( TRACK_MODE, mode)
        except AttributeError:
            choices = ",".join(str(m) for m in  TRACK_MODE)
            raise ValueError(f'tracking mode must be one of {choices} got %r'%mode)
    else:
        mode = TRACK_MODE(mode)
    return to_int16(mode)


class DrotRpcs(Base):

    class Config(Base.Config):
        rpcMoveAngle : RD = RC(suffix="RPC_MoveAngle", arg_parsers=[float])
        rpcStartTrack: RD = RC(suffix="RPC_StartTrack", arg_parsers=[mode_parser, float])
         
        rpcStopTrack: RD = RC(suffix="RPC_StopTrack")