from gpilib2.rpc import rpc
from gpilib2.sensors import sensors
from gpilib2.powerbars import powerbars
from gpilib2.coronagraph import coronagraph
from gpilib2.source import source
from gpilib2.shutters import shutters
from gpilib2.pnc import pnc
from gpilib2.cameras import cameras
from gpilib2.mcds import mcds
[docs]class gpi:
"""All of GPI
Args:
sim (bool):
Run in sim mode (default False). Setting to true automatically toggles
verbose mode
verb (bool):
Toggle verbose mode (default False)
sim_fill_val (str):
Default value to fill for simulated GMB queries. Defaults to '0'.
Attributes:
powerbars (:py:class:`~gpilib2.powerbar`):
Powerbars object
sensors (:py:class:`gpilib2.sensors`):
Sensors object.
rpc (:py:class:`gpilib2.rpc`):
rpc object for all communications.
coronagraph (:py:class:`gpilib2.coronagraph`):
Coronagraph object
source (:py:class:`gpilib2.source`):
Source object
shutters (:py:class:`gpilib2.shutters`):
Shutters object
pnc (:py:class:`gpilib2.pnc`):
PnC object
cameras (:py:class:`gpilib2.cameras`)
"""
def __init__(self, sim: bool = False, verb: bool = False, sim_fill_val: str = "0"):
"""Instantiate all sub-objects and assign as attributes
Args:
sim (bool):
Run in sim mode (default False). Setting to true automatically toggles
verbose mode
verb (bool):
Toggle verbose mode (default False)
sim_fill_val (str):
Default value to fill for simulated GMB queries. Defaults to '0'.
"""
self.rpc = rpc(sim=sim)
self.sensors = sensors(self.rpc)
self.powerbars = powerbars(self.sensors)
#self.coronagraph = coronagraph(self.rpc)
#self.source = source(self.rpc)
self.shutters = shutters(self.rpc)
self.pnc = pnc(self.rpc)
#self.cameras = cameras(self.rpc)
self.mcds = mcds(self.rpc)
def __str__(self) -> str:
"""Print attributes"""
return self.rpc.__str__()
[docs] def get_zenith(self) -> float:
"""Return current zenith value"""
return self.rpc.read_gmb_values("tlc.fromGemini.tcsZenith").astype(float)[0] # type: ignore
[docs] def set_zenith(self, val: float) -> None:
"""Set zenith value in GMB
Args:
val (float):
Zenith angle in degrees
Returns:
None
"""
self.rpc.write_gmb_value("tlc.fromGemini.tcsZenith", val)
assert self.get_zenith() == val, "Failed to set zenith angle."