Refactor forwarder and implement clock service
This commit is contained in:
55
rpi/services/clock_service.py
Normal file
55
rpi/services/clock_service.py
Normal file
@@ -0,0 +1,55 @@
|
||||
from typing import Callable
|
||||
|
||||
from hardware.screen.screen import Screen
|
||||
from models.clock import Clock
|
||||
|
||||
class ClockService:
|
||||
|
||||
screen : Screen
|
||||
white_clock : Clock
|
||||
black_clock : Clock
|
||||
|
||||
on_terminated : Callable[[], None]
|
||||
|
||||
def __init__(self):
|
||||
self.screen = Screen()
|
||||
self.screen.enableBackground()
|
||||
self.screen.displayMessage("Waiting for start...")
|
||||
|
||||
def start(self, time_control : int, increment : int ):
|
||||
self.white_clock = self.__init_clock(time_control, increment)
|
||||
self.black_clock = self.__init_clock(time_control, increment)
|
||||
|
||||
self.white_clock.start()
|
||||
|
||||
def stop(self):
|
||||
self.white_clock.stop()
|
||||
self.black_clock.stop()
|
||||
|
||||
def switch(self):
|
||||
if self.white_clock.is_running():
|
||||
self.white_clock.stop()
|
||||
self.black_clock.start()
|
||||
|
||||
elif self.black_clock.is_running():
|
||||
self.black_clock.stop()
|
||||
self.white_clock.start()
|
||||
|
||||
def set_on_terminated(self, callback : Callable[[], None]):
|
||||
self.on_terminated = callback
|
||||
|
||||
def __init_clock(self, time_control : int, increment : int) -> Clock:
|
||||
clock = Clock(time_control, increment)
|
||||
clock.set_on_update(self.__tick)
|
||||
clock.set_on_terminated(self.__terminate)
|
||||
return clock
|
||||
|
||||
def __tick(self, formatted_time : str) -> None:
|
||||
self.__update_screen(formatted_time)
|
||||
|
||||
def __terminate(self) -> None:
|
||||
self.__update_screen("Time is over !")
|
||||
self.on_terminated()
|
||||
|
||||
def __update_screen(self, message : str) -> None:
|
||||
self.screen.displayMessage(message)
|
||||
Reference in New Issue
Block a user