From 093cbd987229e2ad7c65a86bc849fa79b544dc92 Mon Sep 17 00:00:00 2001 From: Sven Augustin Date: Tue, 24 Aug 2021 20:47:20 +0200 Subject: [PATCH] refactor --- slic/core/adjustable/pvadjustable.py | 51 +++++++++++++++------------- 1 file changed, 28 insertions(+), 23 deletions(-) diff --git a/slic/core/adjustable/pvadjustable.py b/slic/core/adjustable/pvadjustable.py index 4e9401e2..924866c0 100644 --- a/slic/core/adjustable/pvadjustable.py +++ b/slic/core/adjustable/pvadjustable.py @@ -61,39 +61,44 @@ class PVAdjustable(Adjustable): def _change(self, value): - timeout = self.timeout + time.time() - wait_time = self.wait_time - - if self._pcm: - # wait for ready - for _ in self._pcm.start(): -# print(self._pcm.state) -# print("waiting for: ready") - time.sleep(wait_time) - if time.time() >= timeout: - self._pcm.stop() - tname = typename(self) - raise AdjustableError(f"waiting for {tname} \"{self.name}\" to be ready for change to {value} {self.units} timed out") + self._wait_for_ready() ret = self.pvs.setvalue.put(value, wait=True, use_complete=True) # use_complete=True enables status in PV.put_complete handle_put_return_value(ret) time.sleep(self.process_time) - if self._pcm: - # wait for done - for _ in self._pcm.wait(): -# print(self._pcm.state) -# print("waiting for: done") - time.sleep(wait_time) - if self._pcm.state == "ready" and self._is_close(): - self._stop() - print("seems we are already there") - break + self._wait_for_done() + + + def _wait_for_ready(self): + if not self._pcm: + return + + timeout = self.timeout + time.time() + for _ in self._pcm.start(): + time.sleep(self.wait_time) + if time.time() >= timeout: + self._pcm.stop() + tname = typename(self) + raise AdjustableError(f"waiting for {tname} \"{self.name}\" to be ready for change to {value} {self.units} timed out") + + + def _wait_for_done(self): + if not self._pcm: + return + + for _ in self._pcm.wait(): + time.sleep(self.wait_time) + if self._pcm.state == "ready" and self._is_close(): + self._stop() + print("seems we are already there") + break def _stop(self): if self._pcm: self._pcm.stop() + pv_stop = self._get_pv("stop") if pv_stop: pv_stop.put(1, wait=True)