From 7fdde39ce1559b1a094567ce56ece908357b9609 Mon Sep 17 00:00:00 2001 From: Enrico Faulhaber Date: Mon, 25 Mar 2019 10:37:55 +0100 Subject: [PATCH] secop_demo/modules: use distinct state codes for the phases Change-Id: Ic58939627bd23781078d9b1c24f08c8203f92d69 Reviewed-on: https://forge.frm2.tum.de/review/20219 Tested-by: JenkinsCodeReview Reviewed-by: Enrico Faulhaber --- secop_demo/modules.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/secop_demo/modules.py b/secop_demo/modules.py index 77ef742..b17d4ba 100644 --- a/secop_demo/modules.py +++ b/secop_demo/modules.py @@ -117,6 +117,10 @@ class MagneticField(Drivable): datatype=StringType(), export=False, ), } + Status = Enum(Drivable.Status, PERSIST=101, PREPARE=301, RAMP=302, FINISH=303) + overrides = { + 'status' : Override(datatype=TupleOf(EnumType(Status), StringType())), + } def init_module(self): self._state = Enum('state', idle=1, switch_on=2, switch_off=3, ramp=4).idle @@ -137,8 +141,15 @@ class MagneticField(Drivable): def read_status(self, maxage=0): if self._state == self._state.enum.idle: - return (self.Status.IDLE, '') - return (self.Status.BUSY, self._state.name) + return (self.Status.PERSIST, 'at field') if self.value else \ + (self.Status.IDLE, 'zero field') + elif self._state == self._state.enum.switch_on: + return (self.Status.PREPARE, self._state.name) + elif self._state == self._state.enum.switch_off: + return (self.Status.FINISH, self._state.name) + elif self._state == self._state.enum.ramp: + return (self.Status.RAMP, self._state.name) + return (self.Status.ERROR, self._state.name) def _thread(self): loopdelay = 1