def test_timer_supports_args_and_kwargs(self): m = Mock(return_value=None) t = ResettableTimer(3, m, ["args"], {"kwarg": "kwarg"}) t.start() t._timer.pass_time(3) m.assert_called_once_with("args", kwarg="kwarg")
def _main(): i = inotify.adapters.Inotify() i.add_watch(TARGET_DIR) global running_ti, files, cre ti = ResettableTimer(TIMER_TO, expired) cre = re.compile(REGEX) # watch directory for new file creation while 1 > 0 : for event in i.event_gen(yield_nones=False, timeout_s=1): (_, type_names, path, filename) = event for type_name in type_names: if (type_name == "IN_CREATE") : # start a new timer if ( running_ti ) : ti.reset() files.append(filename) if ( not running_ti ) : running_ti = True ti = ResettableTimer(TIMER_TO, expired) ti.start() files = [] files.append(filename)
class ServoControl(object): def __init__(self, pan_pin=12, tilt_pin=18, pan_limits=(500, 2500), tilt_limits=(500, 2500), initial_position=(90, 90), auto_off=1.5): self.__pi = pigpio.pi() self.__pan = ServoDetails(pan_pin, *pan_limits) self.__tilt = ServoDetails(tilt_pin, *tilt_limits) if auto_off: self.__auto_off_timer = ResettableTimer(auto_off, self.off) self.__auto_off_timer.start() else: self.__auto_off_timer = None # Move to initial position to have servos in known position self.move_to(*initial_position) def __set_pw(self, servo, pw=None): # TODO: check input pw validity if pw is None: pw = servo.pulsewidth return self.__pi.set_servo_pulsewidth(servo.pin, pw) @property def position(self): return {"pan": self.__pan.pos, "tilt": self.__tilt.pos} def move_to(self, pan=None, tilt=None): if pan is not None: self.__pan.pos = pan self.__set_pw(self.__pan) if tilt is not None: self.__tilt.pos = tilt self.__set_pw(self.__tilt) if self.__auto_off_timer is not None: self.__auto_off_timer.reset() def off(self): for servo in [self.__pan, self.__tilt]: self.__set_pw(servo, 0) def min(self): self.move_to(0, 0) def max(self): self.move_to(180, 180)
def test_timer_can_be_reset_after_cancel(self): m = Mock(return_value=None) t = ResettableTimer(5, m) t.start() t._timer.pass_time(3) m.assert_not_called() t.cancel() t.reset() t.start() t._timer.pass_time(6) m.assert_called_once_with()
class PiScreenOnOff(object): def __init__(self, timeout=15 * 60, pin=17): self.__sensor = HcSr501(pin) self.__timer = ResettableTimer(timeout, screen, [False]) self.__timer.start() def __run(self): while True: if self.__sensor.active: screen(True) self.__timer.reset(start=True) sleep(0.5) def run(self): try: self.__run() except KeyboardInterrupt: self.__timer.cancel()
def timeout_schedule_close(): global driver_for_shown_schedule if driver_for_shown_schedule != None: close_schedule() def timeout_command(): m.listen_input() cp.copy('refresh_command') go_to_x_slide('1') timer_command = ResettableTimer(45, timeout_command) timer_command.start() class NLPController(WebSocket): def __init__(self, *args, **kwargs): WebSocket.__init__(self, *args, **kwargs) _thread.start_new_thread(self.listen, ()) def listen(self): global BUFFER while True: try: if BUFFER: BUFFER = list(OrderedDict.fromkeys(BUFFER)) cmd = BUFFER.pop() self.sendMessage(str(cmd))