diff options
author | tmk <hasu@tmk-kbd.com> | 2015-05-13 11:13:10 +0900 |
---|---|---|
committer | tmk <hasu@tmk-kbd.com> | 2015-05-13 11:13:10 +0900 |
commit | f1f2066657f4a0998adc016c95d7e541b436e09f (patch) | |
tree | d056cb656b538c4f3a3c205363e0070976655e2e /tmk_core/protocol/lufa/LUFA-git/Demos/Device/LowLevel/GenericHID/HostTestApp | |
parent | 1c73e574f109a17566db99e399bdf86007488d2a (diff) | |
parent | f6d56675f9f981c5464f0ca7a1fbb0162154e8c5 (diff) | |
download | qmk_firmware-f1f2066657f4a0998adc016c95d7e541b436e09f.tar.gz qmk_firmware-f1f2066657f4a0998adc016c95d7e541b436e09f.zip |
Merge commit 'f6d56675f9f981c5464f0ca7a1fbb0162154e8c5'
Diffstat (limited to 'tmk_core/protocol/lufa/LUFA-git/Demos/Device/LowLevel/GenericHID/HostTestApp')
m--------- | tmk_core/protocol/lufa/LUFA-git | 0 | ||||
-rw-r--r-- | tmk_core/protocol/lufa/LUFA-git/Demos/Device/LowLevel/GenericHID/HostTestApp/test_generic_hid.py | 96 |
2 files changed, 96 insertions, 0 deletions
diff --git a/tmk_core/protocol/lufa/LUFA-git b/tmk_core/protocol/lufa/LUFA-git deleted file mode 160000 -Subproject b6c18b2a7c544653efbe12a1d4e8ba65e7d83c3 diff --git a/tmk_core/protocol/lufa/LUFA-git/Demos/Device/LowLevel/GenericHID/HostTestApp/test_generic_hid.py b/tmk_core/protocol/lufa/LUFA-git/Demos/Device/LowLevel/GenericHID/HostTestApp/test_generic_hid.py new file mode 100644 index 0000000000..2865772804 --- /dev/null +++ b/tmk_core/protocol/lufa/LUFA-git/Demos/Device/LowLevel/GenericHID/HostTestApp/test_generic_hid.py @@ -0,0 +1,96 @@ +""" + LUFA Library + Copyright (C) Dean Camera, 2014. + + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org +""" + +""" + LUFA Generic HID device demo host test script. This script will send a + continuous stream of generic reports to the device, to show a variable LED + pattern on the target board. Send and received report data is printed to + the terminal. + + Requires the pywinusb library (https://pypi.python.org/pypi/pywinusb/). +""" + +import sys +from time import sleep +import pywinusb.hid as hid + +# Generic HID device VID, PID and report payload length (length is increased +# by one to account for the Report ID byte that must be pre-pended) +device_vid = 0x03EB +device_pid = 0x204F +report_length = 1 + 8 + + +def get_hid_device_handle(): + hid_device_filter = hid.HidDeviceFilter(vendor_id=device_vid, + product_id=device_pid) + + valid_hid_devices = hid_device_filter.get_devices() + + if len(valid_hid_devices) is 0: + return None + else: + return valid_hid_devices[0] + + +def send_led_pattern(device, led1, led2, led3, led4): + # Report data for the demo is the report ID (always zero) followed by the + # LED on/off data + report_data = [0, led1, led2, led3, led4] + + # Zero-extend the array to the length the report should be + report_data.extend([0] * (report_length - len(report_data))) + + # Send the generated report to the device + device.send_output_report(report_data) + + print("Sent LED Pattern: {0}".format(report_data[1:5])) + + +def received_led_pattern(report_data): + print("Received LED Pattern: {0}".format(report_data[1:5])) + + +def main(): + hid_device = get_hid_device_handle() + + if hid_device is None: + print("No valid HID device found.") + sys.exit(1) + + try: + hid_device.open() + + print("Connected to device 0x%04X/0x%04X - %s [%s]" % + (hid_device.vendor_id, hid_device.product_id, + hid_device.product_name, hid_device.vendor_name)) + + # Set up the HID input report handler to receive reports + hid_device.set_raw_data_handler(received_led_pattern) + + p = 0 + while (hid_device.is_plugged()): + # Convert the current pattern index to a bit-mask and send + send_led_pattern(hid_device, + (p >> 3) & 1, + (p >> 2) & 1, + (p >> 1) & 1, + (p >> 0) & 1) + + # Compute next LED pattern in sequence + p = (p + 1) % 16 + + # Delay a bit for visual effect + sleep(.2) + + finally: + hid_device.close() + + +if __name__ == '__main__': + main() |