aboutsummaryrefslogtreecommitdiff
path: root/keyboards/mehkee96
diff options
context:
space:
mode:
authorzvecr <git@zvecr.com>2019-03-14 22:55:08 +0000
committerDrashna Jaelre <drashna@live.com>2019-03-14 15:55:08 -0700
commit205ffc277c1b6cb25d11f0938d4df02048870fa5 (patch)
tree449c1448855b51fe7d814b17bc89add848fd9a55 /keyboards/mehkee96
parentc025d813baf7ca1dcd427b293b36603339ac31f7 (diff)
downloadqmk_firmware-205ffc277c1b6cb25d11f0938d4df02048870fa5.tar.gz
qmk_firmware-205ffc277c1b6cb25d11f0938d4df02048870fa5.zip
Align use of atmega32a program script (#5259)
* Remove duplicate 'program' files and refactor to use atmega32a_program.py * Update readme references from 'program' to 'atmega32a_program.py'
Diffstat (limited to 'keyboards/mehkee96')
-rw-r--r--keyboards/mehkee96/program105
-rw-r--r--keyboards/mehkee96/rules.mk2
2 files changed, 1 insertions, 106 deletions
diff --git a/keyboards/mehkee96/program b/keyboards/mehkee96/program
deleted file mode 100644
index b777b9110..000000000
--- a/keyboards/mehkee96/program
+++ /dev/null
@@ -1,105 +0,0 @@
1#!/usr/bin/env python
2# Copyright 2017 Luiz Ribeiro <luizribeiro@gmail.com>, Sebastian Kaim <sebb@sebb767.de>
3#
4# This program is free software: you can redistribute it and/or modify
5# it under the terms of the GNU General Public License as published by
6# the Free Software Foundation, either version 2 of the License, or
7# (at your option) any later version.
8#
9# This program is distributed in the hope that it will be useful,
10# but WITHOUT ANY WARRANTY; without even the implied warranty of
11# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12# GNU General Public License for more details.
13#
14# You should have received a copy of the GNU General Public License
15# along with this program. If not, see <http://www.gnu.org/licenses/>.
16
17from __future__ import print_function
18
19import os
20import sys
21import time
22import usb
23
24
25def checkForKeyboardInNormalMode():
26 """Returns a device if a ps2avrGB device in normal made (that is in keyboard mode) or None if it is not found."""
27 return usb.core.find(idVendor=0x20A0, idProduct=0x422D)
28
29def checkForKeyboardInBootloaderMode():
30 """Returns True if a ps2avrGB device in bootloader (flashable) mode is found and False otherwise."""
31 return (usb.core.find(idVendor=0x16c0, idProduct=0x05df) is not None)
32
33def flashKeyboard(firmware_file):
34 """Calls bootloadHID to flash the given file to the device."""
35 print('Flashing firmware to device ...')
36 if os.system('bootloadHID -r "%s"' % firmware_file) == 0:
37 print('\nDone!')
38 else:
39 print('\nbootloadHID returned an error.')
40
41def printDeviceInfo(dev):
42 """Prints all infos for a given USB device"""
43 print('Device Information:')
44 print(' idVendor: %d (0x%04x)' % (dev.idVendor, dev.idVendor))
45 print(' idProduct: %d (0x%04x)' % (dev.idProduct, dev.idProduct))
46 print('Manufacturer: %s' % (dev.iManufacturer))
47 print('Serial: %s' % (dev.iSerialNumber))
48 print('Product: %s' % (dev.iProduct), end='\n\n')
49
50def sendDeviceToBootloaderMode(dev):
51 """Tries to send a given ps2avrGB keyboard to bootloader mode to allow flashing."""
52 try:
53 dev.set_configuration()
54
55 request_type = usb.util.build_request_type(
56 usb.util.CTRL_OUT,
57 usb.util.CTRL_TYPE_CLASS,
58 usb.util.CTRL_RECIPIENT_DEVICE)
59
60 USBRQ_HID_SET_REPORT = 0x09
61 HID_REPORT_OPTION = 0x0301
62
63 dev.ctrl_transfer(request_type, USBRQ_HID_SET_REPORT, HID_REPORT_OPTION, 0, [0, 0, 0xFF] + [0] * 5)
64 except usb.core.USBError:
65 # for some reason I keep getting USBError, but it works!
66 pass
67
68
69if len(sys.argv) < 2:
70 print('Usage: %s <firmware.hex>' % sys.argv[0])
71 sys.exit(1)
72
73kb = checkForKeyboardInNormalMode()
74
75if kb is not None:
76 print('Found a keyboard in normal mode. Attempting to send it to bootloader mode ...', end='')
77 sendDeviceToBootloaderMode(kb)
78 print(' done.')
79 print("Hint: If your keyboard can't be set to bootloader mode automatically, plug it in while pressing the bootloader key to do so manually.")
80 print(" You can find more infos about this here: https://github.com/qmk/qmk_firmware/tree/master/keyboards/ps2avrGB#setting-the-board-to-bootloader-mode")
81
82attempts = 12 # 60 seconds
83found = False
84for attempt in range(1, attempts + 1):
85 print("Searching for keyboard in bootloader mode (%i/%i) ... " % (attempt, attempts), end='')
86
87 if checkForKeyboardInBootloaderMode():
88 print('Found', end='\n\n')
89 flashKeyboard(sys.argv[1])
90 found = True
91 break
92 else:
93 print('Nothing.', end='')
94
95 if attempt != attempts: # no need to wait on the last attempt
96 print(' Sleeping 5 seconds.', end='')
97 time.sleep(5)
98
99 # print a newline
100 print()
101
102if not found:
103 print("Couldn't find a flashable keyboard. Aborting.")
104 sys.exit(2)
105
diff --git a/keyboards/mehkee96/rules.mk b/keyboards/mehkee96/rules.mk
index e6e7d4a58..f7fb397e2 100644
--- a/keyboards/mehkee96/rules.mk
+++ b/keyboards/mehkee96/rules.mk
@@ -32,4 +32,4 @@ CUSTOM_MATRIX = yes
32SRC = matrix.c i2c.c 32SRC = matrix.c i2c.c
33 33
34# programming options 34# programming options
35PROGRAM_CMD = ./keyboards/mehkee96/program $(TARGET).hex 35PROGRAM_CMD = ./util/atmega32a_program.py $(TARGET).hex