def run_prod(self):
        while True:
            # scan for devices
            devices = [evdev.InputDevice(fn) for fn in evdev.list_devices()]
            # find card reader device
            if (len(devices) > 0):
                print("Input event devices available (" + str(len(devices)) +
                      "). Devices are: ")
                # init card reader discovery bool
                discovered_card_reader = False
                # display input devices
                for i, device in enumerate(devices):
                    print("    " + str(i) + ") (" + device.fn + ", " +
                          device.name + ", " + device.phys + ")")
                    # search for card reader by its name, "HID c216:0180"
                    if str(device.name) == "HID c216:0180":
                        print("Discovered card reader..listening for events \
                                until test harness is closed.")
                        # rename device for readability
                        card_reader = device
                        # indefinitely listen for events
                        byte_count = 0
                        student_id = 0
                        for event in card_reader.read_loop():
                            if event.type == evdev.ecodes.EV_KEY:
                                event_key_state = evdev.util.categorize(
                                    event).keystate
                                keycode_str = evdev.util.categorize(
                                    event).keycode
                                if byte_count < 7:
                                    if event_key_state == KEY_STATE_DOWN and keycode_str in VALID_KEY_HASH:
                                        keycode_int = VALID_KEY_HASH[
                                            keycode_str]
                                        exponent = int(
                                            math.pow(10, (6 - byte_count)))
                                        student_id += int(
                                            keycode_int) * exponent
                                        byte_count += 1
                                        # end of student id
                                        if byte_count == 7:
                                            self.eventQueue.put(
                                                Events.CardReadEvent(
                                                    {"id": student_id}))
                                            student_id = 0
                                if event_key_state == KEY_STATE_UP and keycode_str == "KEY_ENTER":
                                    # last byte in card, so reset byte count
                                    byte_count = 0

                # error out if unable to find card reader
                if not discovered_card_reader:
                    print("ERROR: Unable to find the card reader")
                    time.sleep(1)  # delay until next attempt to connect
 def run_test(self):
     while True:
         time.sleep(10)
         self.eventQueue.put(Events.CardReadEvent({"id": 1234567}))