Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add protocol detection #66

Merged
merged 2 commits into from
Mar 8, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 22 additions & 25 deletions qmk_commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,19 +16,21 @@
if key not in os.environ:
os.environ[key] = os.environ['GIT_BRANCH']

CHIBIOS_GIT_BRANCH = os.environ.get('CHIBIOS_GIT_BRANCH', 'qmk')
CHIBIOS_GIT_URL = os.environ.get('CHIBIOS_GIT_URL', 'https://github.com/qmk/ChibiOS')
CHIBIOS_CONTRIB_GIT_BRANCH = os.environ.get('CHIBIOS_CONTRIB_GIT_BRANCH', 'qmk')
CHIBIOS_CONTRIB_GIT_URL = os.environ.get('CHIBIOS_CONTRIB_GIT_URL', 'https://github.com/qmk/ChibiOS-Contrib')
DISCORD_WARNING_SENT = False
DISCORD_WEBHOOK_URL = os.environ.get('DISCORD_WEBHOOK_URL')
DISCORD_WEBHOOK_INFO_URL = os.environ.get('DISCORD_WEBHOOK_INFO_URL', DISCORD_WEBHOOK_URL)
DISCORD_WEBHOOK_WARNING_URL = os.environ.get('DISCORD_WEBHOOK_WARNING_URL', DISCORD_WEBHOOK_URL)
DISCORD_WEBHOOK_ERROR_URL = os.environ.get('DISCORD_WEBHOOK_ERROR_URL', DISCORD_WEBHOOK_URL)
LUFA_GIT_BRANCH = os.environ.get('LUFA_GIT_BRANCH', 'master')
LUFA_GIT_URL = os.environ.get('LUFA_GIT_URL', 'https://github.com/qmk/lufa')

QMK_GIT_BRANCH = os.environ.get('QMK_GIT_BRANCH', 'master')
QMK_GIT_URL = os.environ.get('QMK_GIT_URL', 'https://github.com/qmk/qmk_firmware.git')
CHIBIOS_GIT_BRANCH = os.environ.get('CHIBIOS_GIT_BRANCH', 'qmk')
CHIBIOS_GIT_URL = os.environ.get('CHIBIOS_GIT_URL', 'https://github.com/qmk/ChibiOS')
CHIBIOS_CONTRIB_GIT_BRANCH = os.environ.get('CHIBIOS_CONTRIB_GIT_BRANCH', 'qmk')
CHIBIOS_CONTRIB_GIT_URL = os.environ.get('CHIBIOS_CONTRIB_GIT_URL', 'https://github.com/qmk/ChibiOS-Contrib')
LUFA_GIT_BRANCH = os.environ.get('LUFA_GIT_BRANCH', 'master')
LUFA_GIT_URL = os.environ.get('LUFA_GIT_URL', 'https://github.com/qmk/lufa')

ZIP_EXCLUDES = {
'qmk_firmware': ('qmk_firmware/.build/*', 'qmk_firmware/.git/*', 'qmk_firmware/lib/chibios/.git', 'qmk_firmware/lib/chibios-contrib/.git'),
'chibios': ('chibios/.git/*'),
Expand Down Expand Up @@ -117,36 +119,31 @@ def checkout_qmk(skip_cache=False, require_cache=False):
git_clone(QMK_GIT_URL, QMK_GIT_BRANCH)


def checkout_chibios():
"""Do whatever is needed to get the latest version of ChibiOS and ChibiOS-Contrib.
def checkout_submodule(name, url, branch):
"""Clone a submodule to the lib directory.
"""
chibios = ('chibios', CHIBIOS_GIT_URL, CHIBIOS_GIT_BRANCH)
chibios_contrib = ('chibios-contrib', CHIBIOS_CONTRIB_GIT_URL, CHIBIOS_CONTRIB_GIT_BRANCH)

os.chdir('qmk_firmware/lib')

for submodule, git_url, git_branch in chibios, chibios_contrib:
if os.path.exists(submodule):
rmtree(submodule)
if os.path.exists(name):
rmtree(name)

if not fetch_source(submodule):
git_clone(git_url, git_branch)
if not fetch_source(name):
git_clone(url, branch)

os.chdir('../..')


def checkout_lufa():
"""Do whatever is needed to get the latest version of lufa
def checkout_chibios():
"""Do whatever is needed to get the latest version of ChibiOS and ChibiOS-Contrib.
"""
os.chdir('qmk_firmware/lib')

if os.path.exists('lufa'):
rmtree('lufa')
checkout_submodule('chibios', CHIBIOS_GIT_URL, CHIBIOS_GIT_BRANCH)
checkout_submodule('chibios-contrib', CHIBIOS_CONTRIB_GIT_URL, CHIBIOS_CONTRIB_GIT_BRANCH)

if not fetch_source('lufa'):
git_clone(LUFA_GIT_URL, LUFA_GIT_BRANCH)

os.chdir('../..')
def checkout_lufa():
"""Do whatever is needed to get the latest version of LUFA.
"""
checkout_submodule('lufa', LUFA_GIT_URL, LUFA_GIT_BRANCH)


def git_clone(git_url=QMK_GIT_URL, git_branch=QMK_GIT_BRANCH):
Expand Down
7 changes: 3 additions & 4 deletions qmk_compiler.py
Original file line number Diff line number Diff line change
Expand Up @@ -132,11 +132,10 @@ def compile_firmware(keyboard, keymap, layout, layers):
return {'returncode': -1, 'command': '', 'output': 'Unknown keyboard!', 'firmware': None}

# If this keyboard needs a submodule check it out
if kb_data['processor_type'] == 'arm':
checkout_chibios()

if kb_data['processor_type'] in ['avr', 'arm']:
if kb_data['protocol'] in ['ChibiOS', 'LUFA']:
checkout_lufa()
if kb_data['protocol'] == 'ChibiOS':
checkout_chibios()

# Write the keymap file
with open(path.join('qmk_firmware', keymap_json_file), 'w') as fd:
Expand Down
11 changes: 11 additions & 0 deletions update_kb_redis.py
Original file line number Diff line number Diff line change
Expand Up @@ -469,12 +469,14 @@ def arm_processor_rules(keyboard_info, rules_mk):
keyboard_info['bootloader'] = 'stm32-dfu'
elif keyboard_info.get('manufacturer') == 'Input Club':
keyboard_info['bootloader'] = 'kiibohd-dfu'
keyboard_info['protocol'] = 'ChibiOS'
if 'STM32' in keyboard_info['processor']:
keyboard_info['platform'] = 'STM32'
elif 'MCU_SERIES' in rules_mk:
keyboard_info['platform'] = rules_mk['MCU_SERIES']
elif 'ARM_ATSAM' in rules_mk:
keyboard_info['platform'] = 'ARM_ATSAM'
keyboard_info['protocol'] = 'ATSAM'


def avr_processor_rules(keyboard_info, rules_mk):
Expand All @@ -485,6 +487,14 @@ def avr_processor_rules(keyboard_info, rules_mk):
keyboard_info['platform'] = rules_mk['ARCH'] if 'ARCH' in rules_mk else 'unknown'
keyboard_info['processor'] = rules_mk['MCU'] if 'MCU' in rules_mk else 'unknown'

# These are the only two MCUs which need V-USB at the moment.
# Eventually we should detect the protocol by looking at PROTOCOL inherited from mcu_selection.mk:
#if rules_mk['PROTOCOL'] == 'VUSB':
if rules_mk.get('MCU') in ['atmega32a', 'atmega328p']:
keyboard_info['protocol'] = 'V-USB'
else:
keyboard_info['protocol'] = 'LUFA'


def unknown_processor_rules(keyboard_info, rules_mk):
"""Setup the default keyboard info for unknown boards.
Expand All @@ -493,6 +503,7 @@ def unknown_processor_rules(keyboard_info, rules_mk):
keyboard_info['platform'] = 'unknown'
keyboard_info['processor'] = 'unknown'
keyboard_info['processor_type'] = 'unknown'
keyboard_info['protocol'] = 'unknown'


def store_keyboard_readme(keyboard_info):
Expand Down