def update(self, wait=False): # notify the machine EVG of the changes ec = tuple(map(int, self.__ec)) bd = tuple(map(int, self.__bd)) fd = tuple(map(int, self.__fd)) bc = tuple(map(int, self.__bc)) Pv.put(self.__pv_EC_array, ec) Pv.put(self.__pv_BD_array, bd) Pv.put(self.__pv_FD_array, fd) Pv.put(self.__pv_BC_array, bc) Pv.wait_for_value(self.__pv_EC_array, ec, timeout=1) Pv.wait_for_value(self.__pv_BD_array, bd, timeout=1) Pv.wait_for_value(self.__pv_FD_array, fd, timeout=1) Pv.wait_for_value(self.__pv_BC_array, bc, timeout=1) if wait: self.reset_update_cb() Pv.put(self.__pv_notify, 1) if wait: self.wait_update_cb()
def follower(self): """ puts the pulse picker in follower mode """ self._cleanup() self.trigger.delay(self._followerdelay) Pv.put(self._PVname('RUN_FOLLOWERMODE'), 1) Pv.wait_for_value(self._PVname('SE'), 6)
def burst(self): """ puts the pulse picker in burst mode """ self._cleanup() self.trigger.delay(self._burstdelay) Pv.put(self._PVname('RUN_BURSTMODE'), 1) Pv.wait_for_value(self._PVname('SE'), 3)
def flipflop(self): """ puts the pulse picker in flip-flop mode """ self._cleanup() self.trigger.delay(self._flipflopdelay) Pv.put(self._PVname('RUN_FLIPFLOP'), 1) Pv.wait_for_value(self._PVname('SE'), 2)
def home(self): """ home the pulse picker rotation motor """ self._cleanup() Pv.put(self._PVname('HOME:MOTOR'), 1) Pv.wait_until_change(self._PVname('SE'), 1) Pv.wait_for_value(self._PVname('SE'), 0)
def _cleanup(self): self._seq.stop() self._reset_mode() Pv.wait_for_value(self._PVname("SD_L"), 0) # wait after this cleanup finishes - causes some issues otherwise time.sleep(0.5)