示例#1
0
    def __init__(self, ipcon):
        self.okay = False
        self.ipcon = ipcon

        if not config.UID_LED_STRIP_BRICKLET:
            print("Not Configured: LED Strip (required)")
            return

        self.led_strip = LEDStrip(config.UID_LED_STRIP_BRICKLET, self.ipcon)

        try:
            self.led_strip.get_frame_duration()
            print("Found: LED Strip ({0})".format(
                config.UID_LED_STRIP_BRICKLET))
        except:
            print("Not Found: LED Strip ({0})".format(
                config.UID_LED_STRIP_BRICKLET))
            return

        self.kp = KeyPress(self.ipcon)
        self.speaker = PongSpeaker(self.ipcon)

        self.okay = True

        self.led_strip.set_frame_duration(40)
        self.led_strip.register_callback(
            self.led_strip.CALLBACK_FRAME_RENDERED, self.frame_rendered)

        self.init_game()
示例#2
0
 def go_to_playlist_menu(self):
     res = self.comm.call("led", "set", {"anim": ["playlist_menu"]})
     res = self.comm.call("stream_receiver", "multicast", {})
     self.inputter.set_key_press(KeyPress(self.playlist_menu))
     self.startup_timer = threading.Timer(self.menu_linger_time,
                                          self.leave_submenu)
     self.startup_timer.start()
示例#3
0
    def test_time(self):
        # A12-15<call>13-16*a
        c = KeyPress.compile("A<A>12-15<call>13-16*a<a>", A=lambda: f.append('A'), a=lambda: f.append('a'), call=lambda: f.append('12-15'))
        
        f = []
        key_press = KeyPress(c)
        self.assertEqual({12,15}, key_press.process_input('A'))
        self.assertEqual({12,15}, key_press.process_input(4))
        self.assertEqual({12,15}, key_press.process_input(8))
        self.assertEqual({13,16}, key_press.process_input(12))
        self.assertEqual({13,16}, key_press.process_input(13))
        self.assertEqual(set(), key_press.process_input('a'))
        self.assertEqual(['A', '12-15', 'a'], f)
        self.assertEqual("match", key_press.status())
    
        f = []
        key_press.reset()
        self.assertEqual("in progress", key_press.status())
        key_press.process_inputs(['A', 4, 8])
        self.assertEqual(['A'], f)
        self.assertEqual("in progress", key_press.status())
        key_press.process_inputs(['a'])
        self.assertEqual(['A'], f)
        self.assertEqual("failed", key_press.status())

        f = []
        key_press.reset()
        self.assertEqual("in progress", key_press.status())
        key_press.process_inputs(['A', 4, 13, 20])
        self.assertEqual(['A', '12-15'], f)
        self.assertEqual("failed", key_press.status())
示例#4
0
 def test_time2(self):
     # Aa12-15*
     c = KeyPress.compile("Aa12-15*")
     
     f = []
     key_press = KeyPress(c)
     key_press.process_inputs(['A', 'a', 4, 8, 12, 13])
     self.assertEqual("match", key_press.status())
示例#5
0
 def go_to_users_playlist_menu(self, user):
     res = self.comm.call("led", "set", {"anim": [user + "_menu"]})
     self.inputter.set_key_press(KeyPress(self.user_playlist_menu[user]))
     if self.startup_timer != None:
         self.startup_timer.cancel()
     self.startup_timer = threading.Timer(self.menu_linger_time,
                                          self.leave_submenu)
     self.startup_timer.start()
示例#6
0
 def test_star(self):
     # A*
     f = []
     c = KeyPress.compile("(A<A>)*", A=lambda: f.append('A'))
     
     key_press = KeyPress(c)
     key_press.process_inputs(['A', 'A'])
 
     self.assertEqual(['A', 'A'], f)
     self.assertEqual("match", key_press.status())
示例#7
0
 def test_time3(self):
     c = KeyPress.compile(".C(.A100-300+a<one>|.A200-400+a<two>)*.c", one=lambda: f.append("one"), two=lambda: f.append("two"))
     f = []
     key_press = KeyPress(c)
     self.assertEqual(set(), key_press.process_input('C'))
     self.assertEqual({100,200,300,400}, key_press.process_input('A'))
     self.assertEqual({200,400}, key_press.process_input(350))
     self.assertEqual(set(), key_press.process_input('a'))
     self.assertEqual(set(), key_press.process_input('c'))
     self.assertEqual("match", key_press.status())
     self.assertEqual(['two'], f)
示例#8
0
    def test_cat(self):
        f = []
        c = KeyPress.compile("A<A>.a<a>", A=lambda: f.append('A'), a=lambda: f.append('a'))

        key_press = KeyPress(c)
        key_press.process_input('A')
        key_press.process_input(12)
        key_press.process_input(13)
        key_press.process_input('a')
        self.assertEqual(['A', 'a'], f)
        self.assertEqual("match", key_press.status())
示例#9
0
 def test_star2(self):
     # (Aa)*
     f = []
     c = KeyPress.compile("(A<A>a<a>)*", A=lambda: f.append('A'), a=lambda: f.append('a'))
     
     key_press = KeyPress(c)
     key_press.process_inputs(['A', 'a', 'A'])
     self.assertEqual(['A', 'a', 'A'], f)
     self.assertEqual("in progress", key_press.status())
 
     key_press.process_inputs(['a'])
     self.assertEqual(['A', 'a', 'A', 'a'], f)
     self.assertEqual("match", key_press.status())
示例#10
0
 def test_time4(self):
     c = KeyPress.compile(".C100-300<one>300-500<two>500-700<three>.c", one=lambda: f.append("one"), two=lambda: f.append("two"), three=lambda: f.append("three"))
     f = []
     key_press = KeyPress(c)
     self.assertEqual({100,300}, key_press.process_input('C'))
     self.assertEqual([], f)
     self.assertEqual({300,500}, key_press.process_input(200))
     self.assertEqual(['one'], f)
     self.assertEqual({500,700}, key_press.process_input(400))
     self.assertEqual(['one', 'two'], f)
     self.assertEqual(set(), key_press.process_input(600))
     self.assertEqual(['one', 'two', 'three'], f)
     self.assertEqual(set(), key_press.process_input('c'))
     self.assertEqual("match", key_press.status())
示例#11
0
 def test_union(self):
     # A|a
     c = KeyPress.compile("A<A>|a<a>", A=lambda: f.append('A'), a=lambda: f.append('a'))
     
     f = []
     key_press = KeyPress(c)
     key_press.process_input('A')
     self.assertEqual(['A'], f)
     self.assertEqual("match", key_press.status())
 
     f = []
     key_press.reset()
     key_press.process_inputs(['a'])
     self.assertEqual(['a'], f)
     self.assertEqual("match", key_press.status())
示例#12
0
 def test_composite(self):
     f = []
     #    A(bc|d)*a
     c = KeyPress.compile("A<A>(b<b>c<c>|d<dd>)*a<a>", A=lambda: f.append('A'), a=lambda: f.append('a'), b=lambda: f.append('b'), c=lambda: f.append('c'), dd=lambda: f.append('d'))
 
     key_press = KeyPress(c)
     self.assertEqual("in progress", key_press.status())
     key_press.process_input('A')
     self.assertEqual(['A'], f)
     self.assertEqual("in progress", key_press.status())
     key_press.process_input('b')
     self.assertEqual(['A', 'b'], f)
     self.assertEqual("in progress", key_press.status())
     key_press.process_input('c')
     self.assertEqual(['A', 'b', 'c'], f)
     self.assertEqual("in progress", key_press.status())
     key_press.process_input('a')
     self.assertEqual(['A', 'b', 'c', 'a'], f)
     self.assertEqual("match", key_press.status())
示例#13
0
    def test_zero_or_one(self):
        # AB?C
        c = KeyPress.compile("A<A>(B<B>)?C<C>", A=lambda: f.append('A'), B=lambda: f.append('B'), C=lambda: f.append('C'))
    
        f = []
        key_press = KeyPress(c)
        key_press.process_inputs(['A'])
        self.assertEqual(['A'], f)
        self.assertEqual("in progress", key_press.status())
        key_press.process_inputs(['B'])
        self.assertEqual(['A', 'B'], f)
        self.assertEqual("in progress", key_press.status())
        key_press.process_inputs(['C'])
        self.assertEqual(['A', 'B', 'C'], f)
        self.assertEqual("match", key_press.status())

        f = []
        key_press.reset()
        key_press.process_inputs(['A'])
        self.assertEqual(['A'], f)
        self.assertEqual("in progress", key_press.status())
        key_press.process_inputs(['C'])
        self.assertEqual(['A', 'C'], f)
        self.assertEqual("match", key_press.status())
    
        f = []
        key_press.reset()
        key_press.process_inputs(['A'])
        self.assertEqual(['A'], f)
        self.assertEqual("in progress", key_press.status())
        key_press.process_inputs(['B'])
        self.assertEqual(['A', 'B'], f)
        self.assertEqual("in progress", key_press.status())
        key_press.process_inputs(['B'])
        self.assertEqual(['A', 'B'], f)
        self.assertEqual("failed", key_press.status())
示例#14
0
 def test_count(self):
     #A{3,5}
     c = KeyPress.compile("A{3,5}", done=lambda: f.append('done'))
 
     f = []
     key_press = KeyPress(c)
     key_press.process_inputs(['A'])
     self.assertEqual([], f)
     self.assertEqual("in progress", key_press.status())
     key_press.process_inputs(['A'])
     self.assertEqual([], f)
     self.assertEqual("in progress", key_press.status())
     key_press.process_inputs(['A'])
     self.assertEqual([], f)
     self.assertEqual("match", key_press.status())
     key_press.process_inputs(['A'])
     self.assertEqual([], f)
     self.assertEqual("match", key_press.status())
     key_press.process_inputs(['A'])
     self.assertEqual([], f)
     self.assertEqual("match", key_press.status())
     key_press.process_inputs(['A'])
     self.assertEqual([], f)
     self.assertEqual("failed", key_press.status())
示例#15
0
 def go_to_flow_menu(self):
     res = self.comm.call("led", "set", {"anim": ["flow_menu"]})
     self.inputter.set_key_press(KeyPress(self.flow_menu))
     self.startup_timer = threading.Timer(self.menu_linger_time,
                                          self.leave_submenu)
     self.startup_timer.start()
示例#16
0
 def go_morse(self):
     print("going morse")
     self.inputter.set_key_press(KeyPress(self.morseAlphbeth))
示例#17
0
    def test_any_order(self):
        #A&bc&D
        c = KeyPress.compile("A<A>&b<b>c<c>&D<D>", A=lambda: f.append('A'), b=lambda: f.append('b'), c=lambda: f.append('c'), D=lambda: f.append('D'))
    
        f = []
        key_press = KeyPress(c)
        key_press.process_inputs(['A'])
        self.assertEqual(['A'], f)
        self.assertEqual("in progress", key_press.status())
        key_press.process_inputs(['b', 'c'])
        self.assertEqual(['A', 'b', 'c'], f)
        self.assertEqual("in progress", key_press.status())
        key_press.process_inputs(['D'])
        self.assertEqual(['A', 'b', 'c', 'D'], f)
        self.assertEqual("match", key_press.status())
    
        f = []
        key_press.reset()
        key_press.process_inputs(['D'])
        self.assertEqual(['D'], f)
        self.assertEqual("in progress", key_press.status())
        key_press.process_inputs(['D'])
        self.assertEqual(['D'], f)
        self.assertEqual("failed", key_press.status())

        #------------------
        #test all combinations:
        f = []
        key_press.reset()
        key_press.process_inputs(['A', 'b', 'c', 'D'])
        self.assertEqual("match", key_press.status())
    
        f = []
        key_press.reset()
        key_press.process_inputs(['A', 'D', 'b', 'c'])
        self.assertEqual("match", key_press.status())
    
        f = []
        key_press.reset()
        key_press.process_inputs(['b', 'c', 'A', 'D'])
        self.assertEqual("match", key_press.status())
    
        f = []
        key_press.reset()
        key_press.process_inputs(['b', 'c', 'D', 'A'])
        self.assertEqual("match", key_press.status())
    
        f = []
        key_press.reset()
        key_press.process_inputs(['D', 'A', 'b', 'c'])
        self.assertEqual("match", key_press.status())
    
        f = []
        key_press.reset()
        key_press.process_inputs(['D', 'b', 'c', 'A'])
        self.assertEqual("match", key_press.status())
        #------------------
    
        f = []
        key_press.reset()
        key_press.process_inputs(['A', 'c', 'b', 'D'])
        self.assertEqual("failed", key_press.status())
示例#18
0
 def go_normal(self):
     print("going normal")
     self.inputter.set_key_press(KeyPress(self.main_menu))
示例#19
0
 def go_to_main_menu(self):
     print("going to main menu...")
     self.inputter.set_key_press(KeyPress(self.main_menu))
     self.startup_timer = None