Exemplo n.º 1
0
 def _process_dgt_serial_nr(self):
     # logging.debug('Serial number {}'.format(message.number))  # actually used for watchdog (once a second)
     # molli: rolling display
     if not self._inside_main_menu():
         if self.dgtmenu.get_mode() == Mode.PONDER:
             if self.show_move_or_value >= self.dgtmenu.get_ponderinterval():
                 if self.hint_move:
                     side = self._get_clock_side(self.hint_turn)
                     beep = self.dgttranslate.bl(BeepLevel.NO)
                     text = Dgt.DISPLAY_MOVE(move=self.hint_move, fen=self.hint_fen, side=side, wait=True, maxtime=1,
                                             beep=beep, devs={'ser', 'i2c', 'web'}, uci960=self.uci960,
                                             lang=self.dgttranslate.language, capital=self.dgttranslate.capital,
                                             long=self.dgttranslate.notation)
                 else:
                     text = self.dgttranslate.text('N10_nomove')
             else:
                 text = self._combine_depth_and_score()
             text.wait = True
             DispatchDgt.fire(text)
             self.show_move_or_value = (self.show_move_or_value + 1) % (self.dgtmenu.get_ponderinterval() * 2)
         elif (self.dgtmenu.get_mode() == Mode.BRAIN and self.dgtmenu.get_rolldispbrain()) or (self.dgtmenu.get_mode() == Mode.NORMAL and self.dgtmenu.get_rolldispnorm()):
             #molli: allow rolling information display (time/score/hint_move) in BRAIN mode according to
             ##      ponder interval
             if self.play_move == chess.Move.null() and self.c_last_player == 'U':
                 if self.c_time_counter > 2 * self.dgtmenu.get_ponderinterval():
                     text = self._combine_depth_and_score()
                     text.wait = True
                     DispatchDgt.fire(text)
                     self.c_time_counter = (self.c_time_counter + 1) % (self.dgtmenu.get_ponderinterval() * 3)
                 elif self.c_time_counter > self.dgtmenu.get_ponderinterval():
                     if self.hint_move:
                         side = self._get_clock_side(self.hint_turn)
                         beep = self.dgttranslate.bl(BeepLevel.NO)
                         text = Dgt.DISPLAY_MOVE(move=self.hint_move, fen=self.hint_fen, side=side, wait=True, maxtime=1,
                                                 beep=beep, devs={'ser', 'i2c', 'web'}, uci960=self.uci960,
                                                 lang=self.dgttranslate.language, capital=self.dgttranslate.capital,
                                                 long=self.dgttranslate.notation)
                     else:
                         text = self.dgttranslate.text('N10_nomove')
                     text.wait = True
                     self.c_time_counter = (self.c_time_counter + 1) % (self.dgtmenu.get_ponderinterval() * 3)
                     DispatchDgt.fire(text)
                     if self.c_time_counter == 2 * self.dgtmenu.get_ponderinterval():
                         time.sleep(0.3)
                 else:
                     ## molli:  standard clock display
                     if self.c_time_counter == 0:
                         time.sleep(0.3)
                     self.c_time_counter = (self.c_time_counter + 1) % (self.dgtmenu.get_ponderinterval() * 3)
                     self._exit_display()
                     if self.c_time_counter == self.dgtmenu.get_ponderinterval():
                         time.sleep(0.3)
Exemplo n.º 2
0
 def _exit_display(self, devs=None):
     if devs is None:  # prevent W0102 error
         devs = {'ser', 'i2c', 'web'}
     if self.play_move and self.dgtmenu.get_mode() in (Mode.NORMAL,
                                                       Mode.BRAIN,
                                                       Mode.REMOTE):
         side = self._get_clock_side(self.play_turn)
         beep = self.dgttranslate.bl(BeepLevel.BUTTON)
         text = Dgt.DISPLAY_MOVE(move=self.play_move,
                                 fen=self.play_fen,
                                 side=side,
                                 wait=True,
                                 maxtime=1,
                                 beep=beep,
                                 devs=devs,
                                 uci960=self.uci960,
                                 lang=self.dgttranslate.language,
                                 capital=self.dgttranslate.capital,
                                 long=self.dgttranslate.notation)
     else:
         text = None
         if self._inside_main_menu('dont_care_dev'):
             text = self.dgtmenu.get_current_text()
         if text:
             text.wait = True  # in case of "bad pos" message send before
         else:
             text = Dgt.DISPLAY_TIME(force=True, wait=True, devs=devs)
     DgtObserver.fire(text)
Exemplo n.º 3
0
 def _process_dgt_serial_nr(self):
     # logging.debug('Serial number {}'.format(message.number))  # actually used for watchdog (once a second)
     if self.dgtmenu.get_mode(
     ) == Mode.PONDER and not self._inside_main_menu('dont_care_dev'):
         if self.show_move_or_value >= self.dgtmenu.get_ponderinterval():
             if self.hint_move:
                 side = self._get_clock_side(self.hint_turn)
                 beep = self.dgttranslate.bl(BeepLevel.NO)
                 text = Dgt.DISPLAY_MOVE(move=self.hint_move,
                                         fen=self.hint_fen,
                                         side=side,
                                         wait=True,
                                         maxtime=1,
                                         beep=beep,
                                         devs={'ser', 'i2c', 'web'},
                                         uci960=self.uci960,
                                         lang=self.dgttranslate.language,
                                         capital=self.dgttranslate.capital,
                                         long=self.dgttranslate.notation)
             else:
                 text = self.dgttranslate.text('N10_nomove')
         else:
             text = self._combine_depth_and_score()
         text.wait = True
         DgtObserver.fire(text)
         self.show_move_or_value = (self.show_move_or_value + 1) % (
             self.dgtmenu.get_ponderinterval() * 2)
Exemplo n.º 4
0
 def _process_new_pv(self, message):
     self.hint_move = message.pv[0]
     self.hint_fen = message.game.fen()
     self.hint_turn = message.game.turn
     # if message.mode == Mode.ANALYSIS and not self._inside_main_menu('dont_care_dev'):
     if message.mode == Mode.ANALYSIS:
         devs = {
             None if self._inside_main_menu(dev) else dev
             for dev in {'ser', 'i2c', 'web'}
         }
         devs.discard(None)
         side = self._get_clock_side(self.hint_turn)
         beep = self.dgttranslate.bl(BeepLevel.NO)
         disp = Dgt.DISPLAY_MOVE(move=self.hint_move,
                                 fen=self.hint_fen,
                                 side=side,
                                 wait=True,
                                 maxtime=0,
                                 beep=beep,
                                 devs=devs,
                                 uci960=self.uci960,
                                 lang=self.dgttranslate.language,
                                 capital=self.dgttranslate.capital,
                                 long=self.dgttranslate.notation)
         if devs:
             DgtObserver.fire(disp)
Exemplo n.º 5
0
 def _process_computer_move(self, message):
     self.force_leds_off(log=True)  # can happen in case of a book move
     move = message.move
     ponder = message.ponder
     self.play_move = move
     self.play_fen = message.game.fen()
     self.play_turn = message.game.turn
     if ponder:
         game_copy = message.game.copy()
         game_copy.push(move)
         self.hint_move = ponder
         self.hint_fen = game_copy.fen()
         self.hint_turn = game_copy.turn
     else:
         self.hint_move = chess.Move.null()
         self.hint_fen = None
         self.hint_turn = None
     # Display the move
     side = self._get_clock_side(message.game.turn)
     beep = self.dgttranslate.bl(BeepLevel.CONFIG)
     disp = Dgt.DISPLAY_MOVE(move=move,
                             fen=message.game.fen(),
                             side=side,
                             wait=message.wait,
                             maxtime=0,
                             beep=beep,
                             devs={'ser', 'i2c', 'web'},
                             uci960=self.uci960,
                             lang=self.dgttranslate.language,
                             capital=self.dgttranslate.capital,
                             long=self.dgttranslate.notation)
     DgtObserver.fire(disp)
     DgtObserver.fire(
         Dgt.LIGHT_SQUARES(uci_move=move.uci(), devs={'ser', 'web'}))
     self.leds_are_on = True
Exemplo n.º 6
0
 def _process_button3(self, dev: str):
     logging.debug('(%s) clock handle button 3 press', dev)
     if self._inside_updt_menu(dev):
         DgtObserver.fire(
             self.dgtmenu.updt_right())  # button3 cant exit the menu
     elif self._inside_main_menu(dev):
         DgtObserver.fire(
             self.dgtmenu.main_right())  # button3 cant exit the menu
     else:
         if self.hint_move:
             side = self._get_clock_side(self.hint_turn)
             beep = self.dgttranslate.bl(BeepLevel.BUTTON)
             text = Dgt.DISPLAY_MOVE(move=self.hint_move,
                                     fen=self.hint_fen,
                                     side=side,
                                     wait=False,
                                     maxtime=1,
                                     beep=beep,
                                     devs={'ser', 'i2c', 'web'},
                                     uci960=self.uci960,
                                     lang=self.dgttranslate.language,
                                     capital=self.dgttranslate.capital,
                                     long=self.dgttranslate.notation)
         else:
             text = self.dgttranslate.text('B10_nomove')
         DgtObserver.fire(text)
         self._exit_display(devs={dev})
Exemplo n.º 7
0
 def _process_button0(self, dev):
     logging.debug('(%s) clock handle button 0 press', dev)
     if self._inside_main_menu():
         text = self.dgtmenu.main_up(
         )  # button0 can exit the menu, so check
         if text:
             DispatchDgt.fire(text)
         else:
             self._exit_display()
     elif self._inside_updt_menu():
         self.dgtmenu.updt_up(dev)
         self._exit_display()  # button0 always exit the menu
     else:
         if self.last_move:
             side = self._get_clock_side(self.last_turn)
             beep = self.dgttranslate.bl(BeepLevel.BUTTON)
             text = Dgt.DISPLAY_MOVE(move=self.last_move,
                                     fen=self.last_fen,
                                     side=side,
                                     wait=False,
                                     maxtime=1,
                                     beep=beep,
                                     devs={'ser', 'i2c', 'web'},
                                     uci960=self.uci960,
                                     lang=self.dgttranslate.language,
                                     capital=self.dgttranslate.capital,
                                     long=self.dgttranslate.notation)
         else:
             text = self.dgttranslate.text('B10_nomove')
         DispatchDgt.fire(text)
         self._exit_display()
Exemplo n.º 8
0
 def _process_new_pv(self, message):
     self.hint_move = message.pv[0]
     self.hint_fen = message.game.fen()
     self.hint_turn = message.game.turn
     if message.mode == Mode.ANALYSIS and not self._inside_main_menu():
         side = self._get_clock_side(self.hint_turn)
         beep = self.dgttranslate.bl(BeepLevel.NO)
         disp = Dgt.DISPLAY_MOVE(move=self.hint_move, fen=self.hint_fen, side=side, wait=True, maxtime=0,
                                 beep=beep, devs={'ser', 'i2c', 'web'}, uci960=self.uci960,
                                 lang=self.dgttranslate.language, capital=self.dgttranslate.capital)
         DispatchDgt.fire(disp)
Exemplo n.º 9
0
 def _exit_display(self):
     if self.play_move and self.dgtmenu.get_mode() in (Mode.NORMAL, Mode.BRAIN, Mode.REMOTE):
         side = self._get_clock_side(self.play_turn)
         beep = self.dgttranslate.bl(BeepLevel.BUTTON)
         text = Dgt.DISPLAY_MOVE(move=self.play_move, fen=self.play_fen, side=side, wait=True, maxtime=1,
                                 beep=beep, devs={'ser', 'i2c', 'web'}, uci960=self.uci960,
                                 lang=self.dgttranslate.language, capital=self.dgttranslate.capital)
     else:
         text = None
         if self._inside_main_menu():
             text = self.dgtmenu.get_current_text()
         if text:
             text.wait = True  # in case of "bad pos" message send before
         else:
             text = Dgt.DISPLAY_TIME(force=True, wait=True, devs={'ser', 'i2c', 'web'})
     DispatchDgt.fire(text)