예제 #1
0
    def christmas_animation(self, duration=3600):

        startTime = datetime.now()

        ceiling_led_list = CircularList()

        for edge in self.ceiling_edges_clockwise:
            for led_number in edge.leds:
                ceiling_led_list.append(led_number)

        # print(ceiling_led_list._data)

        last_ceiling_stamp = datetime.now()
        last_vertical_stamp = datetime.now()
        update_necessary = False

        while (datetime.now() - startTime).total_seconds() <= duration:

            if (datetime.now() - last_ceiling_stamp).total_seconds() >= 1:
                for i in ceiling_led_list:
                    color = (0, 0, 0)
                    color_pick = randint(1, 10)
                    if color_pick == 0:
                        color = (0, 0, 255)
                    elif 1 <= color_pick <= 6:
                        color = (255, 0, 0)
                    elif 7 <= color_pick <= 10:
                        color = (0, 255, 0)
                    self.set_led(i, color)

                ceiling_led_list.shiftForward()
                last_ceiling_stamp = datetime.now()
                update_necessary = True

            if (datetime.now() - last_vertical_stamp).total_seconds() >= 0.05:
                for edge in self.vertical_edges_up:
                    for i in range(edge.length):
                        offset = 2 * i
                        self.set_led(
                            edge.leds[i],
                            (255, max(0, min(255,
                                             offset + randint(-15, 15))), 0))
                last_vertical_stamp = datetime.now()
                update_necessary = True

            if update_necessary:
                update_necessary = False
                self.update()

            time.sleep(0.1)
예제 #2
0
    def build_list_vertical_straight(self, include_horizontal=True):
        list_of_leds = CircularList()

        for i in range(0, self.vertical_edges_up[0].length):
            list_of_leds.append([
                self.vertical_edges_up[0].leds[i],
                self.vertical_edges_up[1].leds[i],
                self.vertical_edges_up[2].leds[i],
                self.vertical_edges_up[3].leds[i]
            ])

        if include_horizontal:
            all_horizontal = []
            for edge in self.ceiling_edges_clockwise:
                for n in edge.leds:
                    all_horizontal.append(n)

            list_of_leds.append(all_horizontal)

        return list_of_leds
예제 #3
0
    def build_list_horizontal_circle(self, include_vertical=True):
        list_of_leds = CircularList()

        if include_vertical:
            # iterate through all edges in order and add LED numbers of ceiling strips to list, add list of LEDs in
            # vertical edges as list so they function as a single LED
            for edge in self.all_edges_in_order:
                if edge in self.ceiling_edges_clockwise:
                    for led in edge.leds:
                        list_of_leds.append([led])
                else:
                    list_of_leds.append(edge.leds)
        else:
            # iterate through edges and add the led numbers to the circular list
            for edge in self.ceiling_edges_clockwise:
                for led in edge.leds:
                    list_of_leds.append([led])

        return list_of_leds
class TestCircularList(TestCase):

    messages = ["Gentlemen, you can't fight in here! This is the War Room!",
                "Man who catch fly with chopstick accomplish anything.",
                "If you build it, he will come.",
                "I'm gonna make him an offer he can't refuse.",
                "Life is a box of chocolates, Forrest. You never know what you're gonna get.",
                "Nobody puts Baby in a corner.",
                "The cold never bothered me anyway.",
                "Well, what if there is no tomorrow? There wasn't one today.",
                "You talkin' to me?"
                ]

    buffer_size = 4

    def setUp(self):
        self.buffer = CircularList(self.buffer_size)

    def test_append(self):
        self.buffer.append(self.messages[1])

        self.assertEqual(self.buffer.get_newest()[1], self.messages[1])

    def test_get_newest(self):
        self.buffer.append(self.messages[1])
        self.buffer.append(self.messages[2])

        self.assertEqual(self.buffer.get_newest()[1], self.messages[2])

    def test_get_oldest(self):
        self.buffer.append(self.messages[0])
        self.buffer.append(self.messages[1])

        self.assertEqual(self.buffer.get_oldest()[1], self.messages[0])

    def test_get_oldest_empty(self):
        with self.assertRaises(LookupError):
            self.buffer.get_oldest()

    def test_get_oldest_overwritten(self):
        for i in range(5):
            self.buffer.append(self.messages[i])

        self.assertEqual(self.buffer.get_oldest()[1], self.messages[1])

    def test_get_next(self):
        id_packet = self.buffer.append(self.messages[1])
        self.buffer.append(self.messages[2])

        self.assertEqual(self.buffer.get_next(id_packet)[1], self.messages[2])

    def test_get_next_empty(self):
        with self.assertRaises(LookupError):
            self.buffer.get_next(None)

    def test_get_next_isLast(self):
        id_packet = self.buffer.append(self.messages[1])

        with self.assertRaises(EOFError):
            self.buffer.get_next(id_packet)

    def test_get_next_bufferFull(self):
        id_packet = None
        for i in range(self.buffer_size):
            id_packet = self.buffer.append(self.messages[i])

        with self.assertRaises(EOFError):
            self.buffer.get_next(id_packet)

    def test_get_next_overwritten(self):
        id_packet = self.buffer.append(self.messages[1])
        for i in range(self.buffer_size):
            self.buffer.append(self.messages[i])

        with self.assertRaises(LookupError):
            self.buffer.get_next(id_packet)

    def test_get_since(self):
        id_packet = self.buffer.append(self.messages[1])
        self.buffer.append(self.messages[2])
        self.buffer.append(self.messages[3])

        new_id_packet, received_messages = self.buffer.get_since(id_packet)
        self.assertEqual(received_messages, self.messages[2:4])

        with self.assertRaises(EOFError):
            self.buffer.get_since(new_id_packet)

    def test_get_since_overwritten(self):
        id_packet = self.buffer.append(self.messages[1])

        for i in range(1, 5):
            self.buffer.append(self.messages[i])

        with self.assertRaises(LookupError):
            self.buffer.get_since(id_packet)