Source code for satnogsclient.rotator

import logging

import Hamlib

LOGGER = logging.getLogger(__name__)


[docs]class Rotator(object): """Communicate and interface with rotators :param model: Model of rotator e.g. "ROT_MODEL_EASYCOMM3" or "ROT_MODEL_DUMMY" :type model: str :param baud: The baud rate of serial communication, e.g. 19200 :type baud: int, optional :param port: The port of the rotator, e.g. "/dev/ttyUSB0" :type port: str """ def __init__(self, model, baud, port): """Class constructor""" self.rot_port = port self.rot_baud = baud self.rot_name = getattr(Hamlib, model) self.rot = Hamlib.Rot(self.rot_name) self.rot.state.rotport.pathname = self.rot_port self.rot.state.rotport.parm.serial.rate = self.rot_baud
[docs] def get_info(self): """Return information about the rotator :return: Information about the rotator :rtype: str """ return self.rot.get_info()
@property def position(self): """Return the position in degrees of azimuth and elevation :return: Position in degrees :rtype: list[float, float] """ return self.rot.get_position() @position.setter def position(self, pos): """Set the position in degrees of azimuth and elevation :param pos: Position in degrees :type pos: list[float, float] """ self.rot.set_position(*pos)
[docs] def get_conf(self, cmd): """Return the configuration of a register :param cmd: Number of the register :type cmd: int :return: Value of register :rtype: str """ return self.rot.get_conf(cmd)
[docs] def reset(self): """Move the rotator to home position and return the current position :return: Current position in degrees :rtype: None or list[float, float] """ return self.rot.reset(Hamlib.ROT_RESET_ALL)
[docs] def stop(self): """Stop the rotator and return the current position :return: Current position in degrees :rtype: None or list[float, float] """ return self.rot.stop()
[docs] def park(self): """Move the rotator to park position and return the current position :return: Current position in degrees :rtype: None or list[float, float] """ return self.rot.park()
[docs] def move(self, direction, speed): """Move the rotator with speed (mdeg/s) to specific direction :param direction: The direction of movement, e.g. ROT_MOVE_UP, ROT_MOVE_DOWN, ROT_MOVE_LEFT, ROT_MOVE_RIGHT :type direction: str :param speed: The velocity set point in mdeg/s :type speed: int """ direction = getattr(Hamlib, direction) self.rot.move(direction, abs(speed))
[docs] def open(self): """Start the communication with rotator""" self.rot.open()
[docs] def close(self): """End the communication with rotator""" self.rot.close()