Commit 314a52bd authored by vertighel's avatar vertighel
Browse files
parent 1e90ff36
Loading
Loading
Loading
Loading
Loading
+58 −13
Original line number Diff line number Diff line
@@ -86,13 +86,15 @@ class Mercury(BaseDevice):
            try:
                self._gateway = PISocket(host=self.host, port=self.port)
                self._gateway.__enter__()
            except OSError as e:
                self.error.append(str(e))
                return None

                messages = GCSMessages(self._gateway)
                self.pidevice = GCSCommands(messages)
                self.pidevice.__enter__()
                self.error = []
            except OSError as e:
                self._gateway = None
                self.pidevice = None
                self.error.append(str(e))
                return None

        return self.pidevice

@@ -124,9 +126,11 @@ class Mercury(BaseDevice):
            return None
        try:
            return pidevice.qIDN()
        except GCSError as e:
        except (GCSError, OSError) as e:
            log.error(f"qIDN error: {e}")
            self.error.append(str(e))
            self.pidevice = None
            self._gateway = None
            return None

    @property
@@ -156,6 +160,12 @@ class Mercury(BaseDevice):
        except GCSError as e:
            log.error(f"Error: {e}")
            return None
        except OSError as e:
            log.error(f"Socket error in get: {e}")
            self.error.append(str(e))
            self.pidevice = None
            self._gateway = None
            return None
        except AttributeError as e:
            log.error(f"Command not found: {e}")
            return None
@@ -180,6 +190,12 @@ class Mercury(BaseDevice):
        except GCSError as e:
            log.error(f"Error: {e}")
            return None
        except OSError as e:
            log.error(f"Socket error in put: {e}")
            self.error.append(str(e))
            self.pidevice = None
            self._gateway = None
            return None
        except AttributeError as e:
            log.error(f"Command not found: {e}")
            return None
@@ -202,10 +218,20 @@ class Mercury(BaseDevice):
                moving = status_dict[self.axis]
            except GCSError as e:
                log.warning(e)
            except OSError as e:
                log.error(f"Socket error in wait: {e}")
                self.error.append(str(e))
                self.pidevice = None
                self._gateway = None
                return

            try:
                err = pidevice.qERR()
                if err != 0:
                    log.warning(err)
            except (GCSError, OSError) as e:
                log.warning(f"qERR error in wait: {e}")
                break

            time.sleep(0.2)

@@ -218,8 +244,14 @@ class Mercury(BaseDevice):
        if pidevice is None:
            return

        # Clear any previous errors
        try:
            pidevice.qERR()
        except (GCSError, OSError) as e:
            log.error(f"init qERR error: {e}")
            self.error.append(str(e))
            self.pidevice = None
            self._gateway = None
            return
        # Servo on
        self.put("SVO", True)

@@ -240,8 +272,14 @@ class Mercury(BaseDevice):
        if pidevice is None:
            return

        # Clear any previous errors
        try:
            pidevice.qERR()
        except (GCSError, OSError) as e:
            log.error(f"abort qERR error: {e}")
            self.error.append(str(e))
            self.pidevice = None
            self._gateway = None
            return
        # STOP!
        self.put("STP", True)

@@ -281,7 +319,14 @@ class Stage(Mercury):
        pidevice = self._check_connection()
        if pidevice is None:
            return None
        try:
            return pidevice.IsMoving(self.axis)[self.axis]
        except (GCSError, OSError) as e:
            log.error(f"IsMoving error: {e}")
            self.error.append(str(e))
            self.pidevice = None
            self._gateway = None
            return None


    @property
+7 −1
Original line number Diff line number Diff line
@@ -174,7 +174,13 @@ class Template(BaseTemplate):
            if imagetype == "Light":
                if self.domeslewing:
                    log.info(f"Check Dome position")
                    while (abs(tel.coordinates["altaz"][1] - dom.azimuth) > 3):
                    while True:
                        dome_az = dom.azimuth
                        if dome_az is None:
                            log.warning("Dome azimuth unavailable, skipping dome alignment")
                            break
                        if abs(tel.coordinates["altaz"][1] - dome_az) <= 3:
                            break
                        if not self.domeslewing:
                            log.debug("Stop slewing anyway")
                            return